@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 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 jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
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__ */ jsx10(IconComponent, { size: 20, className: ["shrink-0 mt-0.5", config.iconClass].join(" "), "aria-hidden": "true" }),
887
- /* @__PURE__ */ jsx10("p", { className: "flex-1 text-[length:var(--font-size-sm)] font-[number:var(--font-weight-medium)]", children: toast.message }),
888
- /* @__PURE__ */ jsx10(
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__ */ jsx10(X2, { size: 16, "aria-hidden": "true" })
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__ */ jsx10(PlacementContext.Provider, { value: placement, children: /* @__PURE__ */ jsx10("div", { className: containerPositionStyles[placement], children: toasts.map((toast) => /* @__PURE__ */ jsx10(ToastItem, { toast, onRemove: removeToast }, toast.id)) }) }),
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__ */ jsx10(ToastContainer, { toasts, removeToast, placement })
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 jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
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__ */ jsx11(Icon, { icon, size: "xl", className: "text-[var(--color-text-tertiary)]" }),
981
- /* @__PURE__ */ jsx11("h3", { className: "text-[length:var(--font-size-lg)] font-[number:var(--font-weight-semibold)] text-[var(--color-text-primary)] mt-4", children: title }),
982
- description && /* @__PURE__ */ jsx11("p", { className: "text-sm text-[var(--color-text-secondary)] mt-2 max-w-sm", children: description }),
983
- action && /* @__PURE__ */ jsx11("div", { className: "mt-6", children: action })
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 jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
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__ */ jsx12(
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__ */ jsx12(Check, { className: "w-4 h-4 text-[var(--color-text-inverse)]", strokeWidth: 3 }),
1017
- isIndeterminate && /* @__PURE__ */ jsx12("div", { className: "w-3 h-0.5 bg-[var(--color-text-inverse)] rounded-full" })
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__ */ jsx12("span", { children })
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 jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
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__ */ jsx13(
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__ */ jsx13(
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__ */ jsx13(
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__ */ jsx13("span", { children })
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 jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
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__ */ jsx14(
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__ */ jsx14(
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__ */ jsx14(
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__ */ jsx14("div", { className: "w-2.5 h-2.5 rounded-full bg-[var(--color-action-primary)]" })
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__ */ jsx14("span", { children })
1137
+ children && /* @__PURE__ */ jsx15("span", { children })
1128
1138
  ] })
1129
1139
  }
1130
1140
  );
1131
1141
  }
1132
1142
  function RadioButton({ children, className, ...props }) {
1133
- return /* @__PURE__ */ jsx14(
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__ */ jsx14(
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 jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
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__ */ jsx15(
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 jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
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__ */ jsx16(Label3, { isRequired, children: label }),
1220
+ label && /* @__PURE__ */ jsx17(Label3, { isRequired, children: label }),
1211
1221
  children,
1212
- description && !errorMessage && /* @__PURE__ */ jsx16("p", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-secondary)]", children: description }),
1213
- errorMessage && /* @__PURE__ */ jsx16("p", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-danger)]", children: errorMessage })
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 jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
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__ */ jsx17(
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 jsx18 } from "react/jsx-runtime";
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__ */ jsx18(
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__ */ jsx18(
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 jsx19 } from "react/jsx-runtime";
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__ */ jsx19(
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 jsx20 } from "react/jsx-runtime";
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__ */ jsx20(
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__ */ jsx20(
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__ */ jsx20(Heading2, { ...props, as: "h2", size: props.size ?? "xl" });
1378
+ return /* @__PURE__ */ jsx21(Heading2, { ...props, as: "h2", size: props.size ?? "xl" });
1369
1379
  }
1370
1380
  function H3(props) {
1371
- return /* @__PURE__ */ jsx20(Heading2, { ...props, as: "h3", size: props.size ?? "lg" });
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 jsx21 } from "react/jsx-runtime";
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__ */ jsx21(
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 jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
1425
+ import { Fragment as Fragment6, jsx as jsx23, jsxs as jsxs16 } from "react/jsx-runtime";
1416
1426
  function Breadcrumbs({ items, className }) {
1417
- return /* @__PURE__ */ jsx22(
1427
+ return /* @__PURE__ */ jsx23(
1418
1428
  "nav",
1419
1429
  {
1420
1430
  "aria-label": "Breadcrumb",
1421
1431
  className,
1422
- children: /* @__PURE__ */ jsx22(
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__ */ jsx22(
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__ */ jsx22("span", { className: "font-[number:var(--font-weight-medium)] text-[var(--color-text-primary)] truncate", children: item.label }) : /* @__PURE__ */ jsxs16(Fragment6, { children: [
1437
- /* @__PURE__ */ jsx22(
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__ */ jsx22(
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 jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
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__ */ jsx23(Icon, { icon: iconLeft, size: iconSizeMap3[size] }),
1510
+ iconLeft && /* @__PURE__ */ jsx24(Icon, { icon: iconLeft, size: iconSizeMap3[size] }),
1501
1511
  children,
1502
- iconRight && /* @__PURE__ */ jsx23(Icon, { icon: iconRight, size: iconSizeMap3[size] })
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__ */ jsx23(
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__ */ jsx23(Icon, { icon, size: iconSizeMap3[size] })
1546
+ children: /* @__PURE__ */ jsx24(Icon, { icon, size: iconSizeMap3[size] })
1537
1547
  }
1538
1548
  );
1539
1549
  if (showTooltip) {
1540
- return /* @__PURE__ */ jsx23(Tooltip, { content: ariaLabel, placement: tooltipPlacement, children: link });
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 jsx24 } from "react/jsx-runtime";
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__ */ jsx24(
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 jsx25 } from "react/jsx-runtime";
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__ */ jsx25(ToggleButtonGroupContext.Provider, { value: { size }, children: /* @__PURE__ */ jsx25(
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__ */ jsx25(
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 jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
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__ */ jsx26(
1730
+ /* @__PURE__ */ jsx27(
1721
1731
  Popover2,
1722
1732
  {
1723
1733
  className: [popoverStyles, className].filter(Boolean).join(" "),
1724
- children: items ? /* @__PURE__ */ jsx26(
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__ */ jsx26(Icon, { icon: item.icon, size: "sm" }),
1752
- /* @__PURE__ */ jsx26("span", { className: "flex-1", children: item.label }),
1753
- item.endContent && /* @__PURE__ */ jsx26("span", { className: "ml-auto flex items-center", children: item.endContent })
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__ */ jsx26(
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 jsx27, jsxs as jsxs19 } from "react/jsx-runtime";
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__ */ jsx27(Icon, { icon, size: "sm" }),
1808
- /* @__PURE__ */ jsx27("span", { className: "flex-1", children }),
1809
- endContent && /* @__PURE__ */ jsx27("span", { className: "ml-auto flex items-center", children: endContent })
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 jsx28, jsxs as jsxs20 } from "react/jsx-runtime";
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__ */ jsx28(
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__ */ jsx28("span", { className: "flex items-center justify-center w-4 h-4 shrink-0", children: isSelected && /* @__PURE__ */ jsx28(Check2, { size: 14, className: "text-[var(--color-action-primary)]", "aria-hidden": "true" }) }),
1844
- /* @__PURE__ */ jsx28("span", { className: "flex-1", children })
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 jsx29, jsxs as jsxs21 } from "react/jsx-runtime";
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__ */ jsx29(
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 jsx30 } from "react/jsx-runtime";
1892
+ import { jsx as jsx31 } from "react/jsx-runtime";
1883
1893
  function MenuHeader({ children, className }) {
1884
- return /* @__PURE__ */ jsx30(Header2, { className, children });
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 jsx31 } from "react/jsx-runtime";
1899
+ import { jsx as jsx32 } from "react/jsx-runtime";
1890
1900
  function MenuSeparator({ className }) {
1891
- return /* @__PURE__ */ jsx31(
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 jsx32 } from "react/jsx-runtime";
1919
+ import { Fragment as Fragment8, jsx as jsx33 } from "react/jsx-runtime";
1910
1920
  function Popover3({ children, isOpen, onOpenChange }) {
1911
- return /* @__PURE__ */ jsx32(DialogTrigger, { isOpen, onOpenChange, children });
1921
+ return /* @__PURE__ */ jsx33(DialogTrigger, { isOpen, onOpenChange, children });
1912
1922
  }
1913
1923
  function PopoverTrigger({ children, className }) {
1914
- return /* @__PURE__ */ jsx32(
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__ */ jsx32(
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__ */ jsx32(AriaDialog2, { className: "outline-none", children: ({ close }) => /* @__PURE__ */ jsx32(Fragment8, { children: typeof children === "function" ? children({ close }) : children }) })
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 jsx33 } from "react/jsx-runtime";
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__ */ jsx33(TabsContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ jsx33(
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__ */ jsx33(
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__ */ jsx33(
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__ */ jsx33(
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 jsx34, jsxs as jsxs22 } from "react/jsx-runtime";
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__ */ jsx34(
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__ */ jsx34(
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__ */ jsx34(
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__ */ jsx34(
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__ */ jsx34(
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__ */ jsx34("span", { className: "truncate", children: data.name })
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__ */ jsx34(
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__ */ jsx34(
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__ */ jsx34(
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 jsx35 } from "react/jsx-runtime";
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__ */ jsx35(SegmentedControlContext.Provider, { value: { size }, children: /* @__PURE__ */ jsx35(
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__ */ jsx35(
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 jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
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__ */ jsx36(
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__ */ jsx36(
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__ */ jsx36("div", { className: "h-full w-full overflow-hidden", children }) : /* @__PURE__ */ jsx36("div", { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsx36(IconComponent, { size: iconSize, className: iconColor }) })
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__ */ jsx36(
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__ */ jsx36("span", { className: "text-xs font-medium text-[var(--color-text-primary)] truncate", children: name }) : /* @__PURE__ */ jsxs23(Fragment9, { children: [
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__ */ jsx36(FileIcon, { type, extension, size: 16 }),
2494
- /* @__PURE__ */ jsx36("span", { className: "min-w-0 flex-1 text-sm font-medium text-[var(--color-text-primary)] truncate", children: name }),
2495
- onInfo && /* @__PURE__ */ jsx36(
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__ */ jsx36(
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__ */ jsx36("span", { className: "text-xs text-[var(--color-text-secondary)] tabular-nums pl-[22px]", children: size })
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__ */ jsx36(
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__ */ jsx36(
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__ */ jsx36("div", { className: baseStyles, children: cardContent });
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 jsx37 } from "react/jsx-runtime";
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__ */ jsx37(
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 jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
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__ */ jsx38(
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__ */ jsx38(Pill, { name: segment, children: segment }, `pill-${index}-${segment}`))
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 jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
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__ */ jsx39(Pill, { color, children: label });
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__ */ jsx39("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsx39(Spinner, { size: "lg", "aria-label": "Loading connection" }) });
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__ */ jsx39(
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__ */ jsx39("p", { className: "text-center text-xs text-[var(--color-text-danger)]", children: errorMessage })
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__ */ jsx39("div", { className: "h-full w-full overflow-hidden", children });
2729
+ return /* @__PURE__ */ jsx40("div", { className: "h-full w-full overflow-hidden", children });
2720
2730
  }
2721
- return /* @__PURE__ */ jsx39("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsx39(
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__ */ jsx39("div", { className: "aspect-[4/3] bg-[var(--color-neutral-900)] overflow-hidden rounded-t-[var(--border-radius-lg)]", children: /* @__PURE__ */ jsx39(PreviewArea, { status, errorMessage, children }) }),
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__ */ jsx39(
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__ */ jsx39("span", { className: "min-w-0 flex-1 line-clamp-2 text-sm font-medium text-[var(--color-text-primary)]", children: name }),
2778
- onInfo && /* @__PURE__ */ jsx39(
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__ */ jsx39(
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__ */ jsx39(ProviderBadge, { provider }),
2804
- provider && region && /* @__PURE__ */ jsx39("span", { className: "shrink-0 text-xs text-[var(--color-text-secondary)]", children: region }),
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__ */ jsx39("a", { href, className: twMerge10(baseStyles, "no-underline"), children: cardContent });
2832
+ return /* @__PURE__ */ jsx40("a", { href, className: twMerge10(baseStyles, "no-underline"), children: cardContent });
2823
2833
  }
2824
2834
  if (onPress) {
2825
- return /* @__PURE__ */ jsx39(
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__ */ jsx39("div", { className: baseStyles, children: cardContent });
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 jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
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__ */ jsx40(IconComponent, { size: iconSizeMap4[size], "aria-hidden": "true" }),
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 jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
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__ */ jsx41(
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__ */ jsx41("div", { className: paddingStyles[padding], children }),
2933
- footer && /* @__PURE__ */ jsx41(
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__ */ jsx41("a", { href, className: containerClass, children: content });
2955
+ return /* @__PURE__ */ jsx42("a", { href, className: containerClass, children: content });
2946
2956
  }
2947
2957
  if (onPress) {
2948
- return /* @__PURE__ */ jsx41(
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__ */ jsx41("div", { className: containerClass, children: content });
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 jsx42, jsxs as jsxs28 } from "react/jsx-runtime";
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__ */ jsx42("span", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-secondary)] mr-1", children: label }),
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__ */ jsx42("span", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-secondary)] mr-1", children: label }),
3073
- /* @__PURE__ */ jsx42(IconComponent, { size: 14, "aria-hidden": true }),
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 jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
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__ */ jsx43("span", { className: "text-[length:var(--font-size-sm)] font-[number:var(--font-weight-medium)] text-[var(--color-text-primary)]", children: label }),
3108
- /* @__PURE__ */ jsx43("span", { className: "text-[length:var(--font-size-sm)] text-[var(--color-text-secondary)]", children: description ?? (showValue ? `${clampedValue}%` : null) })
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__ */ jsx43(
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__ */ jsx43(
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 jsx44, jsxs as jsxs30 } from "react/jsx-runtime";
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__ */ jsx44(
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__ */ jsx44(
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__ */ jsx44(X3, { size: 16, "aria-hidden": "true" })
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 jsx45, jsxs as jsxs31 } from "react/jsx-runtime";
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__ */ jsx45("div", { className: twMerge16(config.labelClass, "text-[var(--color-text-secondary)]"), children: label }),
3264
- /* @__PURE__ */ jsx45(
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__ */ jsx45("div", { className: "mt-1 text-sm", children: secondary })
3284
+ secondary && /* @__PURE__ */ jsx46("div", { className: "mt-1 text-sm", children: secondary })
3275
3285
  ] });
3276
3286
  if (href) {
3277
- return /* @__PURE__ */ jsx45("a", { href, className: containerClass, children: content });
3287
+ return /* @__PURE__ */ jsx46("a", { href, className: containerClass, children: content });
3278
3288
  }
3279
- return /* @__PURE__ */ jsx45("div", { className: containerClass, children: content });
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 jsx46, jsxs as jsxs32 } from "react/jsx-runtime";
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__ */ jsx46(H2, { children: title }),
3299
- children && /* @__PURE__ */ jsx46("div", { className: "ml-auto flex flex-wrap items-center gap-[var(--spacing-2)]", children })
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 jsx47 } from "react/jsx-runtime";
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__ */ jsx47(FormWizardContext.Provider, { value, children });
3352
+ return /* @__PURE__ */ jsx48(FormWizardContext.Provider, { value, children });
3343
3353
  }
3344
3354
 
3345
3355
  // src/components/FormWizard/FormWizardProgress.tsx
3346
- import { jsx as jsx48, jsxs as jsxs33 } from "react/jsx-runtime";
3356
+ import { jsx as jsx49, jsxs as jsxs33 } from "react/jsx-runtime";
3347
3357
  function CheckIcon2() {
3348
- return /* @__PURE__ */ jsx48(
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__ */ jsx48("path", { d: "M3 8.5l3.5 3.5 6.5-7" })
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__ */ jsx48("nav", { "aria-label": "Form progress", children: /* @__PURE__ */ jsx48("ol", { className: "flex items-start", role: "list", children: labels.map((label, index) => {
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__ */ jsx48(
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__ */ jsx48("div", { className: "flex-1", "aria-hidden": "true" }),
3386
- /* @__PURE__ */ jsx48(
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__ */ jsx48(CheckIcon2, {}) : index + 1
3408
+ children: isCompleted ? /* @__PURE__ */ jsx49(CheckIcon2, {}) : index + 1
3399
3409
  }
3400
3410
  ),
3401
- index < totalSteps - 1 ? /* @__PURE__ */ jsx48(
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__ */ jsx48("div", { className: "flex-1", "aria-hidden": "true" })
3420
+ ) : /* @__PURE__ */ jsx49("div", { className: "flex-1", "aria-hidden": "true" })
3411
3421
  ] }),
3412
- /* @__PURE__ */ jsx48(
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 jsx49, jsxs as jsxs34 } from "react/jsx-runtime";
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__ */ jsx49(
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__ */ jsx49(
3458
+ /* @__PURE__ */ jsx50(
3449
3459
  Button,
3450
3460
  {
3451
3461
  variant: "primary",