@contentful/experience-design-system-cli 2.42.1-dev-build-b165bde7.0 → 2.42.1-dev-build-62049584.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/app.js CHANGED
@@ -2711,7 +2711,7 @@ function ImportScreen({ exitCode, onDone }) {
2711
2711
 
2712
2712
  // packages/experience-design-system-cli/src/tui/import/steps/00-preflight/screen.tsx
2713
2713
  import { useEffect as useEffect4, useRef, useState as useState4 } from "react";
2714
- import { Box as Box9, Text as Text9 } from "ink";
2714
+ import { Box as Box10, Text as Text10 } from "ink";
2715
2715
  init_debug_store();
2716
2716
 
2717
2717
  // packages/experience-design-system-cli/src/tui/import/steps/00-preflight/controls.ts
@@ -3050,8 +3050,8 @@ function OverviewBox({ steps }) {
3050
3050
  }
3051
3051
 
3052
3052
  // packages/experience-design-system-cli/src/tui/import/shared/running-step/running-step.tsx
3053
- import { Box as Box8, Text as Text8 } from "ink";
3054
- import { ProgressBar, Spinner, ThemeProvider } from "@inkjs/ui";
3053
+ import { Box as Box9, Text as Text9 } from "ink";
3054
+ import { ProgressBar, Spinner as Spinner2, ThemeProvider } from "@inkjs/ui";
3055
3055
 
3056
3056
  // packages/experience-design-system-cli/src/tui/import/shared/running-step/logic.ts
3057
3057
  function lineState(line) {
@@ -3100,53 +3100,115 @@ function useElapsed() {
3100
3100
  return formatElapsed(seconds2);
3101
3101
  }
3102
3102
 
3103
+ // packages/experience-design-system-cli/src/tui/import/shared/running-step/activity-panel.tsx
3104
+ import { Box as Box8, Text as Text8 } from "ink";
3105
+ import { Spinner } from "@inkjs/ui";
3106
+
3107
+ // packages/experience-design-system-cli/src/tui/import/shared/running-step/activity.ts
3108
+ var BESIDE_MIN_COLUMNS = 110;
3109
+ var PANEL_COLUMNS = 46;
3110
+ function panelLayout(columns) {
3111
+ return columns >= BESIDE_MIN_COLUMNS ? "beside" : "below";
3112
+ }
3113
+ var PRIORITY = { failed: 0, running: 1, done: 2 };
3114
+ function visibleActivity(items, max) {
3115
+ if (items.length <= max) return { shown: [...items], hidden: 0 };
3116
+ const chosen = items.map((item, index) => ({ index, priority: PRIORITY[item.state] })).sort((a, b) => a.priority - b.priority || b.index - a.index).slice(0, Math.max(0, max)).map(({ index }) => index).sort((a, b) => a - b);
3117
+ return { shown: chosen.map((index) => items[index]), hidden: items.length - chosen.length };
3118
+ }
3119
+ function truncate(text, max) {
3120
+ return text.length <= max ? text : `${text.slice(0, Math.max(0, max - 1))}\u2026`;
3121
+ }
3122
+
3123
+ // packages/experience-design-system-cli/src/tui/import/shared/running-step/activity-panel.tsx
3124
+ import { Fragment, jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
3125
+ var MAX_ROWS = 8;
3126
+ var ICON = { done: "\u2713", failed: "\u2717" };
3127
+ var COLOR = { done: PALETTE.success, failed: PALETTE.error };
3128
+ function Row({ item, width }) {
3129
+ const time = item.ms !== void 0 ? formatDuration(item.ms) : "";
3130
+ const note = item.detail ? ` ${item.detail}` : "";
3131
+ const name = truncate(`${item.name}${note}`, Math.max(8, width - 12));
3132
+ return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
3133
+ /* @__PURE__ */ jsxs8(Box8, { gap: 1, children: [
3134
+ item.state === "running" ? /* @__PURE__ */ jsx8(Spinner, {}) : /* @__PURE__ */ jsx8(Text8, { color: COLOR[item.state], children: ICON[item.state] }),
3135
+ /* @__PURE__ */ jsx8(Text8, { color: item.state === "failed" ? PALETTE.error : PALETTE.muted, children: name }),
3136
+ time && /* @__PURE__ */ jsx8(Text8, { color: PALETTE.muted, children: time })
3137
+ ] }),
3138
+ item.state === "failed" && item.error && /* @__PURE__ */ jsx8(Text8, { color: PALETTE.error, children: ` ${truncate(item.error, Math.max(12, width - 6))}` })
3139
+ ] });
3140
+ }
3141
+ function ActivityPanel({ title, items }) {
3142
+ const columns = useTerminalWidth();
3143
+ const width = panelLayout(columns) === "beside" ? PANEL_COLUMNS : Math.max(30, columns - 4);
3144
+ const { shown, hidden } = visibleActivity(items, MAX_ROWS);
3145
+ return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.muted, paddingX: 1, width, children: [
3146
+ /* @__PURE__ */ jsx8(Text8, { bold: true, children: title }),
3147
+ shown.map((item, index) => /* @__PURE__ */ jsx8(Row, { item, width }, `${index}-${item.name}`)),
3148
+ hidden > 0 && /* @__PURE__ */ jsx8(Text8, { color: PALETTE.muted, children: `+ ${hidden} more` })
3149
+ ] });
3150
+ }
3151
+ function AsideLayout({
3152
+ aside,
3153
+ children
3154
+ }) {
3155
+ const columns = useTerminalWidth();
3156
+ if (!aside) return /* @__PURE__ */ jsx8(Fragment, { children });
3157
+ const beside = panelLayout(columns) === "beside";
3158
+ return /* @__PURE__ */ jsxs8(Box8, { flexDirection: beside ? "row" : "column", alignItems: "flex-start", children: [
3159
+ children,
3160
+ /* @__PURE__ */ jsx8(Box8, { paddingX: beside ? 0 : 2, paddingBottom: 1, children: aside })
3161
+ ] });
3162
+ }
3163
+
3103
3164
  // packages/experience-design-system-cli/src/tui/import/shared/running-step/running-step.tsx
3104
- import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
3165
+ import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
3105
3166
  var STATE_ICON = { done: "\u2713", warning: "!", failed: "\u2717" };
3106
3167
  var STATE_COLOR = { done: PALETTE.success, warning: PALETTE.warning, failed: PALETTE.error };
3107
3168
  var textColor = (state2) => state2 === "warning" || state2 === "failed" ? STATE_COLOR[state2] : PALETTE.muted;
3108
3169
  function Line({ line }) {
3109
3170
  if (line.progress) {
3110
- return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", gap: 1, children: [
3111
- /* @__PURE__ */ jsxs8(Box8, { gap: 2, children: [
3112
- /* @__PURE__ */ jsx8(Box8, { width: 40, children: /* @__PURE__ */ jsx8(ThemeProvider, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx8(ProgressBar, { value: progressPercent(line.progress) }) }) }),
3113
- /* @__PURE__ */ jsxs8(Text8, { color: PALETTE.muted, children: [
3171
+ return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, children: [
3172
+ /* @__PURE__ */ jsxs9(Box9, { gap: 2, children: [
3173
+ /* @__PURE__ */ jsx9(Box9, { width: 40, children: /* @__PURE__ */ jsx9(ThemeProvider, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx9(ProgressBar, { value: progressPercent(line.progress) }) }) }),
3174
+ /* @__PURE__ */ jsxs9(Text9, { color: PALETTE.muted, children: [
3114
3175
  line.progress.done,
3115
3176
  "/",
3116
3177
  line.progress.total
3117
3178
  ] })
3118
3179
  ] }),
3119
- /* @__PURE__ */ jsx8(Text8, { color: textColor(lineState(line)), children: line.text })
3180
+ /* @__PURE__ */ jsx9(Text9, { color: textColor(lineState(line)), children: line.text })
3120
3181
  ] });
3121
3182
  }
3122
3183
  const state2 = lineState(line);
3123
- return /* @__PURE__ */ jsxs8(Box8, { gap: 1, children: [
3124
- state2 === "running" ? /* @__PURE__ */ jsx8(Spinner, {}) : /* @__PURE__ */ jsx8(Text8, { color: STATE_COLOR[state2], children: STATE_ICON[state2] }),
3125
- /* @__PURE__ */ jsx8(Text8, { color: textColor(state2), children: line.text }),
3126
- line.ms !== void 0 && /* @__PURE__ */ jsx8(Text8, { color: PALETTE.muted, children: formatDuration(line.ms) })
3184
+ return /* @__PURE__ */ jsxs9(Box9, { gap: 1, children: [
3185
+ state2 === "running" ? /* @__PURE__ */ jsx9(Spinner2, {}) : /* @__PURE__ */ jsx9(Text9, { color: STATE_COLOR[state2], children: STATE_ICON[state2] }),
3186
+ /* @__PURE__ */ jsx9(Text9, { color: textColor(state2), children: line.text }),
3187
+ line.ms !== void 0 && /* @__PURE__ */ jsx9(Text9, { color: PALETTE.muted, children: formatDuration(line.ms) })
3127
3188
  ] });
3128
3189
  }
3129
3190
  function RunningStep({
3130
3191
  step,
3131
3192
  description,
3132
- lines = [{ text: "Running..." }]
3193
+ lines = [{ text: "Running..." }],
3194
+ aside
3133
3195
  }) {
3134
3196
  const elapsed = useElapsed();
3135
- return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
3136
- /* @__PURE__ */ jsx8(StepHeader, { step }),
3137
- /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
3138
- /* @__PURE__ */ jsx8(Text8, { children: description }),
3139
- /* @__PURE__ */ jsx8(Box8, { marginTop: 1, flexDirection: "column", gap: 1, children: lines.map((line, index) => /* @__PURE__ */ jsx8(Line, { line }, index)) }),
3140
- /* @__PURE__ */ jsx8(Box8, { marginTop: 1, children: /* @__PURE__ */ jsxs8(Text8, { color: PALETTE.muted, children: [
3197
+ return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
3198
+ /* @__PURE__ */ jsx9(StepHeader, { step }),
3199
+ /* @__PURE__ */ jsx9(AsideLayout, { aside, children: /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
3200
+ /* @__PURE__ */ jsx9(Text9, { children: description }),
3201
+ /* @__PURE__ */ jsx9(Box9, { marginTop: 1, flexDirection: "column", gap: 1, children: lines.map((line, index) => /* @__PURE__ */ jsx9(Line, { line }, index)) }),
3202
+ /* @__PURE__ */ jsx9(Box9, { marginTop: 1, children: /* @__PURE__ */ jsxs9(Text9, { color: PALETTE.muted, children: [
3141
3203
  "Elapsed: ",
3142
3204
  elapsed
3143
3205
  ] }) })
3144
- ] })
3206
+ ] }) })
3145
3207
  ] });
3146
3208
  }
3147
3209
 
3148
3210
  // packages/experience-design-system-cli/src/tui/import/steps/00-preflight/screen.tsx
3149
- import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
3211
+ import { jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
3150
3212
  var optionAt = (index) => IMPORT_TARGET_OPTIONS[index].target;
3151
3213
  function PreflightScreen({ onChoose, onQuit }) {
3152
3214
  const [focus, setFocus] = useState4(0);
@@ -3176,33 +3238,33 @@ function PreflightScreen({ onChoose, onQuit }) {
3176
3238
  onQuit();
3177
3239
  };
3178
3240
  usePreflightControls({ focus, onFocus: moveTo, onChoose: choose, onQuit: quit });
3179
- return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
3180
- /* @__PURE__ */ jsx9(StepHeader, { step: "setup" }),
3181
- /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
3182
- /* @__PURE__ */ jsx9(Text9, { bold: true, color: PALETTE.text, children: "What do you want to import?" }),
3183
- /* @__PURE__ */ jsx9(Box9, { flexDirection: "column", children: IMPORT_TARGET_OPTIONS.map((option, index) => {
3241
+ return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
3242
+ /* @__PURE__ */ jsx10(StepHeader, { step: "setup" }),
3243
+ /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
3244
+ /* @__PURE__ */ jsx10(Text10, { bold: true, color: PALETTE.text, children: "What do you want to import?" }),
3245
+ /* @__PURE__ */ jsx10(Box10, { flexDirection: "column", children: IMPORT_TARGET_OPTIONS.map((option, index) => {
3184
3246
  const focused = index === focus;
3185
- return /* @__PURE__ */ jsxs9(Box9, { gap: 1, children: [
3186
- /* @__PURE__ */ jsx9(Text9, { color: PALETTE.accent, children: focused ? "\u276F" : " " }),
3187
- /* @__PURE__ */ jsx9(Text9, { bold: focused, color: focused ? PALETTE.accent : void 0, children: option.label })
3247
+ return /* @__PURE__ */ jsxs10(Box10, { gap: 1, children: [
3248
+ /* @__PURE__ */ jsx10(Text10, { color: PALETTE.accent, children: focused ? "\u276F" : " " }),
3249
+ /* @__PURE__ */ jsx10(Text10, { bold: focused, color: focused ? PALETTE.accent : void 0, children: option.label })
3188
3250
  ] }, option.target);
3189
3251
  }) }),
3190
- /* @__PURE__ */ jsx9(OverviewBox, { steps: overviewFor(optionAt(focus)) }),
3191
- /* @__PURE__ */ jsx9(ControlHints, { hints: PREFLIGHT_CONTROLS })
3252
+ /* @__PURE__ */ jsx10(OverviewBox, { steps: overviewFor(optionAt(focus)) }),
3253
+ /* @__PURE__ */ jsx10(ControlHints, { hints: PREFLIGHT_CONTROLS })
3192
3254
  ] })
3193
3255
  ] });
3194
3256
  }
3195
3257
 
3196
3258
  // packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx
3197
3259
  import { useEffect as useEffect5, useRef as useRef3, useState as useState5 } from "react";
3198
- import { Box as Box10, Text as Text10 } from "ink";
3260
+ import { Box as Box11, Text as Text11 } from "ink";
3199
3261
  init_debug_store();
3200
3262
 
3201
3263
  // packages/experience-design-system-cli/src/tui/shared/components/ClearableTextInput.tsx
3202
3264
  import { useRef as useRef2 } from "react";
3203
3265
  import { useInput as useInput6 } from "ink";
3204
3266
  import TextInput from "ink-text-input";
3205
- import { jsx as jsx10 } from "react/jsx-runtime";
3267
+ import { jsx as jsx11 } from "react/jsx-runtime";
3206
3268
  function isClearKey(input, key) {
3207
3269
  return key.ctrl && input === "d";
3208
3270
  }
@@ -3216,7 +3278,7 @@ function ClearableTextInput({ onChange, ...props }) {
3216
3278
  }, 0);
3217
3279
  onChange("");
3218
3280
  });
3219
- return /* @__PURE__ */ jsx10(
3281
+ return /* @__PURE__ */ jsx11(
3220
3282
  TextInput,
3221
3283
  {
3222
3284
  ...props,
@@ -3252,7 +3314,7 @@ function useWelcomeControls(onQuit) {
3252
3314
  }
3253
3315
 
3254
3316
  // packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx
3255
- import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
3317
+ import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
3256
3318
  function WelcomeScreen({ mode, onContinue, onQuit, initialPath = "" }) {
3257
3319
  const [projectPath, setProjectPath] = useState5(initialPath);
3258
3320
  const visit = useRef3({ emptySubmits: 0 }).current;
@@ -3294,25 +3356,25 @@ function WelcomeScreen({ mode, onContinue, onQuit, initialPath = "" }) {
3294
3356
  });
3295
3357
  onContinue(path5);
3296
3358
  };
3297
- return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
3298
- /* @__PURE__ */ jsx11(StepHeader, { step: "setup" }),
3299
- /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
3300
- /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", gap: 1, children: [
3301
- /* @__PURE__ */ jsx11(Text10, { color: PALETTE.text, children: "Where is your component library?" }),
3302
- /* @__PURE__ */ jsxs10(Box10, { children: [
3303
- /* @__PURE__ */ jsx11(Text10, { color: PALETTE.accent, children: "? " }),
3304
- /* @__PURE__ */ jsx11(Text10, { children: "Project path: " }),
3305
- /* @__PURE__ */ jsx11(ClearableTextInput, { value: projectPath, onChange: setProjectPath, onSubmit: submit })
3359
+ return /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", children: [
3360
+ /* @__PURE__ */ jsx12(StepHeader, { step: "setup" }),
3361
+ /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
3362
+ /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", gap: 1, children: [
3363
+ /* @__PURE__ */ jsx12(Text11, { color: PALETTE.text, children: "Where is your component library?" }),
3364
+ /* @__PURE__ */ jsxs11(Box11, { children: [
3365
+ /* @__PURE__ */ jsx12(Text11, { color: PALETTE.accent, children: "? " }),
3366
+ /* @__PURE__ */ jsx12(Text11, { children: "Project path: " }),
3367
+ /* @__PURE__ */ jsx12(ClearableTextInput, { value: projectPath, onChange: setProjectPath, onSubmit: submit })
3306
3368
  ] })
3307
3369
  ] }),
3308
- /* @__PURE__ */ jsx11(Box10, { children: /* @__PURE__ */ jsx11(ControlHints, { hints: WELCOME_CONTROLS }) })
3370
+ /* @__PURE__ */ jsx12(Box11, { children: /* @__PURE__ */ jsx12(ControlHints, { hints: WELCOME_CONTROLS }) })
3309
3371
  ] })
3310
3372
  ] });
3311
3373
  }
3312
3374
 
3313
3375
  // packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx
3314
3376
  import { useEffect as useEffect6, useRef as useRef4, useState as useState6 } from "react";
3315
- import { Box as Box11, Text as Text11 } from "ink";
3377
+ import { Box as Box12, Text as Text12 } from "ink";
3316
3378
  init_debug_store();
3317
3379
 
3318
3380
  // packages/experience-design-system-cli/src/tui/import/steps/02-token-input/controls.ts
@@ -3379,7 +3441,7 @@ function validateTokenPath(rawPath) {
3379
3441
  }
3380
3442
 
3381
3443
  // packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx
3382
- import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
3444
+ import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
3383
3445
  var MAX_LOGGED_ATTEMPTS = 10;
3384
3446
  function TokenInputScreen({
3385
3447
  mode,
@@ -3443,36 +3505,36 @@ function TokenInputScreen({
3443
3505
  });
3444
3506
  onConfirm(check.path);
3445
3507
  };
3446
- return /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", children: [
3447
- /* @__PURE__ */ jsx12(StepHeader, { step: "setup" }),
3448
- /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
3449
- /* @__PURE__ */ jsx12(Text11, { bold: true, children: "Design tokens" }),
3450
- /* @__PURE__ */ jsx12(Text11, { color: PALETTE.muted, children: "Point me to your raw token file (e.g. ~/design-tokens/tokens.json). You can use ~, relative, or absolute paths. Claude will map it to Design Token Group Format (DTCG)." }),
3451
- /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", children: [
3452
- /* @__PURE__ */ jsxs11(Box11, { gap: 1, children: [
3453
- /* @__PURE__ */ jsx12(Text11, { color: PALETTE.accent, children: "?" }),
3454
- /* @__PURE__ */ jsx12(Text11, { children: "Token path:" }),
3455
- /* @__PURE__ */ jsx12(ClearableTextInput, { value: tokenPath, onChange: change, onSubmit: submit })
3508
+ return /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
3509
+ /* @__PURE__ */ jsx13(StepHeader, { step: "setup" }),
3510
+ /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
3511
+ /* @__PURE__ */ jsx13(Text12, { bold: true, children: "Design tokens" }),
3512
+ /* @__PURE__ */ jsx13(Text12, { color: PALETTE.muted, children: "Point me to your raw token file (e.g. ~/design-tokens/tokens.json). You can use ~, relative, or absolute paths. Claude will map it to Design Token Group Format (DTCG)." }),
3513
+ /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
3514
+ /* @__PURE__ */ jsxs12(Box12, { gap: 1, children: [
3515
+ /* @__PURE__ */ jsx13(Text12, { color: PALETTE.accent, children: "?" }),
3516
+ /* @__PURE__ */ jsx13(Text12, { children: "Token path:" }),
3517
+ /* @__PURE__ */ jsx13(ClearableTextInput, { value: tokenPath, onChange: change, onSubmit: submit })
3456
3518
  ] }),
3457
- failure && /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", children: [
3458
- /* @__PURE__ */ jsxs11(Text11, { color: PALETTE.error, children: [
3519
+ failure && /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
3520
+ /* @__PURE__ */ jsxs12(Text12, { color: PALETTE.error, children: [
3459
3521
  "\u2717 ",
3460
3522
  failure.error
3461
3523
  ] }),
3462
- failure.resolvedPath && /* @__PURE__ */ jsxs11(Text11, { color: PALETTE.muted, children: [
3524
+ failure.resolvedPath && /* @__PURE__ */ jsxs12(Text12, { color: PALETTE.muted, children: [
3463
3525
  " Resolved to: ",
3464
3526
  failure.resolvedPath
3465
3527
  ] })
3466
3528
  ] })
3467
3529
  ] }),
3468
- /* @__PURE__ */ jsx12(Box11, { marginTop: 1, children: /* @__PURE__ */ jsx12(ControlHints, { hints: TOKEN_INPUT_CONTROLS }) })
3530
+ /* @__PURE__ */ jsx13(Box12, { marginTop: 1, children: /* @__PURE__ */ jsx13(ControlHints, { hints: TOKEN_INPUT_CONTROLS }) })
3469
3531
  ] })
3470
3532
  ] });
3471
3533
  }
3472
3534
 
3473
3535
  // packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/screen.tsx
3474
3536
  import { useEffect as useEffect7, useMemo, useState as useState7 } from "react";
3475
- import { Box as Box12, Text as Text12 } from "ink";
3537
+ import { Box as Box13, Text as Text13 } from "ink";
3476
3538
  init_debug_store();
3477
3539
 
3478
3540
  // packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/controls.ts
@@ -18088,9 +18150,9 @@ function foldSvelteAndMdIntoOther(counts) {
18088
18150
  }
18089
18151
 
18090
18152
  // packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/screen.tsx
18091
- import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
18092
- function Row({ row }) {
18093
- return /* @__PURE__ */ jsxs12(Text12, { color: row.tone === "accent" ? PALETTE.accent : row.tone === "muted" ? PALETTE.muted : void 0, children: [
18153
+ import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
18154
+ function Row2({ row }) {
18155
+ return /* @__PURE__ */ jsxs13(Text13, { color: row.tone === "accent" ? PALETTE.accent : row.tone === "muted" ? PALETTE.muted : void 0, children: [
18094
18156
  " \u2022 ",
18095
18157
  String(row.count).padStart(3),
18096
18158
  " ",
@@ -18099,12 +18161,12 @@ function Row({ row }) {
18099
18161
  }
18100
18162
  function Failure({ scan, path: path5 }) {
18101
18163
  const { headline, hints } = describeFailure(scan.failure, path5);
18102
- return /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
18103
- /* @__PURE__ */ jsxs12(Text12, { color: PALETTE.error, children: [
18164
+ return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
18165
+ /* @__PURE__ */ jsxs13(Text13, { color: PALETTE.error, children: [
18104
18166
  "\u2717 ",
18105
18167
  headline
18106
18168
  ] }),
18107
- hints.map((hint) => /* @__PURE__ */ jsx13(Text12, { color: PALETTE.muted, children: hint }, hint))
18169
+ hints.map((hint) => /* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: hint }, hint))
18108
18170
  ] });
18109
18171
  }
18110
18172
  function Summary({
@@ -18113,24 +18175,24 @@ function Summary({
18113
18175
  hasTokens
18114
18176
  }) {
18115
18177
  const { total, rows, warning } = summarize(scan.counts, { hasTokens });
18116
- return /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", gap: 1, children: [
18117
- /* @__PURE__ */ jsxs12(Text12, { children: [
18178
+ return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", gap: 1, children: [
18179
+ /* @__PURE__ */ jsxs13(Text13, { children: [
18118
18180
  "Scanned ",
18119
- /* @__PURE__ */ jsx13(Text12, { bold: true, children: path5 })
18181
+ /* @__PURE__ */ jsx14(Text13, { bold: true, children: path5 })
18120
18182
  ] }),
18121
- /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
18122
- /* @__PURE__ */ jsxs12(Text12, { color: PALETTE.success, children: [
18183
+ /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
18184
+ /* @__PURE__ */ jsxs13(Text13, { color: PALETTE.success, children: [
18123
18185
  "\u2713 Found ",
18124
18186
  total,
18125
18187
  " files:"
18126
18188
  ] }),
18127
- rows.map((row) => /* @__PURE__ */ jsx13(Row, { row }, row.label))
18189
+ rows.map((row) => /* @__PURE__ */ jsx14(Row2, { row }, row.label))
18128
18190
  ] }),
18129
- warning && /* @__PURE__ */ jsxs12(Text12, { color: PALETTE.warning, children: [
18191
+ warning && /* @__PURE__ */ jsxs13(Text13, { color: PALETTE.warning, children: [
18130
18192
  "\u26A0 ",
18131
18193
  warning
18132
18194
  ] }),
18133
- /* @__PURE__ */ jsx13(Text12, { children: "Does this look right?" })
18195
+ /* @__PURE__ */ jsx14(Text13, { children: "Does this look right?" })
18134
18196
  ] });
18135
18197
  }
18136
18198
  function PathValidationScreen({
@@ -18177,30 +18239,30 @@ function PathValidationScreen({
18177
18239
  onBack();
18178
18240
  }
18179
18241
  });
18180
- return /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
18181
- /* @__PURE__ */ jsx13(StepHeader, { step: "setup" }),
18182
- /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
18183
- scan === void 0 && /* @__PURE__ */ jsxs12(Text12, { color: PALETTE.muted, children: [
18242
+ return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
18243
+ /* @__PURE__ */ jsx14(StepHeader, { step: "setup" }),
18244
+ /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
18245
+ scan === void 0 && /* @__PURE__ */ jsxs13(Text13, { color: PALETTE.muted, children: [
18184
18246
  "Scanning ",
18185
- /* @__PURE__ */ jsx13(Text12, { bold: true, children: resolvedPath }),
18247
+ /* @__PURE__ */ jsx14(Text13, { bold: true, children: resolvedPath }),
18186
18248
  "..."
18187
18249
  ] }),
18188
- scan?.ok === false && /* @__PURE__ */ jsx13(Failure, { scan, path: resolvedPath }),
18189
- scan?.ok === true && /* @__PURE__ */ jsx13(Summary, { scan, path: resolvedPath, hasTokens }),
18190
- /* @__PURE__ */ jsx13(Box12, { marginTop: 1, children: /* @__PURE__ */ jsx13(ControlHints, { hints: controlsFor(phase) }) })
18250
+ scan?.ok === false && /* @__PURE__ */ jsx14(Failure, { scan, path: resolvedPath }),
18251
+ scan?.ok === true && /* @__PURE__ */ jsx14(Summary, { scan, path: resolvedPath, hasTokens }),
18252
+ /* @__PURE__ */ jsx14(Box13, { marginTop: 1, children: /* @__PURE__ */ jsx14(ControlHints, { hints: controlsFor(phase) }) })
18191
18253
  ] })
18192
18254
  ] });
18193
18255
  }
18194
18256
 
18195
18257
  // packages/experience-design-system-cli/src/tui/import/steps/04-credentials/screen.tsx
18196
18258
  import { useEffect as useEffect8, useRef as useRef5, useState as useState9 } from "react";
18197
- import { Box as Box14, Text as Text14, useInput as useInput11 } from "ink";
18259
+ import { Box as Box15, Text as Text15, useInput as useInput11 } from "ink";
18198
18260
  init_debug_store();
18199
18261
 
18200
18262
  // packages/experience-design-system-cli/src/tui/shared/components/FieldForm.tsx
18201
18263
  import { useState as useState8 } from "react";
18202
- import { Box as Box13, Text as Text13, useInput as useInput10 } from "ink";
18203
- import { Fragment, jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
18264
+ import { Box as Box14, Text as Text14, useInput as useInput10 } from "ink";
18265
+ import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
18204
18266
  function formLabelWidth(rows) {
18205
18267
  return Math.max(...rows.map((row) => row.label.length));
18206
18268
  }
@@ -18209,9 +18271,9 @@ function FormReadOnlyRow({
18209
18271
  labelWidth,
18210
18272
  children
18211
18273
  }) {
18212
- return /* @__PURE__ */ jsxs13(Box13, { gap: 1, children: [
18213
- /* @__PURE__ */ jsx14(Text13, { children: " " }),
18214
- /* @__PURE__ */ jsx14(Box13, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: label }) }),
18274
+ return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
18275
+ /* @__PURE__ */ jsx15(Text14, { children: " " }),
18276
+ /* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: label }) }),
18215
18277
  children
18216
18278
  ] });
18217
18279
  }
@@ -18298,23 +18360,23 @@ function FieldForm({
18298
18360
  setValueBeforeEdit(values[next.key]);
18299
18361
  setActive(active + 1);
18300
18362
  };
18301
- const pointer = (isActive) => /* @__PURE__ */ jsx14(Text13, { color: isActive ? PALETTE.accent : void 0, children: isActive ? "\u276F" : " " });
18302
- return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
18363
+ const pointer = (isActive) => /* @__PURE__ */ jsx15(Text14, { color: isActive ? PALETTE.accent : void 0, children: isActive ? "\u276F" : " " });
18364
+ return /* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", children: [
18303
18365
  header,
18304
- /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", paddingX: 2, paddingTop: header ? 0 : 1, paddingBottom: 1, children: [
18305
- /* @__PURE__ */ jsx14(Text13, { bold: true, children: title }),
18306
- /* @__PURE__ */ jsx14(Text13, { children: " " }),
18307
- subtitle && /* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: subtitle }),
18308
- /* @__PURE__ */ jsx14(Text13, { children: " " }),
18309
- /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
18366
+ /* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", paddingX: 2, paddingTop: header ? 0 : 1, paddingBottom: 1, children: [
18367
+ /* @__PURE__ */ jsx15(Text14, { bold: true, children: title }),
18368
+ /* @__PURE__ */ jsx15(Text14, { children: " " }),
18369
+ subtitle && /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: subtitle }),
18370
+ /* @__PURE__ */ jsx15(Text14, { children: " " }),
18371
+ /* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", children: [
18310
18372
  fields2.map((field, index) => {
18311
18373
  const isActive = index === active;
18312
18374
  const value = values[field.key];
18313
18375
  const display = field.masked ? "\u2022".repeat(value.length) : value;
18314
- return /* @__PURE__ */ jsxs13(Box13, { gap: 1, children: [
18376
+ return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
18315
18377
  pointer(isActive),
18316
- /* @__PURE__ */ jsx14(Box13, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx14(Text13, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
18317
- isActive && editing ? /* @__PURE__ */ jsx14(
18378
+ /* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
18379
+ isActive && editing ? /* @__PURE__ */ jsx15(
18318
18380
  ClearableTextInput,
18319
18381
  {
18320
18382
  value,
@@ -18322,34 +18384,34 @@ function FieldForm({
18322
18384
  onSubmit: submitField,
18323
18385
  mask: field.masked ? "\u2022" : void 0
18324
18386
  }
18325
- ) : display ? /* @__PURE__ */ jsx14(Text13, { bold: true, children: display }) : (
18387
+ ) : display ? /* @__PURE__ */ jsx15(Text14, { bold: true, children: display }) : (
18326
18388
  // An empty value shows its hint (or "(empty)") in the value's place, not after an empty element, so the
18327
18389
  // text starts in the same column as every other row's.
18328
- /* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: field.hint ?? "(empty)" })
18390
+ /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: field.hint ?? "(empty)" })
18329
18391
  ),
18330
- display && field.hint && /* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: field.hint })
18392
+ display && field.hint && /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: field.hint })
18331
18393
  ] }, field.key);
18332
18394
  }),
18333
18395
  actions.map((action, index) => {
18334
18396
  const isActive = fields2.length + index === active;
18335
- return /* @__PURE__ */ jsxs13(Box13, { gap: 1, children: [
18397
+ return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
18336
18398
  pointer(isActive),
18337
- /* @__PURE__ */ jsx14(Box13, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx14(Text13, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: action.label }) }),
18338
- /* @__PURE__ */ jsx14(Text13, { color: action.running ? PALETTE.accent : PALETTE.muted, children: action.running ? action.runningText ?? "running..." : action.description })
18399
+ /* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: action.label }) }),
18400
+ /* @__PURE__ */ jsx15(Text14, { color: action.running ? PALETTE.accent : PALETTE.muted, children: action.running ? action.runningText ?? "running..." : action.description })
18339
18401
  ] }, action.label);
18340
18402
  })
18341
18403
  ] }),
18342
- notice && /* @__PURE__ */ jsxs13(Fragment, { children: [
18343
- /* @__PURE__ */ jsx14(Text13, { children: " " }),
18344
- /* @__PURE__ */ jsxs13(Text13, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
18404
+ notice && /* @__PURE__ */ jsxs14(Fragment2, { children: [
18405
+ /* @__PURE__ */ jsx15(Text14, { children: " " }),
18406
+ /* @__PURE__ */ jsxs14(Text14, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
18345
18407
  notice.kind === "success" ? "\u2713" : "\u2717",
18346
18408
  " ",
18347
18409
  notice.text
18348
18410
  ] })
18349
18411
  ] }),
18350
18412
  children,
18351
- /* @__PURE__ */ jsx14(Text13, { children: " " }),
18352
- /* @__PURE__ */ jsx14(
18413
+ /* @__PURE__ */ jsx15(Text14, { children: " " }),
18414
+ /* @__PURE__ */ jsx15(
18353
18415
  ControlHints,
18354
18416
  {
18355
18417
  hints: editing ? [
@@ -18485,7 +18547,7 @@ function toUserError(error, host) {
18485
18547
  }
18486
18548
 
18487
18549
  // packages/experience-design-system-cli/src/tui/import/steps/04-credentials/screen.tsx
18488
- import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
18550
+ import { Fragment as Fragment3, jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
18489
18551
  var FIELDS2 = [
18490
18552
  { key: "spaceId", label: "Space ID" },
18491
18553
  { key: "environmentId", label: "Environment ID" },
@@ -18614,24 +18676,24 @@ function CredentialsScreen({
18614
18676
  });
18615
18677
  const labelWidth = formLabelWidth([...FIELDS2, ...MENU]);
18616
18678
  const changed = !isUnchanged(normalize(values), initialValues);
18617
- return /* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", children: [
18618
- /* @__PURE__ */ jsx15(StepHeader, { step: "setup" }),
18619
- /* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", paddingX: 2, paddingBottom: 1, children: [
18620
- /* @__PURE__ */ jsx15(Text14, { bold: true, color: PALETTE.accent, children: "Contentful Credentials" }),
18621
- /* @__PURE__ */ jsx15(Text14, { children: " " }),
18622
- /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: prefilled ? "Credentials pre-filled from the configuration settings." : "Enter the Contentful space you want to import into." }),
18623
- /* @__PURE__ */ jsx15(Text14, { children: " " }),
18624
- /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: "Actions" }),
18679
+ return /* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", children: [
18680
+ /* @__PURE__ */ jsx16(StepHeader, { step: "setup" }),
18681
+ /* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", paddingX: 2, paddingBottom: 1, children: [
18682
+ /* @__PURE__ */ jsx16(Text15, { bold: true, color: PALETTE.accent, children: "Contentful Credentials" }),
18683
+ /* @__PURE__ */ jsx16(Text15, { children: " " }),
18684
+ /* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: prefilled ? "Credentials pre-filled from the configuration settings." : "Enter the Contentful space you want to import into." }),
18685
+ /* @__PURE__ */ jsx16(Text15, { children: " " }),
18686
+ /* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Actions" }),
18625
18687
  MENU.map((item, index) => {
18626
18688
  const focused = !editing && index === focus;
18627
- return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
18628
- /* @__PURE__ */ jsx15(Text14, { color: PALETTE.accent, children: focused ? "\u276F" : " " }),
18629
- /* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { bold: focused, color: focused ? PALETTE.accent : editing ? PALETTE.muted : PALETTE.text, children: item.label }) }),
18630
- /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: item.description })
18689
+ return /* @__PURE__ */ jsxs15(Box15, { gap: 1, children: [
18690
+ /* @__PURE__ */ jsx16(Text15, { color: PALETTE.accent, children: focused ? "\u276F" : " " }),
18691
+ /* @__PURE__ */ jsx16(Box15, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx16(Text15, { bold: focused, color: focused ? PALETTE.accent : editing ? PALETTE.muted : PALETTE.text, children: item.label }) }),
18692
+ /* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: item.description })
18631
18693
  ] }, item.choice);
18632
18694
  }),
18633
- /* @__PURE__ */ jsxs14(
18634
- Box14,
18695
+ /* @__PURE__ */ jsxs15(
18696
+ Box15,
18635
18697
  {
18636
18698
  flexDirection: "column",
18637
18699
  marginTop: 1,
@@ -18641,15 +18703,15 @@ function CredentialsScreen({
18641
18703
  borderLeft: false,
18642
18704
  borderRight: false,
18643
18705
  children: [
18644
- /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: "Space" }),
18706
+ /* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Space" }),
18645
18707
  FIELDS2.map((field, index) => {
18646
18708
  const open = editing && index === active;
18647
18709
  const value = values[field.key];
18648
18710
  const display = field.masked ? "\u2022".repeat(value.length) : value;
18649
- return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
18650
- /* @__PURE__ */ jsx15(Text14, { color: PALETTE.accent, children: open ? "\u276F" : " " }),
18651
- /* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { bold: open, color: open ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
18652
- open ? /* @__PURE__ */ jsx15(
18711
+ return /* @__PURE__ */ jsxs15(Box15, { gap: 1, children: [
18712
+ /* @__PURE__ */ jsx16(Text15, { color: PALETTE.accent, children: open ? "\u276F" : " " }),
18713
+ /* @__PURE__ */ jsx16(Box15, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx16(Text15, { bold: open, color: open ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
18714
+ open ? /* @__PURE__ */ jsx16(
18653
18715
  ClearableTextInput,
18654
18716
  {
18655
18717
  value,
@@ -18660,35 +18722,35 @@ function CredentialsScreen({
18660
18722
  onSubmit: stopEditing,
18661
18723
  mask: field.masked ? "\u2022" : void 0
18662
18724
  }
18663
- ) : /* @__PURE__ */ jsx15(Text14, { color: display ? PALETTE.text : PALETTE.muted, children: display || (field.hint ?? "(empty)") })
18725
+ ) : /* @__PURE__ */ jsx16(Text15, { color: display ? PALETTE.text : PALETTE.muted, children: display || (field.hint ?? "(empty)") })
18664
18726
  ] }, field.key);
18665
18727
  })
18666
18728
  ]
18667
18729
  }
18668
18730
  ),
18669
- notice && /* @__PURE__ */ jsxs14(Fragment2, { children: [
18670
- /* @__PURE__ */ jsx15(Text14, { children: " " }),
18671
- /* @__PURE__ */ jsxs14(Text14, { color: PALETTE.error, children: [
18731
+ notice && /* @__PURE__ */ jsxs15(Fragment3, { children: [
18732
+ /* @__PURE__ */ jsx16(Text15, { children: " " }),
18733
+ /* @__PURE__ */ jsxs15(Text15, { color: PALETTE.error, children: [
18672
18734
  "\u2717 ",
18673
18735
  notice.text
18674
18736
  ] })
18675
18737
  ] }),
18676
- validating && /* @__PURE__ */ jsxs14(Fragment2, { children: [
18677
- /* @__PURE__ */ jsx15(Text14, { children: " " }),
18678
- /* @__PURE__ */ jsx15(Text14, { color: PALETTE.accent, children: "Validating credentials..." })
18738
+ validating && /* @__PURE__ */ jsxs15(Fragment3, { children: [
18739
+ /* @__PURE__ */ jsx16(Text15, { children: " " }),
18740
+ /* @__PURE__ */ jsx16(Text15, { color: PALETTE.accent, children: "Validating credentials..." })
18679
18741
  ] }),
18680
- !prefilled && !validating && !notice && /* @__PURE__ */ jsxs14(Fragment2, { children: [
18681
- /* @__PURE__ */ jsx15(Text14, { children: " " }),
18682
- /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: credentialsPurpose(tokensOnly) }),
18683
- /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: "Tip: save these under Settings \u2192 Configuration so they pre-fill here." })
18742
+ !prefilled && !validating && !notice && /* @__PURE__ */ jsxs15(Fragment3, { children: [
18743
+ /* @__PURE__ */ jsx16(Text15, { children: " " }),
18744
+ /* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: credentialsPurpose(tokensOnly) }),
18745
+ /* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Tip: save these under Settings \u2192 Configuration so they pre-fill here." })
18684
18746
  ] }),
18685
- changed && !validating && !notice && /* @__PURE__ */ jsxs14(Fragment2, { children: [
18686
- /* @__PURE__ */ jsx15(Text14, { children: " " }),
18687
- /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: "Changed values are saved after they validate." })
18747
+ changed && !validating && !notice && /* @__PURE__ */ jsxs15(Fragment3, { children: [
18748
+ /* @__PURE__ */ jsx16(Text15, { children: " " }),
18749
+ /* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Changed values are saved after they validate." })
18688
18750
  ] }),
18689
- editing && /* @__PURE__ */ jsxs14(Fragment2, { children: [
18690
- /* @__PURE__ */ jsx15(Text14, { children: " " }),
18691
- /* @__PURE__ */ jsx15(
18751
+ editing && /* @__PURE__ */ jsxs15(Fragment3, { children: [
18752
+ /* @__PURE__ */ jsx16(Text15, { children: " " }),
18753
+ /* @__PURE__ */ jsx16(
18692
18754
  ControlHints,
18693
18755
  {
18694
18756
  hints: [
@@ -18831,9 +18893,9 @@ function resolveAgentChoice(flag, stored) {
18831
18893
  }
18832
18894
 
18833
18895
  // packages/experience-design-system-cli/src/tui/import/steps/06-extraction/screen.tsx
18834
- import { jsx as jsx16 } from "react/jsx-runtime";
18896
+ import { jsx as jsx17 } from "react/jsx-runtime";
18835
18897
  function ExtractionScreen({ progress, agent, rowMs }) {
18836
- return /* @__PURE__ */ jsx16(
18898
+ return /* @__PURE__ */ jsx17(
18837
18899
  RunningStep,
18838
18900
  {
18839
18901
  step: "extraction",
@@ -18845,7 +18907,7 @@ function ExtractionScreen({ progress, agent, rowMs }) {
18845
18907
 
18846
18908
  // packages/experience-design-system-cli/src/tui/import/steps/05-token-review/screen.tsx
18847
18909
  import { useEffect as useEffect9, useMemo as useMemo2, useState as useState10 } from "react";
18848
- import { Box as Box15, Text as Text15, useInput as useInput12 } from "ink";
18910
+ import { Box as Box16, Text as Text16, useInput as useInput12 } from "ink";
18849
18911
  init_debug_store();
18850
18912
 
18851
18913
  // packages/experience-design-system-cli/src/tui/import/steps/05-token-review/load.ts
@@ -18902,7 +18964,7 @@ function loadTokenRows(tokensPath) {
18902
18964
  }
18903
18965
 
18904
18966
  // packages/experience-design-system-cli/src/tui/import/steps/05-token-review/screen.tsx
18905
- import { jsx as jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
18967
+ import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
18906
18968
  var VISIBLE_ROWS = 15;
18907
18969
  var COLUMN_GAP = 3;
18908
18970
  function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
@@ -18947,22 +19009,22 @@ function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
18947
19009
  const typeWidth = Math.max(4, ...rows.map((row) => row.type.length)) + COLUMN_GAP;
18948
19010
  const valueWidth = Math.max(10, innerWidth - pathWidth - typeWidth - 2);
18949
19011
  const clip = (text, width) => text.length > width ? `${text.slice(0, Math.max(0, width - 1))}\u2026` : text.padEnd(width);
18950
- return /* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", children: [
18951
- /* @__PURE__ */ jsx17(StepHeader, { step: "review" }),
18952
- /* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", paddingX: 2, paddingBottom: 1, children: [
18953
- /* @__PURE__ */ jsx17(Text15, { bold: true, children: "Review design tokens" }),
18954
- /* @__PURE__ */ jsx17(Box15, { marginTop: 1, children: loaded.ok ? /* @__PURE__ */ jsxs15(Text15, { color: PALETTE.muted, children: [
19012
+ return /* @__PURE__ */ jsxs16(Box16, { flexDirection: "column", children: [
19013
+ /* @__PURE__ */ jsx18(StepHeader, { step: "review" }),
19014
+ /* @__PURE__ */ jsxs16(Box16, { flexDirection: "column", paddingX: 2, paddingBottom: 1, children: [
19015
+ /* @__PURE__ */ jsx18(Text16, { bold: true, children: "Review design tokens" }),
19016
+ /* @__PURE__ */ jsx18(Box16, { marginTop: 1, children: loaded.ok ? /* @__PURE__ */ jsxs16(Text16, { color: PALETTE.muted, children: [
18955
19017
  rows.length,
18956
19018
  " ",
18957
19019
  rows.length === 1 ? "token" : "tokens",
18958
19020
  " generated from ",
18959
19021
  tokensPath
18960
- ] }) : /* @__PURE__ */ jsxs15(Text15, { color: PALETTE.error, children: [
19022
+ ] }) : /* @__PURE__ */ jsxs16(Text16, { color: PALETTE.error, children: [
18961
19023
  "Could not read the generated tokens: ",
18962
19024
  loaded.message
18963
19025
  ] }) }),
18964
- /* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", marginTop: 1, children: [
18965
- /* @__PURE__ */ jsxs15(Text15, { bold: true, color: PALETTE.muted, wrap: "truncate-end", children: [
19026
+ /* @__PURE__ */ jsxs16(Box16, { flexDirection: "column", marginTop: 1, children: [
19027
+ /* @__PURE__ */ jsxs16(Text16, { bold: true, color: PALETTE.muted, wrap: "truncate-end", children: [
18966
19028
  " ",
18967
19029
  clip("Token name", pathWidth),
18968
19030
  " ",
@@ -18972,7 +19034,7 @@ function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
18972
19034
  ] }),
18973
19035
  rows.slice(start, end).map((row, offset) => {
18974
19036
  const active = start + offset === selected;
18975
- return /* @__PURE__ */ jsxs15(Text15, { color: active ? PALETTE.accent : void 0, bold: active, wrap: "truncate-end", children: [
19037
+ return /* @__PURE__ */ jsxs16(Text16, { color: active ? PALETTE.accent : void 0, bold: active, wrap: "truncate-end", children: [
18976
19038
  active ? "\u203A " : " ",
18977
19039
  clip(row.path, pathWidth),
18978
19040
  " ",
@@ -18982,14 +19044,14 @@ function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
18982
19044
  ] }, row.path);
18983
19045
  })
18984
19046
  ] }),
18985
- rows.length > VISIBLE_ROWS && /* @__PURE__ */ jsx17(Box15, { marginTop: 1, children: /* @__PURE__ */ jsxs15(Text15, { color: PALETTE.muted, children: [
19047
+ rows.length > VISIBLE_ROWS && /* @__PURE__ */ jsx18(Box16, { marginTop: 1, children: /* @__PURE__ */ jsxs16(Text16, { color: PALETTE.muted, children: [
18986
19048
  start + 1,
18987
19049
  "-",
18988
19050
  end,
18989
19051
  " of ",
18990
19052
  rows.length
18991
19053
  ] }) }),
18992
- /* @__PURE__ */ jsx17(Box15, { marginTop: 1, children: /* @__PURE__ */ jsx17(ControlHints, { hints: TOKEN_REVIEW_CONTROLS }) })
19054
+ /* @__PURE__ */ jsx18(Box16, { marginTop: 1, children: /* @__PURE__ */ jsx18(ControlHints, { hints: TOKEN_REVIEW_CONTROLS }) })
18993
19055
  ] })
18994
19056
  ] });
18995
19057
  }
@@ -19270,7 +19332,7 @@ function useExtraction(input) {
19270
19332
  }),
19271
19333
  rowMs: []
19272
19334
  });
19273
- let lastProgress;
19335
+ let lastProgress2;
19274
19336
  const startedAt = Date.now();
19275
19337
  let rowMs = [];
19276
19338
  startDebugRun({
@@ -19280,13 +19342,13 @@ function useExtraction(input) {
19280
19342
  inputs: extractionLogInputs(input)
19281
19343
  });
19282
19344
  void runExtraction(input, (progress) => {
19283
- lastProgress = progress;
19345
+ lastProgress2 = progress;
19284
19346
  rowMs = trackFinished(rowMs, progressRows(progress, input.agent), Date.now() - startedAt);
19285
19347
  if (current.current === input) setState({ status: "running", progress, rowMs });
19286
19348
  }).then((result) => {
19287
19349
  if (current.current !== input) return;
19288
19350
  void finishDebugRun({
19289
- ...extractionLogOutputs(result, lastProgress, input.credentials?.cmaToken ?? ""),
19351
+ ...extractionLogOutputs(result, lastProgress2, input.credentials?.cmaToken ?? ""),
19290
19352
  exitMethod: result.ok ? "saved" : "discarded"
19291
19353
  });
19292
19354
  setState({ status: "done", result });
@@ -19354,7 +19416,7 @@ function useTokensOnly(input) {
19354
19416
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/screen.tsx
19355
19417
  init_debug_store();
19356
19418
  import { useEffect as useEffect14, useMemo as useMemo4 } from "react";
19357
- import { Box as Box25, Text as Text26 } from "ink";
19419
+ import { Box as Box26, Text as Text27 } from "ink";
19358
19420
 
19359
19421
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/log.ts
19360
19422
  var MAX_NAMES = 20;
@@ -19384,12 +19446,12 @@ function scopeGateLogOutputs(components, decisions) {
19384
19446
  }
19385
19447
 
19386
19448
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/tokens-column.tsx
19387
- import { Box as Box17, Text as Text17 } from "ink";
19449
+ import { Box as Box18, Text as Text18 } from "ink";
19388
19450
  import figures2 from "figures";
19389
19451
 
19390
19452
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/windowed-panel.tsx
19391
- import { Box as Box16, Text as Text16 } from "ink";
19392
- import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
19453
+ import { Box as Box17, Text as Text17 } from "ink";
19454
+ import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
19393
19455
  var MIN_TERMINAL_PANEL_HEIGHT = 5;
19394
19456
  function terminalPanelHeight(rows, reservedRows = 4) {
19395
19457
  return Math.max(MIN_TERMINAL_PANEL_HEIGHT, rows - reservedRows);
@@ -19405,8 +19467,8 @@ function FixedPanel({
19405
19467
  clipOverflow = true,
19406
19468
  children
19407
19469
  }) {
19408
- return /* @__PURE__ */ jsx18(
19409
- Box16,
19470
+ return /* @__PURE__ */ jsx19(
19471
+ Box17,
19410
19472
  {
19411
19473
  flexDirection: "column",
19412
19474
  width,
@@ -19422,7 +19484,7 @@ function FixedPanel({
19422
19484
  );
19423
19485
  }
19424
19486
  function WindowedPanel({ width, height, title, focused, children }) {
19425
- return /* @__PURE__ */ jsxs16(
19487
+ return /* @__PURE__ */ jsxs17(
19426
19488
  FixedPanel,
19427
19489
  {
19428
19490
  width,
@@ -19431,7 +19493,7 @@ function WindowedPanel({ width, height, title, focused, children }) {
19431
19493
  ...height === void 0 ? {} : { height },
19432
19494
  focused,
19433
19495
  children: [
19434
- title && /* @__PURE__ */ jsx18(WindowedPanelHeader, { title, width, focused }),
19496
+ title && /* @__PURE__ */ jsx19(WindowedPanelHeader, { title, width, focused }),
19435
19497
  children
19436
19498
  ]
19437
19499
  }
@@ -19442,9 +19504,9 @@ function WindowedPanelHeader({
19442
19504
  width,
19443
19505
  focused
19444
19506
  }) {
19445
- return /* @__PURE__ */ jsxs16(Box16, { flexDirection: "column", children: [
19446
- /* @__PURE__ */ jsx18(Text16, { bold: true, color: PALETTE.accent, inverse: focused, children: title }),
19447
- /* @__PURE__ */ jsx18(Text16, { color: PALETTE.muted, children: "\u2500".repeat(Math.max(0, width - 2)) })
19507
+ return /* @__PURE__ */ jsxs17(Box17, { flexDirection: "column", children: [
19508
+ /* @__PURE__ */ jsx19(Text17, { bold: true, color: PALETTE.accent, inverse: focused, children: title }),
19509
+ /* @__PURE__ */ jsx19(Text17, { color: PALETTE.muted, children: "\u2500".repeat(Math.max(0, width - 2)) })
19448
19510
  ] });
19449
19511
  }
19450
19512
  function formatWindowIndicator(direction, count) {
@@ -19453,38 +19515,38 @@ function formatWindowIndicator(direction, count) {
19453
19515
  }
19454
19516
  function WindowFooter({ above, below }) {
19455
19517
  const parts = [above > 0 ? `\u2191 ${above}` : "", below > 0 ? `\u2193 ${below}` : ""].filter(Boolean);
19456
- return /* @__PURE__ */ jsx18(Text16, { color: PALETTE.muted, children: parts.length === 0 ? " " : `${parts.join(" \xB7 ")} more` });
19518
+ return /* @__PURE__ */ jsx19(Text17, { color: PALETTE.muted, children: parts.length === 0 ? " " : `${parts.join(" \xB7 ")} more` });
19457
19519
  }
19458
19520
  function WindowIndicator({ direction, count }) {
19459
- return /* @__PURE__ */ jsx18(Text16, { color: PALETTE.muted, children: formatWindowIndicator(direction, count) });
19521
+ return /* @__PURE__ */ jsx19(Text17, { color: PALETTE.muted, children: formatWindowIndicator(direction, count) });
19460
19522
  }
19461
19523
 
19462
19524
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/tokens-column.tsx
19463
- import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
19525
+ import { jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
19464
19526
  function TokensColumn(props) {
19465
19527
  const { title, width, height, tokens, cursor, focused, visibleCount } = props;
19466
19528
  const nameWidth = Math.min(longestEntries(tokens).path + 2, Math.floor((width - 8) / 2));
19467
19529
  const window = computeColumnWindow(tokens.length, cursor, Math.max(1, visibleCount));
19468
- return /* @__PURE__ */ jsxs17(WindowedPanel, { width, height, title, focused, children: [
19469
- /* @__PURE__ */ jsx19(WindowIndicator, { direction: "up", count: window.above }),
19530
+ return /* @__PURE__ */ jsxs18(WindowedPanel, { width, height, title, focused, children: [
19531
+ /* @__PURE__ */ jsx20(WindowIndicator, { direction: "up", count: window.above }),
19470
19532
  tokens.slice(window.start, window.end).map((token, offset) => {
19471
19533
  const isCursor = focused && window.start + offset === cursor;
19472
- return /* @__PURE__ */ jsxs17(Box17, { children: [
19473
- /* @__PURE__ */ jsx19(Text17, { color: PALETTE.accent, bold: true, children: isCursor ? figures2.pointer : " " }),
19474
- /* @__PURE__ */ jsxs17(Text17, { wrap: "truncate-end", color: isCursor ? PALETTE.accent : void 0, bold: isCursor, children: [
19534
+ return /* @__PURE__ */ jsxs18(Box18, { children: [
19535
+ /* @__PURE__ */ jsx20(Text18, { color: PALETTE.accent, bold: true, children: isCursor ? figures2.pointer : " " }),
19536
+ /* @__PURE__ */ jsxs18(Text18, { wrap: "truncate-end", color: isCursor ? PALETTE.accent : void 0, bold: isCursor, children: [
19475
19537
  ` ${token.path.padEnd(nameWidth)}`,
19476
- /* @__PURE__ */ jsx19(Text17, { color: PALETTE.muted, children: token.value })
19538
+ /* @__PURE__ */ jsx20(Text18, { color: PALETTE.muted, children: token.value })
19477
19539
  ] })
19478
19540
  ] }, token.path);
19479
19541
  }),
19480
- /* @__PURE__ */ jsx19(WindowIndicator, { direction: "down", count: window.below })
19542
+ /* @__PURE__ */ jsx20(WindowIndicator, { direction: "down", count: window.below })
19481
19543
  ] });
19482
19544
  }
19483
19545
 
19484
19546
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/cycles-panel.tsx
19485
- import { Box as Box18, Text as Text18 } from "ink";
19547
+ import { Box as Box19, Text as Text19 } from "ink";
19486
19548
  import figures3 from "figures";
19487
- import { jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
19549
+ import { jsx as jsx21, jsxs as jsxs19 } from "react/jsx-runtime";
19488
19550
  function cycleLabel(cycle, index) {
19489
19551
  const parts = [];
19490
19552
  for (let i = 0; i < cycle.edges.length; i++) {
@@ -19495,36 +19557,36 @@ function cycleLabel(cycle, index) {
19495
19557
  return `Cycle ${index + 1}: ${parts.join(" \u2192 ")}`;
19496
19558
  }
19497
19559
  function CyclesPanel({ cycles, cursor }) {
19498
- return /* @__PURE__ */ jsxs18(Box18, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.warning, paddingX: 1, marginTop: 1, children: [
19499
- /* @__PURE__ */ jsx20(Text18, { bold: true, color: PALETTE.warning, children: `Cycles detected (${cycles.length}):` }),
19500
- /* @__PURE__ */ jsx20(Text18, { children: " " }),
19560
+ return /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.warning, paddingX: 1, marginTop: 1, children: [
19561
+ /* @__PURE__ */ jsx21(Text19, { bold: true, color: PALETTE.warning, children: `Cycles detected (${cycles.length}):` }),
19562
+ /* @__PURE__ */ jsx21(Text19, { children: " " }),
19501
19563
  cycles.map((cycle, i) => {
19502
19564
  const isCursor = i === cursor;
19503
- return /* @__PURE__ */ jsxs18(Text18, { children: [
19504
- isCursor ? /* @__PURE__ */ jsx20(Text18, { color: PALETTE.accent, bold: true, children: figures3.pointer }) : /* @__PURE__ */ jsx20(Text18, { children: " " }),
19505
- /* @__PURE__ */ jsx20(Text18, { color: PALETTE.warning, inverse: isCursor, children: " " + cycleLabel(cycle, i) })
19565
+ return /* @__PURE__ */ jsxs19(Text19, { children: [
19566
+ isCursor ? /* @__PURE__ */ jsx21(Text19, { color: PALETTE.accent, bold: true, children: figures3.pointer }) : /* @__PURE__ */ jsx21(Text19, { children: " " }),
19567
+ /* @__PURE__ */ jsx21(Text19, { color: PALETTE.warning, inverse: isCursor, children: " " + cycleLabel(cycle, i) })
19506
19568
  ] }, i);
19507
19569
  }),
19508
- /* @__PURE__ */ jsx20(Text18, { children: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [c/Esc] close" })
19570
+ /* @__PURE__ */ jsx21(Text19, { children: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [c/Esc] close" })
19509
19571
  ] });
19510
19572
  }
19511
19573
 
19512
19574
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/reject-prompt.tsx
19513
- import { Box as Box19, Text as Text19 } from "ink";
19514
- import { jsx as jsx21, jsxs as jsxs19 } from "react/jsx-runtime";
19575
+ import { Box as Box20, Text as Text20 } from "ink";
19576
+ import { jsx as jsx22, jsxs as jsxs20 } from "react/jsx-runtime";
19515
19577
  function RejectPrompt({ pending }) {
19516
- return /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.warning, paddingX: 1, marginTop: 1, children: [
19517
- /* @__PURE__ */ jsx21(Text19, { bold: true, color: PALETTE.warning, children: `Rejecting ${pending.target} will:` }),
19518
- pending.ancestors.length > 0 && /* @__PURE__ */ jsx21(Text19, { children: `- Reject ancestors: ${pending.ancestors.join(", ")}` }),
19519
- pending.descendants.length > 0 && /* @__PURE__ */ jsx21(Text19, { children: `- Deselect descendants: ${pending.descendants.join(", ")}` }),
19520
- /* @__PURE__ */ jsx21(Text19, { children: "[y] confirm \xB7 [n]/[Esc] cancel" })
19578
+ return /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.warning, paddingX: 1, marginTop: 1, children: [
19579
+ /* @__PURE__ */ jsx22(Text20, { bold: true, color: PALETTE.warning, children: `Rejecting ${pending.target} will:` }),
19580
+ pending.ancestors.length > 0 && /* @__PURE__ */ jsx22(Text20, { children: `- Reject ancestors: ${pending.ancestors.join(", ")}` }),
19581
+ pending.descendants.length > 0 && /* @__PURE__ */ jsx22(Text20, { children: `- Deselect descendants: ${pending.descendants.join(", ")}` }),
19582
+ /* @__PURE__ */ jsx22(Text20, { children: "[y] confirm \xB7 [n]/[Esc] cancel" })
19521
19583
  ] });
19522
19584
  }
19523
19585
 
19524
19586
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CompactControlBar.tsx
19525
- import { jsx as jsx22 } from "react/jsx-runtime";
19587
+ import { jsx as jsx23 } from "react/jsx-runtime";
19526
19588
  function CompactControlBar({ hasGroupRoots, searchActive }) {
19527
- return /* @__PURE__ */ jsx22(
19589
+ return /* @__PURE__ */ jsx23(
19528
19590
  ControlHints,
19529
19591
  {
19530
19592
  hints: [
@@ -19541,8 +19603,8 @@ function CompactControlBar({ hasGroupRoots, searchActive }) {
19541
19603
  }
19542
19604
 
19543
19605
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CounterStrip.tsx
19544
- import { Box as Box20, Text as Text20 } from "ink";
19545
- import { jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
19606
+ import { Box as Box21, Text as Text21 } from "ink";
19607
+ import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
19546
19608
  function CounterStrip(props) {
19547
19609
  const { counters, totalWidth } = props;
19548
19610
  const condensed = totalWidth < 60;
@@ -19551,38 +19613,38 @@ function CounterStrip(props) {
19551
19613
  const labelRej = condensed ? "Rej" : "Rejected";
19552
19614
  const labelUnd = condensed ? "Und" : "Undecided";
19553
19615
  const sep = condensed ? " | " : " ";
19554
- return /* @__PURE__ */ jsx23(Box20, { children: /* @__PURE__ */ jsxs20(Text20, { children: [
19555
- /* @__PURE__ */ jsxs20(Text20, { color: PALETTE.muted, children: [
19616
+ return /* @__PURE__ */ jsx24(Box21, { children: /* @__PURE__ */ jsxs21(Text21, { children: [
19617
+ /* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
19556
19618
  labelGrp,
19557
19619
  " "
19558
19620
  ] }),
19559
- /* @__PURE__ */ jsx23(Text20, { bold: true, children: counters.groups }),
19560
- /* @__PURE__ */ jsx23(Text20, { color: PALETTE.muted, children: sep }),
19561
- /* @__PURE__ */ jsxs20(Text20, { color: PALETTE.muted, children: [
19621
+ /* @__PURE__ */ jsx24(Text21, { bold: true, children: counters.groups }),
19622
+ /* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep }),
19623
+ /* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
19562
19624
  labelAcc,
19563
19625
  " "
19564
19626
  ] }),
19565
- /* @__PURE__ */ jsx23(Text20, { bold: true, children: `${counters.accepted}/${counters.total}` }),
19566
- /* @__PURE__ */ jsx23(Text20, { color: PALETTE.muted, children: sep }),
19567
- /* @__PURE__ */ jsxs20(Text20, { color: PALETTE.muted, children: [
19627
+ /* @__PURE__ */ jsx24(Text21, { bold: true, children: `${counters.accepted}/${counters.total}` }),
19628
+ /* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep }),
19629
+ /* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
19568
19630
  labelRej,
19569
19631
  " "
19570
19632
  ] }),
19571
- /* @__PURE__ */ jsx23(Text20, { bold: true, children: counters.rejected }),
19572
- /* @__PURE__ */ jsx23(Text20, { color: PALETTE.muted, children: sep }),
19573
- /* @__PURE__ */ jsxs20(Text20, { color: PALETTE.muted, children: [
19633
+ /* @__PURE__ */ jsx24(Text21, { bold: true, children: counters.rejected }),
19634
+ /* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep }),
19635
+ /* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
19574
19636
  labelUnd,
19575
19637
  " "
19576
19638
  ] }),
19577
- /* @__PURE__ */ jsx23(Text20, { bold: true, children: counters.undecided }),
19578
- /* @__PURE__ */ jsx23(Text20, { color: PALETTE.muted, children: sep })
19639
+ /* @__PURE__ */ jsx24(Text21, { bold: true, children: counters.undecided }),
19640
+ /* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep })
19579
19641
  ] }) });
19580
19642
  }
19581
19643
 
19582
19644
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GotoBanner.tsx
19583
19645
  import figures4 from "figures";
19584
- import { Box as Box21, Text as Text21 } from "ink";
19585
- import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
19646
+ import { Box as Box22, Text as Text22 } from "ink";
19647
+ import { jsx as jsx25, jsxs as jsxs22 } from "react/jsx-runtime";
19586
19648
  var DEFAULT_MAX_ROWS = 15;
19587
19649
  function windowStart(rowCount, highlightIndex, maxRows) {
19588
19650
  if (rowCount <= maxRows) return 0;
@@ -19593,9 +19655,9 @@ function windowStart(rowCount, highlightIndex, maxRows) {
19593
19655
  return start;
19594
19656
  }
19595
19657
  function defaultRenderRow(row, index, isCursor) {
19596
- return /* @__PURE__ */ jsxs21(Text21, { children: [
19597
- isCursor ? /* @__PURE__ */ jsx24(Text21, { color: PALETTE.accent, bold: true, children: figures4.pointer }) : /* @__PURE__ */ jsx24(Text21, { children: " " }),
19598
- /* @__PURE__ */ jsx24(Text21, { inverse: isCursor, children: " " + row.label })
19658
+ return /* @__PURE__ */ jsxs22(Text22, { children: [
19659
+ isCursor ? /* @__PURE__ */ jsx25(Text22, { color: PALETTE.accent, bold: true, children: figures4.pointer }) : /* @__PURE__ */ jsx25(Text22, { children: " " }),
19660
+ /* @__PURE__ */ jsx25(Text22, { inverse: isCursor, children: " " + row.label })
19599
19661
  ] }, index);
19600
19662
  }
19601
19663
  function GotoBanner({
@@ -19614,8 +19676,8 @@ function GotoBanner({
19614
19676
  const visible = rows.slice(start, end);
19615
19677
  const moreAbove = start;
19616
19678
  const moreBelow = rows.length - end;
19617
- return /* @__PURE__ */ jsxs21(
19618
- Box21,
19679
+ return /* @__PURE__ */ jsxs22(
19680
+ Box22,
19619
19681
  {
19620
19682
  flexDirection: "column",
19621
19683
  borderStyle: "single",
@@ -19626,14 +19688,14 @@ function GotoBanner({
19626
19688
  width,
19627
19689
  flexShrink: 0,
19628
19690
  children: [
19629
- /* @__PURE__ */ jsx24(Text21, { bold: true, children: title }),
19630
- moreAbove > 0 && /* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: ` \u25B2 ${moreAbove} more` }),
19691
+ /* @__PURE__ */ jsx25(Text22, { bold: true, children: title }),
19692
+ moreAbove > 0 && /* @__PURE__ */ jsx25(Text22, { color: PALETTE.muted, children: ` \u25B2 ${moreAbove} more` }),
19631
19693
  visible.map((row, vi) => {
19632
19694
  const i = start + vi;
19633
19695
  return renderRow(row, i, i === highlightIndex);
19634
19696
  }),
19635
- moreBelow > 0 && /* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: ` \u25BC ${moreBelow} more` }),
19636
- footerHint !== void 0 && /* @__PURE__ */ jsx24(Box21, { marginTop: 1, children: /* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: footerHint }) })
19697
+ moreBelow > 0 && /* @__PURE__ */ jsx25(Text22, { color: PALETTE.muted, children: ` \u25BC ${moreBelow} more` }),
19698
+ footerHint !== void 0 && /* @__PURE__ */ jsx25(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text22, { color: PALETTE.muted, children: footerHint }) })
19637
19699
  ]
19638
19700
  }
19639
19701
  );
@@ -19641,7 +19703,7 @@ function GotoBanner({
19641
19703
 
19642
19704
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GroupedSidebar.tsx
19643
19705
  import figures5 from "figures";
19644
- import { Box as Box22, Text as Text23 } from "ink";
19706
+ import { Box as Box23, Text as Text24 } from "ink";
19645
19707
 
19646
19708
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/graph/cycle-detection.ts
19647
19709
  function buildGraph(components) {
@@ -19981,8 +20043,8 @@ function findSharedDeps(closures) {
19981
20043
  }
19982
20044
 
19983
20045
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/badge.tsx
19984
- import { Text as Text22 } from "ink";
19985
- import { jsx as jsx25 } from "react/jsx-runtime";
20046
+ import { Text as Text23 } from "ink";
20047
+ import { jsx as jsx26 } from "react/jsx-runtime";
19986
20048
  function previewBadge(annotation) {
19987
20049
  switch (annotation) {
19988
20050
  case "new":
@@ -20001,11 +20063,11 @@ function PreviewBadge({
20001
20063
  badge,
20002
20064
  highlighted = false
20003
20065
  }) {
20004
- return badge ? /* @__PURE__ */ jsx25(Text22, { color: !highlighted && badge.dim ? PALETTE.muted : badge.color, bold: badge.bold, children: badge.char }) : /* @__PURE__ */ jsx25(Text22, { children: " " });
20066
+ return badge ? /* @__PURE__ */ jsx26(Text23, { color: !highlighted && badge.dim ? PALETTE.muted : badge.color, bold: badge.bold, children: badge.char }) : /* @__PURE__ */ jsx26(Text23, { children: " " });
20005
20067
  }
20006
20068
 
20007
20069
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GroupedSidebar.tsx
20008
- import { jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
20070
+ import { jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
20009
20071
  var GLYPH_EXPAND_COLLAPSED = "\u25B8";
20010
20072
  var GLYPH_EXPAND_EXPANDED = "\u25BE";
20011
20073
  var GLYPH_TREE_MID = "\u251C\u2500";
@@ -20430,8 +20492,8 @@ function GroupedSidebar(props) {
20430
20492
  const start = windowed ? Math.max(0, scrollOffset ?? 0) : 0;
20431
20493
  const end = windowed ? start + (visibleCount ?? allRows.length) + 1 : allRows.length;
20432
20494
  const rows = windowed ? allRows.slice(start, end) : allRows;
20433
- return /* @__PURE__ */ jsxs22(WindowedPanel, { width, height: props.height, title, focused, children: [
20434
- allRows.length === 0 && emptyMessage !== void 0 && /* @__PURE__ */ jsxs22(Text23, { color: PALETTE.warning, children: [
20495
+ return /* @__PURE__ */ jsxs23(WindowedPanel, { width, height: props.height, title, focused, children: [
20496
+ allRows.length === 0 && emptyMessage !== void 0 && /* @__PURE__ */ jsxs23(Text24, { color: PALETTE.warning, children: [
20435
20497
  " ",
20436
20498
  emptyMessage
20437
20499
  ] }),
@@ -20461,13 +20523,13 @@ function GroupedSidebar(props) {
20461
20523
  isOwn: rs?.isOwn ?? false,
20462
20524
  isCursor
20463
20525
  });
20464
- return /* @__PURE__ */ jsxs22(Box22, { children: [
20465
- isCursor ? /* @__PURE__ */ jsx26(Text23, { color: PALETTE.accent, bold: true, children: figures5.pointer }) : /* @__PURE__ */ jsx26(Text23, { children: " " }),
20466
- /* @__PURE__ */ jsx26(PreviewBadge, { badge, highlighted: isSelected }),
20467
- selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */ jsx26(Text23, { color: !isSelected && selDim ? PALETTE.muted : selColor, bold: selBold, children: " " + selGlyph }) : /* @__PURE__ */ jsx26(Text23, { children: " " })),
20468
- aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */ jsx26(Text23, { color: PALETTE.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx26(Text23, { children: " " })),
20469
- /* @__PURE__ */ jsxs22(
20470
- Text23,
20526
+ return /* @__PURE__ */ jsxs23(Box23, { children: [
20527
+ isCursor ? /* @__PURE__ */ jsx27(Text24, { color: PALETTE.accent, bold: true, children: figures5.pointer }) : /* @__PURE__ */ jsx27(Text24, { children: " " }),
20528
+ /* @__PURE__ */ jsx27(PreviewBadge, { badge, highlighted: isSelected }),
20529
+ selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */ jsx27(Text24, { color: !isSelected && selDim ? PALETTE.muted : selColor, bold: selBold, children: " " + selGlyph }) : /* @__PURE__ */ jsx27(Text24, { children: " " })),
20530
+ aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */ jsx27(Text24, { color: PALETTE.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx27(Text24, { children: " " })),
20531
+ /* @__PURE__ */ jsxs23(
20532
+ Text24,
20471
20533
  {
20472
20534
  color: isSelected ? PALETTE.accent : labelStyle.dim ? PALETTE.muted : labelStyle.color,
20473
20535
  bold: isSelected || labelStyle.bold,
@@ -20480,16 +20542,16 @@ function GroupedSidebar(props) {
20480
20542
  ]
20481
20543
  }
20482
20544
  ),
20483
- inheritanceStyle.glyph && /* @__PURE__ */ jsx26(Text23, { color: inheritanceStyle.dim ? PALETTE.muted : inheritanceStyle.color, bold: inheritanceStyle.bold, children: " " + inheritanceStyle.glyph })
20545
+ inheritanceStyle.glyph && /* @__PURE__ */ jsx27(Text24, { color: inheritanceStyle.dim ? PALETTE.muted : inheritanceStyle.color, bold: inheritanceStyle.bold, children: " " + inheritanceStyle.glyph })
20484
20546
  ] }, row.key);
20485
20547
  }),
20486
- windowed && /* @__PURE__ */ jsx26(WindowFooter, { above: start, below: Math.max(0, allRows.length - end) })
20548
+ windowed && /* @__PURE__ */ jsx27(WindowFooter, { above: start, below: Math.max(0, allRows.length - end) })
20487
20549
  ] });
20488
20550
  }
20489
20551
 
20490
20552
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/HelpOverlay.tsx
20491
20553
  import React11 from "react";
20492
- import { Box as Box23, Text as Text24 } from "ink";
20554
+ import { Box as Box24, Text as Text25 } from "ink";
20493
20555
 
20494
20556
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/hooks/useImmediateInput.ts
20495
20557
  import { useLayoutEffect, useRef as useRef8 } from "react";
@@ -20588,7 +20650,7 @@ function useTerminalSize() {
20588
20650
  }
20589
20651
 
20590
20652
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/HelpOverlay.tsx
20591
- import { Fragment as Fragment3, jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
20653
+ import { Fragment as Fragment4, jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
20592
20654
  function HelpOverlay(props) {
20593
20655
  const { onClose } = props;
20594
20656
  const { columns: terminalColumns, rows: terminalRows } = useTerminalSize();
@@ -20599,8 +20661,8 @@ function HelpOverlay(props) {
20599
20661
  if (input === "h" || key.escape) onClose();
20600
20662
  }, props.handleInput !== false);
20601
20663
  if (props.sections) {
20602
- return /* @__PURE__ */ jsxs23(
20603
- Box23,
20664
+ return /* @__PURE__ */ jsxs24(
20665
+ Box24,
20604
20666
  {
20605
20667
  flexDirection: "column",
20606
20668
  borderStyle: "round",
@@ -20609,19 +20671,19 @@ function HelpOverlay(props) {
20609
20671
  height: panelHeight,
20610
20672
  overflowY: "hidden",
20611
20673
  children: [
20612
- /* @__PURE__ */ jsx27(Text24, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
20613
- props.sections.map((section) => /* @__PURE__ */ jsxs23(React11.Fragment, { children: [
20614
- /* @__PURE__ */ jsx27(Text24, { children: " " }),
20615
- /* @__PURE__ */ jsx27(Text24, { bold: true, children: section.title }),
20616
- section.entries.map((entry) => /* @__PURE__ */ jsx27(Text24, { children: entry.keys ? " " + entry.keys.padEnd(16) + " " + entry.label : " " + entry.label }, entry.keys + entry.label))
20674
+ /* @__PURE__ */ jsx28(Text25, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
20675
+ props.sections.map((section) => /* @__PURE__ */ jsxs24(React11.Fragment, { children: [
20676
+ /* @__PURE__ */ jsx28(Text25, { children: " " }),
20677
+ /* @__PURE__ */ jsx28(Text25, { bold: true, children: section.title }),
20678
+ section.entries.map((entry) => /* @__PURE__ */ jsx28(Text25, { children: entry.keys ? " " + entry.keys.padEnd(16) + " " + entry.label : " " + entry.label }, entry.keys + entry.label))
20617
20679
  ] }, section.title))
20618
20680
  ]
20619
20681
  }
20620
20682
  );
20621
20683
  }
20622
20684
  const mode = props.mode;
20623
- return /* @__PURE__ */ jsxs23(
20624
- Box23,
20685
+ return /* @__PURE__ */ jsxs24(
20686
+ Box24,
20625
20687
  {
20626
20688
  flexDirection: "column",
20627
20689
  borderStyle: "round",
@@ -20630,38 +20692,38 @@ function HelpOverlay(props) {
20630
20692
  height: panelHeight,
20631
20693
  overflowY: "hidden",
20632
20694
  children: [
20633
- /* @__PURE__ */ jsx27(Text24, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
20634
- /* @__PURE__ */ jsx27(Text24, { children: " " }),
20635
- /* @__PURE__ */ jsx27(Text24, { bold: true, children: "Navigation" }),
20636
- /* @__PURE__ */ jsx27(Text24, { children: " \u2191 / k / PgUp Scroll up" }),
20637
- /* @__PURE__ */ jsx27(Text24, { children: " \u2193 / j / PgDn Scroll down" }),
20638
- /* @__PURE__ */ jsx27(Text24, { children: " g / Home Jump to top" }),
20639
- /* @__PURE__ */ jsx27(Text24, { children: " G / End Jump to bottom" }),
20640
- mode === "review" && /* @__PURE__ */ jsxs23(Fragment3, { children: [
20641
- /* @__PURE__ */ jsx27(Text24, { children: " " }),
20642
- /* @__PURE__ */ jsx27(Text24, { bold: true, children: "[Review mode only]" }),
20643
- /* @__PURE__ */ jsx27(Text24, { children: " Tab Toggle sidebar/detail" }),
20644
- /* @__PURE__ */ jsx27(Text24, { children: " a Accept component" }),
20645
- /* @__PURE__ */ jsx27(Text24, { children: " r Reject component" }),
20646
- /* @__PURE__ */ jsx27(Text24, { children: " e Edit proposal" }),
20647
- /* @__PURE__ */ jsx27(Text24, { children: " s Toggle source code" }),
20648
- /* @__PURE__ */ jsx27(Text24, { children: " A Approve all" }),
20649
- /* @__PURE__ */ jsx27(Text24, { children: " F Open finalize dialog" }),
20650
- /* @__PURE__ */ jsx27(Text24, { children: " Ctrl+S Save draft" }),
20651
- /* @__PURE__ */ jsx27(Text24, { children: " Ctrl+Z Undo" }),
20652
- /* @__PURE__ */ jsx27(Text24, { children: " Ctrl+Y Redo" }),
20653
- /* @__PURE__ */ jsx27(Text24, { children: " Esc Exit edit / close" })
20695
+ /* @__PURE__ */ jsx28(Text25, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
20696
+ /* @__PURE__ */ jsx28(Text25, { children: " " }),
20697
+ /* @__PURE__ */ jsx28(Text25, { bold: true, children: "Navigation" }),
20698
+ /* @__PURE__ */ jsx28(Text25, { children: " \u2191 / k / PgUp Scroll up" }),
20699
+ /* @__PURE__ */ jsx28(Text25, { children: " \u2193 / j / PgDn Scroll down" }),
20700
+ /* @__PURE__ */ jsx28(Text25, { children: " g / Home Jump to top" }),
20701
+ /* @__PURE__ */ jsx28(Text25, { children: " G / End Jump to bottom" }),
20702
+ mode === "review" && /* @__PURE__ */ jsxs24(Fragment4, { children: [
20703
+ /* @__PURE__ */ jsx28(Text25, { children: " " }),
20704
+ /* @__PURE__ */ jsx28(Text25, { bold: true, children: "[Review mode only]" }),
20705
+ /* @__PURE__ */ jsx28(Text25, { children: " Tab Toggle sidebar/detail" }),
20706
+ /* @__PURE__ */ jsx28(Text25, { children: " a Accept component" }),
20707
+ /* @__PURE__ */ jsx28(Text25, { children: " r Reject component" }),
20708
+ /* @__PURE__ */ jsx28(Text25, { children: " e Edit proposal" }),
20709
+ /* @__PURE__ */ jsx28(Text25, { children: " s Toggle source code" }),
20710
+ /* @__PURE__ */ jsx28(Text25, { children: " A Approve all" }),
20711
+ /* @__PURE__ */ jsx28(Text25, { children: " F Open finalize dialog" }),
20712
+ /* @__PURE__ */ jsx28(Text25, { children: " Ctrl+S Save draft" }),
20713
+ /* @__PURE__ */ jsx28(Text25, { children: " Ctrl+Z Undo" }),
20714
+ /* @__PURE__ */ jsx28(Text25, { children: " Ctrl+Y Redo" }),
20715
+ /* @__PURE__ */ jsx28(Text25, { children: " Esc Exit edit / close" })
20654
20716
  ] }),
20655
- /* @__PURE__ */ jsx27(Text24, { children: " " }),
20656
- /* @__PURE__ */ jsx27(Text24, { children: " h Close help" }),
20657
- /* @__PURE__ */ jsx27(Text24, { children: " q Quit" })
20717
+ /* @__PURE__ */ jsx28(Text25, { children: " " }),
20718
+ /* @__PURE__ */ jsx28(Text25, { children: " h Close help" }),
20719
+ /* @__PURE__ */ jsx28(Text25, { children: " q Quit" })
20658
20720
  ]
20659
20721
  }
20660
20722
  );
20661
20723
  }
20662
20724
 
20663
20725
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/SearchMatchSummary.tsx
20664
- import { Box as Box24, Text as Text25 } from "ink";
20726
+ import { Box as Box25, Text as Text26 } from "ink";
20665
20727
 
20666
20728
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/autocomplete.ts
20667
20729
  function longestCommonPrefix(names) {
@@ -20718,7 +20780,7 @@ function formatSearchMatchSummary(matches, total) {
20718
20780
  }
20719
20781
 
20720
20782
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/SearchMatchSummary.tsx
20721
- import { Fragment as Fragment4, jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
20783
+ import { Fragment as Fragment5, jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
20722
20784
  function SearchMatchSummary({
20723
20785
  open,
20724
20786
  query,
@@ -20729,17 +20791,17 @@ function SearchMatchSummary({
20729
20791
  marginTop
20730
20792
  }) {
20731
20793
  if (hidden) return null;
20732
- return /* @__PURE__ */ jsxs24(Fragment4, { children: [
20733
- open && /* @__PURE__ */ jsxs24(Box24, { marginTop, flexDirection: "column", children: [
20734
- /* @__PURE__ */ jsxs24(Text25, { children: [
20794
+ return /* @__PURE__ */ jsxs25(Fragment5, { children: [
20795
+ open && /* @__PURE__ */ jsxs25(Box25, { marginTop, flexDirection: "column", children: [
20796
+ /* @__PURE__ */ jsxs25(Text26, { children: [
20735
20797
  `/${query}`,
20736
- /* @__PURE__ */ jsx28(Text25, { color: PALETTE.accent, children: "\u258E" }),
20737
- query && /* @__PURE__ */ jsx28(Text25, { color: PALETTE.muted, children: formatSearchMatchSummary(matches, total) }),
20738
- /* @__PURE__ */ jsx28(Text25, { children: " \xB7 [Esc] leave" })
20798
+ /* @__PURE__ */ jsx29(Text26, { color: PALETTE.accent, children: "\u258E" }),
20799
+ query && /* @__PURE__ */ jsx29(Text26, { color: PALETTE.muted, children: formatSearchMatchSummary(matches, total) }),
20800
+ /* @__PURE__ */ jsx29(Text26, { children: " \xB7 [Esc] leave" })
20739
20801
  ] }),
20740
- autocompleteCandidates.length > 1 && /* @__PURE__ */ jsx28(Text25, { color: PALETTE.muted, children: ` possibilities: ${autocompleteCandidates.join(" \xB7 ").slice(0, 120)}` })
20802
+ autocompleteCandidates.length > 1 && /* @__PURE__ */ jsx29(Text26, { color: PALETTE.muted, children: ` possibilities: ${autocompleteCandidates.join(" \xB7 ").slice(0, 120)}` })
20741
20803
  ] }),
20742
- !open && query && /* @__PURE__ */ jsx28(Box24, { marginTop, children: /* @__PURE__ */ jsx28(Text25, { children: `/${query}${formatSearchMatchSummary(matches, total)} \xB7 [Esc] clear` }) })
20804
+ !open && query && /* @__PURE__ */ jsx29(Box25, { marginTop, children: /* @__PURE__ */ jsx29(Text26, { children: `/${query}${formatSearchMatchSummary(matches, total)} \xB7 [Esc] clear` }) })
20743
20805
  ] });
20744
20806
  }
20745
20807
 
@@ -21586,7 +21648,7 @@ function useScopeGate({ components, tokenCount, tokensWidth, onConfirm, onQuit }
21586
21648
  panelOpen: false,
21587
21649
  entryCount: 0
21588
21650
  });
21589
- const panelLayout = useMemo3(() => computePanelLayout(visibleCount), [visibleCount]);
21651
+ const panelLayout2 = useMemo3(() => computePanelLayout(visibleCount), [visibleCount]);
21590
21652
  useEffect13(() => {
21591
21653
  setNav((prev) => {
21592
21654
  const maxIdx = Math.max(0, visibleRows.length - 1);
@@ -21870,7 +21932,7 @@ function useScopeGate({ components, tokenCount, tokensWidth, onConfirm, onQuit }
21870
21932
  // layout
21871
21933
  totalWidth,
21872
21934
  columnPlan,
21873
- panelLayout,
21935
+ panelLayout: panelLayout2,
21874
21936
  visibleCount,
21875
21937
  panelMaxRows,
21876
21938
  // sidebar
@@ -21909,7 +21971,7 @@ function useScopeGate({ components, tokenCount, tokensWidth, onConfirm, onQuit }
21909
21971
  }
21910
21972
 
21911
21973
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/screen.tsx
21912
- import { Fragment as Fragment5, jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
21974
+ import { Fragment as Fragment6, jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
21913
21975
  var HELP_SECTIONS = [
21914
21976
  {
21915
21977
  title: "Navigation",
@@ -21983,24 +22045,24 @@ function ScopeGateScreen({
21983
22045
  onQuit();
21984
22046
  }
21985
22047
  });
21986
- const { search, graph, columnPlan, panelLayout, counters } = gate;
22048
+ const { search, graph, columnPlan, panelLayout: panelLayout2, counters } = gate;
21987
22049
  if (gate.showHelp) {
21988
- return /* @__PURE__ */ jsx29(HelpOverlay, { sections: HELP_SECTIONS, handleInput: false, onClose: gate.closeHelp });
21989
- }
21990
- return /* @__PURE__ */ jsxs25(Box25, { flexDirection: "column", children: [
21991
- /* @__PURE__ */ jsx29(StepHeader, { step: "scope-gate" }),
21992
- /* @__PURE__ */ jsxs25(Box25, { flexDirection: "column", paddingX: 2, children: [
21993
- /* @__PURE__ */ jsxs25(Box25, { flexDirection: "row", flexWrap: "wrap", children: [
21994
- /* @__PURE__ */ jsx29(CounterStrip, { counters, totalWidth: gate.totalWidth }),
21995
- gate.aiExcludedCount > 0 && /* @__PURE__ */ jsxs25(Text26, { color: PALETTE.muted, children: [
22050
+ return /* @__PURE__ */ jsx30(HelpOverlay, { sections: HELP_SECTIONS, handleInput: false, onClose: gate.closeHelp });
22051
+ }
22052
+ return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", children: [
22053
+ /* @__PURE__ */ jsx30(StepHeader, { step: "scope-gate" }),
22054
+ /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", paddingX: 2, children: [
22055
+ /* @__PURE__ */ jsxs26(Box26, { flexDirection: "row", flexWrap: "wrap", children: [
22056
+ /* @__PURE__ */ jsx30(CounterStrip, { counters, totalWidth: gate.totalWidth }),
22057
+ gate.aiExcludedCount > 0 && /* @__PURE__ */ jsxs26(Text27, { color: PALETTE.muted, children: [
21996
22058
  `${gate.aiExcludedCount} component${gate.aiExcludedCount === 1 ? "" : "s"} flagged by AI`,
21997
- gate.aiRows.length > 0 && /* @__PURE__ */ jsx29(Text26, { color: PALETTE.accent, children: " \u2014 press [x] to see why" })
22059
+ gate.aiRows.length > 0 && /* @__PURE__ */ jsx30(Text27, { color: PALETTE.accent, children: " \u2014 press [x] to see why" })
21998
22060
  ] })
21999
22061
  ] }),
22000
- tokens.length > 0 && columnPlan.layout === "single" && /* @__PURE__ */ jsx29(Text26, { color: PALETTE.muted, children: `${tokens.length} design token${tokens.length === 1 ? "" : "s"} will be imported. Widen the terminal to list them.` }),
22001
- graph.cycles.length > 0 && /* @__PURE__ */ jsx29(Box25, { marginTop: 1, children: /* @__PURE__ */ jsx29(Text26, { color: PALETTE.muted, children: "If you must have components with cycles, select them together into the generate step and then use the editor to fix them." }) }),
22002
- /* @__PURE__ */ jsxs25(Box25, { flexDirection: "row", alignItems: "stretch", children: [
22003
- gate.aiRationalePanelOpen ? /* @__PURE__ */ jsx29(
22062
+ tokens.length > 0 && columnPlan.layout === "single" && /* @__PURE__ */ jsx30(Text27, { color: PALETTE.muted, children: `${tokens.length} design token${tokens.length === 1 ? "" : "s"} will be imported. Widen the terminal to list them.` }),
22063
+ graph.cycles.length > 0 && /* @__PURE__ */ jsx30(Box26, { marginTop: 1, children: /* @__PURE__ */ jsx30(Text27, { color: PALETTE.muted, children: "If you must have components with cycles, select them together into the generate step and then use the editor to fix them." }) }),
22064
+ /* @__PURE__ */ jsxs26(Box26, { flexDirection: "row", alignItems: "stretch", children: [
22065
+ gate.aiRationalePanelOpen ? /* @__PURE__ */ jsx30(
22004
22066
  GotoBanner,
22005
22067
  {
22006
22068
  title: `Review flags (${gate.aiExcludedCount})`,
@@ -22010,7 +22072,7 @@ function ScopeGateScreen({
22010
22072
  width: columnPlan.main,
22011
22073
  footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [x/Esc] close"
22012
22074
  }
22013
- ) : /* @__PURE__ */ jsx29(
22075
+ ) : /* @__PURE__ */ jsx30(
22014
22076
  GroupedSidebar,
22015
22077
  {
22016
22078
  items: gate.groupedItems,
@@ -22022,7 +22084,7 @@ function ScopeGateScreen({
22022
22084
  expandedGroups: gate.expandedGroups,
22023
22085
  onToggleExpanded: gate.toggleExpanded,
22024
22086
  width: columnPlan.main,
22025
- height: panelLayout.height,
22087
+ height: panelLayout2.height,
22026
22088
  title: "Components",
22027
22089
  wrapLabels: true,
22028
22090
  focused: gate.focusedColumn === "main",
@@ -22038,25 +22100,25 @@ function ScopeGateScreen({
22038
22100
  graph: graph.nodes
22039
22101
  }
22040
22102
  ),
22041
- columnPlan.layout === "two-column" && /* @__PURE__ */ jsxs25(Fragment5, { children: [
22042
- /* @__PURE__ */ jsx29(Box25, { width: 2, flexShrink: 0 }),
22043
- /* @__PURE__ */ jsx29(
22103
+ columnPlan.layout === "two-column" && /* @__PURE__ */ jsxs26(Fragment6, { children: [
22104
+ /* @__PURE__ */ jsx30(Box26, { width: 2, flexShrink: 0 }),
22105
+ /* @__PURE__ */ jsx30(
22044
22106
  TokensColumn,
22045
22107
  {
22046
22108
  width: columnPlan.tokens,
22047
22109
  tokens,
22048
22110
  cursor: gate.safeTokensCursor,
22049
22111
  focused: gate.focusedColumn === "tokens",
22050
- height: panelLayout.height,
22112
+ height: panelLayout2.height,
22051
22113
  title: `Design tokens (${tokens.length}) \xB7 read only`,
22052
- visibleCount: panelLayout.sideVisibleCount
22114
+ visibleCount: panelLayout2.sideVisibleCount
22053
22115
  }
22054
22116
  )
22055
22117
  ] })
22056
22118
  ] }),
22057
- gate.cyclesPanelOpen && /* @__PURE__ */ jsx29(CyclesPanel, { cycles: gate.slotCycles, cursor: gate.cyclesCursor }),
22058
- gate.pendingRejectCascade && /* @__PURE__ */ jsx29(RejectPrompt, { pending: gate.pendingRejectCascade }),
22059
- /* @__PURE__ */ jsx29(
22119
+ gate.cyclesPanelOpen && /* @__PURE__ */ jsx30(CyclesPanel, { cycles: gate.slotCycles, cursor: gate.cyclesCursor }),
22120
+ gate.pendingRejectCascade && /* @__PURE__ */ jsx30(RejectPrompt, { pending: gate.pendingRejectCascade }),
22121
+ /* @__PURE__ */ jsx30(
22060
22122
  SearchMatchSummary,
22061
22123
  {
22062
22124
  open: search.searchOpen,
@@ -22067,7 +22129,7 @@ function ScopeGateScreen({
22067
22129
  marginTop: 1
22068
22130
  }
22069
22131
  ),
22070
- /* @__PURE__ */ jsx29(
22132
+ /* @__PURE__ */ jsx30(
22071
22133
  CompactControlBar,
22072
22134
  {
22073
22135
  hasGroupRoots: gate.hasGroupRoots,
@@ -22171,8 +22233,20 @@ function generationLogInputs(input) {
22171
22233
  has_tokens: input.hasTokens
22172
22234
  };
22173
22235
  }
22236
+ var MAX_LOGGED_FAILURES = 10;
22237
+ var MAX_LOGGED_ERROR = 300;
22238
+ function lastProgress(progress) {
22239
+ const { activity, ...rest } = progress;
22240
+ const failed = activity.filter((item) => item.state === "failed");
22241
+ return {
22242
+ final_progress: rest,
22243
+ ...failed.length > 0 ? {
22244
+ failed_components: failed.slice(0, MAX_LOGGED_FAILURES).map((item) => ({ name: item.name, error: truncate(item.error ?? "", MAX_LOGGED_ERROR) }))
22245
+ } : {}
22246
+ };
22247
+ }
22174
22248
  function generationLogOutputs(result, progress) {
22175
- const last = progress ? { final_progress: progress } : {};
22249
+ const last = progress ? lastProgress(progress) : {};
22176
22250
  if (!result.ok) {
22177
22251
  return { outputs: { result: "failed", failed_step: result.step, error: result.message, ...last }, status: "error" };
22178
22252
  }
@@ -22191,7 +22265,21 @@ function generationLogOutputs(result, progress) {
22191
22265
  };
22192
22266
  }
22193
22267
  function initialProgress2() {
22194
- return { components: null, mapTokens: "idle", mapTokensEligible: null };
22268
+ return { components: null, activity: [], mapTokens: "idle", mapTokensEligible: null };
22269
+ }
22270
+ function applyActivityEvent(event, previous, now) {
22271
+ if (event.kind !== "component:started" && event.kind !== "component:completed" && event.kind !== "component:cached" && event.kind !== "component:failed") {
22272
+ return [...previous];
22273
+ }
22274
+ const index = previous.findIndex((item2) => item2.name === event.name);
22275
+ const startedAt = previous[index]?.startedAt ?? now;
22276
+ const item = event.kind === "component:started" ? {
22277
+ name: event.name,
22278
+ state: "running",
22279
+ startedAt,
22280
+ ...event.attempt > 1 ? { detail: `attempt ${event.attempt}` } : {}
22281
+ } : event.kind === "component:cached" ? { name: event.name, state: "done", detail: "cached", startedAt } : event.kind === "component:failed" ? { name: event.name, state: "failed", error: event.error, ms: now - startedAt, startedAt } : { name: event.name, state: "done", ms: now - startedAt, startedAt };
22282
+ return index >= 0 ? previous.map((existing, i) => i === index ? item : existing) : [...previous, item];
22195
22283
  }
22196
22284
  function shouldRunMapTokens(counts) {
22197
22285
  return counts.mappablePropCount > 0 && counts.rawTokenCount > 0;
@@ -22238,7 +22326,7 @@ function progressRows2(progress, agent, rowMs = []) {
22238
22326
  }
22239
22327
 
22240
22328
  // packages/experience-design-system-cli/src/tui/import/steps/08-generation/screen.tsx
22241
- import { jsx as jsx30 } from "react/jsx-runtime";
22329
+ import { jsx as jsx31 } from "react/jsx-runtime";
22242
22330
  function GenerationScreen({
22243
22331
  progress,
22244
22332
  agent,
@@ -22246,12 +22334,13 @@ function GenerationScreen({
22246
22334
  hasTokens,
22247
22335
  rowMs
22248
22336
  }) {
22249
- return /* @__PURE__ */ jsx30(
22337
+ return /* @__PURE__ */ jsx31(
22250
22338
  RunningStep,
22251
22339
  {
22252
22340
  step: "generation",
22253
22341
  description: describeGeneration({ acceptedCount, agent, hasTokens }),
22254
- lines: progressRows2(progress, agent, rowMs)
22342
+ lines: progressRows2(progress, agent, rowMs),
22343
+ aside: progress.activity.length > 0 ? /* @__PURE__ */ jsx31(ActivityPanel, { title: "Components", items: progress.activity }) : void 0
22255
22344
  }
22256
22345
  );
22257
22346
  }
@@ -22312,7 +22401,7 @@ var realDeps4 = {
22312
22401
  var fail2 = (step, message) => ({ ok: false, step, message });
22313
22402
  var errorMessage3 = (error) => error instanceof Error ? error.message : String(error);
22314
22403
  async function runGeneration(input, onProgress, deps = realDeps4) {
22315
- let progress = { components: null, mapTokens: "idle", mapTokensEligible: null };
22404
+ let progress = { components: null, activity: [], mapTokens: "idle", mapTokensEligible: null };
22316
22405
  const update = (change) => {
22317
22406
  progress = { ...progress, ...change };
22318
22407
  onProgress(progress);
@@ -22340,7 +22429,10 @@ async function runGeneration(input, onProgress, deps = realDeps4) {
22340
22429
  noCache: input.noCache,
22341
22430
  existingEntitiesPath: input.existingEntitiesPath,
22342
22431
  precomputedCachedNames: new Set(handedOverNames),
22343
- onProgress: (event) => update({ components: applyProgressEvent2(event, progress.components, accepted.length) })
22432
+ onProgress: (event) => update({
22433
+ components: applyProgressEvent2(event, progress.components, accepted.length),
22434
+ activity: applyActivityEvent(event, progress.activity, Date.now())
22435
+ })
22344
22436
  });
22345
22437
  } catch (error) {
22346
22438
  return fail2("generate components", errorMessage3(error));
@@ -22437,7 +22529,7 @@ function useGeneration(input) {
22437
22529
  return;
22438
22530
  }
22439
22531
  setState({ status: "running", progress: initialProgress2(), rowMs: [] });
22440
- let lastProgress;
22532
+ let lastProgress2;
22441
22533
  const startedAt = Date.now();
22442
22534
  let rowMs = [];
22443
22535
  startDebugRun({
@@ -22447,13 +22539,13 @@ function useGeneration(input) {
22447
22539
  inputs: generationLogInputs(input)
22448
22540
  });
22449
22541
  void runGeneration(input, (progress) => {
22450
- lastProgress = progress;
22542
+ lastProgress2 = progress;
22451
22543
  rowMs = trackFinished(rowMs, progressRows2(progress, input.agent), Date.now() - startedAt);
22452
22544
  if (current.current === input) setState({ status: "running", progress, rowMs });
22453
22545
  }).then((result) => {
22454
22546
  if (current.current !== input) return;
22455
22547
  void finishDebugRun({
22456
- ...generationLogOutputs(result, lastProgress),
22548
+ ...generationLogOutputs(result, lastProgress2),
22457
22549
  exitMethod: result.ok ? "saved" : "discarded"
22458
22550
  });
22459
22551
  setState({ status: "done", result });
@@ -22493,7 +22585,7 @@ function buildFlowStart(input) {
22493
22585
  }
22494
22586
 
22495
22587
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/screen.tsx
22496
- import { Box as Box45 } from "ink";
22588
+ import { Box as Box46 } from "ink";
22497
22589
 
22498
22590
  // packages/experience-design-system-types/dist/src/cdf/validate.js
22499
22591
  import { Ajv as Ajv2 } from "ajv";
@@ -22979,7 +23071,7 @@ function skipLabel(matchedNames) {
22979
23071
  }
22980
23072
 
22981
23073
  // packages/experience-design-system-cli/src/tui/import/steps/preview-validation-error/screen.tsx
22982
- import { jsx as jsx31 } from "react/jsx-runtime";
23074
+ import { jsx as jsx32 } from "react/jsx-runtime";
22983
23075
  function PreviewValidationErrorScreen({
22984
23076
  errors,
22985
23077
  missingNames,
@@ -22988,7 +23080,7 @@ function PreviewValidationErrorScreen({
22988
23080
  onQuit
22989
23081
  }) {
22990
23082
  const matchedNames = matchedComponentNames(errors, missingNames);
22991
- return /* @__PURE__ */ jsx31(
23083
+ return /* @__PURE__ */ jsx32(
22992
23084
  GateStep,
22993
23085
  {
22994
23086
  intent: "error",
@@ -23024,7 +23116,7 @@ function getReviewJsonPanelValue(selected, showHiddenProps) {
23024
23116
  }
23025
23117
 
23026
23118
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx
23027
- import { Box as Box38, Text as Text40 } from "ink";
23119
+ import { Box as Box39, Text as Text41 } from "ink";
23028
23120
 
23029
23121
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/graph/cycle-view.ts
23030
23122
  function computeCycleView(components) {
@@ -23263,12 +23355,12 @@ function enumerateCycleBreaks(cycle, components) {
23263
23355
  }
23264
23356
 
23265
23357
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewComponentPanel.tsx
23266
- import { Box as Box32, Text as Text34 } from "ink";
23358
+ import { Box as Box33, Text as Text35 } from "ink";
23267
23359
 
23268
23360
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx
23269
23361
  import React13, { useEffect as useEffect17, useLayoutEffect as useLayoutEffect2, useState as useState19 } from "react";
23270
23362
  import figures6 from "figures";
23271
- import { Box as Box26, measureElement, Text as Text27 } from "ink";
23363
+ import { Box as Box27, measureElement, Text as Text28 } from "ink";
23272
23364
 
23273
23365
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/scroll-offset.ts
23274
23366
  function computeNextScrollOffset(current, input, key, totalLines, panelHeight) {
@@ -23299,7 +23391,7 @@ function computeNextScrollOffset(current, input, key, totalLines, panelHeight) {
23299
23391
  }
23300
23392
 
23301
23393
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx
23302
- import { Fragment as Fragment6, jsx as jsx32, jsxs as jsxs26 } from "react/jsx-runtime";
23394
+ import { Fragment as Fragment7, jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
23303
23395
  function createCommonRowProps(selected, focusLevel, editingField, textCursor, valueCursor, cursorVisible, editingValue, valueText, width) {
23304
23396
  return {
23305
23397
  selected,
@@ -23437,14 +23529,14 @@ function serializeState(state2, originalJson) {
23437
23529
  return JSON.stringify(entry, null, 2);
23438
23530
  }
23439
23531
  function Picker({ value, active }) {
23440
- return /* @__PURE__ */ jsxs26(Box26, { children: [
23441
- active && /* @__PURE__ */ jsx32(Text27, { color: PALETTE.warning, children: "\u2039" }),
23442
- /* @__PURE__ */ jsx32(Text27, { color: active ? PALETTE.warning : void 0, bold: active, children: value }),
23443
- active && /* @__PURE__ */ jsx32(Text27, { color: PALETTE.warning, children: "\u203A" })
23532
+ return /* @__PURE__ */ jsxs27(Box27, { children: [
23533
+ active && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.warning, children: "\u2039" }),
23534
+ /* @__PURE__ */ jsx33(Text28, { color: active ? PALETTE.warning : void 0, bold: active, children: value }),
23535
+ active && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.warning, children: "\u203A" })
23444
23536
  ] });
23445
23537
  }
23446
23538
  function Toggle({ value, active }) {
23447
- return /* @__PURE__ */ jsx32(Box26, { children: /* @__PURE__ */ jsx32(Text27, { color: active ? PALETTE.warning : value ? PALETTE.success : PALETTE.border, children: value ? "[\u2713]" : "[ ]" }) });
23539
+ return /* @__PURE__ */ jsx33(Box27, { children: /* @__PURE__ */ jsx33(Text28, { color: active ? PALETTE.warning : value ? PALETTE.success : PALETTE.border, children: value ? "[\u2713]" : "[ ]" }) });
23448
23540
  }
23449
23541
  function InlinePropField({
23450
23542
  label,
@@ -23453,8 +23545,8 @@ function InlinePropField({
23453
23545
  flexible = false,
23454
23546
  width
23455
23547
  }) {
23456
- return /* @__PURE__ */ jsxs26(Box26, { width, gap: 1, flexShrink: flexible ? 1 : 0, flexGrow: flexible ? 1 : 0, flexWrap: "wrap", children: [
23457
- /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, wrap: "truncate-end", children: [
23548
+ return /* @__PURE__ */ jsxs27(Box27, { width, gap: 1, flexShrink: flexible ? 1 : 0, flexGrow: flexible ? 1 : 0, flexWrap: "wrap", children: [
23549
+ /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, wrap: "truncate-end", children: [
23458
23550
  focused ? "\u203A " : " ",
23459
23551
  label
23460
23552
  ] }),
@@ -23467,19 +23559,19 @@ function RequiredField({
23467
23559
  editingField,
23468
23560
  activeField
23469
23561
  }) {
23470
- return /* @__PURE__ */ jsx32(InlinePropField, { label: "req:", focused, children: /* @__PURE__ */ jsx32(Toggle, { value, active: editingField && activeField === "required" }) });
23562
+ return /* @__PURE__ */ jsx33(InlinePropField, { label: "req:", focused, children: /* @__PURE__ */ jsx33(Toggle, { value, active: editingField && activeField === "required" }) });
23471
23563
  }
23472
23564
  function DefaultValueRow({
23473
23565
  display,
23474
23566
  active,
23475
23567
  focused
23476
23568
  }) {
23477
- return /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexWrap: "wrap", flexShrink: 0, children: [
23478
- /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
23569
+ return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", flexShrink: 0, children: [
23570
+ /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
23479
23571
  focused ? "\u203A " : " ",
23480
23572
  "default:"
23481
23573
  ] }),
23482
- active ? /* @__PURE__ */ jsx32(Picker, { value: display, active: true }) : /* @__PURE__ */ jsx32(Text27, { wrap: "wrap", children: display })
23574
+ active ? /* @__PURE__ */ jsx33(Picker, { value: display, active: true }) : /* @__PURE__ */ jsx33(Text28, { wrap: "wrap", children: display })
23483
23575
  ] });
23484
23576
  }
23485
23577
  function RowLabel({
@@ -23487,8 +23579,8 @@ function RowLabel({
23487
23579
  selected,
23488
23580
  trailing = true
23489
23581
  }) {
23490
- return /* @__PURE__ */ jsxs26(
23491
- Text27,
23582
+ return /* @__PURE__ */ jsxs27(
23583
+ Text28,
23492
23584
  {
23493
23585
  color: selected ? PALETTE.onAccent : PALETTE.accent,
23494
23586
  bold: selected,
@@ -23507,10 +23599,10 @@ function ValueInputRow({
23507
23599
  valueText,
23508
23600
  cursorVisible
23509
23601
  }) {
23510
- return /* @__PURE__ */ jsxs26(Box26, { paddingLeft: 2, children: [
23511
- /* @__PURE__ */ jsx32(Text27, { color: PALETTE.accent, children: mode === "edit" ? "\u270E " : "+ " }),
23512
- /* @__PURE__ */ jsx32(Text27, { children: valueText }),
23513
- /* @__PURE__ */ jsx32(Text27, { inverse: cursorVisible, children: " " })
23602
+ return /* @__PURE__ */ jsxs27(Box27, { paddingLeft: 2, children: [
23603
+ /* @__PURE__ */ jsx33(Text28, { color: PALETTE.accent, children: mode === "edit" ? "\u270E " : "+ " }),
23604
+ /* @__PURE__ */ jsx33(Text28, { children: valueText }),
23605
+ /* @__PURE__ */ jsx33(Text28, { inverse: cursorVisible, children: " " })
23514
23606
  ] });
23515
23607
  }
23516
23608
  function EditableListItem({
@@ -23523,9 +23615,9 @@ function EditableListItem({
23523
23615
  }) {
23524
23616
  const isBeingEdited = editingValue?.mode === "edit" && editingValue.index === index;
23525
23617
  if (isBeingEdited) {
23526
- return /* @__PURE__ */ jsx32(ValueInputRow, { mode: "edit", valueText, cursorVisible });
23618
+ return /* @__PURE__ */ jsx33(ValueInputRow, { mode: "edit", valueText, cursorVisible });
23527
23619
  }
23528
- return /* @__PURE__ */ jsx32(Box26, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx32(Text27, { color: active ? PALETTE.accent : void 0, children: active ? `${figures6.pointer} ${value}` : ` ${value}` }) });
23620
+ return /* @__PURE__ */ jsx33(Box27, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx33(Text28, { color: active ? PALETTE.accent : void 0, children: active ? `${figures6.pointer} ${value}` : ` ${value}` }) });
23529
23621
  }
23530
23622
  function EditableValueList({
23531
23623
  values,
@@ -23538,9 +23630,9 @@ function EditableValueList({
23538
23630
  emptyPaddingLeft,
23539
23631
  showAddInput
23540
23632
  }) {
23541
- return /* @__PURE__ */ jsxs26(Fragment6, { children: [
23542
- values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: emptyMessage }) : /* @__PURE__ */ jsx32(Box26, { paddingLeft: emptyPaddingLeft, children: /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: emptyMessage }) })),
23543
- values.map((value, index) => /* @__PURE__ */ jsx32(
23633
+ return /* @__PURE__ */ jsxs27(Fragment7, { children: [
23634
+ values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: emptyMessage }) : /* @__PURE__ */ jsx33(Box27, { paddingLeft: emptyPaddingLeft, children: /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: emptyMessage }) })),
23635
+ values.map((value, index) => /* @__PURE__ */ jsx33(
23544
23636
  EditableListItem,
23545
23637
  {
23546
23638
  value,
@@ -23552,7 +23644,7 @@ function EditableValueList({
23552
23644
  },
23553
23645
  index
23554
23646
  )),
23555
- showAddInput && editingValue?.mode === "add" && /* @__PURE__ */ jsx32(ValueInputRow, { mode: "add", valueText, cursorVisible })
23647
+ showAddInput && editingValue?.mode === "add" && /* @__PURE__ */ jsx33(ValueInputRow, { mode: "add", valueText, cursorVisible })
23556
23648
  ] });
23557
23649
  }
23558
23650
  function DefaultSubRow({
@@ -23564,51 +23656,51 @@ function DefaultSubRow({
23564
23656
  }) {
23565
23657
  const cursor = cursorVisible ? "\u2588" : " ";
23566
23658
  if (prop.type === "richtext" || prop.type === "media" || prop.type === "link") {
23567
- return /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexShrink: 0, children: [
23568
- /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
23659
+ return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexShrink: 0, children: [
23660
+ /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
23569
23661
  focused ? "\u203A " : " ",
23570
23662
  "default:"
23571
23663
  ] }),
23572
- /* @__PURE__ */ jsx32(Text27, { color: focused ? void 0 : PALETTE.muted, children: "(not applicable)" })
23664
+ /* @__PURE__ */ jsx33(Text28, { color: focused ? void 0 : PALETTE.muted, children: "(not applicable)" })
23573
23665
  ] });
23574
23666
  }
23575
23667
  if (prop.type === "boolean") {
23576
23668
  const display = prop.default === true ? "true" : prop.default === false ? "false" : "(unset)";
23577
- return /* @__PURE__ */ jsx32(DefaultValueRow, { display, active, focused });
23669
+ return /* @__PURE__ */ jsx33(DefaultValueRow, { display, active, focused });
23578
23670
  }
23579
23671
  if (prop.type === "enum") {
23580
23672
  if (prop.values.length === 0) {
23581
- return /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexShrink: 0, children: [
23582
- /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
23673
+ return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexShrink: 0, children: [
23674
+ /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
23583
23675
  focused ? "\u203A " : " ",
23584
23676
  "default:"
23585
23677
  ] }),
23586
- /* @__PURE__ */ jsx32(Text27, { color: focused ? void 0 : PALETTE.muted, children: "(no values defined)" })
23678
+ /* @__PURE__ */ jsx33(Text28, { color: focused ? void 0 : PALETTE.muted, children: "(no values defined)" })
23587
23679
  ] });
23588
23680
  }
23589
23681
  const display = typeof prop.default === "string" && prop.default !== "" ? prop.default : "(unset)";
23590
- return /* @__PURE__ */ jsx32(DefaultValueRow, { display, active, focused });
23682
+ return /* @__PURE__ */ jsx33(DefaultValueRow, { display, active, focused });
23591
23683
  }
23592
23684
  const value = typeof prop.default === "string" ? prop.default : "";
23593
23685
  if (active) {
23594
- return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "row", flexShrink: 0, children: [
23595
- /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
23686
+ return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "row", flexShrink: 0, children: [
23687
+ /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
23596
23688
  focused ? "\u203A " : " ",
23597
23689
  "default:"
23598
23690
  ] }),
23599
- /* @__PURE__ */ jsxs26(Box26, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
23600
- /* @__PURE__ */ jsx32(Text27, { children: value.slice(0, textCursor) }),
23601
- /* @__PURE__ */ jsx32(Text27, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
23602
- /* @__PURE__ */ jsx32(Text27, { children: value.slice(textCursor + 1) })
23691
+ /* @__PURE__ */ jsxs27(Box27, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
23692
+ /* @__PURE__ */ jsx33(Text28, { children: value.slice(0, textCursor) }),
23693
+ /* @__PURE__ */ jsx33(Text28, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
23694
+ /* @__PURE__ */ jsx33(Text28, { children: value.slice(textCursor + 1) })
23603
23695
  ] })
23604
23696
  ] });
23605
23697
  }
23606
- return /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexShrink: 0, children: [
23607
- /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
23698
+ return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexShrink: 0, children: [
23699
+ /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
23608
23700
  focused ? "\u203A " : " ",
23609
23701
  "default:"
23610
23702
  ] }),
23611
- /* @__PURE__ */ jsx32(Text27, { color: focused || value ? void 0 : PALETTE.muted, children: value || "(none)" })
23703
+ /* @__PURE__ */ jsx33(Text28, { color: focused || value ? void 0 : PALETTE.muted, children: value || "(none)" })
23612
23704
  ] });
23613
23705
  }
23614
23706
  function DescriptionField({
@@ -23623,20 +23715,20 @@ function DescriptionField({
23623
23715
  paddingLeft = 2
23624
23716
  }) {
23625
23717
  if (compact) {
23626
- return /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
23627
- /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
23718
+ return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
23719
+ /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
23628
23720
  focused ? "\u203A " : " ",
23629
23721
  label
23630
23722
  ] }),
23631
- /* @__PURE__ */ jsx32(Text27, { wrap: "truncate-end", color: value ? void 0 : PALETTE.muted, children: value || "\u2014" })
23723
+ /* @__PURE__ */ jsx33(Text28, { wrap: "truncate-end", color: value ? void 0 : PALETTE.muted, children: value || "\u2014" })
23632
23724
  ] });
23633
23725
  }
23634
- return /* @__PURE__ */ jsxs26(Box26, { paddingLeft, flexDirection: "column", width, flexShrink: 0, children: [
23635
- /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
23726
+ return /* @__PURE__ */ jsxs27(Box27, { paddingLeft, flexDirection: "column", width, flexShrink: 0, children: [
23727
+ /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
23636
23728
  focused ? "\u203A " : " ",
23637
23729
  label
23638
23730
  ] }),
23639
- editing ? /* @__PURE__ */ jsx32(EditableDescription, { cursorVisible, value, textCursor }) : /* @__PURE__ */ jsx32(Text27, { wrap: "wrap", children: value || "\u2014" })
23731
+ editing ? /* @__PURE__ */ jsx33(EditableDescription, { cursorVisible, value, textCursor }) : /* @__PURE__ */ jsx33(Text28, { wrap: "wrap", children: value || "\u2014" })
23640
23732
  ] });
23641
23733
  }
23642
23734
  function EditableDescription({
@@ -23644,9 +23736,9 @@ function EditableDescription({
23644
23736
  value,
23645
23737
  textCursor
23646
23738
  }) {
23647
- return /* @__PURE__ */ jsxs26(Text27, { wrap: "wrap", children: [
23739
+ return /* @__PURE__ */ jsxs27(Text28, { wrap: "wrap", children: [
23648
23740
  value.slice(0, textCursor),
23649
- /* @__PURE__ */ jsx32(Text27, { inverse: cursorVisible, children: value[textCursor] ?? " " }),
23741
+ /* @__PURE__ */ jsx33(Text28, { inverse: cursorVisible, children: value[textCursor] ?? " " }),
23650
23742
  value.slice(textCursor + 1)
23651
23743
  ] });
23652
23744
  }
@@ -23667,9 +23759,9 @@ function PropRow({
23667
23759
  }) {
23668
23760
  const descFocused = activeField === "description";
23669
23761
  const descActive = editingField && descFocused;
23670
- return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", width, flexShrink: 0, children: [
23671
- /* @__PURE__ */ jsx32(Box26, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx32(RowLabel, { name: prop.name, selected }) }),
23672
- /* @__PURE__ */ jsx32(
23762
+ return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, flexShrink: 0, children: [
23763
+ /* @__PURE__ */ jsx33(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx33(RowLabel, { name: prop.name, selected }) }),
23764
+ /* @__PURE__ */ jsx33(
23673
23765
  DescriptionField,
23674
23766
  {
23675
23767
  value: prop.description,
@@ -23682,8 +23774,8 @@ function PropRow({
23682
23774
  paddingLeft: 0
23683
23775
  }
23684
23776
  ),
23685
- /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", width, flexShrink: 0, children: [
23686
- /* @__PURE__ */ jsx32(
23777
+ /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, flexShrink: 0, children: [
23778
+ /* @__PURE__ */ jsx33(
23687
23779
  RequiredField,
23688
23780
  {
23689
23781
  value: prop.required,
@@ -23692,21 +23784,21 @@ function PropRow({
23692
23784
  activeField
23693
23785
  }
23694
23786
  ),
23695
- /* @__PURE__ */ jsx32(InlinePropField, { label: "type:", focused: activeField === "type", children: editingField && activeField === "type" ? /* @__PURE__ */ jsx32(Picker, { value: prop.type, active: true }) : /* @__PURE__ */ jsx32(Text27, { children: prop.type }) })
23787
+ /* @__PURE__ */ jsx33(InlinePropField, { label: "type:", focused: activeField === "type", children: editingField && activeField === "type" ? /* @__PURE__ */ jsx33(Picker, { value: prop.type, active: true }) : /* @__PURE__ */ jsx33(Text28, { children: prop.type }) })
23696
23788
  ] }),
23697
- prop.type === "token" && /* @__PURE__ */ jsx32(InlinePropField, { label: "kind:", focused: activeField === "tokenKind", width, children: editingField && activeField === "tokenKind" ? /* @__PURE__ */ jsx32(Picker, { value: prop.tokenKind || DESIGN_TOKEN_TYPES2[0], active: true }) : /* @__PURE__ */ jsx32(Text27, { wrap: "wrap", children: prop.tokenKind || "\u2014" }) }),
23698
- prop.type === "enum" && /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
23699
- /* @__PURE__ */ jsxs26(Text27, { color: activeField === "values" ? PALETTE.warning : PALETTE.muted, bold: activeField === "values", children: [
23789
+ prop.type === "token" && /* @__PURE__ */ jsx33(InlinePropField, { label: "kind:", focused: activeField === "tokenKind", width, children: editingField && activeField === "tokenKind" ? /* @__PURE__ */ jsx33(Picker, { value: prop.tokenKind || DESIGN_TOKEN_TYPES2[0], active: true }) : /* @__PURE__ */ jsx33(Text28, { wrap: "wrap", children: prop.tokenKind || "\u2014" }) }),
23790
+ prop.type === "enum" && /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
23791
+ /* @__PURE__ */ jsxs27(Text28, { color: activeField === "values" ? PALETTE.warning : PALETTE.muted, bold: activeField === "values", children: [
23700
23792
  activeField === "values" ? "\u203A " : " ",
23701
23793
  "values:"
23702
23794
  ] }),
23703
- /* @__PURE__ */ jsxs26(Text27, { wrap: "wrap", children: [
23795
+ /* @__PURE__ */ jsxs27(Text28, { wrap: "wrap", children: [
23704
23796
  "[",
23705
23797
  prop.values.join(", "),
23706
23798
  "]"
23707
23799
  ] })
23708
23800
  ] }),
23709
- /* @__PURE__ */ jsx32(
23801
+ /* @__PURE__ */ jsx33(
23710
23802
  DefaultSubRow,
23711
23803
  {
23712
23804
  prop,
@@ -23716,13 +23808,13 @@ function PropRow({
23716
23808
  cursorVisible
23717
23809
  }
23718
23810
  ),
23719
- prop.type === "token" && prop.category === "design" && /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
23720
- /* @__PURE__ */ jsxs26(Text27, { color: activeField === "allowed" ? PALETTE.warning : PALETTE.muted, bold: activeField === "allowed", children: [
23811
+ prop.type === "token" && prop.category === "design" && /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
23812
+ /* @__PURE__ */ jsxs27(Text28, { color: activeField === "allowed" ? PALETTE.warning : PALETTE.muted, bold: activeField === "allowed", children: [
23721
23813
  activeField === "allowed" ? "\u203A " : " ",
23722
23814
  "allowed:"
23723
23815
  ] }),
23724
- editingField && activeField === "allowed" ? /* @__PURE__ */ jsx32(Box26, { width: Math.max(1, width - 4), borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: /* @__PURE__ */ jsx32(Text27, { children: "press [t] to edit allowed tokens" }) }) : /* @__PURE__ */ jsx32(
23725
- Text27,
23816
+ editingField && activeField === "allowed" ? /* @__PURE__ */ jsx33(Box27, { width: Math.max(1, width - 4), borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: /* @__PURE__ */ jsx33(Text28, { children: "press [t] to edit allowed tokens" }) }) : /* @__PURE__ */ jsx33(
23817
+ Text28,
23726
23818
  {
23727
23819
  color: activeField !== "allowed" && prop.allowed.length === 0 ? PALETTE.muted : void 0,
23728
23820
  wrap: "wrap",
@@ -23730,17 +23822,17 @@ function PropRow({
23730
23822
  }
23731
23823
  )
23732
23824
  ] }),
23733
- selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx32(Box26, { paddingLeft: 2, children: /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: (() => {
23825
+ selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx33(Box27, { paddingLeft: 2, children: /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: (() => {
23734
23826
  const max = Math.max(8, width - 8);
23735
23827
  const text = `~ ${rationale}`;
23736
23828
  return text.length > max ? text.slice(0, max - 1) + "\u2026" : text;
23737
23829
  })() }) }, rowKey ? `rationale-${rowKey}` : void 0),
23738
- selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs26(Box26, { paddingLeft: 2, flexDirection: "column", children: [
23739
- /* @__PURE__ */ jsxs26(Box26, { children: [
23740
- /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "values:" }),
23741
- activeField === "values" && /* @__PURE__ */ jsx32(Text27, { children: " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
23830
+ selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs27(Box27, { paddingLeft: 2, flexDirection: "column", children: [
23831
+ /* @__PURE__ */ jsxs27(Box27, { children: [
23832
+ /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "values:" }),
23833
+ activeField === "values" && /* @__PURE__ */ jsx33(Text28, { children: " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
23742
23834
  ] }),
23743
- /* @__PURE__ */ jsx32(
23835
+ /* @__PURE__ */ jsx33(
23744
23836
  EditableValueList,
23745
23837
  {
23746
23838
  values: prop.values,
@@ -23770,9 +23862,9 @@ function SlotRow({
23770
23862
  pickerCandidates,
23771
23863
  pickerCursor
23772
23864
  }) {
23773
- return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", width, flexShrink: 0, children: [
23774
- /* @__PURE__ */ jsx32(Box26, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx32(RowLabel, { name: slot.name, selected, trailing: false }) }),
23775
- /* @__PURE__ */ jsx32(
23865
+ return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, flexShrink: 0, children: [
23866
+ /* @__PURE__ */ jsx33(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx33(RowLabel, { name: slot.name, selected, trailing: false }) }),
23867
+ /* @__PURE__ */ jsx33(
23776
23868
  DescriptionField,
23777
23869
  {
23778
23870
  value: slot.description,
@@ -23785,7 +23877,7 @@ function SlotRow({
23785
23877
  paddingLeft: 0
23786
23878
  }
23787
23879
  ),
23788
- /* @__PURE__ */ jsx32(Box26, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx32(
23880
+ /* @__PURE__ */ jsx33(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx33(
23789
23881
  RequiredField,
23790
23882
  {
23791
23883
  value: slot.required,
@@ -23794,9 +23886,9 @@ function SlotRow({
23794
23886
  activeField
23795
23887
  }
23796
23888
  ) }),
23797
- !(selected && editingField && activeField === "allowedComponents") && /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
23798
- /* @__PURE__ */ jsxs26(
23799
- Text27,
23889
+ !(selected && editingField && activeField === "allowedComponents") && /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
23890
+ /* @__PURE__ */ jsxs27(
23891
+ Text28,
23800
23892
  {
23801
23893
  color: activeField === "allowedComponents" ? PALETTE.warning : PALETTE.muted,
23802
23894
  bold: activeField === "allowedComponents",
@@ -23806,12 +23898,12 @@ function SlotRow({
23806
23898
  ]
23807
23899
  }
23808
23900
  ),
23809
- slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "(any)" }) : /* @__PURE__ */ jsx32(Text27, { wrap: "wrap", children: slot.allowedComponents.join(", ") })
23901
+ slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "(any)" }) : /* @__PURE__ */ jsx33(Text28, { wrap: "wrap", children: slot.allowedComponents.join(", ") })
23810
23902
  ] }),
23811
- selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", children: [
23812
- /* @__PURE__ */ jsxs26(Box26, { children: [
23813
- /* @__PURE__ */ jsxs26(
23814
- Text27,
23903
+ selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", children: [
23904
+ /* @__PURE__ */ jsxs27(Box27, { children: [
23905
+ /* @__PURE__ */ jsxs27(
23906
+ Text28,
23815
23907
  {
23816
23908
  color: activeField === "allowedComponents" ? PALETTE.warning : PALETTE.muted,
23817
23909
  bold: activeField === "allowedComponents",
@@ -23821,9 +23913,9 @@ function SlotRow({
23821
23913
  ]
23822
23914
  }
23823
23915
  ),
23824
- editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: slot.allowedComponents.length > 0 ? " [a] add [e] edit [r] remove [\u2190\u2192] cycle [\u2191\u2193] navigate [K/J] reorder" : " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
23916
+ editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: slot.allowedComponents.length > 0 ? " [a] add [e] edit [r] remove [\u2190\u2192] cycle [\u2191\u2193] navigate [K/J] reorder" : " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
23825
23917
  ] }),
23826
- /* @__PURE__ */ jsx32(
23918
+ /* @__PURE__ */ jsx33(
23827
23919
  EditableValueList,
23828
23920
  {
23829
23921
  values: slot.allowedComponents,
@@ -23837,21 +23929,21 @@ function SlotRow({
23837
23929
  showAddInput: editingField && activeField === "allowedComponents"
23838
23930
  }
23839
23931
  ),
23840
- editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */ jsx32(Box26, { paddingLeft: 2, flexDirection: "column", children: pickerCandidates.length === 0 ? /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "(no valid components to add \u2014 all remaining candidates would create cycles)" }) : (() => {
23932
+ editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */ jsx33(Box27, { paddingLeft: 2, flexDirection: "column", children: pickerCandidates.length === 0 ? /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "(no valid components to add \u2014 all remaining candidates would create cycles)" }) : (() => {
23841
23933
  const filtered = valueText.length === 0 ? pickerCandidates : pickerCandidates.filter((n) => n.toLowerCase().includes(valueText.toLowerCase()));
23842
23934
  if (filtered.length === 0) {
23843
- return /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "(no candidates match \u2014 Enter to add as free text)" });
23935
+ return /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "(no candidates match \u2014 Enter to add as free text)" });
23844
23936
  }
23845
23937
  const cursor = pickerCursor % filtered.length;
23846
23938
  const MAX_VISIBLE = 5;
23847
23939
  const start = Math.max(0, Math.min(filtered.length - MAX_VISIBLE, cursor - 2));
23848
23940
  const slice = filtered.slice(start, start + MAX_VISIBLE);
23849
- return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", children: [
23850
- /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
23941
+ return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", children: [
23942
+ /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
23851
23943
  slice.map((name, i) => {
23852
23944
  const absIdx = start + i;
23853
23945
  const isCursor = absIdx === cursor;
23854
- return /* @__PURE__ */ jsx32(Text27, { color: isCursor ? PALETTE.accent : PALETTE.muted, children: isCursor ? ` ${figures6.pointer} ${name}` : ` ${name}` }, name);
23946
+ return /* @__PURE__ */ jsx33(Text28, { color: isCursor ? PALETTE.accent : PALETTE.muted, children: isCursor ? ` ${figures6.pointer} ${name}` : ` ${name}` }, name);
23855
23947
  })
23856
23948
  ] });
23857
23949
  })() })
@@ -24731,18 +24823,18 @@ function FieldEditor({
24731
24823
  });
24732
24824
  const innerWidth = Math.max(1, width - 2);
24733
24825
  if (parseErr) {
24734
- return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
24735
- /* @__PURE__ */ jsx32(Text27, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
24736
- /* @__PURE__ */ jsx32(Text27, { color: PALETTE.error, children: parseErr }),
24737
- /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "Cannot display structured editor. Fix the JSON first." })
24826
+ return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
24827
+ /* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
24828
+ /* @__PURE__ */ jsx33(Text28, { color: PALETTE.error, children: parseErr }),
24829
+ /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "Cannot display structured editor. Fix the JSON first." })
24738
24830
  ] });
24739
24831
  }
24740
24832
  if (props.length === 0 && slots.length === 0) {
24741
- return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
24742
- /* @__PURE__ */ jsx32(Text27, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
24743
- /* @__PURE__ */ jsx32(Text27, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
24744
- /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "You can add fields manually below or reject this component." }),
24745
- /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "Enter to save \xB7 Esc to discard" })
24833
+ return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
24834
+ /* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
24835
+ /* @__PURE__ */ jsx33(Text28, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
24836
+ /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "You can add fields manually below or reject this component." }),
24837
+ /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "Enter to save \xB7 Esc to discard" })
24746
24838
  ] });
24747
24839
  }
24748
24840
  const hasEmptyProperties = props.length === 0 && slots.length === 0;
@@ -24875,12 +24967,12 @@ function FieldEditor({
24875
24967
  const renderRow = (row, index) => {
24876
24968
  const key = rowKey(row, index);
24877
24969
  if (row.kind === "header") {
24878
- return /* @__PURE__ */ jsx32(Box26, { flexDirection: "column", paddingTop: 1, children: /* @__PURE__ */ jsx32(Text27, { bold: true, color: PALETTE.success, children: row.label }) }, key);
24970
+ return /* @__PURE__ */ jsx33(Box27, { flexDirection: "column", paddingTop: 1, children: /* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.success, children: row.label }) }, key);
24879
24971
  }
24880
24972
  if (row.kind === "component-description") {
24881
24973
  const isSelected2 = inComponentDesc && active;
24882
24974
  const isEditing = isSelected2 && focusLevel === "field" && editingField && activeField === "description";
24883
- return /* @__PURE__ */ jsx32(
24975
+ return /* @__PURE__ */ jsx33(
24884
24976
  DescriptionField,
24885
24977
  {
24886
24978
  value: editorState.componentDescription,
@@ -24911,7 +25003,7 @@ function FieldEditor({
24911
25003
  valueText,
24912
25004
  innerWidth
24913
25005
  );
24914
- return /* @__PURE__ */ jsx32(
25006
+ return /* @__PURE__ */ jsx33(
24915
25007
  PropRow,
24916
25008
  {
24917
25009
  prop: p,
@@ -24938,7 +25030,7 @@ function FieldEditor({
24938
25030
  valueText,
24939
25031
  innerWidth
24940
25032
  );
24941
- return /* @__PURE__ */ jsx32(
25033
+ return /* @__PURE__ */ jsx33(
24942
25034
  SlotRow,
24943
25035
  {
24944
25036
  slot: s,
@@ -24950,7 +25042,7 @@ function FieldEditor({
24950
25042
  key
24951
25043
  );
24952
25044
  };
24953
- return /* @__PURE__ */ jsxs26(
25045
+ return /* @__PURE__ */ jsxs27(
24954
25046
  FixedPanel,
24955
25047
  {
24956
25048
  width,
@@ -24959,9 +25051,9 @@ function FieldEditor({
24959
25051
  borderStyle: "single",
24960
25052
  borderColor: hasEmptyProperties ? PALETTE.warning : active ? PALETTE.accent : PALETTE.border,
24961
25053
  children: [
24962
- hasEmptyProperties && /* @__PURE__ */ jsx32(Text27, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify. Reject this component or add fields manually." }),
25054
+ hasEmptyProperties && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify. Reject this component or add fields manually." }),
24963
25055
  header,
24964
- /* @__PURE__ */ jsx32(Box26, { flexDirection: "column", width: innerWidth, flexShrink: 0, children: focusLevel === "field" && !inComponentDesc && currentProp ? /* @__PURE__ */ jsx32(
25056
+ /* @__PURE__ */ jsx33(Box27, { flexDirection: "column", width: innerWidth, flexShrink: 0, children: focusLevel === "field" && !inComponentDesc && currentProp ? /* @__PURE__ */ jsx33(
24965
25057
  PropRow,
24966
25058
  {
24967
25059
  prop: currentProp,
@@ -24977,7 +25069,7 @@ function FieldEditor({
24977
25069
  rationale: metadata?.props?.[currentProp.name]?.rationale ?? null,
24978
25070
  showRationale: showInlineRationales
24979
25071
  }
24980
- ) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */ jsx32(
25072
+ ) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */ jsx33(
24981
25073
  SlotRow,
24982
25074
  {
24983
25075
  slot: currentSlot,
@@ -24996,8 +25088,8 @@ function FieldEditor({
24996
25088
  ) : visibleRowSlice.map((row, index) => {
24997
25089
  const absoluteIndex = scrollStart + index;
24998
25090
  const key = rowKey(row, absoluteIndex);
24999
- return /* @__PURE__ */ jsx32(
25000
- Box26,
25091
+ return /* @__PURE__ */ jsx33(
25092
+ Box27,
25001
25093
  {
25002
25094
  ref: (node) => {
25003
25095
  if (node) rowMeasureRefs.current.set(key, node);
@@ -25010,7 +25102,7 @@ function FieldEditor({
25010
25102
  `visible-${key}`
25011
25103
  );
25012
25104
  }) }),
25013
- categoryBelow && /* @__PURE__ */ jsx32(Text27, { color: PALETTE.success, bold: true, children: `(${categoryBelow} below)` }),
25105
+ categoryBelow && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.success, bold: true, children: `(${categoryBelow} below)` }),
25014
25106
  sourceOpen && !onToggleSourceExternal && (() => {
25015
25107
  const propMeta = !inSlots && !inComponentDesc && currentProp ? metadata?.props?.[currentProp.name] : void 0;
25016
25108
  const start = propMeta?.sourceStartLine ?? null;
@@ -25019,60 +25111,60 @@ function FieldEditor({
25019
25111
  const src = metadata?.componentSource ?? null;
25020
25112
  const headerPath = path5 ?? "<unknown source path>";
25021
25113
  if (!start || !end2 || !src) {
25022
- return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
25023
- /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, bold: true, children: `source: ${headerPath}` }),
25024
- /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "(no source location captured for this prop)" }),
25025
- /* @__PURE__ */ jsx32(Text27, { children: "[s] close" })
25114
+ return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
25115
+ /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, bold: true, children: `source: ${headerPath}` }),
25116
+ /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "(no source location captured for this prop)" }),
25117
+ /* @__PURE__ */ jsx33(Text28, { children: "[s] close" })
25026
25118
  ] });
25027
25119
  }
25028
25120
  const lines = src.split("\n").slice(Math.max(0, start - 1), end2);
25029
- return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
25030
- /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, bold: true, children: `${headerPath}: lines ${start}\u2013${end2}` }),
25031
- lines.map((ln, i) => /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: ln }, `source-line-${i}`)),
25032
- /* @__PURE__ */ jsx32(Text27, { children: "[s] close \xB7 [Esc] close" })
25121
+ return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
25122
+ /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, bold: true, children: `${headerPath}: lines ${start}\u2013${end2}` }),
25123
+ lines.map((ln, i) => /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: ln }, `source-line-${i}`)),
25124
+ /* @__PURE__ */ jsx33(Text28, { children: "[s] close \xB7 [Esc] close" })
25033
25125
  ] });
25034
25126
  })(),
25035
- showHelp && /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.accent, paddingX: 1, children: [
25036
- /* @__PURE__ */ jsx32(Text27, { bold: true, color: PALETTE.accent, children: "Keybindings" }),
25037
- /* @__PURE__ */ jsx32(Text27, { children: " " }),
25038
- /* @__PURE__ */ jsx32(Text27, { bold: true, children: "Row navigation" }),
25039
- /* @__PURE__ */ jsx32(Text27, { children: " \u2191/\u2193 move between rows" }),
25040
- /* @__PURE__ */ jsx32(Text27, { children: " Enter edit fields on the current row" }),
25041
- /* @__PURE__ */ jsx32(Text27, { children: " d delete the current prop or slot (asks to confirm)" }),
25042
- /* @__PURE__ */ jsx32(Text27, { children: " Esc exit the panel" }),
25043
- /* @__PURE__ */ jsx32(Text27, { children: " " }),
25044
- /* @__PURE__ */ jsx32(Text27, { bold: true, children: "Field editing" }),
25045
- /* @__PURE__ */ jsx32(Text27, { children: " \u2191/\u2193/\u2190\u2192 cycle through fields" }),
25046
- /* @__PURE__ */ jsx32(Text27, { children: " \u2190/\u2192 cycle picker values \xB7 move cursor in text inputs" }),
25047
- /* @__PURE__ */ jsx32(Text27, { children: " Space/Enter toggle required" }),
25048
- /* @__PURE__ */ jsx32(Text27, { children: " Type edit description / string default" }),
25049
- /* @__PURE__ */ jsx32(Text27, { children: " Esc exit field-edit back to the row" }),
25050
- /* @__PURE__ */ jsx32(Text27, { children: " " }),
25051
- /* @__PURE__ */ jsx32(Text27, { bold: true, children: "Values / allowedComponents" }),
25052
- /* @__PURE__ */ jsx32(Text27, { children: " a / e / r add \xB7 edit \xB7 remove" }),
25053
- /* @__PURE__ */ jsx32(Text27, { children: " \u2191\u2193 navigate the list" }),
25054
- /* @__PURE__ */ jsx32(Text27, { children: " K / J reorder up \xB7 down" }),
25055
- /* @__PURE__ */ jsx32(Text27, { children: " " }),
25056
- /* @__PURE__ */ jsx32(Text27, { bold: true, children: "Panels" }),
25057
- /* @__PURE__ */ jsx32(Text27, { children: " s toggle source-view for the current prop" }),
25058
- /* @__PURE__ */ jsx32(Text27, { children: " " + propRationaleKey.padEnd(16) + " toggle prop rationale panel" }),
25059
- /* @__PURE__ */ jsx32(Text27, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
25060
- /* @__PURE__ */ jsx32(Text27, { children: " ? toggle this overlay" }),
25061
- /* @__PURE__ */ jsx32(Text27, { children: " " }),
25062
- /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "press ? or Esc to close" })
25127
+ showHelp && /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.accent, paddingX: 1, children: [
25128
+ /* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.accent, children: "Keybindings" }),
25129
+ /* @__PURE__ */ jsx33(Text28, { children: " " }),
25130
+ /* @__PURE__ */ jsx33(Text28, { bold: true, children: "Row navigation" }),
25131
+ /* @__PURE__ */ jsx33(Text28, { children: " \u2191/\u2193 move between rows" }),
25132
+ /* @__PURE__ */ jsx33(Text28, { children: " Enter edit fields on the current row" }),
25133
+ /* @__PURE__ */ jsx33(Text28, { children: " d delete the current prop or slot (asks to confirm)" }),
25134
+ /* @__PURE__ */ jsx33(Text28, { children: " Esc exit the panel" }),
25135
+ /* @__PURE__ */ jsx33(Text28, { children: " " }),
25136
+ /* @__PURE__ */ jsx33(Text28, { bold: true, children: "Field editing" }),
25137
+ /* @__PURE__ */ jsx33(Text28, { children: " \u2191/\u2193/\u2190\u2192 cycle through fields" }),
25138
+ /* @__PURE__ */ jsx33(Text28, { children: " \u2190/\u2192 cycle picker values \xB7 move cursor in text inputs" }),
25139
+ /* @__PURE__ */ jsx33(Text28, { children: " Space/Enter toggle required" }),
25140
+ /* @__PURE__ */ jsx33(Text28, { children: " Type edit description / string default" }),
25141
+ /* @__PURE__ */ jsx33(Text28, { children: " Esc exit field-edit back to the row" }),
25142
+ /* @__PURE__ */ jsx33(Text28, { children: " " }),
25143
+ /* @__PURE__ */ jsx33(Text28, { bold: true, children: "Values / allowedComponents" }),
25144
+ /* @__PURE__ */ jsx33(Text28, { children: " a / e / r add \xB7 edit \xB7 remove" }),
25145
+ /* @__PURE__ */ jsx33(Text28, { children: " \u2191\u2193 navigate the list" }),
25146
+ /* @__PURE__ */ jsx33(Text28, { children: " K / J reorder up \xB7 down" }),
25147
+ /* @__PURE__ */ jsx33(Text28, { children: " " }),
25148
+ /* @__PURE__ */ jsx33(Text28, { bold: true, children: "Panels" }),
25149
+ /* @__PURE__ */ jsx33(Text28, { children: " s toggle source-view for the current prop" }),
25150
+ /* @__PURE__ */ jsx33(Text28, { children: " " + propRationaleKey.padEnd(16) + " toggle prop rationale panel" }),
25151
+ /* @__PURE__ */ jsx33(Text28, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
25152
+ /* @__PURE__ */ jsx33(Text28, { children: " ? toggle this overlay" }),
25153
+ /* @__PURE__ */ jsx33(Text28, { children: " " }),
25154
+ /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "press ? or Esc to close" })
25063
25155
  ] }),
25064
- validationError && /* @__PURE__ */ jsx32(Text27, { color: PALETTE.error, children: "\u2717 " + validationError }),
25065
- /* @__PURE__ */ jsx32(Box26, { paddingTop: 1, children: /* @__PURE__ */ jsx32(Text27, { color: pendingDelete ? PALETTE.text : PALETTE.muted, children: modeLabel }) })
25156
+ validationError && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.error, children: "\u2717 " + validationError }),
25157
+ /* @__PURE__ */ jsx33(Box27, { paddingTop: 1, children: /* @__PURE__ */ jsx33(Text28, { color: pendingDelete ? PALETTE.text : PALETTE.muted, children: modeLabel }) })
25066
25158
  ]
25067
25159
  }
25068
25160
  );
25069
25161
  }
25070
25162
 
25071
25163
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx
25072
- import { Text as Text33 } from "ink";
25164
+ import { Text as Text34 } from "ink";
25073
25165
 
25074
25166
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ComponentRationalePanel.tsx
25075
- import { Box as Box28, Text as Text29 } from "ink";
25167
+ import { Box as Box29, Text as Text30 } from "ink";
25076
25168
 
25077
25169
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/wrap-text.ts
25078
25170
  function appendLongWordChunks(word, width, lines) {
@@ -25107,27 +25199,27 @@ function wrapText(text, innerWidth) {
25107
25199
  }
25108
25200
 
25109
25201
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationaleLine.tsx
25110
- import { Box as Box27, Text as Text28 } from "ink";
25111
- import { jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
25202
+ import { Box as Box28, Text as Text29 } from "ink";
25203
+ import { jsx as jsx34, jsxs as jsxs28 } from "react/jsx-runtime";
25112
25204
  function RationaleLine({ line, active }) {
25113
25205
  if (line.kind === "blank") {
25114
- return /* @__PURE__ */ jsx33(Box27, { children: /* @__PURE__ */ jsx33(Text28, { children: " " }) });
25206
+ return /* @__PURE__ */ jsx34(Box28, { children: /* @__PURE__ */ jsx34(Text29, { children: " " }) });
25115
25207
  }
25116
25208
  if (line.kind === "heading") {
25117
- return /* @__PURE__ */ jsx33(Box27, { children: /* @__PURE__ */ jsx33(Text28, { bold: true, color: active ? PALETTE.accent : PALETTE.muted, children: line.text }) });
25209
+ return /* @__PURE__ */ jsx34(Box28, { children: /* @__PURE__ */ jsx34(Text29, { bold: true, color: active ? PALETTE.accent : PALETTE.muted, children: line.text }) });
25118
25210
  }
25119
25211
  if (line.kind === "label") {
25120
- return /* @__PURE__ */ jsxs27(Box27, { children: [
25121
- line.prefix && /* @__PURE__ */ jsx33(Text28, { children: line.prefix }),
25122
- /* @__PURE__ */ jsx33(Text28, { bold: true, color: active ? line.color : PALETTE.muted, children: line.text }),
25123
- line.suffix && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: line.suffix })
25212
+ return /* @__PURE__ */ jsxs28(Box28, { children: [
25213
+ line.prefix && /* @__PURE__ */ jsx34(Text29, { children: line.prefix }),
25214
+ /* @__PURE__ */ jsx34(Text29, { bold: true, color: active ? line.color : PALETTE.muted, children: line.text }),
25215
+ line.suffix && /* @__PURE__ */ jsx34(Text29, { color: PALETTE.muted, children: line.suffix })
25124
25216
  ] });
25125
25217
  }
25126
- return /* @__PURE__ */ jsx33(Box27, { children: /* @__PURE__ */ jsx33(Text28, { color: !active || line.dim ? PALETTE.muted : void 0, children: line.text }) });
25218
+ return /* @__PURE__ */ jsx34(Box28, { children: /* @__PURE__ */ jsx34(Text29, { color: !active || line.dim ? PALETTE.muted : void 0, children: line.text }) });
25127
25219
  }
25128
25220
 
25129
25221
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ComponentRationalePanel.tsx
25130
- import { jsx as jsx34, jsxs as jsxs28 } from "react/jsx-runtime";
25222
+ import { jsx as jsx35, jsxs as jsxs29 } from "react/jsx-runtime";
25131
25223
  var PLACEHOLDER = "(no rationale captured)";
25132
25224
  function renderComponentRationaleLines(data, innerWidth) {
25133
25225
  const out = [];
@@ -25195,8 +25287,8 @@ function ComponentRationalePanel({
25195
25287
  const overflowed = totalLines > contentHeight;
25196
25288
  const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
25197
25289
  const visibleEnd = Math.min(totalLines, scrollOffset + contentHeight);
25198
- return /* @__PURE__ */ jsxs28(
25199
- Box28,
25290
+ return /* @__PURE__ */ jsxs29(
25291
+ Box29,
25200
25292
  {
25201
25293
  flexDirection: "column",
25202
25294
  width,
@@ -25204,27 +25296,27 @@ function ComponentRationalePanel({
25204
25296
  borderStyle: "single",
25205
25297
  borderColor: active ? PALETTE.text : void 0,
25206
25298
  children: [
25207
- /* @__PURE__ */ jsx34(Box28, { children: /* @__PURE__ */ jsx34(Text29, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Component rationale: ${data.name}` }) }),
25208
- visible.map((line, i) => /* @__PURE__ */ jsx34(RationaleLine, { line, active }, i)),
25209
- /* @__PURE__ */ jsx34(Box28, { children: overflowed ? /* @__PURE__ */ jsx34(Text29, { children: `${visibleStart}-${visibleEnd}/${totalLines} [\u2191\u2193] scroll [I/Esc] close` }) : /* @__PURE__ */ jsx34(Text29, { children: "[I/Esc] close" }) })
25299
+ /* @__PURE__ */ jsx35(Box29, { children: /* @__PURE__ */ jsx35(Text30, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Component rationale: ${data.name}` }) }),
25300
+ visible.map((line, i) => /* @__PURE__ */ jsx35(RationaleLine, { line, active }, i)),
25301
+ /* @__PURE__ */ jsx35(Box29, { children: overflowed ? /* @__PURE__ */ jsx35(Text30, { children: `${visibleStart}-${visibleEnd}/${totalLines} [\u2191\u2193] scroll [I/Esc] close` }) : /* @__PURE__ */ jsx35(Text30, { children: "[I/Esc] close" }) })
25210
25302
  ]
25211
25303
  }
25212
25304
  );
25213
25305
  }
25214
25306
 
25215
25307
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/JsonPanel.tsx
25216
- import { Box as Box30 } from "ink";
25308
+ import { Box as Box31 } from "ink";
25217
25309
 
25218
25310
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/HighlightedLine.tsx
25219
- import { Text as Text30 } from "ink";
25220
- import { Fragment as Fragment7, jsx as jsx35 } from "react/jsx-runtime";
25311
+ import { Text as Text31 } from "ink";
25312
+ import { Fragment as Fragment8, jsx as jsx36 } from "react/jsx-runtime";
25221
25313
  function HighlightedLine({ parts }) {
25222
- return /* @__PURE__ */ jsx35(Fragment7, { children: parts.map((part, i) => /* @__PURE__ */ jsx35(Text30, { color: part.dim ? PALETTE.muted : part.color, children: part.text }, i)) });
25314
+ return /* @__PURE__ */ jsx36(Fragment8, { children: parts.map((part, i) => /* @__PURE__ */ jsx36(Text31, { color: part.dim ? PALETTE.muted : part.color, children: part.text }, i)) });
25223
25315
  }
25224
25316
 
25225
25317
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ScrollablePanel.tsx
25226
- import { Box as Box29, Text as Text31 } from "ink";
25227
- import { Fragment as Fragment8, jsx as jsx36, jsxs as jsxs29 } from "react/jsx-runtime";
25318
+ import { Box as Box30, Text as Text32 } from "ink";
25319
+ import { Fragment as Fragment9, jsx as jsx37, jsxs as jsxs30 } from "react/jsx-runtime";
25228
25320
  function ScrollablePanel({
25229
25321
  title,
25230
25322
  width,
@@ -25237,12 +25329,12 @@ function ScrollablePanel({
25237
25329
  children
25238
25330
  }) {
25239
25331
  const overflowed = totalLines > height;
25240
- return /* @__PURE__ */ jsxs29(Box29, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
25241
- /* @__PURE__ */ jsxs29(Box29, { children: [
25242
- /* @__PURE__ */ jsx36(Text31, { bold: true, color: active ? void 0 : PALETTE.muted, children: title }),
25243
- overflowed && /* @__PURE__ */ jsxs29(Fragment8, { children: [
25244
- /* @__PURE__ */ jsx36(Box29, { flexGrow: 1 }),
25245
- /* @__PURE__ */ jsx36(Text31, { color: active ? void 0 : PALETTE.muted, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
25332
+ return /* @__PURE__ */ jsxs30(Box30, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
25333
+ /* @__PURE__ */ jsxs30(Box30, { children: [
25334
+ /* @__PURE__ */ jsx37(Text32, { bold: true, color: active ? void 0 : PALETTE.muted, children: title }),
25335
+ overflowed && /* @__PURE__ */ jsxs30(Fragment9, { children: [
25336
+ /* @__PURE__ */ jsx37(Box30, { flexGrow: 1 }),
25337
+ /* @__PURE__ */ jsx37(Text32, { color: active ? void 0 : PALETTE.muted, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
25246
25338
  ] })
25247
25339
  ] }),
25248
25340
  children
@@ -25250,7 +25342,7 @@ function ScrollablePanel({
25250
25342
  }
25251
25343
 
25252
25344
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/JsonPanel.tsx
25253
- import { jsx as jsx37 } from "react/jsx-runtime";
25345
+ import { jsx as jsx38 } from "react/jsx-runtime";
25254
25346
  function highlightJson(line) {
25255
25347
  const parts = [];
25256
25348
  let remaining = line;
@@ -25288,7 +25380,7 @@ function highlightJson(line) {
25288
25380
  parts.push({ text: remaining[0] });
25289
25381
  remaining = remaining.slice(1);
25290
25382
  }
25291
- return /* @__PURE__ */ jsx37(HighlightedLine, { parts });
25383
+ return /* @__PURE__ */ jsx38(HighlightedLine, { parts });
25292
25384
  }
25293
25385
  function truncateLine(line, maxWidth) {
25294
25386
  if (line.length <= maxWidth) return line;
@@ -25301,7 +25393,7 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
25301
25393
  const totalLines = allLines.length;
25302
25394
  const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
25303
25395
  const visibleEnd = Math.min(totalLines, scrollOffset + height);
25304
- return /* @__PURE__ */ jsx37(
25396
+ return /* @__PURE__ */ jsx38(
25305
25397
  ScrollablePanel,
25306
25398
  {
25307
25399
  title: label,
@@ -25314,14 +25406,14 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
25314
25406
  borderColor: active ? "white" : void 0,
25315
25407
  children: visibleLines.map((line, i) => {
25316
25408
  const truncated = truncateLine(line, innerWidth);
25317
- return /* @__PURE__ */ jsx37(Box30, { children: highlightJson(truncated) }, i);
25409
+ return /* @__PURE__ */ jsx38(Box31, { children: highlightJson(truncated) }, i);
25318
25410
  })
25319
25411
  }
25320
25412
  );
25321
25413
  }
25322
25414
 
25323
25415
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationalePanel.tsx
25324
- import { jsx as jsx38 } from "react/jsx-runtime";
25416
+ import { jsx as jsx39 } from "react/jsx-runtime";
25325
25417
  function renderRationaleLines(rows, innerWidth) {
25326
25418
  const out = [];
25327
25419
  rows.forEach((row, idx) => {
@@ -25354,7 +25446,7 @@ function RationalePanel({
25354
25446
  const visible = allLines.slice(scrollOffset, scrollOffset + height);
25355
25447
  const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
25356
25448
  const visibleEnd = Math.min(totalLines, scrollOffset + height);
25357
- return /* @__PURE__ */ jsx38(
25449
+ return /* @__PURE__ */ jsx39(
25358
25450
  ScrollablePanel,
25359
25451
  {
25360
25452
  title: `RATIONALE \u2014 ${componentName}`,
@@ -25365,15 +25457,15 @@ function RationalePanel({
25365
25457
  visibleStart,
25366
25458
  visibleEnd,
25367
25459
  borderColor: active ? PALETTE.text : void 0,
25368
- children: visible.map((line, i) => /* @__PURE__ */ jsx38(RationaleLine, { line, active }, i))
25460
+ children: visible.map((line, i) => /* @__PURE__ */ jsx39(RationaleLine, { line, active }, i))
25369
25461
  }
25370
25462
  );
25371
25463
  }
25372
25464
 
25373
25465
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/TokenReviewPanel.tsx
25374
25466
  import figures7 from "figures";
25375
- import { Box as Box31, Text as Text32 } from "ink";
25376
- import { jsx as jsx39, jsxs as jsxs30 } from "react/jsx-runtime";
25467
+ import { Box as Box32, Text as Text33 } from "ink";
25468
+ import { jsx as jsx40, jsxs as jsxs31 } from "react/jsx-runtime";
25377
25469
  function TokenReviewPanel({
25378
25470
  componentName,
25379
25471
  suggestions,
@@ -25392,8 +25484,8 @@ function TokenReviewPanel({
25392
25484
  const scrollStart = Math.max(0, Math.min(editCursor - Math.floor(visibleCount / 2), maxStart));
25393
25485
  const visiblePaths = current.paths.slice(scrollStart, scrollStart + visibleCount);
25394
25486
  const rangeLabel = current.paths.length === 0 ? "no compatible tokens" : `${scrollStart + 1}-${scrollStart + visiblePaths.length} of ${current.paths.length}`;
25395
- return /* @__PURE__ */ jsxs30(
25396
- Box31,
25487
+ return /* @__PURE__ */ jsxs31(
25488
+ Box32,
25397
25489
  {
25398
25490
  flexDirection: "column",
25399
25491
  width,
@@ -25401,16 +25493,16 @@ function TokenReviewPanel({
25401
25493
  borderStyle: "single",
25402
25494
  borderColor: active ? PALETTE.text : void 0,
25403
25495
  children: [
25404
- /* @__PURE__ */ jsx39(Text32, { bold: true, color: active ? void 0 : PALETTE.muted, wrap: "truncate", children: `Review mapped tokens \u2014 ${componentName} \xB7 ${current.propName}${current.kinds.length > 0 ? ` (${current.kinds.join(", ")})` : ""}` }),
25405
- /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, wrap: "truncate", children: `Tick the tokens this property may use (${rangeLabel}).` }),
25406
- /* @__PURE__ */ jsx39(Text32, { children: " " }),
25407
- current.paths.length === 0 && /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, children: "(no compatible tokens found for this token kind)" }),
25496
+ /* @__PURE__ */ jsx40(Text33, { bold: true, color: active ? void 0 : PALETTE.muted, wrap: "truncate", children: `Review mapped tokens \u2014 ${componentName} \xB7 ${current.propName}${current.kinds.length > 0 ? ` (${current.kinds.join(", ")})` : ""}` }),
25497
+ /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: `Tick the tokens this property may use (${rangeLabel}).` }),
25498
+ /* @__PURE__ */ jsx40(Text33, { children: " " }),
25499
+ current.paths.length === 0 && /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, children: "(no compatible tokens found for this token kind)" }),
25408
25500
  visiblePaths.map((path5, i) => {
25409
25501
  const pathIndex = scrollStart + i;
25410
25502
  const checked = editSelection.has(path5);
25411
25503
  const focused = pathIndex === editCursor;
25412
- return /* @__PURE__ */ jsx39(Box31, { children: /* @__PURE__ */ jsx39(
25413
- Text32,
25504
+ return /* @__PURE__ */ jsx40(Box32, { children: /* @__PURE__ */ jsx40(
25505
+ Text33,
25414
25506
  {
25415
25507
  color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted,
25416
25508
  bold: focused,
@@ -25419,15 +25511,15 @@ function TokenReviewPanel({
25419
25511
  }
25420
25512
  ) }, path5);
25421
25513
  }),
25422
- /* @__PURE__ */ jsx39(Text32, { children: " " }),
25423
- /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
25424
- /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
25514
+ /* @__PURE__ */ jsx40(Text33, { children: " " }),
25515
+ /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
25516
+ /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
25425
25517
  ]
25426
25518
  }
25427
25519
  );
25428
25520
  }
25429
- return /* @__PURE__ */ jsxs30(
25430
- Box31,
25521
+ return /* @__PURE__ */ jsxs31(
25522
+ Box32,
25431
25523
  {
25432
25524
  flexDirection: "column",
25433
25525
  width,
@@ -25435,40 +25527,40 @@ function TokenReviewPanel({
25435
25527
  borderStyle: "single",
25436
25528
  borderColor: active ? PALETTE.text : void 0,
25437
25529
  children: [
25438
- /* @__PURE__ */ jsx39(Text32, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Review mapped tokens \u2014 ${componentName}` }),
25439
- /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, wrap: "truncate", children: `${componentName} has ${suggestions.length} design ${suggestions.length === 1 ? "prop" : "props"} of type token. Select which tokens are allowed for each property.` }),
25440
- /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, wrap: "truncate", children: "Suggested tokens come from the agent. Allowed tokens are what editors can pick in Contentful." }),
25441
- /* @__PURE__ */ jsx39(Text32, { children: " " }),
25442
- suggestions.length === 0 && /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, children: "(no token suggestions for this component)" }),
25530
+ /* @__PURE__ */ jsx40(Text33, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Review mapped tokens \u2014 ${componentName}` }),
25531
+ /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: `${componentName} has ${suggestions.length} design ${suggestions.length === 1 ? "prop" : "props"} of type token. Select which tokens are allowed for each property.` }),
25532
+ /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: "Suggested tokens come from the agent. Allowed tokens are what editors can pick in Contentful." }),
25533
+ /* @__PURE__ */ jsx40(Text33, { children: " " }),
25534
+ suggestions.length === 0 && /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, children: "(no token suggestions for this component)" }),
25443
25535
  suggestions.map((s, i) => {
25444
25536
  const focused = i === selectedRow;
25445
- return /* @__PURE__ */ jsxs30(Box31, { flexDirection: "column", children: [
25446
- /* @__PURE__ */ jsx39(Box31, { children: /* @__PURE__ */ jsx39(Text32, { color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted, bold: focused, children: `${focused ? figures7.pointer : " "} ${s.propName}${s.kinds.length > 0 ? ` (${s.kinds.join(", ")})` : ""}` }) }),
25447
- /* @__PURE__ */ jsx39(
25448
- Text32,
25537
+ return /* @__PURE__ */ jsxs31(Box32, { flexDirection: "column", children: [
25538
+ /* @__PURE__ */ jsx40(Box32, { children: /* @__PURE__ */ jsx40(Text33, { color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted, bold: focused, children: `${focused ? figures7.pointer : " "} ${s.propName}${s.kinds.length > 0 ? ` (${s.kinds.join(", ")})` : ""}` }) }),
25539
+ /* @__PURE__ */ jsx40(
25540
+ Text33,
25449
25541
  {
25450
25542
  color: PALETTE.muted,
25451
25543
  children: ` suggested: ${s.suggested.length > 0 ? s.suggested.join(", ") : "none"}`
25452
25544
  }
25453
25545
  ),
25454
- /* @__PURE__ */ jsx39(
25455
- Text32,
25546
+ /* @__PURE__ */ jsx40(
25547
+ Text33,
25456
25548
  {
25457
25549
  color: PALETTE.muted,
25458
25550
  children: ` allowed: ${s.allowed.length > 0 ? s.allowed.join(", ") : "none (any token)"}`
25459
25551
  }
25460
25552
  ),
25461
- /* @__PURE__ */ jsx39(Text32, { children: " " })
25553
+ /* @__PURE__ */ jsx40(Text33, { children: " " })
25462
25554
  ] }, s.propName);
25463
25555
  }),
25464
- /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, children: "[\u2191/\u2193] move [Enter] edit allowed tokens [Esc] close" })
25556
+ /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, children: "[\u2191/\u2193] move [Enter] edit allowed tokens [Esc] close" })
25465
25557
  ]
25466
25558
  }
25467
25559
  );
25468
25560
  }
25469
25561
 
25470
25562
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx
25471
- import { Fragment as Fragment9, jsx as jsx40, jsxs as jsxs31 } from "react/jsx-runtime";
25563
+ import { Fragment as Fragment10, jsx as jsx41, jsxs as jsxs32 } from "react/jsx-runtime";
25472
25564
  function ReviewDetailsPanel({
25473
25565
  selectedKey,
25474
25566
  panelOpen,
@@ -25503,7 +25595,7 @@ function ReviewDetailsPanel({
25503
25595
  rationale: s.rationale ?? ""
25504
25596
  }))
25505
25597
  ];
25506
- return /* @__PURE__ */ jsx40(
25598
+ return /* @__PURE__ */ jsx41(
25507
25599
  RationalePanel,
25508
25600
  {
25509
25601
  componentName: componentRationale?.name ?? selectedKey,
@@ -25516,7 +25608,7 @@ function ReviewDetailsPanel({
25516
25608
  );
25517
25609
  }
25518
25610
  if (panelOpen === "component-rationale") {
25519
- return /* @__PURE__ */ jsx40(
25611
+ return /* @__PURE__ */ jsx41(
25520
25612
  ComponentRationalePanel,
25521
25613
  {
25522
25614
  data: componentRationale ?? {
@@ -25541,14 +25633,14 @@ function ReviewDetailsPanel({
25541
25633
  const headerPath = path5 ?? "<unknown source path>";
25542
25634
  const sourceLineCount = Math.max(1, height - 4);
25543
25635
  const lines = source ? source.split("\n").slice(panelScrollOffset, panelScrollOffset + sourceLineCount) : [];
25544
- return /* @__PURE__ */ jsxs31(FixedPanel, { width, height, borderStyle: "single", borderColor: sourceBorderColor, paddingLeft: 1, children: [
25545
- /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, bold: true, wrap: "truncate-end", children: `source: ${headerPath}` }),
25546
- source ? lines.map((line, index) => /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate-end", children: line }, `source-line-${index}`)) : /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, children: "(no source captured)" }),
25547
- /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate-end", children: "[s/Esc] close" })
25636
+ return /* @__PURE__ */ jsxs32(FixedPanel, { width, height, borderStyle: "single", borderColor: sourceBorderColor, paddingLeft: 1, children: [
25637
+ /* @__PURE__ */ jsx41(Text34, { color: PALETTE.muted, bold: true, wrap: "truncate-end", children: `source: ${headerPath}` }),
25638
+ source ? lines.map((line, index) => /* @__PURE__ */ jsx41(Text34, { color: PALETTE.muted, wrap: "truncate-end", children: line }, `source-line-${index}`)) : /* @__PURE__ */ jsx41(Text34, { color: PALETTE.muted, children: "(no source captured)" }),
25639
+ /* @__PURE__ */ jsx41(Text34, { color: PALETTE.muted, wrap: "truncate-end", children: "[s/Esc] close" })
25548
25640
  ] });
25549
25641
  }
25550
25642
  if (panelOpen === "token-review") {
25551
- return /* @__PURE__ */ jsx40(
25643
+ return /* @__PURE__ */ jsx41(
25552
25644
  TokenReviewPanel,
25553
25645
  {
25554
25646
  componentName: selectedKey,
@@ -25564,7 +25656,7 @@ function ReviewDetailsPanel({
25564
25656
  );
25565
25657
  }
25566
25658
  if (showJson) {
25567
- return /* @__PURE__ */ jsx40(
25659
+ return /* @__PURE__ */ jsx41(
25568
25660
  JsonPanel,
25569
25661
  {
25570
25662
  label: "GENERATED DEFINITION (read-only)",
@@ -25576,11 +25668,11 @@ function ReviewDetailsPanel({
25576
25668
  }
25577
25669
  );
25578
25670
  }
25579
- return /* @__PURE__ */ jsx40(Fragment9, { children: editor });
25671
+ return /* @__PURE__ */ jsx41(Fragment10, { children: editor });
25580
25672
  }
25581
25673
 
25582
25674
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDetailsEditor.tsx
25583
- import { jsx as jsx41 } from "react/jsx-runtime";
25675
+ import { jsx as jsx42 } from "react/jsx-runtime";
25584
25676
  import { createElement } from "react";
25585
25677
  function toFieldEditorMetadata(reviewMetadata) {
25586
25678
  if (!reviewMetadata) return void 0;
@@ -25614,7 +25706,7 @@ function ReviewDetailsEditor({
25614
25706
  jsonScrollOffset,
25615
25707
  currentTokenSuggestions
25616
25708
  } = reviewEditor;
25617
- return /* @__PURE__ */ jsx41(
25709
+ return /* @__PURE__ */ jsx42(
25618
25710
  ReviewDetailsPanel,
25619
25711
  {
25620
25712
  selectedKey,
@@ -25654,7 +25746,7 @@ function ReviewDetailsEditor({
25654
25746
  }
25655
25747
 
25656
25748
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewComponentPanel.tsx
25657
- import { Fragment as Fragment10, jsx as jsx42, jsxs as jsxs32 } from "react/jsx-runtime";
25749
+ import { Fragment as Fragment11, jsx as jsx43, jsxs as jsxs33 } from "react/jsx-runtime";
25658
25750
  function buildReviewFieldEditor(reviewEditor, selectedJson, onExit, overrides = {}) {
25659
25751
  return {
25660
25752
  value: reviewEditor.draftValue || selectedJson,
@@ -25694,24 +25786,24 @@ function ReviewEmptyComponentsWarning({
25694
25786
  hidden
25695
25787
  }) {
25696
25788
  if (hidden || count === 0) return null;
25697
- return /* @__PURE__ */ jsx42(Text34, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
25789
+ return /* @__PURE__ */ jsx43(Text35, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
25698
25790
  }
25699
25791
  function ReviewNoSelection() {
25700
- return /* @__PURE__ */ jsx42(Box32, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx42(Text34, { color: PALETTE.muted, children: "No component selected" }) });
25792
+ return /* @__PURE__ */ jsx43(Box33, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx43(Text35, { color: PALETTE.muted, children: "No component selected" }) });
25701
25793
  }
25702
25794
  function ReviewFinalizeError({
25703
25795
  message,
25704
25796
  hidden
25705
25797
  }) {
25706
25798
  if (hidden || !message) return null;
25707
- return /* @__PURE__ */ jsx42(Text34, { color: PALETTE.error, children: `\u26A0 ${message}` });
25799
+ return /* @__PURE__ */ jsx43(Text35, { color: PALETTE.error, children: `\u26A0 ${message}` });
25708
25800
  }
25709
25801
  function ReviewPanelFooter({
25710
25802
  reviewEditor,
25711
25803
  sidebarFocused,
25712
25804
  sidebarFooter
25713
25805
  }) {
25714
- return /* @__PURE__ */ jsx42(Fragment10, { children: reviewEditor.panelOpen === "token-review" ? "" : sidebarFocused ? sidebarFooter : reviewEditor.showJson ? " [\u2191\u2193] scroll [Ctrl+u/d] half-page [gg/G] top/bottom [Tab] focus list" : " [Tab] focus list [Enter] edit fields" + (reviewEditor.currentTokenSuggestions().length > 0 ? " [t] review mapped tokens" : "") });
25806
+ return /* @__PURE__ */ jsx43(Fragment11, { children: reviewEditor.panelOpen === "token-review" ? "" : sidebarFocused ? sidebarFooter : reviewEditor.showJson ? " [\u2191\u2193] scroll [Ctrl+u/d] half-page [gg/G] top/bottom [Tab] focus list" : " [Tab] focus list [Enter] edit fields" + (reviewEditor.currentTokenSuggestions().length > 0 ? " [t] review mapped tokens" : "") });
25715
25807
  }
25716
25808
  function ReviewComponentTitle({
25717
25809
  selectedKey,
@@ -25719,10 +25811,10 @@ function ReviewComponentTitle({
25719
25811
  slotCount,
25720
25812
  sidebarFocused
25721
25813
  }) {
25722
- return /* @__PURE__ */ jsxs32(Box32, { paddingLeft: 2, paddingBottom: 1, children: [
25723
- /* @__PURE__ */ jsx42(Text34, { bold: true, wrap: "truncate-end", children: selectedKey }),
25724
- /* @__PURE__ */ jsx42(Box32, { flexGrow: 1 }),
25725
- /* @__PURE__ */ jsxs32(Text34, { color: PALETTE.muted, wrap: "truncate-end", children: [
25814
+ return /* @__PURE__ */ jsxs33(Box33, { paddingLeft: 2, paddingBottom: 1, children: [
25815
+ /* @__PURE__ */ jsx43(Text35, { bold: true, wrap: "truncate-end", children: selectedKey }),
25816
+ /* @__PURE__ */ jsx43(Box33, { flexGrow: 1 }),
25817
+ /* @__PURE__ */ jsxs33(Text35, { color: PALETTE.muted, wrap: "truncate-end", children: [
25726
25818
  propCount,
25727
25819
  " prop",
25728
25820
  propCount !== 1 ? "s" : "",
@@ -25751,8 +25843,8 @@ function ReviewComponentPanel({
25751
25843
  const slotCount = selectedEntry.$slots ? Object.keys(selectedEntry.$slots).length : 0;
25752
25844
  const contentHeight = Math.max(1, height - 2);
25753
25845
  const contentWidth = Math.max(1, width - 1);
25754
- return /* @__PURE__ */ jsx42(FixedPanel, { width, height, borderStyle: void 0, paddingLeft: 1, children: /* @__PURE__ */ jsxs32(Box32, { flexDirection: "column", width: contentWidth, height, flexShrink: 0, overflowY: "hidden", children: [
25755
- /* @__PURE__ */ jsx42(Box32, { width: contentWidth, height: contentHeight, flexShrink: 0, overflowY: "hidden", children: /* @__PURE__ */ jsx42(
25846
+ return /* @__PURE__ */ jsx43(FixedPanel, { width, height, borderStyle: void 0, paddingLeft: 1, children: /* @__PURE__ */ jsxs33(Box33, { flexDirection: "column", width: contentWidth, height, flexShrink: 0, overflowY: "hidden", children: [
25847
+ /* @__PURE__ */ jsx43(Box33, { width: contentWidth, height: contentHeight, flexShrink: 0, overflowY: "hidden", children: /* @__PURE__ */ jsx43(
25756
25848
  ReviewDetailsEditor,
25757
25849
  {
25758
25850
  selectedKey,
@@ -25765,7 +25857,7 @@ function ReviewComponentPanel({
25765
25857
  jsonValue,
25766
25858
  sidebarFocused,
25767
25859
  fieldEditor,
25768
- header: /* @__PURE__ */ jsx42(
25860
+ header: /* @__PURE__ */ jsx43(
25769
25861
  ReviewComponentTitle,
25770
25862
  {
25771
25863
  selectedKey,
@@ -25776,8 +25868,8 @@ function ReviewComponentPanel({
25776
25868
  )
25777
25869
  }
25778
25870
  ) }),
25779
- /* @__PURE__ */ jsx42(Box32, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx42(Text34, { color: saveError ? PALETTE.error : void 0, wrap: "truncate-end", children: saveError ? "\u2717 " + saveError : " " }) }),
25780
- /* @__PURE__ */ jsx42(Box32, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx42(Text34, { color: PALETTE.muted, wrap: "truncate-end", children: /* @__PURE__ */ jsx42(
25871
+ /* @__PURE__ */ jsx43(Box33, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx43(Text35, { color: saveError ? PALETTE.error : void 0, wrap: "truncate-end", children: saveError ? "\u2717 " + saveError : " " }) }),
25872
+ /* @__PURE__ */ jsx43(Box33, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx43(Text35, { color: PALETTE.muted, wrap: "truncate-end", children: /* @__PURE__ */ jsx43(
25781
25873
  ReviewPanelFooter,
25782
25874
  {
25783
25875
  reviewEditor,
@@ -25789,8 +25881,8 @@ function ReviewComponentPanel({
25789
25881
  }
25790
25882
 
25791
25883
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewStatus.tsx
25792
- import { Box as Box33, Text as Text35 } from "ink";
25793
- import { jsx as jsx43, jsxs as jsxs33 } from "react/jsx-runtime";
25884
+ import { Box as Box34, Text as Text36 } from "ink";
25885
+ import { jsx as jsx44, jsxs as jsxs34 } from "react/jsx-runtime";
25794
25886
  function countReviewStatuses(entries) {
25795
25887
  return entries.reduce(
25796
25888
  (counts, entry) => {
@@ -25803,13 +25895,13 @@ function countReviewStatuses(entries) {
25803
25895
  );
25804
25896
  }
25805
25897
  function ReviewLoadingState() {
25806
- return /* @__PURE__ */ jsx43(Box33, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx43(Text35, { color: PALETTE.muted, children: "Loading generated definitions..." }) });
25898
+ return /* @__PURE__ */ jsx44(Box34, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: "Loading generated definitions..." }) });
25807
25899
  }
25808
25900
  function ReviewLoadError({ message }) {
25809
- return /* @__PURE__ */ jsxs33(Box33, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
25810
- /* @__PURE__ */ jsx43(Text35, { color: PALETTE.error, children: message }),
25811
- /* @__PURE__ */ jsx43(Text35, { children: " " }),
25812
- /* @__PURE__ */ jsx43(ControlHints, { hints: [{ keys: "q / Enter / Esc", label: "Quit" }] })
25901
+ return /* @__PURE__ */ jsxs34(Box34, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
25902
+ /* @__PURE__ */ jsx44(Text36, { color: PALETTE.error, children: message }),
25903
+ /* @__PURE__ */ jsx44(Text36, { children: " " }),
25904
+ /* @__PURE__ */ jsx44(ControlHints, { hints: [{ keys: "q / Enter / Esc", label: "Quit" }] })
25813
25905
  ] });
25814
25906
  }
25815
25907
 
@@ -26009,8 +26101,8 @@ async function runLivePreview(opts) {
26009
26101
  }
26010
26102
 
26011
26103
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FinalizeDialog.tsx
26012
- import { Box as Box34, Text as Text36 } from "ink";
26013
- import { Fragment as Fragment11, jsx as jsx44, jsxs as jsxs34 } from "react/jsx-runtime";
26104
+ import { Box as Box35, Text as Text37 } from "ink";
26105
+ import { Fragment as Fragment12, jsx as jsx45, jsxs as jsxs35 } from "react/jsx-runtime";
26014
26106
  var FINALIZE_REMOVED_WINDOW = 6;
26015
26107
  function FinalizeDialog({
26016
26108
  accepted,
@@ -26039,51 +26131,51 @@ function FinalizeDialog({
26039
26131
  const windowed = removed.slice(offset, offset + FINALIZE_REMOVED_WINDOW);
26040
26132
  const hasMoreBelow = offset + FINALIZE_REMOVED_WINDOW < removed.length;
26041
26133
  const hasMoreAbove = offset > 0;
26042
- return /* @__PURE__ */ jsx44(Box34, { width: "100%", paddingX: 2, children: /* @__PURE__ */ jsxs34(Box34, { flexDirection: "column", alignItems: "flex-start", children: [
26043
- /* @__PURE__ */ jsx44(Text36, { bold: true, children: "Finalize" }),
26044
- /* @__PURE__ */ jsx44(Text36, { children: " " }),
26045
- /* @__PURE__ */ jsxs34(Text36, { children: [
26046
- /* @__PURE__ */ jsxs34(Text36, { color: PALETTE.success, children: [
26134
+ return /* @__PURE__ */ jsx45(Box35, { width: "100%", paddingX: 2, children: /* @__PURE__ */ jsxs35(Box35, { flexDirection: "column", alignItems: "flex-start", children: [
26135
+ /* @__PURE__ */ jsx45(Text37, { bold: true, children: "Finalize" }),
26136
+ /* @__PURE__ */ jsx45(Text37, { children: " " }),
26137
+ /* @__PURE__ */ jsxs35(Text37, { children: [
26138
+ /* @__PURE__ */ jsxs35(Text37, { color: PALETTE.success, children: [
26047
26139
  accepted,
26048
26140
  " accepted"
26049
26141
  ] }),
26050
- /* @__PURE__ */ jsx44(Text36, { children: " \xB7 " }),
26051
- /* @__PURE__ */ jsxs34(Text36, { color: PALETTE.error, children: [
26142
+ /* @__PURE__ */ jsx45(Text37, { children: " \xB7 " }),
26143
+ /* @__PURE__ */ jsxs35(Text37, { color: PALETTE.error, children: [
26052
26144
  rejected,
26053
26145
  " rejected"
26054
26146
  ] }),
26055
- /* @__PURE__ */ jsx44(Text36, { children: " \xB7 " }),
26056
- /* @__PURE__ */ jsxs34(Text36, { color: PALETTE.muted, children: [
26147
+ /* @__PURE__ */ jsx45(Text37, { children: " \xB7 " }),
26148
+ /* @__PURE__ */ jsxs35(Text37, { color: PALETTE.muted, children: [
26057
26149
  needsReview,
26058
26150
  " unresolved"
26059
26151
  ] })
26060
26152
  ] }),
26061
- /* @__PURE__ */ jsx44(Text36, { children: " " }),
26062
- noneAccepted && /* @__PURE__ */ jsxs34(Fragment11, { children: [
26063
- /* @__PURE__ */ jsx44(Text36, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
26064
- /* @__PURE__ */ jsx44(Text36, { color: PALETTE.warning, children: "Accept at least one component ([a] a row, [A] accept all) to push." }),
26065
- /* @__PURE__ */ jsx44(Text36, { children: " " })
26153
+ /* @__PURE__ */ jsx45(Text37, { children: " " }),
26154
+ noneAccepted && /* @__PURE__ */ jsxs35(Fragment12, { children: [
26155
+ /* @__PURE__ */ jsx45(Text37, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
26156
+ /* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, children: "Accept at least one component ([a] a row, [A] accept all) to push." }),
26157
+ /* @__PURE__ */ jsx45(Text37, { children: " " })
26066
26158
  ] }),
26067
- !allResolved && /* @__PURE__ */ jsxs34(Fragment11, { children: [
26068
- /* @__PURE__ */ jsx44(Text36, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
26069
- /* @__PURE__ */ jsx44(Text36, { color: PALETTE.warning, children: "Only explicitly accepted components ship." }),
26070
- /* @__PURE__ */ jsx44(Text36, { children: " " })
26159
+ !allResolved && /* @__PURE__ */ jsxs35(Fragment12, { children: [
26160
+ /* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
26161
+ /* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, children: "Only explicitly accepted components ship." }),
26162
+ /* @__PURE__ */ jsx45(Text37, { children: " " })
26071
26163
  ] }),
26072
- /* @__PURE__ */ jsxs34(Box34, { flexDirection: "column", height: 2, children: [
26073
- previewStatus === "running" ? /* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: "Previewing deletions against the target space\u2026" }) : previewStatus === "error" ? /* @__PURE__ */ jsx44(Text36, { color: PALETTE.warning, children: "\u26A0 Could not preview deletions (the push will still proceed)." }) : /* @__PURE__ */ jsx44(Text36, { children: " " }),
26074
- /* @__PURE__ */ jsx44(Text36, { children: " " })
26164
+ /* @__PURE__ */ jsxs35(Box35, { flexDirection: "column", height: 2, children: [
26165
+ previewStatus === "running" ? /* @__PURE__ */ jsx45(Text37, { color: PALETTE.muted, children: "Previewing deletions against the target space\u2026" }) : previewStatus === "error" ? /* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, children: "\u26A0 Could not preview deletions (the push will still proceed)." }) : /* @__PURE__ */ jsx45(Text37, { children: " " }),
26166
+ /* @__PURE__ */ jsx45(Text37, { children: " " })
26075
26167
  ] }),
26076
- previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs34(Fragment11, { children: [
26077
- /* @__PURE__ */ jsx44(Text36, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
26078
- hasMoreAbove && /* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: "\u2191 more above" }),
26079
- windowed.map((rc) => /* @__PURE__ */ jsx44(Text36, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
26080
- hasMoreBelow && /* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: "\u2193 more below" }),
26081
- removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx44(Text36, { children: "[\u2191\u2193] scroll deletions" }),
26082
- /* @__PURE__ */ jsx44(Text36, { children: " " })
26168
+ previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs35(Fragment12, { children: [
26169
+ /* @__PURE__ */ jsx45(Text37, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
26170
+ hasMoreAbove && /* @__PURE__ */ jsx45(Text37, { color: PALETTE.muted, children: "\u2191 more above" }),
26171
+ windowed.map((rc) => /* @__PURE__ */ jsx45(Text37, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
26172
+ hasMoreBelow && /* @__PURE__ */ jsx45(Text37, { color: PALETTE.muted, children: "\u2193 more below" }),
26173
+ removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx45(Text37, { children: "[\u2191\u2193] scroll deletions" }),
26174
+ /* @__PURE__ */ jsx45(Text37, { children: " " })
26083
26175
  ] }),
26084
- /* @__PURE__ */ jsx44(Text36, { children: noneAccepted ? "Confirm exit with nothing accepted?" : allResolved ? "Save decisions and exit? All components resolved." : "Save decisions and exit?" }),
26085
- /* @__PURE__ */ jsx44(Text36, { children: " " }),
26086
- /* @__PURE__ */ jsx44(
26176
+ /* @__PURE__ */ jsx45(Text37, { children: noneAccepted ? "Confirm exit with nothing accepted?" : allResolved ? "Save decisions and exit? All components resolved." : "Save decisions and exit?" }),
26177
+ /* @__PURE__ */ jsx45(Text37, { children: " " }),
26178
+ /* @__PURE__ */ jsx45(
26087
26179
  ControlHints,
26088
26180
  {
26089
26181
  hints: [
@@ -26507,11 +26599,11 @@ function useReviewSurfaceState(initialFinalizeError = null) {
26507
26599
  }
26508
26600
 
26509
26601
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDialogs.tsx
26510
- import { Box as Box36, Text as Text38 } from "ink";
26602
+ import { Box as Box37, Text as Text39 } from "ink";
26511
26603
 
26512
26604
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/QuitDialog.tsx
26513
- import { Box as Box35, Text as Text37 } from "ink";
26514
- import { Fragment as Fragment12, jsx as jsx45, jsxs as jsxs35 } from "react/jsx-runtime";
26605
+ import { Box as Box36, Text as Text38 } from "ink";
26606
+ import { Fragment as Fragment13, jsx as jsx46, jsxs as jsxs36 } from "react/jsx-runtime";
26515
26607
  function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
26516
26608
  useImmediateInput((input, key) => {
26517
26609
  if (input === "y" || key.return) {
@@ -26520,16 +26612,16 @@ function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
26520
26612
  onCancel();
26521
26613
  }
26522
26614
  });
26523
- return /* @__PURE__ */ jsxs35(Box35, { flexDirection: "column", borderStyle: "round", padding: 1, width: 50, children: [
26524
- /* @__PURE__ */ jsx45(Text37, { bold: true, children: "\u2500".repeat(19) + " Quit " + "\u2500".repeat(19) }),
26525
- /* @__PURE__ */ jsx45(Text37, { children: " " }),
26526
- hasUnsavedDrafts ? /* @__PURE__ */ jsxs35(Fragment12, { children: [
26527
- /* @__PURE__ */ jsx45(Text37, { children: "You have unsaved draft edits." }),
26528
- /* @__PURE__ */ jsx45(Text37, { children: "Session state is preserved \u2014 you can resume" }),
26529
- /* @__PURE__ */ jsx45(Text37, { children: "by running the same review command again." })
26530
- ] }) : /* @__PURE__ */ jsx45(Text37, { children: "Session is saved. Quit without finalizing?" }),
26531
- /* @__PURE__ */ jsx45(Text37, { children: " " }),
26532
- /* @__PURE__ */ jsx45(
26615
+ return /* @__PURE__ */ jsxs36(Box36, { flexDirection: "column", borderStyle: "round", padding: 1, width: 50, children: [
26616
+ /* @__PURE__ */ jsx46(Text38, { bold: true, children: "\u2500".repeat(19) + " Quit " + "\u2500".repeat(19) }),
26617
+ /* @__PURE__ */ jsx46(Text38, { children: " " }),
26618
+ hasUnsavedDrafts ? /* @__PURE__ */ jsxs36(Fragment13, { children: [
26619
+ /* @__PURE__ */ jsx46(Text38, { children: "You have unsaved draft edits." }),
26620
+ /* @__PURE__ */ jsx46(Text38, { children: "Session state is preserved \u2014 you can resume" }),
26621
+ /* @__PURE__ */ jsx46(Text38, { children: "by running the same review command again." })
26622
+ ] }) : /* @__PURE__ */ jsx46(Text38, { children: "Session is saved. Quit without finalizing?" }),
26623
+ /* @__PURE__ */ jsx46(Text38, { children: " " }),
26624
+ /* @__PURE__ */ jsx46(
26533
26625
  ControlHints,
26534
26626
  {
26535
26627
  hints: [
@@ -26542,7 +26634,7 @@ function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
26542
26634
  }
26543
26635
 
26544
26636
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDialogs.tsx
26545
- import { Fragment as Fragment13, jsx as jsx46, jsxs as jsxs36 } from "react/jsx-runtime";
26637
+ import { Fragment as Fragment14, jsx as jsx47, jsxs as jsxs37 } from "react/jsx-runtime";
26546
26638
  function ReviewFinalizeDialogs({
26547
26639
  showFinalize,
26548
26640
  showQuit,
@@ -26556,8 +26648,8 @@ function ReviewFinalizeDialogs({
26556
26648
  onQuitCancel
26557
26649
  }) {
26558
26650
  const { accepted, rejected, needsReview } = countReviewStatuses(components);
26559
- return /* @__PURE__ */ jsxs36(Fragment13, { children: [
26560
- showFinalize && /* @__PURE__ */ jsx46(
26651
+ return /* @__PURE__ */ jsxs37(Fragment14, { children: [
26652
+ showFinalize && /* @__PURE__ */ jsx47(
26561
26653
  FinalizeDialog,
26562
26654
  {
26563
26655
  accepted,
@@ -26570,7 +26662,7 @@ function ReviewFinalizeDialogs({
26570
26662
  onCancel: onFinalizeCancel
26571
26663
  }
26572
26664
  ),
26573
- showQuit && /* @__PURE__ */ jsx46(QuitDialog, { hasUnsavedDrafts: false, onConfirm: onQuitConfirm, onCancel: onQuitCancel })
26665
+ showQuit && /* @__PURE__ */ jsx47(QuitDialog, { hasUnsavedDrafts: false, onConfirm: onQuitConfirm, onCancel: onQuitCancel })
26574
26666
  ] });
26575
26667
  }
26576
26668
  function ReviewStepDialogs({
@@ -26580,7 +26672,7 @@ function ReviewStepDialogs({
26580
26672
  onFinalize,
26581
26673
  onQuit
26582
26674
  }) {
26583
- return /* @__PURE__ */ jsx46(
26675
+ return /* @__PURE__ */ jsx47(
26584
26676
  ReviewFinalizeDialogs,
26585
26677
  {
26586
26678
  showFinalize: surfaceState.showFinalize,
@@ -26598,12 +26690,12 @@ function ReviewStepDialogs({
26598
26690
  }
26599
26691
  function ReviewReloadDialog({ open }) {
26600
26692
  if (!open) return null;
26601
- return /* @__PURE__ */ jsxs36(Box36, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
26602
- /* @__PURE__ */ jsx46(Text38, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
26603
- /* @__PURE__ */ jsx46(Text38, { children: "Unsaved in-memory changes will be lost." }),
26604
- /* @__PURE__ */ jsx46(Text38, { children: " " }),
26605
- /* @__PURE__ */ jsx46(Text38, { children: " [Enter] Confirm" }),
26606
- /* @__PURE__ */ jsx46(Text38, { children: " [Esc] Cancel" })
26693
+ return /* @__PURE__ */ jsxs37(Box37, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
26694
+ /* @__PURE__ */ jsx47(Text39, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
26695
+ /* @__PURE__ */ jsx47(Text39, { children: "Unsaved in-memory changes will be lost." }),
26696
+ /* @__PURE__ */ jsx47(Text39, { children: " " }),
26697
+ /* @__PURE__ */ jsx47(Text39, { children: " [Enter] Confirm" }),
26698
+ /* @__PURE__ */ jsx47(Text39, { children: " [Esc] Cancel" })
26607
26699
  ] });
26608
26700
  }
26609
26701
 
@@ -27081,8 +27173,8 @@ function useReviewLog({
27081
27173
  }
27082
27174
 
27083
27175
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/LivePreviewSummary.tsx
27084
- import { Box as Box37, Text as Text39 } from "ink";
27085
- import { jsx as jsx47, jsxs as jsxs37 } from "react/jsx-runtime";
27176
+ import { Box as Box38, Text as Text40 } from "ink";
27177
+ import { jsx as jsx48, jsxs as jsxs38 } from "react/jsx-runtime";
27086
27178
  function LivePreviewSummary({
27087
27179
  enabled,
27088
27180
  previewAnnotations,
@@ -27096,24 +27188,24 @@ function LivePreviewSummary({
27096
27188
  const counts = { new: 0, changed: 0, removed: 0, breaking: 0 };
27097
27189
  for (const annotation of previewAnnotations.values()) counts[annotation] += 1;
27098
27190
  const hasCounts = counts.new + counts.changed + counts.removed + counts.breaking > 0;
27099
- if (disabled) return /* @__PURE__ */ jsx47(Text39, { color: PALETTE.muted, children: "Preview: disabled (creds rejected)" });
27100
- if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx47(Text39, { color: PALETTE.muted, children: `Preview: ${spinner} running...` });
27191
+ if (disabled) return /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: "Preview: disabled (creds rejected)" });
27192
+ if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: `Preview: ${spinner} running...` });
27101
27193
  if (!hasCounts) return null;
27102
- return /* @__PURE__ */ jsxs37(Box37, { children: [
27103
- /* @__PURE__ */ jsx47(Text39, { children: "Preview: " }),
27104
- /* @__PURE__ */ jsx47(Text39, { color: PALETTE.success, children: `${counts.new} new` }),
27105
- /* @__PURE__ */ jsx47(Text39, { children: " \xB7 " }),
27106
- /* @__PURE__ */ jsx47(Text39, { color: PALETTE.warning, children: `${counts.changed} changed` }),
27107
- /* @__PURE__ */ jsx47(Text39, { children: " \xB7 " }),
27108
- /* @__PURE__ */ jsx47(Text39, { color: PALETTE.muted, children: `${counts.removed} removed` }),
27109
- showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx47(Text39, { children: " ([d] removed list)" }),
27110
- /* @__PURE__ */ jsx47(Text39, { children: " \xB7 " }),
27111
- /* @__PURE__ */ jsx47(Text39, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
27194
+ return /* @__PURE__ */ jsxs38(Box38, { children: [
27195
+ /* @__PURE__ */ jsx48(Text40, { children: "Preview: " }),
27196
+ /* @__PURE__ */ jsx48(Text40, { color: PALETTE.success, children: `${counts.new} new` }),
27197
+ /* @__PURE__ */ jsx48(Text40, { children: " \xB7 " }),
27198
+ /* @__PURE__ */ jsx48(Text40, { color: PALETTE.warning, children: `${counts.changed} changed` }),
27199
+ /* @__PURE__ */ jsx48(Text40, { children: " \xB7 " }),
27200
+ /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: `${counts.removed} removed` }),
27201
+ showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx48(Text40, { children: " ([d] removed list)" }),
27202
+ /* @__PURE__ */ jsx48(Text40, { children: " \xB7 " }),
27203
+ /* @__PURE__ */ jsx48(Text40, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
27112
27204
  ] });
27113
27205
  }
27114
27206
 
27115
27207
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx
27116
- import { Fragment as Fragment14, jsx as jsx48, jsxs as jsxs38 } from "react/jsx-runtime";
27208
+ import { Fragment as Fragment15, jsx as jsx49, jsxs as jsxs39 } from "react/jsx-runtime";
27117
27209
  function sortComponentsForSidebar(components, cycleParticipants) {
27118
27210
  const isEmpty2 = (entry) => Object.keys(entry.$properties ?? {}).length === 0 && Object.keys(entry.$slots ?? {}).length === 0;
27119
27211
  const tier = (c2) => {
@@ -27154,10 +27246,10 @@ function CyclePathLine({
27154
27246
  highlightComponents = false,
27155
27247
  highlightLine = false
27156
27248
  }) {
27157
- return /* @__PURE__ */ jsxs38(Text40, { color: highlightLine ? PALETTE.warning : void 0, children: [
27249
+ return /* @__PURE__ */ jsxs39(Text41, { color: highlightLine ? PALETTE.warning : void 0, children: [
27158
27250
  prefix,
27159
27251
  segments.map(
27160
- (segment, index) => segment.kind === "slot" ? /* @__PURE__ */ jsx48(Text40, { color: PALETTE.accent, children: segment.text }, index) : segment.kind === "arrow" ? /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: segment.text }, index) : /* @__PURE__ */ jsx48(Text40, { color: highlightComponents ? PALETTE.warning : void 0, children: segment.text }, index)
27252
+ (segment, index) => segment.kind === "slot" ? /* @__PURE__ */ jsx49(Text41, { color: PALETTE.accent, children: segment.text }, index) : segment.kind === "arrow" ? /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: segment.text }, index) : /* @__PURE__ */ jsx49(Text41, { color: highlightComponents ? PALETTE.warning : void 0, children: segment.text }, index)
27161
27253
  )
27162
27254
  ] });
27163
27255
  }
@@ -27169,31 +27261,31 @@ function CycleDetailPanel({
27169
27261
  height
27170
27262
  }) {
27171
27263
  const lines = [
27172
- /* @__PURE__ */ jsx48(Text40, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${cycles.length})` }, "cyc-title"),
27173
- /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: "push will fail until these are resolved" }, "cyc-sub"),
27174
- /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: "Reject a cycle member or remove a slot edge to break the cycle." }, "cyc-guidance"),
27175
- /* @__PURE__ */ jsx48(Text40, { children: " " }, "cyc-space")
27264
+ /* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${cycles.length})` }, "cyc-title"),
27265
+ /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: "push will fail until these are resolved" }, "cyc-sub"),
27266
+ /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: "Reject a cycle member or remove a slot edge to break the cycle." }, "cyc-guidance"),
27267
+ /* @__PURE__ */ jsx49(Text41, { children: " " }, "cyc-space")
27176
27268
  ];
27177
27269
  cycles.forEach((cycle, index) => {
27178
27270
  const nodeCount = new Set(cycle.path).size;
27179
27271
  const isCursor = index === cursor;
27180
27272
  lines.push(
27181
- /* @__PURE__ */ jsx48(Text40, { bold: true, inverse: isCursor, children: `${isCursor ? figures8.pointer : " "} Cycle ${index + 1} (${nodeCount} component${nodeCount === 1 ? "" : "s"}):` }, `cyc-h-${index}`),
27182
- /* @__PURE__ */ jsx48(CyclePathLine, { segments: formatCyclePathSegments2(cycle, 16), prefix: " " }, `cyc-p-${index}`)
27273
+ /* @__PURE__ */ jsx49(Text41, { bold: true, inverse: isCursor, children: `${isCursor ? figures8.pointer : " "} Cycle ${index + 1} (${nodeCount} component${nodeCount === 1 ? "" : "s"}):` }, `cyc-h-${index}`),
27274
+ /* @__PURE__ */ jsx49(CyclePathLine, { segments: formatCyclePathSegments2(cycle, 16), prefix: " " }, `cyc-p-${index}`)
27183
27275
  );
27184
27276
  if (cycle.suggestedBreak) {
27185
27277
  lines.push(
27186
- /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: ` Suggested fix: remove [${cycle.suggestedBreak.slotName}] from ${cycle.suggestedBreak.fromComponent}` }, `cyc-fix-${index}`)
27278
+ /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: ` Suggested fix: remove [${cycle.suggestedBreak.slotName}] from ${cycle.suggestedBreak.fromComponent}` }, `cyc-fix-${index}`)
27187
27279
  );
27188
27280
  }
27189
- lines.push(/* @__PURE__ */ jsx48(Text40, { children: " " }, `cyc-s-${index}`));
27281
+ lines.push(/* @__PURE__ */ jsx49(Text41, { children: " " }, `cyc-s-${index}`));
27190
27282
  });
27191
27283
  const footer = "[\u2191\u2193] move [Enter] fix cycle [c/q/Esc] close";
27192
27284
  const viewportHeight = Math.max(1, height - 3);
27193
27285
  const visible = lines.slice(scrollOffset, scrollOffset + viewportHeight - 1);
27194
- return /* @__PURE__ */ jsxs38(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
27286
+ return /* @__PURE__ */ jsxs39(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
27195
27287
  visible,
27196
- /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: footer })
27288
+ /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: footer })
27197
27289
  ] });
27198
27290
  }
27199
27291
  function BreakCyclePanel({
@@ -27204,14 +27296,14 @@ function BreakCyclePanel({
27204
27296
  width,
27205
27297
  height
27206
27298
  }) {
27207
- return /* @__PURE__ */ jsxs38(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
27208
- /* @__PURE__ */ jsx48(Text40, { bold: true, color: PALETTE.warning, children: "BREAK CYCLE \u2014 remove a slot edge" }),
27209
- cycle && /* @__PURE__ */ jsx48(CyclePathLine, { segments: formatCyclePathSegments2(cycle), prefix: " ", highlightComponents: true }),
27210
- /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: cycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
27211
- /* @__PURE__ */ jsx48(Text40, { children: " " }),
27212
- edges.length > 0 && /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: "remove slot edge:" }),
27213
- edges.map((edge, index) => /* @__PURE__ */ jsx48(Text40, { inverse: index === cursor, children: `${index === cursor ? figures8.pointer : " "} remove '${edge.toComponent}' from ${edge.fromComponent}.$slots.${edge.slotName}.$allowedComponents` }, `${edge.fromComponent}-${edge.slotName}-${edge.toComponent}`)),
27214
- confirming ? /* @__PURE__ */ jsx48(Text40, { bold: true, color: PALETTE.warning, children: "Delete this slot edge? [y] confirm [n] cancel" }) : /* @__PURE__ */ jsx48(Text40, { children: "[\u2191\u2193] move [Enter] delete [x/Esc] close" })
27299
+ return /* @__PURE__ */ jsxs39(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
27300
+ /* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.warning, children: "BREAK CYCLE \u2014 remove a slot edge" }),
27301
+ cycle && /* @__PURE__ */ jsx49(CyclePathLine, { segments: formatCyclePathSegments2(cycle), prefix: " ", highlightComponents: true }),
27302
+ /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: cycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
27303
+ /* @__PURE__ */ jsx49(Text41, { children: " " }),
27304
+ edges.length > 0 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: "remove slot edge:" }),
27305
+ edges.map((edge, index) => /* @__PURE__ */ jsx49(Text41, { inverse: index === cursor, children: `${index === cursor ? figures8.pointer : " "} remove '${edge.toComponent}' from ${edge.fromComponent}.$slots.${edge.slotName}.$allowedComponents` }, `${edge.fromComponent}-${edge.slotName}-${edge.toComponent}`)),
27306
+ confirming ? /* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.warning, children: "Delete this slot edge? [y] confirm [n] cancel" }) : /* @__PURE__ */ jsx49(Text41, { children: "[\u2191\u2193] move [Enter] delete [x/Esc] close" })
27215
27307
  ] });
27216
27308
  }
27217
27309
  var HELP_SECTIONS2 = [
@@ -27317,9 +27409,9 @@ function deriveBreakingChanges(response) {
27317
27409
  }
27318
27410
  function GenerateReviewStep(props) {
27319
27411
  if (!props.extractSessionId) {
27320
- return /* @__PURE__ */ jsx48(Box38, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx48(Text40, { color: PALETTE.error, children: "Error: no session ID \u2014 cannot load generated definitions." }) });
27412
+ return /* @__PURE__ */ jsx49(Box39, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx49(Text41, { color: PALETTE.error, children: "Error: no session ID \u2014 cannot load generated definitions." }) });
27321
27413
  }
27322
- return /* @__PURE__ */ jsx48(GenerateReviewStepView, { ...props, extractSessionId: props.extractSessionId });
27414
+ return /* @__PURE__ */ jsx49(GenerateReviewStepView, { ...props, extractSessionId: props.extractSessionId });
27323
27415
  }
27324
27416
  function GenerateReviewStepView({
27325
27417
  extractSessionId,
@@ -28181,13 +28273,13 @@ function GenerateReviewStepView({
28181
28273
  }
28182
28274
  });
28183
28275
  if (loading) {
28184
- return /* @__PURE__ */ jsx48(ReviewLoadingState, {});
28276
+ return /* @__PURE__ */ jsx49(ReviewLoadingState, {});
28185
28277
  }
28186
28278
  if (loadError) {
28187
- return /* @__PURE__ */ jsx48(ReviewLoadError, { message: loadError });
28279
+ return /* @__PURE__ */ jsx49(ReviewLoadError, { message: loadError });
28188
28280
  }
28189
28281
  if (showHelp) {
28190
- return /* @__PURE__ */ jsx48(HelpOverlay, { sections: HELP_SECTIONS2, handleInput: false, onClose: () => setShowHelp(false) });
28282
+ return /* @__PURE__ */ jsx49(HelpOverlay, { sections: HELP_SECTIONS2, handleInput: false, onClose: () => setShowHelp(false) });
28191
28283
  }
28192
28284
  const { selected, selectedJson, visibleJsonPanelValue } = getReviewSelectionState(
28193
28285
  components,
@@ -28227,9 +28319,9 @@ function GenerateReviewStepView({
28227
28319
  for (const c2 of closures.values()) if (c2.nodes.length > 1) return true;
28228
28320
  return false;
28229
28321
  })();
28230
- return /* @__PURE__ */ jsxs38(Box38, { flexDirection: "column", children: [
28231
- /* @__PURE__ */ jsx48(StepHeader, { step: "review" }),
28232
- /* @__PURE__ */ jsx48(
28322
+ return /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", children: [
28323
+ /* @__PURE__ */ jsx49(StepHeader, { step: "review" }),
28324
+ /* @__PURE__ */ jsx49(
28233
28325
  ReviewStepDialogs,
28234
28326
  {
28235
28327
  surfaceState: reviewSurface,
@@ -28239,16 +28331,16 @@ function GenerateReviewStepView({
28239
28331
  onQuit
28240
28332
  }
28241
28333
  ),
28242
- /* @__PURE__ */ jsx48(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
28243
- removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs38(Box38, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
28244
- /* @__PURE__ */ jsx48(Text40, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
28245
- !removedBannerCollapsed && /* @__PURE__ */ jsxs38(Fragment14, { children: [
28246
- /* @__PURE__ */ jsx48(Text40, { children: " " }),
28247
- removedComponents.map((rc) => /* @__PURE__ */ jsx48(Text40, { children: removedComponentLine(rc) }, rc.id))
28334
+ /* @__PURE__ */ jsx49(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
28335
+ removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
28336
+ /* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
28337
+ !removedBannerCollapsed && /* @__PURE__ */ jsxs39(Fragment15, { children: [
28338
+ /* @__PURE__ */ jsx49(Text41, { children: " " }),
28339
+ removedComponents.map((rc) => /* @__PURE__ */ jsx49(Text41, { children: removedComponentLine(rc) }, rc.id))
28248
28340
  ] })
28249
28341
  ] }),
28250
- breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx48(Box38, { paddingX: 1, children: /* @__PURE__ */ jsx48(
28251
- Text40,
28342
+ breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx49(Box39, { paddingX: 1, children: /* @__PURE__ */ jsx49(
28343
+ Text41,
28252
28344
  {
28253
28345
  color: PALETTE.warning,
28254
28346
  children: `[b] ${breakingChanges.length} breaking change${breakingChanges.length === 1 ? "" : "s"}`
@@ -28258,14 +28350,14 @@ function GenerateReviewStepView({
28258
28350
  const row = breakingRows[breakingCursor];
28259
28351
  const comp = row ? breakingChanges.find((b) => b.componentName === row.componentName) : void 0;
28260
28352
  if (!comp) return null;
28261
- return /* @__PURE__ */ jsxs38(Box38, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
28262
- /* @__PURE__ */ jsx48(Text40, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
28263
- comp.impact && /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: ` affects ${comp.impact.affectedExperiences} experience${comp.impact.affectedExperiences === 1 ? "" : "s"}, ${comp.impact.affectedFragments} fragment${comp.impact.affectedFragments === 1 ? "" : "s"}` }),
28264
- comp.changes.length === 0 ? /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: " (no enumerated changes)" }) : comp.changes.map((change, ci) => /* @__PURE__ */ jsx48(Text40, { children: ` \u2022 ${formatBreakingChange(change, comp.current)}` }, `bd-detail-${ci}`)),
28265
- /* @__PURE__ */ jsx48(Text40, { children: "[D/Esc] close detail" })
28353
+ return /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
28354
+ /* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
28355
+ comp.impact && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: ` affects ${comp.impact.affectedExperiences} experience${comp.impact.affectedExperiences === 1 ? "" : "s"}, ${comp.impact.affectedFragments} fragment${comp.impact.affectedFragments === 1 ? "" : "s"}` }),
28356
+ comp.changes.length === 0 ? /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: " (no enumerated changes)" }) : comp.changes.map((change, ci) => /* @__PURE__ */ jsx49(Text41, { children: ` \u2022 ${formatBreakingChange(change, comp.current)}` }, `bd-detail-${ci}`)),
28357
+ /* @__PURE__ */ jsx49(Text41, { children: "[D/Esc] close detail" })
28266
28358
  ] });
28267
28359
  })(),
28268
- !dialogOpen && /* @__PURE__ */ jsx48(
28360
+ !dialogOpen && /* @__PURE__ */ jsx49(
28269
28361
  LivePreviewSummary,
28270
28362
  {
28271
28363
  enabled: livePreview,
@@ -28284,16 +28376,16 @@ function GenerateReviewStepView({
28284
28376
  const participantSet = cycleView.structural;
28285
28377
  const members = stillRejected.filter((n) => participantSet.has(n)).sort();
28286
28378
  const ancestors = stillRejected.filter((n) => !participantSet.has(n)).sort();
28287
- return /* @__PURE__ */ jsxs38(Box38, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
28288
- /* @__PURE__ */ jsx48(Text40, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
28289
- members.length > 0 && /* @__PURE__ */ jsx48(Text40, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
28290
- ancestors.length > 0 && /* @__PURE__ */ jsx48(Text40, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
28291
- /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: undoSnapshot ? " [Ctrl+Z] undo \xB7 [r]/[a] manually toggle \xB7 [F] continue" : " [r]/[a] manually toggle \xB7 [F] continue" })
28379
+ return /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
28380
+ /* @__PURE__ */ jsx49(Text41, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
28381
+ members.length > 0 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
28382
+ ancestors.length > 0 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
28383
+ /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: undoSnapshot ? " [Ctrl+Z] undo \xB7 [r]/[a] manually toggle \xB7 [F] continue" : " [r]/[a] manually toggle \xB7 [F] continue" })
28292
28384
  ] });
28293
28385
  })(),
28294
- /* @__PURE__ */ jsx48(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
28295
- /* @__PURE__ */ jsx48(ReviewFinalizeError, { message: finalizeError, hidden: dialogOpen }),
28296
- !dialogOpen && breakPanel.isOpen && /* @__PURE__ */ jsx48(
28386
+ /* @__PURE__ */ jsx49(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
28387
+ /* @__PURE__ */ jsx49(ReviewFinalizeError, { message: finalizeError, hidden: dialogOpen }),
28388
+ !dialogOpen && breakPanel.isOpen && /* @__PURE__ */ jsx49(
28297
28389
  BreakCyclePanel,
28298
28390
  {
28299
28391
  cycle: cycleRows[cyclesCursor],
@@ -28304,7 +28396,7 @@ function GenerateReviewStepView({
28304
28396
  height: panelHeight
28305
28397
  }
28306
28398
  ),
28307
- !dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsx48(
28399
+ !dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsx49(
28308
28400
  CycleDetailPanel,
28309
28401
  {
28310
28402
  cycles: cycleRows,
@@ -28314,8 +28406,8 @@ function GenerateReviewStepView({
28314
28406
  height: panelHeight
28315
28407
  }
28316
28408
  ),
28317
- !dialogOpen && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs38(Box38, { children: [
28318
- breakingPanel.isOpen ? /* @__PURE__ */ jsx48(
28409
+ !dialogOpen && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs39(Box39, { children: [
28410
+ breakingPanel.isOpen ? /* @__PURE__ */ jsx49(
28319
28411
  GotoBanner,
28320
28412
  {
28321
28413
  title: `Breaking changes \u2014 ${breakingRows[breakingCursor]?.componentName ?? "unknown component"}`,
@@ -28328,7 +28420,7 @@ function GenerateReviewStepView({
28328
28420
  width: sidebarWidth,
28329
28421
  footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [D] detail \xB7 [Esc] close"
28330
28422
  }
28331
- ) : /* @__PURE__ */ jsx48(
28423
+ ) : /* @__PURE__ */ jsx49(
28332
28424
  GroupedSidebar,
28333
28425
  {
28334
28426
  items: groupedItems,
@@ -28369,7 +28461,7 @@ function GenerateReviewStepView({
28369
28461
  graph: sidebarGraph
28370
28462
  }
28371
28463
  ),
28372
- selected ? /* @__PURE__ */ jsx48(
28464
+ selected ? /* @__PURE__ */ jsx49(
28373
28465
  ReviewComponentPanel,
28374
28466
  {
28375
28467
  selectedKey: selected.key,
@@ -28399,12 +28491,12 @@ function GenerateReviewStepView({
28399
28491
  ),
28400
28492
  saveError: reviewEditor.saveError
28401
28493
  }
28402
- ) : /* @__PURE__ */ jsx48(ReviewNoSelection, {})
28494
+ ) : /* @__PURE__ */ jsx49(ReviewNoSelection, {})
28403
28495
  ] }),
28404
- !dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs38(Box38, { flexDirection: "column", children: [
28405
- /* @__PURE__ */ jsx48(Text40, { color: PALETTE.warning, children: `\u26A0 ${cycleRows.length} slot dependency cycle${cycleRows.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
28496
+ !dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", children: [
28497
+ /* @__PURE__ */ jsx49(Text41, { color: PALETTE.warning, children: `\u26A0 ${cycleRows.length} slot dependency cycle${cycleRows.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
28406
28498
  cycleRows.slice(0, 3).map((cycle, idx) => {
28407
- return /* @__PURE__ */ jsx48(
28499
+ return /* @__PURE__ */ jsx49(
28408
28500
  CyclePathLine,
28409
28501
  {
28410
28502
  segments: formatCyclePathSegments2(cycle),
@@ -28415,10 +28507,10 @@ function GenerateReviewStepView({
28415
28507
  `cyc-banner-${idx}`
28416
28508
  );
28417
28509
  }),
28418
- cycleRows.length > 3 && /* @__PURE__ */ jsx48(Text40, { color: PALETTE.warning, children: ` \u2026${cycleRows.length - 3} more` }),
28419
- /* @__PURE__ */ jsx48(Text40, { children: " press [c] for detail" })
28510
+ cycleRows.length > 3 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.warning, children: ` \u2026${cycleRows.length - 3} more` }),
28511
+ /* @__PURE__ */ jsx49(Text41, { children: " press [c] for detail" })
28420
28512
  ] }),
28421
- /* @__PURE__ */ jsx48(
28513
+ /* @__PURE__ */ jsx49(
28422
28514
  SearchMatchSummary,
28423
28515
  {
28424
28516
  open: searchOpen,
@@ -28429,27 +28521,27 @@ function GenerateReviewStepView({
28429
28521
  hidden: dialogOpen
28430
28522
  }
28431
28523
  ),
28432
- !dialogOpen && sidebarFocused && reviewEditor.panelOpen !== "token-review" && /* @__PURE__ */ jsx48(CompactControlBar, { hasGroupRoots, searchActive: searchOpen || searchQuery.length > 0 })
28524
+ !dialogOpen && sidebarFocused && reviewEditor.panelOpen !== "token-review" && /* @__PURE__ */ jsx49(CompactControlBar, { hasGroupRoots, searchActive: searchOpen || searchQuery.length > 0 })
28433
28525
  ] });
28434
28526
  }
28435
28527
 
28436
28528
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/CustomPromptBanner.tsx
28437
- import { Box as Box39, Text as Text41 } from "ink";
28438
- import { jsx as jsx49, jsxs as jsxs39 } from "react/jsx-runtime";
28529
+ import { Box as Box40, Text as Text42 } from "ink";
28530
+ import { jsx as jsx50, jsxs as jsxs40 } from "react/jsx-runtime";
28439
28531
  function CustomPromptBanner({ generatePromptPath }) {
28440
28532
  if (!generatePromptPath) return null;
28441
- return /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
28442
- /* @__PURE__ */ jsx49(Text41, { color: PALETTE.warning, bold: true, children: "WARNING: Custom prompt active" }),
28443
- generatePromptPath ? /* @__PURE__ */ jsxs39(Text41, { color: PALETTE.warning, children: [
28533
+ return /* @__PURE__ */ jsxs40(Box40, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
28534
+ /* @__PURE__ */ jsx50(Text42, { color: PALETTE.warning, bold: true, children: "WARNING: Custom prompt active" }),
28535
+ generatePromptPath ? /* @__PURE__ */ jsxs40(Text42, { color: PALETTE.warning, children: [
28444
28536
  "components: ",
28445
28537
  generatePromptPath
28446
28538
  ] }) : null,
28447
- /* @__PURE__ */ jsx49(Text41, { color: PALETTE.warning, children: "Bundled invariants (utility-wrapper rejection, description content rules) do NOT apply." })
28539
+ /* @__PURE__ */ jsx50(Text42, { color: PALETTE.warning, children: "Bundled invariants (utility-wrapper rejection, description content rules) do NOT apply." })
28448
28540
  ] });
28449
28541
  }
28450
28542
 
28451
28543
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/DoneStep.tsx
28452
- import { Box as Box41, Text as Text43 } from "ink";
28544
+ import { Box as Box42, Text as Text44 } from "ink";
28453
28545
 
28454
28546
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/contentful-urls.ts
28455
28547
  function normalizeHost(host) {
@@ -28465,32 +28557,32 @@ function buildPostPushUrl2({ host, spaceId, environmentId, view = "components" }
28465
28557
  }
28466
28558
 
28467
28559
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/SpaceEnvironment.tsx
28468
- import { Box as Box40, Text as Text42 } from "ink";
28469
- import { jsx as jsx50, jsxs as jsxs40 } from "react/jsx-runtime";
28560
+ import { Box as Box41, Text as Text43 } from "ink";
28561
+ import { jsx as jsx51, jsxs as jsxs41 } from "react/jsx-runtime";
28470
28562
  function SpaceEnvironment({ spaceId, environmentId }) {
28471
- return /* @__PURE__ */ jsxs40(Box40, { gap: 1, marginTop: 1, children: [
28472
- /* @__PURE__ */ jsx50(Text42, { color: PALETTE.muted, children: "Space:" }),
28473
- /* @__PURE__ */ jsx50(Text42, { children: spaceId }),
28474
- /* @__PURE__ */ jsx50(Text42, { color: PALETTE.muted, children: "/" }),
28475
- /* @__PURE__ */ jsx50(Text42, { color: PALETTE.muted, children: "Environment:" }),
28476
- /* @__PURE__ */ jsx50(Text42, { children: environmentId })
28563
+ return /* @__PURE__ */ jsxs41(Box41, { gap: 1, marginTop: 1, children: [
28564
+ /* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: "Space:" }),
28565
+ /* @__PURE__ */ jsx51(Text43, { children: spaceId }),
28566
+ /* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: "/" }),
28567
+ /* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: "Environment:" }),
28568
+ /* @__PURE__ */ jsx51(Text43, { children: environmentId })
28477
28569
  ] });
28478
28570
  }
28479
28571
 
28480
28572
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/DoneStep.tsx
28481
- import { Fragment as Fragment15, jsx as jsx51, jsxs as jsxs41 } from "react/jsx-runtime";
28573
+ import { Fragment as Fragment16, jsx as jsx52, jsxs as jsxs42 } from "react/jsx-runtime";
28482
28574
  var ACTIONS = ["created", "updated", "removed"];
28483
28575
  function EntityRows({ entity, label }) {
28484
28576
  const plural3 = (n) => `${n} ${label}${n !== 1 ? "s" : ""}`;
28485
- return /* @__PURE__ */ jsxs41(Fragment15, { children: [
28486
- ACTIONS.filter((action) => entity[action] > 0).map((action) => /* @__PURE__ */ jsxs41(Text43, { children: [
28487
- /* @__PURE__ */ jsx51(Text43, { color: PALETTE.success, children: "\u2713" }),
28577
+ return /* @__PURE__ */ jsxs42(Fragment16, { children: [
28578
+ ACTIONS.filter((action) => entity[action] > 0).map((action) => /* @__PURE__ */ jsxs42(Text44, { children: [
28579
+ /* @__PURE__ */ jsx52(Text44, { color: PALETTE.success, children: "\u2713" }),
28488
28580
  " ",
28489
28581
  plural3(entity[action]),
28490
28582
  " ",
28491
28583
  action
28492
28584
  ] }, action)),
28493
- entity.failed > 0 && /* @__PURE__ */ jsxs41(Text43, { color: PALETTE.error, children: [
28585
+ entity.failed > 0 && /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.error, children: [
28494
28586
  "\u2717 ",
28495
28587
  plural3(entity.failed),
28496
28588
  " failed \u2014 check logs above"
@@ -28498,9 +28590,9 @@ function EntityRows({ entity, label }) {
28498
28590
  ] });
28499
28591
  }
28500
28592
  function LinkRow({ title, url }) {
28501
- return /* @__PURE__ */ jsxs41(Box41, { flexDirection: "column", children: [
28502
- /* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: title }),
28503
- /* @__PURE__ */ jsx51(Text43, { color: PALETTE.accent, children: url })
28593
+ return /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
28594
+ /* @__PURE__ */ jsx52(Text44, { color: PALETTE.muted, children: title }),
28595
+ /* @__PURE__ */ jsx52(Text44, { color: PALETTE.accent, children: url })
28504
28596
  ] });
28505
28597
  }
28506
28598
  function DoneStep({
@@ -28524,29 +28616,29 @@ function DoneStep({
28524
28616
  const totalPushed = componentTypes.created + componentTypes.updated + componentTypes.removed + designTokens.created + designTokens.updated + designTokens.removed;
28525
28617
  const success = totalFailed === 0;
28526
28618
  const urlArgs = { host: host ?? "api.contentful.com", spaceId, environmentId };
28527
- return /* @__PURE__ */ jsxs41(Box41, { flexDirection: "column", children: [
28528
- /* @__PURE__ */ jsx51(StepHeader, { step: "done" }),
28529
- /* @__PURE__ */ jsxs41(Box41, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
28530
- success ? /* @__PURE__ */ jsx51(Text43, { bold: true, color: PALETTE.success, children: "Done!" }) : /* @__PURE__ */ jsx51(Text43, { bold: true, color: PALETTE.warning, children: "\u26A0 Finished with errors" }),
28531
- totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: credentialsSkipped ? "Nothing was pushed \u2014 you skipped the Contentful credentials, so the files were only saved locally." : "Nothing was pushed \u2014 everything was already up to date." }) : /* @__PURE__ */ jsxs41(Box41, { flexDirection: "column", children: [
28532
- /* @__PURE__ */ jsx51(EntityRows, { entity: componentTypes, label: "Component" }),
28533
- /* @__PURE__ */ jsx51(EntityRows, { entity: designTokens, label: "Design Token" }),
28534
- summary && /* @__PURE__ */ jsx51(Box41, { marginTop: 1, children: /* @__PURE__ */ jsxs41(Text43, { color: PALETTE.muted, children: [
28619
+ return /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
28620
+ /* @__PURE__ */ jsx52(StepHeader, { step: "done" }),
28621
+ /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
28622
+ success ? /* @__PURE__ */ jsx52(Text44, { bold: true, color: PALETTE.success, children: "Done!" }) : /* @__PURE__ */ jsx52(Text44, { bold: true, color: PALETTE.warning, children: "\u26A0 Finished with errors" }),
28623
+ totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */ jsx52(Text44, { color: PALETTE.muted, children: credentialsSkipped ? "Nothing was pushed \u2014 you skipped the Contentful credentials, so the files were only saved locally." : "Nothing was pushed \u2014 everything was already up to date." }) : /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
28624
+ /* @__PURE__ */ jsx52(EntityRows, { entity: componentTypes, label: "Component" }),
28625
+ /* @__PURE__ */ jsx52(EntityRows, { entity: designTokens, label: "Design Token" }),
28626
+ summary && /* @__PURE__ */ jsx52(Box42, { marginTop: 1, children: /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.muted, children: [
28535
28627
  "Push result: ",
28536
28628
  summary.succeeded,
28537
28629
  "/",
28538
28630
  summary.total,
28539
28631
  " succeeded",
28540
- summary.failed > 0 && /* @__PURE__ */ jsxs41(Text43, { color: PALETTE.error, children: [
28632
+ summary.failed > 0 && /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.error, children: [
28541
28633
  ", ",
28542
28634
  summary.failed,
28543
28635
  " failed"
28544
28636
  ] })
28545
28637
  ] }) })
28546
28638
  ] }),
28547
- failures.length > 0 && /* @__PURE__ */ jsxs41(Box41, { flexDirection: "column", children: [
28548
- /* @__PURE__ */ jsx51(Text43, { bold: true, color: PALETTE.error, children: "Failure details" }),
28549
- failures.map((failure) => /* @__PURE__ */ jsxs41(Text43, { color: PALETTE.error, children: [
28639
+ failures.length > 0 && /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
28640
+ /* @__PURE__ */ jsx52(Text44, { bold: true, color: PALETTE.error, children: "Failure details" }),
28641
+ failures.map((failure) => /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.error, children: [
28550
28642
  failure.entityType,
28551
28643
  " ",
28552
28644
  failure.entityId,
@@ -28554,11 +28646,11 @@ function DoneStep({
28554
28646
  failure.message
28555
28647
  ] }, `${failure.entityType}:${failure.entityId}`))
28556
28648
  ] }),
28557
- /* @__PURE__ */ jsx51(SpaceEnvironment, { spaceId, environmentId }),
28558
- success && totalPushed > 0 && /* @__PURE__ */ jsxs41(Box41, { flexDirection: "column", gap: 1, children: [
28559
- /* @__PURE__ */ jsx51(Text43, { color: PALETTE.success, children: "Your design system is now in Contentful Experiences." }),
28560
- produced.components && /* @__PURE__ */ jsx51(LinkRow, { title: "View your components here:", url: buildPostPushUrl2(urlArgs) }),
28561
- produced.tokens && /* @__PURE__ */ jsx51(
28649
+ /* @__PURE__ */ jsx52(SpaceEnvironment, { spaceId, environmentId }),
28650
+ success && totalPushed > 0 && /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", gap: 1, children: [
28651
+ /* @__PURE__ */ jsx52(Text44, { color: PALETTE.success, children: "Your design system is now in Contentful Experiences." }),
28652
+ produced.components && /* @__PURE__ */ jsx52(LinkRow, { title: "View your components here:", url: buildPostPushUrl2(urlArgs) }),
28653
+ produced.tokens && /* @__PURE__ */ jsx52(
28562
28654
  LinkRow,
28563
28655
  {
28564
28656
  title: "View your design tokens here:",
@@ -28566,14 +28658,14 @@ function DoneStep({
28566
28658
  }
28567
28659
  )
28568
28660
  ] }),
28569
- /* @__PURE__ */ jsx51(ControlHints, { hints: [{ keys: "Enter / q", label: "Exit" }] })
28661
+ /* @__PURE__ */ jsx52(ControlHints, { hints: [{ keys: "Enter / q", label: "Exit" }] })
28570
28662
  ] })
28571
28663
  ] });
28572
28664
  }
28573
28665
 
28574
28666
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PathPrompt.tsx
28575
28667
  import { useState as useState28 } from "react";
28576
- import { Box as Box42, Text as Text44 } from "ink";
28668
+ import { Box as Box43, Text as Text45 } from "ink";
28577
28669
  import { readdirSync as readdirSync4 } from "node:fs";
28578
28670
  import { dirname as dirname17, basename as basename6, join as join22 } from "node:path";
28579
28671
 
@@ -28607,7 +28699,7 @@ function useBlinkingCursor() {
28607
28699
  }
28608
28700
 
28609
28701
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PathPrompt.tsx
28610
- import { jsx as jsx52, jsxs as jsxs42 } from "react/jsx-runtime";
28702
+ import { jsx as jsx53, jsxs as jsxs43 } from "react/jsx-runtime";
28611
28703
  function autocomplete(partial) {
28612
28704
  if (!partial) return null;
28613
28705
  const normalized = normalizePath(partial);
@@ -28665,20 +28757,20 @@ function PathPrompt({
28665
28757
  const shown = input || defaultPath;
28666
28758
  const isPlaceholder = input === "";
28667
28759
  const cursor = cursorVisible ? "\u2588" : " ";
28668
- return /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
28669
- /* @__PURE__ */ jsx52(StepHeader, { step: "push" }),
28670
- /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
28671
- summary && /* @__PURE__ */ jsx52(Text44, { color: PALETTE.muted, children: summary }),
28672
- /* @__PURE__ */ jsxs42(Box42, { gap: 1, children: [
28673
- /* @__PURE__ */ jsx52(Text44, { color: PALETTE.accent, children: "?" }),
28674
- /* @__PURE__ */ jsxs42(Text44, { bold: true, children: [
28760
+ return /* @__PURE__ */ jsxs43(Box43, { flexDirection: "column", children: [
28761
+ /* @__PURE__ */ jsx53(StepHeader, { step: "push" }),
28762
+ /* @__PURE__ */ jsxs43(Box43, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
28763
+ summary && /* @__PURE__ */ jsx53(Text45, { color: PALETTE.muted, children: summary }),
28764
+ /* @__PURE__ */ jsxs43(Box43, { gap: 1, children: [
28765
+ /* @__PURE__ */ jsx53(Text45, { color: PALETTE.accent, children: "?" }),
28766
+ /* @__PURE__ */ jsxs43(Text45, { bold: true, children: [
28675
28767
  label,
28676
28768
  ":"
28677
28769
  ] }),
28678
- /* @__PURE__ */ jsx52(Text44, { color: isPlaceholder ? PALETTE.muted : void 0, children: shown }),
28679
- /* @__PURE__ */ jsx52(Text44, { children: cursor })
28770
+ /* @__PURE__ */ jsx53(Text45, { color: isPlaceholder ? PALETTE.muted : void 0, children: shown }),
28771
+ /* @__PURE__ */ jsx53(Text45, { children: cursor })
28680
28772
  ] }),
28681
- /* @__PURE__ */ jsx52(
28773
+ /* @__PURE__ */ jsx53(
28682
28774
  ControlHints,
28683
28775
  {
28684
28776
  hints: [
@@ -28693,7 +28785,7 @@ function PathPrompt({
28693
28785
  }
28694
28786
 
28695
28787
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PushingStep.tsx
28696
- import { Box as Box43, Text as Text45 } from "ink";
28788
+ import { Box as Box44, Text as Text46 } from "ink";
28697
28789
  import { ProgressBar as ProgressBar2, ThemeProvider as ThemeProvider2 } from "@inkjs/ui";
28698
28790
 
28699
28791
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/produced.ts
@@ -28716,8 +28808,8 @@ function countedThings({ components, tokens }, counts = {}) {
28716
28808
 
28717
28809
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/use-timed-spinner.tsx
28718
28810
  import { useEffect as useEffect26, useState as useState29 } from "react";
28719
- import { Spinner as Spinner2 } from "@inkjs/ui";
28720
- import { jsx as jsx53 } from "react/jsx-runtime";
28811
+ import { Spinner as Spinner3 } from "@inkjs/ui";
28812
+ import { jsx as jsx54 } from "react/jsx-runtime";
28721
28813
  function useTimedSpinner() {
28722
28814
  const [elapsedSeconds, setElapsedSeconds] = useState29(0);
28723
28815
  useEffect26(() => {
@@ -28729,61 +28821,62 @@ function useTimedSpinner() {
28729
28821
  const mins = Math.floor(elapsedSeconds / 60);
28730
28822
  const secs = elapsedSeconds % 60;
28731
28823
  return {
28732
- spinner: /* @__PURE__ */ jsx53(Spinner2, {}),
28824
+ spinner: /* @__PURE__ */ jsx54(Spinner3, {}),
28733
28825
  elapsed: mins > 0 ? `${mins}m ${secs}s` : `${secs}s`
28734
28826
  };
28735
28827
  }
28736
28828
 
28737
28829
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PushingStep.tsx
28738
- import { jsx as jsx54, jsxs as jsxs43 } from "react/jsx-runtime";
28830
+ import { jsx as jsx55, jsxs as jsxs44 } from "react/jsx-runtime";
28739
28831
  function PushingStep({ progress, produced, counts }) {
28740
28832
  const { spinner, elapsed } = useTimedSpinner();
28741
28833
  const operationId = progress && progress.kind === "queued" ? progress.operationId : null;
28742
28834
  const showGlobal = progress && progress.kind === "progress";
28743
28835
  const showCurrent = progress && progress.kind === "progress" && progress.current ? progress.current : null;
28744
- return /* @__PURE__ */ jsxs43(Box43, { flexDirection: "column", children: [
28745
- /* @__PURE__ */ jsx54(StepHeader, { step: "push" }),
28746
- /* @__PURE__ */ jsxs43(Box43, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
28747
- /* @__PURE__ */ jsxs43(Box43, { gap: 1, children: [
28836
+ const items = progress && progress.kind === "progress" ? progress.items : [];
28837
+ return /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", children: [
28838
+ /* @__PURE__ */ jsx55(StepHeader, { step: "push" }),
28839
+ /* @__PURE__ */ jsx55(AsideLayout, { aside: items.length > 0 ? /* @__PURE__ */ jsx55(ActivityPanel, { title: "Entities", items }) : void 0, children: /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
28840
+ /* @__PURE__ */ jsxs44(Box44, { gap: 1, children: [
28748
28841
  spinner,
28749
- /* @__PURE__ */ jsxs43(Text45, { children: [
28842
+ /* @__PURE__ */ jsxs44(Text46, { children: [
28750
28843
  "Writing ",
28751
28844
  countedThings(produced, counts),
28752
28845
  " to your Contentful space..."
28753
28846
  ] })
28754
28847
  ] }),
28755
- operationId && /* @__PURE__ */ jsxs43(Box43, { gap: 1, children: [
28756
- /* @__PURE__ */ jsx54(Text45, { color: PALETTE.muted, children: "Operation:" }),
28757
- /* @__PURE__ */ jsx54(Text45, { children: operationId })
28848
+ operationId && /* @__PURE__ */ jsxs44(Box44, { gap: 1, children: [
28849
+ /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: "Operation:" }),
28850
+ /* @__PURE__ */ jsx55(Text46, { children: operationId })
28758
28851
  ] }),
28759
- showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */ jsx54(Box43, { gap: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs43(Box43, { gap: 2, children: [
28760
- /* @__PURE__ */ jsx54(Box43, { width: 40, children: /* @__PURE__ */ jsx54(ThemeProvider2, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx54(ProgressBar2, { value: Math.round(progress.processed / progress.total * 100) }) }) }),
28761
- /* @__PURE__ */ jsxs43(Text45, { color: PALETTE.muted, children: [
28852
+ showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */ jsx55(Box44, { gap: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs44(Box44, { gap: 2, children: [
28853
+ /* @__PURE__ */ jsx55(Box44, { width: 40, children: /* @__PURE__ */ jsx55(ThemeProvider2, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx55(ProgressBar2, { value: Math.round(progress.processed / progress.total * 100) }) }) }),
28854
+ /* @__PURE__ */ jsxs44(Text46, { color: PALETTE.muted, children: [
28762
28855
  progress.processed,
28763
28856
  "/",
28764
28857
  progress.total,
28765
28858
  " entities"
28766
28859
  ] }),
28767
- progress.failed > 0 && /* @__PURE__ */ jsxs43(Text45, { color: PALETTE.error, children: [
28860
+ progress.failed > 0 && /* @__PURE__ */ jsxs44(Text46, { color: PALETTE.error, children: [
28768
28861
  progress.failed,
28769
28862
  " failed"
28770
28863
  ] })
28771
28864
  ] }) }),
28772
- showCurrent && /* @__PURE__ */ jsxs43(Box43, { gap: 1, children: [
28773
- /* @__PURE__ */ jsx54(Text45, { color: PALETTE.muted, children: "Now processing:" }),
28774
- /* @__PURE__ */ jsx54(Text45, { children: showCurrent })
28865
+ showCurrent && /* @__PURE__ */ jsxs44(Box44, { gap: 1, children: [
28866
+ /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: "Now processing:" }),
28867
+ /* @__PURE__ */ jsx55(Text46, { children: showCurrent })
28775
28868
  ] }),
28776
- /* @__PURE__ */ jsx54(Box43, { marginTop: 1, children: /* @__PURE__ */ jsxs43(Text45, { color: PALETTE.muted, children: [
28869
+ /* @__PURE__ */ jsx55(Box44, { marginTop: 1, children: /* @__PURE__ */ jsxs44(Text46, { color: PALETTE.muted, children: [
28777
28870
  "Elapsed: ",
28778
28871
  elapsed
28779
28872
  ] }) })
28780
- ] })
28873
+ ] }) })
28781
28874
  ] });
28782
28875
  }
28783
28876
 
28784
28877
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/WizardPreviewStep.tsx
28785
28878
  import { useEffect as useEffect27, useState as useState30, useMemo as useMemo7 } from "react";
28786
- import { Box as Box44, Text as Text46 } from "ink";
28879
+ import { Box as Box45, Text as Text47 } from "ink";
28787
28880
 
28788
28881
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/preview-diff.ts
28789
28882
  function computeComponentDiffLines(current, proposed, changeClassification) {
@@ -28969,7 +29062,7 @@ function usePreviewConfirmationInput(breakingWithImpact, onConfirm) {
28969
29062
  }
28970
29063
 
28971
29064
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/WizardPreviewStep.tsx
28972
- import { Fragment as Fragment16, jsx as jsx55, jsxs as jsxs44 } from "react/jsx-runtime";
29065
+ import { Fragment as Fragment17, jsx as jsx56, jsxs as jsxs45 } from "react/jsx-runtime";
28973
29066
  function buildPreviewSummaryLines(preview) {
28974
29067
  const lines = [];
28975
29068
  const { components, tokens } = preview;
@@ -29221,12 +29314,12 @@ function WizardPreviewStep({
29221
29314
  return;
29222
29315
  }
29223
29316
  });
29224
- return /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", children: [
29225
- /* @__PURE__ */ jsx55(StepHeader, { step: "push" }),
29226
- /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 2, children: [
29227
- hasAnything ? /* @__PURE__ */ jsxs44(Fragment16, { children: [
29228
- /* @__PURE__ */ jsx55(Text46, { children: "Here's what will happen in your space:" }),
29229
- /* @__PURE__ */ jsxs44(
29317
+ return /* @__PURE__ */ jsxs45(Box45, { flexDirection: "column", children: [
29318
+ /* @__PURE__ */ jsx56(StepHeader, { step: "push" }),
29319
+ /* @__PURE__ */ jsxs45(Box45, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 2, children: [
29320
+ hasAnything ? /* @__PURE__ */ jsxs45(Fragment17, { children: [
29321
+ /* @__PURE__ */ jsx56(Text47, { children: "Here's what will happen in your space:" }),
29322
+ /* @__PURE__ */ jsxs45(
29230
29323
  WindowedPanel,
29231
29324
  {
29232
29325
  width: Math.max(20, terminalColumns - 4),
@@ -29234,15 +29327,15 @@ function WizardPreviewStep({
29234
29327
  title: diffExpanded ? `Diff (${diffLines.length} lines)` : "",
29235
29328
  focused: false,
29236
29329
  children: [
29237
- activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */ jsx55(Text46, { color: line.color, wrap: "truncate-end", children: line.text }, line.key)),
29238
- /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, wrap: "truncate-end", children: formatPreviewScrollIndicator(activeLines.length, boundedScrollOffset, viewportHeight) })
29330
+ activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */ jsx56(Text47, { color: line.color, wrap: "truncate-end", children: line.text }, line.key)),
29331
+ /* @__PURE__ */ jsx56(Text47, { color: PALETTE.muted, wrap: "truncate-end", children: formatPreviewScrollIndicator(activeLines.length, boundedScrollOffset, viewportHeight) })
29239
29332
  ]
29240
29333
  }
29241
29334
  )
29242
- ] }) : /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: "Nothing to push \u2014 everything is already up to date." }),
29243
- breakingWithImpact && /* @__PURE__ */ jsx55(Box44, { marginTop: 1, children: /* @__PURE__ */ jsx55(Text46, { color: PALETTE.error, bold: true, children: "\u26A0 Breaking changes will affect downstream entities. Press Enter to acknowledge and apply." }) }),
29244
- /* @__PURE__ */ jsx55(SpaceEnvironment, { spaceId, environmentId }),
29245
- /* @__PURE__ */ jsx55(Box44, { marginTop: 1, children: /* @__PURE__ */ jsx55(
29335
+ ] }) : /* @__PURE__ */ jsx56(Text47, { color: PALETTE.muted, children: "Nothing to push \u2014 everything is already up to date." }),
29336
+ breakingWithImpact && /* @__PURE__ */ jsx56(Box45, { marginTop: 1, children: /* @__PURE__ */ jsx56(Text47, { color: PALETTE.error, bold: true, children: "\u26A0 Breaking changes will affect downstream entities. Press Enter to acknowledge and apply." }) }),
29337
+ /* @__PURE__ */ jsx56(SpaceEnvironment, { spaceId, environmentId }),
29338
+ /* @__PURE__ */ jsx56(Box45, { marginTop: 1, children: /* @__PURE__ */ jsx56(
29246
29339
  ControlHints,
29247
29340
  {
29248
29341
  hints: [
@@ -29458,7 +29551,7 @@ function useFlowLog(state2) {
29458
29551
  }
29459
29552
 
29460
29553
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/screen.tsx
29461
- import { jsx as jsx56, jsxs as jsxs45 } from "react/jsx-runtime";
29554
+ import { jsx as jsx57, jsxs as jsxs46 } from "react/jsx-runtime";
29462
29555
  function canEditFromPreview(cdf) {
29463
29556
  if (!cdf) return false;
29464
29557
  return parseCDFComponents(cdf).components.length > 0;
@@ -29478,7 +29571,7 @@ function FlowScreen({
29478
29571
  const content = (() => {
29479
29572
  switch (state2.step) {
29480
29573
  case "final-review":
29481
- return /* @__PURE__ */ jsx56(
29574
+ return /* @__PURE__ */ jsx57(
29482
29575
  GenerateReviewStep,
29483
29576
  {
29484
29577
  extractSessionId: state2.extractSessionId,
@@ -29495,10 +29588,10 @@ function FlowScreen({
29495
29588
  }
29496
29589
  );
29497
29590
  case "previewing":
29498
- return /* @__PURE__ */ jsx56(RunningStep, { step: "push", description: `Computing diff for ${things} against your Contentful space...` });
29591
+ return /* @__PURE__ */ jsx57(RunningStep, { step: "push", description: `Computing diff for ${things} against your Contentful space...` });
29499
29592
  case "preview-gate":
29500
29593
  if (!state2.serverPreview) return null;
29501
- return /* @__PURE__ */ jsx56(
29594
+ return /* @__PURE__ */ jsx57(
29502
29595
  WizardPreviewStep,
29503
29596
  {
29504
29597
  preview: state2.serverPreview,
@@ -29510,9 +29603,9 @@ function FlowScreen({
29510
29603
  }
29511
29604
  );
29512
29605
  case "pushing":
29513
- return /* @__PURE__ */ jsx56(PushingStep, { progress: state2.pushProgress, produced, counts });
29606
+ return /* @__PURE__ */ jsx57(PushingStep, { progress: state2.pushProgress, produced, counts });
29514
29607
  case "path-prompt":
29515
- return /* @__PURE__ */ jsx56(
29608
+ return /* @__PURE__ */ jsx57(
29516
29609
  PathPrompt,
29517
29610
  {
29518
29611
  summary: `Saving ${things}${state2.credentialsSkipped ? "" : " and pushing them to your Contentful space"}.`,
@@ -29522,10 +29615,10 @@ function FlowScreen({
29522
29615
  }
29523
29616
  );
29524
29617
  case "printing":
29525
- return /* @__PURE__ */ jsx56(RunningStep, { step: "push", description: "Writing output files to disk..." });
29618
+ return /* @__PURE__ */ jsx57(RunningStep, { step: "push", description: "Writing output files to disk..." });
29526
29619
  case "print-gate": {
29527
29620
  const teaser = buildRunTeaserLine(state2.lastRunId);
29528
- return /* @__PURE__ */ jsx56(
29621
+ return /* @__PURE__ */ jsx57(
29529
29622
  GateStep,
29530
29623
  {
29531
29624
  step: "push",
@@ -29540,7 +29633,7 @@ function FlowScreen({
29540
29633
  }
29541
29634
  case "done": {
29542
29635
  const totalFailed = state2.pushResult.componentTypes.failed + state2.pushResult.designTokens.failed;
29543
- return /* @__PURE__ */ jsx56(
29636
+ return /* @__PURE__ */ jsx57(
29544
29637
  DoneStep,
29545
29638
  {
29546
29639
  componentTypes: state2.pushResult.componentTypes,
@@ -29557,7 +29650,7 @@ function FlowScreen({
29557
29650
  );
29558
29651
  }
29559
29652
  case "preview-validation-error":
29560
- return /* @__PURE__ */ jsx56(
29653
+ return /* @__PURE__ */ jsx57(
29561
29654
  PreviewValidationErrorScreen,
29562
29655
  {
29563
29656
  errors: state2.previewValidationErrors,
@@ -29568,7 +29661,7 @@ function FlowScreen({
29568
29661
  }
29569
29662
  );
29570
29663
  case "error":
29571
- return /* @__PURE__ */ jsx56(
29664
+ return /* @__PURE__ */ jsx57(
29572
29665
  ErrorStep,
29573
29666
  {
29574
29667
  stepName: state2.errorStep,
@@ -29579,8 +29672,8 @@ function FlowScreen({
29579
29672
  );
29580
29673
  }
29581
29674
  })();
29582
- return /* @__PURE__ */ jsxs45(Box45, { flexDirection: "column", children: [
29583
- /* @__PURE__ */ jsx56(CustomPromptBanner, { generatePromptPath }),
29675
+ return /* @__PURE__ */ jsxs46(Box46, { flexDirection: "column", children: [
29676
+ /* @__PURE__ */ jsx57(CustomPromptBanner, { generatePromptPath }),
29584
29677
  content
29585
29678
  ] });
29586
29679
  }
@@ -29769,6 +29862,16 @@ If using a custom host configuration, make sure the space exists on that host.`
29769
29862
  };
29770
29863
  }
29771
29864
 
29865
+ // packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/push-progress.ts
29866
+ function activityFromItems(items) {
29867
+ return items.filter((item) => item.status !== "queued").map((item) => ({
29868
+ name: item.id,
29869
+ state: item.status === "failed" ? "failed" : "done",
29870
+ detail: `${item.action} ${item.entityType === "DesignToken" ? "token" : "component"}`,
29871
+ ...item.error ? { error: typeof item.error === "string" ? item.error : item.error.message } : {}
29872
+ }));
29873
+ }
29874
+
29772
29875
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/push.ts
29773
29876
  var realPushDeps = (log) => ({
29774
29877
  createClient: (options) => new ApiClient({ ...options, userAgent: cliUserAgent() }),
@@ -29834,7 +29937,14 @@ async function runPush(input, deps, onPatch) {
29834
29937
  const lastDone = items.length > 0 ? items[items.length - 1] : null;
29835
29938
  const current = lastDone && lastDone.status === "succeeded" ? lastDone.id : null;
29836
29939
  onPatch({
29837
- pushProgress: { kind: "progress", processed: done, total: summary.total, failed: summary.failed, current }
29940
+ pushProgress: {
29941
+ kind: "progress",
29942
+ processed: done,
29943
+ total: summary.total,
29944
+ failed: summary.failed,
29945
+ current,
29946
+ items: activityFromItems(items)
29947
+ }
29838
29948
  });
29839
29949
  }
29840
29950
  safeLog(deps, { pollTick: { attempt: pollCount, status: op.sys.status, summary: op.summary } });
@@ -30360,7 +30470,7 @@ function useFlow(start, options = {}) {
30360
30470
 
30361
30471
  // packages/experience-design-system-cli/src/tui/help/PageContainer.tsx
30362
30472
  import { useEffect as useEffect30, useState as useState31 } from "react";
30363
- import { Box as Box46, Text as Text47, useInput as useInput13 } from "ink";
30473
+ import { Box as Box47, Text as Text48, useInput as useInput13 } from "ink";
30364
30474
  init_debug_store();
30365
30475
 
30366
30476
  // packages/experience-design-system-cli/src/tui/help/help-info.ts
@@ -30421,13 +30531,13 @@ async function readHelpInfo() {
30421
30531
  }
30422
30532
 
30423
30533
  // packages/experience-design-system-cli/src/tui/help/PageContainer.tsx
30424
- import { Fragment as Fragment17, jsx as jsx57, jsxs as jsxs46 } from "react/jsx-runtime";
30534
+ import { Fragment as Fragment18, jsx as jsx58, jsxs as jsxs47 } from "react/jsx-runtime";
30425
30535
  function Section({ title, rows }) {
30426
- return /* @__PURE__ */ jsxs46(Box46, { flexDirection: "column", children: [
30427
- /* @__PURE__ */ jsx57(Text47, { bold: true, color: PALETTE.accent, children: title }),
30428
- rows.map((row) => /* @__PURE__ */ jsxs46(Box46, { gap: 1, children: [
30429
- /* @__PURE__ */ jsx57(Box46, { width: 16, flexShrink: 0, children: /* @__PURE__ */ jsx57(Text47, { color: PALETTE.muted, children: row.label }) }),
30430
- /* @__PURE__ */ jsx57(Text47, { children: row.value })
30536
+ return /* @__PURE__ */ jsxs47(Box47, { flexDirection: "column", children: [
30537
+ /* @__PURE__ */ jsx58(Text48, { bold: true, color: PALETTE.accent, children: title }),
30538
+ rows.map((row) => /* @__PURE__ */ jsxs47(Box47, { gap: 1, children: [
30539
+ /* @__PURE__ */ jsx58(Box47, { width: 16, flexShrink: 0, children: /* @__PURE__ */ jsx58(Text48, { color: PALETTE.muted, children: row.label }) }),
30540
+ /* @__PURE__ */ jsx58(Text48, { children: row.value })
30431
30541
  ] }, row.label))
30432
30542
  ] });
30433
30543
  }
@@ -30451,14 +30561,14 @@ function HelpScreen({ onDone }) {
30451
30561
  return;
30452
30562
  }
30453
30563
  });
30454
- return /* @__PURE__ */ jsxs46(Box46, { flexDirection: "column", paddingX: 2, paddingY: 1, gap: 1, children: [
30455
- /* @__PURE__ */ jsx57(Text47, { bold: true, children: "Help" }),
30456
- info ? /* @__PURE__ */ jsxs46(Fragment17, { children: [
30457
- /* @__PURE__ */ jsx57(Section, { title: "Where things are stored", rows: info.storage }),
30458
- /* @__PURE__ */ jsx57(Section, { title: "Troubleshooting", rows: info.troubleshooting }),
30459
- /* @__PURE__ */ jsx57(Text47, { color: PALETTE.muted, children: "Hit a problem? Turn on Debug Mode in Settings, reproduce it, then share the session folder above. The CMA token is redacted from those logs." })
30460
- ] }) : /* @__PURE__ */ jsx57(Text47, { color: PALETTE.accent, children: "Loading..." }),
30461
- /* @__PURE__ */ jsx57(
30564
+ return /* @__PURE__ */ jsxs47(Box47, { flexDirection: "column", paddingX: 2, paddingY: 1, gap: 1, children: [
30565
+ /* @__PURE__ */ jsx58(Text48, { bold: true, children: "Help" }),
30566
+ info ? /* @__PURE__ */ jsxs47(Fragment18, { children: [
30567
+ /* @__PURE__ */ jsx58(Section, { title: "Where things are stored", rows: info.storage }),
30568
+ /* @__PURE__ */ jsx58(Section, { title: "Troubleshooting", rows: info.troubleshooting }),
30569
+ /* @__PURE__ */ jsx58(Text48, { color: PALETTE.muted, children: "Hit a problem? Turn on Debug Mode in Settings, reproduce it, then share the session folder above. The CMA token is redacted from those logs." })
30570
+ ] }) : /* @__PURE__ */ jsx58(Text48, { color: PALETTE.accent, children: "Loading..." }),
30571
+ /* @__PURE__ */ jsx58(
30462
30572
  ControlHints,
30463
30573
  {
30464
30574
  hints: [
@@ -30472,8 +30582,8 @@ function HelpScreen({ onDone }) {
30472
30582
 
30473
30583
  // packages/experience-design-system-cli/src/tui/settings/PageContainer.tsx
30474
30584
  import { useState as useState32 } from "react";
30475
- import { Box as Box47, Text as Text48, useInput as useInput14 } from "ink";
30476
- import { jsx as jsx58, jsxs as jsxs47 } from "react/jsx-runtime";
30585
+ import { Box as Box48, Text as Text49, useInput as useInput14 } from "ink";
30586
+ import { jsx as jsx59, jsxs as jsxs48 } from "react/jsx-runtime";
30477
30587
  function SettingsScreen({
30478
30588
  onNavigate,
30479
30589
  onBack
@@ -30504,15 +30614,15 @@ function SettingsScreen({
30504
30614
  onBack();
30505
30615
  }
30506
30616
  });
30507
- return /* @__PURE__ */ jsxs47(Box47, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
30508
- /* @__PURE__ */ jsx58(Text48, { bold: true, children: "Settings" }),
30509
- /* @__PURE__ */ jsx58(Text48, { color: PALETTE.muted, children: " " }),
30510
- items.map((item, i) => /* @__PURE__ */ jsxs47(Text48, { color: i === focusIdx ? PALETTE.accent : void 0, children: [
30617
+ return /* @__PURE__ */ jsxs48(Box48, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
30618
+ /* @__PURE__ */ jsx59(Text49, { bold: true, children: "Settings" }),
30619
+ /* @__PURE__ */ jsx59(Text49, { color: PALETTE.muted, children: " " }),
30620
+ items.map((item, i) => /* @__PURE__ */ jsxs48(Text49, { color: i === focusIdx ? PALETTE.accent : void 0, children: [
30511
30621
  i === focusIdx ? "> " : " ",
30512
30622
  item.label
30513
30623
  ] }, item.label)),
30514
- /* @__PURE__ */ jsx58(Text48, { children: " " }),
30515
- /* @__PURE__ */ jsx58(
30624
+ /* @__PURE__ */ jsx59(Text49, { children: " " }),
30625
+ /* @__PURE__ */ jsx59(
30516
30626
  ControlHints,
30517
30627
  {
30518
30628
  hints: [
@@ -30527,11 +30637,11 @@ function SettingsScreen({
30527
30637
 
30528
30638
  // packages/experience-design-system-cli/src/tui/settings/configuration/ConfigurationScreen.tsx
30529
30639
  import { useState as useState36 } from "react";
30530
- import { Box as Box51, Text as Text53, useInput as useInput17 } from "ink";
30640
+ import { Box as Box52, Text as Text54, useInput as useInput17 } from "ink";
30531
30641
 
30532
30642
  // packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentsScreen.tsx
30533
30643
  import { useEffect as useEffect32, useRef as useRef20, useState as useState34 } from "react";
30534
- import { Box as Box49, Text as Text51, useInput as useInput15 } from "ink";
30644
+ import { Box as Box50, Text as Text52, useInput as useInput15 } from "ink";
30535
30645
  init_debug_store();
30536
30646
 
30537
30647
  // packages/experience-design-system-cli/src/tui/settings/configuration/agents/agent-status.ts
@@ -30827,11 +30937,11 @@ async function writeAgentConfig(config) {
30827
30937
 
30828
30938
  // packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentDetail.tsx
30829
30939
  import { useEffect as useEffect31, useState as useState33 } from "react";
30830
- import { Box as Box48, Text as Text50 } from "ink";
30940
+ import { Box as Box49, Text as Text51 } from "ink";
30831
30941
 
30832
30942
  // packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentStatusBadge.tsx
30833
- import { Text as Text49 } from "ink";
30834
- import { jsx as jsx59 } from "react/jsx-runtime";
30943
+ import { Text as Text50 } from "ink";
30944
+ import { jsx as jsx60 } from "react/jsx-runtime";
30835
30945
  var TONE_COLOR = {
30836
30946
  ok: PALETTE.success,
30837
30947
  bad: PALETTE.error,
@@ -30843,7 +30953,7 @@ function AgentStatusBadge({
30843
30953
  binary
30844
30954
  }) {
30845
30955
  const { symbol, text, tone } = LIST_STATUS[checks ? statusFromChecks(name, checks, binary) : "checking"];
30846
- return /* @__PURE__ */ jsx59(Text49, { color: TONE_COLOR[tone], children: `${symbol} ${text}` });
30956
+ return /* @__PURE__ */ jsx60(Text50, { color: TONE_COLOR[tone], children: `${symbol} ${text}` });
30847
30957
  }
30848
30958
 
30849
30959
  // packages/experience-design-system-cli/src/tui/settings/configuration/agents/apply-binary-overrides.ts
@@ -30865,16 +30975,16 @@ function applyBinaryOverrides(config) {
30865
30975
  }
30866
30976
 
30867
30977
  // packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentDetail.tsx
30868
- import { jsx as jsx60, jsxs as jsxs48 } from "react/jsx-runtime";
30978
+ import { jsx as jsx61, jsxs as jsxs49 } from "react/jsx-runtime";
30869
30979
  var fields = (name) => [
30870
30980
  { key: "binary", label: "Command path", hint: `(empty: \`${AGENT_BINARIES[name]}\` from the PATH)` },
30871
30981
  { key: "model", label: "Model", hint: `(empty: ${defaultModelLabel(name)})` }
30872
30982
  ];
30873
30983
  var INSPECT_DELAY_MS = 400;
30874
30984
  function StatusHeading() {
30875
- return /* @__PURE__ */ jsxs48(Box48, { gap: 1, children: [
30876
- /* @__PURE__ */ jsx60(Text50, { bold: true, color: PALETTE.muted, children: "STATUS" }),
30877
- /* @__PURE__ */ jsx60(Text50, { color: PALETTE.muted, children: "\xB7 read only" })
30985
+ return /* @__PURE__ */ jsxs49(Box49, { gap: 1, children: [
30986
+ /* @__PURE__ */ jsx61(Text51, { bold: true, color: PALETTE.muted, children: "STATUS" }),
30987
+ /* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: "\xB7 read only" })
30878
30988
  ] });
30879
30989
  }
30880
30990
  function AgentDetail({
@@ -30937,7 +31047,7 @@ function AgentDetail({
30937
31047
  };
30938
31048
  const formFields = fields(name);
30939
31049
  const labelWidth = formLabelWidth([...formFields, action]);
30940
- return /* @__PURE__ */ jsx60(
31050
+ return /* @__PURE__ */ jsx61(
30941
31051
  FieldForm,
30942
31052
  {
30943
31053
  title: `Settings \u203A Configuration \u203A Agents \u203A ${AGENT_LABELS[name]}`,
@@ -30954,16 +31064,16 @@ function AgentDetail({
30954
31064
  actions: [action],
30955
31065
  notice: testing ? null : notice,
30956
31066
  busy: saving || testing,
30957
- children: /* @__PURE__ */ jsxs48(Box48, { flexDirection: "column", marginTop: 1, children: [
30958
- /* @__PURE__ */ jsx60(StatusHeading, {}),
30959
- statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */ jsx60(FormReadOnlyRow, { label: row.label, labelWidth, children: /* @__PURE__ */ jsx60(Text50, { color: TONE_COLOR[row.tone], children: row.value }) }, row.label))
31067
+ children: /* @__PURE__ */ jsxs49(Box49, { flexDirection: "column", marginTop: 1, children: [
31068
+ /* @__PURE__ */ jsx61(StatusHeading, {}),
31069
+ statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */ jsx61(FormReadOnlyRow, { label: row.label, labelWidth, children: /* @__PURE__ */ jsx61(Text51, { color: TONE_COLOR[row.tone], children: row.value }) }, row.label))
30960
31070
  ] })
30961
31071
  }
30962
31072
  );
30963
31073
  }
30964
31074
 
30965
31075
  // packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentsScreen.tsx
30966
- import { Fragment as Fragment18, jsx as jsx61, jsxs as jsxs49 } from "react/jsx-runtime";
31076
+ import { Fragment as Fragment19, jsx as jsx62, jsxs as jsxs50 } from "react/jsx-runtime";
30967
31077
  var NAME_WIDTH = 16;
30968
31078
  var PANEL_LABEL_WIDTH = "Command".length;
30969
31079
  function AgentsScreen({ onDone }) {
@@ -31073,21 +31183,21 @@ function AgentsScreen({ onDone }) {
31073
31183
  }
31074
31184
  });
31075
31185
  if (!config) {
31076
- return /* @__PURE__ */ jsxs49(Box49, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
31077
- /* @__PURE__ */ jsx61(Text51, { bold: true, children: "Settings \u203A Configuration \u203A Agents" }),
31078
- /* @__PURE__ */ jsx61(Text51, { children: " " }),
31079
- loadError ? /* @__PURE__ */ jsxs49(Fragment18, { children: [
31080
- /* @__PURE__ */ jsxs49(Text51, { color: PALETTE.error, children: [
31186
+ return /* @__PURE__ */ jsxs50(Box50, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
31187
+ /* @__PURE__ */ jsx62(Text52, { bold: true, children: "Settings \u203A Configuration \u203A Agents" }),
31188
+ /* @__PURE__ */ jsx62(Text52, { children: " " }),
31189
+ loadError ? /* @__PURE__ */ jsxs50(Fragment19, { children: [
31190
+ /* @__PURE__ */ jsxs50(Text52, { color: PALETTE.error, children: [
31081
31191
  "\u2717 Could not read the settings: ",
31082
31192
  loadError
31083
31193
  ] }),
31084
- /* @__PURE__ */ jsx61(Text51, { children: " " }),
31085
- /* @__PURE__ */ jsx61(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
31086
- ] }) : /* @__PURE__ */ jsx61(Text51, { color: PALETTE.accent, children: "Loading..." })
31194
+ /* @__PURE__ */ jsx62(Text52, { children: " " }),
31195
+ /* @__PURE__ */ jsx62(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
31196
+ ] }) : /* @__PURE__ */ jsx62(Text52, { color: PALETTE.accent, children: "Loading..." })
31087
31197
  ] });
31088
31198
  }
31089
31199
  if (open) {
31090
- return /* @__PURE__ */ jsx61(
31200
+ return /* @__PURE__ */ jsx62(
31091
31201
  AgentDetail,
31092
31202
  {
31093
31203
  name: open,
@@ -31108,48 +31218,48 @@ function AgentsScreen({ onDone }) {
31108
31218
  );
31109
31219
  }
31110
31220
  const focusedAgent = AGENT_NAMES[focus];
31111
- return /* @__PURE__ */ jsxs49(Box49, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
31112
- /* @__PURE__ */ jsx61(Text51, { bold: true, children: "Settings \u203A Configuration \u203A Agents" }),
31113
- /* @__PURE__ */ jsx61(Text51, { children: " " }),
31114
- /* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: "The coding agent the CLI runs, and what was found for each one." }),
31115
- /* @__PURE__ */ jsx61(Text51, { children: " " }),
31116
- /* @__PURE__ */ jsxs49(Box49, { gap: 1, children: [
31117
- /* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: "Default agent" }),
31118
- /* @__PURE__ */ jsx61(Text51, { bold: true, children: AGENT_LABELS[config.defaultAgent] }),
31119
- saving && /* @__PURE__ */ jsx61(Text51, { color: PALETTE.accent, children: "\u2026 saving" })
31221
+ return /* @__PURE__ */ jsxs50(Box50, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
31222
+ /* @__PURE__ */ jsx62(Text52, { bold: true, children: "Settings \u203A Configuration \u203A Agents" }),
31223
+ /* @__PURE__ */ jsx62(Text52, { children: " " }),
31224
+ /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "The coding agent the CLI runs, and what was found for each one." }),
31225
+ /* @__PURE__ */ jsx62(Text52, { children: " " }),
31226
+ /* @__PURE__ */ jsxs50(Box50, { gap: 1, children: [
31227
+ /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "Default agent" }),
31228
+ /* @__PURE__ */ jsx62(Text52, { bold: true, children: AGENT_LABELS[config.defaultAgent] }),
31229
+ saving && /* @__PURE__ */ jsx62(Text52, { color: PALETTE.accent, children: "\u2026 saving" })
31120
31230
  ] }),
31121
- /* @__PURE__ */ jsxs49(Box49, { marginTop: 1, gap: 1, children: [
31122
- /* @__PURE__ */ jsx61(Text51, { children: " " }),
31123
- /* @__PURE__ */ jsx61(Text51, { children: " " }),
31124
- /* @__PURE__ */ jsx61(Box49, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: "AGENT" }) }),
31125
- /* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: "STATUS" })
31231
+ /* @__PURE__ */ jsxs50(Box50, { marginTop: 1, gap: 1, children: [
31232
+ /* @__PURE__ */ jsx62(Text52, { children: " " }),
31233
+ /* @__PURE__ */ jsx62(Text52, { children: " " }),
31234
+ /* @__PURE__ */ jsx62(Box50, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "AGENT" }) }),
31235
+ /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "STATUS" })
31126
31236
  ] }),
31127
31237
  AGENT_NAMES.map((name) => {
31128
31238
  const isFocused = focusedAgent === name;
31129
- return /* @__PURE__ */ jsxs49(Box49, { gap: 1, children: [
31130
- /* @__PURE__ */ jsx61(Text51, { color: isFocused ? PALETTE.accent : void 0, children: isFocused ? "\u276F" : " " }),
31131
- /* @__PURE__ */ jsx61(Text51, { color: PALETTE.success, children: name === config.defaultAgent ? "\u2605" : " " }),
31132
- /* @__PURE__ */ jsx61(Box49, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx61(Text51, { bold: isFocused, color: isFocused ? PALETTE.accent : void 0, children: AGENT_LABELS[name] }) }),
31133
- /* @__PURE__ */ jsx61(AgentStatusBadge, { name, checks: checks[name], binary: config.agents[name].binary })
31239
+ return /* @__PURE__ */ jsxs50(Box50, { gap: 1, children: [
31240
+ /* @__PURE__ */ jsx62(Text52, { color: isFocused ? PALETTE.accent : void 0, children: isFocused ? "\u276F" : " " }),
31241
+ /* @__PURE__ */ jsx62(Text52, { color: PALETTE.success, children: name === config.defaultAgent ? "\u2605" : " " }),
31242
+ /* @__PURE__ */ jsx62(Box50, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text52, { bold: isFocused, color: isFocused ? PALETTE.accent : void 0, children: AGENT_LABELS[name] }) }),
31243
+ /* @__PURE__ */ jsx62(AgentStatusBadge, { name, checks: checks[name], binary: config.agents[name].binary })
31134
31244
  ] }, name);
31135
31245
  }),
31136
- /* @__PURE__ */ jsxs49(Box49, { flexDirection: "column", marginTop: 1, children: [
31137
- /* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: `\u2500 ${AGENT_LABELS[focusedAgent]} ${"\u2500".repeat(30)}` }),
31138
- panelRows(focusedAgent, checks[focusedAgent], config.agents[focusedAgent]).map((row) => /* @__PURE__ */ jsxs49(Box49, { gap: 1, paddingLeft: 1, children: [
31139
- /* @__PURE__ */ jsx61(Box49, { width: PANEL_LABEL_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: row.label }) }),
31140
- /* @__PURE__ */ jsx61(Text51, { color: TONE_COLOR[row.tone], children: row.value })
31246
+ /* @__PURE__ */ jsxs50(Box50, { flexDirection: "column", marginTop: 1, children: [
31247
+ /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: `\u2500 ${AGENT_LABELS[focusedAgent]} ${"\u2500".repeat(30)}` }),
31248
+ panelRows(focusedAgent, checks[focusedAgent], config.agents[focusedAgent]).map((row) => /* @__PURE__ */ jsxs50(Box50, { gap: 1, paddingLeft: 1, children: [
31249
+ /* @__PURE__ */ jsx62(Box50, { width: PANEL_LABEL_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: row.label }) }),
31250
+ /* @__PURE__ */ jsx62(Text52, { color: TONE_COLOR[row.tone], children: row.value })
31141
31251
  ] }, row.label))
31142
31252
  ] }),
31143
- notice && /* @__PURE__ */ jsxs49(Fragment18, { children: [
31144
- /* @__PURE__ */ jsx61(Text51, { children: " " }),
31145
- /* @__PURE__ */ jsxs49(Text51, { bold: true, color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
31253
+ notice && /* @__PURE__ */ jsxs50(Fragment19, { children: [
31254
+ /* @__PURE__ */ jsx62(Text52, { children: " " }),
31255
+ /* @__PURE__ */ jsxs50(Text52, { bold: true, color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
31146
31256
  notice.kind === "success" ? "\u2713" : "\u2717",
31147
31257
  " ",
31148
31258
  notice.text
31149
31259
  ] })
31150
31260
  ] }),
31151
- /* @__PURE__ */ jsx61(Text51, { children: " " }),
31152
- /* @__PURE__ */ jsx61(
31261
+ /* @__PURE__ */ jsx62(Text52, { children: " " }),
31262
+ /* @__PURE__ */ jsx62(
31153
31263
  ControlHints,
31154
31264
  {
31155
31265
  hints: [
@@ -31165,7 +31275,7 @@ function AgentsScreen({ onDone }) {
31165
31275
 
31166
31276
  // packages/experience-design-system-cli/src/tui/settings/configuration/project/ProjectScreen.tsx
31167
31277
  import { useEffect as useEffect33, useRef as useRef21, useState as useState35 } from "react";
31168
- import { Box as Box50, Text as Text52, useInput as useInput16 } from "ink";
31278
+ import { Box as Box51, Text as Text53, useInput as useInput16 } from "ink";
31169
31279
  init_debug_store();
31170
31280
 
31171
31281
  // packages/experience-design-system-cli/src/tui/settings/configuration/project/project-store.ts
@@ -31194,7 +31304,7 @@ async function writeCredentials(config) {
31194
31304
  }
31195
31305
 
31196
31306
  // packages/experience-design-system-cli/src/tui/settings/configuration/project/ProjectScreen.tsx
31197
- import { Fragment as Fragment19, jsx as jsx62, jsxs as jsxs50 } from "react/jsx-runtime";
31307
+ import { Fragment as Fragment20, jsx as jsx63, jsxs as jsxs51 } from "react/jsx-runtime";
31198
31308
  var FIELDS3 = [
31199
31309
  { key: "spaceId", label: "Space ID" },
31200
31310
  { key: "environmentId", label: "Environment ID" },
@@ -31274,17 +31384,17 @@ function ProjectScreen({ onDone }) {
31274
31384
  }
31275
31385
  });
31276
31386
  if (!config) {
31277
- return /* @__PURE__ */ jsxs50(Box50, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
31278
- /* @__PURE__ */ jsx62(Text52, { bold: true, children: "Settings \u203A Configuration \u203A Project" }),
31279
- /* @__PURE__ */ jsx62(Text52, { children: " " }),
31280
- loadError ? /* @__PURE__ */ jsxs50(Fragment19, { children: [
31281
- /* @__PURE__ */ jsxs50(Text52, { color: PALETTE.error, children: [
31387
+ return /* @__PURE__ */ jsxs51(Box51, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
31388
+ /* @__PURE__ */ jsx63(Text53, { bold: true, children: "Settings \u203A Configuration \u203A Project" }),
31389
+ /* @__PURE__ */ jsx63(Text53, { children: " " }),
31390
+ loadError ? /* @__PURE__ */ jsxs51(Fragment20, { children: [
31391
+ /* @__PURE__ */ jsxs51(Text53, { color: PALETTE.error, children: [
31282
31392
  "\u2717 Could not read the settings: ",
31283
31393
  loadError
31284
31394
  ] }),
31285
- /* @__PURE__ */ jsx62(Text52, { children: " " }),
31286
- /* @__PURE__ */ jsx62(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
31287
- ] }) : /* @__PURE__ */ jsx62(Text52, { color: PALETTE.accent, children: "Loading..." })
31395
+ /* @__PURE__ */ jsx63(Text53, { children: " " }),
31396
+ /* @__PURE__ */ jsx63(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
31397
+ ] }) : /* @__PURE__ */ jsx63(Text53, { color: PALETTE.accent, children: "Loading..." })
31288
31398
  ] });
31289
31399
  }
31290
31400
  const save = () => {
@@ -31305,7 +31415,7 @@ function ProjectScreen({ onDone }) {
31305
31415
  endVisit(config);
31306
31416
  onDone();
31307
31417
  };
31308
- return /* @__PURE__ */ jsx62(
31418
+ return /* @__PURE__ */ jsx63(
31309
31419
  FieldForm,
31310
31420
  {
31311
31421
  title: "Settings \u203A Configuration \u203A Project",
@@ -31327,7 +31437,7 @@ function ProjectScreen({ onDone }) {
31327
31437
  }
31328
31438
 
31329
31439
  // packages/experience-design-system-cli/src/tui/settings/configuration/ConfigurationScreen.tsx
31330
- import { jsx as jsx63, jsxs as jsxs51 } from "react/jsx-runtime";
31440
+ import { jsx as jsx64, jsxs as jsxs52 } from "react/jsx-runtime";
31331
31441
  var SECTIONS = [
31332
31442
  {
31333
31443
  id: "project",
@@ -31356,18 +31466,18 @@ function ConfigurationScreen({ onDone }) {
31356
31466
  }
31357
31467
  if (key.escape || input === "q") onDone();
31358
31468
  });
31359
- if (open === "project") return /* @__PURE__ */ jsx63(ProjectScreen, { onDone: close });
31360
- if (open === "agents") return /* @__PURE__ */ jsx63(AgentsScreen, { onDone: close });
31361
- return /* @__PURE__ */ jsxs51(Box51, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
31362
- /* @__PURE__ */ jsx63(Text53, { bold: true, children: "Settings \u203A Configuration" }),
31363
- /* @__PURE__ */ jsx63(Text53, { children: " " }),
31364
- SECTIONS.map((section, index) => /* @__PURE__ */ jsxs51(Box51, { gap: 1, children: [
31365
- /* @__PURE__ */ jsx63(Text53, { color: index === focus ? PALETTE.accent : void 0, children: index === focus ? "\u276F" : " " }),
31366
- /* @__PURE__ */ jsx63(Box51, { width: 9, flexShrink: 0, children: /* @__PURE__ */ jsx63(Text53, { bold: index === focus, color: index === focus ? PALETTE.accent : void 0, children: section.label }) }),
31367
- /* @__PURE__ */ jsx63(Text53, { color: PALETTE.muted, children: section.description })
31469
+ if (open === "project") return /* @__PURE__ */ jsx64(ProjectScreen, { onDone: close });
31470
+ if (open === "agents") return /* @__PURE__ */ jsx64(AgentsScreen, { onDone: close });
31471
+ return /* @__PURE__ */ jsxs52(Box52, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
31472
+ /* @__PURE__ */ jsx64(Text54, { bold: true, children: "Settings \u203A Configuration" }),
31473
+ /* @__PURE__ */ jsx64(Text54, { children: " " }),
31474
+ SECTIONS.map((section, index) => /* @__PURE__ */ jsxs52(Box52, { gap: 1, children: [
31475
+ /* @__PURE__ */ jsx64(Text54, { color: index === focus ? PALETTE.accent : void 0, children: index === focus ? "\u276F" : " " }),
31476
+ /* @__PURE__ */ jsx64(Box52, { width: 9, flexShrink: 0, children: /* @__PURE__ */ jsx64(Text54, { bold: index === focus, color: index === focus ? PALETTE.accent : void 0, children: section.label }) }),
31477
+ /* @__PURE__ */ jsx64(Text54, { color: PALETTE.muted, children: section.description })
31368
31478
  ] }, section.id)),
31369
- /* @__PURE__ */ jsx63(Text53, { children: " " }),
31370
- /* @__PURE__ */ jsx63(
31479
+ /* @__PURE__ */ jsx64(Text54, { children: " " }),
31480
+ /* @__PURE__ */ jsx64(
31371
31481
  ControlHints,
31372
31482
  {
31373
31483
  hints: [
@@ -31382,7 +31492,7 @@ function ConfigurationScreen({ onDone }) {
31382
31492
 
31383
31493
  // packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx
31384
31494
  import { useEffect as useEffect34, useState as useState37 } from "react";
31385
- import { Box as Box52, Text as Text54, useInput as useInput18 } from "ink";
31495
+ import { Box as Box53, Text as Text55, useInput as useInput18 } from "ink";
31386
31496
 
31387
31497
  // packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/analytics-store.ts
31388
31498
  async function readAnalyticsSetting() {
@@ -31401,7 +31511,7 @@ async function writeAnalyticsSetting(setting) {
31401
31511
 
31402
31512
  // packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx
31403
31513
  init_debug_store();
31404
- import { Fragment as Fragment20, jsx as jsx64, jsxs as jsxs52 } from "react/jsx-runtime";
31514
+ import { Fragment as Fragment21, jsx as jsx65, jsxs as jsxs53 } from "react/jsx-runtime";
31405
31515
  function OptInAnalyticsScreen({ onDone }) {
31406
31516
  const [loading, setLoading] = useState37(true);
31407
31517
  const [enabled, setEnabled] = useState37(true);
@@ -31432,21 +31542,21 @@ function OptInAnalyticsScreen({ onDone }) {
31432
31542
  onDone();
31433
31543
  }
31434
31544
  });
31435
- return /* @__PURE__ */ jsxs52(Box52, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
31436
- /* @__PURE__ */ jsx64(Text54, { bold: true, children: "Settings \u203A Opt-in Analytics" }),
31437
- /* @__PURE__ */ jsx64(Text54, { children: " " }),
31438
- loading ? /* @__PURE__ */ jsx64(Text54, { color: PALETTE.muted, children: "Loading\u2026" }) : /* @__PURE__ */ jsxs52(Fragment20, { children: [
31439
- /* @__PURE__ */ jsxs52(Text54, { children: [
31545
+ return /* @__PURE__ */ jsxs53(Box53, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
31546
+ /* @__PURE__ */ jsx65(Text55, { bold: true, children: "Settings \u203A Opt-in Analytics" }),
31547
+ /* @__PURE__ */ jsx65(Text55, { children: " " }),
31548
+ loading ? /* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "Loading\u2026" }) : /* @__PURE__ */ jsxs53(Fragment21, { children: [
31549
+ /* @__PURE__ */ jsxs53(Text55, { children: [
31440
31550
  "Share anonymous usage data:",
31441
31551
  " ",
31442
- /* @__PURE__ */ jsx64(Text54, { bold: true, color: enabled ? PALETTE.success : PALETTE.muted, children: enabled ? "On" : "Off" })
31552
+ /* @__PURE__ */ jsx65(Text55, { bold: true, color: enabled ? PALETTE.success : PALETTE.muted, children: enabled ? "On" : "Off" })
31443
31553
  ] }),
31444
- /* @__PURE__ */ jsx64(Text54, { children: " " }),
31445
- /* @__PURE__ */ jsx64(Text54, { color: PALETTE.muted, children: "Shares which CLI commands are used and where imports succeed or fail." }),
31446
- /* @__PURE__ */ jsx64(Text54, { color: PALETTE.muted, children: "Never includes source code, file paths, credentials, or authored content." })
31554
+ /* @__PURE__ */ jsx65(Text55, { children: " " }),
31555
+ /* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "Shares which CLI commands are used and where imports succeed or fail." }),
31556
+ /* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "Never includes source code, file paths, credentials, or authored content." })
31447
31557
  ] }),
31448
- /* @__PURE__ */ jsx64(Text54, { children: " " }),
31449
- /* @__PURE__ */ jsx64(
31558
+ /* @__PURE__ */ jsx65(Text55, { children: " " }),
31559
+ /* @__PURE__ */ jsx65(
31450
31560
  ControlHints,
31451
31561
  {
31452
31562
  hints: [
@@ -31460,10 +31570,10 @@ function OptInAnalyticsScreen({ onDone }) {
31460
31570
 
31461
31571
  // packages/experience-design-system-cli/src/tui/settings/debug-mode/screen.tsx
31462
31572
  import { useEffect as useEffect35, useRef as useRef22, useState as useState38 } from "react";
31463
- import { Box as Box53, Text as Text55, useInput as useInput19 } from "ink";
31573
+ import { Box as Box54, Text as Text56, useInput as useInput19 } from "ink";
31464
31574
  init_debug_mode_store();
31465
31575
  init_debug_store();
31466
- import { Fragment as Fragment21, jsx as jsx65, jsxs as jsxs53 } from "react/jsx-runtime";
31576
+ import { Fragment as Fragment22, jsx as jsx66, jsxs as jsxs54 } from "react/jsx-runtime";
31467
31577
  var ROWS = ["enabled", "retentionDays"];
31468
31578
  var snapshotOf2 = (setting) => ({
31469
31579
  enabled: String(setting.enabled),
@@ -31544,25 +31654,25 @@ function DebugModeScreen({ onDone }) {
31544
31654
  onDone();
31545
31655
  }
31546
31656
  });
31547
- const marker = (row) => /* @__PURE__ */ jsx65(Text55, { color: focus === row ? PALETTE.accent : void 0, children: focus === row ? "\u276F" : " " });
31548
- const label = (row, text) => /* @__PURE__ */ jsx65(Text55, { bold: focus === row, color: focus === row ? PALETTE.accent : PALETTE.muted, children: text });
31549
- return /* @__PURE__ */ jsxs53(Box53, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
31550
- /* @__PURE__ */ jsx65(Text55, { bold: true, children: "Settings \u203A Debug Mode" }),
31551
- /* @__PURE__ */ jsx65(Text55, { children: " " }),
31552
- setting ? /* @__PURE__ */ jsxs53(Fragment21, { children: [
31553
- /* @__PURE__ */ jsxs53(Box53, { gap: 1, children: [
31657
+ const marker = (row) => /* @__PURE__ */ jsx66(Text56, { color: focus === row ? PALETTE.accent : void 0, children: focus === row ? "\u276F" : " " });
31658
+ const label = (row, text) => /* @__PURE__ */ jsx66(Text56, { bold: focus === row, color: focus === row ? PALETTE.accent : PALETTE.muted, children: text });
31659
+ return /* @__PURE__ */ jsxs54(Box54, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
31660
+ /* @__PURE__ */ jsx66(Text56, { bold: true, children: "Settings \u203A Debug Mode" }),
31661
+ /* @__PURE__ */ jsx66(Text56, { children: " " }),
31662
+ setting ? /* @__PURE__ */ jsxs54(Fragment22, { children: [
31663
+ /* @__PURE__ */ jsxs54(Box54, { gap: 1, children: [
31554
31664
  marker("enabled"),
31555
31665
  label("enabled", "Debug logging:"),
31556
- /* @__PURE__ */ jsx65(Text55, { bold: true, color: setting.enabled ? PALETTE.success : PALETTE.muted, children: setting.enabled ? "On" : "Off" })
31666
+ /* @__PURE__ */ jsx66(Text56, { bold: true, color: setting.enabled ? PALETTE.success : PALETTE.muted, children: setting.enabled ? "On" : "Off" })
31557
31667
  ] }),
31558
- /* @__PURE__ */ jsxs53(Box53, { gap: 1, children: [
31668
+ /* @__PURE__ */ jsxs54(Box54, { gap: 1, children: [
31559
31669
  marker("retentionDays"),
31560
31670
  label("retentionDays", "Delete logs after:"),
31561
31671
  RETENTION_CHOICES.map((days) => {
31562
31672
  const highlighted = focus === "retentionDays" && days === pending;
31563
31673
  const saved = days === setting.retentionDays;
31564
- return /* @__PURE__ */ jsx65(
31565
- Text55,
31674
+ return /* @__PURE__ */ jsx66(
31675
+ Text56,
31566
31676
  {
31567
31677
  bold: highlighted || saved,
31568
31678
  underline: highlighted,
@@ -31573,15 +31683,15 @@ function DebugModeScreen({ onDone }) {
31573
31683
  );
31574
31684
  })
31575
31685
  ] }),
31576
- /* @__PURE__ */ jsx65(Text55, { children: " " }),
31577
- notice ? /* @__PURE__ */ jsxs53(Text55, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
31686
+ /* @__PURE__ */ jsx66(Text56, { children: " " }),
31687
+ notice ? /* @__PURE__ */ jsxs54(Text56, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
31578
31688
  notice.kind === "success" ? "\u2713" : "\u2717",
31579
31689
  " ",
31580
31690
  notice.text
31581
- ] }) : /* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "\u2713 marks what is saved. Older logs are deleted the next time the CLI starts." })
31582
- ] }) : /* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "Loading\u2026" }),
31583
- /* @__PURE__ */ jsx65(Text55, { children: " " }),
31584
- /* @__PURE__ */ jsx65(
31691
+ ] }) : /* @__PURE__ */ jsx66(Text56, { color: PALETTE.muted, children: "\u2713 marks what is saved. Older logs are deleted the next time the CLI starts." })
31692
+ ] }) : /* @__PURE__ */ jsx66(Text56, { color: PALETTE.muted, children: "Loading\u2026" }),
31693
+ /* @__PURE__ */ jsx66(Text56, { children: " " }),
31694
+ /* @__PURE__ */ jsx66(
31585
31695
  ControlHints,
31586
31696
  {
31587
31697
  hints: [
@@ -31598,7 +31708,7 @@ function DebugModeScreen({ onDone }) {
31598
31708
  }
31599
31709
 
31600
31710
  // packages/experience-design-system-cli/app.tsx
31601
- import { Fragment as Fragment22, jsx as jsx66 } from "react/jsx-runtime";
31711
+ import { Fragment as Fragment23, jsx as jsx67 } from "react/jsx-runtime";
31602
31712
  var TOKENS_ONLY_HIDDEN_STEPS = ["extraction", "scope-gate"];
31603
31713
  function App({ importOptions, inkClear }) {
31604
31714
  const [screen, setScreen] = useState39("start");
@@ -31800,9 +31910,9 @@ function App({ importOptions, inkClear }) {
31800
31910
  const content = (() => {
31801
31911
  switch (screen) {
31802
31912
  case "import":
31803
- if (showImportResult) return /* @__PURE__ */ jsx66(ImportScreen, { exitCode: importExitCode, onDone: finishImportResult });
31913
+ if (showImportResult) return /* @__PURE__ */ jsx67(ImportScreen, { exitCode: importExitCode, onDone: finishImportResult });
31804
31914
  if (flow && flowStart) {
31805
- return /* @__PURE__ */ jsx66(
31915
+ return /* @__PURE__ */ jsx67(
31806
31916
  FlowScreen,
31807
31917
  {
31808
31918
  state: flow.state,
@@ -31813,7 +31923,7 @@ function App({ importOptions, inkClear }) {
31813
31923
  );
31814
31924
  }
31815
31925
  if (tokenReview) {
31816
- return /* @__PURE__ */ jsx66(
31926
+ return /* @__PURE__ */ jsx67(
31817
31927
  TokenReviewScreen,
31818
31928
  {
31819
31929
  tokensPath: tokenReview.tokensPath,
@@ -31822,15 +31932,15 @@ function App({ importOptions, inkClear }) {
31822
31932
  }
31823
31933
  );
31824
31934
  }
31825
- if (importDefaults === void 0) return /* @__PURE__ */ jsx66(Fragment22, {});
31935
+ if (importDefaults === void 0) return /* @__PURE__ */ jsx67(Fragment23, {});
31826
31936
  if (target === void 0) {
31827
- return /* @__PURE__ */ jsx66(PreflightScreen, { onChoose: setTarget, onQuit: leaveImport });
31937
+ return /* @__PURE__ */ jsx67(PreflightScreen, { onChoose: setTarget, onQuit: leaveImport });
31828
31938
  }
31829
31939
  const inputStep = currentInputStep(target, answers);
31830
31940
  if (!extractionRun && !tokensOnlyRun && inputStep !== "credentials") {
31831
31941
  switch (inputStep) {
31832
31942
  case "project":
31833
- return /* @__PURE__ */ jsx66(
31943
+ return /* @__PURE__ */ jsx67(
31834
31944
  WelcomeScreen,
31835
31945
  {
31836
31946
  mode: target,
@@ -31840,7 +31950,7 @@ function App({ importOptions, inkClear }) {
31840
31950
  }
31841
31951
  );
31842
31952
  case "token-file":
31843
- return /* @__PURE__ */ jsx66(
31953
+ return /* @__PURE__ */ jsx67(
31844
31954
  TokenInputScreen,
31845
31955
  {
31846
31956
  mode: target,
@@ -31850,7 +31960,7 @@ function App({ importOptions, inkClear }) {
31850
31960
  }
31851
31961
  );
31852
31962
  case "path-validation":
31853
- return /* @__PURE__ */ jsx66(
31963
+ return /* @__PURE__ */ jsx67(
31854
31964
  PathValidationScreen,
31855
31965
  {
31856
31966
  mode: target,
@@ -31865,9 +31975,9 @@ function App({ importOptions, inkClear }) {
31865
31975
  }
31866
31976
  if (tokensOnlyRun) {
31867
31977
  if (tokensOnly?.status === "done" && !tokensOnly.result.ok) {
31868
- return /* @__PURE__ */ jsx66(ErrorStep, { stepName: tokensOnly.result.step, message: tokensOnly.result.message, onExit: leaveImport });
31978
+ return /* @__PURE__ */ jsx67(ErrorStep, { stepName: tokensOnly.result.step, message: tokensOnly.result.message, onExit: leaveImport });
31869
31979
  }
31870
- return /* @__PURE__ */ jsx66(
31980
+ return /* @__PURE__ */ jsx67(
31871
31981
  RunningStep,
31872
31982
  {
31873
31983
  step: "generation",
@@ -31878,10 +31988,10 @@ function App({ importOptions, inkClear }) {
31878
31988
  }
31879
31989
  if (extractionRun) {
31880
31990
  if (extraction?.status === "done" && !extraction.result.ok) {
31881
- return /* @__PURE__ */ jsx66(ErrorStep, { stepName: extraction.result.step, message: extraction.result.message, onExit: leaveImport });
31991
+ return /* @__PURE__ */ jsx67(ErrorStep, { stepName: extraction.result.step, message: extraction.result.message, onExit: leaveImport });
31882
31992
  }
31883
31993
  if (extraction?.status === "running") {
31884
- return /* @__PURE__ */ jsx66(
31994
+ return /* @__PURE__ */ jsx67(
31885
31995
  ExtractionScreen,
31886
31996
  {
31887
31997
  progress: extraction.progress,
@@ -31890,14 +32000,14 @@ function App({ importOptions, inkClear }) {
31890
32000
  }
31891
32001
  );
31892
32002
  }
31893
- return /* @__PURE__ */ jsx66(Fragment22, {});
32003
+ return /* @__PURE__ */ jsx67(Fragment23, {});
31894
32004
  }
31895
32005
  if (scopeRun && scopeFlow) {
31896
32006
  if (scopeFlow.status === "failed") {
31897
- return /* @__PURE__ */ jsx66(ErrorStep, { stepName: "scope gate", message: scopeFlow.message, onExit: leaveImport });
32007
+ return /* @__PURE__ */ jsx67(ErrorStep, { stepName: "scope gate", message: scopeFlow.message, onExit: leaveImport });
31898
32008
  }
31899
32009
  if (scopeFlow.status === "deciding") {
31900
- return /* @__PURE__ */ jsx66(
32010
+ return /* @__PURE__ */ jsx67(
31901
32011
  ScopeGateScreen,
31902
32012
  {
31903
32013
  components: scopeFlow.load.components,
@@ -31908,10 +32018,10 @@ function App({ importOptions, inkClear }) {
31908
32018
  );
31909
32019
  }
31910
32020
  if (generation?.status === "done" && !generation.result.ok) {
31911
- return /* @__PURE__ */ jsx66(ErrorStep, { stepName: generation.result.step, message: generation.result.message, onExit: leaveImport });
32021
+ return /* @__PURE__ */ jsx67(ErrorStep, { stepName: generation.result.step, message: generation.result.message, onExit: leaveImport });
31912
32022
  }
31913
32023
  if (generation?.status === "running") {
31914
- return /* @__PURE__ */ jsx66(
32024
+ return /* @__PURE__ */ jsx67(
31915
32025
  GenerationScreen,
31916
32026
  {
31917
32027
  progress: generation.progress,
@@ -31922,9 +32032,9 @@ function App({ importOptions, inkClear }) {
31922
32032
  }
31923
32033
  );
31924
32034
  }
31925
- return /* @__PURE__ */ jsx66(Fragment22, {});
32035
+ return /* @__PURE__ */ jsx67(Fragment23, {});
31926
32036
  }
31927
- return /* @__PURE__ */ jsx66(
32037
+ return /* @__PURE__ */ jsx67(
31928
32038
  CredentialsScreen,
31929
32039
  {
31930
32040
  mode: target,
@@ -31935,27 +32045,27 @@ function App({ importOptions, inkClear }) {
31935
32045
  }
31936
32046
  );
31937
32047
  case "help":
31938
- return /* @__PURE__ */ jsx66(HelpScreen, { onDone: goToStart });
32048
+ return /* @__PURE__ */ jsx67(HelpScreen, { onDone: goToStart });
31939
32049
  case "settings":
31940
- return /* @__PURE__ */ jsx66(SettingsScreen, { onNavigate: setScreen, onBack: goToStart });
32050
+ return /* @__PURE__ */ jsx67(SettingsScreen, { onNavigate: setScreen, onBack: goToStart });
31941
32051
  case "settings-configuration":
31942
- return /* @__PURE__ */ jsx66(ConfigurationScreen, { onDone: goToSettings });
32052
+ return /* @__PURE__ */ jsx67(ConfigurationScreen, { onDone: goToSettings });
31943
32053
  case "settings-opt-in-analytics":
31944
- return /* @__PURE__ */ jsx66(OptInAnalyticsScreen, { onDone: goToSettings });
32054
+ return /* @__PURE__ */ jsx67(OptInAnalyticsScreen, { onDone: goToSettings });
31945
32055
  case "settings-debug-mode":
31946
- return /* @__PURE__ */ jsx66(DebugModeScreen, { onDone: goToSettings });
32056
+ return /* @__PURE__ */ jsx67(DebugModeScreen, { onDone: goToSettings });
31947
32057
  case "start":
31948
- return /* @__PURE__ */ jsx66(HomeScreen, { onNavigate: setScreen });
32058
+ return /* @__PURE__ */ jsx67(HomeScreen, { onNavigate: setScreen });
31949
32059
  }
31950
32060
  })();
31951
- return /* @__PURE__ */ jsx66(HiddenStepsContext.Provider, { value: target === "tokens" ? TOKENS_ONLY_HIDDEN_STEPS : [], children: content });
32061
+ return /* @__PURE__ */ jsx67(HiddenStepsContext.Provider, { value: target === "tokens" ? TOKENS_ONLY_HIDDEN_STEPS : [], children: content });
31952
32062
  }
31953
32063
  async function runApp(renderApp, importOptions) {
31954
32064
  const inkClear = () => {
31955
32065
  instance.clear?.();
31956
32066
  process.stdout.write("\x1B[H\x1B[0J");
31957
32067
  };
31958
- const instance = renderApp(/* @__PURE__ */ jsx66(App, { importOptions, inkClear }));
32068
+ const instance = renderApp(/* @__PURE__ */ jsx67(App, { importOptions, inkClear }));
31959
32069
  await instance.waitUntilExit();
31960
32070
  }
31961
32071
  export {