@dilipod/ui 0.3.3 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,5 +1,6 @@
1
1
  "use client";
2
- import * as React27 from 'react';
2
+ import * as React28 from 'react';
3
+ import { useState, useRef } from 'react';
3
4
  import { Slot, createSlot } from '@radix-ui/react-slot';
4
5
  import { cva } from 'class-variance-authority';
5
6
  import { clsx } from 'clsx';
@@ -7,7 +8,7 @@ import { twMerge } from 'tailwind-merge';
7
8
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
8
9
  import * as SheetPrimitive from '@radix-ui/react-dialog';
9
10
  import * as react_star from '@phosphor-icons/react';
10
- import { X, Circle, CaretLeft, DotsThree, CaretRight, Check, House, Info, WarningCircle } from '@phosphor-icons/react';
11
+ import { X, Circle, CaretLeft, DotsThree, CaretRight, Check, House, Info, WarningCircle, Play, Download, Folder, ArrowSquareOut, CircleNotch, File, FileVideo, Lightning, Plus, FileImage, FilePdf, FileDoc, Question, CheckCircle, Warning, PencilSimple, Trash } from '@phosphor-icons/react';
11
12
  import 'react-dom';
12
13
  import * as SwitchPrimitive from '@radix-ui/react-switch';
13
14
  import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
@@ -103,13 +104,19 @@ __export(index_exports, {
103
104
  DropdownMenuSubTrigger: () => DropdownMenuSubTrigger,
104
105
  DropdownMenuTrigger: () => DropdownMenuTrigger,
105
106
  EmptyState: () => EmptyState,
107
+ ErrorState: () => ErrorState,
108
+ FilePreview: () => FilePreview,
106
109
  FormField: () => FormField,
107
110
  IconBox: () => IconBox,
108
111
  Input: () => Input,
109
112
  Label: () => Label2,
110
113
  LabeledSwitch: () => LabeledSwitch,
111
114
  Logo: () => Logo,
115
+ Metric: () => Metric,
112
116
  MetricCard: () => MetricCard,
117
+ MetricLabel: () => MetricLabel,
118
+ MetricSubtext: () => MetricSubtext,
119
+ MetricValue: () => MetricValue,
113
120
  NavigationMenu: () => NavigationMenu,
114
121
  NavigationMenuContent: () => NavigationMenuContent,
115
122
  NavigationMenuIndicator: () => NavigationMenuIndicator,
@@ -130,6 +137,7 @@ __export(index_exports, {
130
137
  RadioGroupCard: () => RadioGroupCard,
131
138
  RadioGroupItem: () => RadioGroupItem,
132
139
  RadioGroupOption: () => RadioGroupOption,
140
+ ScenariosManager: () => ScenariosManager,
133
141
  Select: () => Select,
134
142
  Separator: () => Separator2,
135
143
  SettingsNav: () => SettingsNav,
@@ -231,7 +239,7 @@ var buttonVariants = cva(
231
239
  }
232
240
  }
233
241
  );
234
- var Button = React27.forwardRef(
242
+ var Button = React28.forwardRef(
235
243
  ({ className, variant, size, asChild = false, loading, loadingText, children, disabled, ...props }, ref) => {
236
244
  const Comp = asChild ? Slot : "button";
237
245
  const isDisabled = disabled || loading;
@@ -284,7 +292,7 @@ var Sheet = SheetPrimitive.Root;
284
292
  var SheetTrigger = SheetPrimitive.Trigger;
285
293
  var SheetClose = SheetPrimitive.Close;
286
294
  var SheetPortal = SheetPrimitive.Portal;
287
- var SheetOverlay = React27.forwardRef(({ className, ...props }, ref) => (
295
+ var SheetOverlay = React28.forwardRef(({ className, ...props }, ref) => (
288
296
  // @ts-ignore - Radix Dialog Overlay accepts className at runtime
289
297
  /* @__PURE__ */ jsx(
290
298
  SheetPrimitive.Overlay,
@@ -315,7 +323,7 @@ var sheetVariants = cva(
315
323
  }
316
324
  }
317
325
  );
318
- var SheetContent = React27.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [
326
+ var SheetContent = React28.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [
319
327
  /* @__PURE__ */ jsx(SheetOverlay, {}),
320
328
  /* @__PURE__ */ jsxs(
321
329
  SheetPrimitive.Content,
@@ -362,7 +370,7 @@ var SheetFooter = ({
362
370
  }
363
371
  );
364
372
  SheetFooter.displayName = "SheetFooter";
365
- var SheetTitle = React27.forwardRef(({ className, ...props }, ref) => (
373
+ var SheetTitle = React28.forwardRef(({ className, ...props }, ref) => (
366
374
  // @ts-ignore - Radix Dialog Title accepts className at runtime
367
375
  /* @__PURE__ */ jsx(
368
376
  SheetPrimitive.Title,
@@ -374,7 +382,7 @@ var SheetTitle = React27.forwardRef(({ className, ...props }, ref) => (
374
382
  )
375
383
  ));
376
384
  SheetTitle.displayName = SheetPrimitive.Title.displayName;
377
- var SheetDescription = React27.forwardRef(({ className, ...props }, ref) => (
385
+ var SheetDescription = React28.forwardRef(({ className, ...props }, ref) => (
378
386
  // @ts-ignore - Radix Dialog Description accepts className at runtime
379
387
  /* @__PURE__ */ jsx(
380
388
  SheetPrimitive.Description,
@@ -474,7 +482,7 @@ var badgeVariants = cva(
474
482
  }
475
483
  }
476
484
  );
477
- var Badge = React27.forwardRef(
485
+ var Badge = React28.forwardRef(
478
486
  ({ className, variant, size, pulse, pulseColor: pulseColorProp, children, ...props }, ref) => {
479
487
  const getPulseColorClass = () => {
480
488
  const color = pulseColorProp || variant || "default";
@@ -528,7 +536,7 @@ var Badge = React27.forwardRef(
528
536
  }
529
537
  );
530
538
  Badge.displayName = "Badge";
531
- var Card = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
539
+ var Card = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
532
540
  "div",
533
541
  {
534
542
  ref,
@@ -540,7 +548,7 @@ var Card = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
540
548
  }
541
549
  ));
542
550
  Card.displayName = "Card";
543
- var CardHeader = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
551
+ var CardHeader = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
544
552
  "div",
545
553
  {
546
554
  ref,
@@ -549,7 +557,7 @@ var CardHeader = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE
549
557
  }
550
558
  ));
551
559
  CardHeader.displayName = "CardHeader";
552
- var CardTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
560
+ var CardTitle = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
553
561
  "h3",
554
562
  {
555
563
  ref,
@@ -561,7 +569,7 @@ var CardTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE_
561
569
  }
562
570
  ));
563
571
  CardTitle.displayName = "CardTitle";
564
- var CardDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
572
+ var CardDescription = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
565
573
  "p",
566
574
  {
567
575
  ref,
@@ -570,9 +578,9 @@ var CardDescription = React27.forwardRef(({ className, ...props }, ref) => /* @_
570
578
  }
571
579
  ));
572
580
  CardDescription.displayName = "CardDescription";
573
- var CardContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props }));
581
+ var CardContent = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props }));
574
582
  CardContent.displayName = "CardContent";
575
- var CardFooter = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
583
+ var CardFooter = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
576
584
  "div",
577
585
  {
578
586
  ref,
@@ -595,7 +603,7 @@ var progressVariants = cva("h-full rounded-full transition-all duration-300", {
595
603
  variant: "default"
596
604
  }
597
605
  });
598
- var Progress = React27.forwardRef(
606
+ var Progress = React28.forwardRef(
599
607
  ({ className, value, variant, showLabel, label = "Progress", size = "default", ...props }, ref) => {
600
608
  const clampedValue = Math.min(100, Math.max(0, value));
601
609
  const heightClass = {
@@ -662,7 +670,7 @@ var iconBoxVariants = cva(
662
670
  }
663
671
  }
664
672
  );
665
- var IconBox = React27.forwardRef(
673
+ var IconBox = React28.forwardRef(
666
674
  ({ className, variant, size, rounded, children, ...props }, ref) => {
667
675
  return /* @__PURE__ */ jsx(
668
676
  "div",
@@ -698,7 +706,7 @@ var tagVariants = cva(
698
706
  }
699
707
  }
700
708
  );
701
- var Tag = React27.forwardRef(
709
+ var Tag = React28.forwardRef(
702
710
  ({ className, variant, size, icon, children, ...props }, ref) => {
703
711
  return /* @__PURE__ */ jsxs(
704
712
  "span",
@@ -752,7 +760,7 @@ var valueVariants = cva("font-bold", {
752
760
  color: "default"
753
761
  }
754
762
  });
755
- var Stat = React27.forwardRef(
763
+ var Stat = React28.forwardRef(
756
764
  ({
757
765
  className,
758
766
  variant,
@@ -834,7 +842,7 @@ var iconVariants = cva("h-5 w-5", {
834
842
  color: "cyan"
835
843
  }
836
844
  });
837
- var MetricCard = React27.forwardRef(
845
+ var MetricCard = React28.forwardRef(
838
846
  ({
839
847
  className,
840
848
  variant,
@@ -867,6 +875,75 @@ var MetricCard = React27.forwardRef(
867
875
  }
868
876
  );
869
877
  MetricCard.displayName = "MetricCard";
878
+ var MetricLabel = React28.forwardRef(
879
+ ({ className, children, ...props }, ref) => {
880
+ return /* @__PURE__ */ jsx(
881
+ "p",
882
+ {
883
+ ref,
884
+ className: cn(
885
+ "text-xs text-muted-foreground uppercase tracking-wide",
886
+ className
887
+ ),
888
+ ...props,
889
+ children
890
+ }
891
+ );
892
+ }
893
+ );
894
+ MetricLabel.displayName = "MetricLabel";
895
+ var MetricValue = React28.forwardRef(
896
+ ({ className, children, size = "default", highlight = false, ...props }, ref) => {
897
+ return /* @__PURE__ */ jsx(
898
+ "p",
899
+ {
900
+ ref,
901
+ className: cn(
902
+ "font-bold mt-1",
903
+ size === "lg" && "text-3xl",
904
+ size === "default" && "text-2xl",
905
+ size === "sm" && "text-xl",
906
+ highlight && "text-[#00e5cc]",
907
+ className
908
+ ),
909
+ ...props,
910
+ children
911
+ }
912
+ );
913
+ }
914
+ );
915
+ MetricValue.displayName = "MetricValue";
916
+ var MetricSubtext = React28.forwardRef(
917
+ ({ className, children, ...props }, ref) => {
918
+ return /* @__PURE__ */ jsx(
919
+ "p",
920
+ {
921
+ ref,
922
+ className: cn(
923
+ "text-xs text-muted-foreground mt-1",
924
+ className
925
+ ),
926
+ ...props,
927
+ children
928
+ }
929
+ );
930
+ }
931
+ );
932
+ MetricSubtext.displayName = "MetricSubtext";
933
+ var Metric = React28.forwardRef(
934
+ ({ className, children, ...props }, ref) => {
935
+ return /* @__PURE__ */ jsx(
936
+ "div",
937
+ {
938
+ ref,
939
+ className: cn(className),
940
+ ...props,
941
+ children
942
+ }
943
+ );
944
+ }
945
+ );
946
+ Metric.displayName = "Metric";
870
947
  var usageBarVariants = cva("space-y-3", {
871
948
  variants: {
872
949
  size: {
@@ -893,7 +970,7 @@ var progressColorVariants = cva("", {
893
970
  color: "cyan"
894
971
  }
895
972
  });
896
- var UsageBar = React27.forwardRef(
973
+ var UsageBar = React28.forwardRef(
897
974
  ({
898
975
  className,
899
976
  size,
@@ -965,7 +1042,7 @@ var UsageBar = React27.forwardRef(
965
1042
  }
966
1043
  );
967
1044
  UsageBar.displayName = "UsageBar";
968
- var UsageChart = React27.forwardRef(
1045
+ var UsageChart = React28.forwardRef(
969
1046
  ({
970
1047
  className,
971
1048
  data,
@@ -976,8 +1053,8 @@ var UsageChart = React27.forwardRef(
976
1053
  formatValue = (v) => v.toLocaleString(),
977
1054
  ...props
978
1055
  }, ref) => {
979
- const [hoveredIndex, setHoveredIndex] = React27.useState(null);
980
- const maxValue = React27.useMemo(() => {
1056
+ const [hoveredIndex, setHoveredIndex] = React28.useState(null);
1057
+ const maxValue = React28.useMemo(() => {
981
1058
  return Math.max(
982
1059
  ...data.map((d) => d.value + (d.secondaryValue || 0)),
983
1060
  1
@@ -1104,7 +1181,7 @@ var UsageChart = React27.forwardRef(
1104
1181
  }
1105
1182
  );
1106
1183
  UsageChart.displayName = "UsageChart";
1107
- var Input = React27.forwardRef(
1184
+ var Input = React28.forwardRef(
1108
1185
  ({ className, type, error, ...props }, ref) => {
1109
1186
  return /* @__PURE__ */ jsx(
1110
1187
  "input",
@@ -1144,7 +1221,7 @@ var NODES = [
1144
1221
  ];
1145
1222
  var Primitive = NODES.reduce((primitive, node) => {
1146
1223
  const Slot2 = createSlot(`Primitive.${node}`);
1147
- const Node = React27.forwardRef((props, forwardedRef) => {
1224
+ const Node = React28.forwardRef((props, forwardedRef) => {
1148
1225
  const { asChild, ...primitiveProps } = props;
1149
1226
  const Comp = asChild ? Slot2 : node;
1150
1227
  if (typeof window !== "undefined") {
@@ -1156,7 +1233,7 @@ var Primitive = NODES.reduce((primitive, node) => {
1156
1233
  return { ...primitive, [node]: Node };
1157
1234
  }, {});
1158
1235
  var NAME = "Label";
1159
- var Label = React27.forwardRef((props, forwardedRef) => {
1236
+ var Label = React28.forwardRef((props, forwardedRef) => {
1160
1237
  return /* @__PURE__ */ jsx(
1161
1238
  Primitive.label,
1162
1239
  {
@@ -1176,7 +1253,7 @@ var Root2 = Label;
1176
1253
  var labelVariants = cva(
1177
1254
  "text-sm font-medium leading-none text-[var(--black)] peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
1178
1255
  );
1179
- var Label2 = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1256
+ var Label2 = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1180
1257
  Root2,
1181
1258
  {
1182
1259
  ref,
@@ -1185,7 +1262,7 @@ var Label2 = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
1185
1262
  }
1186
1263
  ));
1187
1264
  Label2.displayName = Root2.displayName;
1188
- var Textarea = React27.forwardRef(
1265
+ var Textarea = React28.forwardRef(
1189
1266
  ({ className, error, ...props }, ref) => {
1190
1267
  return /* @__PURE__ */ jsx(
1191
1268
  "textarea",
@@ -1203,7 +1280,7 @@ var Textarea = React27.forwardRef(
1203
1280
  }
1204
1281
  );
1205
1282
  Textarea.displayName = "Textarea";
1206
- var Select = React27.forwardRef(
1283
+ var Select = React28.forwardRef(
1207
1284
  ({ className, error, children, ...props }, ref) => {
1208
1285
  return /* @__PURE__ */ jsx(
1209
1286
  "select",
@@ -1230,7 +1307,7 @@ Select.displayName = "Select";
1230
1307
  // src/icons.ts
1231
1308
  var icons_exports = {};
1232
1309
  __reExport(icons_exports, react_star);
1233
- var Checkbox = React27.forwardRef(
1310
+ var Checkbox = React28.forwardRef(
1234
1311
  ({ className, checked, onCheckedChange, ...props }, ref) => {
1235
1312
  return /* @__PURE__ */ jsxs("label", { className: "relative inline-flex items-center cursor-pointer", children: [
1236
1313
  /* @__PURE__ */ jsx(
@@ -1261,7 +1338,7 @@ var Checkbox = React27.forwardRef(
1261
1338
  }
1262
1339
  );
1263
1340
  Checkbox.displayName = "Checkbox";
1264
- var Switch = React27.forwardRef(({ className, size = "default", ...props }, ref) => {
1341
+ var Switch = React28.forwardRef(({ className, size = "default", ...props }, ref) => {
1265
1342
  const sizeStyles = {
1266
1343
  sm: {
1267
1344
  root: "h-4 w-7",
@@ -1299,8 +1376,8 @@ var Switch = React27.forwardRef(({ className, size = "default", ...props }, ref)
1299
1376
  );
1300
1377
  });
1301
1378
  Switch.displayName = SwitchPrimitive.Root.displayName;
1302
- var LabeledSwitch = React27.forwardRef(({ label, description, labelPosition = "right", className, id, ...props }, ref) => {
1303
- const switchId = id || React27.useId();
1379
+ var LabeledSwitch = React28.forwardRef(({ label, description, labelPosition = "right", className, id, ...props }, ref) => {
1380
+ const switchId = id || React28.useId();
1304
1381
  const labelContent = /* @__PURE__ */ jsxs("div", { className: "space-y-0.5", children: [
1305
1382
  /* @__PURE__ */ jsx(
1306
1383
  "label",
@@ -1328,7 +1405,7 @@ var LabeledSwitch = React27.forwardRef(({ label, description, labelPosition = "r
1328
1405
  );
1329
1406
  });
1330
1407
  LabeledSwitch.displayName = "LabeledSwitch";
1331
- var RadioGroup = React27.forwardRef(({ className, ...props }, ref) => {
1408
+ var RadioGroup = React28.forwardRef(({ className, ...props }, ref) => {
1332
1409
  return /* @__PURE__ */ jsx(
1333
1410
  RadioGroupPrimitive.Root,
1334
1411
  {
@@ -1339,7 +1416,7 @@ var RadioGroup = React27.forwardRef(({ className, ...props }, ref) => {
1339
1416
  );
1340
1417
  });
1341
1418
  RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
1342
- var RadioGroupItem = React27.forwardRef(({ className, ...props }, ref) => {
1419
+ var RadioGroupItem = React28.forwardRef(({ className, ...props }, ref) => {
1343
1420
  return /* @__PURE__ */ jsx(
1344
1421
  RadioGroupPrimitive.Item,
1345
1422
  {
@@ -1354,8 +1431,8 @@ var RadioGroupItem = React27.forwardRef(({ className, ...props }, ref) => {
1354
1431
  );
1355
1432
  });
1356
1433
  RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
1357
- var RadioGroupOption = React27.forwardRef(({ label, description, className, id, ...props }, ref) => {
1358
- const optionId = id || React27.useId();
1434
+ var RadioGroupOption = React28.forwardRef(({ label, description, className, id, ...props }, ref) => {
1435
+ const optionId = id || React28.useId();
1359
1436
  return /* @__PURE__ */ jsxs("div", { className: cn("flex items-start gap-3", className), children: [
1360
1437
  /* @__PURE__ */ jsx(RadioGroupItem, { ref, id: optionId, ...props }),
1361
1438
  /* @__PURE__ */ jsxs("div", { className: "space-y-0.5", children: [
@@ -1372,8 +1449,8 @@ var RadioGroupOption = React27.forwardRef(({ label, description, className, id,
1372
1449
  ] });
1373
1450
  });
1374
1451
  RadioGroupOption.displayName = "RadioGroupOption";
1375
- var RadioGroupCard = React27.forwardRef(({ label, description, children, className, id, ...props }, ref) => {
1376
- const cardId = id || React27.useId();
1452
+ var RadioGroupCard = React28.forwardRef(({ label, description, children, className, id, ...props }, ref) => {
1453
+ const cardId = id || React28.useId();
1377
1454
  return /* @__PURE__ */ jsx(
1378
1455
  RadioGroupPrimitive.Item,
1379
1456
  {
@@ -1404,7 +1481,7 @@ var RadioGroupCard = React27.forwardRef(({ label, description, children, classNa
1404
1481
  });
1405
1482
  RadioGroupCard.displayName = "RadioGroupCard";
1406
1483
  var Accordion = AccordionPrimitive.Root;
1407
- var AccordionItem = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1484
+ var AccordionItem = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1408
1485
  AccordionPrimitive.Item,
1409
1486
  {
1410
1487
  ref,
@@ -1413,7 +1490,7 @@ var AccordionItem = React27.forwardRef(({ className, ...props }, ref) => /* @__P
1413
1490
  }
1414
1491
  ));
1415
1492
  AccordionItem.displayName = "AccordionItem";
1416
- var AccordionTrigger = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
1493
+ var AccordionTrigger = React28.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
1417
1494
  AccordionPrimitive.Trigger,
1418
1495
  {
1419
1496
  ref,
@@ -1429,7 +1506,7 @@ var AccordionTrigger = React27.forwardRef(({ className, children, ...props }, re
1429
1506
  }
1430
1507
  ) }));
1431
1508
  AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
1432
- var AccordionContent = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
1509
+ var AccordionContent = React28.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
1433
1510
  AccordionPrimitive.Content,
1434
1511
  {
1435
1512
  ref,
@@ -1460,7 +1537,7 @@ var NODES2 = [
1460
1537
  ];
1461
1538
  var Primitive2 = NODES2.reduce((primitive, node) => {
1462
1539
  const Slot2 = createSlot(`Primitive.${node}`);
1463
- const Node = React27.forwardRef((props, forwardedRef) => {
1540
+ const Node = React28.forwardRef((props, forwardedRef) => {
1464
1541
  const { asChild, ...primitiveProps } = props;
1465
1542
  const Comp = asChild ? Slot2 : node;
1466
1543
  if (typeof window !== "undefined") {
@@ -1474,7 +1551,7 @@ var Primitive2 = NODES2.reduce((primitive, node) => {
1474
1551
  var NAME2 = "Separator";
1475
1552
  var DEFAULT_ORIENTATION = "horizontal";
1476
1553
  var ORIENTATIONS = ["horizontal", "vertical"];
1477
- var Separator = React27.forwardRef((props, forwardedRef) => {
1554
+ var Separator = React28.forwardRef((props, forwardedRef) => {
1478
1555
  const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;
1479
1556
  const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;
1480
1557
  const ariaOrientation = orientation === "vertical" ? orientation : void 0;
@@ -1494,7 +1571,7 @@ function isValidOrientation(orientation) {
1494
1571
  return ORIENTATIONS.includes(orientation);
1495
1572
  }
1496
1573
  var Root6 = Separator;
1497
- var Separator2 = React27.forwardRef(
1574
+ var Separator2 = React28.forwardRef(
1498
1575
  ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(
1499
1576
  Root6,
1500
1577
  {
@@ -1511,7 +1588,7 @@ var Separator2 = React27.forwardRef(
1511
1588
  )
1512
1589
  );
1513
1590
  Separator2.displayName = Root6.displayName;
1514
- var NavigationMenu = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1591
+ var NavigationMenu = React28.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1515
1592
  NavigationMenuPrimitive.Root,
1516
1593
  {
1517
1594
  ref,
@@ -1527,7 +1604,7 @@ var NavigationMenu = React27.forwardRef(({ className, children, ...props }, ref)
1527
1604
  }
1528
1605
  ));
1529
1606
  NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
1530
- var NavigationMenuList = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1607
+ var NavigationMenuList = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1531
1608
  NavigationMenuPrimitive.List,
1532
1609
  {
1533
1610
  ref,
@@ -1543,7 +1620,7 @@ var NavigationMenuItem = NavigationMenuPrimitive.Item;
1543
1620
  var navigationMenuTriggerStyle = cva(
1544
1621
  "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"
1545
1622
  );
1546
- var NavigationMenuTrigger = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1623
+ var NavigationMenuTrigger = React28.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1547
1624
  NavigationMenuPrimitive.Trigger,
1548
1625
  {
1549
1626
  ref,
@@ -1563,7 +1640,7 @@ var NavigationMenuTrigger = React27.forwardRef(({ className, children, ...props
1563
1640
  }
1564
1641
  ));
1565
1642
  NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
1566
- var NavigationMenuContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1643
+ var NavigationMenuContent = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1567
1644
  NavigationMenuPrimitive.Content,
1568
1645
  {
1569
1646
  ref,
@@ -1576,7 +1653,7 @@ var NavigationMenuContent = React27.forwardRef(({ className, ...props }, ref) =>
1576
1653
  ));
1577
1654
  NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
1578
1655
  var NavigationMenuLink = NavigationMenuPrimitive.Link;
1579
- var NavigationMenuViewport = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx(
1656
+ var NavigationMenuViewport = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx(
1580
1657
  NavigationMenuPrimitive.Viewport,
1581
1658
  {
1582
1659
  className: cn(
@@ -1588,7 +1665,7 @@ var NavigationMenuViewport = React27.forwardRef(({ className, ...props }, ref) =
1588
1665
  }
1589
1666
  ) }));
1590
1667
  NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
1591
- var NavigationMenuIndicator = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1668
+ var NavigationMenuIndicator = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1592
1669
  NavigationMenuPrimitive.Indicator,
1593
1670
  {
1594
1671
  ref,
@@ -1601,7 +1678,7 @@ var NavigationMenuIndicator = React27.forwardRef(({ className, ...props }, ref)
1601
1678
  }
1602
1679
  ));
1603
1680
  NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
1604
- var Avatar = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1681
+ var Avatar = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1605
1682
  AvatarPrimitive.Root,
1606
1683
  {
1607
1684
  ref,
@@ -1613,7 +1690,7 @@ var Avatar = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
1613
1690
  }
1614
1691
  ));
1615
1692
  Avatar.displayName = AvatarPrimitive.Root.displayName;
1616
- var AvatarImage = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1693
+ var AvatarImage = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1617
1694
  AvatarPrimitive.Image,
1618
1695
  {
1619
1696
  ref,
@@ -1622,7 +1699,7 @@ var AvatarImage = React27.forwardRef(({ className, ...props }, ref) => /* @__PUR
1622
1699
  }
1623
1700
  ));
1624
1701
  AvatarImage.displayName = AvatarPrimitive.Image.displayName;
1625
- var AvatarFallback = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1702
+ var AvatarFallback = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1626
1703
  AvatarPrimitive.Fallback,
1627
1704
  {
1628
1705
  ref,
@@ -1640,7 +1717,7 @@ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
1640
1717
  var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
1641
1718
  var DropdownMenuSub = DropdownMenuPrimitive.Sub;
1642
1719
  var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
1643
- var DropdownMenuSubTrigger = React27.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1720
+ var DropdownMenuSubTrigger = React28.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1644
1721
  DropdownMenuPrimitive.SubTrigger,
1645
1722
  {
1646
1723
  ref,
@@ -1657,7 +1734,7 @@ var DropdownMenuSubTrigger = React27.forwardRef(({ className, inset, children, .
1657
1734
  }
1658
1735
  ));
1659
1736
  DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
1660
- var DropdownMenuSubContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1737
+ var DropdownMenuSubContent = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1661
1738
  DropdownMenuPrimitive.SubContent,
1662
1739
  {
1663
1740
  ref,
@@ -1669,7 +1746,7 @@ var DropdownMenuSubContent = React27.forwardRef(({ className, ...props }, ref) =
1669
1746
  }
1670
1747
  ));
1671
1748
  DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
1672
- var DropdownMenuContent = React27.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1749
+ var DropdownMenuContent = React28.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1673
1750
  DropdownMenuPrimitive.Content,
1674
1751
  {
1675
1752
  ref,
@@ -1682,7 +1759,7 @@ var DropdownMenuContent = React27.forwardRef(({ className, sideOffset = 4, ...pr
1682
1759
  }
1683
1760
  ) }));
1684
1761
  DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
1685
- var DropdownMenuItem = React27.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
1762
+ var DropdownMenuItem = React28.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
1686
1763
  DropdownMenuPrimitive.Item,
1687
1764
  {
1688
1765
  ref,
@@ -1695,7 +1772,7 @@ var DropdownMenuItem = React27.forwardRef(({ className, inset, ...props }, ref)
1695
1772
  }
1696
1773
  ));
1697
1774
  DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
1698
- var DropdownMenuCheckboxItem = React27.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
1775
+ var DropdownMenuCheckboxItem = React28.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
1699
1776
  DropdownMenuPrimitive.CheckboxItem,
1700
1777
  {
1701
1778
  ref,
@@ -1712,7 +1789,7 @@ var DropdownMenuCheckboxItem = React27.forwardRef(({ className, children, checke
1712
1789
  }
1713
1790
  ));
1714
1791
  DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
1715
- var DropdownMenuRadioItem = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1792
+ var DropdownMenuRadioItem = React28.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
1716
1793
  DropdownMenuPrimitive.RadioItem,
1717
1794
  {
1718
1795
  ref,
@@ -1728,7 +1805,7 @@ var DropdownMenuRadioItem = React27.forwardRef(({ className, children, ...props
1728
1805
  }
1729
1806
  ));
1730
1807
  DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
1731
- var DropdownMenuLabel = React27.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
1808
+ var DropdownMenuLabel = React28.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
1732
1809
  DropdownMenuPrimitive.Label,
1733
1810
  {
1734
1811
  ref,
@@ -1741,7 +1818,7 @@ var DropdownMenuLabel = React27.forwardRef(({ className, inset, ...props }, ref)
1741
1818
  }
1742
1819
  ));
1743
1820
  DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
1744
- var DropdownMenuSeparator = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1821
+ var DropdownMenuSeparator = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1745
1822
  DropdownMenuPrimitive.Separator,
1746
1823
  {
1747
1824
  ref,
@@ -1763,7 +1840,7 @@ var DropdownMenuShortcut = ({
1763
1840
  );
1764
1841
  };
1765
1842
  DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
1766
- var SidebarNavItem = React27.forwardRef(
1843
+ var SidebarNavItem = React28.forwardRef(
1767
1844
  ({ item, isActive, className, LinkComponent, ...props }, ref) => {
1768
1845
  const Icon = item.icon;
1769
1846
  const baseClassName = cn(
@@ -1803,7 +1880,7 @@ var SidebarNavItem = React27.forwardRef(
1803
1880
  }
1804
1881
  );
1805
1882
  SidebarNavItem.displayName = "SidebarNavItem";
1806
- var Sidebar = React27.forwardRef(
1883
+ var Sidebar = React28.forwardRef(
1807
1884
  ({
1808
1885
  mainNav = [],
1809
1886
  bottomNav = [],
@@ -1913,7 +1990,7 @@ var alertVariants = cva(
1913
1990
  }
1914
1991
  }
1915
1992
  );
1916
- var Alert = React27.forwardRef(
1993
+ var Alert = React28.forwardRef(
1917
1994
  ({ className, variant, icon, title, action, children, ...props }, ref) => {
1918
1995
  return /* @__PURE__ */ jsx(
1919
1996
  "div",
@@ -1936,7 +2013,7 @@ var Alert = React27.forwardRef(
1936
2013
  }
1937
2014
  );
1938
2015
  Alert.displayName = "Alert";
1939
- var EmptyState = React27.forwardRef(
2016
+ var EmptyState = React28.forwardRef(
1940
2017
  ({ className, icon, title, description, action, size = "default", ...props }, ref) => {
1941
2018
  const paddingClass = {
1942
2019
  sm: "p-8",
@@ -1964,7 +2041,70 @@ var EmptyState = React27.forwardRef(
1964
2041
  }
1965
2042
  );
1966
2043
  EmptyState.displayName = "EmptyState";
1967
- var CodeBlock = React27.forwardRef(
2044
+ var ErrorState = React28.forwardRef(
2045
+ ({
2046
+ title = "Something went wrong",
2047
+ description = "We encountered an error loading this page. Please try again.",
2048
+ showRetry = true,
2049
+ showHomeLink = true,
2050
+ retryText = "Try again",
2051
+ homeLinkText = "Go to dashboard",
2052
+ onRetry,
2053
+ onHomeClick,
2054
+ icon,
2055
+ actions,
2056
+ className,
2057
+ ...props
2058
+ }, ref) => {
2059
+ const defaultIcon = /* @__PURE__ */ jsx(
2060
+ "svg",
2061
+ {
2062
+ xmlns: "http://www.w3.org/2000/svg",
2063
+ width: "24",
2064
+ height: "24",
2065
+ fill: "currentColor",
2066
+ viewBox: "0 0 256 256",
2067
+ className: "text-red-500",
2068
+ children: /* @__PURE__ */ jsx("path", { d: "M236.8,188.09,149.35,36.22h0a24.76,24.76,0,0,0-42.7,0L19.2,188.09a23.51,23.51,0,0,0,0,23.72A24.35,24.35,0,0,0,40.55,224h174.9a24.35,24.35,0,0,0,21.33-12.19A23.51,23.51,0,0,0,236.8,188.09ZM120,104a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,88a12,12,0,1,1,12-12A12,12,0,0,1,128,192Z" })
2069
+ }
2070
+ );
2071
+ const refreshIcon = /* @__PURE__ */ jsx(
2072
+ "svg",
2073
+ {
2074
+ xmlns: "http://www.w3.org/2000/svg",
2075
+ width: "16",
2076
+ height: "16",
2077
+ fill: "currentColor",
2078
+ viewBox: "0 0 256 256",
2079
+ className: "mr-2",
2080
+ children: /* @__PURE__ */ jsx("path", { d: "M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1,0-16H211.4L184.81,71.64A80,80,0,1,0,207.6,176.16a8,8,0,1,1,13.54,8.49A96,96,0,1,1,227.59,64l.3-.31L208,44.31V56a8,8,0,0,0,8,8h16A8,8,0,0,0,240,56Z" })
2081
+ }
2082
+ );
2083
+ const hasDefaultActions = showRetry && onRetry || showHomeLink && onHomeClick;
2084
+ return /* @__PURE__ */ jsx(
2085
+ "div",
2086
+ {
2087
+ ref,
2088
+ className: cn("flex items-center justify-center min-h-[60vh]", className),
2089
+ ...props,
2090
+ children: /* @__PURE__ */ jsx(Card, { className: "max-w-md w-full", children: /* @__PURE__ */ jsxs(CardContent, { className: "p-8 text-center", children: [
2091
+ /* @__PURE__ */ jsx(IconBox, { size: "lg", className: "mx-auto mb-4 bg-red-50", children: icon || defaultIcon }),
2092
+ /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold text-[var(--black)] mb-2", children: title }),
2093
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mb-6", children: description }),
2094
+ actions ? /* @__PURE__ */ jsx("div", { className: "flex gap-3 justify-center", children: actions }) : hasDefaultActions ? /* @__PURE__ */ jsxs("div", { className: "flex gap-3 justify-center", children: [
2095
+ showRetry && onRetry && /* @__PURE__ */ jsxs(Button, { variant: "outline", onClick: onRetry, children: [
2096
+ refreshIcon,
2097
+ retryText
2098
+ ] }),
2099
+ showHomeLink && onHomeClick && /* @__PURE__ */ jsx(Button, { onClick: onHomeClick, children: homeLinkText })
2100
+ ] }) : null
2101
+ ] }) })
2102
+ }
2103
+ );
2104
+ }
2105
+ );
2106
+ ErrorState.displayName = "ErrorState";
2107
+ var CodeBlock = React28.forwardRef(
1968
2108
  ({ className, children, language, ...props }, ref) => {
1969
2109
  return /* @__PURE__ */ jsx(
1970
2110
  "pre",
@@ -1982,15 +2122,15 @@ var CodeBlock = React27.forwardRef(
1982
2122
  }
1983
2123
  );
1984
2124
  CodeBlock.displayName = "CodeBlock";
1985
- var FormField = React27.forwardRef(
2125
+ var FormField = React28.forwardRef(
1986
2126
  ({ label, error, helperText, hint, required, id, className, children, ...props }, ref) => {
1987
- const fieldId = id || React27.useId();
2127
+ const fieldId = id || React28.useId();
1988
2128
  const errorId = `${fieldId}-error`;
1989
2129
  const helperId = `${fieldId}-helper`;
1990
- const enhancedChildren = React27.Children.map(children, (child) => {
1991
- if (React27.isValidElement(child)) {
2130
+ const enhancedChildren = React28.Children.map(children, (child) => {
2131
+ if (React28.isValidElement(child)) {
1992
2132
  const childProps = child.props;
1993
- return React27.cloneElement(child, {
2133
+ return React28.cloneElement(child, {
1994
2134
  id: fieldId,
1995
2135
  "aria-invalid": error ? "true" : void 0,
1996
2136
  "aria-describedby": error ? errorId : helperText ? helperId : void 0,
@@ -2014,7 +2154,7 @@ var FormField = React27.forwardRef(
2014
2154
  }
2015
2155
  );
2016
2156
  FormField.displayName = "FormField";
2017
- var Table = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsx(
2157
+ var Table = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsx(
2018
2158
  "table",
2019
2159
  {
2020
2160
  ref,
@@ -2023,11 +2163,11 @@ var Table = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
2023
2163
  }
2024
2164
  ) }));
2025
2165
  Table.displayName = "Table";
2026
- var TableHeader = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("", className), ...props }));
2166
+ var TableHeader = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("", className), ...props }));
2027
2167
  TableHeader.displayName = "TableHeader";
2028
- var TableBody = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("tbody", { ref, className: cn("", className), ...props }));
2168
+ var TableBody = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("tbody", { ref, className: cn("", className), ...props }));
2029
2169
  TableBody.displayName = "TableBody";
2030
- var TableFooter = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2170
+ var TableFooter = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2031
2171
  "tfoot",
2032
2172
  {
2033
2173
  ref,
@@ -2036,7 +2176,7 @@ var TableFooter = React27.forwardRef(({ className, ...props }, ref) => /* @__PUR
2036
2176
  }
2037
2177
  ));
2038
2178
  TableFooter.displayName = "TableFooter";
2039
- var TableRow = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2179
+ var TableRow = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2040
2180
  "tr",
2041
2181
  {
2042
2182
  ref,
@@ -2045,7 +2185,7 @@ var TableRow = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__
2045
2185
  }
2046
2186
  ));
2047
2187
  TableRow.displayName = "TableRow";
2048
- var TableHead = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2188
+ var TableHead = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2049
2189
  "th",
2050
2190
  {
2051
2191
  ref,
@@ -2057,7 +2197,7 @@ var TableHead = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE_
2057
2197
  }
2058
2198
  ));
2059
2199
  TableHead.displayName = "TableHead";
2060
- var TableCell = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2200
+ var TableCell = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2061
2201
  "td",
2062
2202
  {
2063
2203
  ref,
@@ -2066,7 +2206,7 @@ var TableCell = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE_
2066
2206
  }
2067
2207
  ));
2068
2208
  TableCell.displayName = "TableCell";
2069
- var TableCaption = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2209
+ var TableCaption = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2070
2210
  "caption",
2071
2211
  {
2072
2212
  ref,
@@ -2075,7 +2215,7 @@ var TableCaption = React27.forwardRef(({ className, ...props }, ref) => /* @__PU
2075
2215
  }
2076
2216
  ));
2077
2217
  TableCaption.displayName = "TableCaption";
2078
- var Divider = React27.forwardRef(
2218
+ var Divider = React28.forwardRef(
2079
2219
  ({ className, text, orientation = "horizontal", ...props }, ref) => {
2080
2220
  if (orientation === "vertical") {
2081
2221
  return /* @__PURE__ */ jsx(
@@ -2114,7 +2254,7 @@ var Divider = React27.forwardRef(
2114
2254
  );
2115
2255
  Divider.displayName = "Divider";
2116
2256
  var Tabs = TabsPrimitive.Root;
2117
- var TabsList = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2257
+ var TabsList = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2118
2258
  TabsPrimitive.List,
2119
2259
  {
2120
2260
  ref,
@@ -2126,7 +2266,7 @@ var TabsList = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__
2126
2266
  }
2127
2267
  ));
2128
2268
  TabsList.displayName = TabsPrimitive.List.displayName;
2129
- var TabsTrigger = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2269
+ var TabsTrigger = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2130
2270
  TabsPrimitive.Trigger,
2131
2271
  {
2132
2272
  ref,
@@ -2138,7 +2278,7 @@ var TabsTrigger = React27.forwardRef(({ className, ...props }, ref) => /* @__PUR
2138
2278
  }
2139
2279
  ));
2140
2280
  TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
2141
- var TabsContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2281
+ var TabsContent = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2142
2282
  TabsPrimitive.Content,
2143
2283
  {
2144
2284
  ref,
@@ -2150,7 +2290,7 @@ var TabsContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PUR
2150
2290
  }
2151
2291
  ));
2152
2292
  TabsContent.displayName = TabsPrimitive.Content.displayName;
2153
- var TabsListUnderline = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2293
+ var TabsListUnderline = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2154
2294
  TabsPrimitive.List,
2155
2295
  {
2156
2296
  ref,
@@ -2162,12 +2302,14 @@ var TabsListUnderline = React27.forwardRef(({ className, ...props }, ref) => /*
2162
2302
  }
2163
2303
  ));
2164
2304
  TabsListUnderline.displayName = "TabsListUnderline";
2165
- var TabsTriggerUnderline = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2305
+ var TabsTriggerUnderline = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2166
2306
  TabsPrimitive.Trigger,
2167
2307
  {
2168
2308
  ref,
2169
2309
  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",
2310
+ "inline-flex items-center justify-center whitespace-nowrap px-4 py-2.5 text-sm font-medium text-muted-foreground transition-all hover:text-foreground border-b-2 border-transparent -mb-px",
2311
+ "data-[state=active]:text-[var(--cyan)] data-[state=active]:border-[var(--cyan)] data-[state=active]:font-semibold",
2312
+ "disabled:pointer-events-none disabled:opacity-50",
2171
2313
  className
2172
2314
  ),
2173
2315
  ...props
@@ -2178,7 +2320,7 @@ var Dialog = SheetPrimitive.Root;
2178
2320
  var DialogTrigger = SheetPrimitive.Trigger;
2179
2321
  var DialogPortal = SheetPrimitive.Portal;
2180
2322
  var DialogClose = SheetPrimitive.Close;
2181
- var DialogOverlay = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2323
+ var DialogOverlay = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2182
2324
  SheetPrimitive.Overlay,
2183
2325
  {
2184
2326
  ref,
@@ -2190,7 +2332,7 @@ var DialogOverlay = React27.forwardRef(({ className, ...props }, ref) => /* @__P
2190
2332
  }
2191
2333
  ));
2192
2334
  DialogOverlay.displayName = SheetPrimitive.Overlay.displayName;
2193
- var DialogContent = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
2335
+ var DialogContent = React28.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
2194
2336
  /* @__PURE__ */ jsx(DialogOverlay, {}),
2195
2337
  /* @__PURE__ */ jsxs(
2196
2338
  SheetPrimitive.Content,
@@ -2240,7 +2382,7 @@ var DialogFooter = ({
2240
2382
  }
2241
2383
  );
2242
2384
  DialogFooter.displayName = "DialogFooter";
2243
- var DialogTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2385
+ var DialogTitle = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2244
2386
  SheetPrimitive.Title,
2245
2387
  {
2246
2388
  ref,
@@ -2252,7 +2394,7 @@ var DialogTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PUR
2252
2394
  }
2253
2395
  ));
2254
2396
  DialogTitle.displayName = SheetPrimitive.Title.displayName;
2255
- var DialogDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2397
+ var DialogDescription = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2256
2398
  SheetPrimitive.Description,
2257
2399
  {
2258
2400
  ref,
@@ -2264,7 +2406,7 @@ DialogDescription.displayName = SheetPrimitive.Description.displayName;
2264
2406
  var AlertDialog = AlertDialogPrimitive.Root;
2265
2407
  var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
2266
2408
  var AlertDialogPortal = AlertDialogPrimitive.Portal;
2267
- var AlertDialogOverlay = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2409
+ var AlertDialogOverlay = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2268
2410
  AlertDialogPrimitive.Overlay,
2269
2411
  {
2270
2412
  className: cn(
@@ -2276,7 +2418,7 @@ var AlertDialogOverlay = React27.forwardRef(({ className, ...props }, ref) => /*
2276
2418
  }
2277
2419
  ));
2278
2420
  AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
2279
- var AlertDialogContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
2421
+ var AlertDialogContent = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
2280
2422
  /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
2281
2423
  /* @__PURE__ */ jsx(
2282
2424
  AlertDialogPrimitive.Content,
@@ -2319,7 +2461,7 @@ var AlertDialogFooter = ({
2319
2461
  }
2320
2462
  );
2321
2463
  AlertDialogFooter.displayName = "AlertDialogFooter";
2322
- var AlertDialogTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2464
+ var AlertDialogTitle = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2323
2465
  AlertDialogPrimitive.Title,
2324
2466
  {
2325
2467
  ref,
@@ -2328,7 +2470,7 @@ var AlertDialogTitle = React27.forwardRef(({ className, ...props }, ref) => /* @
2328
2470
  }
2329
2471
  ));
2330
2472
  AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
2331
- var AlertDialogDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2473
+ var AlertDialogDescription = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2332
2474
  AlertDialogPrimitive.Description,
2333
2475
  {
2334
2476
  ref,
@@ -2337,7 +2479,7 @@ var AlertDialogDescription = React27.forwardRef(({ className, ...props }, ref) =
2337
2479
  }
2338
2480
  ));
2339
2481
  AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
2340
- var AlertDialogAction = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2482
+ var AlertDialogAction = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2341
2483
  AlertDialogPrimitive.Action,
2342
2484
  {
2343
2485
  ref,
@@ -2346,7 +2488,7 @@ var AlertDialogAction = React27.forwardRef(({ className, ...props }, ref) => /*
2346
2488
  }
2347
2489
  ));
2348
2490
  AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
2349
- var AlertDialogCancel = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2491
+ var AlertDialogCancel = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2350
2492
  AlertDialogPrimitive.Cancel,
2351
2493
  {
2352
2494
  ref,
@@ -2407,7 +2549,7 @@ var Popover = PopoverPrimitive.Root;
2407
2549
  var PopoverTrigger = PopoverPrimitive.Trigger;
2408
2550
  var PopoverAnchor = PopoverPrimitive.Anchor;
2409
2551
  var PopoverClose = PopoverPrimitive.Close;
2410
- var PopoverContent = React27.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
2552
+ var PopoverContent = React28.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
2411
2553
  PopoverPrimitive.Content,
2412
2554
  {
2413
2555
  ref,
@@ -2421,7 +2563,7 @@ var PopoverContent = React27.forwardRef(({ className, align = "center", sideOffs
2421
2563
  }
2422
2564
  ) }));
2423
2565
  PopoverContent.displayName = PopoverPrimitive.Content.displayName;
2424
- var PopoverArrow = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2566
+ var PopoverArrow = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2425
2567
  PopoverPrimitive.Arrow,
2426
2568
  {
2427
2569
  ref,
@@ -2433,7 +2575,7 @@ PopoverArrow.displayName = PopoverPrimitive.Arrow.displayName;
2433
2575
  var TooltipProvider = TooltipPrimitive.Provider;
2434
2576
  var Tooltip = TooltipPrimitive.Root;
2435
2577
  var TooltipTrigger = TooltipPrimitive.Trigger;
2436
- var TooltipContent = React27.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
2578
+ var TooltipContent = React28.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
2437
2579
  TooltipPrimitive.Content,
2438
2580
  {
2439
2581
  ref,
@@ -2446,7 +2588,7 @@ var TooltipContent = React27.forwardRef(({ className, sideOffset = 4, ...props }
2446
2588
  }
2447
2589
  ) }));
2448
2590
  TooltipContent.displayName = TooltipPrimitive.Content.displayName;
2449
- var TooltipArrow = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2591
+ var TooltipArrow = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2450
2592
  TooltipPrimitive.Arrow,
2451
2593
  {
2452
2594
  ref,
@@ -2468,7 +2610,7 @@ function SimpleTooltip({
2468
2610
  ] }) });
2469
2611
  }
2470
2612
  var ToastProvider = ToastPrimitives.Provider;
2471
- var ToastViewport = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2613
+ var ToastViewport = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2472
2614
  ToastPrimitives.Viewport,
2473
2615
  {
2474
2616
  ref,
@@ -2497,7 +2639,7 @@ var toastVariants = cva(
2497
2639
  }
2498
2640
  }
2499
2641
  );
2500
- var Toast = React27.forwardRef(({ className, variant, ...props }, ref) => {
2642
+ var Toast = React28.forwardRef(({ className, variant, ...props }, ref) => {
2501
2643
  return /* @__PURE__ */ jsx(
2502
2644
  ToastPrimitives.Root,
2503
2645
  {
@@ -2508,7 +2650,7 @@ var Toast = React27.forwardRef(({ className, variant, ...props }, ref) => {
2508
2650
  );
2509
2651
  });
2510
2652
  Toast.displayName = ToastPrimitives.Root.displayName;
2511
- var ToastAction = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2653
+ var ToastAction = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2512
2654
  ToastPrimitives.Action,
2513
2655
  {
2514
2656
  ref,
@@ -2520,7 +2662,7 @@ var ToastAction = React27.forwardRef(({ className, ...props }, ref) => /* @__PUR
2520
2662
  }
2521
2663
  ));
2522
2664
  ToastAction.displayName = ToastPrimitives.Action.displayName;
2523
- var ToastClose = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2665
+ var ToastClose = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2524
2666
  ToastPrimitives.Close,
2525
2667
  {
2526
2668
  ref,
@@ -2534,7 +2676,7 @@ var ToastClose = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE
2534
2676
  }
2535
2677
  ));
2536
2678
  ToastClose.displayName = ToastPrimitives.Close.displayName;
2537
- var ToastTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2679
+ var ToastTitle = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2538
2680
  ToastPrimitives.Title,
2539
2681
  {
2540
2682
  ref,
@@ -2543,7 +2685,7 @@ var ToastTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE
2543
2685
  }
2544
2686
  ));
2545
2687
  ToastTitle.displayName = ToastPrimitives.Title.displayName;
2546
- var ToastDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2688
+ var ToastDescription = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
2547
2689
  ToastPrimitives.Description,
2548
2690
  {
2549
2691
  ref,
@@ -2682,8 +2824,8 @@ function toast({ ...props }) {
2682
2824
  };
2683
2825
  }
2684
2826
  function useToast() {
2685
- const [state, setState] = React27.useState(memoryState);
2686
- React27.useEffect(() => {
2827
+ const [state, setState] = React28.useState(memoryState);
2828
+ React28.useEffect(() => {
2687
2829
  listeners.push(setState);
2688
2830
  return () => {
2689
2831
  const index = listeners.indexOf(setState);
@@ -2718,7 +2860,7 @@ function Toaster() {
2718
2860
  /* @__PURE__ */ jsx(ToastViewport, {})
2719
2861
  ] });
2720
2862
  }
2721
- var Skeleton = React27.forwardRef(
2863
+ var Skeleton = React28.forwardRef(
2722
2864
  ({ className, variant = "default", width, height, animate = true, style, ...props }, ref) => {
2723
2865
  const variantStyles = {
2724
2866
  default: "rounded-sm",
@@ -2746,7 +2888,7 @@ var Skeleton = React27.forwardRef(
2746
2888
  }
2747
2889
  );
2748
2890
  Skeleton.displayName = "Skeleton";
2749
- var SkeletonText = React27.forwardRef(
2891
+ var SkeletonText = React28.forwardRef(
2750
2892
  ({ lines = 3, gap = 8, className, ...props }, ref) => {
2751
2893
  return /* @__PURE__ */ jsx("div", { ref, className: cn("space-y-2", className), style: { gap }, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsx(
2752
2894
  Skeleton,
@@ -2760,7 +2902,7 @@ var SkeletonText = React27.forwardRef(
2760
2902
  }
2761
2903
  );
2762
2904
  SkeletonText.displayName = "SkeletonText";
2763
- var SkeletonCard = React27.forwardRef(
2905
+ var SkeletonCard = React28.forwardRef(
2764
2906
  ({ hasHeader = true, hasAvatar = false, className, ...props }, ref) => {
2765
2907
  return /* @__PURE__ */ jsxs(
2766
2908
  "div",
@@ -2812,7 +2954,7 @@ function generatePagination(currentPage, totalPages, siblingCount) {
2812
2954
  );
2813
2955
  return [1, "ellipsis", ...middleRange, "ellipsis", totalPages];
2814
2956
  }
2815
- var Pagination = React27.forwardRef(
2957
+ var Pagination = React28.forwardRef(
2816
2958
  ({
2817
2959
  currentPage,
2818
2960
  totalPages,
@@ -2889,7 +3031,7 @@ var Pagination = React27.forwardRef(
2889
3031
  }
2890
3032
  );
2891
3033
  Pagination.displayName = "Pagination";
2892
- var SimplePagination = React27.forwardRef(
3034
+ var SimplePagination = React28.forwardRef(
2893
3035
  ({
2894
3036
  currentPage,
2895
3037
  totalPages,
@@ -2951,7 +3093,7 @@ var SimplePagination = React27.forwardRef(
2951
3093
  }
2952
3094
  );
2953
3095
  SimplePagination.displayName = "SimplePagination";
2954
- var StepProgress = React27.forwardRef(
3096
+ var StepProgress = React28.forwardRef(
2955
3097
  ({
2956
3098
  steps,
2957
3099
  currentStep,
@@ -3071,7 +3213,7 @@ var StepProgress = React27.forwardRef(
3071
3213
  }
3072
3214
  );
3073
3215
  StepProgress.displayName = "StepProgress";
3074
- var StepDots = React27.forwardRef(
3216
+ var StepDots = React28.forwardRef(
3075
3217
  ({ totalSteps, currentStep, onStepClick, className }, ref) => {
3076
3218
  return /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center gap-2", className), children: Array.from({ length: totalSteps }, (_, i) => i + 1).map((step) => {
3077
3219
  const isCompleted = step < currentStep;
@@ -3097,7 +3239,7 @@ var StepDots = React27.forwardRef(
3097
3239
  }
3098
3240
  );
3099
3241
  StepDots.displayName = "StepDots";
3100
- var Breadcrumbs = React27.forwardRef(
3242
+ var Breadcrumbs = React28.forwardRef(
3101
3243
  ({
3102
3244
  items,
3103
3245
  LinkComponent,
@@ -3179,7 +3321,7 @@ var Breadcrumbs = React27.forwardRef(
3179
3321
  }
3180
3322
  );
3181
3323
  Breadcrumbs.displayName = "Breadcrumbs";
3182
- var BreadcrumbLink = React27.forwardRef(
3324
+ var BreadcrumbLink = React28.forwardRef(
3183
3325
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
3184
3326
  "a",
3185
3327
  {
@@ -3204,7 +3346,7 @@ var presetLabels = {
3204
3346
  "this-year": "This year",
3205
3347
  "custom": "Custom"
3206
3348
  };
3207
- var DateRangePicker = React27.forwardRef(
3349
+ var DateRangePicker = React28.forwardRef(
3208
3350
  ({
3209
3351
  value,
3210
3352
  onChange,
@@ -3263,7 +3405,7 @@ var DateRangePicker = React27.forwardRef(
3263
3405
  }
3264
3406
  );
3265
3407
  DateRangePicker.displayName = "DateRangePicker";
3266
- var DateRangeSelect = React27.forwardRef(
3408
+ var DateRangeSelect = React28.forwardRef(
3267
3409
  ({ value, onChange, presets = ["7d", "30d", "90d"], className }, ref) => {
3268
3410
  return /* @__PURE__ */ jsx(
3269
3411
  "select",
@@ -3315,7 +3457,294 @@ function getDateRangeFromPreset(preset) {
3315
3457
  }
3316
3458
  return { start, end };
3317
3459
  }
3318
- var SettingsNav = React27.forwardRef(
3460
+ function getFileIcon(type) {
3461
+ if (type.startsWith("video/") || type === "screen_recording") return FileVideo;
3462
+ if (type.startsWith("image/") || type === "image") return FileImage;
3463
+ if (type === "application/pdf" || type === "pdf") return FilePdf;
3464
+ if (type.includes("document") || type === "document") return FileDoc;
3465
+ return File;
3466
+ }
3467
+ function getTypeLabel(type) {
3468
+ if (type.startsWith("video/") || type === "screen_recording") return "Video";
3469
+ if (type.startsWith("audio/")) return "Audio";
3470
+ if (type.startsWith("image/") || type === "image") return "Image";
3471
+ if (type === "application/pdf" || type === "pdf") return "PDF";
3472
+ if (type.includes("document") || type === "document") return "Document";
3473
+ return "File";
3474
+ }
3475
+ function formatSize(size) {
3476
+ if (size < 1024) return `${size} B`;
3477
+ if (size < 1024 * 1024) return `${Math.round(size / 1024)} KB`;
3478
+ return `${(size / (1024 * 1024)).toFixed(1)} MB`;
3479
+ }
3480
+ function canPreview(file) {
3481
+ const ext = file.filename.toLowerCase().split(".").pop() || "";
3482
+ if (["jpg", "jpeg", "png", "gif", "webp", "svg"].includes(ext)) return true;
3483
+ if (["mp4", "webm", "mov", "avi", "mkv"].includes(ext)) return true;
3484
+ if (ext === "pdf") return true;
3485
+ if (file.type.startsWith("image/") || file.type === "image") return true;
3486
+ if (file.type.startsWith("video/") || file.type === "screen_recording") return true;
3487
+ if (file.type === "application/pdf" || file.type === "pdf") return true;
3488
+ return false;
3489
+ }
3490
+ function getPreviewType(file) {
3491
+ const ext = file.filename.toLowerCase().split(".").pop() || "";
3492
+ if (["jpg", "jpeg", "png", "gif", "webp", "svg"].includes(ext) || file.type.startsWith("image/") || file.type === "image") return "image";
3493
+ if (["mp4", "webm", "mov", "avi", "mkv"].includes(ext) || file.type.startsWith("video/") || file.type === "screen_recording") return "video";
3494
+ if (ext === "pdf" || file.type === "application/pdf" || file.type === "pdf") return "pdf";
3495
+ return "none";
3496
+ }
3497
+ function FilePreview({
3498
+ files,
3499
+ title = "Uploaded Files",
3500
+ getSignedUrl,
3501
+ showCard = true,
3502
+ emptyMessage = "No files uploaded"
3503
+ }) {
3504
+ const [previewFile, setPreviewFile] = useState(null);
3505
+ const [videoError, setVideoError] = useState(false);
3506
+ const [signedUrl, setSignedUrl] = useState(null);
3507
+ const [loadingUrl, setLoadingUrl] = useState(false);
3508
+ const [urlError, setUrlError] = useState(null);
3509
+ const videoRef = useRef(null);
3510
+ const handleOpenPreview = async (file) => {
3511
+ setVideoError(false);
3512
+ setPreviewFile(file);
3513
+ setUrlError(null);
3514
+ if (file.url) {
3515
+ setSignedUrl(file.url);
3516
+ } else if (getSignedUrl) {
3517
+ setLoadingUrl(true);
3518
+ try {
3519
+ const url = await getSignedUrl(file.path);
3520
+ if (url) {
3521
+ setSignedUrl(url);
3522
+ } else {
3523
+ setUrlError("Failed to load file URL");
3524
+ }
3525
+ } catch (error) {
3526
+ setUrlError(error instanceof Error ? error.message : "Failed to load file");
3527
+ } finally {
3528
+ setLoadingUrl(false);
3529
+ }
3530
+ } else {
3531
+ setUrlError("No URL available for this file");
3532
+ }
3533
+ };
3534
+ const handleClosePreview = () => {
3535
+ setPreviewFile(null);
3536
+ setSignedUrl(null);
3537
+ setUrlError(null);
3538
+ setLoadingUrl(false);
3539
+ setVideoError(false);
3540
+ };
3541
+ const handleDownload = async (e, file) => {
3542
+ e.stopPropagation();
3543
+ let url = file.url;
3544
+ if (!url && getSignedUrl) {
3545
+ url = await getSignedUrl(file.path) || void 0;
3546
+ }
3547
+ if (url) {
3548
+ window.open(url, "_blank");
3549
+ }
3550
+ };
3551
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
3552
+ files.length > 0 ? /* @__PURE__ */ jsx("div", { className: "space-y-2", children: files.map((file, i) => {
3553
+ const FileIcon = getFileIcon(file.type);
3554
+ const typeLabel = getTypeLabel(file.type);
3555
+ const sizeLabel = formatSize(file.size);
3556
+ const isPreviewable = canPreview(file);
3557
+ const previewType = getPreviewType(file);
3558
+ return /* @__PURE__ */ jsxs(
3559
+ "div",
3560
+ {
3561
+ className: `flex items-center justify-between p-3 rounded-md bg-gray-50 transition-colors ${isPreviewable ? "hover:bg-gray-100 cursor-pointer" : ""}`,
3562
+ onClick: () => isPreviewable && handleOpenPreview(file),
3563
+ children: [
3564
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 min-w-0", children: [
3565
+ /* @__PURE__ */ jsxs("div", { className: "relative shrink-0", children: [
3566
+ /* @__PURE__ */ jsx("div", { className: "w-10 h-10 rounded-sm bg-white border border-gray-200 flex items-center justify-center", children: /* @__PURE__ */ jsx(FileIcon, { className: "w-5 h-5 text-[var(--cyan)]", weight: "fill" }) }),
3567
+ previewType === "video" && /* @__PURE__ */ jsx(Play, { className: "absolute -bottom-0.5 -right-0.5 w-3.5 h-3.5 text-[var(--cyan)] bg-white rounded-full", weight: "fill" })
3568
+ ] }),
3569
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
3570
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-[var(--black)] truncate", children: file.filename }),
3571
+ /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
3572
+ typeLabel,
3573
+ " \xB7 ",
3574
+ sizeLabel,
3575
+ isPreviewable && /* @__PURE__ */ jsx("span", { className: "text-[var(--cyan)] ml-1", children: "\xB7 Click to preview" })
3576
+ ] })
3577
+ ] })
3578
+ ] }),
3579
+ /* @__PURE__ */ jsx(
3580
+ "button",
3581
+ {
3582
+ onClick: (e) => handleDownload(e, file),
3583
+ className: "p-2 rounded-sm hover:bg-gray-200 transition-colors shrink-0",
3584
+ title: "Download",
3585
+ children: /* @__PURE__ */ jsx(Download, { className: "w-4 h-4 text-muted-foreground" })
3586
+ }
3587
+ )
3588
+ ]
3589
+ },
3590
+ i
3591
+ );
3592
+ }) }) : /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-32 border border-dashed border-gray-200 rounded-md", children: /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
3593
+ /* @__PURE__ */ jsx(Folder, { size: 24, className: "text-gray-300 mx-auto mb-2" }),
3594
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: emptyMessage })
3595
+ ] }) }),
3596
+ previewFile && /* @__PURE__ */ jsx(
3597
+ "div",
3598
+ {
3599
+ className: "fixed inset-0 z-50 bg-black/80 flex items-center justify-center p-4",
3600
+ onClick: handleClosePreview,
3601
+ children: /* @__PURE__ */ jsxs(
3602
+ "div",
3603
+ {
3604
+ className: "bg-white rounded-lg max-w-5xl w-full max-h-[90vh] flex flex-col overflow-hidden shadow-2xl",
3605
+ onClick: (e) => e.stopPropagation(),
3606
+ children: [
3607
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: [
3608
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 min-w-0", children: [
3609
+ (() => {
3610
+ const FileIcon = getFileIcon(previewFile.type);
3611
+ return /* @__PURE__ */ jsx(FileIcon, { className: "w-5 h-5 text-[var(--cyan)] flex-shrink-0", weight: "fill" });
3612
+ })(),
3613
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
3614
+ /* @__PURE__ */ jsx("p", { className: "font-medium text-[var(--black)] truncate", children: previewFile.filename }),
3615
+ /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
3616
+ getTypeLabel(previewFile.type),
3617
+ " \xB7 ",
3618
+ formatSize(previewFile.size)
3619
+ ] })
3620
+ ] })
3621
+ ] }),
3622
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
3623
+ signedUrl && /* @__PURE__ */ jsxs(Fragment, { children: [
3624
+ /* @__PURE__ */ jsx(
3625
+ "a",
3626
+ {
3627
+ href: signedUrl,
3628
+ target: "_blank",
3629
+ rel: "noopener noreferrer",
3630
+ className: "p-2 rounded-md hover:bg-gray-100 transition-colors",
3631
+ title: "Open in new tab",
3632
+ children: /* @__PURE__ */ jsx(ArrowSquareOut, { className: "w-5 h-5 text-muted-foreground" })
3633
+ }
3634
+ ),
3635
+ /* @__PURE__ */ jsx(
3636
+ "a",
3637
+ {
3638
+ href: signedUrl,
3639
+ download: previewFile.filename,
3640
+ className: "p-2 rounded-md hover:bg-gray-100 transition-colors",
3641
+ title: "Download",
3642
+ children: /* @__PURE__ */ jsx(Download, { className: "w-5 h-5 text-muted-foreground" })
3643
+ }
3644
+ )
3645
+ ] }),
3646
+ /* @__PURE__ */ jsx(
3647
+ "button",
3648
+ {
3649
+ onClick: handleClosePreview,
3650
+ className: "p-2 rounded-md hover:bg-gray-100 transition-colors ml-2",
3651
+ children: /* @__PURE__ */ jsx(X, { className: "w-5 h-5" })
3652
+ }
3653
+ )
3654
+ ] })
3655
+ ] }),
3656
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-auto p-4 bg-gray-900 flex items-center justify-center min-h-[400px]", children: [
3657
+ loadingUrl && /* @__PURE__ */ jsxs("div", { className: "text-center text-white", children: [
3658
+ /* @__PURE__ */ jsx(CircleNotch, { className: "w-8 h-8 mx-auto mb-2 animate-spin text-[var(--cyan)]" }),
3659
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-gray-400", children: "Loading file..." })
3660
+ ] }),
3661
+ urlError && /* @__PURE__ */ jsxs("div", { className: "text-center text-white max-w-md", children: [
3662
+ /* @__PURE__ */ jsx(File, { className: "w-16 h-16 mx-auto mb-4 text-gray-500" }),
3663
+ /* @__PURE__ */ jsx("p", { className: "text-lg font-medium mb-2", children: "Failed to Load File" }),
3664
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-gray-400", children: urlError })
3665
+ ] }),
3666
+ signedUrl && !loadingUrl && !urlError && /* @__PURE__ */ jsxs(Fragment, { children: [
3667
+ getPreviewType(previewFile) === "image" && /* @__PURE__ */ jsx(
3668
+ "img",
3669
+ {
3670
+ src: signedUrl,
3671
+ alt: previewFile.filename,
3672
+ className: "max-w-full max-h-[70vh] object-contain rounded-md"
3673
+ }
3674
+ ),
3675
+ getPreviewType(previewFile) === "video" && !videoError && /* @__PURE__ */ jsx(
3676
+ "video",
3677
+ {
3678
+ ref: videoRef,
3679
+ src: signedUrl,
3680
+ controls: true,
3681
+ autoPlay: true,
3682
+ className: "w-full max-h-[70vh] rounded-md bg-black",
3683
+ onError: () => setVideoError(true),
3684
+ children: "Your browser does not support the video tag."
3685
+ }
3686
+ ),
3687
+ getPreviewType(previewFile) === "video" && videoError && /* @__PURE__ */ jsxs("div", { className: "text-center text-white max-w-md", children: [
3688
+ /* @__PURE__ */ jsx(FileVideo, { className: "w-16 h-16 mx-auto mb-4 text-gray-500" }),
3689
+ /* @__PURE__ */ jsx("p", { className: "text-lg font-medium mb-2", children: "Video Preview Not Available" }),
3690
+ /* @__PURE__ */ jsxs("p", { className: "text-sm text-gray-400 mb-6", children: [
3691
+ "This video format (.",
3692
+ previewFile.filename.split(".").pop(),
3693
+ ") cannot be played directly in the browser."
3694
+ ] }),
3695
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-3 justify-center", children: [
3696
+ /* @__PURE__ */ jsxs(
3697
+ "a",
3698
+ {
3699
+ href: signedUrl,
3700
+ target: "_blank",
3701
+ rel: "noopener noreferrer",
3702
+ className: "inline-flex items-center gap-2 px-4 py-2 bg-white text-gray-900 rounded-full text-sm font-medium hover:bg-gray-100 transition-colors",
3703
+ children: [
3704
+ /* @__PURE__ */ jsx(ArrowSquareOut, { className: "w-4 h-4" }),
3705
+ "Open in New Tab"
3706
+ ]
3707
+ }
3708
+ ),
3709
+ /* @__PURE__ */ jsxs(
3710
+ "a",
3711
+ {
3712
+ href: signedUrl,
3713
+ download: previewFile.filename,
3714
+ className: "inline-flex items-center gap-2 px-4 py-2 bg-[var(--cyan)] text-gray-900 rounded-full text-sm font-medium hover:bg-[var(--cyan)]/90 transition-colors",
3715
+ children: [
3716
+ /* @__PURE__ */ jsx(Download, { className: "w-4 h-4" }),
3717
+ "Download"
3718
+ ]
3719
+ }
3720
+ )
3721
+ ] })
3722
+ ] }),
3723
+ getPreviewType(previewFile) === "pdf" && /* @__PURE__ */ jsx(
3724
+ "iframe",
3725
+ {
3726
+ src: signedUrl,
3727
+ className: "w-full h-[70vh] rounded-md border-0 bg-white",
3728
+ title: previewFile.filename
3729
+ }
3730
+ )
3731
+ ] })
3732
+ ] })
3733
+ ]
3734
+ }
3735
+ )
3736
+ }
3737
+ )
3738
+ ] });
3739
+ if (!showCard) {
3740
+ return content;
3741
+ }
3742
+ return /* @__PURE__ */ jsxs(Card, { children: [
3743
+ /* @__PURE__ */ jsx(CardHeader, { className: "pb-3", children: /* @__PURE__ */ jsx(CardTitle, { className: "text-base", children: title }) }),
3744
+ /* @__PURE__ */ jsx(CardContent, { children: content })
3745
+ ] });
3746
+ }
3747
+ var SettingsNav = React28.forwardRef(
3319
3748
  ({ groups, LinkComponent, className, ...props }, ref) => {
3320
3749
  const Link2 = LinkComponent || "a";
3321
3750
  return /* @__PURE__ */ jsx("div", { ref, className: cn("space-y-8", className), ...props, children: groups.map((group) => /* @__PURE__ */ jsxs("div", { children: [
@@ -3346,7 +3775,7 @@ var SettingsNav = React27.forwardRef(
3346
3775
  }
3347
3776
  );
3348
3777
  SettingsNav.displayName = "SettingsNav";
3349
- var SettingsNavLink = React27.forwardRef(
3778
+ var SettingsNavLink = React28.forwardRef(
3350
3779
  ({ title, description, icon, href, LinkComponent, className, ...props }, ref) => {
3351
3780
  const content = /* @__PURE__ */ jsxs(Fragment, { children: [
3352
3781
  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 }) }),
@@ -3373,10 +3802,298 @@ var SettingsNavLink = React27.forwardRef(
3373
3802
  }
3374
3803
  );
3375
3804
  SettingsNavLink.displayName = "SettingsNavLink";
3805
+ var typeConfig = {
3806
+ escalation: {
3807
+ label: "Escalation",
3808
+ icon: Warning,
3809
+ color: "text-amber-600",
3810
+ bgColor: "bg-amber-50",
3811
+ description: "When to ask me first"
3812
+ },
3813
+ default_behavior: {
3814
+ label: "Default behavior",
3815
+ icon: CheckCircle,
3816
+ color: "text-blue-600",
3817
+ bgColor: "bg-blue-50",
3818
+ description: "What to do when data is missing"
3819
+ },
3820
+ quality_check: {
3821
+ label: "Quality check",
3822
+ icon: CheckCircle,
3823
+ color: "text-emerald-600",
3824
+ bgColor: "bg-emerald-50",
3825
+ description: 'What "done right" looks like'
3826
+ },
3827
+ edge_case: {
3828
+ label: "Edge case",
3829
+ icon: Question,
3830
+ color: "text-purple-600",
3831
+ bgColor: "bg-purple-50",
3832
+ description: "Judgment calls and past mistakes"
3833
+ }
3834
+ };
3835
+ function ScenarioCard({
3836
+ scenario,
3837
+ onEdit,
3838
+ onDelete
3839
+ }) {
3840
+ const config = typeConfig[scenario.type];
3841
+ const Icon = config.icon;
3842
+ return /* @__PURE__ */ jsx("div", { className: "group relative border border-gray-200 rounded-sm p-4 hover:border-gray-300 transition-colors", children: /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3", children: [
3843
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3 flex-1 min-w-0", children: [
3844
+ /* @__PURE__ */ jsx("div", { className: cn("w-8 h-8 rounded-sm flex items-center justify-center shrink-0", config.bgColor), children: /* @__PURE__ */ jsx(Icon, { size: 16, weight: "fill", className: config.color }) }),
3845
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
3846
+ /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2 mb-1", children: /* @__PURE__ */ jsx(Badge, { variant: "outline", size: "sm", children: config.label }) }),
3847
+ /* @__PURE__ */ jsxs("p", { className: "text-sm text-[var(--black)] font-medium", children: [
3848
+ "When: ",
3849
+ /* @__PURE__ */ jsx("span", { className: "font-normal", children: scenario.situation })
3850
+ ] }),
3851
+ /* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground mt-1", children: [
3852
+ "Action: ",
3853
+ /* @__PURE__ */ jsx("span", { className: "text-[var(--black)]", children: scenario.action })
3854
+ ] })
3855
+ ] })
3856
+ ] }),
3857
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity", children: [
3858
+ /* @__PURE__ */ jsx(
3859
+ Button,
3860
+ {
3861
+ variant: "ghost",
3862
+ size: "icon",
3863
+ className: "h-8 w-8",
3864
+ onClick: onEdit,
3865
+ children: /* @__PURE__ */ jsx(PencilSimple, { size: 16 })
3866
+ }
3867
+ ),
3868
+ /* @__PURE__ */ jsx(
3869
+ Button,
3870
+ {
3871
+ variant: "ghost",
3872
+ size: "icon",
3873
+ className: "h-8 w-8 text-red-600 hover:text-red-700 hover:bg-red-50",
3874
+ onClick: onDelete,
3875
+ children: /* @__PURE__ */ jsx(Trash, { size: 16 })
3876
+ }
3877
+ )
3878
+ ] })
3879
+ ] }) });
3880
+ }
3881
+ function SuggestionChip({
3882
+ suggestion,
3883
+ onAdd,
3884
+ disabled
3885
+ }) {
3886
+ const config = typeConfig[suggestion.type];
3887
+ config.icon;
3888
+ return /* @__PURE__ */ jsxs(
3889
+ "button",
3890
+ {
3891
+ type: "button",
3892
+ onClick: onAdd,
3893
+ disabled,
3894
+ className: cn(
3895
+ "inline-flex items-center gap-2 px-3 py-2 rounded-sm border border-dashed border-gray-300",
3896
+ "text-sm text-muted-foreground hover:border-[var(--cyan)] hover:text-[var(--cyan)] hover:bg-[var(--cyan)]/5",
3897
+ "transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
3898
+ ),
3899
+ children: [
3900
+ /* @__PURE__ */ jsx(Plus, { size: 14 }),
3901
+ suggestion.situation
3902
+ ]
3903
+ }
3904
+ );
3905
+ }
3906
+ function ScenarioDialog({
3907
+ open,
3908
+ onOpenChange,
3909
+ scenario,
3910
+ onSave,
3911
+ isLoading
3912
+ }) {
3913
+ const [type, setType] = React28.useState(scenario?.type || "escalation");
3914
+ const [situation, setSituation] = React28.useState(scenario?.situation || "");
3915
+ const [action, setAction] = React28.useState(scenario?.action || "");
3916
+ const [isSaving, setIsSaving] = React28.useState(false);
3917
+ React28.useEffect(() => {
3918
+ if (open) {
3919
+ setType(scenario?.type || "escalation");
3920
+ setSituation(scenario?.situation || "");
3921
+ setAction(scenario?.action || "");
3922
+ }
3923
+ }, [open, scenario]);
3924
+ const handleSave = async () => {
3925
+ if (!situation.trim() || !action.trim()) return;
3926
+ setIsSaving(true);
3927
+ try {
3928
+ await onSave({ type, situation: situation.trim(), action: action.trim() });
3929
+ onOpenChange(false);
3930
+ } finally {
3931
+ setIsSaving(false);
3932
+ }
3933
+ };
3934
+ const isValid = situation.trim() && action.trim();
3935
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(DialogContent, { className: "sm:max-w-md", style: { transform: "translate(-50%, -50%)" }, children: [
3936
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [
3937
+ /* @__PURE__ */ jsx(DialogTitle, { children: scenario ? "Edit scenario" : "Add scenario" }),
3938
+ /* @__PURE__ */ jsx(DialogDescription, { children: "Define when something happens and what action to take." })
3939
+ ] }),
3940
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-4 py-4", children: [
3941
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
3942
+ /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--black)]", children: "Type" }),
3943
+ /* @__PURE__ */ jsx(
3944
+ Select,
3945
+ {
3946
+ value: type,
3947
+ onChange: (e) => setType(e.target.value),
3948
+ children: Object.entries(typeConfig).map(([key, config]) => /* @__PURE__ */ jsxs("option", { value: key, children: [
3949
+ config.label,
3950
+ " \u2014 ",
3951
+ config.description
3952
+ ] }, key))
3953
+ }
3954
+ )
3955
+ ] }),
3956
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
3957
+ /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--black)]", children: "When..." }),
3958
+ /* @__PURE__ */ jsx(
3959
+ Input,
3960
+ {
3961
+ placeholder: "e.g., Invoice amount doesn't match PO",
3962
+ value: situation,
3963
+ onChange: (e) => setSituation(e.target.value)
3964
+ }
3965
+ ),
3966
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "Describe the situation or trigger" })
3967
+ ] }),
3968
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
3969
+ /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--black)]", children: "Then..." }),
3970
+ /* @__PURE__ */ jsx(
3971
+ Input,
3972
+ {
3973
+ placeholder: "e.g., Flag for review, don't process",
3974
+ value: action,
3975
+ onChange: (e) => setAction(e.target.value)
3976
+ }
3977
+ ),
3978
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "What should happen in this situation" })
3979
+ ] })
3980
+ ] }),
3981
+ /* @__PURE__ */ jsxs(DialogFooter, { children: [
3982
+ /* @__PURE__ */ jsx(Button, { variant: "outline", onClick: () => onOpenChange(false), children: "Cancel" }),
3983
+ /* @__PURE__ */ jsx(
3984
+ Button,
3985
+ {
3986
+ onClick: handleSave,
3987
+ disabled: !isValid || isSaving,
3988
+ loading: isSaving,
3989
+ children: scenario ? "Save changes" : "Add scenario"
3990
+ }
3991
+ )
3992
+ ] })
3993
+ ] }) });
3994
+ }
3995
+ function ScenariosManager({
3996
+ scenarios,
3997
+ onAdd,
3998
+ onUpdate,
3999
+ onDelete,
4000
+ suggestions = [],
4001
+ isLoading,
4002
+ className
4003
+ }) {
4004
+ const [dialogOpen, setDialogOpen] = React28.useState(false);
4005
+ const [editingScenario, setEditingScenario] = React28.useState(null);
4006
+ const [deletingId, setDeletingId] = React28.useState(null);
4007
+ const handleAddClick = () => {
4008
+ setEditingScenario(null);
4009
+ setDialogOpen(true);
4010
+ };
4011
+ const handleEditClick = (scenario) => {
4012
+ setEditingScenario(scenario);
4013
+ setDialogOpen(true);
4014
+ };
4015
+ const handleSave = async (data) => {
4016
+ if (editingScenario) {
4017
+ await onUpdate(editingScenario.id, data);
4018
+ } else {
4019
+ await onAdd(data);
4020
+ }
4021
+ };
4022
+ const handleDelete = async (id) => {
4023
+ setDeletingId(id);
4024
+ try {
4025
+ await onDelete(id);
4026
+ } finally {
4027
+ setDeletingId(null);
4028
+ }
4029
+ };
4030
+ const handleSuggestionAdd = async (suggestion) => {
4031
+ await onAdd(suggestion);
4032
+ };
4033
+ const filteredSuggestions = suggestions.filter(
4034
+ (s) => !scenarios.some(
4035
+ (existing) => existing.situation.toLowerCase() === s.situation.toLowerCase()
4036
+ )
4037
+ );
4038
+ return /* @__PURE__ */ jsxs("div", { className: cn("space-y-4", className), children: [
4039
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
4040
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
4041
+ /* @__PURE__ */ jsx("div", { className: "w-10 h-10 rounded-sm bg-[var(--cyan)]/10 flex items-center justify-center", children: /* @__PURE__ */ jsx(Lightning, { size: 20, weight: "fill", className: "text-[var(--cyan)]" }) }),
4042
+ /* @__PURE__ */ jsxs("div", { children: [
4043
+ /* @__PURE__ */ jsx("h3", { className: "font-semibold text-[var(--black)]", children: "Scenarios" }),
4044
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: scenarios.length === 0 ? "Define rules for edge cases and escalations" : `${scenarios.length} scenario${scenarios.length === 1 ? "" : "s"} defined` })
4045
+ ] })
4046
+ ] }),
4047
+ /* @__PURE__ */ jsxs(Button, { variant: "outline", size: "sm", onClick: handleAddClick, children: [
4048
+ /* @__PURE__ */ jsx(Plus, { size: 16, className: "mr-1" }),
4049
+ "Add scenario"
4050
+ ] })
4051
+ ] }),
4052
+ scenarios.length > 0 && /* @__PURE__ */ jsx("div", { className: "grid gap-3", children: scenarios.map((scenario) => /* @__PURE__ */ jsx(
4053
+ ScenarioCard,
4054
+ {
4055
+ scenario,
4056
+ onEdit: () => handleEditClick(scenario),
4057
+ onDelete: () => handleDelete(scenario.id)
4058
+ },
4059
+ scenario.id
4060
+ )) }),
4061
+ scenarios.length === 0 && /* @__PURE__ */ jsxs("div", { className: "border border-dashed border-gray-300 rounded-sm p-8 text-center", children: [
4062
+ /* @__PURE__ */ jsx(Lightning, { size: 32, className: "text-gray-300 mx-auto mb-3" }),
4063
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mb-4", children: "No scenarios yet. Add rules for how the worker should handle edge cases." }),
4064
+ /* @__PURE__ */ jsxs(Button, { variant: "outline", size: "sm", onClick: handleAddClick, children: [
4065
+ /* @__PURE__ */ jsx(Plus, { size: 16, className: "mr-1" }),
4066
+ "Add your first scenario"
4067
+ ] })
4068
+ ] }),
4069
+ filteredSuggestions.length > 0 && /* @__PURE__ */ jsxs("div", { className: "pt-2", children: [
4070
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground mb-2", children: "Suggested scenarios:" }),
4071
+ /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: filteredSuggestions.map((suggestion, index) => /* @__PURE__ */ jsx(
4072
+ SuggestionChip,
4073
+ {
4074
+ suggestion,
4075
+ onAdd: () => handleSuggestionAdd(suggestion),
4076
+ disabled: isLoading
4077
+ },
4078
+ index
4079
+ )) })
4080
+ ] }),
4081
+ /* @__PURE__ */ jsx(
4082
+ ScenarioDialog,
4083
+ {
4084
+ open: dialogOpen,
4085
+ onOpenChange: setDialogOpen,
4086
+ scenario: editingScenario,
4087
+ onSave: handleSave,
4088
+ isLoading
4089
+ }
4090
+ )
4091
+ ] });
4092
+ }
3376
4093
 
3377
4094
  // src/index.ts
3378
4095
  __reExport(index_exports, icons_exports);
3379
4096
 
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, 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 };
4097
+ 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, ErrorState, FilePreview, FormField, IconBox, Input, Label2 as Label, LabeledSwitch, Logo, Metric, MetricCard, MetricLabel, MetricSubtext, MetricValue, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, Popover, PopoverAnchor, PopoverArrow, PopoverClose, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupCard, RadioGroupItem, RadioGroupOption, ScenariosManager, Select, Separator2 as Separator, SettingsNav, SettingsNavLink, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, 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 };
3381
4098
  //# sourceMappingURL=index.mjs.map
3382
4099
  //# sourceMappingURL=index.mjs.map