@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/components/error-state.d.ts +26 -0
- package/dist/components/error-state.d.ts.map +1 -0
- package/dist/components/file-preview.d.ts +25 -0
- package/dist/components/file-preview.d.ts.map +1 -0
- package/dist/components/metric-label.d.ts +60 -0
- package/dist/components/metric-label.d.ts.map +1 -0
- package/dist/components/scenarios-manager.d.ts +23 -0
- package/dist/components/scenarios-manager.d.ts.map +1 -0
- package/dist/components/tabs.d.ts.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +845 -122
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +840 -123
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/components/error-state.tsx +118 -0
- package/src/components/file-preview.tsx +359 -0
- package/src/components/metric-label.tsx +135 -0
- package/src/components/scenarios-manager.tsx +403 -0
- package/src/components/tabs.tsx +3 -1
- package/src/index.ts +14 -0
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import * as
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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] =
|
|
980
|
-
const maxValue =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
1303
|
-
const switchId = id ||
|
|
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 =
|
|
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 =
|
|
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 =
|
|
1358
|
-
const optionId = id ||
|
|
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 =
|
|
1376
|
-
const cardId = id ||
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
2125
|
+
var FormField = React28.forwardRef(
|
|
1986
2126
|
({ label, error, helperText, hint, required, id, className, children, ...props }, ref) => {
|
|
1987
|
-
const fieldId = id ||
|
|
2127
|
+
const fieldId = id || React28.useId();
|
|
1988
2128
|
const errorId = `${fieldId}-error`;
|
|
1989
2129
|
const helperId = `${fieldId}-helper`;
|
|
1990
|
-
const enhancedChildren =
|
|
1991
|
-
if (
|
|
2130
|
+
const enhancedChildren = React28.Children.map(children, (child) => {
|
|
2131
|
+
if (React28.isValidElement(child)) {
|
|
1992
2132
|
const childProps = child.props;
|
|
1993
|
-
return
|
|
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 =
|
|
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 =
|
|
2166
|
+
var TableHeader = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("", className), ...props }));
|
|
2027
2167
|
TableHeader.displayName = "TableHeader";
|
|
2028
|
-
var TableBody =
|
|
2168
|
+
var TableBody = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("tbody", { ref, className: cn("", className), ...props }));
|
|
2029
2169
|
TableBody.displayName = "TableBody";
|
|
2030
|
-
var TableFooter =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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] =
|
|
2686
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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
|