@cytario/design 2.1.0 → 2.2.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.js +208 -198
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -177,6 +177,7 @@ function Button({
|
|
|
177
177
|
...props
|
|
178
178
|
}) {
|
|
179
179
|
const { inGroup, position } = useInputGroup();
|
|
180
|
+
const groupGhost = inGroup && variant === "ghost" ? "bg-[var(--color-surface-default)] text-[var(--color-text-secondary)] border border-[var(--color-border-default)] hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)] hover:border-[var(--color-border-strong)] pressed:bg-[var(--color-surface-pressed)] pressed:text-[var(--color-text-primary)]" : "";
|
|
180
181
|
const radiusClass = inGroup ? groupRadiusClass(position) : "rounded-[var(--border-radius-md)]";
|
|
181
182
|
const marginClass = inGroup && position !== "start" && position !== "standalone" ? "-ml-px" : "";
|
|
182
183
|
const focusRing = inGroup ? "focus-visible:ring-2 focus-visible:ring-[var(--color-border-focus)] focus-visible:ring-offset-0 focus-visible:z-10" : "focus-visible:ring-2 focus-visible:ring-[var(--color-border-focus)] focus-visible:ring-offset-2";
|
|
@@ -194,7 +195,7 @@ function Button({
|
|
|
194
195
|
focusRing,
|
|
195
196
|
"disabled:opacity-50 disabled:pointer-events-none",
|
|
196
197
|
isLoading ? "pointer-events-none" : "",
|
|
197
|
-
variantStyles[variant],
|
|
198
|
+
groupGhost || variantStyles[variant],
|
|
198
199
|
sizeStyles[size],
|
|
199
200
|
marginClass,
|
|
200
201
|
className
|
|
@@ -258,6 +259,11 @@ var squareSizeStyles = {
|
|
|
258
259
|
md: "h-10 w-10",
|
|
259
260
|
lg: "h-12 w-12"
|
|
260
261
|
};
|
|
262
|
+
var squareWidthOnly = {
|
|
263
|
+
sm: "w-8",
|
|
264
|
+
md: "w-10",
|
|
265
|
+
lg: "w-12"
|
|
266
|
+
};
|
|
261
267
|
var iconSizeMap2 = {
|
|
262
268
|
sm: "sm",
|
|
263
269
|
md: "sm",
|
|
@@ -288,6 +294,7 @@ function IconButton({
|
|
|
288
294
|
...props
|
|
289
295
|
}) {
|
|
290
296
|
const { inGroup, position } = useInputGroup();
|
|
297
|
+
const groupGhost = inGroup && variant === "ghost" ? "bg-[var(--color-surface-default)] text-[var(--color-text-secondary)] border border-[var(--color-border-default)] hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)] hover:border-[var(--color-border-strong)] pressed:bg-[var(--color-surface-pressed)] pressed:text-[var(--color-text-primary)]" : "";
|
|
291
298
|
const radiusClass = inGroup ? groupRadiusClass2(position) : "rounded-[var(--border-radius-md)]";
|
|
292
299
|
const marginClass = inGroup && position !== "start" && position !== "standalone" ? "-ml-px" : "";
|
|
293
300
|
const focusRing = inGroup ? "focus-visible:ring-2 focus-visible:ring-[var(--color-border-focus)] focus-visible:ring-offset-0 focus-visible:z-10" : "focus-visible:ring-2 focus-visible:ring-[var(--color-border-focus)] focus-visible:ring-offset-2";
|
|
@@ -304,8 +311,8 @@ function IconButton({
|
|
|
304
311
|
focusRing,
|
|
305
312
|
"disabled:opacity-50 disabled:pointer-events-none",
|
|
306
313
|
isLoading ? "pointer-events-none" : "",
|
|
307
|
-
variantStyles[variant],
|
|
308
|
-
squareSizeStyles[size],
|
|
314
|
+
groupGhost || variantStyles[variant],
|
|
315
|
+
inGroup ? squareWidthOnly[size] : squareSizeStyles[size],
|
|
309
316
|
marginClass,
|
|
310
317
|
className
|
|
311
318
|
].filter(Boolean).join(" "),
|
|
@@ -801,6 +808,9 @@ function Dialog({
|
|
|
801
808
|
);
|
|
802
809
|
}
|
|
803
810
|
|
|
811
|
+
// src/components/Dialog/DialogFooter.tsx
|
|
812
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
813
|
+
|
|
804
814
|
// src/components/Toast/Toast.tsx
|
|
805
815
|
import {
|
|
806
816
|
createContext as createContext2,
|
|
@@ -812,7 +822,7 @@ import {
|
|
|
812
822
|
} from "react";
|
|
813
823
|
import { createPortal } from "react-dom";
|
|
814
824
|
import { CheckCircle, XCircle, Info, X as X2 } from "lucide-react";
|
|
815
|
-
import { jsx as
|
|
825
|
+
import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
816
826
|
var ToastContext = createContext2(null);
|
|
817
827
|
var toastCounter = 0;
|
|
818
828
|
var defaultDuration = {
|
|
@@ -883,16 +893,16 @@ function ToastItem({
|
|
|
883
893
|
config.containerClass
|
|
884
894
|
].join(" "),
|
|
885
895
|
children: [
|
|
886
|
-
/* @__PURE__ */
|
|
887
|
-
/* @__PURE__ */
|
|
888
|
-
/* @__PURE__ */
|
|
896
|
+
/* @__PURE__ */ jsx11(IconComponent, { size: 20, className: ["shrink-0 mt-0.5", config.iconClass].join(" "), "aria-hidden": "true" }),
|
|
897
|
+
/* @__PURE__ */ jsx11("p", { className: "flex-1 text-[length:var(--font-size-sm)] font-[number:var(--font-weight-medium)]", children: toast.message }),
|
|
898
|
+
/* @__PURE__ */ jsx11(
|
|
889
899
|
"button",
|
|
890
900
|
{
|
|
891
901
|
type: "button",
|
|
892
902
|
onClick: dismiss,
|
|
893
903
|
className: "shrink-0 rounded-[var(--border-radius-sm)] p-0.5 opacity-70 hover:opacity-100 transition-opacity outline-none focus-visible:ring-2 focus-visible:ring-current",
|
|
894
904
|
"aria-label": "Dismiss",
|
|
895
|
-
children: /* @__PURE__ */
|
|
905
|
+
children: /* @__PURE__ */ jsx11(X2, { size: 16, "aria-hidden": "true" })
|
|
896
906
|
}
|
|
897
907
|
)
|
|
898
908
|
]
|
|
@@ -912,7 +922,7 @@ function ToastContainer({
|
|
|
912
922
|
}) {
|
|
913
923
|
if (toasts.length === 0) return null;
|
|
914
924
|
return createPortal(
|
|
915
|
-
/* @__PURE__ */
|
|
925
|
+
/* @__PURE__ */ jsx11(PlacementContext.Provider, { value: placement, children: /* @__PURE__ */ jsx11("div", { className: containerPositionStyles[placement], children: toasts.map((toast) => /* @__PURE__ */ jsx11(ToastItem, { toast, onRemove: removeToast }, toast.id)) }) }),
|
|
916
926
|
document.body
|
|
917
927
|
);
|
|
918
928
|
}
|
|
@@ -945,7 +955,7 @@ function ToastProvider({ children, bridge, placement = "bottom-right" }) {
|
|
|
945
955
|
}, [bridge, addToast]);
|
|
946
956
|
return /* @__PURE__ */ jsxs8(ToastContext.Provider, { value: { toasts, addToast, removeToast }, children: [
|
|
947
957
|
children,
|
|
948
|
-
/* @__PURE__ */
|
|
958
|
+
/* @__PURE__ */ jsx11(ToastContainer, { toasts, removeToast, placement })
|
|
949
959
|
] });
|
|
950
960
|
}
|
|
951
961
|
function useToast() {
|
|
@@ -961,7 +971,7 @@ function useToast() {
|
|
|
961
971
|
}
|
|
962
972
|
|
|
963
973
|
// src/components/EmptyState/EmptyState.tsx
|
|
964
|
-
import { jsx as
|
|
974
|
+
import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
965
975
|
function EmptyState({
|
|
966
976
|
icon,
|
|
967
977
|
title,
|
|
@@ -977,10 +987,10 @@ function EmptyState({
|
|
|
977
987
|
className
|
|
978
988
|
].filter(Boolean).join(" "),
|
|
979
989
|
children: [
|
|
980
|
-
icon && /* @__PURE__ */
|
|
981
|
-
/* @__PURE__ */
|
|
982
|
-
description && /* @__PURE__ */
|
|
983
|
-
action && /* @__PURE__ */
|
|
990
|
+
icon && /* @__PURE__ */ jsx12(Icon, { icon, size: "xl", className: "text-[var(--color-text-tertiary)]" }),
|
|
991
|
+
/* @__PURE__ */ jsx12("h3", { className: "text-[length:var(--font-size-lg)] font-[number:var(--font-weight-semibold)] text-[var(--color-text-primary)] mt-4", children: title }),
|
|
992
|
+
description && /* @__PURE__ */ jsx12("p", { className: "text-sm text-[var(--color-text-secondary)] mt-2 max-w-sm", children: description }),
|
|
993
|
+
action && /* @__PURE__ */ jsx12("div", { className: "mt-6", children: action })
|
|
984
994
|
]
|
|
985
995
|
}
|
|
986
996
|
);
|
|
@@ -991,9 +1001,9 @@ import {
|
|
|
991
1001
|
Checkbox as AriaCheckbox
|
|
992
1002
|
} from "react-aria-components";
|
|
993
1003
|
import { Check } from "lucide-react";
|
|
994
|
-
import { Fragment as Fragment3, jsx as
|
|
1004
|
+
import { Fragment as Fragment3, jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
995
1005
|
function Checkbox({ children, className, ...props }) {
|
|
996
|
-
return /* @__PURE__ */
|
|
1006
|
+
return /* @__PURE__ */ jsx13(
|
|
997
1007
|
AriaCheckbox,
|
|
998
1008
|
{
|
|
999
1009
|
...props,
|
|
@@ -1013,12 +1023,12 @@ function Checkbox({ children, className, ...props }) {
|
|
|
1013
1023
|
isSelected || isIndeterminate ? "bg-[var(--color-action-primary)] border-[var(--color-action-primary)]" : "bg-[var(--color-surface-default)] border-[var(--color-border-default)] group-hover:border-[var(--color-border-strong)]"
|
|
1014
1024
|
].join(" "),
|
|
1015
1025
|
children: [
|
|
1016
|
-
isSelected && /* @__PURE__ */
|
|
1017
|
-
isIndeterminate && /* @__PURE__ */
|
|
1026
|
+
isSelected && /* @__PURE__ */ jsx13(Check, { className: "w-4 h-4 text-[var(--color-text-inverse)]", strokeWidth: 3 }),
|
|
1027
|
+
isIndeterminate && /* @__PURE__ */ jsx13("div", { className: "w-3 h-0.5 bg-[var(--color-text-inverse)] rounded-full" })
|
|
1018
1028
|
]
|
|
1019
1029
|
}
|
|
1020
1030
|
),
|
|
1021
|
-
children && /* @__PURE__ */
|
|
1031
|
+
children && /* @__PURE__ */ jsx13("span", { children })
|
|
1022
1032
|
] })
|
|
1023
1033
|
}
|
|
1024
1034
|
);
|
|
@@ -1028,7 +1038,7 @@ function Checkbox({ children, className, ...props }) {
|
|
|
1028
1038
|
import {
|
|
1029
1039
|
Switch as AriaSwitch
|
|
1030
1040
|
} from "react-aria-components";
|
|
1031
|
-
import { Fragment as Fragment4, jsx as
|
|
1041
|
+
import { Fragment as Fragment4, jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1032
1042
|
var trackColorMap = {
|
|
1033
1043
|
primary: "bg-[var(--color-action-primary)]",
|
|
1034
1044
|
success: "bg-[var(--color-action-success)]",
|
|
@@ -1045,7 +1055,7 @@ function Switch({
|
|
|
1045
1055
|
...props
|
|
1046
1056
|
}) {
|
|
1047
1057
|
const isPreset = isPresetColor(color);
|
|
1048
|
-
return /* @__PURE__ */
|
|
1058
|
+
return /* @__PURE__ */ jsx14(
|
|
1049
1059
|
AriaSwitch,
|
|
1050
1060
|
{
|
|
1051
1061
|
...props,
|
|
@@ -1055,7 +1065,7 @@ function Switch({
|
|
|
1055
1065
|
className
|
|
1056
1066
|
].filter(Boolean).join(" "),
|
|
1057
1067
|
children: ({ isSelected }) => /* @__PURE__ */ jsxs11(Fragment4, { children: [
|
|
1058
|
-
/* @__PURE__ */
|
|
1068
|
+
/* @__PURE__ */ jsx14(
|
|
1059
1069
|
"div",
|
|
1060
1070
|
{
|
|
1061
1071
|
className: [
|
|
@@ -1064,7 +1074,7 @@ function Switch({
|
|
|
1064
1074
|
isSelected && isPreset ? trackColorMap[color] : !isSelected ? "bg-[var(--color-border-strong)]" : ""
|
|
1065
1075
|
].join(" "),
|
|
1066
1076
|
style: isSelected && !isPreset ? { backgroundColor: color } : void 0,
|
|
1067
|
-
children: /* @__PURE__ */
|
|
1077
|
+
children: /* @__PURE__ */ jsx14(
|
|
1068
1078
|
"div",
|
|
1069
1079
|
{
|
|
1070
1080
|
className: [
|
|
@@ -1075,7 +1085,7 @@ function Switch({
|
|
|
1075
1085
|
)
|
|
1076
1086
|
}
|
|
1077
1087
|
),
|
|
1078
|
-
children && /* @__PURE__ */
|
|
1088
|
+
children && /* @__PURE__ */ jsx14("span", { children })
|
|
1079
1089
|
] })
|
|
1080
1090
|
}
|
|
1081
1091
|
);
|
|
@@ -1086,9 +1096,9 @@ import {
|
|
|
1086
1096
|
RadioGroup as AriaRadioGroup,
|
|
1087
1097
|
Radio as AriaRadio
|
|
1088
1098
|
} from "react-aria-components";
|
|
1089
|
-
import { Fragment as Fragment5, jsx as
|
|
1099
|
+
import { Fragment as Fragment5, jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1090
1100
|
function RadioGroup({ children, className, ...props }) {
|
|
1091
|
-
return /* @__PURE__ */
|
|
1101
|
+
return /* @__PURE__ */ jsx15(
|
|
1092
1102
|
AriaRadioGroup,
|
|
1093
1103
|
{
|
|
1094
1104
|
...props,
|
|
@@ -1102,7 +1112,7 @@ function RadioGroup({ children, className, ...props }) {
|
|
|
1102
1112
|
);
|
|
1103
1113
|
}
|
|
1104
1114
|
function Radio({ children, className, ...props }) {
|
|
1105
|
-
return /* @__PURE__ */
|
|
1115
|
+
return /* @__PURE__ */ jsx15(
|
|
1106
1116
|
AriaRadio,
|
|
1107
1117
|
{
|
|
1108
1118
|
...props,
|
|
@@ -1112,7 +1122,7 @@ function Radio({ children, className, ...props }) {
|
|
|
1112
1122
|
className
|
|
1113
1123
|
].filter(Boolean).join(" "),
|
|
1114
1124
|
children: ({ isSelected }) => /* @__PURE__ */ jsxs12(Fragment5, { children: [
|
|
1115
|
-
/* @__PURE__ */
|
|
1125
|
+
/* @__PURE__ */ jsx15(
|
|
1116
1126
|
"div",
|
|
1117
1127
|
{
|
|
1118
1128
|
className: [
|
|
@@ -1121,16 +1131,16 @@ function Radio({ children, className, ...props }) {
|
|
|
1121
1131
|
"group-focus-visible:ring-2 group-focus-visible:ring-[var(--color-border-focus)] group-focus-visible:ring-offset-2",
|
|
1122
1132
|
isSelected ? "border-[var(--color-action-primary)]" : "border-[var(--color-border-default)] group-hover:border-[var(--color-border-strong)]"
|
|
1123
1133
|
].join(" "),
|
|
1124
|
-
children: isSelected && /* @__PURE__ */
|
|
1134
|
+
children: isSelected && /* @__PURE__ */ jsx15("div", { className: "w-2.5 h-2.5 rounded-full bg-[var(--color-action-primary)]" })
|
|
1125
1135
|
}
|
|
1126
1136
|
),
|
|
1127
|
-
children && /* @__PURE__ */
|
|
1137
|
+
children && /* @__PURE__ */ jsx15("span", { children })
|
|
1128
1138
|
] })
|
|
1129
1139
|
}
|
|
1130
1140
|
);
|
|
1131
1141
|
}
|
|
1132
1142
|
function RadioButton({ children, className, ...props }) {
|
|
1133
|
-
return /* @__PURE__ */
|
|
1143
|
+
return /* @__PURE__ */ jsx15(
|
|
1134
1144
|
AriaRadio,
|
|
1135
1145
|
{
|
|
1136
1146
|
...props,
|
|
@@ -1139,7 +1149,7 @@ function RadioButton({ children, className, ...props }) {
|
|
|
1139
1149
|
"disabled:opacity-50 disabled:cursor-default",
|
|
1140
1150
|
className
|
|
1141
1151
|
].filter(Boolean).join(" "),
|
|
1142
|
-
children: ({ isSelected }) => /* @__PURE__ */
|
|
1152
|
+
children: ({ isSelected }) => /* @__PURE__ */ jsx15(
|
|
1143
1153
|
"div",
|
|
1144
1154
|
{
|
|
1145
1155
|
className: [
|
|
@@ -1159,7 +1169,7 @@ function RadioButton({ children, className, ...props }) {
|
|
|
1159
1169
|
import {
|
|
1160
1170
|
Label as AriaLabel
|
|
1161
1171
|
} from "react-aria-components";
|
|
1162
|
-
import { jsx as
|
|
1172
|
+
import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1163
1173
|
function Label3({ isRequired, children, className, ...props }) {
|
|
1164
1174
|
return /* @__PURE__ */ jsxs13(
|
|
1165
1175
|
AriaLabel,
|
|
@@ -1173,7 +1183,7 @@ function Label3({ isRequired, children, className, ...props }) {
|
|
|
1173
1183
|
].filter(Boolean).join(" "),
|
|
1174
1184
|
children: [
|
|
1175
1185
|
children,
|
|
1176
|
-
isRequired && /* @__PURE__ */
|
|
1186
|
+
isRequired && /* @__PURE__ */ jsx16(
|
|
1177
1187
|
"span",
|
|
1178
1188
|
{
|
|
1179
1189
|
"aria-hidden": "true",
|
|
@@ -1187,7 +1197,7 @@ function Label3({ isRequired, children, className, ...props }) {
|
|
|
1187
1197
|
}
|
|
1188
1198
|
|
|
1189
1199
|
// src/components/Field/Field.tsx
|
|
1190
|
-
import { jsx as
|
|
1200
|
+
import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1191
1201
|
function getErrorMessage(error) {
|
|
1192
1202
|
if (!error) return void 0;
|
|
1193
1203
|
if (typeof error === "string") return error;
|
|
@@ -1207,17 +1217,17 @@ function Field({
|
|
|
1207
1217
|
{
|
|
1208
1218
|
className: ["flex flex-col gap-[var(--spacing-1)]", className].filter(Boolean).join(" "),
|
|
1209
1219
|
children: [
|
|
1210
|
-
label && /* @__PURE__ */
|
|
1220
|
+
label && /* @__PURE__ */ jsx17(Label3, { isRequired, children: label }),
|
|
1211
1221
|
children,
|
|
1212
|
-
description && !errorMessage && /* @__PURE__ */
|
|
1213
|
-
errorMessage && /* @__PURE__ */
|
|
1222
|
+
description && !errorMessage && /* @__PURE__ */ jsx17("p", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-secondary)]", children: description }),
|
|
1223
|
+
errorMessage && /* @__PURE__ */ jsx17("p", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-danger)]", children: errorMessage })
|
|
1214
1224
|
]
|
|
1215
1225
|
}
|
|
1216
1226
|
);
|
|
1217
1227
|
}
|
|
1218
1228
|
|
|
1219
1229
|
// src/components/Fieldset/Fieldset.tsx
|
|
1220
|
-
import { jsx as
|
|
1230
|
+
import { jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1221
1231
|
function Fieldset({ legend, children, className }) {
|
|
1222
1232
|
return /* @__PURE__ */ jsxs15(
|
|
1223
1233
|
"fieldset",
|
|
@@ -1228,7 +1238,7 @@ function Fieldset({ legend, children, className }) {
|
|
|
1228
1238
|
className
|
|
1229
1239
|
].filter(Boolean).join(" "),
|
|
1230
1240
|
children: [
|
|
1231
|
-
legend && /* @__PURE__ */
|
|
1241
|
+
legend && /* @__PURE__ */ jsx18(
|
|
1232
1242
|
"legend",
|
|
1233
1243
|
{
|
|
1234
1244
|
className: [
|
|
@@ -1248,18 +1258,18 @@ function Fieldset({ legend, children, className }) {
|
|
|
1248
1258
|
|
|
1249
1259
|
// src/components/InputGroup/InputGroup.tsx
|
|
1250
1260
|
import React from "react";
|
|
1251
|
-
import { jsx as
|
|
1261
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
1252
1262
|
function InputGroup({ children, className }) {
|
|
1253
1263
|
const childArray = React.Children.toArray(children).filter(
|
|
1254
1264
|
React.isValidElement
|
|
1255
1265
|
);
|
|
1256
|
-
return /* @__PURE__ */
|
|
1266
|
+
return /* @__PURE__ */ jsx19(
|
|
1257
1267
|
"div",
|
|
1258
1268
|
{
|
|
1259
1269
|
className: ["flex items-stretch", className].filter(Boolean).join(" "),
|
|
1260
1270
|
children: childArray.map((child, index) => {
|
|
1261
1271
|
const position = childArray.length === 1 ? "standalone" : index === 0 ? "start" : index === childArray.length - 1 ? "end" : "middle";
|
|
1262
|
-
return /* @__PURE__ */
|
|
1272
|
+
return /* @__PURE__ */ jsx19(
|
|
1263
1273
|
InputGroupContext.Provider,
|
|
1264
1274
|
{
|
|
1265
1275
|
value: { inGroup: true, position },
|
|
@@ -1273,7 +1283,7 @@ function InputGroup({ children, className }) {
|
|
|
1273
1283
|
}
|
|
1274
1284
|
|
|
1275
1285
|
// src/components/InputAddon/InputAddon.tsx
|
|
1276
|
-
import { jsx as
|
|
1286
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
1277
1287
|
function groupRadiusClass3(position) {
|
|
1278
1288
|
switch (position) {
|
|
1279
1289
|
case "start":
|
|
@@ -1290,7 +1300,7 @@ function InputAddon({ children, className }) {
|
|
|
1290
1300
|
const { inGroup, position } = useInputGroup();
|
|
1291
1301
|
const radiusClass = inGroup ? groupRadiusClass3(position) : "rounded-[var(--border-radius-md)]";
|
|
1292
1302
|
const marginClass = inGroup && position !== "start" && position !== "standalone" ? "-ml-px" : "";
|
|
1293
|
-
return /* @__PURE__ */
|
|
1303
|
+
return /* @__PURE__ */ jsx20(
|
|
1294
1304
|
"div",
|
|
1295
1305
|
{
|
|
1296
1306
|
className: [
|
|
@@ -1310,7 +1320,7 @@ function InputAddon({ children, className }) {
|
|
|
1310
1320
|
|
|
1311
1321
|
// src/components/Heading/Heading.tsx
|
|
1312
1322
|
import { twMerge as twMerge2 } from "tailwind-merge";
|
|
1313
|
-
import { jsx as
|
|
1323
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
1314
1324
|
var defaultSizeMap = {
|
|
1315
1325
|
h1: "2xl",
|
|
1316
1326
|
h2: "xl",
|
|
@@ -1340,7 +1350,7 @@ function Heading2({
|
|
|
1340
1350
|
children
|
|
1341
1351
|
}) {
|
|
1342
1352
|
const resolvedSize = size ?? defaultSizeMap[Tag];
|
|
1343
|
-
return /* @__PURE__ */
|
|
1353
|
+
return /* @__PURE__ */ jsx21(
|
|
1344
1354
|
Tag,
|
|
1345
1355
|
{
|
|
1346
1356
|
className: twMerge2(
|
|
@@ -1354,7 +1364,7 @@ function Heading2({
|
|
|
1354
1364
|
);
|
|
1355
1365
|
}
|
|
1356
1366
|
function H1(props) {
|
|
1357
|
-
return /* @__PURE__ */
|
|
1367
|
+
return /* @__PURE__ */ jsx21(
|
|
1358
1368
|
Heading2,
|
|
1359
1369
|
{
|
|
1360
1370
|
...props,
|
|
@@ -1365,17 +1375,17 @@ function H1(props) {
|
|
|
1365
1375
|
);
|
|
1366
1376
|
}
|
|
1367
1377
|
function H2(props) {
|
|
1368
|
-
return /* @__PURE__ */
|
|
1378
|
+
return /* @__PURE__ */ jsx21(Heading2, { ...props, as: "h2", size: props.size ?? "xl" });
|
|
1369
1379
|
}
|
|
1370
1380
|
function H3(props) {
|
|
1371
|
-
return /* @__PURE__ */
|
|
1381
|
+
return /* @__PURE__ */ jsx21(Heading2, { ...props, as: "h3", size: props.size ?? "lg" });
|
|
1372
1382
|
}
|
|
1373
1383
|
|
|
1374
1384
|
// src/components/Link/Link.tsx
|
|
1375
1385
|
import {
|
|
1376
1386
|
Link as AriaLink
|
|
1377
1387
|
} from "react-aria-components";
|
|
1378
|
-
import { jsx as
|
|
1388
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
1379
1389
|
var variantStyles2 = {
|
|
1380
1390
|
default: [
|
|
1381
1391
|
"text-[var(--color-teal-700)] underline",
|
|
@@ -1391,7 +1401,7 @@ function Link({
|
|
|
1391
1401
|
className,
|
|
1392
1402
|
...props
|
|
1393
1403
|
}) {
|
|
1394
|
-
return /* @__PURE__ */
|
|
1404
|
+
return /* @__PURE__ */ jsx22(
|
|
1395
1405
|
AriaLink,
|
|
1396
1406
|
{
|
|
1397
1407
|
...props,
|
|
@@ -1412,20 +1422,20 @@ import {
|
|
|
1412
1422
|
Link as Link2
|
|
1413
1423
|
} from "react-aria-components";
|
|
1414
1424
|
import { ChevronRight } from "lucide-react";
|
|
1415
|
-
import { Fragment as Fragment6, jsx as
|
|
1425
|
+
import { Fragment as Fragment6, jsx as jsx23, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1416
1426
|
function Breadcrumbs({ items, className }) {
|
|
1417
|
-
return /* @__PURE__ */
|
|
1427
|
+
return /* @__PURE__ */ jsx23(
|
|
1418
1428
|
"nav",
|
|
1419
1429
|
{
|
|
1420
1430
|
"aria-label": "Breadcrumb",
|
|
1421
1431
|
className,
|
|
1422
|
-
children: /* @__PURE__ */
|
|
1432
|
+
children: /* @__PURE__ */ jsx23(
|
|
1423
1433
|
AriaBreadcrumbs,
|
|
1424
1434
|
{
|
|
1425
1435
|
className: "flex items-center gap-1 text-sm min-w-0",
|
|
1426
1436
|
children: items.map((item, index) => {
|
|
1427
1437
|
const isLast = index === items.length - 1;
|
|
1428
|
-
return /* @__PURE__ */
|
|
1438
|
+
return /* @__PURE__ */ jsx23(
|
|
1429
1439
|
AriaBreadcrumb,
|
|
1430
1440
|
{
|
|
1431
1441
|
id: item.id,
|
|
@@ -1433,8 +1443,8 @@ function Breadcrumbs({ items, className }) {
|
|
|
1433
1443
|
"flex items-center gap-1",
|
|
1434
1444
|
isLast ? "min-w-0" : "shrink-0"
|
|
1435
1445
|
].join(" "),
|
|
1436
|
-
children: isLast ? /* @__PURE__ */
|
|
1437
|
-
/* @__PURE__ */
|
|
1446
|
+
children: isLast ? /* @__PURE__ */ jsx23("span", { className: "font-[number:var(--font-weight-medium)] text-[var(--color-text-primary)] truncate", children: item.label }) : /* @__PURE__ */ jsxs16(Fragment6, { children: [
|
|
1447
|
+
/* @__PURE__ */ jsx23(
|
|
1438
1448
|
Link2,
|
|
1439
1449
|
{
|
|
1440
1450
|
href: item.href,
|
|
@@ -1442,7 +1452,7 @@ function Breadcrumbs({ items, className }) {
|
|
|
1442
1452
|
children: item.label
|
|
1443
1453
|
}
|
|
1444
1454
|
),
|
|
1445
|
-
/* @__PURE__ */
|
|
1455
|
+
/* @__PURE__ */ jsx23(
|
|
1446
1456
|
ChevronRight,
|
|
1447
1457
|
{
|
|
1448
1458
|
className: "shrink-0 text-[var(--color-neutral-400)]",
|
|
@@ -1466,7 +1476,7 @@ import {
|
|
|
1466
1476
|
Link as AriaLink2
|
|
1467
1477
|
} from "react-aria-components";
|
|
1468
1478
|
import { twMerge as twMerge3 } from "tailwind-merge";
|
|
1469
|
-
import { jsx as
|
|
1479
|
+
import { jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1470
1480
|
var iconSizeMap3 = {
|
|
1471
1481
|
sm: "sm",
|
|
1472
1482
|
md: "sm",
|
|
@@ -1497,9 +1507,9 @@ function ButtonLink({
|
|
|
1497
1507
|
className
|
|
1498
1508
|
),
|
|
1499
1509
|
children: [
|
|
1500
|
-
iconLeft && /* @__PURE__ */
|
|
1510
|
+
iconLeft && /* @__PURE__ */ jsx24(Icon, { icon: iconLeft, size: iconSizeMap3[size] }),
|
|
1501
1511
|
children,
|
|
1502
|
-
iconRight && /* @__PURE__ */
|
|
1512
|
+
iconRight && /* @__PURE__ */ jsx24(Icon, { icon: iconRight, size: iconSizeMap3[size] })
|
|
1503
1513
|
]
|
|
1504
1514
|
}
|
|
1505
1515
|
);
|
|
@@ -1519,7 +1529,7 @@ function IconButtonLink({
|
|
|
1519
1529
|
className,
|
|
1520
1530
|
...props
|
|
1521
1531
|
}) {
|
|
1522
|
-
const link = /* @__PURE__ */
|
|
1532
|
+
const link = /* @__PURE__ */ jsx24(
|
|
1523
1533
|
AriaLink2,
|
|
1524
1534
|
{
|
|
1525
1535
|
...props,
|
|
@@ -1533,11 +1543,11 @@ function IconButtonLink({
|
|
|
1533
1543
|
squareSizeStyles2[size],
|
|
1534
1544
|
className
|
|
1535
1545
|
),
|
|
1536
|
-
children: /* @__PURE__ */
|
|
1546
|
+
children: /* @__PURE__ */ jsx24(Icon, { icon, size: iconSizeMap3[size] })
|
|
1537
1547
|
}
|
|
1538
1548
|
);
|
|
1539
1549
|
if (showTooltip) {
|
|
1540
|
-
return /* @__PURE__ */
|
|
1550
|
+
return /* @__PURE__ */ jsx24(Tooltip, { content: ariaLabel, placement: tooltipPlacement, children: link });
|
|
1541
1551
|
}
|
|
1542
1552
|
return link;
|
|
1543
1553
|
}
|
|
@@ -1547,7 +1557,7 @@ import {
|
|
|
1547
1557
|
ToggleButton as AriaToggleButton
|
|
1548
1558
|
} from "react-aria-components";
|
|
1549
1559
|
import { twMerge as twMerge4 } from "tailwind-merge";
|
|
1550
|
-
import { jsx as
|
|
1560
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
1551
1561
|
var sizeStyles4 = {
|
|
1552
1562
|
sm: "px-3 py-1.5 text-sm",
|
|
1553
1563
|
md: "px-4 py-2 text-base",
|
|
@@ -1596,7 +1606,7 @@ function ToggleButton({
|
|
|
1596
1606
|
...props
|
|
1597
1607
|
}) {
|
|
1598
1608
|
const styles = variantStyles3[variant];
|
|
1599
|
-
return /* @__PURE__ */
|
|
1609
|
+
return /* @__PURE__ */ jsx25(
|
|
1600
1610
|
AriaToggleButton,
|
|
1601
1611
|
{
|
|
1602
1612
|
...props,
|
|
@@ -1623,7 +1633,7 @@ import {
|
|
|
1623
1633
|
RadioGroup as AriaRadioGroup2,
|
|
1624
1634
|
Radio as AriaRadio2
|
|
1625
1635
|
} from "react-aria-components";
|
|
1626
|
-
import { jsx as
|
|
1636
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
1627
1637
|
var ToggleButtonGroupContext = createContext3({
|
|
1628
1638
|
size: "md"
|
|
1629
1639
|
});
|
|
@@ -1643,7 +1653,7 @@ function ToggleButtonGroup({
|
|
|
1643
1653
|
children,
|
|
1644
1654
|
...props
|
|
1645
1655
|
}) {
|
|
1646
|
-
return /* @__PURE__ */
|
|
1656
|
+
return /* @__PURE__ */ jsx26(ToggleButtonGroupContext.Provider, { value: { size }, children: /* @__PURE__ */ jsx26(
|
|
1647
1657
|
AriaRadioGroup2,
|
|
1648
1658
|
{
|
|
1649
1659
|
...props,
|
|
@@ -1663,7 +1673,7 @@ function ToggleButtonGroupItem({
|
|
|
1663
1673
|
...props
|
|
1664
1674
|
}) {
|
|
1665
1675
|
const { size } = useContext3(ToggleButtonGroupContext);
|
|
1666
|
-
return /* @__PURE__ */
|
|
1676
|
+
return /* @__PURE__ */ jsx26(
|
|
1667
1677
|
AriaRadio2,
|
|
1668
1678
|
{
|
|
1669
1679
|
...props,
|
|
@@ -1695,7 +1705,7 @@ import {
|
|
|
1695
1705
|
MenuItem as AriaMenuItem,
|
|
1696
1706
|
Popover as Popover2
|
|
1697
1707
|
} from "react-aria-components";
|
|
1698
|
-
import { jsx as
|
|
1708
|
+
import { jsx as jsx27, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1699
1709
|
var popoverStyles = [
|
|
1700
1710
|
"bg-[var(--color-surface-default)] rounded-[var(--border-radius-md)]",
|
|
1701
1711
|
"shadow-lg border border-[var(--color-border-default)]",
|
|
@@ -1717,11 +1727,11 @@ function Menu({
|
|
|
1717
1727
|
const selectionProps = selectionMode && selectionMode !== "none" ? { selectionMode, selectedKeys, defaultSelectedKeys, onSelectionChange } : {};
|
|
1718
1728
|
return /* @__PURE__ */ jsxs18(MenuTrigger, { children: [
|
|
1719
1729
|
children,
|
|
1720
|
-
/* @__PURE__ */
|
|
1730
|
+
/* @__PURE__ */ jsx27(
|
|
1721
1731
|
Popover2,
|
|
1722
1732
|
{
|
|
1723
1733
|
className: [popoverStyles, className].filter(Boolean).join(" "),
|
|
1724
|
-
children: items ? /* @__PURE__ */
|
|
1734
|
+
children: items ? /* @__PURE__ */ jsx27(
|
|
1725
1735
|
AriaMenu,
|
|
1726
1736
|
{
|
|
1727
1737
|
items,
|
|
@@ -1748,14 +1758,14 @@ function Menu({
|
|
|
1748
1758
|
item.isDanger ? "text-[var(--color-text-danger)]" : "text-[var(--color-text-primary)]"
|
|
1749
1759
|
].filter(Boolean).join(" "),
|
|
1750
1760
|
children: [
|
|
1751
|
-
item.icon && /* @__PURE__ */
|
|
1752
|
-
/* @__PURE__ */
|
|
1753
|
-
item.endContent && /* @__PURE__ */
|
|
1761
|
+
item.icon && /* @__PURE__ */ jsx27(Icon, { icon: item.icon, size: "sm" }),
|
|
1762
|
+
/* @__PURE__ */ jsx27("span", { className: "flex-1", children: item.label }),
|
|
1763
|
+
item.endContent && /* @__PURE__ */ jsx27("span", { className: "ml-auto flex items-center", children: item.endContent })
|
|
1754
1764
|
]
|
|
1755
1765
|
}
|
|
1756
1766
|
)
|
|
1757
1767
|
}
|
|
1758
|
-
) : /* @__PURE__ */
|
|
1768
|
+
) : /* @__PURE__ */ jsx27(
|
|
1759
1769
|
AriaMenu,
|
|
1760
1770
|
{
|
|
1761
1771
|
onAction: (key) => onAction?.(key),
|
|
@@ -1771,7 +1781,7 @@ function Menu({
|
|
|
1771
1781
|
|
|
1772
1782
|
// src/components/Menu/MenuItem.tsx
|
|
1773
1783
|
import { MenuItem as AriaMenuItem2 } from "react-aria-components";
|
|
1774
|
-
import { jsx as
|
|
1784
|
+
import { jsx as jsx28, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1775
1785
|
function MenuItem({
|
|
1776
1786
|
id,
|
|
1777
1787
|
children,
|
|
@@ -1804,9 +1814,9 @@ function MenuItem({
|
|
|
1804
1814
|
className
|
|
1805
1815
|
].filter(Boolean).join(" "),
|
|
1806
1816
|
children: [
|
|
1807
|
-
icon && /* @__PURE__ */
|
|
1808
|
-
/* @__PURE__ */
|
|
1809
|
-
endContent && /* @__PURE__ */
|
|
1817
|
+
icon && /* @__PURE__ */ jsx28(Icon, { icon, size: "sm" }),
|
|
1818
|
+
/* @__PURE__ */ jsx28("span", { className: "flex-1", children }),
|
|
1819
|
+
endContent && /* @__PURE__ */ jsx28("span", { className: "ml-auto flex items-center", children: endContent })
|
|
1810
1820
|
]
|
|
1811
1821
|
}
|
|
1812
1822
|
);
|
|
@@ -1815,7 +1825,7 @@ function MenuItem({
|
|
|
1815
1825
|
// src/components/Menu/MenuCheckboxItem.tsx
|
|
1816
1826
|
import { MenuItem as AriaMenuItem3 } from "react-aria-components";
|
|
1817
1827
|
import { Check as Check2 } from "lucide-react";
|
|
1818
|
-
import { Fragment as Fragment7, jsx as
|
|
1828
|
+
import { Fragment as Fragment7, jsx as jsx29, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1819
1829
|
function MenuCheckboxItem({
|
|
1820
1830
|
id,
|
|
1821
1831
|
children,
|
|
@@ -1823,7 +1833,7 @@ function MenuCheckboxItem({
|
|
|
1823
1833
|
isDisabled,
|
|
1824
1834
|
className
|
|
1825
1835
|
}) {
|
|
1826
|
-
return /* @__PURE__ */
|
|
1836
|
+
return /* @__PURE__ */ jsx29(
|
|
1827
1837
|
AriaMenuItem3,
|
|
1828
1838
|
{
|
|
1829
1839
|
id,
|
|
@@ -1840,8 +1850,8 @@ function MenuCheckboxItem({
|
|
|
1840
1850
|
className
|
|
1841
1851
|
].filter(Boolean).join(" "),
|
|
1842
1852
|
children: ({ isSelected }) => /* @__PURE__ */ jsxs20(Fragment7, { children: [
|
|
1843
|
-
/* @__PURE__ */
|
|
1844
|
-
/* @__PURE__ */
|
|
1853
|
+
/* @__PURE__ */ jsx29("span", { className: "flex items-center justify-center w-4 h-4 shrink-0", children: isSelected && /* @__PURE__ */ jsx29(Check2, { size: 14, className: "text-[var(--color-action-primary)]", "aria-hidden": "true" }) }),
|
|
1854
|
+
/* @__PURE__ */ jsx29("span", { className: "flex-1", children })
|
|
1845
1855
|
] })
|
|
1846
1856
|
}
|
|
1847
1857
|
);
|
|
@@ -1852,7 +1862,7 @@ import {
|
|
|
1852
1862
|
MenuSection as AriaMenuSection,
|
|
1853
1863
|
Header
|
|
1854
1864
|
} from "react-aria-components";
|
|
1855
|
-
import { jsx as
|
|
1865
|
+
import { jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
1856
1866
|
function MenuSection({
|
|
1857
1867
|
header,
|
|
1858
1868
|
children,
|
|
@@ -1860,7 +1870,7 @@ function MenuSection({
|
|
|
1860
1870
|
className
|
|
1861
1871
|
}) {
|
|
1862
1872
|
return /* @__PURE__ */ jsxs21(AriaMenuSection, { className, "aria-label": ariaLabel, children: [
|
|
1863
|
-
header && /* @__PURE__ */
|
|
1873
|
+
header && /* @__PURE__ */ jsx30(
|
|
1864
1874
|
Header,
|
|
1865
1875
|
{
|
|
1866
1876
|
className: [
|
|
@@ -1879,16 +1889,16 @@ function MenuSection({
|
|
|
1879
1889
|
|
|
1880
1890
|
// src/components/Menu/MenuHeader.tsx
|
|
1881
1891
|
import { Header as Header2 } from "react-aria-components";
|
|
1882
|
-
import { jsx as
|
|
1892
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
1883
1893
|
function MenuHeader({ children, className }) {
|
|
1884
|
-
return /* @__PURE__ */
|
|
1894
|
+
return /* @__PURE__ */ jsx31(Header2, { className, children });
|
|
1885
1895
|
}
|
|
1886
1896
|
|
|
1887
1897
|
// src/components/Menu/MenuSeparator.tsx
|
|
1888
1898
|
import { Separator } from "react-aria-components";
|
|
1889
|
-
import { jsx as
|
|
1899
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
1890
1900
|
function MenuSeparator({ className }) {
|
|
1891
|
-
return /* @__PURE__ */
|
|
1901
|
+
return /* @__PURE__ */ jsx32(
|
|
1892
1902
|
Separator,
|
|
1893
1903
|
{
|
|
1894
1904
|
className: [
|
|
@@ -1906,12 +1916,12 @@ import {
|
|
|
1906
1916
|
Dialog as AriaDialog2,
|
|
1907
1917
|
Button as AriaButton3
|
|
1908
1918
|
} from "react-aria-components";
|
|
1909
|
-
import { Fragment as Fragment8, jsx as
|
|
1919
|
+
import { Fragment as Fragment8, jsx as jsx33 } from "react/jsx-runtime";
|
|
1910
1920
|
function Popover3({ children, isOpen, onOpenChange }) {
|
|
1911
|
-
return /* @__PURE__ */
|
|
1921
|
+
return /* @__PURE__ */ jsx33(DialogTrigger, { isOpen, onOpenChange, children });
|
|
1912
1922
|
}
|
|
1913
1923
|
function PopoverTrigger({ children, className }) {
|
|
1914
|
-
return /* @__PURE__ */
|
|
1924
|
+
return /* @__PURE__ */ jsx33(
|
|
1915
1925
|
AriaButton3,
|
|
1916
1926
|
{
|
|
1917
1927
|
className: [
|
|
@@ -1929,7 +1939,7 @@ function PopoverContent({
|
|
|
1929
1939
|
className,
|
|
1930
1940
|
children
|
|
1931
1941
|
}) {
|
|
1932
|
-
return /* @__PURE__ */
|
|
1942
|
+
return /* @__PURE__ */ jsx33(
|
|
1933
1943
|
AriaPopover,
|
|
1934
1944
|
{
|
|
1935
1945
|
placement,
|
|
@@ -1946,7 +1956,7 @@ function PopoverContent({
|
|
|
1946
1956
|
"entering:placement-right:slide-in-from-left-1",
|
|
1947
1957
|
className
|
|
1948
1958
|
].filter(Boolean).join(" "),
|
|
1949
|
-
children: /* @__PURE__ */
|
|
1959
|
+
children: /* @__PURE__ */ jsx33(AriaDialog2, { className: "outline-none", children: ({ close }) => /* @__PURE__ */ jsx33(Fragment8, { children: typeof children === "function" ? children({ close }) : children }) })
|
|
1950
1960
|
}
|
|
1951
1961
|
);
|
|
1952
1962
|
}
|
|
@@ -1960,7 +1970,7 @@ import {
|
|
|
1960
1970
|
Tab as AriaTab,
|
|
1961
1971
|
TabPanel as AriaTabPanel
|
|
1962
1972
|
} from "react-aria-components";
|
|
1963
|
-
import { jsx as
|
|
1973
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
1964
1974
|
var TabsContext = createContext4({
|
|
1965
1975
|
variant: "underline",
|
|
1966
1976
|
size: "md"
|
|
@@ -1978,7 +1988,7 @@ function Tabs({
|
|
|
1978
1988
|
children,
|
|
1979
1989
|
...props
|
|
1980
1990
|
}) {
|
|
1981
|
-
return /* @__PURE__ */
|
|
1991
|
+
return /* @__PURE__ */ jsx34(TabsContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ jsx34(
|
|
1982
1992
|
AriaTabs,
|
|
1983
1993
|
{
|
|
1984
1994
|
...props,
|
|
@@ -1998,7 +2008,7 @@ function TabList({
|
|
|
1998
2008
|
const { variant } = useContext4(TabsContext);
|
|
1999
2009
|
const baseStyles = variant === "unstyled" ? "flex items-center" : variant === "underline" ? "flex items-center border-b border-[var(--color-border-default)]" : "inline-flex items-center bg-[var(--color-surface-muted)] rounded-[var(--border-radius-lg)] p-1 gap-1";
|
|
2000
2010
|
const verticalStyles = variant === "unstyled" ? "flex-col" : variant === "underline" ? "flex-col border-b-0 border-r border-[var(--color-border-default)]" : "flex-col";
|
|
2001
|
-
return /* @__PURE__ */
|
|
2011
|
+
return /* @__PURE__ */ jsx34(
|
|
2002
2012
|
AriaTabList,
|
|
2003
2013
|
{
|
|
2004
2014
|
...props,
|
|
@@ -2012,7 +2022,7 @@ function TabList({
|
|
|
2012
2022
|
}
|
|
2013
2023
|
function Tab({ className, ...props }) {
|
|
2014
2024
|
const { variant, size } = useContext4(TabsContext);
|
|
2015
|
-
return /* @__PURE__ */
|
|
2025
|
+
return /* @__PURE__ */ jsx34(
|
|
2016
2026
|
AriaTab,
|
|
2017
2027
|
{
|
|
2018
2028
|
...props,
|
|
@@ -2069,7 +2079,7 @@ function getTabVariantStyles(variant, state) {
|
|
|
2069
2079
|
}
|
|
2070
2080
|
function TabPanel({ className, ...props }) {
|
|
2071
2081
|
const { variant } = useContext4(TabsContext);
|
|
2072
|
-
return /* @__PURE__ */
|
|
2082
|
+
return /* @__PURE__ */ jsx34(
|
|
2073
2083
|
AriaTabPanel,
|
|
2074
2084
|
{
|
|
2075
2085
|
...props,
|
|
@@ -2094,7 +2104,7 @@ import { useCallback as useCallback2, useImperativeHandle, useRef as useRef2, us
|
|
|
2094
2104
|
import { Tree as ArboristTree } from "react-arborist";
|
|
2095
2105
|
import { ChevronRight as ChevronRight2, Folder, File } from "lucide-react";
|
|
2096
2106
|
import { Check as Check3 } from "lucide-react";
|
|
2097
|
-
import { jsx as
|
|
2107
|
+
import { jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2098
2108
|
var rowHeightMap = {
|
|
2099
2109
|
compact: 32,
|
|
2100
2110
|
comfortable: 40
|
|
@@ -2152,7 +2162,7 @@ function NodeRenderer({
|
|
|
2152
2162
|
}
|
|
2153
2163
|
},
|
|
2154
2164
|
children: [
|
|
2155
|
-
/* @__PURE__ */
|
|
2165
|
+
/* @__PURE__ */ jsx35(
|
|
2156
2166
|
"button",
|
|
2157
2167
|
{
|
|
2158
2168
|
type: "button",
|
|
@@ -2170,7 +2180,7 @@ function NodeRenderer({
|
|
|
2170
2180
|
},
|
|
2171
2181
|
tabIndex: -1,
|
|
2172
2182
|
"aria-label": node.isOpen ? "Collapse" : "Expand",
|
|
2173
|
-
children: /* @__PURE__ */
|
|
2183
|
+
children: /* @__PURE__ */ jsx35(
|
|
2174
2184
|
ChevronRight2,
|
|
2175
2185
|
{
|
|
2176
2186
|
size: 14,
|
|
@@ -2182,7 +2192,7 @@ function NodeRenderer({
|
|
|
2182
2192
|
)
|
|
2183
2193
|
}
|
|
2184
2194
|
),
|
|
2185
|
-
isCheckbox && /* @__PURE__ */
|
|
2195
|
+
isCheckbox && /* @__PURE__ */ jsx35(
|
|
2186
2196
|
"div",
|
|
2187
2197
|
{
|
|
2188
2198
|
className: [
|
|
@@ -2193,7 +2203,7 @@ function NodeRenderer({
|
|
|
2193
2203
|
role: "checkbox",
|
|
2194
2204
|
"aria-checked": isChecked,
|
|
2195
2205
|
"aria-label": `Select ${data.name}`,
|
|
2196
|
-
children: isChecked && /* @__PURE__ */
|
|
2206
|
+
children: isChecked && /* @__PURE__ */ jsx35(
|
|
2197
2207
|
Check3,
|
|
2198
2208
|
{
|
|
2199
2209
|
className: "w-3 h-3 text-[var(--color-text-inverse)]",
|
|
@@ -2202,7 +2212,7 @@ function NodeRenderer({
|
|
|
2202
2212
|
)
|
|
2203
2213
|
}
|
|
2204
2214
|
),
|
|
2205
|
-
/* @__PURE__ */
|
|
2215
|
+
/* @__PURE__ */ jsx35(
|
|
2206
2216
|
IconComponent,
|
|
2207
2217
|
{
|
|
2208
2218
|
size: 16,
|
|
@@ -2210,7 +2220,7 @@ function NodeRenderer({
|
|
|
2210
2220
|
"aria-hidden": "true"
|
|
2211
2221
|
}
|
|
2212
2222
|
),
|
|
2213
|
-
/* @__PURE__ */
|
|
2223
|
+
/* @__PURE__ */ jsx35("span", { className: "truncate", children: data.name })
|
|
2214
2224
|
]
|
|
2215
2225
|
}
|
|
2216
2226
|
);
|
|
@@ -2276,13 +2286,13 @@ function Tree({
|
|
|
2276
2286
|
);
|
|
2277
2287
|
const arboristSearchMatch = searchMatch ? (node, term) => searchMatch(node.data, term) : void 0;
|
|
2278
2288
|
const selectionProp = selectionMode === "single" && selectedIds && selectedIds.size > 0 ? [...selectedIds][0] : void 0;
|
|
2279
|
-
return /* @__PURE__ */
|
|
2289
|
+
return /* @__PURE__ */ jsx35(
|
|
2280
2290
|
"div",
|
|
2281
2291
|
{
|
|
2282
2292
|
role: "tree",
|
|
2283
2293
|
"aria-label": ariaLabel,
|
|
2284
2294
|
className: ["outline-none overflow-hidden", className].filter(Boolean).join(" "),
|
|
2285
|
-
children: /* @__PURE__ */
|
|
2295
|
+
children: /* @__PURE__ */ jsx35(
|
|
2286
2296
|
ArboristTree,
|
|
2287
2297
|
{
|
|
2288
2298
|
ref: internalRef,
|
|
@@ -2301,7 +2311,7 @@ function Tree({
|
|
|
2301
2311
|
onSelect: handleSelect,
|
|
2302
2312
|
onActivate: handleActivate,
|
|
2303
2313
|
disableEdit: true,
|
|
2304
|
-
children: (props) => /* @__PURE__ */
|
|
2314
|
+
children: (props) => /* @__PURE__ */ jsx35(
|
|
2305
2315
|
NodeRenderer,
|
|
2306
2316
|
{
|
|
2307
2317
|
...props,
|
|
@@ -2326,7 +2336,7 @@ import {
|
|
|
2326
2336
|
ToggleButtonGroup as AriaToggleButtonGroup,
|
|
2327
2337
|
ToggleButton as AriaToggleButton2
|
|
2328
2338
|
} from "react-aria-components";
|
|
2329
|
-
import { jsx as
|
|
2339
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
2330
2340
|
var SegmentedControlContext = createContext5({
|
|
2331
2341
|
size: "md"
|
|
2332
2342
|
});
|
|
@@ -2346,7 +2356,7 @@ function SegmentedControl({
|
|
|
2346
2356
|
...props
|
|
2347
2357
|
}) {
|
|
2348
2358
|
const isNoneMode = selectionMode === "none";
|
|
2349
|
-
return /* @__PURE__ */
|
|
2359
|
+
return /* @__PURE__ */ jsx36(SegmentedControlContext.Provider, { value: { size }, children: /* @__PURE__ */ jsx36(
|
|
2350
2360
|
AriaToggleButtonGroup,
|
|
2351
2361
|
{
|
|
2352
2362
|
...props,
|
|
@@ -2367,7 +2377,7 @@ function SegmentedControlItem({
|
|
|
2367
2377
|
...props
|
|
2368
2378
|
}) {
|
|
2369
2379
|
const { size } = useContext5(SegmentedControlContext);
|
|
2370
|
-
return /* @__PURE__ */
|
|
2380
|
+
return /* @__PURE__ */ jsx36(
|
|
2371
2381
|
AriaToggleButton2,
|
|
2372
2382
|
{
|
|
2373
2383
|
...props,
|
|
@@ -2401,7 +2411,7 @@ import {
|
|
|
2401
2411
|
Info as Info2,
|
|
2402
2412
|
Microscope
|
|
2403
2413
|
} from "lucide-react";
|
|
2404
|
-
import { Fragment as Fragment9, jsx as
|
|
2414
|
+
import { Fragment as Fragment9, jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2405
2415
|
function getFileIcon(type, extension) {
|
|
2406
2416
|
if (type === "directory") return Folder2;
|
|
2407
2417
|
const ext = (extension ?? "").toLowerCase();
|
|
@@ -2427,7 +2437,7 @@ function FileIcon({
|
|
|
2427
2437
|
size = 16
|
|
2428
2438
|
}) {
|
|
2429
2439
|
const IconComponent = getFileIcon(type, extension);
|
|
2430
|
-
return /* @__PURE__ */
|
|
2440
|
+
return /* @__PURE__ */ jsx37(
|
|
2431
2441
|
IconComponent,
|
|
2432
2442
|
{
|
|
2433
2443
|
size,
|
|
@@ -2473,14 +2483,14 @@ function FileCard({
|
|
|
2473
2483
|
[onPress]
|
|
2474
2484
|
);
|
|
2475
2485
|
const cardContent = /* @__PURE__ */ jsxs23(Fragment9, { children: [
|
|
2476
|
-
/* @__PURE__ */
|
|
2486
|
+
/* @__PURE__ */ jsx37(
|
|
2477
2487
|
"div",
|
|
2478
2488
|
{
|
|
2479
2489
|
className: `shrink-0 overflow-hidden bg-[var(--color-neutral-900)] ${thumbnailClass}`,
|
|
2480
|
-
children: children ? /* @__PURE__ */
|
|
2490
|
+
children: children ? /* @__PURE__ */ jsx37("div", { className: "h-full w-full overflow-hidden", children }) : /* @__PURE__ */ jsx37("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsx37(IconComponent, { size: iconSize, className: iconColor }) })
|
|
2481
2491
|
}
|
|
2482
2492
|
),
|
|
2483
|
-
/* @__PURE__ */
|
|
2493
|
+
/* @__PURE__ */ jsx37(
|
|
2484
2494
|
"div",
|
|
2485
2495
|
{
|
|
2486
2496
|
className: [
|
|
@@ -2488,11 +2498,11 @@ function FileCard({
|
|
|
2488
2498
|
"bg-[var(--color-surface-default)]",
|
|
2489
2499
|
compact ? "px-2 py-1.5 rounded-b-[var(--border-radius-md)]" : "gap-0.5 px-3 py-2 rounded-b-[var(--border-radius-lg)]"
|
|
2490
2500
|
].join(" "),
|
|
2491
|
-
children: compact ? /* @__PURE__ */
|
|
2501
|
+
children: compact ? /* @__PURE__ */ jsx37("span", { className: "text-xs font-medium text-[var(--color-text-primary)] truncate", children: name }) : /* @__PURE__ */ jsxs23(Fragment9, { children: [
|
|
2492
2502
|
/* @__PURE__ */ jsxs23("span", { className: "flex items-center gap-1.5", children: [
|
|
2493
|
-
/* @__PURE__ */
|
|
2494
|
-
/* @__PURE__ */
|
|
2495
|
-
onInfo && /* @__PURE__ */
|
|
2503
|
+
/* @__PURE__ */ jsx37(FileIcon, { type, extension, size: 16 }),
|
|
2504
|
+
/* @__PURE__ */ jsx37("span", { className: "min-w-0 flex-1 text-sm font-medium text-[var(--color-text-primary)] truncate", children: name }),
|
|
2505
|
+
onInfo && /* @__PURE__ */ jsx37(
|
|
2496
2506
|
"span",
|
|
2497
2507
|
{
|
|
2498
2508
|
onClick: handleInfoClick,
|
|
@@ -2502,7 +2512,7 @@ function FileCard({
|
|
|
2502
2512
|
}
|
|
2503
2513
|
},
|
|
2504
2514
|
role: "presentation",
|
|
2505
|
-
children: /* @__PURE__ */
|
|
2515
|
+
children: /* @__PURE__ */ jsx37(
|
|
2506
2516
|
IconButton,
|
|
2507
2517
|
{
|
|
2508
2518
|
icon: Info2,
|
|
@@ -2516,7 +2526,7 @@ function FileCard({
|
|
|
2516
2526
|
}
|
|
2517
2527
|
)
|
|
2518
2528
|
] }),
|
|
2519
|
-
size && /* @__PURE__ */
|
|
2529
|
+
size && /* @__PURE__ */ jsx37("span", { className: "text-xs text-[var(--color-text-secondary)] tabular-nums pl-[22px]", children: size })
|
|
2520
2530
|
] })
|
|
2521
2531
|
}
|
|
2522
2532
|
)
|
|
@@ -2532,7 +2542,7 @@ function FileCard({
|
|
|
2532
2542
|
className
|
|
2533
2543
|
].filter(Boolean).join(" ");
|
|
2534
2544
|
if (href) {
|
|
2535
|
-
return /* @__PURE__ */
|
|
2545
|
+
return /* @__PURE__ */ jsx37(
|
|
2536
2546
|
"a",
|
|
2537
2547
|
{
|
|
2538
2548
|
href,
|
|
@@ -2543,7 +2553,7 @@ function FileCard({
|
|
|
2543
2553
|
);
|
|
2544
2554
|
}
|
|
2545
2555
|
if (onPress) {
|
|
2546
|
-
return /* @__PURE__ */
|
|
2556
|
+
return /* @__PURE__ */ jsx37(
|
|
2547
2557
|
"div",
|
|
2548
2558
|
{
|
|
2549
2559
|
role: "button",
|
|
@@ -2556,7 +2566,7 @@ function FileCard({
|
|
|
2556
2566
|
}
|
|
2557
2567
|
);
|
|
2558
2568
|
}
|
|
2559
|
-
return /* @__PURE__ */
|
|
2569
|
+
return /* @__PURE__ */ jsx37("div", { className: baseStyles, children: cardContent });
|
|
2560
2570
|
}
|
|
2561
2571
|
|
|
2562
2572
|
// src/components/StorageConnectionCard/StorageConnectionCard.tsx
|
|
@@ -2566,7 +2576,7 @@ import { twMerge as twMerge10 } from "tailwind-merge";
|
|
|
2566
2576
|
|
|
2567
2577
|
// src/components/Pill/Pill.tsx
|
|
2568
2578
|
import { twMerge as twMerge8 } from "tailwind-merge";
|
|
2569
|
-
import { jsx as
|
|
2579
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
2570
2580
|
var HASH_PALETTE = [
|
|
2571
2581
|
"teal",
|
|
2572
2582
|
// sky
|
|
@@ -2617,7 +2627,7 @@ function resolveColor(color, name) {
|
|
|
2617
2627
|
}
|
|
2618
2628
|
function Pill({ children, color, name, className }) {
|
|
2619
2629
|
const resolved = resolveColor(color, name);
|
|
2620
|
-
return /* @__PURE__ */
|
|
2630
|
+
return /* @__PURE__ */ jsx38(
|
|
2621
2631
|
"span",
|
|
2622
2632
|
{
|
|
2623
2633
|
className: twMerge8(
|
|
@@ -2634,7 +2644,7 @@ function Pill({ children, color, name, className }) {
|
|
|
2634
2644
|
|
|
2635
2645
|
// src/components/Pill/GroupPill.tsx
|
|
2636
2646
|
import { twMerge as twMerge9 } from "tailwind-merge";
|
|
2637
|
-
import { jsx as
|
|
2647
|
+
import { jsx as jsx39, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2638
2648
|
function GroupPill({
|
|
2639
2649
|
path,
|
|
2640
2650
|
visibleCount = 3,
|
|
@@ -2656,7 +2666,7 @@ function GroupPill({
|
|
|
2656
2666
|
children: [
|
|
2657
2667
|
hiddenSegments.map((segment, index) => {
|
|
2658
2668
|
const color = pillColorFromName(segment);
|
|
2659
|
-
return /* @__PURE__ */
|
|
2669
|
+
return /* @__PURE__ */ jsx39(
|
|
2660
2670
|
"span",
|
|
2661
2671
|
{
|
|
2662
2672
|
className: twMerge9(
|
|
@@ -2669,14 +2679,14 @@ function GroupPill({
|
|
|
2669
2679
|
`dot-${index}-${segment}`
|
|
2670
2680
|
);
|
|
2671
2681
|
}),
|
|
2672
|
-
visibleSegments.map((segment, index) => /* @__PURE__ */
|
|
2682
|
+
visibleSegments.map((segment, index) => /* @__PURE__ */ jsx39(Pill, { name: segment, children: segment }, `pill-${index}-${segment}`))
|
|
2673
2683
|
]
|
|
2674
2684
|
}
|
|
2675
2685
|
);
|
|
2676
2686
|
}
|
|
2677
2687
|
|
|
2678
2688
|
// src/components/StorageConnectionCard/StorageConnectionCard.tsx
|
|
2679
|
-
import { Fragment as Fragment10, jsx as
|
|
2689
|
+
import { Fragment as Fragment10, jsx as jsx40, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2680
2690
|
var statusDotStyles = {
|
|
2681
2691
|
connected: "bg-[var(--color-status-success)]",
|
|
2682
2692
|
error: "border-2 border-[var(--color-status-danger)] bg-transparent",
|
|
@@ -2692,7 +2702,7 @@ function ProviderBadge({ provider }) {
|
|
|
2692
2702
|
const config = providerConfig[provider.toLowerCase()];
|
|
2693
2703
|
const label = config?.label ?? provider;
|
|
2694
2704
|
const color = config?.color ?? "neutral";
|
|
2695
|
-
return /* @__PURE__ */
|
|
2705
|
+
return /* @__PURE__ */ jsx40(Pill, { color, children: label });
|
|
2696
2706
|
}
|
|
2697
2707
|
function PreviewArea({
|
|
2698
2708
|
status = "connected",
|
|
@@ -2700,11 +2710,11 @@ function PreviewArea({
|
|
|
2700
2710
|
children
|
|
2701
2711
|
}) {
|
|
2702
2712
|
if (status === "loading") {
|
|
2703
|
-
return /* @__PURE__ */
|
|
2713
|
+
return /* @__PURE__ */ jsx40("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsx40(Spinner, { size: "lg", "aria-label": "Loading connection" }) });
|
|
2704
2714
|
}
|
|
2705
2715
|
if (status === "error") {
|
|
2706
2716
|
return /* @__PURE__ */ jsxs25("div", { className: "flex h-full flex-col items-center justify-center gap-2 bg-[var(--color-surface-danger)] px-4", children: [
|
|
2707
|
-
/* @__PURE__ */
|
|
2717
|
+
/* @__PURE__ */ jsx40(
|
|
2708
2718
|
Icon,
|
|
2709
2719
|
{
|
|
2710
2720
|
icon: AlertCircle,
|
|
@@ -2712,13 +2722,13 @@ function PreviewArea({
|
|
|
2712
2722
|
className: "text-[var(--color-text-danger)]"
|
|
2713
2723
|
}
|
|
2714
2724
|
),
|
|
2715
|
-
errorMessage && /* @__PURE__ */
|
|
2725
|
+
errorMessage && /* @__PURE__ */ jsx40("p", { className: "text-center text-xs text-[var(--color-text-danger)]", children: errorMessage })
|
|
2716
2726
|
] });
|
|
2717
2727
|
}
|
|
2718
2728
|
if (children) {
|
|
2719
|
-
return /* @__PURE__ */
|
|
2729
|
+
return /* @__PURE__ */ jsx40("div", { className: "h-full w-full overflow-hidden", children });
|
|
2720
2730
|
}
|
|
2721
|
-
return /* @__PURE__ */
|
|
2731
|
+
return /* @__PURE__ */ jsx40("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsx40(
|
|
2722
2732
|
Icon,
|
|
2723
2733
|
{
|
|
2724
2734
|
icon: Database,
|
|
@@ -2761,10 +2771,10 @@ function StorageConnectionCard({
|
|
|
2761
2771
|
[onPress]
|
|
2762
2772
|
);
|
|
2763
2773
|
const cardContent = /* @__PURE__ */ jsxs25(Fragment10, { children: [
|
|
2764
|
-
/* @__PURE__ */
|
|
2774
|
+
/* @__PURE__ */ jsx40("div", { className: "aspect-[4/3] bg-[var(--color-neutral-900)] overflow-hidden rounded-t-[var(--border-radius-lg)]", children: /* @__PURE__ */ jsx40(PreviewArea, { status, errorMessage, children }) }),
|
|
2765
2775
|
/* @__PURE__ */ jsxs25("div", { className: "flex flex-col gap-1.5 border-t border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-2.5 rounded-b-[var(--border-radius-lg)]", children: [
|
|
2766
2776
|
/* @__PURE__ */ jsxs25("div", { className: "flex items-start gap-2", children: [
|
|
2767
|
-
status && /* @__PURE__ */
|
|
2777
|
+
status && /* @__PURE__ */ jsx40(
|
|
2768
2778
|
"span",
|
|
2769
2779
|
{
|
|
2770
2780
|
className: twMerge10(
|
|
@@ -2774,8 +2784,8 @@ function StorageConnectionCard({
|
|
|
2774
2784
|
"aria-label": `Status: ${status}`
|
|
2775
2785
|
}
|
|
2776
2786
|
),
|
|
2777
|
-
/* @__PURE__ */
|
|
2778
|
-
onInfo && /* @__PURE__ */
|
|
2787
|
+
/* @__PURE__ */ jsx40("span", { className: "min-w-0 flex-1 line-clamp-2 text-sm font-medium text-[var(--color-text-primary)]", children: name }),
|
|
2788
|
+
onInfo && /* @__PURE__ */ jsx40(
|
|
2779
2789
|
"span",
|
|
2780
2790
|
{
|
|
2781
2791
|
onClick: handleInfoPress,
|
|
@@ -2785,7 +2795,7 @@ function StorageConnectionCard({
|
|
|
2785
2795
|
}
|
|
2786
2796
|
},
|
|
2787
2797
|
role: "presentation",
|
|
2788
|
-
children: /* @__PURE__ */
|
|
2798
|
+
children: /* @__PURE__ */ jsx40(
|
|
2789
2799
|
IconButton,
|
|
2790
2800
|
{
|
|
2791
2801
|
icon: Info3,
|
|
@@ -2800,8 +2810,8 @@ function StorageConnectionCard({
|
|
|
2800
2810
|
)
|
|
2801
2811
|
] }),
|
|
2802
2812
|
(provider || imageCount != null && (!status || status === "connected")) && /* @__PURE__ */ jsxs25("div", { className: twMerge10("flex items-center gap-2", status && "pl-4"), children: [
|
|
2803
|
-
provider && /* @__PURE__ */
|
|
2804
|
-
provider && region && /* @__PURE__ */
|
|
2813
|
+
provider && /* @__PURE__ */ jsx40(ProviderBadge, { provider }),
|
|
2814
|
+
provider && region && /* @__PURE__ */ jsx40("span", { className: "shrink-0 text-xs text-[var(--color-text-secondary)]", children: region }),
|
|
2805
2815
|
imageCount != null && (!status || status === "connected") && /* @__PURE__ */ jsxs25("span", { className: "ml-auto shrink-0 text-xs tabular-nums text-[var(--color-text-secondary)]", children: [
|
|
2806
2816
|
imageCount,
|
|
2807
2817
|
" ",
|
|
@@ -2819,10 +2829,10 @@ function StorageConnectionCard({
|
|
|
2819
2829
|
className
|
|
2820
2830
|
);
|
|
2821
2831
|
if (href) {
|
|
2822
|
-
return /* @__PURE__ */
|
|
2832
|
+
return /* @__PURE__ */ jsx40("a", { href, className: twMerge10(baseStyles, "no-underline"), children: cardContent });
|
|
2823
2833
|
}
|
|
2824
2834
|
if (onPress) {
|
|
2825
|
-
return /* @__PURE__ */
|
|
2835
|
+
return /* @__PURE__ */ jsx40(
|
|
2826
2836
|
"div",
|
|
2827
2837
|
{
|
|
2828
2838
|
role: "button",
|
|
@@ -2834,12 +2844,12 @@ function StorageConnectionCard({
|
|
|
2834
2844
|
}
|
|
2835
2845
|
);
|
|
2836
2846
|
}
|
|
2837
|
-
return /* @__PURE__ */
|
|
2847
|
+
return /* @__PURE__ */ jsx40("div", { className: baseStyles, children: cardContent });
|
|
2838
2848
|
}
|
|
2839
2849
|
|
|
2840
2850
|
// src/components/Badge/Badge.tsx
|
|
2841
2851
|
import { twMerge as twMerge11 } from "tailwind-merge";
|
|
2842
|
-
import { jsx as
|
|
2852
|
+
import { jsx as jsx41, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
2843
2853
|
var variantStyles4 = {
|
|
2844
2854
|
neutral: "bg-[var(--color-badge-neutral-bg)] text-[var(--color-badge-neutral-text)]",
|
|
2845
2855
|
purple: "bg-[var(--color-badge-purple-bg)] text-[var(--color-badge-purple-text)]",
|
|
@@ -2875,7 +2885,7 @@ function Badge({
|
|
|
2875
2885
|
className
|
|
2876
2886
|
),
|
|
2877
2887
|
children: [
|
|
2878
|
-
IconComponent && /* @__PURE__ */
|
|
2888
|
+
IconComponent && /* @__PURE__ */ jsx41(IconComponent, { size: iconSizeMap4[size], "aria-hidden": "true" }),
|
|
2879
2889
|
children
|
|
2880
2890
|
]
|
|
2881
2891
|
}
|
|
@@ -2885,7 +2895,7 @@ function Badge({
|
|
|
2885
2895
|
// src/components/Card/Card.tsx
|
|
2886
2896
|
import { useCallback as useCallback5 } from "react";
|
|
2887
2897
|
import { twMerge as twMerge12 } from "tailwind-merge";
|
|
2888
|
-
import { Fragment as Fragment11, jsx as
|
|
2898
|
+
import { Fragment as Fragment11, jsx as jsx42, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
2889
2899
|
var paddingStyles = {
|
|
2890
2900
|
none: "p-0",
|
|
2891
2901
|
sm: "p-3",
|
|
@@ -2919,7 +2929,7 @@ function Card({
|
|
|
2919
2929
|
[onPress]
|
|
2920
2930
|
);
|
|
2921
2931
|
const content = /* @__PURE__ */ jsxs27(Fragment11, { children: [
|
|
2922
|
-
header && /* @__PURE__ */
|
|
2932
|
+
header && /* @__PURE__ */ jsx42(
|
|
2923
2933
|
"div",
|
|
2924
2934
|
{
|
|
2925
2935
|
className: twMerge12(
|
|
@@ -2929,8 +2939,8 @@ function Card({
|
|
|
2929
2939
|
children: header
|
|
2930
2940
|
}
|
|
2931
2941
|
),
|
|
2932
|
-
/* @__PURE__ */
|
|
2933
|
-
footer && /* @__PURE__ */
|
|
2942
|
+
/* @__PURE__ */ jsx42("div", { className: paddingStyles[padding], children }),
|
|
2943
|
+
footer && /* @__PURE__ */ jsx42(
|
|
2934
2944
|
"div",
|
|
2935
2945
|
{
|
|
2936
2946
|
className: twMerge12(
|
|
@@ -2942,10 +2952,10 @@ function Card({
|
|
|
2942
2952
|
)
|
|
2943
2953
|
] });
|
|
2944
2954
|
if (href) {
|
|
2945
|
-
return /* @__PURE__ */
|
|
2955
|
+
return /* @__PURE__ */ jsx42("a", { href, className: containerClass, children: content });
|
|
2946
2956
|
}
|
|
2947
2957
|
if (onPress) {
|
|
2948
|
-
return /* @__PURE__ */
|
|
2958
|
+
return /* @__PURE__ */ jsx42(
|
|
2949
2959
|
"div",
|
|
2950
2960
|
{
|
|
2951
2961
|
role: "button",
|
|
@@ -2957,13 +2967,13 @@ function Card({
|
|
|
2957
2967
|
}
|
|
2958
2968
|
);
|
|
2959
2969
|
}
|
|
2960
|
-
return /* @__PURE__ */
|
|
2970
|
+
return /* @__PURE__ */ jsx42("div", { className: containerClass, children: content });
|
|
2961
2971
|
}
|
|
2962
2972
|
|
|
2963
2973
|
// src/components/DeltaIndicator/DeltaIndicator.tsx
|
|
2964
2974
|
import { ArrowUp, ArrowDown, Minus } from "lucide-react";
|
|
2965
2975
|
import { twMerge as twMerge13 } from "tailwind-merge";
|
|
2966
|
-
import { jsx as
|
|
2976
|
+
import { jsx as jsx43, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
2967
2977
|
function getDirection(current, previous) {
|
|
2968
2978
|
const diff = current - previous;
|
|
2969
2979
|
if (diff > 0) return "increase";
|
|
@@ -3025,7 +3035,7 @@ function DeltaIndicator({
|
|
|
3025
3035
|
className
|
|
3026
3036
|
),
|
|
3027
3037
|
children: [
|
|
3028
|
-
label && /* @__PURE__ */
|
|
3038
|
+
label && /* @__PURE__ */ jsx43("span", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-secondary)] mr-1", children: label }),
|
|
3029
3039
|
unavailableText
|
|
3030
3040
|
]
|
|
3031
3041
|
}
|
|
@@ -3069,8 +3079,8 @@ function DeltaIndicator({
|
|
|
3069
3079
|
className
|
|
3070
3080
|
),
|
|
3071
3081
|
children: [
|
|
3072
|
-
label && /* @__PURE__ */
|
|
3073
|
-
/* @__PURE__ */
|
|
3082
|
+
label && /* @__PURE__ */ jsx43("span", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-secondary)] mr-1", children: label }),
|
|
3083
|
+
/* @__PURE__ */ jsx43(IconComponent, { size: 14, "aria-hidden": true }),
|
|
3074
3084
|
valueText
|
|
3075
3085
|
]
|
|
3076
3086
|
}
|
|
@@ -3079,7 +3089,7 @@ function DeltaIndicator({
|
|
|
3079
3089
|
|
|
3080
3090
|
// src/components/ProgressBar/ProgressBar.tsx
|
|
3081
3091
|
import { twMerge as twMerge14 } from "tailwind-merge";
|
|
3082
|
-
import { jsx as
|
|
3092
|
+
import { jsx as jsx44, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
3083
3093
|
var fillStyles = {
|
|
3084
3094
|
brand: "bg-[var(--color-progress-fill)]",
|
|
3085
3095
|
success: "bg-[var(--color-progress-fill-success)]",
|
|
@@ -3104,10 +3114,10 @@ function ProgressBar({
|
|
|
3104
3114
|
const clampedValue = Math.min(100, Math.max(0, value));
|
|
3105
3115
|
return /* @__PURE__ */ jsxs29("div", { className: twMerge14("w-full", className), children: [
|
|
3106
3116
|
(label || description || showValue) && /* @__PURE__ */ jsxs29("div", { className: "flex items-center justify-between mb-2", children: [
|
|
3107
|
-
/* @__PURE__ */
|
|
3108
|
-
/* @__PURE__ */
|
|
3117
|
+
/* @__PURE__ */ jsx44("span", { className: "text-[length:var(--font-size-sm)] font-[number:var(--font-weight-medium)] text-[var(--color-text-primary)]", children: label }),
|
|
3118
|
+
/* @__PURE__ */ jsx44("span", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-secondary)]", children: description ?? (showValue ? `${clampedValue}%` : null) })
|
|
3109
3119
|
] }),
|
|
3110
|
-
/* @__PURE__ */
|
|
3120
|
+
/* @__PURE__ */ jsx44(
|
|
3111
3121
|
"div",
|
|
3112
3122
|
{
|
|
3113
3123
|
role: "progressbar",
|
|
@@ -3119,7 +3129,7 @@ function ProgressBar({
|
|
|
3119
3129
|
"w-full rounded-[var(--border-radius-full)] bg-[var(--color-progress-track)]",
|
|
3120
3130
|
sizeStyles9[size]
|
|
3121
3131
|
),
|
|
3122
|
-
children: /* @__PURE__ */
|
|
3132
|
+
children: /* @__PURE__ */ jsx44(
|
|
3123
3133
|
"div",
|
|
3124
3134
|
{
|
|
3125
3135
|
className: twMerge14(
|
|
@@ -3144,7 +3154,7 @@ import {
|
|
|
3144
3154
|
X as X3
|
|
3145
3155
|
} from "lucide-react";
|
|
3146
3156
|
import { twMerge as twMerge15 } from "tailwind-merge";
|
|
3147
|
-
import { jsx as
|
|
3157
|
+
import { jsx as jsx45, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
3148
3158
|
var variantConfig2 = {
|
|
3149
3159
|
info: {
|
|
3150
3160
|
icon: Info4,
|
|
@@ -3199,7 +3209,7 @@ function Banner({
|
|
|
3199
3209
|
className
|
|
3200
3210
|
),
|
|
3201
3211
|
children: [
|
|
3202
|
-
/* @__PURE__ */
|
|
3212
|
+
/* @__PURE__ */ jsx45(
|
|
3203
3213
|
IconComponent,
|
|
3204
3214
|
{
|
|
3205
3215
|
size: 20,
|
|
@@ -3214,14 +3224,14 @@ function Banner({
|
|
|
3214
3224
|
] }),
|
|
3215
3225
|
children
|
|
3216
3226
|
] }),
|
|
3217
|
-
dismissible && /* @__PURE__ */
|
|
3227
|
+
dismissible && /* @__PURE__ */ jsx45(
|
|
3218
3228
|
"button",
|
|
3219
3229
|
{
|
|
3220
3230
|
type: "button",
|
|
3221
3231
|
onClick: handleDismiss,
|
|
3222
3232
|
className: "shrink-0 rounded-[var(--border-radius-sm)] p-0.5 opacity-70 hover:opacity-100 transition-opacity outline-none focus-visible:ring-2 focus-visible:ring-current",
|
|
3223
3233
|
"aria-label": "Dismiss",
|
|
3224
|
-
children: /* @__PURE__ */
|
|
3234
|
+
children: /* @__PURE__ */ jsx45(X3, { size: 16, "aria-hidden": "true" })
|
|
3225
3235
|
}
|
|
3226
3236
|
)
|
|
3227
3237
|
]
|
|
@@ -3231,7 +3241,7 @@ function Banner({
|
|
|
3231
3241
|
|
|
3232
3242
|
// src/components/MetricCard/MetricCard.tsx
|
|
3233
3243
|
import { twMerge as twMerge16 } from "tailwind-merge";
|
|
3234
|
-
import { Fragment as Fragment12, jsx as
|
|
3244
|
+
import { Fragment as Fragment12, jsx as jsx46, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
3235
3245
|
var sizeConfig = {
|
|
3236
3246
|
sm: {
|
|
3237
3247
|
padding: "p-3",
|
|
@@ -3260,8 +3270,8 @@ function MetricCard({
|
|
|
3260
3270
|
className
|
|
3261
3271
|
);
|
|
3262
3272
|
const content = /* @__PURE__ */ jsxs31(Fragment12, { children: [
|
|
3263
|
-
/* @__PURE__ */
|
|
3264
|
-
/* @__PURE__ */
|
|
3273
|
+
/* @__PURE__ */ jsx46("div", { className: twMerge16(config.labelClass, "text-[var(--color-text-secondary)]"), children: label }),
|
|
3274
|
+
/* @__PURE__ */ jsx46(
|
|
3265
3275
|
"div",
|
|
3266
3276
|
{
|
|
3267
3277
|
className: twMerge16(
|
|
@@ -3271,17 +3281,17 @@ function MetricCard({
|
|
|
3271
3281
|
children: value
|
|
3272
3282
|
}
|
|
3273
3283
|
),
|
|
3274
|
-
secondary && /* @__PURE__ */
|
|
3284
|
+
secondary && /* @__PURE__ */ jsx46("div", { className: "mt-1 text-sm", children: secondary })
|
|
3275
3285
|
] });
|
|
3276
3286
|
if (href) {
|
|
3277
|
-
return /* @__PURE__ */
|
|
3287
|
+
return /* @__PURE__ */ jsx46("a", { href, className: containerClass, children: content });
|
|
3278
3288
|
}
|
|
3279
|
-
return /* @__PURE__ */
|
|
3289
|
+
return /* @__PURE__ */ jsx46("div", { className: containerClass, children: content });
|
|
3280
3290
|
}
|
|
3281
3291
|
|
|
3282
3292
|
// src/components/SectionHeader/SectionHeader.tsx
|
|
3283
3293
|
import { twMerge as twMerge17 } from "tailwind-merge";
|
|
3284
|
-
import { jsx as
|
|
3294
|
+
import { jsx as jsx47, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
3285
3295
|
function SectionHeader({
|
|
3286
3296
|
title,
|
|
3287
3297
|
children,
|
|
@@ -3295,8 +3305,8 @@ function SectionHeader({
|
|
|
3295
3305
|
className
|
|
3296
3306
|
),
|
|
3297
3307
|
children: [
|
|
3298
|
-
/* @__PURE__ */
|
|
3299
|
-
children && /* @__PURE__ */
|
|
3308
|
+
/* @__PURE__ */ jsx47(H2, { children: title }),
|
|
3309
|
+
children && /* @__PURE__ */ jsx47("div", { className: "ml-auto flex flex-wrap items-center gap-[var(--spacing-2)]", children })
|
|
3300
3310
|
]
|
|
3301
3311
|
}
|
|
3302
3312
|
);
|
|
@@ -3304,7 +3314,7 @@ function SectionHeader({
|
|
|
3304
3314
|
|
|
3305
3315
|
// src/components/FormWizard/FormWizard.tsx
|
|
3306
3316
|
import { createContext as createContext6, useContext as useContext6, useCallback as useCallback6, useMemo } from "react";
|
|
3307
|
-
import { jsx as
|
|
3317
|
+
import { jsx as jsx48 } from "react/jsx-runtime";
|
|
3308
3318
|
var FormWizardContext = createContext6({
|
|
3309
3319
|
currentStep: 0,
|
|
3310
3320
|
totalSteps: 1,
|
|
@@ -3339,13 +3349,13 @@ function FormWizard({
|
|
|
3339
3349
|
}),
|
|
3340
3350
|
[currentStep, totalSteps, canGoBack, goBack, isLastStep]
|
|
3341
3351
|
);
|
|
3342
|
-
return /* @__PURE__ */
|
|
3352
|
+
return /* @__PURE__ */ jsx48(FormWizardContext.Provider, { value, children });
|
|
3343
3353
|
}
|
|
3344
3354
|
|
|
3345
3355
|
// src/components/FormWizard/FormWizardProgress.tsx
|
|
3346
|
-
import { jsx as
|
|
3356
|
+
import { jsx as jsx49, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
3347
3357
|
function CheckIcon2() {
|
|
3348
|
-
return /* @__PURE__ */
|
|
3358
|
+
return /* @__PURE__ */ jsx49(
|
|
3349
3359
|
"svg",
|
|
3350
3360
|
{
|
|
3351
3361
|
"aria-hidden": "true",
|
|
@@ -3356,13 +3366,13 @@ function CheckIcon2() {
|
|
|
3356
3366
|
strokeWidth: "2",
|
|
3357
3367
|
strokeLinecap: "round",
|
|
3358
3368
|
strokeLinejoin: "round",
|
|
3359
|
-
children: /* @__PURE__ */
|
|
3369
|
+
children: /* @__PURE__ */ jsx49("path", { d: "M3 8.5l3.5 3.5 6.5-7" })
|
|
3360
3370
|
}
|
|
3361
3371
|
);
|
|
3362
3372
|
}
|
|
3363
3373
|
function FormWizardProgress({ labels }) {
|
|
3364
3374
|
const { currentStep, totalSteps } = useFormWizard();
|
|
3365
|
-
return /* @__PURE__ */
|
|
3375
|
+
return /* @__PURE__ */ jsx49("nav", { "aria-label": "Form progress", children: /* @__PURE__ */ jsx49("ol", { className: "flex items-start", role: "list", children: labels.map((label, index) => {
|
|
3366
3376
|
const isCompleted = index < currentStep;
|
|
3367
3377
|
const isCurrent = index === currentStep;
|
|
3368
3378
|
const isFuture = index > currentStep;
|
|
@@ -3373,7 +3383,7 @@ function FormWizardProgress({ labels }) {
|
|
|
3373
3383
|
"aria-current": isCurrent ? "step" : void 0,
|
|
3374
3384
|
children: [
|
|
3375
3385
|
/* @__PURE__ */ jsxs33("div", { className: "flex w-full items-center", children: [
|
|
3376
|
-
index > 0 ? /* @__PURE__ */
|
|
3386
|
+
index > 0 ? /* @__PURE__ */ jsx49(
|
|
3377
3387
|
"div",
|
|
3378
3388
|
{
|
|
3379
3389
|
"aria-hidden": "true",
|
|
@@ -3382,8 +3392,8 @@ function FormWizardProgress({ labels }) {
|
|
|
3382
3392
|
index <= currentStep ? "bg-[var(--color-brand-primary)]" : "bg-[var(--color-border-default)]"
|
|
3383
3393
|
].join(" ")
|
|
3384
3394
|
}
|
|
3385
|
-
) : /* @__PURE__ */
|
|
3386
|
-
/* @__PURE__ */
|
|
3395
|
+
) : /* @__PURE__ */ jsx49("div", { className: "flex-1", "aria-hidden": "true" }),
|
|
3396
|
+
/* @__PURE__ */ jsx49(
|
|
3387
3397
|
"div",
|
|
3388
3398
|
{
|
|
3389
3399
|
className: [
|
|
@@ -3395,10 +3405,10 @@ function FormWizardProgress({ labels }) {
|
|
|
3395
3405
|
isFuture ? "border-2 border-[var(--color-border-default)] bg-[var(--color-surface-default)] text-[var(--color-text-tertiary)]" : ""
|
|
3396
3406
|
].join(" "),
|
|
3397
3407
|
"aria-hidden": "true",
|
|
3398
|
-
children: isCompleted ? /* @__PURE__ */
|
|
3408
|
+
children: isCompleted ? /* @__PURE__ */ jsx49(CheckIcon2, {}) : index + 1
|
|
3399
3409
|
}
|
|
3400
3410
|
),
|
|
3401
|
-
index < totalSteps - 1 ? /* @__PURE__ */
|
|
3411
|
+
index < totalSteps - 1 ? /* @__PURE__ */ jsx49(
|
|
3402
3412
|
"div",
|
|
3403
3413
|
{
|
|
3404
3414
|
"aria-hidden": "true",
|
|
@@ -3407,9 +3417,9 @@ function FormWizardProgress({ labels }) {
|
|
|
3407
3417
|
index < currentStep ? "bg-[var(--color-brand-primary)]" : "bg-[var(--color-border-default)]"
|
|
3408
3418
|
].join(" ")
|
|
3409
3419
|
}
|
|
3410
|
-
) : /* @__PURE__ */
|
|
3420
|
+
) : /* @__PURE__ */ jsx49("div", { className: "flex-1", "aria-hidden": "true" })
|
|
3411
3421
|
] }),
|
|
3412
|
-
/* @__PURE__ */
|
|
3422
|
+
/* @__PURE__ */ jsx49(
|
|
3413
3423
|
"span",
|
|
3414
3424
|
{
|
|
3415
3425
|
className: [
|
|
@@ -3427,7 +3437,7 @@ function FormWizardProgress({ labels }) {
|
|
|
3427
3437
|
}
|
|
3428
3438
|
|
|
3429
3439
|
// src/components/FormWizard/FormWizardNav.tsx
|
|
3430
|
-
import { jsx as
|
|
3440
|
+
import { jsx as jsx50, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
3431
3441
|
function FormWizardNav({
|
|
3432
3442
|
onNext,
|
|
3433
3443
|
isSubmitting = false,
|
|
@@ -3435,7 +3445,7 @@ function FormWizardNav({
|
|
|
3435
3445
|
}) {
|
|
3436
3446
|
const { canGoBack, goBack, isLastStep } = useFormWizard();
|
|
3437
3447
|
return /* @__PURE__ */ jsxs34("div", { className: "flex items-center justify-end gap-[var(--spacing-3)]", children: [
|
|
3438
|
-
canGoBack && /* @__PURE__ */
|
|
3448
|
+
canGoBack && /* @__PURE__ */ jsx50(
|
|
3439
3449
|
Button,
|
|
3440
3450
|
{
|
|
3441
3451
|
variant: "secondary",
|
|
@@ -3445,7 +3455,7 @@ function FormWizardNav({
|
|
|
3445
3455
|
children: "Back"
|
|
3446
3456
|
}
|
|
3447
3457
|
),
|
|
3448
|
-
/* @__PURE__ */
|
|
3458
|
+
/* @__PURE__ */ jsx50(
|
|
3449
3459
|
Button,
|
|
3450
3460
|
{
|
|
3451
3461
|
variant: "primary",
|