@dilipod/ui 0.2.15 → 0.3.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.
Files changed (44) hide show
  1. package/dist/components/alert-dialog.d.ts +34 -0
  2. package/dist/components/alert-dialog.d.ts.map +1 -0
  3. package/dist/components/breadcrumbs.d.ts +30 -0
  4. package/dist/components/breadcrumbs.d.ts.map +1 -0
  5. package/dist/components/date-range-picker.d.ts +36 -0
  6. package/dist/components/date-range-picker.d.ts.map +1 -0
  7. package/dist/components/pagination.d.ts +29 -0
  8. package/dist/components/pagination.d.ts.map +1 -0
  9. package/dist/components/popover.d.ts +10 -0
  10. package/dist/components/popover.d.ts.map +1 -0
  11. package/dist/components/radio-group.d.ts +17 -0
  12. package/dist/components/radio-group.d.ts.map +1 -0
  13. package/dist/components/settings-nav.d.ts +35 -0
  14. package/dist/components/settings-nav.d.ts.map +1 -0
  15. package/dist/components/skeleton.d.ts +28 -0
  16. package/dist/components/skeleton.d.ts.map +1 -0
  17. package/dist/components/step-progress.d.ts +28 -0
  18. package/dist/components/step-progress.d.ts.map +1 -0
  19. package/dist/components/switch.d.ts +15 -0
  20. package/dist/components/switch.d.ts.map +1 -0
  21. package/dist/components/tabs.d.ts +10 -0
  22. package/dist/components/tabs.d.ts.map +1 -0
  23. package/dist/components/tooltip.d.ts +17 -0
  24. package/dist/components/tooltip.d.ts.map +1 -0
  25. package/dist/index.d.ts +22 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +1263 -87
  28. package/dist/index.js.map +1 -1
  29. package/dist/index.mjs +1209 -89
  30. package/dist/index.mjs.map +1 -1
  31. package/package.json +7 -1
  32. package/src/components/alert-dialog.tsx +203 -0
  33. package/src/components/breadcrumbs.tsx +160 -0
  34. package/src/components/date-range-picker.tsx +183 -0
  35. package/src/components/pagination.tsx +220 -0
  36. package/src/components/popover.tsx +53 -0
  37. package/src/components/radio-group.tsx +125 -0
  38. package/src/components/settings-nav.tsx +137 -0
  39. package/src/components/skeleton.tsx +103 -0
  40. package/src/components/step-progress.tsx +205 -0
  41. package/src/components/switch.tsx +95 -0
  42. package/src/components/tabs.tsx +92 -0
  43. package/src/components/tooltip.tsx +78 -0
  44. package/src/index.ts +78 -0
package/dist/index.mjs CHANGED
@@ -1,17 +1,23 @@
1
- import * as React25 from 'react';
1
+ import * as React27 from 'react';
2
2
  import { Slot, createSlot } from '@radix-ui/react-slot';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
- import { jsxs, jsx } from 'react/jsx-runtime';
6
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
7
7
  import * as SheetPrimitive from '@radix-ui/react-dialog';
8
8
  import * as react_star from '@phosphor-icons/react';
9
- import { X, Info, WarningCircle, Check } from '@phosphor-icons/react';
9
+ import { X, Circle, CaretLeft, DotsThree, CaretRight, Check, House, Info, WarningCircle } from '@phosphor-icons/react';
10
10
  import 'react-dom';
11
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
12
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
11
13
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
12
14
  import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
13
15
  import * as AvatarPrimitive from '@radix-ui/react-avatar';
14
16
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
17
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
18
+ import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
19
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
20
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
15
21
  import * as ToastPrimitives from '@radix-ui/react-toast';
16
22
 
17
23
  var __defProp = Object.defineProperty;
@@ -40,10 +46,23 @@ __export(index_exports, {
40
46
  AccordionItem: () => AccordionItem,
41
47
  AccordionTrigger: () => AccordionTrigger,
42
48
  Alert: () => Alert,
49
+ AlertDialog: () => AlertDialog,
50
+ AlertDialogAction: () => AlertDialogAction,
51
+ AlertDialogCancel: () => AlertDialogCancel,
52
+ AlertDialogContent: () => AlertDialogContent,
53
+ AlertDialogDescription: () => AlertDialogDescription,
54
+ AlertDialogFooter: () => AlertDialogFooter,
55
+ AlertDialogHeader: () => AlertDialogHeader,
56
+ AlertDialogOverlay: () => AlertDialogOverlay,
57
+ AlertDialogPortal: () => AlertDialogPortal,
58
+ AlertDialogTitle: () => AlertDialogTitle,
59
+ AlertDialogTrigger: () => AlertDialogTrigger,
43
60
  Avatar: () => Avatar,
44
61
  AvatarFallback: () => AvatarFallback,
45
62
  AvatarImage: () => AvatarImage,
46
63
  Badge: () => Badge,
64
+ BreadcrumbLink: () => BreadcrumbLink,
65
+ Breadcrumbs: () => Breadcrumbs,
47
66
  Button: () => Button,
48
67
  Card: () => Card,
49
68
  CardContent: () => CardContent,
@@ -53,6 +72,9 @@ __export(index_exports, {
53
72
  CardTitle: () => CardTitle,
54
73
  Checkbox: () => Checkbox,
55
74
  CodeBlock: () => CodeBlock,
75
+ ConfirmDialog: () => ConfirmDialog,
76
+ DateRangePicker: () => DateRangePicker,
77
+ DateRangeSelect: () => DateRangeSelect,
56
78
  Dialog: () => Dialog,
57
79
  DialogClose: () => DialogClose,
58
80
  DialogContent: () => DialogContent,
@@ -84,6 +106,7 @@ __export(index_exports, {
84
106
  IconBox: () => IconBox,
85
107
  Input: () => Input,
86
108
  Label: () => Label2,
109
+ LabeledSwitch: () => LabeledSwitch,
87
110
  Logo: () => Logo,
88
111
  MetricCard: () => MetricCard,
89
112
  NavigationMenu: () => NavigationMenu,
@@ -94,9 +117,22 @@ __export(index_exports, {
94
117
  NavigationMenuList: () => NavigationMenuList,
95
118
  NavigationMenuTrigger: () => NavigationMenuTrigger,
96
119
  NavigationMenuViewport: () => NavigationMenuViewport,
120
+ Pagination: () => Pagination,
121
+ Popover: () => Popover,
122
+ PopoverAnchor: () => PopoverAnchor,
123
+ PopoverArrow: () => PopoverArrow,
124
+ PopoverClose: () => PopoverClose,
125
+ PopoverContent: () => PopoverContent,
126
+ PopoverTrigger: () => PopoverTrigger,
97
127
  Progress: () => Progress,
128
+ RadioGroup: () => RadioGroup,
129
+ RadioGroupCard: () => RadioGroupCard,
130
+ RadioGroupItem: () => RadioGroupItem,
131
+ RadioGroupOption: () => RadioGroupOption,
98
132
  Select: () => Select,
99
133
  Separator: () => Separator2,
134
+ SettingsNav: () => SettingsNav,
135
+ SettingsNavLink: () => SettingsNavLink,
100
136
  Sheet: () => Sheet,
101
137
  SheetClose: () => SheetClose,
102
138
  SheetContent: () => SheetContent,
@@ -109,7 +145,15 @@ __export(index_exports, {
109
145
  SheetTrigger: () => SheetTrigger,
110
146
  Sidebar: () => Sidebar,
111
147
  SidebarNavItem: () => SidebarNavItem,
148
+ SimplePagination: () => SimplePagination,
149
+ SimpleTooltip: () => SimpleTooltip,
150
+ Skeleton: () => Skeleton,
151
+ SkeletonCard: () => SkeletonCard,
152
+ SkeletonText: () => SkeletonText,
112
153
  Stat: () => Stat,
154
+ StepDots: () => StepDots,
155
+ StepProgress: () => StepProgress,
156
+ Switch: () => Switch,
113
157
  Table: () => Table,
114
158
  TableBody: () => TableBody,
115
159
  TableCaption: () => TableCaption,
@@ -118,6 +162,12 @@ __export(index_exports, {
118
162
  TableHead: () => TableHead,
119
163
  TableHeader: () => TableHeader,
120
164
  TableRow: () => TableRow,
165
+ Tabs: () => Tabs,
166
+ TabsContent: () => TabsContent,
167
+ TabsList: () => TabsList,
168
+ TabsListUnderline: () => TabsListUnderline,
169
+ TabsTrigger: () => TabsTrigger,
170
+ TabsTriggerUnderline: () => TabsTriggerUnderline,
121
171
  Tag: () => Tag,
122
172
  Textarea: () => Textarea,
123
173
  Toast: () => Toast,
@@ -129,12 +179,18 @@ __export(index_exports, {
129
179
  ToastTitle: () => ToastTitle,
130
180
  ToastViewport: () => ToastViewport,
131
181
  Toaster: () => Toaster,
182
+ Tooltip: () => Tooltip,
183
+ TooltipArrow: () => TooltipArrow,
184
+ TooltipContent: () => TooltipContent,
185
+ TooltipProvider: () => TooltipProvider,
186
+ TooltipTrigger: () => TooltipTrigger,
132
187
  UsageBar: () => UsageBar,
133
188
  UsageChart: () => UsageChart,
134
189
  alertVariants: () => alertVariants,
135
190
  badgeVariants: () => badgeVariants,
136
191
  buttonVariants: () => buttonVariants,
137
192
  cn: () => cn,
193
+ getDateRangeFromPreset: () => getDateRangeFromPreset,
138
194
  iconBoxVariants: () => iconBoxVariants,
139
195
  metricCardVariants: () => metricCardVariants,
140
196
  navigationMenuTriggerStyle: () => navigationMenuTriggerStyle,
@@ -175,7 +231,7 @@ var buttonVariants = cva(
175
231
  }
176
232
  }
177
233
  );
178
- var Button = React25.forwardRef(
234
+ var Button = React27.forwardRef(
179
235
  ({ className, variant, size, asChild = false, loading, loadingText, children, disabled, ...props }, ref) => {
180
236
  const Comp = asChild ? Slot : "button";
181
237
  const isDisabled = disabled || loading;
@@ -228,7 +284,7 @@ var Sheet = SheetPrimitive.Root;
228
284
  var SheetTrigger = SheetPrimitive.Trigger;
229
285
  var SheetClose = SheetPrimitive.Close;
230
286
  var SheetPortal = SheetPrimitive.Portal;
231
- var SheetOverlay = React25.forwardRef(({ className, ...props }, ref) => (
287
+ var SheetOverlay = React27.forwardRef(({ className, ...props }, ref) => (
232
288
  // @ts-ignore - Radix Dialog Overlay accepts className at runtime
233
289
  /* @__PURE__ */ jsx(
234
290
  SheetPrimitive.Overlay,
@@ -259,7 +315,7 @@ var sheetVariants = cva(
259
315
  }
260
316
  }
261
317
  );
262
- var SheetContent = React25.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [
318
+ var SheetContent = React27.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [
263
319
  /* @__PURE__ */ jsx(SheetOverlay, {}),
264
320
  /* @__PURE__ */ jsxs(
265
321
  SheetPrimitive.Content,
@@ -306,7 +362,7 @@ var SheetFooter = ({
306
362
  }
307
363
  );
308
364
  SheetFooter.displayName = "SheetFooter";
309
- var SheetTitle = React25.forwardRef(({ className, ...props }, ref) => (
365
+ var SheetTitle = React27.forwardRef(({ className, ...props }, ref) => (
310
366
  // @ts-ignore - Radix Dialog Title accepts className at runtime
311
367
  /* @__PURE__ */ jsx(
312
368
  SheetPrimitive.Title,
@@ -318,7 +374,7 @@ var SheetTitle = React25.forwardRef(({ className, ...props }, ref) => (
318
374
  )
319
375
  ));
320
376
  SheetTitle.displayName = SheetPrimitive.Title.displayName;
321
- var SheetDescription = React25.forwardRef(({ className, ...props }, ref) => (
377
+ var SheetDescription = React27.forwardRef(({ className, ...props }, ref) => (
322
378
  // @ts-ignore - Radix Dialog Description accepts className at runtime
323
379
  /* @__PURE__ */ jsx(
324
380
  SheetPrimitive.Description,
@@ -418,7 +474,7 @@ var badgeVariants = cva(
418
474
  }
419
475
  }
420
476
  );
421
- var Badge = React25.forwardRef(
477
+ var Badge = React27.forwardRef(
422
478
  ({ className, variant, size, pulse, pulseColor: pulseColorProp, children, ...props }, ref) => {
423
479
  const getPulseColorClass = () => {
424
480
  const color = pulseColorProp || variant || "default";
@@ -472,7 +528,7 @@ var Badge = React25.forwardRef(
472
528
  }
473
529
  );
474
530
  Badge.displayName = "Badge";
475
- var Card = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
531
+ var Card = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
476
532
  "div",
477
533
  {
478
534
  ref,
@@ -484,7 +540,7 @@ var Card = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
484
540
  }
485
541
  ));
486
542
  Card.displayName = "Card";
487
- var CardHeader = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
543
+ var CardHeader = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
488
544
  "div",
489
545
  {
490
546
  ref,
@@ -493,7 +549,7 @@ var CardHeader = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE
493
549
  }
494
550
  ));
495
551
  CardHeader.displayName = "CardHeader";
496
- var CardTitle = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
552
+ var CardTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
497
553
  "h3",
498
554
  {
499
555
  ref,
@@ -505,7 +561,7 @@ var CardTitle = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE_
505
561
  }
506
562
  ));
507
563
  CardTitle.displayName = "CardTitle";
508
- var CardDescription = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
564
+ var CardDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
509
565
  "p",
510
566
  {
511
567
  ref,
@@ -514,9 +570,9 @@ var CardDescription = React25.forwardRef(({ className, ...props }, ref) => /* @_
514
570
  }
515
571
  ));
516
572
  CardDescription.displayName = "CardDescription";
517
- var CardContent = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props }));
573
+ var CardContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props }));
518
574
  CardContent.displayName = "CardContent";
519
- var CardFooter = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
575
+ var CardFooter = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
520
576
  "div",
521
577
  {
522
578
  ref,
@@ -539,7 +595,7 @@ var progressVariants = cva("h-full rounded-full transition-all duration-300", {
539
595
  variant: "default"
540
596
  }
541
597
  });
542
- var Progress = React25.forwardRef(
598
+ var Progress = React27.forwardRef(
543
599
  ({ className, value, variant, showLabel, label = "Progress", size = "default", ...props }, ref) => {
544
600
  const clampedValue = Math.min(100, Math.max(0, value));
545
601
  const heightClass = {
@@ -606,7 +662,7 @@ var iconBoxVariants = cva(
606
662
  }
607
663
  }
608
664
  );
609
- var IconBox = React25.forwardRef(
665
+ var IconBox = React27.forwardRef(
610
666
  ({ className, variant, size, rounded, children, ...props }, ref) => {
611
667
  return /* @__PURE__ */ jsx(
612
668
  "div",
@@ -642,7 +698,7 @@ var tagVariants = cva(
642
698
  }
643
699
  }
644
700
  );
645
- var Tag = React25.forwardRef(
701
+ var Tag = React27.forwardRef(
646
702
  ({ className, variant, size, icon, children, ...props }, ref) => {
647
703
  return /* @__PURE__ */ jsxs(
648
704
  "span",
@@ -696,7 +752,7 @@ var valueVariants = cva("font-bold", {
696
752
  color: "default"
697
753
  }
698
754
  });
699
- var Stat = React25.forwardRef(
755
+ var Stat = React27.forwardRef(
700
756
  ({
701
757
  className,
702
758
  variant,
@@ -778,7 +834,7 @@ var iconVariants = cva("h-5 w-5", {
778
834
  color: "cyan"
779
835
  }
780
836
  });
781
- var MetricCard = React25.forwardRef(
837
+ var MetricCard = React27.forwardRef(
782
838
  ({
783
839
  className,
784
840
  variant,
@@ -837,7 +893,7 @@ var progressColorVariants = cva("", {
837
893
  color: "cyan"
838
894
  }
839
895
  });
840
- var UsageBar = React25.forwardRef(
896
+ var UsageBar = React27.forwardRef(
841
897
  ({
842
898
  className,
843
899
  size,
@@ -909,7 +965,7 @@ var UsageBar = React25.forwardRef(
909
965
  }
910
966
  );
911
967
  UsageBar.displayName = "UsageBar";
912
- var UsageChart = React25.forwardRef(
968
+ var UsageChart = React27.forwardRef(
913
969
  ({
914
970
  className,
915
971
  data,
@@ -920,8 +976,8 @@ var UsageChart = React25.forwardRef(
920
976
  formatValue = (v) => v.toLocaleString(),
921
977
  ...props
922
978
  }, ref) => {
923
- const [hoveredIndex, setHoveredIndex] = React25.useState(null);
924
- const maxValue = React25.useMemo(() => {
979
+ const [hoveredIndex, setHoveredIndex] = React27.useState(null);
980
+ const maxValue = React27.useMemo(() => {
925
981
  return Math.max(
926
982
  ...data.map((d) => d.value + (d.secondaryValue || 0)),
927
983
  1
@@ -1048,7 +1104,7 @@ var UsageChart = React25.forwardRef(
1048
1104
  }
1049
1105
  );
1050
1106
  UsageChart.displayName = "UsageChart";
1051
- var Input = React25.forwardRef(
1107
+ var Input = React27.forwardRef(
1052
1108
  ({ className, type, error, ...props }, ref) => {
1053
1109
  return /* @__PURE__ */ jsx(
1054
1110
  "input",
@@ -1088,7 +1144,7 @@ var NODES = [
1088
1144
  ];
1089
1145
  var Primitive = NODES.reduce((primitive, node) => {
1090
1146
  const Slot2 = createSlot(`Primitive.${node}`);
1091
- const Node = React25.forwardRef((props, forwardedRef) => {
1147
+ const Node = React27.forwardRef((props, forwardedRef) => {
1092
1148
  const { asChild, ...primitiveProps } = props;
1093
1149
  const Comp = asChild ? Slot2 : node;
1094
1150
  if (typeof window !== "undefined") {
@@ -1100,7 +1156,7 @@ var Primitive = NODES.reduce((primitive, node) => {
1100
1156
  return { ...primitive, [node]: Node };
1101
1157
  }, {});
1102
1158
  var NAME = "Label";
1103
- var Label = React25.forwardRef((props, forwardedRef) => {
1159
+ var Label = React27.forwardRef((props, forwardedRef) => {
1104
1160
  return /* @__PURE__ */ jsx(
1105
1161
  Primitive.label,
1106
1162
  {
@@ -1120,7 +1176,7 @@ var Root2 = Label;
1120
1176
  var labelVariants = cva(
1121
1177
  "text-sm font-medium leading-none text-[var(--black)] peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
1122
1178
  );
1123
- var Label2 = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1179
+ var Label2 = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1124
1180
  Root2,
1125
1181
  {
1126
1182
  ref,
@@ -1129,7 +1185,7 @@ var Label2 = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
1129
1185
  }
1130
1186
  ));
1131
1187
  Label2.displayName = Root2.displayName;
1132
- var Textarea = React25.forwardRef(
1188
+ var Textarea = React27.forwardRef(
1133
1189
  ({ className, error, ...props }, ref) => {
1134
1190
  return /* @__PURE__ */ jsx(
1135
1191
  "textarea",
@@ -1147,7 +1203,7 @@ var Textarea = React25.forwardRef(
1147
1203
  }
1148
1204
  );
1149
1205
  Textarea.displayName = "Textarea";
1150
- var Select = React25.forwardRef(
1206
+ var Select = React27.forwardRef(
1151
1207
  ({ className, error, children, ...props }, ref) => {
1152
1208
  return /* @__PURE__ */ jsx(
1153
1209
  "select",
@@ -1174,7 +1230,7 @@ Select.displayName = "Select";
1174
1230
  // src/icons.ts
1175
1231
  var icons_exports = {};
1176
1232
  __reExport(icons_exports, react_star);
1177
- var Checkbox = React25.forwardRef(
1233
+ var Checkbox = React27.forwardRef(
1178
1234
  ({ className, checked, onCheckedChange, ...props }, ref) => {
1179
1235
  return /* @__PURE__ */ jsxs("label", { className: "relative inline-flex items-center cursor-pointer", children: [
1180
1236
  /* @__PURE__ */ jsx(
@@ -1205,8 +1261,150 @@ var Checkbox = React25.forwardRef(
1205
1261
  }
1206
1262
  );
1207
1263
  Checkbox.displayName = "Checkbox";
1264
+ var Switch = React27.forwardRef(({ className, size = "default", ...props }, ref) => {
1265
+ const sizeStyles = {
1266
+ sm: {
1267
+ root: "h-4 w-7",
1268
+ thumb: "h-3 w-3 data-[state=checked]:translate-x-3"
1269
+ },
1270
+ default: {
1271
+ root: "h-5 w-9",
1272
+ thumb: "h-4 w-4 data-[state=checked]:translate-x-4"
1273
+ },
1274
+ lg: {
1275
+ root: "h-6 w-11",
1276
+ thumb: "h-5 w-5 data-[state=checked]:translate-x-5"
1277
+ }
1278
+ };
1279
+ return /* @__PURE__ */ jsx(
1280
+ SwitchPrimitive.Root,
1281
+ {
1282
+ className: cn(
1283
+ "peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-[var(--cyan)] data-[state=unchecked]:bg-input",
1284
+ sizeStyles[size].root,
1285
+ className
1286
+ ),
1287
+ ...props,
1288
+ ref,
1289
+ children: /* @__PURE__ */ jsx(
1290
+ SwitchPrimitive.Thumb,
1291
+ {
1292
+ className: cn(
1293
+ "pointer-events-none block rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=unchecked]:translate-x-0",
1294
+ sizeStyles[size].thumb
1295
+ )
1296
+ }
1297
+ )
1298
+ }
1299
+ );
1300
+ });
1301
+ Switch.displayName = SwitchPrimitive.Root.displayName;
1302
+ var LabeledSwitch = React27.forwardRef(({ label, description, labelPosition = "right", className, id, ...props }, ref) => {
1303
+ const switchId = id || React27.useId();
1304
+ const labelContent = /* @__PURE__ */ jsxs("div", { className: "space-y-0.5", children: [
1305
+ /* @__PURE__ */ jsx(
1306
+ "label",
1307
+ {
1308
+ htmlFor: switchId,
1309
+ className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",
1310
+ children: label
1311
+ }
1312
+ ),
1313
+ description && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: description })
1314
+ ] });
1315
+ return /* @__PURE__ */ jsxs(
1316
+ "div",
1317
+ {
1318
+ className: cn(
1319
+ "flex items-center gap-3",
1320
+ labelPosition === "left" && "flex-row-reverse justify-end",
1321
+ className
1322
+ ),
1323
+ children: [
1324
+ /* @__PURE__ */ jsx(Switch, { ref, id: switchId, ...props }),
1325
+ labelContent
1326
+ ]
1327
+ }
1328
+ );
1329
+ });
1330
+ LabeledSwitch.displayName = "LabeledSwitch";
1331
+ var RadioGroup = React27.forwardRef(({ className, ...props }, ref) => {
1332
+ return /* @__PURE__ */ jsx(
1333
+ RadioGroupPrimitive.Root,
1334
+ {
1335
+ className: cn("grid gap-2", className),
1336
+ ...props,
1337
+ ref
1338
+ }
1339
+ );
1340
+ });
1341
+ RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
1342
+ var RadioGroupItem = React27.forwardRef(({ className, ...props }, ref) => {
1343
+ return /* @__PURE__ */ jsx(
1344
+ RadioGroupPrimitive.Item,
1345
+ {
1346
+ ref,
1347
+ className: cn(
1348
+ "aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
1349
+ className
1350
+ ),
1351
+ ...props,
1352
+ children: /* @__PURE__ */ jsx(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx(Circle, { weight: "fill", className: "h-2.5 w-2.5 fill-current" }) })
1353
+ }
1354
+ );
1355
+ });
1356
+ RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
1357
+ var RadioGroupOption = React27.forwardRef(({ label, description, className, id, ...props }, ref) => {
1358
+ const optionId = id || React27.useId();
1359
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex items-start gap-3", className), children: [
1360
+ /* @__PURE__ */ jsx(RadioGroupItem, { ref, id: optionId, ...props }),
1361
+ /* @__PURE__ */ jsxs("div", { className: "space-y-0.5", children: [
1362
+ /* @__PURE__ */ jsx(
1363
+ "label",
1364
+ {
1365
+ htmlFor: optionId,
1366
+ className: "text-sm font-medium leading-none cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
1367
+ children: label
1368
+ }
1369
+ ),
1370
+ description && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: description })
1371
+ ] })
1372
+ ] });
1373
+ });
1374
+ RadioGroupOption.displayName = "RadioGroupOption";
1375
+ var RadioGroupCard = React27.forwardRef(({ label, description, children, className, id, ...props }, ref) => {
1376
+ const cardId = id || React27.useId();
1377
+ return /* @__PURE__ */ jsx(
1378
+ RadioGroupPrimitive.Item,
1379
+ {
1380
+ ref,
1381
+ id: cardId,
1382
+ className: cn(
1383
+ "relative flex cursor-pointer rounded-lg border bg-background p-4 transition-all hover:border-[var(--cyan)]/50 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=checked]:border-[var(--cyan)] data-[state=checked]:ring-1 data-[state=checked]:ring-[var(--cyan)] disabled:cursor-not-allowed disabled:opacity-50",
1384
+ className
1385
+ ),
1386
+ ...props,
1387
+ children: /* @__PURE__ */ jsxs("div", { className: "flex w-full items-start gap-3", children: [
1388
+ /* @__PURE__ */ jsx("div", { className: "flex h-5 items-center", children: /* @__PURE__ */ jsx("div", { className: "aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow", children: /* @__PURE__ */ jsx(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center h-full", children: /* @__PURE__ */ jsx(Circle, { weight: "fill", className: "h-2.5 w-2.5 fill-[var(--cyan)]" }) }) }) }),
1389
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 space-y-1", children: [
1390
+ /* @__PURE__ */ jsx(
1391
+ "label",
1392
+ {
1393
+ htmlFor: cardId,
1394
+ className: "text-sm font-medium leading-none cursor-pointer",
1395
+ children: label
1396
+ }
1397
+ ),
1398
+ description && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: description }),
1399
+ children
1400
+ ] })
1401
+ ] })
1402
+ }
1403
+ );
1404
+ });
1405
+ RadioGroupCard.displayName = "RadioGroupCard";
1208
1406
  var Accordion = AccordionPrimitive.Root;
1209
- var AccordionItem = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1407
+ var AccordionItem = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1210
1408
  AccordionPrimitive.Item,
1211
1409
  {
1212
1410
  ref,
@@ -1215,7 +1413,7 @@ var AccordionItem = React25.forwardRef(({ className, ...props }, ref) => /* @__P
1215
1413
  }
1216
1414
  ));
1217
1415
  AccordionItem.displayName = "AccordionItem";
1218
- var AccordionTrigger = React25.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
1416
+ var AccordionTrigger = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
1219
1417
  AccordionPrimitive.Trigger,
1220
1418
  {
1221
1419
  ref,
@@ -1231,7 +1429,7 @@ var AccordionTrigger = React25.forwardRef(({ className, children, ...props }, re
1231
1429
  }
1232
1430
  ) }));
1233
1431
  AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
1234
- var AccordionContent = React25.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
1432
+ var AccordionContent = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
1235
1433
  AccordionPrimitive.Content,
1236
1434
  {
1237
1435
  ref,
@@ -1262,7 +1460,7 @@ var NODES2 = [
1262
1460
  ];
1263
1461
  var Primitive2 = NODES2.reduce((primitive, node) => {
1264
1462
  const Slot2 = createSlot(`Primitive.${node}`);
1265
- const Node = React25.forwardRef((props, forwardedRef) => {
1463
+ const Node = React27.forwardRef((props, forwardedRef) => {
1266
1464
  const { asChild, ...primitiveProps } = props;
1267
1465
  const Comp = asChild ? Slot2 : node;
1268
1466
  if (typeof window !== "undefined") {
@@ -1276,7 +1474,7 @@ var Primitive2 = NODES2.reduce((primitive, node) => {
1276
1474
  var NAME2 = "Separator";
1277
1475
  var DEFAULT_ORIENTATION = "horizontal";
1278
1476
  var ORIENTATIONS = ["horizontal", "vertical"];
1279
- var Separator = React25.forwardRef((props, forwardedRef) => {
1477
+ var Separator = React27.forwardRef((props, forwardedRef) => {
1280
1478
  const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;
1281
1479
  const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;
1282
1480
  const ariaOrientation = orientation === "vertical" ? orientation : void 0;
@@ -1295,10 +1493,10 @@ Separator.displayName = NAME2;
1295
1493
  function isValidOrientation(orientation) {
1296
1494
  return ORIENTATIONS.includes(orientation);
1297
1495
  }
1298
- var Root4 = Separator;
1299
- var Separator2 = React25.forwardRef(
1496
+ var Root6 = Separator;
1497
+ var Separator2 = React27.forwardRef(
1300
1498
  ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(
1301
- Root4,
1499
+ Root6,
1302
1500
  {
1303
1501
  ref,
1304
1502
  decorative,
@@ -1312,8 +1510,8 @@ var Separator2 = React25.forwardRef(
1312
1510
  }
1313
1511
  )
1314
1512
  );
1315
- Separator2.displayName = Root4.displayName;
1316
- var NavigationMenu = React25.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1513
+ Separator2.displayName = Root6.displayName;
1514
+ var NavigationMenu = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1317
1515
  NavigationMenuPrimitive.Root,
1318
1516
  {
1319
1517
  ref,
@@ -1329,7 +1527,7 @@ var NavigationMenu = React25.forwardRef(({ className, children, ...props }, ref)
1329
1527
  }
1330
1528
  ));
1331
1529
  NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
1332
- var NavigationMenuList = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1530
+ var NavigationMenuList = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1333
1531
  NavigationMenuPrimitive.List,
1334
1532
  {
1335
1533
  ref,
@@ -1345,7 +1543,7 @@ var NavigationMenuItem = NavigationMenuPrimitive.Item;
1345
1543
  var navigationMenuTriggerStyle = cva(
1346
1544
  "group inline-flex h-10 w-max items-center justify-center rounded-md bg-white px-4 py-2 text-sm font-medium text-[var(--black)] transition-colors hover:bg-gray-100 hover:text-[var(--black)] focus:bg-gray-100 focus:text-[var(--black)] focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-[var(--black)] data-[state=open]:bg-gray-100/50 data-[state=open]:hover:bg-gray-100 data-[state=open]:focus:bg-gray-100"
1347
1545
  );
1348
- var NavigationMenuTrigger = React25.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1546
+ var NavigationMenuTrigger = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1349
1547
  NavigationMenuPrimitive.Trigger,
1350
1548
  {
1351
1549
  ref,
@@ -1365,7 +1563,7 @@ var NavigationMenuTrigger = React25.forwardRef(({ className, children, ...props
1365
1563
  }
1366
1564
  ));
1367
1565
  NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
1368
- var NavigationMenuContent = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1566
+ var NavigationMenuContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1369
1567
  NavigationMenuPrimitive.Content,
1370
1568
  {
1371
1569
  ref,
@@ -1378,7 +1576,7 @@ var NavigationMenuContent = React25.forwardRef(({ className, ...props }, ref) =>
1378
1576
  ));
1379
1577
  NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
1380
1578
  var NavigationMenuLink = NavigationMenuPrimitive.Link;
1381
- var NavigationMenuViewport = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx(
1579
+ var NavigationMenuViewport = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx(
1382
1580
  NavigationMenuPrimitive.Viewport,
1383
1581
  {
1384
1582
  className: cn(
@@ -1390,7 +1588,7 @@ var NavigationMenuViewport = React25.forwardRef(({ className, ...props }, ref) =
1390
1588
  }
1391
1589
  ) }));
1392
1590
  NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
1393
- var NavigationMenuIndicator = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1591
+ var NavigationMenuIndicator = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1394
1592
  NavigationMenuPrimitive.Indicator,
1395
1593
  {
1396
1594
  ref,
@@ -1403,7 +1601,7 @@ var NavigationMenuIndicator = React25.forwardRef(({ className, ...props }, ref)
1403
1601
  }
1404
1602
  ));
1405
1603
  NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
1406
- var Avatar = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1604
+ var Avatar = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1407
1605
  AvatarPrimitive.Root,
1408
1606
  {
1409
1607
  ref,
@@ -1415,7 +1613,7 @@ var Avatar = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
1415
1613
  }
1416
1614
  ));
1417
1615
  Avatar.displayName = AvatarPrimitive.Root.displayName;
1418
- var AvatarImage = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1616
+ var AvatarImage = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1419
1617
  AvatarPrimitive.Image,
1420
1618
  {
1421
1619
  ref,
@@ -1424,7 +1622,7 @@ var AvatarImage = React25.forwardRef(({ className, ...props }, ref) => /* @__PUR
1424
1622
  }
1425
1623
  ));
1426
1624
  AvatarImage.displayName = AvatarPrimitive.Image.displayName;
1427
- var AvatarFallback = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1625
+ var AvatarFallback = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1428
1626
  AvatarPrimitive.Fallback,
1429
1627
  {
1430
1628
  ref,
@@ -1442,7 +1640,7 @@ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
1442
1640
  var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
1443
1641
  var DropdownMenuSub = DropdownMenuPrimitive.Sub;
1444
1642
  var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
1445
- var DropdownMenuSubTrigger = React25.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1643
+ var DropdownMenuSubTrigger = React27.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1446
1644
  DropdownMenuPrimitive.SubTrigger,
1447
1645
  {
1448
1646
  ref,
@@ -1459,7 +1657,7 @@ var DropdownMenuSubTrigger = React25.forwardRef(({ className, inset, children, .
1459
1657
  }
1460
1658
  ));
1461
1659
  DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
1462
- var DropdownMenuSubContent = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1660
+ var DropdownMenuSubContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1463
1661
  DropdownMenuPrimitive.SubContent,
1464
1662
  {
1465
1663
  ref,
@@ -1471,7 +1669,7 @@ var DropdownMenuSubContent = React25.forwardRef(({ className, ...props }, ref) =
1471
1669
  }
1472
1670
  ));
1473
1671
  DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
1474
- var DropdownMenuContent = React25.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1672
+ var DropdownMenuContent = React27.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1475
1673
  DropdownMenuPrimitive.Content,
1476
1674
  {
1477
1675
  ref,
@@ -1484,7 +1682,7 @@ var DropdownMenuContent = React25.forwardRef(({ className, sideOffset = 4, ...pr
1484
1682
  }
1485
1683
  ) }));
1486
1684
  DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
1487
- var DropdownMenuItem = React25.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
1685
+ var DropdownMenuItem = React27.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
1488
1686
  DropdownMenuPrimitive.Item,
1489
1687
  {
1490
1688
  ref,
@@ -1497,7 +1695,7 @@ var DropdownMenuItem = React25.forwardRef(({ className, inset, ...props }, ref)
1497
1695
  }
1498
1696
  ));
1499
1697
  DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
1500
- var DropdownMenuCheckboxItem = React25.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
1698
+ var DropdownMenuCheckboxItem = React27.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
1501
1699
  DropdownMenuPrimitive.CheckboxItem,
1502
1700
  {
1503
1701
  ref,
@@ -1514,7 +1712,7 @@ var DropdownMenuCheckboxItem = React25.forwardRef(({ className, children, checke
1514
1712
  }
1515
1713
  ));
1516
1714
  DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
1517
- var DropdownMenuRadioItem = React25.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1715
+ var DropdownMenuRadioItem = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1518
1716
  DropdownMenuPrimitive.RadioItem,
1519
1717
  {
1520
1718
  ref,
@@ -1530,7 +1728,7 @@ var DropdownMenuRadioItem = React25.forwardRef(({ className, children, ...props
1530
1728
  }
1531
1729
  ));
1532
1730
  DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
1533
- var DropdownMenuLabel = React25.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
1731
+ var DropdownMenuLabel = React27.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
1534
1732
  DropdownMenuPrimitive.Label,
1535
1733
  {
1536
1734
  ref,
@@ -1543,7 +1741,7 @@ var DropdownMenuLabel = React25.forwardRef(({ className, inset, ...props }, ref)
1543
1741
  }
1544
1742
  ));
1545
1743
  DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
1546
- var DropdownMenuSeparator = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1744
+ var DropdownMenuSeparator = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1547
1745
  DropdownMenuPrimitive.Separator,
1548
1746
  {
1549
1747
  ref,
@@ -1565,7 +1763,7 @@ var DropdownMenuShortcut = ({
1565
1763
  );
1566
1764
  };
1567
1765
  DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
1568
- var SidebarNavItem = React25.forwardRef(
1766
+ var SidebarNavItem = React27.forwardRef(
1569
1767
  ({ item, isActive, className, LinkComponent, ...props }, ref) => {
1570
1768
  const Icon = item.icon;
1571
1769
  const baseClassName = cn(
@@ -1605,7 +1803,7 @@ var SidebarNavItem = React25.forwardRef(
1605
1803
  }
1606
1804
  );
1607
1805
  SidebarNavItem.displayName = "SidebarNavItem";
1608
- var Sidebar = React25.forwardRef(
1806
+ var Sidebar = React27.forwardRef(
1609
1807
  ({
1610
1808
  mainNav = [],
1611
1809
  bottomNav = [],
@@ -1715,7 +1913,7 @@ var alertVariants = cva(
1715
1913
  }
1716
1914
  }
1717
1915
  );
1718
- var Alert = React25.forwardRef(
1916
+ var Alert = React27.forwardRef(
1719
1917
  ({ className, variant, icon, title, action, children, ...props }, ref) => {
1720
1918
  return /* @__PURE__ */ jsx(
1721
1919
  "div",
@@ -1738,7 +1936,7 @@ var Alert = React25.forwardRef(
1738
1936
  }
1739
1937
  );
1740
1938
  Alert.displayName = "Alert";
1741
- var EmptyState = React25.forwardRef(
1939
+ var EmptyState = React27.forwardRef(
1742
1940
  ({ className, icon, title, description, action, size = "default", ...props }, ref) => {
1743
1941
  const paddingClass = {
1744
1942
  sm: "p-8",
@@ -1766,7 +1964,7 @@ var EmptyState = React25.forwardRef(
1766
1964
  }
1767
1965
  );
1768
1966
  EmptyState.displayName = "EmptyState";
1769
- var CodeBlock = React25.forwardRef(
1967
+ var CodeBlock = React27.forwardRef(
1770
1968
  ({ className, children, language, ...props }, ref) => {
1771
1969
  return /* @__PURE__ */ jsx(
1772
1970
  "pre",
@@ -1784,15 +1982,15 @@ var CodeBlock = React25.forwardRef(
1784
1982
  }
1785
1983
  );
1786
1984
  CodeBlock.displayName = "CodeBlock";
1787
- var FormField = React25.forwardRef(
1985
+ var FormField = React27.forwardRef(
1788
1986
  ({ label, error, helperText, hint, required, id, className, children, ...props }, ref) => {
1789
- const fieldId = id || React25.useId();
1987
+ const fieldId = id || React27.useId();
1790
1988
  const errorId = `${fieldId}-error`;
1791
1989
  const helperId = `${fieldId}-helper`;
1792
- const enhancedChildren = React25.Children.map(children, (child) => {
1793
- if (React25.isValidElement(child)) {
1990
+ const enhancedChildren = React27.Children.map(children, (child) => {
1991
+ if (React27.isValidElement(child)) {
1794
1992
  const childProps = child.props;
1795
- return React25.cloneElement(child, {
1993
+ return React27.cloneElement(child, {
1796
1994
  id: fieldId,
1797
1995
  "aria-invalid": error ? "true" : void 0,
1798
1996
  "aria-describedby": error ? errorId : helperText ? helperId : void 0,
@@ -1816,7 +2014,7 @@ var FormField = React25.forwardRef(
1816
2014
  }
1817
2015
  );
1818
2016
  FormField.displayName = "FormField";
1819
- var Table = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsx(
2017
+ var Table = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsx(
1820
2018
  "table",
1821
2019
  {
1822
2020
  ref,
@@ -1825,11 +2023,11 @@ var Table = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
1825
2023
  }
1826
2024
  ) }));
1827
2025
  Table.displayName = "Table";
1828
- var TableHeader = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("", className), ...props }));
2026
+ var TableHeader = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("", className), ...props }));
1829
2027
  TableHeader.displayName = "TableHeader";
1830
- var TableBody = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("tbody", { ref, className: cn("", className), ...props }));
2028
+ var TableBody = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("tbody", { ref, className: cn("", className), ...props }));
1831
2029
  TableBody.displayName = "TableBody";
1832
- var TableFooter = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2030
+ var TableFooter = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1833
2031
  "tfoot",
1834
2032
  {
1835
2033
  ref,
@@ -1838,7 +2036,7 @@ var TableFooter = React25.forwardRef(({ className, ...props }, ref) => /* @__PUR
1838
2036
  }
1839
2037
  ));
1840
2038
  TableFooter.displayName = "TableFooter";
1841
- var TableRow = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2039
+ var TableRow = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1842
2040
  "tr",
1843
2041
  {
1844
2042
  ref,
@@ -1847,7 +2045,7 @@ var TableRow = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__
1847
2045
  }
1848
2046
  ));
1849
2047
  TableRow.displayName = "TableRow";
1850
- var TableHead = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2048
+ var TableHead = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1851
2049
  "th",
1852
2050
  {
1853
2051
  ref,
@@ -1859,7 +2057,7 @@ var TableHead = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE_
1859
2057
  }
1860
2058
  ));
1861
2059
  TableHead.displayName = "TableHead";
1862
- var TableCell = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2060
+ var TableCell = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1863
2061
  "td",
1864
2062
  {
1865
2063
  ref,
@@ -1868,7 +2066,7 @@ var TableCell = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE_
1868
2066
  }
1869
2067
  ));
1870
2068
  TableCell.displayName = "TableCell";
1871
- var TableCaption = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2069
+ var TableCaption = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1872
2070
  "caption",
1873
2071
  {
1874
2072
  ref,
@@ -1877,7 +2075,7 @@ var TableCaption = React25.forwardRef(({ className, ...props }, ref) => /* @__PU
1877
2075
  }
1878
2076
  ));
1879
2077
  TableCaption.displayName = "TableCaption";
1880
- var Divider = React25.forwardRef(
2078
+ var Divider = React27.forwardRef(
1881
2079
  ({ className, text, orientation = "horizontal", ...props }, ref) => {
1882
2080
  if (orientation === "vertical") {
1883
2081
  return /* @__PURE__ */ jsx(
@@ -1915,11 +2113,72 @@ var Divider = React25.forwardRef(
1915
2113
  }
1916
2114
  );
1917
2115
  Divider.displayName = "Divider";
2116
+ var Tabs = TabsPrimitive.Root;
2117
+ var TabsList = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2118
+ TabsPrimitive.List,
2119
+ {
2120
+ ref,
2121
+ className: cn(
2122
+ "inline-flex h-10 items-center justify-center rounded-sm bg-muted p-1 text-muted-foreground",
2123
+ className
2124
+ ),
2125
+ ...props
2126
+ }
2127
+ ));
2128
+ TabsList.displayName = TabsPrimitive.List.displayName;
2129
+ var TabsTrigger = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2130
+ TabsPrimitive.Trigger,
2131
+ {
2132
+ ref,
2133
+ className: cn(
2134
+ "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
2135
+ className
2136
+ ),
2137
+ ...props
2138
+ }
2139
+ ));
2140
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
2141
+ var TabsContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2142
+ TabsPrimitive.Content,
2143
+ {
2144
+ ref,
2145
+ className: cn(
2146
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
2147
+ className
2148
+ ),
2149
+ ...props
2150
+ }
2151
+ ));
2152
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
2153
+ var TabsListUnderline = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2154
+ TabsPrimitive.List,
2155
+ {
2156
+ ref,
2157
+ className: cn(
2158
+ "inline-flex items-center justify-start border-b border-border",
2159
+ className
2160
+ ),
2161
+ ...props
2162
+ }
2163
+ ));
2164
+ TabsListUnderline.displayName = "TabsListUnderline";
2165
+ var TabsTriggerUnderline = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2166
+ TabsPrimitive.Trigger,
2167
+ {
2168
+ ref,
2169
+ className: cn(
2170
+ "inline-flex items-center justify-center whitespace-nowrap px-4 py-2 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground border-b-2 border-transparent -mb-px data-[state=active]:text-foreground data-[state=active]:border-[var(--cyan)] disabled:pointer-events-none disabled:opacity-50",
2171
+ className
2172
+ ),
2173
+ ...props
2174
+ }
2175
+ ));
2176
+ TabsTriggerUnderline.displayName = "TabsTriggerUnderline";
1918
2177
  var Dialog = SheetPrimitive.Root;
1919
2178
  var DialogTrigger = SheetPrimitive.Trigger;
1920
2179
  var DialogPortal = SheetPrimitive.Portal;
1921
2180
  var DialogClose = SheetPrimitive.Close;
1922
- var DialogOverlay = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2181
+ var DialogOverlay = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1923
2182
  SheetPrimitive.Overlay,
1924
2183
  {
1925
2184
  ref,
@@ -1931,7 +2190,7 @@ var DialogOverlay = React25.forwardRef(({ className, ...props }, ref) => /* @__P
1931
2190
  }
1932
2191
  ));
1933
2192
  DialogOverlay.displayName = SheetPrimitive.Overlay.displayName;
1934
- var DialogContent = React25.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
2193
+ var DialogContent = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
1935
2194
  /* @__PURE__ */ jsx(DialogOverlay, {}),
1936
2195
  /* @__PURE__ */ jsxs(
1937
2196
  SheetPrimitive.Content,
@@ -1981,7 +2240,7 @@ var DialogFooter = ({
1981
2240
  }
1982
2241
  );
1983
2242
  DialogFooter.displayName = "DialogFooter";
1984
- var DialogTitle = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2243
+ var DialogTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1985
2244
  SheetPrimitive.Title,
1986
2245
  {
1987
2246
  ref,
@@ -1993,7 +2252,7 @@ var DialogTitle = React25.forwardRef(({ className, ...props }, ref) => /* @__PUR
1993
2252
  }
1994
2253
  ));
1995
2254
  DialogTitle.displayName = SheetPrimitive.Title.displayName;
1996
- var DialogDescription = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2255
+ var DialogDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1997
2256
  SheetPrimitive.Description,
1998
2257
  {
1999
2258
  ref,
@@ -2002,8 +2261,214 @@ var DialogDescription = React25.forwardRef(({ className, ...props }, ref) => /*
2002
2261
  }
2003
2262
  ));
2004
2263
  DialogDescription.displayName = SheetPrimitive.Description.displayName;
2264
+ var AlertDialog = AlertDialogPrimitive.Root;
2265
+ var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
2266
+ var AlertDialogPortal = AlertDialogPrimitive.Portal;
2267
+ var AlertDialogOverlay = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2268
+ AlertDialogPrimitive.Overlay,
2269
+ {
2270
+ className: cn(
2271
+ "fixed inset-0 z-50 bg-black/60 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
2272
+ className
2273
+ ),
2274
+ ...props,
2275
+ ref
2276
+ }
2277
+ ));
2278
+ AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
2279
+ var AlertDialogContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
2280
+ /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
2281
+ /* @__PURE__ */ jsx(
2282
+ AlertDialogPrimitive.Content,
2283
+ {
2284
+ ref,
2285
+ className: cn(
2286
+ "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%] rounded-sm",
2287
+ className
2288
+ ),
2289
+ ...props
2290
+ }
2291
+ )
2292
+ ] }));
2293
+ AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
2294
+ var AlertDialogHeader = ({
2295
+ className,
2296
+ ...props
2297
+ }) => /* @__PURE__ */ jsx(
2298
+ "div",
2299
+ {
2300
+ className: cn(
2301
+ "flex flex-col space-y-2 text-center sm:text-left",
2302
+ className
2303
+ ),
2304
+ ...props
2305
+ }
2306
+ );
2307
+ AlertDialogHeader.displayName = "AlertDialogHeader";
2308
+ var AlertDialogFooter = ({
2309
+ className,
2310
+ ...props
2311
+ }) => /* @__PURE__ */ jsx(
2312
+ "div",
2313
+ {
2314
+ className: cn(
2315
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
2316
+ className
2317
+ ),
2318
+ ...props
2319
+ }
2320
+ );
2321
+ AlertDialogFooter.displayName = "AlertDialogFooter";
2322
+ var AlertDialogTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2323
+ AlertDialogPrimitive.Title,
2324
+ {
2325
+ ref,
2326
+ className: cn("text-lg font-semibold text-[var(--black)]", className),
2327
+ ...props
2328
+ }
2329
+ ));
2330
+ AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
2331
+ var AlertDialogDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2332
+ AlertDialogPrimitive.Description,
2333
+ {
2334
+ ref,
2335
+ className: cn("text-sm text-muted-foreground", className),
2336
+ ...props
2337
+ }
2338
+ ));
2339
+ AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
2340
+ var AlertDialogAction = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2341
+ AlertDialogPrimitive.Action,
2342
+ {
2343
+ ref,
2344
+ className: cn(buttonVariants(), className),
2345
+ ...props
2346
+ }
2347
+ ));
2348
+ AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
2349
+ var AlertDialogCancel = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2350
+ AlertDialogPrimitive.Cancel,
2351
+ {
2352
+ ref,
2353
+ className: cn(
2354
+ buttonVariants({ variant: "outline" }),
2355
+ "mt-2 sm:mt-0",
2356
+ className
2357
+ ),
2358
+ ...props
2359
+ }
2360
+ ));
2361
+ AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
2362
+ function ConfirmDialog({
2363
+ open,
2364
+ onOpenChange,
2365
+ title,
2366
+ description,
2367
+ confirmText = "Confirm",
2368
+ cancelText = "Cancel",
2369
+ onConfirm,
2370
+ onCancel,
2371
+ variant = "default",
2372
+ loading = false
2373
+ }) {
2374
+ return /* @__PURE__ */ jsx(AlertDialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(AlertDialogContent, { children: [
2375
+ /* @__PURE__ */ jsxs(AlertDialogHeader, { children: [
2376
+ /* @__PURE__ */ jsx(AlertDialogTitle, { children: title }),
2377
+ description && /* @__PURE__ */ jsx(AlertDialogDescription, { children: description })
2378
+ ] }),
2379
+ /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [
2380
+ /* @__PURE__ */ jsx(
2381
+ AlertDialogCancel,
2382
+ {
2383
+ onClick: () => {
2384
+ onCancel?.();
2385
+ onOpenChange(false);
2386
+ },
2387
+ children: cancelText
2388
+ }
2389
+ ),
2390
+ /* @__PURE__ */ jsx(
2391
+ AlertDialogAction,
2392
+ {
2393
+ onClick: () => {
2394
+ onConfirm();
2395
+ },
2396
+ className: cn(
2397
+ variant === "destructive" && "bg-destructive text-destructive-foreground hover:bg-destructive/90"
2398
+ ),
2399
+ disabled: loading,
2400
+ children: loading ? "Loading..." : confirmText
2401
+ }
2402
+ )
2403
+ ] })
2404
+ ] }) });
2405
+ }
2406
+ var Popover = PopoverPrimitive.Root;
2407
+ var PopoverTrigger = PopoverPrimitive.Trigger;
2408
+ var PopoverAnchor = PopoverPrimitive.Anchor;
2409
+ var PopoverClose = PopoverPrimitive.Close;
2410
+ var PopoverContent = React27.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
2411
+ PopoverPrimitive.Content,
2412
+ {
2413
+ ref,
2414
+ align,
2415
+ sideOffset,
2416
+ className: cn(
2417
+ "z-50 w-72 rounded-sm border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
2418
+ className
2419
+ ),
2420
+ ...props
2421
+ }
2422
+ ) }));
2423
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
2424
+ var PopoverArrow = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2425
+ PopoverPrimitive.Arrow,
2426
+ {
2427
+ ref,
2428
+ className: cn("fill-popover", className),
2429
+ ...props
2430
+ }
2431
+ ));
2432
+ PopoverArrow.displayName = PopoverPrimitive.Arrow.displayName;
2433
+ var TooltipProvider = TooltipPrimitive.Provider;
2434
+ var Tooltip = TooltipPrimitive.Root;
2435
+ var TooltipTrigger = TooltipPrimitive.Trigger;
2436
+ var TooltipContent = React27.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
2437
+ TooltipPrimitive.Content,
2438
+ {
2439
+ ref,
2440
+ sideOffset,
2441
+ className: cn(
2442
+ "z-50 overflow-hidden rounded-sm bg-[var(--black)] px-3 py-1.5 text-xs text-white animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
2443
+ className
2444
+ ),
2445
+ ...props
2446
+ }
2447
+ ) }));
2448
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
2449
+ var TooltipArrow = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2450
+ TooltipPrimitive.Arrow,
2451
+ {
2452
+ ref,
2453
+ className: cn("fill-[var(--black)]", className),
2454
+ ...props
2455
+ }
2456
+ ));
2457
+ TooltipArrow.displayName = TooltipPrimitive.Arrow.displayName;
2458
+ function SimpleTooltip({
2459
+ content,
2460
+ children,
2461
+ side = "top",
2462
+ align = "center",
2463
+ delayDuration = 200
2464
+ }) {
2465
+ return /* @__PURE__ */ jsx(TooltipProvider, { delayDuration, children: /* @__PURE__ */ jsxs(Tooltip, { children: [
2466
+ /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children }),
2467
+ /* @__PURE__ */ jsx(TooltipContent, { side, align, children: content })
2468
+ ] }) });
2469
+ }
2005
2470
  var ToastProvider = ToastPrimitives.Provider;
2006
- var ToastViewport = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2471
+ var ToastViewport = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2007
2472
  ToastPrimitives.Viewport,
2008
2473
  {
2009
2474
  ref,
@@ -2032,7 +2497,7 @@ var toastVariants = cva(
2032
2497
  }
2033
2498
  }
2034
2499
  );
2035
- var Toast = React25.forwardRef(({ className, variant, ...props }, ref) => {
2500
+ var Toast = React27.forwardRef(({ className, variant, ...props }, ref) => {
2036
2501
  return /* @__PURE__ */ jsx(
2037
2502
  ToastPrimitives.Root,
2038
2503
  {
@@ -2043,7 +2508,7 @@ var Toast = React25.forwardRef(({ className, variant, ...props }, ref) => {
2043
2508
  );
2044
2509
  });
2045
2510
  Toast.displayName = ToastPrimitives.Root.displayName;
2046
- var ToastAction = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2511
+ var ToastAction = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2047
2512
  ToastPrimitives.Action,
2048
2513
  {
2049
2514
  ref,
@@ -2055,7 +2520,7 @@ var ToastAction = React25.forwardRef(({ className, ...props }, ref) => /* @__PUR
2055
2520
  }
2056
2521
  ));
2057
2522
  ToastAction.displayName = ToastPrimitives.Action.displayName;
2058
- var ToastClose = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2523
+ var ToastClose = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2059
2524
  ToastPrimitives.Close,
2060
2525
  {
2061
2526
  ref,
@@ -2069,7 +2534,7 @@ var ToastClose = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE
2069
2534
  }
2070
2535
  ));
2071
2536
  ToastClose.displayName = ToastPrimitives.Close.displayName;
2072
- var ToastTitle = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2537
+ var ToastTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2073
2538
  ToastPrimitives.Title,
2074
2539
  {
2075
2540
  ref,
@@ -2078,7 +2543,7 @@ var ToastTitle = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE
2078
2543
  }
2079
2544
  ));
2080
2545
  ToastTitle.displayName = ToastPrimitives.Title.displayName;
2081
- var ToastDescription = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2546
+ var ToastDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2082
2547
  ToastPrimitives.Description,
2083
2548
  {
2084
2549
  ref,
@@ -2217,8 +2682,8 @@ function toast({ ...props }) {
2217
2682
  };
2218
2683
  }
2219
2684
  function useToast() {
2220
- const [state, setState] = React25.useState(memoryState);
2221
- React25.useEffect(() => {
2685
+ const [state, setState] = React27.useState(memoryState);
2686
+ React27.useEffect(() => {
2222
2687
  listeners.push(setState);
2223
2688
  return () => {
2224
2689
  const index = listeners.indexOf(setState);
@@ -2253,10 +2718,665 @@ function Toaster() {
2253
2718
  /* @__PURE__ */ jsx(ToastViewport, {})
2254
2719
  ] });
2255
2720
  }
2721
+ var Skeleton = React27.forwardRef(
2722
+ ({ className, variant = "default", width, height, animate = true, style, ...props }, ref) => {
2723
+ const variantStyles = {
2724
+ default: "rounded-sm",
2725
+ circular: "rounded-full",
2726
+ rounded: "rounded-md"
2727
+ };
2728
+ return /* @__PURE__ */ jsx(
2729
+ "div",
2730
+ {
2731
+ ref,
2732
+ className: cn(
2733
+ "bg-muted",
2734
+ animate && "animate-pulse",
2735
+ variantStyles[variant],
2736
+ className
2737
+ ),
2738
+ style: {
2739
+ width: typeof width === "number" ? `${width}px` : width,
2740
+ height: typeof height === "number" ? `${height}px` : height,
2741
+ ...style
2742
+ },
2743
+ ...props
2744
+ }
2745
+ );
2746
+ }
2747
+ );
2748
+ Skeleton.displayName = "Skeleton";
2749
+ var SkeletonText = React27.forwardRef(
2750
+ ({ lines = 3, gap = 8, className, ...props }, ref) => {
2751
+ return /* @__PURE__ */ jsx("div", { ref, className: cn("space-y-2", className), style: { gap }, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsx(
2752
+ Skeleton,
2753
+ {
2754
+ height: 16,
2755
+ width: i === lines - 1 ? "70%" : "100%",
2756
+ ...props
2757
+ },
2758
+ i
2759
+ )) });
2760
+ }
2761
+ );
2762
+ SkeletonText.displayName = "SkeletonText";
2763
+ var SkeletonCard = React27.forwardRef(
2764
+ ({ hasHeader = true, hasAvatar = false, className, ...props }, ref) => {
2765
+ return /* @__PURE__ */ jsxs(
2766
+ "div",
2767
+ {
2768
+ ref,
2769
+ className: cn("rounded-lg border p-6 space-y-4", className),
2770
+ ...props,
2771
+ children: [
2772
+ hasHeader && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
2773
+ hasAvatar && /* @__PURE__ */ jsx(Skeleton, { variant: "circular", width: 40, height: 40 }),
2774
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2 flex-1", children: [
2775
+ /* @__PURE__ */ jsx(Skeleton, { height: 20, width: "50%" }),
2776
+ /* @__PURE__ */ jsx(Skeleton, { height: 14, width: "30%" })
2777
+ ] })
2778
+ ] }),
2779
+ /* @__PURE__ */ jsx(SkeletonText, { lines: 3 })
2780
+ ]
2781
+ }
2782
+ );
2783
+ }
2784
+ );
2785
+ SkeletonCard.displayName = "SkeletonCard";
2786
+ function generatePagination(currentPage, totalPages, siblingCount) {
2787
+ const totalPageNumbers = siblingCount * 2 + 5;
2788
+ if (totalPageNumbers >= totalPages) {
2789
+ return Array.from({ length: totalPages }, (_, i) => i + 1);
2790
+ }
2791
+ const leftSiblingIndex = Math.max(currentPage - siblingCount, 1);
2792
+ const rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages);
2793
+ const showLeftDots = leftSiblingIndex > 2;
2794
+ const showRightDots = rightSiblingIndex < totalPages - 1;
2795
+ if (!showLeftDots && showRightDots) {
2796
+ const leftRange = Array.from(
2797
+ { length: 3 + siblingCount * 2 },
2798
+ (_, i) => i + 1
2799
+ );
2800
+ return [...leftRange, "ellipsis", totalPages];
2801
+ }
2802
+ if (showLeftDots && !showRightDots) {
2803
+ const rightRange = Array.from(
2804
+ { length: 3 + siblingCount * 2 },
2805
+ (_, i) => totalPages - (3 + siblingCount * 2) + i + 1
2806
+ );
2807
+ return [1, "ellipsis", ...rightRange];
2808
+ }
2809
+ const middleRange = Array.from(
2810
+ { length: siblingCount * 2 + 1 },
2811
+ (_, i) => leftSiblingIndex + i
2812
+ );
2813
+ return [1, "ellipsis", ...middleRange, "ellipsis", totalPages];
2814
+ }
2815
+ var Pagination = React27.forwardRef(
2816
+ ({
2817
+ currentPage,
2818
+ totalPages,
2819
+ onPageChange,
2820
+ siblingCount = 1,
2821
+ showBoundaryPages = true,
2822
+ size = "default",
2823
+ className
2824
+ }, ref) => {
2825
+ const pages = generatePagination(currentPage, totalPages, siblingCount);
2826
+ const buttonSize = size === "sm" ? "sm" : size === "lg" ? "lg" : "default";
2827
+ const iconSize = size === "sm" ? 14 : size === "lg" ? 20 : 16;
2828
+ if (totalPages <= 1) {
2829
+ return null;
2830
+ }
2831
+ return /* @__PURE__ */ jsxs(
2832
+ "nav",
2833
+ {
2834
+ ref,
2835
+ role: "navigation",
2836
+ "aria-label": "Pagination",
2837
+ className: cn("flex items-center gap-1", className),
2838
+ children: [
2839
+ /* @__PURE__ */ jsx(
2840
+ Button,
2841
+ {
2842
+ variant: "outline",
2843
+ size: buttonSize,
2844
+ onClick: () => onPageChange(currentPage - 1),
2845
+ disabled: currentPage <= 1,
2846
+ "aria-label": "Go to previous page",
2847
+ children: /* @__PURE__ */ jsx(CaretLeft, { size: iconSize })
2848
+ }
2849
+ ),
2850
+ /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1", children: pages.map((page, index) => {
2851
+ if (page === "ellipsis") {
2852
+ return /* @__PURE__ */ jsx(
2853
+ "span",
2854
+ {
2855
+ className: "flex h-9 w-9 items-center justify-center text-muted-foreground",
2856
+ children: /* @__PURE__ */ jsx(DotsThree, { size: iconSize })
2857
+ },
2858
+ `ellipsis-${index}`
2859
+ );
2860
+ }
2861
+ const isCurrentPage = page === currentPage;
2862
+ return /* @__PURE__ */ jsx(
2863
+ Button,
2864
+ {
2865
+ variant: isCurrentPage ? "default" : "outline",
2866
+ size: buttonSize,
2867
+ onClick: () => onPageChange(page),
2868
+ "aria-label": `Go to page ${page}`,
2869
+ "aria-current": isCurrentPage ? "page" : void 0,
2870
+ children: page
2871
+ },
2872
+ page
2873
+ );
2874
+ }) }),
2875
+ /* @__PURE__ */ jsx(
2876
+ Button,
2877
+ {
2878
+ variant: "outline",
2879
+ size: buttonSize,
2880
+ onClick: () => onPageChange(currentPage + 1),
2881
+ disabled: currentPage >= totalPages,
2882
+ "aria-label": "Go to next page",
2883
+ children: /* @__PURE__ */ jsx(CaretRight, { size: iconSize })
2884
+ }
2885
+ )
2886
+ ]
2887
+ }
2888
+ );
2889
+ }
2890
+ );
2891
+ Pagination.displayName = "Pagination";
2892
+ var SimplePagination = React27.forwardRef(
2893
+ ({
2894
+ currentPage,
2895
+ totalPages,
2896
+ onPageChange,
2897
+ size = "default",
2898
+ className,
2899
+ showPageInfo = true
2900
+ }, ref) => {
2901
+ const buttonSize = size === "sm" ? "sm" : size === "lg" ? "lg" : "default";
2902
+ const iconSize = size === "sm" ? 14 : size === "lg" ? 20 : 16;
2903
+ if (totalPages <= 1) {
2904
+ return null;
2905
+ }
2906
+ return /* @__PURE__ */ jsxs(
2907
+ "nav",
2908
+ {
2909
+ ref,
2910
+ role: "navigation",
2911
+ "aria-label": "Pagination",
2912
+ className: cn("flex items-center gap-2", className),
2913
+ children: [
2914
+ /* @__PURE__ */ jsxs(
2915
+ Button,
2916
+ {
2917
+ variant: "outline",
2918
+ size: buttonSize,
2919
+ onClick: () => onPageChange(currentPage - 1),
2920
+ disabled: currentPage <= 1,
2921
+ "aria-label": "Go to previous page",
2922
+ children: [
2923
+ /* @__PURE__ */ jsx(CaretLeft, { size: iconSize }),
2924
+ /* @__PURE__ */ jsx("span", { className: "ml-1", children: "Previous" })
2925
+ ]
2926
+ }
2927
+ ),
2928
+ showPageInfo && /* @__PURE__ */ jsxs("span", { className: "text-sm text-muted-foreground px-2", children: [
2929
+ "Page ",
2930
+ currentPage,
2931
+ " of ",
2932
+ totalPages
2933
+ ] }),
2934
+ /* @__PURE__ */ jsxs(
2935
+ Button,
2936
+ {
2937
+ variant: "outline",
2938
+ size: buttonSize,
2939
+ onClick: () => onPageChange(currentPage + 1),
2940
+ disabled: currentPage >= totalPages,
2941
+ "aria-label": "Go to next page",
2942
+ children: [
2943
+ /* @__PURE__ */ jsx("span", { className: "mr-1", children: "Next" }),
2944
+ /* @__PURE__ */ jsx(CaretRight, { size: iconSize })
2945
+ ]
2946
+ }
2947
+ )
2948
+ ]
2949
+ }
2950
+ );
2951
+ }
2952
+ );
2953
+ SimplePagination.displayName = "SimplePagination";
2954
+ var StepProgress = React27.forwardRef(
2955
+ ({
2956
+ steps,
2957
+ currentStep,
2958
+ onStepClick,
2959
+ orientation = "horizontal",
2960
+ size = "default",
2961
+ showLabels = true,
2962
+ className
2963
+ }, ref) => {
2964
+ const sizeStyles = {
2965
+ sm: {
2966
+ indicator: "w-6 h-6 text-xs",
2967
+ icon: 12,
2968
+ label: "text-xs",
2969
+ connector: orientation === "horizontal" ? "h-0.5" : "w-0.5",
2970
+ connectorLength: orientation === "horizontal" ? "w-4 sm:w-8" : "h-6"
2971
+ },
2972
+ default: {
2973
+ indicator: "w-7 h-7 text-xs",
2974
+ icon: 14,
2975
+ label: "text-sm",
2976
+ connector: orientation === "horizontal" ? "h-0.5" : "w-0.5",
2977
+ connectorLength: orientation === "horizontal" ? "w-6 sm:w-10 md:w-14" : "h-8"
2978
+ },
2979
+ lg: {
2980
+ indicator: "w-8 h-8 text-sm",
2981
+ icon: 16,
2982
+ label: "text-sm",
2983
+ connector: orientation === "horizontal" ? "h-0.5" : "w-0.5",
2984
+ connectorLength: orientation === "horizontal" ? "w-8 sm:w-12 md:w-16" : "h-10"
2985
+ }
2986
+ };
2987
+ const styles = sizeStyles[size];
2988
+ return /* @__PURE__ */ jsx(
2989
+ "div",
2990
+ {
2991
+ ref,
2992
+ className: cn(
2993
+ "flex",
2994
+ orientation === "horizontal" ? "flex-row items-center" : "flex-col",
2995
+ className
2996
+ ),
2997
+ children: steps.map((step, index) => {
2998
+ const isCompleted = step.id < currentStep;
2999
+ const isCurrent = step.id === currentStep;
3000
+ const isClickable = onStepClick && step.id < currentStep;
3001
+ return /* @__PURE__ */ jsxs(
3002
+ "div",
3003
+ {
3004
+ className: cn(
3005
+ "flex",
3006
+ orientation === "horizontal" ? "flex-row items-center" : "flex-col items-start"
3007
+ ),
3008
+ children: [
3009
+ /* @__PURE__ */ jsxs(
3010
+ "button",
3011
+ {
3012
+ type: "button",
3013
+ onClick: () => isClickable && onStepClick(step.id),
3014
+ disabled: !isClickable,
3015
+ className: cn(
3016
+ "flex items-center gap-2 px-2 py-1.5 rounded-sm transition-colors",
3017
+ isClickable ? "cursor-pointer hover:bg-gray-50" : "cursor-default",
3018
+ orientation === "vertical" && "flex-row"
3019
+ ),
3020
+ children: [
3021
+ /* @__PURE__ */ jsx(
3022
+ "span",
3023
+ {
3024
+ className: cn(
3025
+ "rounded-sm flex items-center justify-center font-bold transition-colors",
3026
+ styles.indicator,
3027
+ isCompleted ? "bg-[var(--cyan)] text-white" : isCurrent ? "bg-[var(--black)] text-white" : "bg-gray-100 text-gray-400"
3028
+ ),
3029
+ children: isCompleted ? /* @__PURE__ */ jsx(Check, { size: styles.icon, weight: "bold" }) : step.id
3030
+ }
3031
+ ),
3032
+ showLabels && /* @__PURE__ */ jsxs("div", { className: cn(
3033
+ orientation === "horizontal" && "hidden sm:block",
3034
+ "text-left"
3035
+ ), children: [
3036
+ /* @__PURE__ */ jsx(
3037
+ "span",
3038
+ {
3039
+ className: cn(
3040
+ "font-medium transition-colors whitespace-nowrap",
3041
+ styles.label,
3042
+ isCompleted ? "text-[var(--cyan)]" : isCurrent ? "text-[var(--black)]" : "text-gray-400"
3043
+ ),
3044
+ children: step.label
3045
+ }
3046
+ ),
3047
+ step.description && orientation === "vertical" && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground mt-0.5", children: step.description })
3048
+ ] })
3049
+ ]
3050
+ }
3051
+ ),
3052
+ index < steps.length - 1 && /* @__PURE__ */ jsx(
3053
+ "div",
3054
+ {
3055
+ className: cn(
3056
+ "transition-colors",
3057
+ styles.connector,
3058
+ styles.connectorLength,
3059
+ isCompleted ? "bg-[var(--cyan)]" : "bg-gray-200",
3060
+ orientation === "vertical" && "ml-[13px] my-1"
3061
+ )
3062
+ }
3063
+ )
3064
+ ]
3065
+ },
3066
+ step.id
3067
+ );
3068
+ })
3069
+ }
3070
+ );
3071
+ }
3072
+ );
3073
+ StepProgress.displayName = "StepProgress";
3074
+ var StepDots = React27.forwardRef(
3075
+ ({ totalSteps, currentStep, onStepClick, className }, ref) => {
3076
+ return /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center gap-2", className), children: Array.from({ length: totalSteps }, (_, i) => i + 1).map((step) => {
3077
+ const isCompleted = step < currentStep;
3078
+ const isCurrent = step === currentStep;
3079
+ const isClickable = onStepClick && step < currentStep;
3080
+ return /* @__PURE__ */ jsx(
3081
+ "button",
3082
+ {
3083
+ type: "button",
3084
+ onClick: () => isClickable && onStepClick(step),
3085
+ disabled: !isClickable,
3086
+ className: cn(
3087
+ "w-2 h-2 rounded-full transition-colors",
3088
+ isClickable && "cursor-pointer",
3089
+ !isClickable && "cursor-default",
3090
+ isCompleted || isCurrent ? "bg-[var(--cyan)]" : "bg-gray-200"
3091
+ ),
3092
+ "aria-label": `Step ${step}`
3093
+ },
3094
+ step
3095
+ );
3096
+ }) });
3097
+ }
3098
+ );
3099
+ StepDots.displayName = "StepDots";
3100
+ var Breadcrumbs = React27.forwardRef(
3101
+ ({
3102
+ items,
3103
+ LinkComponent,
3104
+ separator,
3105
+ showHomeIcon = false,
3106
+ maxItems,
3107
+ size = "default",
3108
+ className,
3109
+ ...props
3110
+ }, ref) => {
3111
+ const sizeStyles = {
3112
+ sm: "text-xs gap-1",
3113
+ default: "text-sm gap-1.5"
3114
+ };
3115
+ const iconSize = size === "sm" ? 10 : 12;
3116
+ let displayItems = items;
3117
+ if (maxItems && items.length > maxItems) {
3118
+ displayItems = [
3119
+ items[0],
3120
+ { label: "...", href: void 0 },
3121
+ ...items.slice(-(maxItems - 2))
3122
+ ];
3123
+ }
3124
+ const defaultSeparator = /* @__PURE__ */ jsx(CaretRight, { size: iconSize, className: "text-gray-400" });
3125
+ return /* @__PURE__ */ jsx(
3126
+ "nav",
3127
+ {
3128
+ ref,
3129
+ "aria-label": "Breadcrumb",
3130
+ className: cn("flex items-center text-gray-500", sizeStyles[size], className),
3131
+ ...props,
3132
+ children: /* @__PURE__ */ jsx("ol", { className: cn("flex items-center", sizeStyles[size]), children: displayItems.map((item, index) => {
3133
+ const isFirst = index === 0;
3134
+ const isLast = index === displayItems.length - 1;
3135
+ const isEllipsis = item.label === "...";
3136
+ return /* @__PURE__ */ jsxs("li", { className: cn("flex items-center", sizeStyles[size]), children: [
3137
+ index > 0 && /* @__PURE__ */ jsx("span", { className: "mx-1 text-gray-400", children: separator || defaultSeparator }),
3138
+ isEllipsis ? /* @__PURE__ */ jsx("span", { className: "text-gray-400", children: item.label }) : item.href && !isLast ? LinkComponent ? /* @__PURE__ */ jsxs(
3139
+ LinkComponent,
3140
+ {
3141
+ href: item.href,
3142
+ className: "flex items-center gap-1 hover:text-[var(--black)] transition-colors",
3143
+ children: [
3144
+ isFirst && showHomeIcon && /* @__PURE__ */ jsx(House, { size: iconSize + 2, weight: "fill" }),
3145
+ item.icon,
3146
+ /* @__PURE__ */ jsx("span", { children: item.label })
3147
+ ]
3148
+ }
3149
+ ) : /* @__PURE__ */ jsxs(
3150
+ "a",
3151
+ {
3152
+ href: item.href,
3153
+ className: "flex items-center gap-1 hover:text-[var(--black)] transition-colors",
3154
+ children: [
3155
+ isFirst && showHomeIcon && /* @__PURE__ */ jsx(House, { size: iconSize + 2, weight: "fill" }),
3156
+ item.icon,
3157
+ /* @__PURE__ */ jsx("span", { children: item.label })
3158
+ ]
3159
+ }
3160
+ ) : /* @__PURE__ */ jsxs(
3161
+ "span",
3162
+ {
3163
+ className: cn(
3164
+ "flex items-center gap-1",
3165
+ isLast && "text-[var(--black)] font-medium"
3166
+ ),
3167
+ "aria-current": isLast ? "page" : void 0,
3168
+ children: [
3169
+ isFirst && showHomeIcon && /* @__PURE__ */ jsx(House, { size: iconSize + 2, weight: "fill" }),
3170
+ item.icon,
3171
+ /* @__PURE__ */ jsx("span", { children: item.label })
3172
+ ]
3173
+ }
3174
+ )
3175
+ ] }, index);
3176
+ }) })
3177
+ }
3178
+ );
3179
+ }
3180
+ );
3181
+ Breadcrumbs.displayName = "Breadcrumbs";
3182
+ var BreadcrumbLink = React27.forwardRef(
3183
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
3184
+ "a",
3185
+ {
3186
+ ref,
3187
+ className: cn(
3188
+ "hover:text-[var(--black)] transition-colors",
3189
+ className
3190
+ ),
3191
+ ...props
3192
+ }
3193
+ )
3194
+ );
3195
+ BreadcrumbLink.displayName = "BreadcrumbLink";
3196
+ var presetLabels = {
3197
+ "today": "Today",
3198
+ "yesterday": "Yesterday",
3199
+ "7d": "Last 7 days",
3200
+ "30d": "Last 30 days",
3201
+ "90d": "Last 90 days",
3202
+ "this-week": "This week",
3203
+ "this-month": "This month",
3204
+ "this-year": "This year",
3205
+ "custom": "Custom"
3206
+ };
3207
+ var DateRangePicker = React27.forwardRef(
3208
+ ({
3209
+ value,
3210
+ onChange,
3211
+ customStart = "",
3212
+ customEnd = "",
3213
+ onCustomChange,
3214
+ presets = ["7d", "30d", "90d", "custom"],
3215
+ size = "default",
3216
+ className,
3217
+ inlineCustom = true
3218
+ }, ref) => {
3219
+ const buttonSize = size === "sm" ? "sm" : "default";
3220
+ return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex flex-wrap items-center gap-2", className), children: [
3221
+ presets.map((preset) => /* @__PURE__ */ jsx(
3222
+ Button,
3223
+ {
3224
+ variant: value === preset ? "default" : "outline",
3225
+ size: buttonSize,
3226
+ onClick: () => onChange(preset),
3227
+ children: presetLabels[preset]
3228
+ },
3229
+ preset
3230
+ )),
3231
+ value === "custom" && inlineCustom && onCustomChange && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
3232
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
3233
+ /* @__PURE__ */ jsx(Label2, { htmlFor: "start-date", className: "text-xs sr-only", children: "Start" }),
3234
+ /* @__PURE__ */ jsx(
3235
+ Input,
3236
+ {
3237
+ id: "start-date",
3238
+ type: "date",
3239
+ value: customStart,
3240
+ onChange: (e) => onCustomChange(e.target.value, customEnd),
3241
+ className: cn(size === "sm" ? "h-8 text-xs" : "h-9"),
3242
+ "aria-label": "Start date"
3243
+ }
3244
+ )
3245
+ ] }),
3246
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "to" }),
3247
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
3248
+ /* @__PURE__ */ jsx(Label2, { htmlFor: "end-date", className: "text-xs sr-only", children: "End" }),
3249
+ /* @__PURE__ */ jsx(
3250
+ Input,
3251
+ {
3252
+ id: "end-date",
3253
+ type: "date",
3254
+ value: customEnd,
3255
+ onChange: (e) => onCustomChange(customStart, e.target.value),
3256
+ className: cn(size === "sm" ? "h-8 text-xs" : "h-9"),
3257
+ "aria-label": "End date"
3258
+ }
3259
+ )
3260
+ ] })
3261
+ ] })
3262
+ ] });
3263
+ }
3264
+ );
3265
+ DateRangePicker.displayName = "DateRangePicker";
3266
+ var DateRangeSelect = React27.forwardRef(
3267
+ ({ value, onChange, presets = ["7d", "30d", "90d"], className }, ref) => {
3268
+ return /* @__PURE__ */ jsx(
3269
+ "select",
3270
+ {
3271
+ ref,
3272
+ value,
3273
+ onChange: (e) => onChange(e.target.value),
3274
+ className: cn(
3275
+ "h-9 rounded-sm border border-input bg-background px-3 text-sm ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
3276
+ className
3277
+ ),
3278
+ children: presets.map((preset) => /* @__PURE__ */ jsx("option", { value: preset, children: presetLabels[preset] }, preset))
3279
+ }
3280
+ );
3281
+ }
3282
+ );
3283
+ DateRangeSelect.displayName = "DateRangeSelect";
3284
+ function getDateRangeFromPreset(preset) {
3285
+ const now = /* @__PURE__ */ new Date();
3286
+ const end = new Date(now);
3287
+ end.setHours(23, 59, 59, 999);
3288
+ let start = new Date(now);
3289
+ start.setHours(0, 0, 0, 0);
3290
+ switch (preset) {
3291
+ case "today":
3292
+ break;
3293
+ case "yesterday":
3294
+ start.setDate(start.getDate() - 1);
3295
+ end.setDate(end.getDate() - 1);
3296
+ break;
3297
+ case "7d":
3298
+ start.setDate(start.getDate() - 7);
3299
+ break;
3300
+ case "30d":
3301
+ start.setDate(start.getDate() - 30);
3302
+ break;
3303
+ case "90d":
3304
+ start.setDate(start.getDate() - 90);
3305
+ break;
3306
+ case "this-week":
3307
+ start.setDate(start.getDate() - start.getDay());
3308
+ break;
3309
+ case "this-month":
3310
+ start.setDate(1);
3311
+ break;
3312
+ case "this-year":
3313
+ start.setMonth(0, 1);
3314
+ break;
3315
+ }
3316
+ return { start, end };
3317
+ }
3318
+ var SettingsNav = React27.forwardRef(
3319
+ ({ groups, LinkComponent, className, ...props }, ref) => {
3320
+ const Link2 = LinkComponent || "a";
3321
+ return /* @__PURE__ */ jsx("div", { ref, className: cn("space-y-8", className), ...props, children: groups.map((group) => /* @__PURE__ */ jsxs("div", { children: [
3322
+ /* @__PURE__ */ jsx("h2", { className: "text-sm font-medium text-muted-foreground uppercase tracking-wide mb-3 px-1", children: group.title }),
3323
+ /* @__PURE__ */ jsx("div", { className: "space-y-1", children: group.items.map((item) => /* @__PURE__ */ jsxs(
3324
+ Link2,
3325
+ {
3326
+ href: item.href,
3327
+ className: "group flex items-center gap-4 p-4 rounded-sm transition-all hover:bg-gray-50 border border-transparent hover:border-gray-200",
3328
+ children: [
3329
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center w-10 h-10 rounded-sm bg-gray-100 group-hover:bg-[var(--cyan)]/10 transition-colors", children: /* @__PURE__ */ jsx("span", { className: "text-gray-600 group-hover:text-[var(--cyan)] transition-colors [&>svg]:w-5 [&>svg]:h-5", children: item.icon }) }),
3330
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
3331
+ /* @__PURE__ */ jsx("h3", { className: "font-medium text-[var(--black)] group-hover:text-[var(--cyan)] transition-colors", children: item.title }),
3332
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: item.description })
3333
+ ] }),
3334
+ /* @__PURE__ */ jsx(
3335
+ CaretRight,
3336
+ {
3337
+ size: 18,
3338
+ className: "text-gray-300 group-hover:text-[var(--cyan)] group-hover:translate-x-0.5 transition-all shrink-0"
3339
+ }
3340
+ )
3341
+ ]
3342
+ },
3343
+ item.href
3344
+ )) })
3345
+ ] }, group.title)) });
3346
+ }
3347
+ );
3348
+ SettingsNav.displayName = "SettingsNav";
3349
+ var SettingsNavLink = React27.forwardRef(
3350
+ ({ title, description, icon, href, LinkComponent, className, ...props }, ref) => {
3351
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
3352
+ icon && /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center w-10 h-10 rounded-sm bg-gray-100 group-hover:bg-[var(--cyan)]/10 transition-colors", children: /* @__PURE__ */ jsx("span", { className: "text-gray-600 group-hover:text-[var(--cyan)] transition-colors [&>svg]:w-5 [&>svg]:h-5", children: icon }) }),
3353
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
3354
+ /* @__PURE__ */ jsx("h3", { className: "font-medium text-[var(--black)] group-hover:text-[var(--cyan)] transition-colors", children: title }),
3355
+ description && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: description })
3356
+ ] }),
3357
+ /* @__PURE__ */ jsx(
3358
+ CaretRight,
3359
+ {
3360
+ size: 18,
3361
+ className: "text-gray-300 group-hover:text-[var(--cyan)] group-hover:translate-x-0.5 transition-all shrink-0"
3362
+ }
3363
+ )
3364
+ ] });
3365
+ const linkClassName = cn(
3366
+ "group flex items-center gap-4 p-4 rounded-sm transition-all hover:bg-gray-50 border border-transparent hover:border-gray-200",
3367
+ className
3368
+ );
3369
+ if (LinkComponent && href) {
3370
+ return /* @__PURE__ */ jsx(LinkComponent, { href, className: linkClassName, children: content });
3371
+ }
3372
+ return /* @__PURE__ */ jsx("a", { ref, href, className: linkClassName, ...props, children: content });
3373
+ }
3374
+ );
3375
+ SettingsNavLink.displayName = "SettingsNavLink";
2256
3376
 
2257
3377
  // src/index.ts
2258
3378
  __reExport(index_exports, icons_exports);
2259
3379
 
2260
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, Avatar, AvatarFallback, AvatarImage, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, CodeBlock, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Divider, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, FormField, IconBox, Input, Label2 as Label, Logo, MetricCard, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Progress, Select, Separator2 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarNavItem, Stat, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tag, Textarea, Toast, ToastAction, ToastClose, ToastDescription, ToastIcon, ToastProvider, ToastTitle, ToastViewport, Toaster, UsageBar, UsageChart, alertVariants, badgeVariants, buttonVariants, cn, iconBoxVariants, metricCardVariants, navigationMenuTriggerStyle, progressVariants, statVariants, tagVariants, toast, usageBarVariants, useToast, valueVariants };
3380
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Avatar, AvatarFallback, AvatarImage, Badge, BreadcrumbLink, Breadcrumbs, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, CodeBlock, ConfirmDialog, DateRangePicker, DateRangeSelect, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Divider, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, FormField, IconBox, Input, Label2 as Label, LabeledSwitch, Logo, MetricCard, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, Popover, PopoverAnchor, PopoverArrow, PopoverClose, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupCard, RadioGroupItem, RadioGroupOption, Select, Separator2 as Separator, SettingsNav, SettingsNavLink, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarNavItem, SimplePagination, SimpleTooltip, Skeleton, SkeletonCard, SkeletonText, Stat, StepDots, StepProgress, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsListUnderline, TabsTrigger, TabsTriggerUnderline, Tag, Textarea, Toast, ToastAction, ToastClose, ToastDescription, ToastIcon, ToastProvider, ToastTitle, ToastViewport, Toaster, Tooltip, TooltipArrow, TooltipContent, TooltipProvider, TooltipTrigger, UsageBar, UsageChart, alertVariants, badgeVariants, buttonVariants, cn, getDateRangeFromPreset, iconBoxVariants, metricCardVariants, navigationMenuTriggerStyle, progressVariants, statVariants, tagVariants, toast, usageBarVariants, useToast, valueVariants };
2261
3381
  //# sourceMappingURL=index.mjs.map
2262
3382
  //# sourceMappingURL=index.mjs.map