@contentful/experience-design-system-cli 2.42.1-dev-build-62049584.0 → 2.42.1-dev-build-9c1908dc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -20202,123 +20202,47 @@ var init_use_elapsed = __esm({
20202
20202
  }
20203
20203
  });
20204
20204
 
20205
- // packages/experience-design-system-cli/src/tui/import/shared/running-step/activity.ts
20206
- function panelLayout(columns) {
20207
- return columns >= BESIDE_MIN_COLUMNS ? "beside" : "below";
20208
- }
20209
- function visibleActivity(items, max) {
20210
- if (items.length <= max) return { shown: [...items], hidden: 0 };
20211
- 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);
20212
- return { shown: chosen.map((index) => items[index]), hidden: items.length - chosen.length };
20213
- }
20214
- function truncate(text, max) {
20215
- return text.length <= max ? text : `${text.slice(0, Math.max(0, max - 1))}\u2026`;
20216
- }
20217
- var BESIDE_MIN_COLUMNS, PANEL_COLUMNS, PRIORITY;
20218
- var init_activity = __esm({
20219
- "packages/experience-design-system-cli/src/tui/import/shared/running-step/activity.ts"() {
20220
- "use strict";
20221
- BESIDE_MIN_COLUMNS = 110;
20222
- PANEL_COLUMNS = 46;
20223
- PRIORITY = { failed: 0, running: 1, done: 2 };
20224
- }
20225
- });
20226
-
20227
- // packages/experience-design-system-cli/src/tui/import/shared/running-step/activity-panel.tsx
20228
- import { Box as Box8, Text as Text8 } from "ink";
20229
- import { Spinner } from "@inkjs/ui";
20230
- import { Fragment, jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
20231
- function Row({ item, width }) {
20232
- const time = item.ms !== void 0 ? formatDuration(item.ms) : "";
20233
- const note = item.detail ? ` ${item.detail}` : "";
20234
- const name = truncate(`${item.name}${note}`, Math.max(8, width - 12));
20235
- return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
20236
- /* @__PURE__ */ jsxs8(Box8, { gap: 1, children: [
20237
- item.state === "running" ? /* @__PURE__ */ jsx8(Spinner, {}) : /* @__PURE__ */ jsx8(Text8, { color: COLOR[item.state], children: ICON[item.state] }),
20238
- /* @__PURE__ */ jsx8(Text8, { color: item.state === "failed" ? PALETTE.error : PALETTE.muted, children: name }),
20239
- time && /* @__PURE__ */ jsx8(Text8, { color: PALETTE.muted, children: time })
20240
- ] }),
20241
- item.state === "failed" && item.error && /* @__PURE__ */ jsx8(Text8, { color: PALETTE.error, children: ` ${truncate(item.error, Math.max(12, width - 6))}` })
20242
- ] });
20243
- }
20244
- function ActivityPanel({ title, items }) {
20245
- const columns = useTerminalWidth();
20246
- const width = panelLayout(columns) === "beside" ? PANEL_COLUMNS : Math.max(30, columns - 4);
20247
- const { shown, hidden } = visibleActivity(items, MAX_ROWS);
20248
- return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.muted, paddingX: 1, width, children: [
20249
- /* @__PURE__ */ jsx8(Text8, { bold: true, children: title }),
20250
- shown.map((item, index) => /* @__PURE__ */ jsx8(Row, { item, width }, `${index}-${item.name}`)),
20251
- hidden > 0 && /* @__PURE__ */ jsx8(Text8, { color: PALETTE.muted, children: `+ ${hidden} more` })
20252
- ] });
20253
- }
20254
- function AsideLayout({
20255
- aside,
20256
- children
20257
- }) {
20258
- const columns = useTerminalWidth();
20259
- if (!aside) return /* @__PURE__ */ jsx8(Fragment, { children });
20260
- const beside = panelLayout(columns) === "beside";
20261
- return /* @__PURE__ */ jsxs8(Box8, { flexDirection: beside ? "row" : "column", alignItems: "flex-start", children: [
20262
- children,
20263
- /* @__PURE__ */ jsx8(Box8, { paddingX: beside ? 0 : 2, paddingBottom: 1, children: aside })
20264
- ] });
20265
- }
20266
- var MAX_ROWS, ICON, COLOR;
20267
- var init_activity_panel = __esm({
20268
- "packages/experience-design-system-cli/src/tui/import/shared/running-step/activity-panel.tsx"() {
20269
- "use strict";
20270
- init_theme();
20271
- init_use_terminal_width();
20272
- init_logic4();
20273
- init_activity();
20274
- MAX_ROWS = 8;
20275
- ICON = { done: "\u2713", failed: "\u2717" };
20276
- COLOR = { done: PALETTE.success, failed: PALETTE.error };
20277
- }
20278
- });
20279
-
20280
20205
  // packages/experience-design-system-cli/src/tui/import/shared/running-step/running-step.tsx
20281
- import { Box as Box9, Text as Text9 } from "ink";
20282
- import { ProgressBar, Spinner as Spinner2, ThemeProvider } from "@inkjs/ui";
20283
- import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
20206
+ import { Box as Box8, Text as Text8 } from "ink";
20207
+ import { ProgressBar, Spinner, ThemeProvider } from "@inkjs/ui";
20208
+ import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
20284
20209
  function Line({ line }) {
20285
20210
  if (line.progress) {
20286
- return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, children: [
20287
- /* @__PURE__ */ jsxs9(Box9, { gap: 2, children: [
20288
- /* @__PURE__ */ jsx9(Box9, { width: 40, children: /* @__PURE__ */ jsx9(ThemeProvider, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx9(ProgressBar, { value: progressPercent(line.progress) }) }) }),
20289
- /* @__PURE__ */ jsxs9(Text9, { color: PALETTE.muted, children: [
20211
+ return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", gap: 1, children: [
20212
+ /* @__PURE__ */ jsxs8(Box8, { gap: 2, children: [
20213
+ /* @__PURE__ */ jsx8(Box8, { width: 40, children: /* @__PURE__ */ jsx8(ThemeProvider, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx8(ProgressBar, { value: progressPercent(line.progress) }) }) }),
20214
+ /* @__PURE__ */ jsxs8(Text8, { color: PALETTE.muted, children: [
20290
20215
  line.progress.done,
20291
20216
  "/",
20292
20217
  line.progress.total
20293
20218
  ] })
20294
20219
  ] }),
20295
- /* @__PURE__ */ jsx9(Text9, { color: textColor(lineState(line)), children: line.text })
20220
+ /* @__PURE__ */ jsx8(Text8, { color: textColor(lineState(line)), children: line.text })
20296
20221
  ] });
20297
20222
  }
20298
20223
  const state2 = lineState(line);
20299
- return /* @__PURE__ */ jsxs9(Box9, { gap: 1, children: [
20300
- state2 === "running" ? /* @__PURE__ */ jsx9(Spinner2, {}) : /* @__PURE__ */ jsx9(Text9, { color: STATE_COLOR[state2], children: STATE_ICON[state2] }),
20301
- /* @__PURE__ */ jsx9(Text9, { color: textColor(state2), children: line.text }),
20302
- line.ms !== void 0 && /* @__PURE__ */ jsx9(Text9, { color: PALETTE.muted, children: formatDuration(line.ms) })
20224
+ return /* @__PURE__ */ jsxs8(Box8, { gap: 1, children: [
20225
+ state2 === "running" ? /* @__PURE__ */ jsx8(Spinner, {}) : /* @__PURE__ */ jsx8(Text8, { color: STATE_COLOR[state2], children: STATE_ICON[state2] }),
20226
+ /* @__PURE__ */ jsx8(Text8, { color: textColor(state2), children: line.text }),
20227
+ line.ms !== void 0 && /* @__PURE__ */ jsx8(Text8, { color: PALETTE.muted, children: formatDuration(line.ms) })
20303
20228
  ] });
20304
20229
  }
20305
20230
  function RunningStep({
20306
20231
  step,
20307
20232
  description,
20308
- lines = [{ text: "Running..." }],
20309
- aside
20233
+ lines = [{ text: "Running..." }]
20310
20234
  }) {
20311
20235
  const elapsed = useElapsed();
20312
- return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
20313
- /* @__PURE__ */ jsx9(StepHeader, { step }),
20314
- /* @__PURE__ */ jsx9(AsideLayout, { aside, children: /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
20315
- /* @__PURE__ */ jsx9(Text9, { children: description }),
20316
- /* @__PURE__ */ jsx9(Box9, { marginTop: 1, flexDirection: "column", gap: 1, children: lines.map((line, index) => /* @__PURE__ */ jsx9(Line, { line }, index)) }),
20317
- /* @__PURE__ */ jsx9(Box9, { marginTop: 1, children: /* @__PURE__ */ jsxs9(Text9, { color: PALETTE.muted, children: [
20236
+ return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
20237
+ /* @__PURE__ */ jsx8(StepHeader, { step }),
20238
+ /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
20239
+ /* @__PURE__ */ jsx8(Text8, { children: description }),
20240
+ /* @__PURE__ */ jsx8(Box8, { marginTop: 1, flexDirection: "column", gap: 1, children: lines.map((line, index) => /* @__PURE__ */ jsx8(Line, { line }, index)) }),
20241
+ /* @__PURE__ */ jsx8(Box8, { marginTop: 1, children: /* @__PURE__ */ jsxs8(Text8, { color: PALETTE.muted, children: [
20318
20242
  "Elapsed: ",
20319
20243
  elapsed
20320
20244
  ] }) })
20321
- ] }) })
20245
+ ] })
20322
20246
  ] });
20323
20247
  }
20324
20248
  var STATE_ICON, STATE_COLOR, textColor;
@@ -20330,7 +20254,6 @@ var init_running_step = __esm({
20330
20254
  init_theme2();
20331
20255
  init_StepHeader();
20332
20256
  init_use_elapsed();
20333
- init_activity_panel();
20334
20257
  STATE_ICON = { done: "\u2713", warning: "!", failed: "\u2717" };
20335
20258
  STATE_COLOR = { done: PALETTE.success, warning: PALETTE.warning, failed: PALETTE.error };
20336
20259
  textColor = (state2) => state2 === "warning" || state2 === "failed" ? STATE_COLOR[state2] : PALETTE.muted;
@@ -20350,8 +20273,8 @@ var init_shared2 = __esm({
20350
20273
 
20351
20274
  // packages/experience-design-system-cli/src/tui/import/steps/00-preflight/screen.tsx
20352
20275
  import { useEffect as useEffect4, useRef, useState as useState4 } from "react";
20353
- import { Box as Box10, Text as Text10 } from "ink";
20354
- import { jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
20276
+ import { Box as Box9, Text as Text9 } from "ink";
20277
+ import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
20355
20278
  function PreflightScreen({ onChoose, onQuit }) {
20356
20279
  const [focus, setFocus] = useState4(0);
20357
20280
  const viewed = useRef([optionAt(0)]).current;
@@ -20380,19 +20303,19 @@ function PreflightScreen({ onChoose, onQuit }) {
20380
20303
  onQuit();
20381
20304
  };
20382
20305
  usePreflightControls({ focus, onFocus: moveTo, onChoose: choose, onQuit: quit });
20383
- return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
20384
- /* @__PURE__ */ jsx10(StepHeader, { step: "setup" }),
20385
- /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
20386
- /* @__PURE__ */ jsx10(Text10, { bold: true, color: PALETTE.text, children: "What do you want to import?" }),
20387
- /* @__PURE__ */ jsx10(Box10, { flexDirection: "column", children: IMPORT_TARGET_OPTIONS.map((option, index) => {
20306
+ return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
20307
+ /* @__PURE__ */ jsx9(StepHeader, { step: "setup" }),
20308
+ /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
20309
+ /* @__PURE__ */ jsx9(Text9, { bold: true, color: PALETTE.text, children: "What do you want to import?" }),
20310
+ /* @__PURE__ */ jsx9(Box9, { flexDirection: "column", children: IMPORT_TARGET_OPTIONS.map((option, index) => {
20388
20311
  const focused = index === focus;
20389
- return /* @__PURE__ */ jsxs10(Box10, { gap: 1, children: [
20390
- /* @__PURE__ */ jsx10(Text10, { color: PALETTE.accent, children: focused ? "\u276F" : " " }),
20391
- /* @__PURE__ */ jsx10(Text10, { bold: focused, color: focused ? PALETTE.accent : void 0, children: option.label })
20312
+ return /* @__PURE__ */ jsxs9(Box9, { gap: 1, children: [
20313
+ /* @__PURE__ */ jsx9(Text9, { color: PALETTE.accent, children: focused ? "\u276F" : " " }),
20314
+ /* @__PURE__ */ jsx9(Text9, { bold: focused, color: focused ? PALETTE.accent : void 0, children: option.label })
20392
20315
  ] }, option.target);
20393
20316
  }) }),
20394
- /* @__PURE__ */ jsx10(OverviewBox, { steps: overviewFor(optionAt(focus)) }),
20395
- /* @__PURE__ */ jsx10(ControlHints, { hints: PREFLIGHT_CONTROLS })
20317
+ /* @__PURE__ */ jsx9(OverviewBox, { steps: overviewFor(optionAt(focus)) }),
20318
+ /* @__PURE__ */ jsx9(ControlHints, { hints: PREFLIGHT_CONTROLS })
20396
20319
  ] })
20397
20320
  ] });
20398
20321
  }
@@ -20415,7 +20338,7 @@ var init_screen = __esm({
20415
20338
  import { useRef as useRef2 } from "react";
20416
20339
  import { useInput as useInput6 } from "ink";
20417
20340
  import TextInput from "ink-text-input";
20418
- import { jsx as jsx11 } from "react/jsx-runtime";
20341
+ import { jsx as jsx10 } from "react/jsx-runtime";
20419
20342
  function isClearKey(input, key) {
20420
20343
  return key.ctrl && input === "d";
20421
20344
  }
@@ -20429,7 +20352,7 @@ function ClearableTextInput({ onChange, ...props }) {
20429
20352
  }, 0);
20430
20353
  onChange("");
20431
20354
  });
20432
- return /* @__PURE__ */ jsx11(
20355
+ return /* @__PURE__ */ jsx10(
20433
20356
  TextInput,
20434
20357
  {
20435
20358
  ...props,
@@ -20481,8 +20404,8 @@ var init_controls4 = __esm({
20481
20404
 
20482
20405
  // packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx
20483
20406
  import { useEffect as useEffect5, useRef as useRef3, useState as useState5 } from "react";
20484
- import { Box as Box11, Text as Text11 } from "ink";
20485
- import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
20407
+ import { Box as Box10, Text as Text10 } from "ink";
20408
+ import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
20486
20409
  function WelcomeScreen({ mode, onContinue, onQuit, initialPath = "" }) {
20487
20410
  const [projectPath, setProjectPath] = useState5(initialPath);
20488
20411
  const visit = useRef3({ emptySubmits: 0 }).current;
@@ -20524,18 +20447,18 @@ function WelcomeScreen({ mode, onContinue, onQuit, initialPath = "" }) {
20524
20447
  });
20525
20448
  onContinue(path5);
20526
20449
  };
20527
- return /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", children: [
20528
- /* @__PURE__ */ jsx12(StepHeader, { step: "setup" }),
20529
- /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
20530
- /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", gap: 1, children: [
20531
- /* @__PURE__ */ jsx12(Text11, { color: PALETTE.text, children: "Where is your component library?" }),
20532
- /* @__PURE__ */ jsxs11(Box11, { children: [
20533
- /* @__PURE__ */ jsx12(Text11, { color: PALETTE.accent, children: "? " }),
20534
- /* @__PURE__ */ jsx12(Text11, { children: "Project path: " }),
20535
- /* @__PURE__ */ jsx12(ClearableTextInput, { value: projectPath, onChange: setProjectPath, onSubmit: submit })
20450
+ return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
20451
+ /* @__PURE__ */ jsx11(StepHeader, { step: "setup" }),
20452
+ /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
20453
+ /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", gap: 1, children: [
20454
+ /* @__PURE__ */ jsx11(Text10, { color: PALETTE.text, children: "Where is your component library?" }),
20455
+ /* @__PURE__ */ jsxs10(Box10, { children: [
20456
+ /* @__PURE__ */ jsx11(Text10, { color: PALETTE.accent, children: "? " }),
20457
+ /* @__PURE__ */ jsx11(Text10, { children: "Project path: " }),
20458
+ /* @__PURE__ */ jsx11(ClearableTextInput, { value: projectPath, onChange: setProjectPath, onSubmit: submit })
20536
20459
  ] })
20537
20460
  ] }),
20538
- /* @__PURE__ */ jsx12(Box11, { children: /* @__PURE__ */ jsx12(ControlHints, { hints: WELCOME_CONTROLS }) })
20461
+ /* @__PURE__ */ jsx11(Box10, { children: /* @__PURE__ */ jsx11(ControlHints, { hints: WELCOME_CONTROLS }) })
20539
20462
  ] })
20540
20463
  ] });
20541
20464
  }
@@ -20636,8 +20559,8 @@ var init_validate_path = __esm({
20636
20559
 
20637
20560
  // packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx
20638
20561
  import { useEffect as useEffect6, useRef as useRef4, useState as useState6 } from "react";
20639
- import { Box as Box12, Text as Text12 } from "ink";
20640
- import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
20562
+ import { Box as Box11, Text as Text11 } from "ink";
20563
+ import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
20641
20564
  function TokenInputScreen({
20642
20565
  mode,
20643
20566
  onConfirm,
@@ -20700,29 +20623,29 @@ function TokenInputScreen({
20700
20623
  });
20701
20624
  onConfirm(check.path);
20702
20625
  };
20703
- return /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
20704
- /* @__PURE__ */ jsx13(StepHeader, { step: "setup" }),
20705
- /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
20706
- /* @__PURE__ */ jsx13(Text12, { bold: true, children: "Design tokens" }),
20707
- /* @__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)." }),
20708
- /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
20709
- /* @__PURE__ */ jsxs12(Box12, { gap: 1, children: [
20710
- /* @__PURE__ */ jsx13(Text12, { color: PALETTE.accent, children: "?" }),
20711
- /* @__PURE__ */ jsx13(Text12, { children: "Token path:" }),
20712
- /* @__PURE__ */ jsx13(ClearableTextInput, { value: tokenPath, onChange: change, onSubmit: submit })
20626
+ return /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", children: [
20627
+ /* @__PURE__ */ jsx12(StepHeader, { step: "setup" }),
20628
+ /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
20629
+ /* @__PURE__ */ jsx12(Text11, { bold: true, children: "Design tokens" }),
20630
+ /* @__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)." }),
20631
+ /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", children: [
20632
+ /* @__PURE__ */ jsxs11(Box11, { gap: 1, children: [
20633
+ /* @__PURE__ */ jsx12(Text11, { color: PALETTE.accent, children: "?" }),
20634
+ /* @__PURE__ */ jsx12(Text11, { children: "Token path:" }),
20635
+ /* @__PURE__ */ jsx12(ClearableTextInput, { value: tokenPath, onChange: change, onSubmit: submit })
20713
20636
  ] }),
20714
- failure && /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
20715
- /* @__PURE__ */ jsxs12(Text12, { color: PALETTE.error, children: [
20637
+ failure && /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", children: [
20638
+ /* @__PURE__ */ jsxs11(Text11, { color: PALETTE.error, children: [
20716
20639
  "\u2717 ",
20717
20640
  failure.error
20718
20641
  ] }),
20719
- failure.resolvedPath && /* @__PURE__ */ jsxs12(Text12, { color: PALETTE.muted, children: [
20642
+ failure.resolvedPath && /* @__PURE__ */ jsxs11(Text11, { color: PALETTE.muted, children: [
20720
20643
  " Resolved to: ",
20721
20644
  failure.resolvedPath
20722
20645
  ] })
20723
20646
  ] })
20724
20647
  ] }),
20725
- /* @__PURE__ */ jsx13(Box12, { marginTop: 1, children: /* @__PURE__ */ jsx13(ControlHints, { hints: TOKEN_INPUT_CONTROLS }) })
20648
+ /* @__PURE__ */ jsx12(Box11, { marginTop: 1, children: /* @__PURE__ */ jsx12(ControlHints, { hints: TOKEN_INPUT_CONTROLS }) })
20726
20649
  ] })
20727
20650
  ] });
20728
20651
  }
@@ -20890,10 +20813,10 @@ var init_scan_files = __esm({
20890
20813
 
20891
20814
  // packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/screen.tsx
20892
20815
  import { useEffect as useEffect7, useMemo, useState as useState7 } from "react";
20893
- import { Box as Box13, Text as Text13 } from "ink";
20894
- import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
20895
- function Row2({ row }) {
20896
- return /* @__PURE__ */ jsxs13(Text13, { color: row.tone === "accent" ? PALETTE.accent : row.tone === "muted" ? PALETTE.muted : void 0, children: [
20816
+ import { Box as Box12, Text as Text12 } from "ink";
20817
+ import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
20818
+ function Row({ row }) {
20819
+ return /* @__PURE__ */ jsxs12(Text12, { color: row.tone === "accent" ? PALETTE.accent : row.tone === "muted" ? PALETTE.muted : void 0, children: [
20897
20820
  " \u2022 ",
20898
20821
  String(row.count).padStart(3),
20899
20822
  " ",
@@ -20902,12 +20825,12 @@ function Row2({ row }) {
20902
20825
  }
20903
20826
  function Failure({ scan, path: path5 }) {
20904
20827
  const { headline, hints } = describeFailure(scan.failure, path5);
20905
- return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
20906
- /* @__PURE__ */ jsxs13(Text13, { color: PALETTE.error, children: [
20828
+ return /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
20829
+ /* @__PURE__ */ jsxs12(Text12, { color: PALETTE.error, children: [
20907
20830
  "\u2717 ",
20908
20831
  headline
20909
20832
  ] }),
20910
- hints.map((hint) => /* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: hint }, hint))
20833
+ hints.map((hint) => /* @__PURE__ */ jsx13(Text12, { color: PALETTE.muted, children: hint }, hint))
20911
20834
  ] });
20912
20835
  }
20913
20836
  function Summary({
@@ -20916,24 +20839,24 @@ function Summary({
20916
20839
  hasTokens
20917
20840
  }) {
20918
20841
  const { total, rows, warning } = summarize(scan.counts, { hasTokens });
20919
- return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", gap: 1, children: [
20920
- /* @__PURE__ */ jsxs13(Text13, { children: [
20842
+ return /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", gap: 1, children: [
20843
+ /* @__PURE__ */ jsxs12(Text12, { children: [
20921
20844
  "Scanned ",
20922
- /* @__PURE__ */ jsx14(Text13, { bold: true, children: path5 })
20845
+ /* @__PURE__ */ jsx13(Text12, { bold: true, children: path5 })
20923
20846
  ] }),
20924
- /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
20925
- /* @__PURE__ */ jsxs13(Text13, { color: PALETTE.success, children: [
20847
+ /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
20848
+ /* @__PURE__ */ jsxs12(Text12, { color: PALETTE.success, children: [
20926
20849
  "\u2713 Found ",
20927
20850
  total,
20928
20851
  " files:"
20929
20852
  ] }),
20930
- rows.map((row) => /* @__PURE__ */ jsx14(Row2, { row }, row.label))
20853
+ rows.map((row) => /* @__PURE__ */ jsx13(Row, { row }, row.label))
20931
20854
  ] }),
20932
- warning && /* @__PURE__ */ jsxs13(Text13, { color: PALETTE.warning, children: [
20855
+ warning && /* @__PURE__ */ jsxs12(Text12, { color: PALETTE.warning, children: [
20933
20856
  "\u26A0 ",
20934
20857
  warning
20935
20858
  ] }),
20936
- /* @__PURE__ */ jsx14(Text13, { children: "Does this look right?" })
20859
+ /* @__PURE__ */ jsx13(Text12, { children: "Does this look right?" })
20937
20860
  ] });
20938
20861
  }
20939
20862
  function PathValidationScreen({
@@ -20980,17 +20903,17 @@ function PathValidationScreen({
20980
20903
  onBack();
20981
20904
  }
20982
20905
  });
20983
- return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
20984
- /* @__PURE__ */ jsx14(StepHeader, { step: "setup" }),
20985
- /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
20986
- scan === void 0 && /* @__PURE__ */ jsxs13(Text13, { color: PALETTE.muted, children: [
20906
+ return /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
20907
+ /* @__PURE__ */ jsx13(StepHeader, { step: "setup" }),
20908
+ /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
20909
+ scan === void 0 && /* @__PURE__ */ jsxs12(Text12, { color: PALETTE.muted, children: [
20987
20910
  "Scanning ",
20988
- /* @__PURE__ */ jsx14(Text13, { bold: true, children: resolvedPath }),
20911
+ /* @__PURE__ */ jsx13(Text12, { bold: true, children: resolvedPath }),
20989
20912
  "..."
20990
20913
  ] }),
20991
- scan?.ok === false && /* @__PURE__ */ jsx14(Failure, { scan, path: resolvedPath }),
20992
- scan?.ok === true && /* @__PURE__ */ jsx14(Summary, { scan, path: resolvedPath, hasTokens }),
20993
- /* @__PURE__ */ jsx14(Box13, { marginTop: 1, children: /* @__PURE__ */ jsx14(ControlHints, { hints: controlsFor(phase) }) })
20914
+ scan?.ok === false && /* @__PURE__ */ jsx13(Failure, { scan, path: resolvedPath }),
20915
+ scan?.ok === true && /* @__PURE__ */ jsx13(Summary, { scan, path: resolvedPath, hasTokens }),
20916
+ /* @__PURE__ */ jsx13(Box12, { marginTop: 1, children: /* @__PURE__ */ jsx13(ControlHints, { hints: controlsFor(phase) }) })
20994
20917
  ] })
20995
20918
  ] });
20996
20919
  }
@@ -21010,8 +20933,8 @@ var init_screen4 = __esm({
21010
20933
 
21011
20934
  // packages/experience-design-system-cli/src/tui/shared/components/FieldForm.tsx
21012
20935
  import { useState as useState8 } from "react";
21013
- import { Box as Box14, Text as Text14, useInput as useInput10 } from "ink";
21014
- import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
20936
+ import { Box as Box13, Text as Text13, useInput as useInput10 } from "ink";
20937
+ import { Fragment, jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
21015
20938
  function formLabelWidth(rows) {
21016
20939
  return Math.max(...rows.map((row) => row.label.length));
21017
20940
  }
@@ -21020,9 +20943,9 @@ function FormReadOnlyRow({
21020
20943
  labelWidth,
21021
20944
  children
21022
20945
  }) {
21023
- return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
21024
- /* @__PURE__ */ jsx15(Text14, { children: " " }),
21025
- /* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: label }) }),
20946
+ return /* @__PURE__ */ jsxs13(Box13, { gap: 1, children: [
20947
+ /* @__PURE__ */ jsx14(Text13, { children: " " }),
20948
+ /* @__PURE__ */ jsx14(Box13, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: label }) }),
21026
20949
  children
21027
20950
  ] });
21028
20951
  }
@@ -21109,23 +21032,23 @@ function FieldForm({
21109
21032
  setValueBeforeEdit(values[next.key]);
21110
21033
  setActive(active + 1);
21111
21034
  };
21112
- const pointer = (isActive) => /* @__PURE__ */ jsx15(Text14, { color: isActive ? PALETTE.accent : void 0, children: isActive ? "\u276F" : " " });
21113
- return /* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", children: [
21035
+ const pointer = (isActive) => /* @__PURE__ */ jsx14(Text13, { color: isActive ? PALETTE.accent : void 0, children: isActive ? "\u276F" : " " });
21036
+ return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
21114
21037
  header,
21115
- /* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", paddingX: 2, paddingTop: header ? 0 : 1, paddingBottom: 1, children: [
21116
- /* @__PURE__ */ jsx15(Text14, { bold: true, children: title }),
21117
- /* @__PURE__ */ jsx15(Text14, { children: " " }),
21118
- subtitle && /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: subtitle }),
21119
- /* @__PURE__ */ jsx15(Text14, { children: " " }),
21120
- /* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", children: [
21038
+ /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", paddingX: 2, paddingTop: header ? 0 : 1, paddingBottom: 1, children: [
21039
+ /* @__PURE__ */ jsx14(Text13, { bold: true, children: title }),
21040
+ /* @__PURE__ */ jsx14(Text13, { children: " " }),
21041
+ subtitle && /* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: subtitle }),
21042
+ /* @__PURE__ */ jsx14(Text13, { children: " " }),
21043
+ /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
21121
21044
  fields2.map((field, index) => {
21122
21045
  const isActive = index === active;
21123
21046
  const value = values[field.key];
21124
21047
  const display = field.masked ? "\u2022".repeat(value.length) : value;
21125
- return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
21048
+ return /* @__PURE__ */ jsxs13(Box13, { gap: 1, children: [
21126
21049
  pointer(isActive),
21127
- /* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
21128
- isActive && editing ? /* @__PURE__ */ jsx15(
21050
+ /* @__PURE__ */ jsx14(Box13, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx14(Text13, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
21051
+ isActive && editing ? /* @__PURE__ */ jsx14(
21129
21052
  ClearableTextInput,
21130
21053
  {
21131
21054
  value,
@@ -21133,34 +21056,34 @@ function FieldForm({
21133
21056
  onSubmit: submitField,
21134
21057
  mask: field.masked ? "\u2022" : void 0
21135
21058
  }
21136
- ) : display ? /* @__PURE__ */ jsx15(Text14, { bold: true, children: display }) : (
21059
+ ) : display ? /* @__PURE__ */ jsx14(Text13, { bold: true, children: display }) : (
21137
21060
  // An empty value shows its hint (or "(empty)") in the value's place, not after an empty element, so the
21138
21061
  // text starts in the same column as every other row's.
21139
- /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: field.hint ?? "(empty)" })
21062
+ /* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: field.hint ?? "(empty)" })
21140
21063
  ),
21141
- display && field.hint && /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: field.hint })
21064
+ display && field.hint && /* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: field.hint })
21142
21065
  ] }, field.key);
21143
21066
  }),
21144
21067
  actions.map((action, index) => {
21145
21068
  const isActive = fields2.length + index === active;
21146
- return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
21069
+ return /* @__PURE__ */ jsxs13(Box13, { gap: 1, children: [
21147
21070
  pointer(isActive),
21148
- /* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: action.label }) }),
21149
- /* @__PURE__ */ jsx15(Text14, { color: action.running ? PALETTE.accent : PALETTE.muted, children: action.running ? action.runningText ?? "running..." : action.description })
21071
+ /* @__PURE__ */ jsx14(Box13, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx14(Text13, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: action.label }) }),
21072
+ /* @__PURE__ */ jsx14(Text13, { color: action.running ? PALETTE.accent : PALETTE.muted, children: action.running ? action.runningText ?? "running..." : action.description })
21150
21073
  ] }, action.label);
21151
21074
  })
21152
21075
  ] }),
21153
- notice && /* @__PURE__ */ jsxs14(Fragment2, { children: [
21154
- /* @__PURE__ */ jsx15(Text14, { children: " " }),
21155
- /* @__PURE__ */ jsxs14(Text14, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
21076
+ notice && /* @__PURE__ */ jsxs13(Fragment, { children: [
21077
+ /* @__PURE__ */ jsx14(Text13, { children: " " }),
21078
+ /* @__PURE__ */ jsxs13(Text13, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
21156
21079
  notice.kind === "success" ? "\u2713" : "\u2717",
21157
21080
  " ",
21158
21081
  notice.text
21159
21082
  ] })
21160
21083
  ] }),
21161
21084
  children,
21162
- /* @__PURE__ */ jsx15(Text14, { children: " " }),
21163
- /* @__PURE__ */ jsx15(
21085
+ /* @__PURE__ */ jsx14(Text13, { children: " " }),
21086
+ /* @__PURE__ */ jsx14(
21164
21087
  ControlHints,
21165
21088
  {
21166
21089
  hints: editing ? [
@@ -21332,8 +21255,8 @@ var init_validate4 = __esm({
21332
21255
 
21333
21256
  // packages/experience-design-system-cli/src/tui/import/steps/04-credentials/screen.tsx
21334
21257
  import { useEffect as useEffect8, useRef as useRef5, useState as useState9 } from "react";
21335
- import { Box as Box15, Text as Text15, useInput as useInput11 } from "ink";
21336
- import { Fragment as Fragment3, jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
21258
+ import { Box as Box14, Text as Text14, useInput as useInput11 } from "ink";
21259
+ import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
21337
21260
  function CredentialsScreen({
21338
21261
  mode,
21339
21262
  onDone,
@@ -21451,24 +21374,24 @@ function CredentialsScreen({
21451
21374
  });
21452
21375
  const labelWidth = formLabelWidth([...FIELDS2, ...MENU]);
21453
21376
  const changed = !isUnchanged(normalize(values), initialValues);
21454
- return /* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", children: [
21455
- /* @__PURE__ */ jsx16(StepHeader, { step: "setup" }),
21456
- /* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", paddingX: 2, paddingBottom: 1, children: [
21457
- /* @__PURE__ */ jsx16(Text15, { bold: true, color: PALETTE.accent, children: "Contentful Credentials" }),
21458
- /* @__PURE__ */ jsx16(Text15, { children: " " }),
21459
- /* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: prefilled ? "Credentials pre-filled from the configuration settings." : "Enter the Contentful space you want to import into." }),
21460
- /* @__PURE__ */ jsx16(Text15, { children: " " }),
21461
- /* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Actions" }),
21377
+ return /* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", children: [
21378
+ /* @__PURE__ */ jsx15(StepHeader, { step: "setup" }),
21379
+ /* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", paddingX: 2, paddingBottom: 1, children: [
21380
+ /* @__PURE__ */ jsx15(Text14, { bold: true, color: PALETTE.accent, children: "Contentful Credentials" }),
21381
+ /* @__PURE__ */ jsx15(Text14, { children: " " }),
21382
+ /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: prefilled ? "Credentials pre-filled from the configuration settings." : "Enter the Contentful space you want to import into." }),
21383
+ /* @__PURE__ */ jsx15(Text14, { children: " " }),
21384
+ /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: "Actions" }),
21462
21385
  MENU.map((item, index) => {
21463
21386
  const focused = !editing && index === focus;
21464
- return /* @__PURE__ */ jsxs15(Box15, { gap: 1, children: [
21465
- /* @__PURE__ */ jsx16(Text15, { color: PALETTE.accent, children: focused ? "\u276F" : " " }),
21466
- /* @__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 }) }),
21467
- /* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: item.description })
21387
+ return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
21388
+ /* @__PURE__ */ jsx15(Text14, { color: PALETTE.accent, children: focused ? "\u276F" : " " }),
21389
+ /* @__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 }) }),
21390
+ /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: item.description })
21468
21391
  ] }, item.choice);
21469
21392
  }),
21470
- /* @__PURE__ */ jsxs15(
21471
- Box15,
21393
+ /* @__PURE__ */ jsxs14(
21394
+ Box14,
21472
21395
  {
21473
21396
  flexDirection: "column",
21474
21397
  marginTop: 1,
@@ -21478,15 +21401,15 @@ function CredentialsScreen({
21478
21401
  borderLeft: false,
21479
21402
  borderRight: false,
21480
21403
  children: [
21481
- /* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Space" }),
21404
+ /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: "Space" }),
21482
21405
  FIELDS2.map((field, index) => {
21483
21406
  const open = editing && index === active;
21484
21407
  const value = values[field.key];
21485
21408
  const display = field.masked ? "\u2022".repeat(value.length) : value;
21486
- return /* @__PURE__ */ jsxs15(Box15, { gap: 1, children: [
21487
- /* @__PURE__ */ jsx16(Text15, { color: PALETTE.accent, children: open ? "\u276F" : " " }),
21488
- /* @__PURE__ */ jsx16(Box15, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx16(Text15, { bold: open, color: open ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
21489
- open ? /* @__PURE__ */ jsx16(
21409
+ return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
21410
+ /* @__PURE__ */ jsx15(Text14, { color: PALETTE.accent, children: open ? "\u276F" : " " }),
21411
+ /* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { bold: open, color: open ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
21412
+ open ? /* @__PURE__ */ jsx15(
21490
21413
  ClearableTextInput,
21491
21414
  {
21492
21415
  value,
@@ -21497,35 +21420,35 @@ function CredentialsScreen({
21497
21420
  onSubmit: stopEditing,
21498
21421
  mask: field.masked ? "\u2022" : void 0
21499
21422
  }
21500
- ) : /* @__PURE__ */ jsx16(Text15, { color: display ? PALETTE.text : PALETTE.muted, children: display || (field.hint ?? "(empty)") })
21423
+ ) : /* @__PURE__ */ jsx15(Text14, { color: display ? PALETTE.text : PALETTE.muted, children: display || (field.hint ?? "(empty)") })
21501
21424
  ] }, field.key);
21502
21425
  })
21503
21426
  ]
21504
21427
  }
21505
21428
  ),
21506
- notice && /* @__PURE__ */ jsxs15(Fragment3, { children: [
21507
- /* @__PURE__ */ jsx16(Text15, { children: " " }),
21508
- /* @__PURE__ */ jsxs15(Text15, { color: PALETTE.error, children: [
21429
+ notice && /* @__PURE__ */ jsxs14(Fragment2, { children: [
21430
+ /* @__PURE__ */ jsx15(Text14, { children: " " }),
21431
+ /* @__PURE__ */ jsxs14(Text14, { color: PALETTE.error, children: [
21509
21432
  "\u2717 ",
21510
21433
  notice.text
21511
21434
  ] })
21512
21435
  ] }),
21513
- validating && /* @__PURE__ */ jsxs15(Fragment3, { children: [
21514
- /* @__PURE__ */ jsx16(Text15, { children: " " }),
21515
- /* @__PURE__ */ jsx16(Text15, { color: PALETTE.accent, children: "Validating credentials..." })
21436
+ validating && /* @__PURE__ */ jsxs14(Fragment2, { children: [
21437
+ /* @__PURE__ */ jsx15(Text14, { children: " " }),
21438
+ /* @__PURE__ */ jsx15(Text14, { color: PALETTE.accent, children: "Validating credentials..." })
21516
21439
  ] }),
21517
- !prefilled && !validating && !notice && /* @__PURE__ */ jsxs15(Fragment3, { children: [
21518
- /* @__PURE__ */ jsx16(Text15, { children: " " }),
21519
- /* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: credentialsPurpose(tokensOnly) }),
21520
- /* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Tip: save these under Settings \u2192 Configuration so they pre-fill here." })
21440
+ !prefilled && !validating && !notice && /* @__PURE__ */ jsxs14(Fragment2, { children: [
21441
+ /* @__PURE__ */ jsx15(Text14, { children: " " }),
21442
+ /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: credentialsPurpose(tokensOnly) }),
21443
+ /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: "Tip: save these under Settings \u2192 Configuration so they pre-fill here." })
21521
21444
  ] }),
21522
- changed && !validating && !notice && /* @__PURE__ */ jsxs15(Fragment3, { children: [
21523
- /* @__PURE__ */ jsx16(Text15, { children: " " }),
21524
- /* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Changed values are saved after they validate." })
21445
+ changed && !validating && !notice && /* @__PURE__ */ jsxs14(Fragment2, { children: [
21446
+ /* @__PURE__ */ jsx15(Text14, { children: " " }),
21447
+ /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: "Changed values are saved after they validate." })
21525
21448
  ] }),
21526
- editing && /* @__PURE__ */ jsxs15(Fragment3, { children: [
21527
- /* @__PURE__ */ jsx16(Text15, { children: " " }),
21528
- /* @__PURE__ */ jsx16(
21449
+ editing && /* @__PURE__ */ jsxs14(Fragment2, { children: [
21450
+ /* @__PURE__ */ jsx15(Text14, { children: " " }),
21451
+ /* @__PURE__ */ jsx15(
21529
21452
  ControlHints,
21530
21453
  {
21531
21454
  hints: [
@@ -21701,9 +21624,9 @@ var init_logic9 = __esm({
21701
21624
  });
21702
21625
 
21703
21626
  // packages/experience-design-system-cli/src/tui/import/steps/06-extraction/screen.tsx
21704
- import { jsx as jsx17 } from "react/jsx-runtime";
21627
+ import { jsx as jsx16 } from "react/jsx-runtime";
21705
21628
  function ExtractionScreen({ progress, agent, rowMs }) {
21706
- return /* @__PURE__ */ jsx17(
21629
+ return /* @__PURE__ */ jsx16(
21707
21630
  RunningStep,
21708
21631
  {
21709
21632
  step: "extraction",
@@ -21785,8 +21708,8 @@ var init_load = __esm({
21785
21708
 
21786
21709
  // packages/experience-design-system-cli/src/tui/import/steps/05-token-review/screen.tsx
21787
21710
  import { useEffect as useEffect9, useMemo as useMemo2, useState as useState10 } from "react";
21788
- import { Box as Box16, Text as Text16, useInput as useInput12 } from "ink";
21789
- import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
21711
+ import { Box as Box15, Text as Text15, useInput as useInput12 } from "ink";
21712
+ import { jsx as jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
21790
21713
  function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
21791
21714
  const loaded = useMemo2(() => loadTokenRows(tokensPath), [tokensPath]);
21792
21715
  const rows = loaded.ok ? loaded.rows : [];
@@ -21829,22 +21752,22 @@ function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
21829
21752
  const typeWidth = Math.max(4, ...rows.map((row) => row.type.length)) + COLUMN_GAP;
21830
21753
  const valueWidth = Math.max(10, innerWidth - pathWidth - typeWidth - 2);
21831
21754
  const clip = (text, width) => text.length > width ? `${text.slice(0, Math.max(0, width - 1))}\u2026` : text.padEnd(width);
21832
- return /* @__PURE__ */ jsxs16(Box16, { flexDirection: "column", children: [
21833
- /* @__PURE__ */ jsx18(StepHeader, { step: "review" }),
21834
- /* @__PURE__ */ jsxs16(Box16, { flexDirection: "column", paddingX: 2, paddingBottom: 1, children: [
21835
- /* @__PURE__ */ jsx18(Text16, { bold: true, children: "Review design tokens" }),
21836
- /* @__PURE__ */ jsx18(Box16, { marginTop: 1, children: loaded.ok ? /* @__PURE__ */ jsxs16(Text16, { color: PALETTE.muted, children: [
21755
+ return /* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", children: [
21756
+ /* @__PURE__ */ jsx17(StepHeader, { step: "review" }),
21757
+ /* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", paddingX: 2, paddingBottom: 1, children: [
21758
+ /* @__PURE__ */ jsx17(Text15, { bold: true, children: "Review design tokens" }),
21759
+ /* @__PURE__ */ jsx17(Box15, { marginTop: 1, children: loaded.ok ? /* @__PURE__ */ jsxs15(Text15, { color: PALETTE.muted, children: [
21837
21760
  rows.length,
21838
21761
  " ",
21839
21762
  rows.length === 1 ? "token" : "tokens",
21840
21763
  " generated from ",
21841
21764
  tokensPath
21842
- ] }) : /* @__PURE__ */ jsxs16(Text16, { color: PALETTE.error, children: [
21765
+ ] }) : /* @__PURE__ */ jsxs15(Text15, { color: PALETTE.error, children: [
21843
21766
  "Could not read the generated tokens: ",
21844
21767
  loaded.message
21845
21768
  ] }) }),
21846
- /* @__PURE__ */ jsxs16(Box16, { flexDirection: "column", marginTop: 1, children: [
21847
- /* @__PURE__ */ jsxs16(Text16, { bold: true, color: PALETTE.muted, wrap: "truncate-end", children: [
21769
+ /* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", marginTop: 1, children: [
21770
+ /* @__PURE__ */ jsxs15(Text15, { bold: true, color: PALETTE.muted, wrap: "truncate-end", children: [
21848
21771
  " ",
21849
21772
  clip("Token name", pathWidth),
21850
21773
  " ",
@@ -21854,7 +21777,7 @@ function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
21854
21777
  ] }),
21855
21778
  rows.slice(start, end).map((row, offset) => {
21856
21779
  const active = start + offset === selected;
21857
- return /* @__PURE__ */ jsxs16(Text16, { color: active ? PALETTE.accent : void 0, bold: active, wrap: "truncate-end", children: [
21780
+ return /* @__PURE__ */ jsxs15(Text15, { color: active ? PALETTE.accent : void 0, bold: active, wrap: "truncate-end", children: [
21858
21781
  active ? "\u203A " : " ",
21859
21782
  clip(row.path, pathWidth),
21860
21783
  " ",
@@ -21864,14 +21787,14 @@ function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
21864
21787
  ] }, row.path);
21865
21788
  })
21866
21789
  ] }),
21867
- rows.length > VISIBLE_ROWS && /* @__PURE__ */ jsx18(Box16, { marginTop: 1, children: /* @__PURE__ */ jsxs16(Text16, { color: PALETTE.muted, children: [
21790
+ rows.length > VISIBLE_ROWS && /* @__PURE__ */ jsx17(Box15, { marginTop: 1, children: /* @__PURE__ */ jsxs15(Text15, { color: PALETTE.muted, children: [
21868
21791
  start + 1,
21869
21792
  "-",
21870
21793
  end,
21871
21794
  " of ",
21872
21795
  rows.length
21873
21796
  ] }) }),
21874
- /* @__PURE__ */ jsx18(Box16, { marginTop: 1, children: /* @__PURE__ */ jsx18(ControlHints, { hints: TOKEN_REVIEW_CONTROLS }) })
21797
+ /* @__PURE__ */ jsx17(Box15, { marginTop: 1, children: /* @__PURE__ */ jsx17(ControlHints, { hints: TOKEN_REVIEW_CONTROLS }) })
21875
21798
  ] })
21876
21799
  ] });
21877
21800
  }
@@ -22196,7 +22119,7 @@ function useExtraction(input) {
22196
22119
  }),
22197
22120
  rowMs: []
22198
22121
  });
22199
- let lastProgress2;
22122
+ let lastProgress;
22200
22123
  const startedAt = Date.now();
22201
22124
  let rowMs = [];
22202
22125
  startDebugRun({
@@ -22206,13 +22129,13 @@ function useExtraction(input) {
22206
22129
  inputs: extractionLogInputs(input)
22207
22130
  });
22208
22131
  void runExtraction(input, (progress) => {
22209
- lastProgress2 = progress;
22132
+ lastProgress = progress;
22210
22133
  rowMs = trackFinished(rowMs, progressRows(progress, input.agent), Date.now() - startedAt);
22211
22134
  if (current.current === input) setState({ status: "running", progress, rowMs });
22212
22135
  }).then((result) => {
22213
22136
  if (current.current !== input) return;
22214
22137
  void finishDebugRun({
22215
- ...extractionLogOutputs(result, lastProgress2, input.credentials?.cmaToken ?? ""),
22138
+ ...extractionLogOutputs(result, lastProgress, input.credentials?.cmaToken ?? ""),
22216
22139
  exitMethod: result.ok ? "saved" : "discarded"
22217
22140
  });
22218
22141
  setState({ status: "done", result });
@@ -22333,8 +22256,8 @@ var init_log = __esm({
22333
22256
  });
22334
22257
 
22335
22258
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/windowed-panel.tsx
22336
- import { Box as Box17, Text as Text17 } from "ink";
22337
- import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
22259
+ import { Box as Box16, Text as Text16 } from "ink";
22260
+ import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
22338
22261
  function terminalPanelHeight(rows, reservedRows = 4) {
22339
22262
  return Math.max(MIN_TERMINAL_PANEL_HEIGHT, rows - reservedRows);
22340
22263
  }
@@ -22349,8 +22272,8 @@ function FixedPanel({
22349
22272
  clipOverflow = true,
22350
22273
  children
22351
22274
  }) {
22352
- return /* @__PURE__ */ jsx19(
22353
- Box17,
22275
+ return /* @__PURE__ */ jsx18(
22276
+ Box16,
22354
22277
  {
22355
22278
  flexDirection: "column",
22356
22279
  width,
@@ -22366,7 +22289,7 @@ function FixedPanel({
22366
22289
  );
22367
22290
  }
22368
22291
  function WindowedPanel({ width, height, title, focused, children }) {
22369
- return /* @__PURE__ */ jsxs17(
22292
+ return /* @__PURE__ */ jsxs16(
22370
22293
  FixedPanel,
22371
22294
  {
22372
22295
  width,
@@ -22375,7 +22298,7 @@ function WindowedPanel({ width, height, title, focused, children }) {
22375
22298
  ...height === void 0 ? {} : { height },
22376
22299
  focused,
22377
22300
  children: [
22378
- title && /* @__PURE__ */ jsx19(WindowedPanelHeader, { title, width, focused }),
22301
+ title && /* @__PURE__ */ jsx18(WindowedPanelHeader, { title, width, focused }),
22379
22302
  children
22380
22303
  ]
22381
22304
  }
@@ -22386,9 +22309,9 @@ function WindowedPanelHeader({
22386
22309
  width,
22387
22310
  focused
22388
22311
  }) {
22389
- return /* @__PURE__ */ jsxs17(Box17, { flexDirection: "column", children: [
22390
- /* @__PURE__ */ jsx19(Text17, { bold: true, color: PALETTE.accent, inverse: focused, children: title }),
22391
- /* @__PURE__ */ jsx19(Text17, { color: PALETTE.muted, children: "\u2500".repeat(Math.max(0, width - 2)) })
22312
+ return /* @__PURE__ */ jsxs16(Box16, { flexDirection: "column", children: [
22313
+ /* @__PURE__ */ jsx18(Text16, { bold: true, color: PALETTE.accent, inverse: focused, children: title }),
22314
+ /* @__PURE__ */ jsx18(Text16, { color: PALETTE.muted, children: "\u2500".repeat(Math.max(0, width - 2)) })
22392
22315
  ] });
22393
22316
  }
22394
22317
  function formatWindowIndicator(direction, count) {
@@ -22397,10 +22320,10 @@ function formatWindowIndicator(direction, count) {
22397
22320
  }
22398
22321
  function WindowFooter({ above, below }) {
22399
22322
  const parts = [above > 0 ? `\u2191 ${above}` : "", below > 0 ? `\u2193 ${below}` : ""].filter(Boolean);
22400
- return /* @__PURE__ */ jsx19(Text17, { color: PALETTE.muted, children: parts.length === 0 ? " " : `${parts.join(" \xB7 ")} more` });
22323
+ return /* @__PURE__ */ jsx18(Text16, { color: PALETTE.muted, children: parts.length === 0 ? " " : `${parts.join(" \xB7 ")} more` });
22401
22324
  }
22402
22325
  function WindowIndicator({ direction, count }) {
22403
- return /* @__PURE__ */ jsx19(Text17, { color: PALETTE.muted, children: formatWindowIndicator(direction, count) });
22326
+ return /* @__PURE__ */ jsx18(Text16, { color: PALETTE.muted, children: formatWindowIndicator(direction, count) });
22404
22327
  }
22405
22328
  var MIN_TERMINAL_PANEL_HEIGHT;
22406
22329
  var init_windowed_panel = __esm({
@@ -22412,26 +22335,26 @@ var init_windowed_panel = __esm({
22412
22335
  });
22413
22336
 
22414
22337
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/tokens-column.tsx
22415
- import { Box as Box18, Text as Text18 } from "ink";
22338
+ import { Box as Box17, Text as Text17 } from "ink";
22416
22339
  import figures2 from "figures";
22417
- import { jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
22340
+ import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
22418
22341
  function TokensColumn(props) {
22419
22342
  const { title, width, height, tokens, cursor, focused, visibleCount } = props;
22420
22343
  const nameWidth = Math.min(longestEntries(tokens).path + 2, Math.floor((width - 8) / 2));
22421
22344
  const window = computeColumnWindow(tokens.length, cursor, Math.max(1, visibleCount));
22422
- return /* @__PURE__ */ jsxs18(WindowedPanel, { width, height, title, focused, children: [
22423
- /* @__PURE__ */ jsx20(WindowIndicator, { direction: "up", count: window.above }),
22345
+ return /* @__PURE__ */ jsxs17(WindowedPanel, { width, height, title, focused, children: [
22346
+ /* @__PURE__ */ jsx19(WindowIndicator, { direction: "up", count: window.above }),
22424
22347
  tokens.slice(window.start, window.end).map((token, offset) => {
22425
22348
  const isCursor = focused && window.start + offset === cursor;
22426
- return /* @__PURE__ */ jsxs18(Box18, { children: [
22427
- /* @__PURE__ */ jsx20(Text18, { color: PALETTE.accent, bold: true, children: isCursor ? figures2.pointer : " " }),
22428
- /* @__PURE__ */ jsxs18(Text18, { wrap: "truncate-end", color: isCursor ? PALETTE.accent : void 0, bold: isCursor, children: [
22349
+ return /* @__PURE__ */ jsxs17(Box17, { children: [
22350
+ /* @__PURE__ */ jsx19(Text17, { color: PALETTE.accent, bold: true, children: isCursor ? figures2.pointer : " " }),
22351
+ /* @__PURE__ */ jsxs17(Text17, { wrap: "truncate-end", color: isCursor ? PALETTE.accent : void 0, bold: isCursor, children: [
22429
22352
  ` ${token.path.padEnd(nameWidth)}`,
22430
- /* @__PURE__ */ jsx20(Text18, { color: PALETTE.muted, children: token.value })
22353
+ /* @__PURE__ */ jsx19(Text17, { color: PALETTE.muted, children: token.value })
22431
22354
  ] })
22432
22355
  ] }, token.path);
22433
22356
  }),
22434
- /* @__PURE__ */ jsx20(WindowIndicator, { direction: "down", count: window.below })
22357
+ /* @__PURE__ */ jsx19(WindowIndicator, { direction: "down", count: window.below })
22435
22358
  ] });
22436
22359
  }
22437
22360
  var init_tokens_column = __esm({
@@ -22444,9 +22367,9 @@ var init_tokens_column = __esm({
22444
22367
  });
22445
22368
 
22446
22369
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/cycles-panel.tsx
22447
- import { Box as Box19, Text as Text19 } from "ink";
22370
+ import { Box as Box18, Text as Text18 } from "ink";
22448
22371
  import figures3 from "figures";
22449
- import { jsx as jsx21, jsxs as jsxs19 } from "react/jsx-runtime";
22372
+ import { jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
22450
22373
  function cycleLabel(cycle, index) {
22451
22374
  const parts = [];
22452
22375
  for (let i = 0; i < cycle.edges.length; i++) {
@@ -22457,17 +22380,17 @@ function cycleLabel(cycle, index) {
22457
22380
  return `Cycle ${index + 1}: ${parts.join(" \u2192 ")}`;
22458
22381
  }
22459
22382
  function CyclesPanel({ cycles, cursor }) {
22460
- return /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.warning, paddingX: 1, marginTop: 1, children: [
22461
- /* @__PURE__ */ jsx21(Text19, { bold: true, color: PALETTE.warning, children: `Cycles detected (${cycles.length}):` }),
22462
- /* @__PURE__ */ jsx21(Text19, { children: " " }),
22383
+ return /* @__PURE__ */ jsxs18(Box18, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.warning, paddingX: 1, marginTop: 1, children: [
22384
+ /* @__PURE__ */ jsx20(Text18, { bold: true, color: PALETTE.warning, children: `Cycles detected (${cycles.length}):` }),
22385
+ /* @__PURE__ */ jsx20(Text18, { children: " " }),
22463
22386
  cycles.map((cycle, i) => {
22464
22387
  const isCursor = i === cursor;
22465
- return /* @__PURE__ */ jsxs19(Text19, { children: [
22466
- isCursor ? /* @__PURE__ */ jsx21(Text19, { color: PALETTE.accent, bold: true, children: figures3.pointer }) : /* @__PURE__ */ jsx21(Text19, { children: " " }),
22467
- /* @__PURE__ */ jsx21(Text19, { color: PALETTE.warning, inverse: isCursor, children: " " + cycleLabel(cycle, i) })
22388
+ return /* @__PURE__ */ jsxs18(Text18, { children: [
22389
+ isCursor ? /* @__PURE__ */ jsx20(Text18, { color: PALETTE.accent, bold: true, children: figures3.pointer }) : /* @__PURE__ */ jsx20(Text18, { children: " " }),
22390
+ /* @__PURE__ */ jsx20(Text18, { color: PALETTE.warning, inverse: isCursor, children: " " + cycleLabel(cycle, i) })
22468
22391
  ] }, i);
22469
22392
  }),
22470
- /* @__PURE__ */ jsx21(Text19, { children: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [c/Esc] close" })
22393
+ /* @__PURE__ */ jsx20(Text18, { children: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [c/Esc] close" })
22471
22394
  ] });
22472
22395
  }
22473
22396
  var init_cycles_panel = __esm({
@@ -22478,14 +22401,14 @@ var init_cycles_panel = __esm({
22478
22401
  });
22479
22402
 
22480
22403
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/reject-prompt.tsx
22481
- import { Box as Box20, Text as Text20 } from "ink";
22482
- import { jsx as jsx22, jsxs as jsxs20 } from "react/jsx-runtime";
22404
+ import { Box as Box19, Text as Text19 } from "ink";
22405
+ import { jsx as jsx21, jsxs as jsxs19 } from "react/jsx-runtime";
22483
22406
  function RejectPrompt({ pending }) {
22484
- return /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.warning, paddingX: 1, marginTop: 1, children: [
22485
- /* @__PURE__ */ jsx22(Text20, { bold: true, color: PALETTE.warning, children: `Rejecting ${pending.target} will:` }),
22486
- pending.ancestors.length > 0 && /* @__PURE__ */ jsx22(Text20, { children: `- Reject ancestors: ${pending.ancestors.join(", ")}` }),
22487
- pending.descendants.length > 0 && /* @__PURE__ */ jsx22(Text20, { children: `- Deselect descendants: ${pending.descendants.join(", ")}` }),
22488
- /* @__PURE__ */ jsx22(Text20, { children: "[y] confirm \xB7 [n]/[Esc] cancel" })
22407
+ return /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.warning, paddingX: 1, marginTop: 1, children: [
22408
+ /* @__PURE__ */ jsx21(Text19, { bold: true, color: PALETTE.warning, children: `Rejecting ${pending.target} will:` }),
22409
+ pending.ancestors.length > 0 && /* @__PURE__ */ jsx21(Text19, { children: `- Reject ancestors: ${pending.ancestors.join(", ")}` }),
22410
+ pending.descendants.length > 0 && /* @__PURE__ */ jsx21(Text19, { children: `- Deselect descendants: ${pending.descendants.join(", ")}` }),
22411
+ /* @__PURE__ */ jsx21(Text19, { children: "[y] confirm \xB7 [n]/[Esc] cancel" })
22489
22412
  ] });
22490
22413
  }
22491
22414
  var init_reject_prompt = __esm({
@@ -22496,9 +22419,9 @@ var init_reject_prompt = __esm({
22496
22419
  });
22497
22420
 
22498
22421
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CompactControlBar.tsx
22499
- import { jsx as jsx23 } from "react/jsx-runtime";
22422
+ import { jsx as jsx22 } from "react/jsx-runtime";
22500
22423
  function CompactControlBar({ hasGroupRoots, searchActive }) {
22501
- return /* @__PURE__ */ jsx23(
22424
+ return /* @__PURE__ */ jsx22(
22502
22425
  ControlHints,
22503
22426
  {
22504
22427
  hints: [
@@ -22521,8 +22444,8 @@ var init_CompactControlBar = __esm({
22521
22444
  });
22522
22445
 
22523
22446
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CounterStrip.tsx
22524
- import { Box as Box21, Text as Text21 } from "ink";
22525
- import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
22447
+ import { Box as Box20, Text as Text20 } from "ink";
22448
+ import { jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
22526
22449
  function CounterStrip(props) {
22527
22450
  const { counters, totalWidth } = props;
22528
22451
  const condensed = totalWidth < 60;
@@ -22531,31 +22454,31 @@ function CounterStrip(props) {
22531
22454
  const labelRej = condensed ? "Rej" : "Rejected";
22532
22455
  const labelUnd = condensed ? "Und" : "Undecided";
22533
22456
  const sep = condensed ? " | " : " ";
22534
- return /* @__PURE__ */ jsx24(Box21, { children: /* @__PURE__ */ jsxs21(Text21, { children: [
22535
- /* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
22457
+ return /* @__PURE__ */ jsx23(Box20, { children: /* @__PURE__ */ jsxs20(Text20, { children: [
22458
+ /* @__PURE__ */ jsxs20(Text20, { color: PALETTE.muted, children: [
22536
22459
  labelGrp,
22537
22460
  " "
22538
22461
  ] }),
22539
- /* @__PURE__ */ jsx24(Text21, { bold: true, children: counters.groups }),
22540
- /* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep }),
22541
- /* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
22462
+ /* @__PURE__ */ jsx23(Text20, { bold: true, children: counters.groups }),
22463
+ /* @__PURE__ */ jsx23(Text20, { color: PALETTE.muted, children: sep }),
22464
+ /* @__PURE__ */ jsxs20(Text20, { color: PALETTE.muted, children: [
22542
22465
  labelAcc,
22543
22466
  " "
22544
22467
  ] }),
22545
- /* @__PURE__ */ jsx24(Text21, { bold: true, children: `${counters.accepted}/${counters.total}` }),
22546
- /* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep }),
22547
- /* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
22468
+ /* @__PURE__ */ jsx23(Text20, { bold: true, children: `${counters.accepted}/${counters.total}` }),
22469
+ /* @__PURE__ */ jsx23(Text20, { color: PALETTE.muted, children: sep }),
22470
+ /* @__PURE__ */ jsxs20(Text20, { color: PALETTE.muted, children: [
22548
22471
  labelRej,
22549
22472
  " "
22550
22473
  ] }),
22551
- /* @__PURE__ */ jsx24(Text21, { bold: true, children: counters.rejected }),
22552
- /* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep }),
22553
- /* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
22474
+ /* @__PURE__ */ jsx23(Text20, { bold: true, children: counters.rejected }),
22475
+ /* @__PURE__ */ jsx23(Text20, { color: PALETTE.muted, children: sep }),
22476
+ /* @__PURE__ */ jsxs20(Text20, { color: PALETTE.muted, children: [
22554
22477
  labelUnd,
22555
22478
  " "
22556
22479
  ] }),
22557
- /* @__PURE__ */ jsx24(Text21, { bold: true, children: counters.undecided }),
22558
- /* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep })
22480
+ /* @__PURE__ */ jsx23(Text20, { bold: true, children: counters.undecided }),
22481
+ /* @__PURE__ */ jsx23(Text20, { color: PALETTE.muted, children: sep })
22559
22482
  ] }) });
22560
22483
  }
22561
22484
  var init_CounterStrip = __esm({
@@ -22567,8 +22490,8 @@ var init_CounterStrip = __esm({
22567
22490
 
22568
22491
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GotoBanner.tsx
22569
22492
  import figures4 from "figures";
22570
- import { Box as Box22, Text as Text22 } from "ink";
22571
- import { jsx as jsx25, jsxs as jsxs22 } from "react/jsx-runtime";
22493
+ import { Box as Box21, Text as Text21 } from "ink";
22494
+ import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
22572
22495
  function windowStart(rowCount, highlightIndex, maxRows) {
22573
22496
  if (rowCount <= maxRows) return 0;
22574
22497
  const maxStart = rowCount - maxRows;
@@ -22578,9 +22501,9 @@ function windowStart(rowCount, highlightIndex, maxRows) {
22578
22501
  return start;
22579
22502
  }
22580
22503
  function defaultRenderRow(row, index, isCursor) {
22581
- return /* @__PURE__ */ jsxs22(Text22, { children: [
22582
- isCursor ? /* @__PURE__ */ jsx25(Text22, { color: PALETTE.accent, bold: true, children: figures4.pointer }) : /* @__PURE__ */ jsx25(Text22, { children: " " }),
22583
- /* @__PURE__ */ jsx25(Text22, { inverse: isCursor, children: " " + row.label })
22504
+ return /* @__PURE__ */ jsxs21(Text21, { children: [
22505
+ isCursor ? /* @__PURE__ */ jsx24(Text21, { color: PALETTE.accent, bold: true, children: figures4.pointer }) : /* @__PURE__ */ jsx24(Text21, { children: " " }),
22506
+ /* @__PURE__ */ jsx24(Text21, { inverse: isCursor, children: " " + row.label })
22584
22507
  ] }, index);
22585
22508
  }
22586
22509
  function GotoBanner({
@@ -22599,8 +22522,8 @@ function GotoBanner({
22599
22522
  const visible = rows.slice(start, end);
22600
22523
  const moreAbove = start;
22601
22524
  const moreBelow = rows.length - end;
22602
- return /* @__PURE__ */ jsxs22(
22603
- Box22,
22525
+ return /* @__PURE__ */ jsxs21(
22526
+ Box21,
22604
22527
  {
22605
22528
  flexDirection: "column",
22606
22529
  borderStyle: "single",
@@ -22611,14 +22534,14 @@ function GotoBanner({
22611
22534
  width,
22612
22535
  flexShrink: 0,
22613
22536
  children: [
22614
- /* @__PURE__ */ jsx25(Text22, { bold: true, children: title }),
22615
- moreAbove > 0 && /* @__PURE__ */ jsx25(Text22, { color: PALETTE.muted, children: ` \u25B2 ${moreAbove} more` }),
22537
+ /* @__PURE__ */ jsx24(Text21, { bold: true, children: title }),
22538
+ moreAbove > 0 && /* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: ` \u25B2 ${moreAbove} more` }),
22616
22539
  visible.map((row, vi) => {
22617
22540
  const i = start + vi;
22618
22541
  return renderRow(row, i, i === highlightIndex);
22619
22542
  }),
22620
- moreBelow > 0 && /* @__PURE__ */ jsx25(Text22, { color: PALETTE.muted, children: ` \u25BC ${moreBelow} more` }),
22621
- footerHint !== void 0 && /* @__PURE__ */ jsx25(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text22, { color: PALETTE.muted, children: footerHint }) })
22543
+ moreBelow > 0 && /* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: ` \u25BC ${moreBelow} more` }),
22544
+ footerHint !== void 0 && /* @__PURE__ */ jsx24(Box21, { marginTop: 1, children: /* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: footerHint }) })
22622
22545
  ]
22623
22546
  }
22624
22547
  );
@@ -22981,8 +22904,8 @@ var init_composite_closure = __esm({
22981
22904
  });
22982
22905
 
22983
22906
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/badge.tsx
22984
- import { Text as Text23 } from "ink";
22985
- import { jsx as jsx26 } from "react/jsx-runtime";
22907
+ import { Text as Text22 } from "ink";
22908
+ import { jsx as jsx25 } from "react/jsx-runtime";
22986
22909
  function previewBadge(annotation) {
22987
22910
  switch (annotation) {
22988
22911
  case "new":
@@ -23001,7 +22924,7 @@ function PreviewBadge({
23001
22924
  badge,
23002
22925
  highlighted = false
23003
22926
  }) {
23004
- return badge ? /* @__PURE__ */ jsx26(Text23, { color: !highlighted && badge.dim ? PALETTE.muted : badge.color, bold: badge.bold, children: badge.char }) : /* @__PURE__ */ jsx26(Text23, { children: " " });
22927
+ return badge ? /* @__PURE__ */ jsx25(Text22, { color: !highlighted && badge.dim ? PALETTE.muted : badge.color, bold: badge.bold, children: badge.char }) : /* @__PURE__ */ jsx25(Text22, { children: " " });
23005
22928
  }
23006
22929
  var init_badge = __esm({
23007
22930
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/badge.tsx"() {
@@ -23012,8 +22935,8 @@ var init_badge = __esm({
23012
22935
 
23013
22936
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GroupedSidebar.tsx
23014
22937
  import figures5 from "figures";
23015
- import { Box as Box23, Text as Text24 } from "ink";
23016
- import { jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
22938
+ import { Box as Box22, Text as Text23 } from "ink";
22939
+ import { jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
23017
22940
  function hasDirectChild(node) {
23018
22941
  return node.slots.some((slot) => (slot.allowedComponents ?? []).some((target) => target !== node.name));
23019
22942
  }
@@ -23432,8 +23355,8 @@ function GroupedSidebar(props) {
23432
23355
  const start = windowed ? Math.max(0, scrollOffset ?? 0) : 0;
23433
23356
  const end = windowed ? start + (visibleCount ?? allRows.length) + 1 : allRows.length;
23434
23357
  const rows = windowed ? allRows.slice(start, end) : allRows;
23435
- return /* @__PURE__ */ jsxs23(WindowedPanel, { width, height: props.height, title, focused, children: [
23436
- allRows.length === 0 && emptyMessage !== void 0 && /* @__PURE__ */ jsxs23(Text24, { color: PALETTE.warning, children: [
23358
+ return /* @__PURE__ */ jsxs22(WindowedPanel, { width, height: props.height, title, focused, children: [
23359
+ allRows.length === 0 && emptyMessage !== void 0 && /* @__PURE__ */ jsxs22(Text23, { color: PALETTE.warning, children: [
23437
23360
  " ",
23438
23361
  emptyMessage
23439
23362
  ] }),
@@ -23463,13 +23386,13 @@ function GroupedSidebar(props) {
23463
23386
  isOwn: rs?.isOwn ?? false,
23464
23387
  isCursor
23465
23388
  });
23466
- return /* @__PURE__ */ jsxs23(Box23, { children: [
23467
- isCursor ? /* @__PURE__ */ jsx27(Text24, { color: PALETTE.accent, bold: true, children: figures5.pointer }) : /* @__PURE__ */ jsx27(Text24, { children: " " }),
23468
- /* @__PURE__ */ jsx27(PreviewBadge, { badge, highlighted: isSelected }),
23469
- selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */ jsx27(Text24, { color: !isSelected && selDim ? PALETTE.muted : selColor, bold: selBold, children: " " + selGlyph }) : /* @__PURE__ */ jsx27(Text24, { children: " " })),
23470
- aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */ jsx27(Text24, { color: PALETTE.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx27(Text24, { children: " " })),
23471
- /* @__PURE__ */ jsxs23(
23472
- Text24,
23389
+ return /* @__PURE__ */ jsxs22(Box22, { children: [
23390
+ isCursor ? /* @__PURE__ */ jsx26(Text23, { color: PALETTE.accent, bold: true, children: figures5.pointer }) : /* @__PURE__ */ jsx26(Text23, { children: " " }),
23391
+ /* @__PURE__ */ jsx26(PreviewBadge, { badge, highlighted: isSelected }),
23392
+ selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */ jsx26(Text23, { color: !isSelected && selDim ? PALETTE.muted : selColor, bold: selBold, children: " " + selGlyph }) : /* @__PURE__ */ jsx26(Text23, { children: " " })),
23393
+ aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */ jsx26(Text23, { color: PALETTE.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx26(Text23, { children: " " })),
23394
+ /* @__PURE__ */ jsxs22(
23395
+ Text23,
23473
23396
  {
23474
23397
  color: isSelected ? PALETTE.accent : labelStyle.dim ? PALETTE.muted : labelStyle.color,
23475
23398
  bold: isSelected || labelStyle.bold,
@@ -23482,10 +23405,10 @@ function GroupedSidebar(props) {
23482
23405
  ]
23483
23406
  }
23484
23407
  ),
23485
- inheritanceStyle.glyph && /* @__PURE__ */ jsx27(Text24, { color: inheritanceStyle.dim ? PALETTE.muted : inheritanceStyle.color, bold: inheritanceStyle.bold, children: " " + inheritanceStyle.glyph })
23408
+ inheritanceStyle.glyph && /* @__PURE__ */ jsx26(Text23, { color: inheritanceStyle.dim ? PALETTE.muted : inheritanceStyle.color, bold: inheritanceStyle.bold, children: " " + inheritanceStyle.glyph })
23486
23409
  ] }, row.key);
23487
23410
  }),
23488
- windowed && /* @__PURE__ */ jsx27(WindowFooter, { above: start, below: Math.max(0, allRows.length - end) })
23411
+ windowed && /* @__PURE__ */ jsx26(WindowFooter, { above: start, below: Math.max(0, allRows.length - end) })
23489
23412
  ] });
23490
23413
  }
23491
23414
  var GLYPH_EXPAND_COLLAPSED, GLYPH_EXPAND_EXPANDED, GLYPH_TREE_MID, GLYPH_TREE_LAST, GLYPH_WARN, GLYPH_ERROR;
@@ -23614,8 +23537,8 @@ var init_use_terminal_size = __esm({
23614
23537
 
23615
23538
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/HelpOverlay.tsx
23616
23539
  import React11 from "react";
23617
- import { Box as Box24, Text as Text25 } from "ink";
23618
- import { Fragment as Fragment4, jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
23540
+ import { Box as Box23, Text as Text24 } from "ink";
23541
+ import { Fragment as Fragment3, jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
23619
23542
  function HelpOverlay(props) {
23620
23543
  const { onClose } = props;
23621
23544
  const { columns: terminalColumns, rows: terminalRows } = useTerminalSize();
@@ -23626,8 +23549,8 @@ function HelpOverlay(props) {
23626
23549
  if (input === "h" || key.escape) onClose();
23627
23550
  }, props.handleInput !== false);
23628
23551
  if (props.sections) {
23629
- return /* @__PURE__ */ jsxs24(
23630
- Box24,
23552
+ return /* @__PURE__ */ jsxs23(
23553
+ Box23,
23631
23554
  {
23632
23555
  flexDirection: "column",
23633
23556
  borderStyle: "round",
@@ -23636,19 +23559,19 @@ function HelpOverlay(props) {
23636
23559
  height: panelHeight,
23637
23560
  overflowY: "hidden",
23638
23561
  children: [
23639
- /* @__PURE__ */ jsx28(Text25, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
23640
- props.sections.map((section) => /* @__PURE__ */ jsxs24(React11.Fragment, { children: [
23641
- /* @__PURE__ */ jsx28(Text25, { children: " " }),
23642
- /* @__PURE__ */ jsx28(Text25, { bold: true, children: section.title }),
23643
- section.entries.map((entry) => /* @__PURE__ */ jsx28(Text25, { children: entry.keys ? " " + entry.keys.padEnd(16) + " " + entry.label : " " + entry.label }, entry.keys + entry.label))
23562
+ /* @__PURE__ */ jsx27(Text24, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
23563
+ props.sections.map((section) => /* @__PURE__ */ jsxs23(React11.Fragment, { children: [
23564
+ /* @__PURE__ */ jsx27(Text24, { children: " " }),
23565
+ /* @__PURE__ */ jsx27(Text24, { bold: true, children: section.title }),
23566
+ section.entries.map((entry) => /* @__PURE__ */ jsx27(Text24, { children: entry.keys ? " " + entry.keys.padEnd(16) + " " + entry.label : " " + entry.label }, entry.keys + entry.label))
23644
23567
  ] }, section.title))
23645
23568
  ]
23646
23569
  }
23647
23570
  );
23648
23571
  }
23649
23572
  const mode = props.mode;
23650
- return /* @__PURE__ */ jsxs24(
23651
- Box24,
23573
+ return /* @__PURE__ */ jsxs23(
23574
+ Box23,
23652
23575
  {
23653
23576
  flexDirection: "column",
23654
23577
  borderStyle: "round",
@@ -23657,31 +23580,31 @@ function HelpOverlay(props) {
23657
23580
  height: panelHeight,
23658
23581
  overflowY: "hidden",
23659
23582
  children: [
23660
- /* @__PURE__ */ jsx28(Text25, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
23661
- /* @__PURE__ */ jsx28(Text25, { children: " " }),
23662
- /* @__PURE__ */ jsx28(Text25, { bold: true, children: "Navigation" }),
23663
- /* @__PURE__ */ jsx28(Text25, { children: " \u2191 / k / PgUp Scroll up" }),
23664
- /* @__PURE__ */ jsx28(Text25, { children: " \u2193 / j / PgDn Scroll down" }),
23665
- /* @__PURE__ */ jsx28(Text25, { children: " g / Home Jump to top" }),
23666
- /* @__PURE__ */ jsx28(Text25, { children: " G / End Jump to bottom" }),
23667
- mode === "review" && /* @__PURE__ */ jsxs24(Fragment4, { children: [
23668
- /* @__PURE__ */ jsx28(Text25, { children: " " }),
23669
- /* @__PURE__ */ jsx28(Text25, { bold: true, children: "[Review mode only]" }),
23670
- /* @__PURE__ */ jsx28(Text25, { children: " Tab Toggle sidebar/detail" }),
23671
- /* @__PURE__ */ jsx28(Text25, { children: " a Accept component" }),
23672
- /* @__PURE__ */ jsx28(Text25, { children: " r Reject component" }),
23673
- /* @__PURE__ */ jsx28(Text25, { children: " e Edit proposal" }),
23674
- /* @__PURE__ */ jsx28(Text25, { children: " s Toggle source code" }),
23675
- /* @__PURE__ */ jsx28(Text25, { children: " A Approve all" }),
23676
- /* @__PURE__ */ jsx28(Text25, { children: " F Open finalize dialog" }),
23677
- /* @__PURE__ */ jsx28(Text25, { children: " Ctrl+S Save draft" }),
23678
- /* @__PURE__ */ jsx28(Text25, { children: " Ctrl+Z Undo" }),
23679
- /* @__PURE__ */ jsx28(Text25, { children: " Ctrl+Y Redo" }),
23680
- /* @__PURE__ */ jsx28(Text25, { children: " Esc Exit edit / close" })
23583
+ /* @__PURE__ */ jsx27(Text24, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
23584
+ /* @__PURE__ */ jsx27(Text24, { children: " " }),
23585
+ /* @__PURE__ */ jsx27(Text24, { bold: true, children: "Navigation" }),
23586
+ /* @__PURE__ */ jsx27(Text24, { children: " \u2191 / k / PgUp Scroll up" }),
23587
+ /* @__PURE__ */ jsx27(Text24, { children: " \u2193 / j / PgDn Scroll down" }),
23588
+ /* @__PURE__ */ jsx27(Text24, { children: " g / Home Jump to top" }),
23589
+ /* @__PURE__ */ jsx27(Text24, { children: " G / End Jump to bottom" }),
23590
+ mode === "review" && /* @__PURE__ */ jsxs23(Fragment3, { children: [
23591
+ /* @__PURE__ */ jsx27(Text24, { children: " " }),
23592
+ /* @__PURE__ */ jsx27(Text24, { bold: true, children: "[Review mode only]" }),
23593
+ /* @__PURE__ */ jsx27(Text24, { children: " Tab Toggle sidebar/detail" }),
23594
+ /* @__PURE__ */ jsx27(Text24, { children: " a Accept component" }),
23595
+ /* @__PURE__ */ jsx27(Text24, { children: " r Reject component" }),
23596
+ /* @__PURE__ */ jsx27(Text24, { children: " e Edit proposal" }),
23597
+ /* @__PURE__ */ jsx27(Text24, { children: " s Toggle source code" }),
23598
+ /* @__PURE__ */ jsx27(Text24, { children: " A Approve all" }),
23599
+ /* @__PURE__ */ jsx27(Text24, { children: " F Open finalize dialog" }),
23600
+ /* @__PURE__ */ jsx27(Text24, { children: " Ctrl+S Save draft" }),
23601
+ /* @__PURE__ */ jsx27(Text24, { children: " Ctrl+Z Undo" }),
23602
+ /* @__PURE__ */ jsx27(Text24, { children: " Ctrl+Y Redo" }),
23603
+ /* @__PURE__ */ jsx27(Text24, { children: " Esc Exit edit / close" })
23681
23604
  ] }),
23682
- /* @__PURE__ */ jsx28(Text25, { children: " " }),
23683
- /* @__PURE__ */ jsx28(Text25, { children: " h Close help" }),
23684
- /* @__PURE__ */ jsx28(Text25, { children: " q Quit" })
23605
+ /* @__PURE__ */ jsx27(Text24, { children: " " }),
23606
+ /* @__PURE__ */ jsx27(Text24, { children: " h Close help" }),
23607
+ /* @__PURE__ */ jsx27(Text24, { children: " q Quit" })
23685
23608
  ]
23686
23609
  }
23687
23610
  );
@@ -23761,8 +23684,8 @@ var init_sidebar_input = __esm({
23761
23684
  });
23762
23685
 
23763
23686
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/SearchMatchSummary.tsx
23764
- import { Box as Box25, Text as Text26 } from "ink";
23765
- import { Fragment as Fragment5, jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
23687
+ import { Box as Box24, Text as Text25 } from "ink";
23688
+ import { Fragment as Fragment4, jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
23766
23689
  function SearchMatchSummary({
23767
23690
  open,
23768
23691
  query,
@@ -23773,17 +23696,17 @@ function SearchMatchSummary({
23773
23696
  marginTop
23774
23697
  }) {
23775
23698
  if (hidden) return null;
23776
- return /* @__PURE__ */ jsxs25(Fragment5, { children: [
23777
- open && /* @__PURE__ */ jsxs25(Box25, { marginTop, flexDirection: "column", children: [
23778
- /* @__PURE__ */ jsxs25(Text26, { children: [
23699
+ return /* @__PURE__ */ jsxs24(Fragment4, { children: [
23700
+ open && /* @__PURE__ */ jsxs24(Box24, { marginTop, flexDirection: "column", children: [
23701
+ /* @__PURE__ */ jsxs24(Text25, { children: [
23779
23702
  `/${query}`,
23780
- /* @__PURE__ */ jsx29(Text26, { color: PALETTE.accent, children: "\u258E" }),
23781
- query && /* @__PURE__ */ jsx29(Text26, { color: PALETTE.muted, children: formatSearchMatchSummary(matches, total) }),
23782
- /* @__PURE__ */ jsx29(Text26, { children: " \xB7 [Esc] leave" })
23703
+ /* @__PURE__ */ jsx28(Text25, { color: PALETTE.accent, children: "\u258E" }),
23704
+ query && /* @__PURE__ */ jsx28(Text25, { color: PALETTE.muted, children: formatSearchMatchSummary(matches, total) }),
23705
+ /* @__PURE__ */ jsx28(Text25, { children: " \xB7 [Esc] leave" })
23783
23706
  ] }),
23784
- autocompleteCandidates.length > 1 && /* @__PURE__ */ jsx29(Text26, { color: PALETTE.muted, children: ` possibilities: ${autocompleteCandidates.join(" \xB7 ").slice(0, 120)}` })
23707
+ autocompleteCandidates.length > 1 && /* @__PURE__ */ jsx28(Text25, { color: PALETTE.muted, children: ` possibilities: ${autocompleteCandidates.join(" \xB7 ").slice(0, 120)}` })
23785
23708
  ] }),
23786
- !open && query && /* @__PURE__ */ jsx29(Box25, { marginTop, children: /* @__PURE__ */ jsx29(Text26, { children: `/${query}${formatSearchMatchSummary(matches, total)} \xB7 [Esc] clear` }) })
23709
+ !open && query && /* @__PURE__ */ jsx28(Box24, { marginTop, children: /* @__PURE__ */ jsx28(Text25, { children: `/${query}${formatSearchMatchSummary(matches, total)} \xB7 [Esc] clear` }) })
23787
23710
  ] });
23788
23711
  }
23789
23712
  var init_SearchMatchSummary = __esm({
@@ -24735,7 +24658,7 @@ function useScopeGate({ components, tokenCount, tokensWidth, onConfirm, onQuit }
24735
24658
  panelOpen: false,
24736
24659
  entryCount: 0
24737
24660
  });
24738
- const panelLayout2 = useMemo3(() => computePanelLayout(visibleCount), [visibleCount]);
24661
+ const panelLayout = useMemo3(() => computePanelLayout(visibleCount), [visibleCount]);
24739
24662
  useEffect13(() => {
24740
24663
  setNav((prev) => {
24741
24664
  const maxIdx = Math.max(0, visibleRows.length - 1);
@@ -25019,7 +24942,7 @@ function useScopeGate({ components, tokenCount, tokensWidth, onConfirm, onQuit }
25019
24942
  // layout
25020
24943
  totalWidth,
25021
24944
  columnPlan,
25022
- panelLayout: panelLayout2,
24945
+ panelLayout,
25023
24946
  visibleCount,
25024
24947
  panelMaxRows,
25025
24948
  // sidebar
@@ -25082,8 +25005,8 @@ var init_use_scope_gate = __esm({
25082
25005
 
25083
25006
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/screen.tsx
25084
25007
  import { useEffect as useEffect14, useMemo as useMemo4 } from "react";
25085
- import { Box as Box26, Text as Text27 } from "ink";
25086
- import { Fragment as Fragment6, jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
25008
+ import { Box as Box25, Text as Text26 } from "ink";
25009
+ import { Fragment as Fragment5, jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
25087
25010
  function ScopeGateScreen({
25088
25011
  components,
25089
25012
  tokensPath,
@@ -25120,24 +25043,24 @@ function ScopeGateScreen({
25120
25043
  onQuit();
25121
25044
  }
25122
25045
  });
25123
- const { search, graph, columnPlan, panelLayout: panelLayout2, counters } = gate;
25046
+ const { search, graph, columnPlan, panelLayout, counters } = gate;
25124
25047
  if (gate.showHelp) {
25125
- return /* @__PURE__ */ jsx30(HelpOverlay, { sections: HELP_SECTIONS, handleInput: false, onClose: gate.closeHelp });
25126
- }
25127
- return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", children: [
25128
- /* @__PURE__ */ jsx30(StepHeader, { step: "scope-gate" }),
25129
- /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", paddingX: 2, children: [
25130
- /* @__PURE__ */ jsxs26(Box26, { flexDirection: "row", flexWrap: "wrap", children: [
25131
- /* @__PURE__ */ jsx30(CounterStrip, { counters, totalWidth: gate.totalWidth }),
25132
- gate.aiExcludedCount > 0 && /* @__PURE__ */ jsxs26(Text27, { color: PALETTE.muted, children: [
25048
+ return /* @__PURE__ */ jsx29(HelpOverlay, { sections: HELP_SECTIONS, handleInput: false, onClose: gate.closeHelp });
25049
+ }
25050
+ return /* @__PURE__ */ jsxs25(Box25, { flexDirection: "column", children: [
25051
+ /* @__PURE__ */ jsx29(StepHeader, { step: "scope-gate" }),
25052
+ /* @__PURE__ */ jsxs25(Box25, { flexDirection: "column", paddingX: 2, children: [
25053
+ /* @__PURE__ */ jsxs25(Box25, { flexDirection: "row", flexWrap: "wrap", children: [
25054
+ /* @__PURE__ */ jsx29(CounterStrip, { counters, totalWidth: gate.totalWidth }),
25055
+ gate.aiExcludedCount > 0 && /* @__PURE__ */ jsxs25(Text26, { color: PALETTE.muted, children: [
25133
25056
  `${gate.aiExcludedCount} component${gate.aiExcludedCount === 1 ? "" : "s"} flagged by AI`,
25134
- gate.aiRows.length > 0 && /* @__PURE__ */ jsx30(Text27, { color: PALETTE.accent, children: " \u2014 press [x] to see why" })
25057
+ gate.aiRows.length > 0 && /* @__PURE__ */ jsx29(Text26, { color: PALETTE.accent, children: " \u2014 press [x] to see why" })
25135
25058
  ] })
25136
25059
  ] }),
25137
- 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.` }),
25138
- 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." }) }),
25139
- /* @__PURE__ */ jsxs26(Box26, { flexDirection: "row", alignItems: "stretch", children: [
25140
- gate.aiRationalePanelOpen ? /* @__PURE__ */ jsx30(
25060
+ 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.` }),
25061
+ 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." }) }),
25062
+ /* @__PURE__ */ jsxs25(Box25, { flexDirection: "row", alignItems: "stretch", children: [
25063
+ gate.aiRationalePanelOpen ? /* @__PURE__ */ jsx29(
25141
25064
  GotoBanner,
25142
25065
  {
25143
25066
  title: `Review flags (${gate.aiExcludedCount})`,
@@ -25147,7 +25070,7 @@ function ScopeGateScreen({
25147
25070
  width: columnPlan.main,
25148
25071
  footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [x/Esc] close"
25149
25072
  }
25150
- ) : /* @__PURE__ */ jsx30(
25073
+ ) : /* @__PURE__ */ jsx29(
25151
25074
  GroupedSidebar,
25152
25075
  {
25153
25076
  items: gate.groupedItems,
@@ -25159,7 +25082,7 @@ function ScopeGateScreen({
25159
25082
  expandedGroups: gate.expandedGroups,
25160
25083
  onToggleExpanded: gate.toggleExpanded,
25161
25084
  width: columnPlan.main,
25162
- height: panelLayout2.height,
25085
+ height: panelLayout.height,
25163
25086
  title: "Components",
25164
25087
  wrapLabels: true,
25165
25088
  focused: gate.focusedColumn === "main",
@@ -25175,25 +25098,25 @@ function ScopeGateScreen({
25175
25098
  graph: graph.nodes
25176
25099
  }
25177
25100
  ),
25178
- columnPlan.layout === "two-column" && /* @__PURE__ */ jsxs26(Fragment6, { children: [
25179
- /* @__PURE__ */ jsx30(Box26, { width: 2, flexShrink: 0 }),
25180
- /* @__PURE__ */ jsx30(
25101
+ columnPlan.layout === "two-column" && /* @__PURE__ */ jsxs25(Fragment5, { children: [
25102
+ /* @__PURE__ */ jsx29(Box25, { width: 2, flexShrink: 0 }),
25103
+ /* @__PURE__ */ jsx29(
25181
25104
  TokensColumn,
25182
25105
  {
25183
25106
  width: columnPlan.tokens,
25184
25107
  tokens,
25185
25108
  cursor: gate.safeTokensCursor,
25186
25109
  focused: gate.focusedColumn === "tokens",
25187
- height: panelLayout2.height,
25110
+ height: panelLayout.height,
25188
25111
  title: `Design tokens (${tokens.length}) \xB7 read only`,
25189
- visibleCount: panelLayout2.sideVisibleCount
25112
+ visibleCount: panelLayout.sideVisibleCount
25190
25113
  }
25191
25114
  )
25192
25115
  ] })
25193
25116
  ] }),
25194
- gate.cyclesPanelOpen && /* @__PURE__ */ jsx30(CyclesPanel, { cycles: gate.slotCycles, cursor: gate.cyclesCursor }),
25195
- gate.pendingRejectCascade && /* @__PURE__ */ jsx30(RejectPrompt, { pending: gate.pendingRejectCascade }),
25196
- /* @__PURE__ */ jsx30(
25117
+ gate.cyclesPanelOpen && /* @__PURE__ */ jsx29(CyclesPanel, { cycles: gate.slotCycles, cursor: gate.cyclesCursor }),
25118
+ gate.pendingRejectCascade && /* @__PURE__ */ jsx29(RejectPrompt, { pending: gate.pendingRejectCascade }),
25119
+ /* @__PURE__ */ jsx29(
25197
25120
  SearchMatchSummary,
25198
25121
  {
25199
25122
  open: search.searchOpen,
@@ -25204,7 +25127,7 @@ function ScopeGateScreen({
25204
25127
  marginTop: 1
25205
25128
  }
25206
25129
  ),
25207
- /* @__PURE__ */ jsx30(
25130
+ /* @__PURE__ */ jsx29(
25208
25131
  CompactControlBar,
25209
25132
  {
25210
25133
  hasGroupRoots: gate.hasGroupRoots,
@@ -25386,18 +25309,8 @@ function generationLogInputs(input) {
25386
25309
  has_tokens: input.hasTokens
25387
25310
  };
25388
25311
  }
25389
- function lastProgress(progress) {
25390
- const { activity, ...rest } = progress;
25391
- const failed = activity.filter((item) => item.state === "failed");
25392
- return {
25393
- final_progress: rest,
25394
- ...failed.length > 0 ? {
25395
- failed_components: failed.slice(0, MAX_LOGGED_FAILURES).map((item) => ({ name: item.name, error: truncate(item.error ?? "", MAX_LOGGED_ERROR) }))
25396
- } : {}
25397
- };
25398
- }
25399
25312
  function generationLogOutputs(result, progress) {
25400
- const last = progress ? lastProgress(progress) : {};
25313
+ const last = progress ? { final_progress: progress } : {};
25401
25314
  if (!result.ok) {
25402
25315
  return { outputs: { result: "failed", failed_step: result.step, error: result.message, ...last }, status: "error" };
25403
25316
  }
@@ -25416,21 +25329,7 @@ function generationLogOutputs(result, progress) {
25416
25329
  };
25417
25330
  }
25418
25331
  function initialProgress2() {
25419
- return { components: null, activity: [], mapTokens: "idle", mapTokensEligible: null };
25420
- }
25421
- function applyActivityEvent(event, previous, now) {
25422
- if (event.kind !== "component:started" && event.kind !== "component:completed" && event.kind !== "component:cached" && event.kind !== "component:failed") {
25423
- return [...previous];
25424
- }
25425
- const index = previous.findIndex((item2) => item2.name === event.name);
25426
- const startedAt = previous[index]?.startedAt ?? now;
25427
- const item = event.kind === "component:started" ? {
25428
- name: event.name,
25429
- state: "running",
25430
- startedAt,
25431
- ...event.attempt > 1 ? { detail: `attempt ${event.attempt}` } : {}
25432
- } : 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 };
25433
- return index >= 0 ? previous.map((existing, i) => i === index ? item : existing) : [...previous, item];
25332
+ return { components: null, mapTokens: "idle", mapTokensEligible: null };
25434
25333
  }
25435
25334
  function shouldRunMapTokens(counts) {
25436
25335
  return counts.mappablePropCount > 0 && counts.rawTokenCount > 0;
@@ -25474,20 +25373,17 @@ function progressRows2(progress, agent, rowMs = []) {
25474
25373
  }
25475
25374
  return withTimes(rows, rowMs);
25476
25375
  }
25477
- var MAX_LOGGED_FAILURES, MAX_LOGGED_ERROR, capitalize;
25376
+ var capitalize;
25478
25377
  var init_logic11 = __esm({
25479
25378
  "packages/experience-design-system-cli/src/tui/import/steps/08-generation/logic.ts"() {
25480
25379
  "use strict";
25481
- init_activity();
25482
25380
  init_logic4();
25483
- MAX_LOGGED_FAILURES = 10;
25484
- MAX_LOGGED_ERROR = 300;
25485
25381
  capitalize = (name) => name.charAt(0).toUpperCase() + name.slice(1);
25486
25382
  }
25487
25383
  });
25488
25384
 
25489
25385
  // packages/experience-design-system-cli/src/tui/import/steps/08-generation/screen.tsx
25490
- import { jsx as jsx31 } from "react/jsx-runtime";
25386
+ import { jsx as jsx30 } from "react/jsx-runtime";
25491
25387
  function GenerationScreen({
25492
25388
  progress,
25493
25389
  agent,
@@ -25495,20 +25391,18 @@ function GenerationScreen({
25495
25391
  hasTokens,
25496
25392
  rowMs
25497
25393
  }) {
25498
- return /* @__PURE__ */ jsx31(
25394
+ return /* @__PURE__ */ jsx30(
25499
25395
  RunningStep,
25500
25396
  {
25501
25397
  step: "generation",
25502
25398
  description: describeGeneration({ acceptedCount, agent, hasTokens }),
25503
- lines: progressRows2(progress, agent, rowMs),
25504
- aside: progress.activity.length > 0 ? /* @__PURE__ */ jsx31(ActivityPanel, { title: "Components", items: progress.activity }) : void 0
25399
+ lines: progressRows2(progress, agent, rowMs)
25505
25400
  }
25506
25401
  );
25507
25402
  }
25508
25403
  var init_screen9 = __esm({
25509
25404
  "packages/experience-design-system-cli/src/tui/import/steps/08-generation/screen.tsx"() {
25510
25405
  "use strict";
25511
- init_activity_panel();
25512
25406
  init_shared2();
25513
25407
  init_logic11();
25514
25408
  }
@@ -25566,7 +25460,7 @@ var init_save_decisions = __esm({
25566
25460
  // packages/experience-design-system-cli/src/tui/import/steps/08-generation/run.ts
25567
25461
  import { resolve as resolve25 } from "node:path";
25568
25462
  async function runGeneration(input, onProgress, deps = realDeps4) {
25569
- let progress = { components: null, activity: [], mapTokens: "idle", mapTokensEligible: null };
25463
+ let progress = { components: null, mapTokens: "idle", mapTokensEligible: null };
25570
25464
  const update = (change) => {
25571
25465
  progress = { ...progress, ...change };
25572
25466
  onProgress(progress);
@@ -25594,10 +25488,7 @@ async function runGeneration(input, onProgress, deps = realDeps4) {
25594
25488
  noCache: input.noCache,
25595
25489
  existingEntitiesPath: input.existingEntitiesPath,
25596
25490
  precomputedCachedNames: new Set(handedOverNames),
25597
- onProgress: (event) => update({
25598
- components: applyProgressEvent2(event, progress.components, accepted.length),
25599
- activity: applyActivityEvent(event, progress.activity, Date.now())
25600
- })
25491
+ onProgress: (event) => update({ components: applyProgressEvent2(event, progress.components, accepted.length) })
25601
25492
  });
25602
25493
  } catch (error) {
25603
25494
  return fail2("generate components", errorMessage3(error));
@@ -25689,7 +25580,6 @@ var init_run2 = __esm({
25689
25580
  init_src3();
25690
25581
  init_find_skill_path();
25691
25582
  init_logic9();
25692
- init_logic11();
25693
25583
  init_map_tokens();
25694
25584
  init_save_decisions();
25695
25585
  COMPONENTS_SKILL_PATH = findSkillPath("generate-components.md");
@@ -25718,7 +25608,7 @@ function useGeneration(input) {
25718
25608
  return;
25719
25609
  }
25720
25610
  setState({ status: "running", progress: initialProgress2(), rowMs: [] });
25721
- let lastProgress2;
25611
+ let lastProgress;
25722
25612
  const startedAt = Date.now();
25723
25613
  let rowMs = [];
25724
25614
  startDebugRun({
@@ -25728,13 +25618,13 @@ function useGeneration(input) {
25728
25618
  inputs: generationLogInputs(input)
25729
25619
  });
25730
25620
  void runGeneration(input, (progress) => {
25731
- lastProgress2 = progress;
25621
+ lastProgress = progress;
25732
25622
  rowMs = trackFinished(rowMs, progressRows2(progress, input.agent), Date.now() - startedAt);
25733
25623
  if (current.current === input) setState({ status: "running", progress, rowMs });
25734
25624
  }).then((result) => {
25735
25625
  if (current.current !== input) return;
25736
25626
  void finishDebugRun({
25737
- ...generationLogOutputs(result, lastProgress2),
25627
+ ...generationLogOutputs(result, lastProgress),
25738
25628
  exitMethod: result.ok ? "saved" : "discarded"
25739
25629
  });
25740
25630
  setState({ status: "done", result });
@@ -26420,7 +26310,7 @@ var init_logic12 = __esm({
26420
26310
  });
26421
26311
 
26422
26312
  // packages/experience-design-system-cli/src/tui/import/steps/preview-validation-error/screen.tsx
26423
- import { jsx as jsx32 } from "react/jsx-runtime";
26313
+ import { jsx as jsx31 } from "react/jsx-runtime";
26424
26314
  function PreviewValidationErrorScreen({
26425
26315
  errors,
26426
26316
  missingNames,
@@ -26429,7 +26319,7 @@ function PreviewValidationErrorScreen({
26429
26319
  onQuit
26430
26320
  }) {
26431
26321
  const matchedNames = matchedComponentNames(errors, missingNames);
26432
- return /* @__PURE__ */ jsx32(
26322
+ return /* @__PURE__ */ jsx31(
26433
26323
  GateStep,
26434
26324
  {
26435
26325
  intent: "error",
@@ -26803,8 +26693,8 @@ var init_scroll_offset = __esm({
26803
26693
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx
26804
26694
  import React13, { useEffect as useEffect17, useLayoutEffect as useLayoutEffect2, useState as useState19 } from "react";
26805
26695
  import figures6 from "figures";
26806
- import { Box as Box27, measureElement, Text as Text28 } from "ink";
26807
- import { Fragment as Fragment7, jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
26696
+ import { Box as Box26, measureElement, Text as Text27 } from "ink";
26697
+ import { Fragment as Fragment6, jsx as jsx32, jsxs as jsxs26 } from "react/jsx-runtime";
26808
26698
  function createCommonRowProps(selected, focusLevel, editingField, textCursor, valueCursor, cursorVisible, editingValue, valueText, width) {
26809
26699
  return {
26810
26700
  selected,
@@ -26942,14 +26832,14 @@ function serializeState(state2, originalJson) {
26942
26832
  return JSON.stringify(entry, null, 2);
26943
26833
  }
26944
26834
  function Picker({ value, active }) {
26945
- return /* @__PURE__ */ jsxs27(Box27, { children: [
26946
- active && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.warning, children: "\u2039" }),
26947
- /* @__PURE__ */ jsx33(Text28, { color: active ? PALETTE.warning : void 0, bold: active, children: value }),
26948
- active && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.warning, children: "\u203A" })
26835
+ return /* @__PURE__ */ jsxs26(Box26, { children: [
26836
+ active && /* @__PURE__ */ jsx32(Text27, { color: PALETTE.warning, children: "\u2039" }),
26837
+ /* @__PURE__ */ jsx32(Text27, { color: active ? PALETTE.warning : void 0, bold: active, children: value }),
26838
+ active && /* @__PURE__ */ jsx32(Text27, { color: PALETTE.warning, children: "\u203A" })
26949
26839
  ] });
26950
26840
  }
26951
26841
  function Toggle({ value, active }) {
26952
- return /* @__PURE__ */ jsx33(Box27, { children: /* @__PURE__ */ jsx33(Text28, { color: active ? PALETTE.warning : value ? PALETTE.success : PALETTE.border, children: value ? "[\u2713]" : "[ ]" }) });
26842
+ return /* @__PURE__ */ jsx32(Box26, { children: /* @__PURE__ */ jsx32(Text27, { color: active ? PALETTE.warning : value ? PALETTE.success : PALETTE.border, children: value ? "[\u2713]" : "[ ]" }) });
26953
26843
  }
26954
26844
  function InlinePropField({
26955
26845
  label,
@@ -26958,8 +26848,8 @@ function InlinePropField({
26958
26848
  flexible = false,
26959
26849
  width
26960
26850
  }) {
26961
- return /* @__PURE__ */ jsxs27(Box27, { width, gap: 1, flexShrink: flexible ? 1 : 0, flexGrow: flexible ? 1 : 0, flexWrap: "wrap", children: [
26962
- /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, wrap: "truncate-end", children: [
26851
+ return /* @__PURE__ */ jsxs26(Box26, { width, gap: 1, flexShrink: flexible ? 1 : 0, flexGrow: flexible ? 1 : 0, flexWrap: "wrap", children: [
26852
+ /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, wrap: "truncate-end", children: [
26963
26853
  focused ? "\u203A " : " ",
26964
26854
  label
26965
26855
  ] }),
@@ -26972,19 +26862,19 @@ function RequiredField({
26972
26862
  editingField,
26973
26863
  activeField
26974
26864
  }) {
26975
- return /* @__PURE__ */ jsx33(InlinePropField, { label: "req:", focused, children: /* @__PURE__ */ jsx33(Toggle, { value, active: editingField && activeField === "required" }) });
26865
+ return /* @__PURE__ */ jsx32(InlinePropField, { label: "req:", focused, children: /* @__PURE__ */ jsx32(Toggle, { value, active: editingField && activeField === "required" }) });
26976
26866
  }
26977
26867
  function DefaultValueRow({
26978
26868
  display,
26979
26869
  active,
26980
26870
  focused
26981
26871
  }) {
26982
- return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", flexShrink: 0, children: [
26983
- /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
26872
+ return /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexWrap: "wrap", flexShrink: 0, children: [
26873
+ /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
26984
26874
  focused ? "\u203A " : " ",
26985
26875
  "default:"
26986
26876
  ] }),
26987
- active ? /* @__PURE__ */ jsx33(Picker, { value: display, active: true }) : /* @__PURE__ */ jsx33(Text28, { wrap: "wrap", children: display })
26877
+ active ? /* @__PURE__ */ jsx32(Picker, { value: display, active: true }) : /* @__PURE__ */ jsx32(Text27, { wrap: "wrap", children: display })
26988
26878
  ] });
26989
26879
  }
26990
26880
  function RowLabel({
@@ -26992,8 +26882,8 @@ function RowLabel({
26992
26882
  selected,
26993
26883
  trailing = true
26994
26884
  }) {
26995
- return /* @__PURE__ */ jsxs27(
26996
- Text28,
26885
+ return /* @__PURE__ */ jsxs26(
26886
+ Text27,
26997
26887
  {
26998
26888
  color: selected ? PALETTE.onAccent : PALETTE.accent,
26999
26889
  bold: selected,
@@ -27012,10 +26902,10 @@ function ValueInputRow({
27012
26902
  valueText,
27013
26903
  cursorVisible
27014
26904
  }) {
27015
- return /* @__PURE__ */ jsxs27(Box27, { paddingLeft: 2, children: [
27016
- /* @__PURE__ */ jsx33(Text28, { color: PALETTE.accent, children: mode === "edit" ? "\u270E " : "+ " }),
27017
- /* @__PURE__ */ jsx33(Text28, { children: valueText }),
27018
- /* @__PURE__ */ jsx33(Text28, { inverse: cursorVisible, children: " " })
26905
+ return /* @__PURE__ */ jsxs26(Box26, { paddingLeft: 2, children: [
26906
+ /* @__PURE__ */ jsx32(Text27, { color: PALETTE.accent, children: mode === "edit" ? "\u270E " : "+ " }),
26907
+ /* @__PURE__ */ jsx32(Text27, { children: valueText }),
26908
+ /* @__PURE__ */ jsx32(Text27, { inverse: cursorVisible, children: " " })
27019
26909
  ] });
27020
26910
  }
27021
26911
  function EditableListItem({
@@ -27028,9 +26918,9 @@ function EditableListItem({
27028
26918
  }) {
27029
26919
  const isBeingEdited = editingValue?.mode === "edit" && editingValue.index === index;
27030
26920
  if (isBeingEdited) {
27031
- return /* @__PURE__ */ jsx33(ValueInputRow, { mode: "edit", valueText, cursorVisible });
26921
+ return /* @__PURE__ */ jsx32(ValueInputRow, { mode: "edit", valueText, cursorVisible });
27032
26922
  }
27033
- return /* @__PURE__ */ jsx33(Box27, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx33(Text28, { color: active ? PALETTE.accent : void 0, children: active ? `${figures6.pointer} ${value}` : ` ${value}` }) });
26923
+ return /* @__PURE__ */ jsx32(Box26, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx32(Text27, { color: active ? PALETTE.accent : void 0, children: active ? `${figures6.pointer} ${value}` : ` ${value}` }) });
27034
26924
  }
27035
26925
  function EditableValueList({
27036
26926
  values,
@@ -27043,9 +26933,9 @@ function EditableValueList({
27043
26933
  emptyPaddingLeft,
27044
26934
  showAddInput
27045
26935
  }) {
27046
- return /* @__PURE__ */ jsxs27(Fragment7, { children: [
27047
- 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 }) })),
27048
- values.map((value, index) => /* @__PURE__ */ jsx33(
26936
+ return /* @__PURE__ */ jsxs26(Fragment6, { children: [
26937
+ 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 }) })),
26938
+ values.map((value, index) => /* @__PURE__ */ jsx32(
27049
26939
  EditableListItem,
27050
26940
  {
27051
26941
  value,
@@ -27057,7 +26947,7 @@ function EditableValueList({
27057
26947
  },
27058
26948
  index
27059
26949
  )),
27060
- showAddInput && editingValue?.mode === "add" && /* @__PURE__ */ jsx33(ValueInputRow, { mode: "add", valueText, cursorVisible })
26950
+ showAddInput && editingValue?.mode === "add" && /* @__PURE__ */ jsx32(ValueInputRow, { mode: "add", valueText, cursorVisible })
27061
26951
  ] });
27062
26952
  }
27063
26953
  function DefaultSubRow({
@@ -27069,51 +26959,51 @@ function DefaultSubRow({
27069
26959
  }) {
27070
26960
  const cursor = cursorVisible ? "\u2588" : " ";
27071
26961
  if (prop.type === "richtext" || prop.type === "media" || prop.type === "link") {
27072
- return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexShrink: 0, children: [
27073
- /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
26962
+ return /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexShrink: 0, children: [
26963
+ /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
27074
26964
  focused ? "\u203A " : " ",
27075
26965
  "default:"
27076
26966
  ] }),
27077
- /* @__PURE__ */ jsx33(Text28, { color: focused ? void 0 : PALETTE.muted, children: "(not applicable)" })
26967
+ /* @__PURE__ */ jsx32(Text27, { color: focused ? void 0 : PALETTE.muted, children: "(not applicable)" })
27078
26968
  ] });
27079
26969
  }
27080
26970
  if (prop.type === "boolean") {
27081
26971
  const display = prop.default === true ? "true" : prop.default === false ? "false" : "(unset)";
27082
- return /* @__PURE__ */ jsx33(DefaultValueRow, { display, active, focused });
26972
+ return /* @__PURE__ */ jsx32(DefaultValueRow, { display, active, focused });
27083
26973
  }
27084
26974
  if (prop.type === "enum") {
27085
26975
  if (prop.values.length === 0) {
27086
- return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexShrink: 0, children: [
27087
- /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
26976
+ return /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexShrink: 0, children: [
26977
+ /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
27088
26978
  focused ? "\u203A " : " ",
27089
26979
  "default:"
27090
26980
  ] }),
27091
- /* @__PURE__ */ jsx33(Text28, { color: focused ? void 0 : PALETTE.muted, children: "(no values defined)" })
26981
+ /* @__PURE__ */ jsx32(Text27, { color: focused ? void 0 : PALETTE.muted, children: "(no values defined)" })
27092
26982
  ] });
27093
26983
  }
27094
26984
  const display = typeof prop.default === "string" && prop.default !== "" ? prop.default : "(unset)";
27095
- return /* @__PURE__ */ jsx33(DefaultValueRow, { display, active, focused });
26985
+ return /* @__PURE__ */ jsx32(DefaultValueRow, { display, active, focused });
27096
26986
  }
27097
26987
  const value = typeof prop.default === "string" ? prop.default : "";
27098
26988
  if (active) {
27099
- return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "row", flexShrink: 0, children: [
27100
- /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
26989
+ return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "row", flexShrink: 0, children: [
26990
+ /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
27101
26991
  focused ? "\u203A " : " ",
27102
26992
  "default:"
27103
26993
  ] }),
27104
- /* @__PURE__ */ jsxs27(Box27, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
27105
- /* @__PURE__ */ jsx33(Text28, { children: value.slice(0, textCursor) }),
27106
- /* @__PURE__ */ jsx33(Text28, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
27107
- /* @__PURE__ */ jsx33(Text28, { children: value.slice(textCursor + 1) })
26994
+ /* @__PURE__ */ jsxs26(Box26, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
26995
+ /* @__PURE__ */ jsx32(Text27, { children: value.slice(0, textCursor) }),
26996
+ /* @__PURE__ */ jsx32(Text27, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
26997
+ /* @__PURE__ */ jsx32(Text27, { children: value.slice(textCursor + 1) })
27108
26998
  ] })
27109
26999
  ] });
27110
27000
  }
27111
- return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexShrink: 0, children: [
27112
- /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
27001
+ return /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexShrink: 0, children: [
27002
+ /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
27113
27003
  focused ? "\u203A " : " ",
27114
27004
  "default:"
27115
27005
  ] }),
27116
- /* @__PURE__ */ jsx33(Text28, { color: focused || value ? void 0 : PALETTE.muted, children: value || "(none)" })
27006
+ /* @__PURE__ */ jsx32(Text27, { color: focused || value ? void 0 : PALETTE.muted, children: value || "(none)" })
27117
27007
  ] });
27118
27008
  }
27119
27009
  function DescriptionField({
@@ -27128,20 +27018,20 @@ function DescriptionField({
27128
27018
  paddingLeft = 2
27129
27019
  }) {
27130
27020
  if (compact) {
27131
- return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
27132
- /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
27021
+ return /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
27022
+ /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
27133
27023
  focused ? "\u203A " : " ",
27134
27024
  label
27135
27025
  ] }),
27136
- /* @__PURE__ */ jsx33(Text28, { wrap: "truncate-end", color: value ? void 0 : PALETTE.muted, children: value || "\u2014" })
27026
+ /* @__PURE__ */ jsx32(Text27, { wrap: "truncate-end", color: value ? void 0 : PALETTE.muted, children: value || "\u2014" })
27137
27027
  ] });
27138
27028
  }
27139
- return /* @__PURE__ */ jsxs27(Box27, { paddingLeft, flexDirection: "column", width, flexShrink: 0, children: [
27140
- /* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
27029
+ return /* @__PURE__ */ jsxs26(Box26, { paddingLeft, flexDirection: "column", width, flexShrink: 0, children: [
27030
+ /* @__PURE__ */ jsxs26(Text27, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
27141
27031
  focused ? "\u203A " : " ",
27142
27032
  label
27143
27033
  ] }),
27144
- editing ? /* @__PURE__ */ jsx33(EditableDescription, { cursorVisible, value, textCursor }) : /* @__PURE__ */ jsx33(Text28, { wrap: "wrap", children: value || "\u2014" })
27034
+ editing ? /* @__PURE__ */ jsx32(EditableDescription, { cursorVisible, value, textCursor }) : /* @__PURE__ */ jsx32(Text27, { wrap: "wrap", children: value || "\u2014" })
27145
27035
  ] });
27146
27036
  }
27147
27037
  function EditableDescription({
@@ -27149,9 +27039,9 @@ function EditableDescription({
27149
27039
  value,
27150
27040
  textCursor
27151
27041
  }) {
27152
- return /* @__PURE__ */ jsxs27(Text28, { wrap: "wrap", children: [
27042
+ return /* @__PURE__ */ jsxs26(Text27, { wrap: "wrap", children: [
27153
27043
  value.slice(0, textCursor),
27154
- /* @__PURE__ */ jsx33(Text28, { inverse: cursorVisible, children: value[textCursor] ?? " " }),
27044
+ /* @__PURE__ */ jsx32(Text27, { inverse: cursorVisible, children: value[textCursor] ?? " " }),
27155
27045
  value.slice(textCursor + 1)
27156
27046
  ] });
27157
27047
  }
@@ -27172,9 +27062,9 @@ function PropRow({
27172
27062
  }) {
27173
27063
  const descFocused = activeField === "description";
27174
27064
  const descActive = editingField && descFocused;
27175
- return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, flexShrink: 0, children: [
27176
- /* @__PURE__ */ jsx33(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx33(RowLabel, { name: prop.name, selected }) }),
27177
- /* @__PURE__ */ jsx33(
27065
+ return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", width, flexShrink: 0, children: [
27066
+ /* @__PURE__ */ jsx32(Box26, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx32(RowLabel, { name: prop.name, selected }) }),
27067
+ /* @__PURE__ */ jsx32(
27178
27068
  DescriptionField,
27179
27069
  {
27180
27070
  value: prop.description,
@@ -27187,8 +27077,8 @@ function PropRow({
27187
27077
  paddingLeft: 0
27188
27078
  }
27189
27079
  ),
27190
- /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, flexShrink: 0, children: [
27191
- /* @__PURE__ */ jsx33(
27080
+ /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", width, flexShrink: 0, children: [
27081
+ /* @__PURE__ */ jsx32(
27192
27082
  RequiredField,
27193
27083
  {
27194
27084
  value: prop.required,
@@ -27197,21 +27087,21 @@ function PropRow({
27197
27087
  activeField
27198
27088
  }
27199
27089
  ),
27200
- /* @__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 }) })
27090
+ /* @__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 }) })
27201
27091
  ] }),
27202
- 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" }) }),
27203
- prop.type === "enum" && /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
27204
- /* @__PURE__ */ jsxs27(Text28, { color: activeField === "values" ? PALETTE.warning : PALETTE.muted, bold: activeField === "values", children: [
27092
+ 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" }) }),
27093
+ prop.type === "enum" && /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
27094
+ /* @__PURE__ */ jsxs26(Text27, { color: activeField === "values" ? PALETTE.warning : PALETTE.muted, bold: activeField === "values", children: [
27205
27095
  activeField === "values" ? "\u203A " : " ",
27206
27096
  "values:"
27207
27097
  ] }),
27208
- /* @__PURE__ */ jsxs27(Text28, { wrap: "wrap", children: [
27098
+ /* @__PURE__ */ jsxs26(Text27, { wrap: "wrap", children: [
27209
27099
  "[",
27210
27100
  prop.values.join(", "),
27211
27101
  "]"
27212
27102
  ] })
27213
27103
  ] }),
27214
- /* @__PURE__ */ jsx33(
27104
+ /* @__PURE__ */ jsx32(
27215
27105
  DefaultSubRow,
27216
27106
  {
27217
27107
  prop,
@@ -27221,13 +27111,13 @@ function PropRow({
27221
27111
  cursorVisible
27222
27112
  }
27223
27113
  ),
27224
- prop.type === "token" && prop.category === "design" && /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
27225
- /* @__PURE__ */ jsxs27(Text28, { color: activeField === "allowed" ? PALETTE.warning : PALETTE.muted, bold: activeField === "allowed", children: [
27114
+ prop.type === "token" && prop.category === "design" && /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
27115
+ /* @__PURE__ */ jsxs26(Text27, { color: activeField === "allowed" ? PALETTE.warning : PALETTE.muted, bold: activeField === "allowed", children: [
27226
27116
  activeField === "allowed" ? "\u203A " : " ",
27227
27117
  "allowed:"
27228
27118
  ] }),
27229
- 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(
27230
- Text28,
27119
+ 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(
27120
+ Text27,
27231
27121
  {
27232
27122
  color: activeField !== "allowed" && prop.allowed.length === 0 ? PALETTE.muted : void 0,
27233
27123
  wrap: "wrap",
@@ -27235,17 +27125,17 @@ function PropRow({
27235
27125
  }
27236
27126
  )
27237
27127
  ] }),
27238
- selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx33(Box27, { paddingLeft: 2, children: /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: (() => {
27128
+ selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx32(Box26, { paddingLeft: 2, children: /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: (() => {
27239
27129
  const max = Math.max(8, width - 8);
27240
27130
  const text = `~ ${rationale}`;
27241
27131
  return text.length > max ? text.slice(0, max - 1) + "\u2026" : text;
27242
27132
  })() }) }, rowKey ? `rationale-${rowKey}` : void 0),
27243
- selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs27(Box27, { paddingLeft: 2, flexDirection: "column", children: [
27244
- /* @__PURE__ */ jsxs27(Box27, { children: [
27245
- /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "values:" }),
27246
- activeField === "values" && /* @__PURE__ */ jsx33(Text28, { children: " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
27133
+ selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs26(Box26, { paddingLeft: 2, flexDirection: "column", children: [
27134
+ /* @__PURE__ */ jsxs26(Box26, { children: [
27135
+ /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "values:" }),
27136
+ activeField === "values" && /* @__PURE__ */ jsx32(Text27, { children: " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
27247
27137
  ] }),
27248
- /* @__PURE__ */ jsx33(
27138
+ /* @__PURE__ */ jsx32(
27249
27139
  EditableValueList,
27250
27140
  {
27251
27141
  values: prop.values,
@@ -27275,9 +27165,9 @@ function SlotRow({
27275
27165
  pickerCandidates,
27276
27166
  pickerCursor
27277
27167
  }) {
27278
- return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, flexShrink: 0, children: [
27279
- /* @__PURE__ */ jsx33(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx33(RowLabel, { name: slot.name, selected, trailing: false }) }),
27280
- /* @__PURE__ */ jsx33(
27168
+ return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", width, flexShrink: 0, children: [
27169
+ /* @__PURE__ */ jsx32(Box26, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx32(RowLabel, { name: slot.name, selected, trailing: false }) }),
27170
+ /* @__PURE__ */ jsx32(
27281
27171
  DescriptionField,
27282
27172
  {
27283
27173
  value: slot.description,
@@ -27290,7 +27180,7 @@ function SlotRow({
27290
27180
  paddingLeft: 0
27291
27181
  }
27292
27182
  ),
27293
- /* @__PURE__ */ jsx33(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx33(
27183
+ /* @__PURE__ */ jsx32(Box26, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx32(
27294
27184
  RequiredField,
27295
27185
  {
27296
27186
  value: slot.required,
@@ -27299,9 +27189,9 @@ function SlotRow({
27299
27189
  activeField
27300
27190
  }
27301
27191
  ) }),
27302
- !(selected && editingField && activeField === "allowedComponents") && /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
27303
- /* @__PURE__ */ jsxs27(
27304
- Text28,
27192
+ !(selected && editingField && activeField === "allowedComponents") && /* @__PURE__ */ jsxs26(Box26, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
27193
+ /* @__PURE__ */ jsxs26(
27194
+ Text27,
27305
27195
  {
27306
27196
  color: activeField === "allowedComponents" ? PALETTE.warning : PALETTE.muted,
27307
27197
  bold: activeField === "allowedComponents",
@@ -27311,12 +27201,12 @@ function SlotRow({
27311
27201
  ]
27312
27202
  }
27313
27203
  ),
27314
- slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "(any)" }) : /* @__PURE__ */ jsx33(Text28, { wrap: "wrap", children: slot.allowedComponents.join(", ") })
27204
+ slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "(any)" }) : /* @__PURE__ */ jsx32(Text27, { wrap: "wrap", children: slot.allowedComponents.join(", ") })
27315
27205
  ] }),
27316
- selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", children: [
27317
- /* @__PURE__ */ jsxs27(Box27, { children: [
27318
- /* @__PURE__ */ jsxs27(
27319
- Text28,
27206
+ selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", children: [
27207
+ /* @__PURE__ */ jsxs26(Box26, { children: [
27208
+ /* @__PURE__ */ jsxs26(
27209
+ Text27,
27320
27210
  {
27321
27211
  color: activeField === "allowedComponents" ? PALETTE.warning : PALETTE.muted,
27322
27212
  bold: activeField === "allowedComponents",
@@ -27326,9 +27216,9 @@ function SlotRow({
27326
27216
  ]
27327
27217
  }
27328
27218
  ),
27329
- 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" })
27219
+ 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" })
27330
27220
  ] }),
27331
- /* @__PURE__ */ jsx33(
27221
+ /* @__PURE__ */ jsx32(
27332
27222
  EditableValueList,
27333
27223
  {
27334
27224
  values: slot.allowedComponents,
@@ -27342,21 +27232,21 @@ function SlotRow({
27342
27232
  showAddInput: editingField && activeField === "allowedComponents"
27343
27233
  }
27344
27234
  ),
27345
- 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)" }) : (() => {
27235
+ 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)" }) : (() => {
27346
27236
  const filtered = valueText.length === 0 ? pickerCandidates : pickerCandidates.filter((n) => n.toLowerCase().includes(valueText.toLowerCase()));
27347
27237
  if (filtered.length === 0) {
27348
- return /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "(no candidates match \u2014 Enter to add as free text)" });
27238
+ return /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "(no candidates match \u2014 Enter to add as free text)" });
27349
27239
  }
27350
27240
  const cursor = pickerCursor % filtered.length;
27351
27241
  const MAX_VISIBLE = 5;
27352
27242
  const start = Math.max(0, Math.min(filtered.length - MAX_VISIBLE, cursor - 2));
27353
27243
  const slice = filtered.slice(start, start + MAX_VISIBLE);
27354
- return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", children: [
27355
- /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
27244
+ return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", children: [
27245
+ /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
27356
27246
  slice.map((name, i) => {
27357
27247
  const absIdx = start + i;
27358
27248
  const isCursor = absIdx === cursor;
27359
- return /* @__PURE__ */ jsx33(Text28, { color: isCursor ? PALETTE.accent : PALETTE.muted, children: isCursor ? ` ${figures6.pointer} ${name}` : ` ${name}` }, name);
27249
+ return /* @__PURE__ */ jsx32(Text27, { color: isCursor ? PALETTE.accent : PALETTE.muted, children: isCursor ? ` ${figures6.pointer} ${name}` : ` ${name}` }, name);
27360
27250
  })
27361
27251
  ] });
27362
27252
  })() })
@@ -28235,18 +28125,18 @@ function FieldEditor({
28235
28125
  });
28236
28126
  const innerWidth = Math.max(1, width - 2);
28237
28127
  if (parseErr) {
28238
- return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
28239
- /* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
28240
- /* @__PURE__ */ jsx33(Text28, { color: PALETTE.error, children: parseErr }),
28241
- /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "Cannot display structured editor. Fix the JSON first." })
28128
+ return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
28129
+ /* @__PURE__ */ jsx32(Text27, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
28130
+ /* @__PURE__ */ jsx32(Text27, { color: PALETTE.error, children: parseErr }),
28131
+ /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "Cannot display structured editor. Fix the JSON first." })
28242
28132
  ] });
28243
28133
  }
28244
28134
  if (props.length === 0 && slots.length === 0) {
28245
- return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
28246
- /* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
28247
- /* @__PURE__ */ jsx33(Text28, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
28248
- /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "You can add fields manually below or reject this component." }),
28249
- /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "Enter to save \xB7 Esc to discard" })
28135
+ return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
28136
+ /* @__PURE__ */ jsx32(Text27, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
28137
+ /* @__PURE__ */ jsx32(Text27, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
28138
+ /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "You can add fields manually below or reject this component." }),
28139
+ /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "Enter to save \xB7 Esc to discard" })
28250
28140
  ] });
28251
28141
  }
28252
28142
  const hasEmptyProperties = props.length === 0 && slots.length === 0;
@@ -28379,12 +28269,12 @@ function FieldEditor({
28379
28269
  const renderRow = (row, index) => {
28380
28270
  const key = rowKey(row, index);
28381
28271
  if (row.kind === "header") {
28382
- return /* @__PURE__ */ jsx33(Box27, { flexDirection: "column", paddingTop: 1, children: /* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.success, children: row.label }) }, key);
28272
+ return /* @__PURE__ */ jsx32(Box26, { flexDirection: "column", paddingTop: 1, children: /* @__PURE__ */ jsx32(Text27, { bold: true, color: PALETTE.success, children: row.label }) }, key);
28383
28273
  }
28384
28274
  if (row.kind === "component-description") {
28385
28275
  const isSelected2 = inComponentDesc && active;
28386
28276
  const isEditing = isSelected2 && focusLevel === "field" && editingField && activeField === "description";
28387
- return /* @__PURE__ */ jsx33(
28277
+ return /* @__PURE__ */ jsx32(
28388
28278
  DescriptionField,
28389
28279
  {
28390
28280
  value: editorState.componentDescription,
@@ -28415,7 +28305,7 @@ function FieldEditor({
28415
28305
  valueText,
28416
28306
  innerWidth
28417
28307
  );
28418
- return /* @__PURE__ */ jsx33(
28308
+ return /* @__PURE__ */ jsx32(
28419
28309
  PropRow,
28420
28310
  {
28421
28311
  prop: p,
@@ -28442,7 +28332,7 @@ function FieldEditor({
28442
28332
  valueText,
28443
28333
  innerWidth
28444
28334
  );
28445
- return /* @__PURE__ */ jsx33(
28335
+ return /* @__PURE__ */ jsx32(
28446
28336
  SlotRow,
28447
28337
  {
28448
28338
  slot: s,
@@ -28454,7 +28344,7 @@ function FieldEditor({
28454
28344
  key
28455
28345
  );
28456
28346
  };
28457
- return /* @__PURE__ */ jsxs27(
28347
+ return /* @__PURE__ */ jsxs26(
28458
28348
  FixedPanel,
28459
28349
  {
28460
28350
  width,
@@ -28463,9 +28353,9 @@ function FieldEditor({
28463
28353
  borderStyle: "single",
28464
28354
  borderColor: hasEmptyProperties ? PALETTE.warning : active ? PALETTE.accent : PALETTE.border,
28465
28355
  children: [
28466
- 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." }),
28356
+ 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." }),
28467
28357
  header,
28468
- /* @__PURE__ */ jsx33(Box27, { flexDirection: "column", width: innerWidth, flexShrink: 0, children: focusLevel === "field" && !inComponentDesc && currentProp ? /* @__PURE__ */ jsx33(
28358
+ /* @__PURE__ */ jsx32(Box26, { flexDirection: "column", width: innerWidth, flexShrink: 0, children: focusLevel === "field" && !inComponentDesc && currentProp ? /* @__PURE__ */ jsx32(
28469
28359
  PropRow,
28470
28360
  {
28471
28361
  prop: currentProp,
@@ -28481,7 +28371,7 @@ function FieldEditor({
28481
28371
  rationale: metadata?.props?.[currentProp.name]?.rationale ?? null,
28482
28372
  showRationale: showInlineRationales
28483
28373
  }
28484
- ) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */ jsx33(
28374
+ ) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */ jsx32(
28485
28375
  SlotRow,
28486
28376
  {
28487
28377
  slot: currentSlot,
@@ -28500,8 +28390,8 @@ function FieldEditor({
28500
28390
  ) : visibleRowSlice.map((row, index) => {
28501
28391
  const absoluteIndex = scrollStart + index;
28502
28392
  const key = rowKey(row, absoluteIndex);
28503
- return /* @__PURE__ */ jsx33(
28504
- Box27,
28393
+ return /* @__PURE__ */ jsx32(
28394
+ Box26,
28505
28395
  {
28506
28396
  ref: (node) => {
28507
28397
  if (node) rowMeasureRefs.current.set(key, node);
@@ -28514,7 +28404,7 @@ function FieldEditor({
28514
28404
  `visible-${key}`
28515
28405
  );
28516
28406
  }) }),
28517
- categoryBelow && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.success, bold: true, children: `(${categoryBelow} below)` }),
28407
+ categoryBelow && /* @__PURE__ */ jsx32(Text27, { color: PALETTE.success, bold: true, children: `(${categoryBelow} below)` }),
28518
28408
  sourceOpen && !onToggleSourceExternal && (() => {
28519
28409
  const propMeta = !inSlots && !inComponentDesc && currentProp ? metadata?.props?.[currentProp.name] : void 0;
28520
28410
  const start = propMeta?.sourceStartLine ?? null;
@@ -28523,50 +28413,50 @@ function FieldEditor({
28523
28413
  const src = metadata?.componentSource ?? null;
28524
28414
  const headerPath = path5 ?? "<unknown source path>";
28525
28415
  if (!start || !end2 || !src) {
28526
- return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
28527
- /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, bold: true, children: `source: ${headerPath}` }),
28528
- /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "(no source location captured for this prop)" }),
28529
- /* @__PURE__ */ jsx33(Text28, { children: "[s] close" })
28416
+ return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
28417
+ /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, bold: true, children: `source: ${headerPath}` }),
28418
+ /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "(no source location captured for this prop)" }),
28419
+ /* @__PURE__ */ jsx32(Text27, { children: "[s] close" })
28530
28420
  ] });
28531
28421
  }
28532
28422
  const lines = src.split("\n").slice(Math.max(0, start - 1), end2);
28533
- return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
28534
- /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, bold: true, children: `${headerPath}: lines ${start}\u2013${end2}` }),
28535
- lines.map((ln, i) => /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: ln }, `source-line-${i}`)),
28536
- /* @__PURE__ */ jsx33(Text28, { children: "[s] close \xB7 [Esc] close" })
28423
+ return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
28424
+ /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, bold: true, children: `${headerPath}: lines ${start}\u2013${end2}` }),
28425
+ lines.map((ln, i) => /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: ln }, `source-line-${i}`)),
28426
+ /* @__PURE__ */ jsx32(Text27, { children: "[s] close \xB7 [Esc] close" })
28537
28427
  ] });
28538
28428
  })(),
28539
- showHelp && /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.accent, paddingX: 1, children: [
28540
- /* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.accent, children: "Keybindings" }),
28541
- /* @__PURE__ */ jsx33(Text28, { children: " " }),
28542
- /* @__PURE__ */ jsx33(Text28, { bold: true, children: "Row navigation" }),
28543
- /* @__PURE__ */ jsx33(Text28, { children: " \u2191/\u2193 move between rows" }),
28544
- /* @__PURE__ */ jsx33(Text28, { children: " Enter edit fields on the current row" }),
28545
- /* @__PURE__ */ jsx33(Text28, { children: " d delete the current prop or slot (asks to confirm)" }),
28546
- /* @__PURE__ */ jsx33(Text28, { children: " Esc exit the panel" }),
28547
- /* @__PURE__ */ jsx33(Text28, { children: " " }),
28548
- /* @__PURE__ */ jsx33(Text28, { bold: true, children: "Field editing" }),
28549
- /* @__PURE__ */ jsx33(Text28, { children: " \u2191/\u2193/\u2190\u2192 cycle through fields" }),
28550
- /* @__PURE__ */ jsx33(Text28, { children: " \u2190/\u2192 cycle picker values \xB7 move cursor in text inputs" }),
28551
- /* @__PURE__ */ jsx33(Text28, { children: " Space/Enter toggle required" }),
28552
- /* @__PURE__ */ jsx33(Text28, { children: " Type edit description / string default" }),
28553
- /* @__PURE__ */ jsx33(Text28, { children: " Esc exit field-edit back to the row" }),
28554
- /* @__PURE__ */ jsx33(Text28, { children: " " }),
28555
- /* @__PURE__ */ jsx33(Text28, { bold: true, children: "Values / allowedComponents" }),
28556
- /* @__PURE__ */ jsx33(Text28, { children: " a / e / r add \xB7 edit \xB7 remove" }),
28557
- /* @__PURE__ */ jsx33(Text28, { children: " \u2191\u2193 navigate the list" }),
28558
- /* @__PURE__ */ jsx33(Text28, { children: " K / J reorder up \xB7 down" }),
28559
- /* @__PURE__ */ jsx33(Text28, { children: " " }),
28560
- /* @__PURE__ */ jsx33(Text28, { bold: true, children: "Panels" }),
28561
- /* @__PURE__ */ jsx33(Text28, { children: " s toggle source-view for the current prop" }),
28562
- /* @__PURE__ */ jsx33(Text28, { children: " " + propRationaleKey.padEnd(16) + " toggle prop rationale panel" }),
28563
- /* @__PURE__ */ jsx33(Text28, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
28564
- /* @__PURE__ */ jsx33(Text28, { children: " ? toggle this overlay" }),
28565
- /* @__PURE__ */ jsx33(Text28, { children: " " }),
28566
- /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "press ? or Esc to close" })
28429
+ showHelp && /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.accent, paddingX: 1, children: [
28430
+ /* @__PURE__ */ jsx32(Text27, { bold: true, color: PALETTE.accent, children: "Keybindings" }),
28431
+ /* @__PURE__ */ jsx32(Text27, { children: " " }),
28432
+ /* @__PURE__ */ jsx32(Text27, { bold: true, children: "Row navigation" }),
28433
+ /* @__PURE__ */ jsx32(Text27, { children: " \u2191/\u2193 move between rows" }),
28434
+ /* @__PURE__ */ jsx32(Text27, { children: " Enter edit fields on the current row" }),
28435
+ /* @__PURE__ */ jsx32(Text27, { children: " d delete the current prop or slot (asks to confirm)" }),
28436
+ /* @__PURE__ */ jsx32(Text27, { children: " Esc exit the panel" }),
28437
+ /* @__PURE__ */ jsx32(Text27, { children: " " }),
28438
+ /* @__PURE__ */ jsx32(Text27, { bold: true, children: "Field editing" }),
28439
+ /* @__PURE__ */ jsx32(Text27, { children: " \u2191/\u2193/\u2190\u2192 cycle through fields" }),
28440
+ /* @__PURE__ */ jsx32(Text27, { children: " \u2190/\u2192 cycle picker values \xB7 move cursor in text inputs" }),
28441
+ /* @__PURE__ */ jsx32(Text27, { children: " Space/Enter toggle required" }),
28442
+ /* @__PURE__ */ jsx32(Text27, { children: " Type edit description / string default" }),
28443
+ /* @__PURE__ */ jsx32(Text27, { children: " Esc exit field-edit back to the row" }),
28444
+ /* @__PURE__ */ jsx32(Text27, { children: " " }),
28445
+ /* @__PURE__ */ jsx32(Text27, { bold: true, children: "Values / allowedComponents" }),
28446
+ /* @__PURE__ */ jsx32(Text27, { children: " a / e / r add \xB7 edit \xB7 remove" }),
28447
+ /* @__PURE__ */ jsx32(Text27, { children: " \u2191\u2193 navigate the list" }),
28448
+ /* @__PURE__ */ jsx32(Text27, { children: " K / J reorder up \xB7 down" }),
28449
+ /* @__PURE__ */ jsx32(Text27, { children: " " }),
28450
+ /* @__PURE__ */ jsx32(Text27, { bold: true, children: "Panels" }),
28451
+ /* @__PURE__ */ jsx32(Text27, { children: " s toggle source-view for the current prop" }),
28452
+ /* @__PURE__ */ jsx32(Text27, { children: " " + propRationaleKey.padEnd(16) + " toggle prop rationale panel" }),
28453
+ /* @__PURE__ */ jsx32(Text27, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
28454
+ /* @__PURE__ */ jsx32(Text27, { children: " ? toggle this overlay" }),
28455
+ /* @__PURE__ */ jsx32(Text27, { children: " " }),
28456
+ /* @__PURE__ */ jsx32(Text27, { color: PALETTE.muted, children: "press ? or Esc to close" })
28567
28457
  ] }),
28568
- validationError && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.error, children: "\u2717 " + validationError }),
28569
- /* @__PURE__ */ jsx33(Box27, { paddingTop: 1, children: /* @__PURE__ */ jsx33(Text28, { color: pendingDelete ? PALETTE.text : PALETTE.muted, children: modeLabel }) })
28458
+ validationError && /* @__PURE__ */ jsx32(Text27, { color: PALETTE.error, children: "\u2717 " + validationError }),
28459
+ /* @__PURE__ */ jsx32(Box26, { paddingTop: 1, children: /* @__PURE__ */ jsx32(Text27, { color: pendingDelete ? PALETTE.text : PALETTE.muted, children: modeLabel }) })
28570
28460
  ]
28571
28461
  }
28572
28462
  );
@@ -28623,23 +28513,23 @@ var init_wrap_text = __esm({
28623
28513
  });
28624
28514
 
28625
28515
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationaleLine.tsx
28626
- import { Box as Box28, Text as Text29 } from "ink";
28627
- import { jsx as jsx34, jsxs as jsxs28 } from "react/jsx-runtime";
28516
+ import { Box as Box27, Text as Text28 } from "ink";
28517
+ import { jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
28628
28518
  function RationaleLine({ line, active }) {
28629
28519
  if (line.kind === "blank") {
28630
- return /* @__PURE__ */ jsx34(Box28, { children: /* @__PURE__ */ jsx34(Text29, { children: " " }) });
28520
+ return /* @__PURE__ */ jsx33(Box27, { children: /* @__PURE__ */ jsx33(Text28, { children: " " }) });
28631
28521
  }
28632
28522
  if (line.kind === "heading") {
28633
- return /* @__PURE__ */ jsx34(Box28, { children: /* @__PURE__ */ jsx34(Text29, { bold: true, color: active ? PALETTE.accent : PALETTE.muted, children: line.text }) });
28523
+ return /* @__PURE__ */ jsx33(Box27, { children: /* @__PURE__ */ jsx33(Text28, { bold: true, color: active ? PALETTE.accent : PALETTE.muted, children: line.text }) });
28634
28524
  }
28635
28525
  if (line.kind === "label") {
28636
- return /* @__PURE__ */ jsxs28(Box28, { children: [
28637
- line.prefix && /* @__PURE__ */ jsx34(Text29, { children: line.prefix }),
28638
- /* @__PURE__ */ jsx34(Text29, { bold: true, color: active ? line.color : PALETTE.muted, children: line.text }),
28639
- line.suffix && /* @__PURE__ */ jsx34(Text29, { color: PALETTE.muted, children: line.suffix })
28526
+ return /* @__PURE__ */ jsxs27(Box27, { children: [
28527
+ line.prefix && /* @__PURE__ */ jsx33(Text28, { children: line.prefix }),
28528
+ /* @__PURE__ */ jsx33(Text28, { bold: true, color: active ? line.color : PALETTE.muted, children: line.text }),
28529
+ line.suffix && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: line.suffix })
28640
28530
  ] });
28641
28531
  }
28642
- return /* @__PURE__ */ jsx34(Box28, { children: /* @__PURE__ */ jsx34(Text29, { color: !active || line.dim ? PALETTE.muted : void 0, children: line.text }) });
28532
+ return /* @__PURE__ */ jsx33(Box27, { children: /* @__PURE__ */ jsx33(Text28, { color: !active || line.dim ? PALETTE.muted : void 0, children: line.text }) });
28643
28533
  }
28644
28534
  var init_RationaleLine = __esm({
28645
28535
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationaleLine.tsx"() {
@@ -28649,8 +28539,8 @@ var init_RationaleLine = __esm({
28649
28539
  });
28650
28540
 
28651
28541
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ComponentRationalePanel.tsx
28652
- import { Box as Box29, Text as Text30 } from "ink";
28653
- import { jsx as jsx35, jsxs as jsxs29 } from "react/jsx-runtime";
28542
+ import { Box as Box28, Text as Text29 } from "ink";
28543
+ import { jsx as jsx34, jsxs as jsxs28 } from "react/jsx-runtime";
28654
28544
  function renderComponentRationaleLines(data, innerWidth) {
28655
28545
  const out = [];
28656
28546
  const pushSection = (heading, body) => {
@@ -28717,8 +28607,8 @@ function ComponentRationalePanel({
28717
28607
  const overflowed = totalLines > contentHeight;
28718
28608
  const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
28719
28609
  const visibleEnd = Math.min(totalLines, scrollOffset + contentHeight);
28720
- return /* @__PURE__ */ jsxs29(
28721
- Box29,
28610
+ return /* @__PURE__ */ jsxs28(
28611
+ Box28,
28722
28612
  {
28723
28613
  flexDirection: "column",
28724
28614
  width,
@@ -28726,9 +28616,9 @@ function ComponentRationalePanel({
28726
28616
  borderStyle: "single",
28727
28617
  borderColor: active ? PALETTE.text : void 0,
28728
28618
  children: [
28729
- /* @__PURE__ */ jsx35(Box29, { children: /* @__PURE__ */ jsx35(Text30, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Component rationale: ${data.name}` }) }),
28730
- visible.map((line, i) => /* @__PURE__ */ jsx35(RationaleLine, { line, active }, i)),
28731
- /* @__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" }) })
28619
+ /* @__PURE__ */ jsx34(Box28, { children: /* @__PURE__ */ jsx34(Text29, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Component rationale: ${data.name}` }) }),
28620
+ visible.map((line, i) => /* @__PURE__ */ jsx34(RationaleLine, { line, active }, i)),
28621
+ /* @__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" }) })
28732
28622
  ]
28733
28623
  }
28734
28624
  );
@@ -28745,10 +28635,10 @@ var init_ComponentRationalePanel = __esm({
28745
28635
  });
28746
28636
 
28747
28637
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/HighlightedLine.tsx
28748
- import { Text as Text31 } from "ink";
28749
- import { Fragment as Fragment8, jsx as jsx36 } from "react/jsx-runtime";
28638
+ import { Text as Text30 } from "ink";
28639
+ import { Fragment as Fragment7, jsx as jsx35 } from "react/jsx-runtime";
28750
28640
  function HighlightedLine({ parts }) {
28751
- return /* @__PURE__ */ jsx36(Fragment8, { children: parts.map((part, i) => /* @__PURE__ */ jsx36(Text31, { color: part.dim ? PALETTE.muted : part.color, children: part.text }, i)) });
28641
+ return /* @__PURE__ */ jsx35(Fragment7, { children: parts.map((part, i) => /* @__PURE__ */ jsx35(Text30, { color: part.dim ? PALETTE.muted : part.color, children: part.text }, i)) });
28752
28642
  }
28753
28643
  var init_HighlightedLine = __esm({
28754
28644
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/components/HighlightedLine.tsx"() {
@@ -28758,8 +28648,8 @@ var init_HighlightedLine = __esm({
28758
28648
  });
28759
28649
 
28760
28650
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ScrollablePanel.tsx
28761
- import { Box as Box30, Text as Text32 } from "ink";
28762
- import { Fragment as Fragment9, jsx as jsx37, jsxs as jsxs30 } from "react/jsx-runtime";
28651
+ import { Box as Box29, Text as Text31 } from "ink";
28652
+ import { Fragment as Fragment8, jsx as jsx36, jsxs as jsxs29 } from "react/jsx-runtime";
28763
28653
  function ScrollablePanel({
28764
28654
  title,
28765
28655
  width,
@@ -28772,12 +28662,12 @@ function ScrollablePanel({
28772
28662
  children
28773
28663
  }) {
28774
28664
  const overflowed = totalLines > height;
28775
- return /* @__PURE__ */ jsxs30(Box30, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
28776
- /* @__PURE__ */ jsxs30(Box30, { children: [
28777
- /* @__PURE__ */ jsx37(Text32, { bold: true, color: active ? void 0 : PALETTE.muted, children: title }),
28778
- overflowed && /* @__PURE__ */ jsxs30(Fragment9, { children: [
28779
- /* @__PURE__ */ jsx37(Box30, { flexGrow: 1 }),
28780
- /* @__PURE__ */ jsx37(Text32, { color: active ? void 0 : PALETTE.muted, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
28665
+ return /* @__PURE__ */ jsxs29(Box29, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
28666
+ /* @__PURE__ */ jsxs29(Box29, { children: [
28667
+ /* @__PURE__ */ jsx36(Text31, { bold: true, color: active ? void 0 : PALETTE.muted, children: title }),
28668
+ overflowed && /* @__PURE__ */ jsxs29(Fragment8, { children: [
28669
+ /* @__PURE__ */ jsx36(Box29, { flexGrow: 1 }),
28670
+ /* @__PURE__ */ jsx36(Text31, { color: active ? void 0 : PALETTE.muted, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
28781
28671
  ] })
28782
28672
  ] }),
28783
28673
  children
@@ -28791,8 +28681,8 @@ var init_ScrollablePanel = __esm({
28791
28681
  });
28792
28682
 
28793
28683
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/JsonPanel.tsx
28794
- import { Box as Box31 } from "ink";
28795
- import { jsx as jsx38 } from "react/jsx-runtime";
28684
+ import { Box as Box30 } from "ink";
28685
+ import { jsx as jsx37 } from "react/jsx-runtime";
28796
28686
  function highlightJson(line) {
28797
28687
  const parts = [];
28798
28688
  let remaining = line;
@@ -28830,7 +28720,7 @@ function highlightJson(line) {
28830
28720
  parts.push({ text: remaining[0] });
28831
28721
  remaining = remaining.slice(1);
28832
28722
  }
28833
- return /* @__PURE__ */ jsx38(HighlightedLine, { parts });
28723
+ return /* @__PURE__ */ jsx37(HighlightedLine, { parts });
28834
28724
  }
28835
28725
  function truncateLine(line, maxWidth) {
28836
28726
  if (line.length <= maxWidth) return line;
@@ -28843,7 +28733,7 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
28843
28733
  const totalLines = allLines.length;
28844
28734
  const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
28845
28735
  const visibleEnd = Math.min(totalLines, scrollOffset + height);
28846
- return /* @__PURE__ */ jsx38(
28736
+ return /* @__PURE__ */ jsx37(
28847
28737
  ScrollablePanel,
28848
28738
  {
28849
28739
  title: label,
@@ -28856,7 +28746,7 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
28856
28746
  borderColor: active ? "white" : void 0,
28857
28747
  children: visibleLines.map((line, i) => {
28858
28748
  const truncated = truncateLine(line, innerWidth);
28859
- return /* @__PURE__ */ jsx38(Box31, { children: highlightJson(truncated) }, i);
28749
+ return /* @__PURE__ */ jsx37(Box30, { children: highlightJson(truncated) }, i);
28860
28750
  })
28861
28751
  }
28862
28752
  );
@@ -28870,7 +28760,7 @@ var init_JsonPanel = __esm({
28870
28760
  });
28871
28761
 
28872
28762
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationalePanel.tsx
28873
- import { jsx as jsx39 } from "react/jsx-runtime";
28763
+ import { jsx as jsx38 } from "react/jsx-runtime";
28874
28764
  function renderRationaleLines(rows, innerWidth) {
28875
28765
  const out = [];
28876
28766
  rows.forEach((row, idx) => {
@@ -28903,7 +28793,7 @@ function RationalePanel({
28903
28793
  const visible = allLines.slice(scrollOffset, scrollOffset + height);
28904
28794
  const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
28905
28795
  const visibleEnd = Math.min(totalLines, scrollOffset + height);
28906
- return /* @__PURE__ */ jsx39(
28796
+ return /* @__PURE__ */ jsx38(
28907
28797
  ScrollablePanel,
28908
28798
  {
28909
28799
  title: `RATIONALE \u2014 ${componentName}`,
@@ -28914,7 +28804,7 @@ function RationalePanel({
28914
28804
  visibleStart,
28915
28805
  visibleEnd,
28916
28806
  borderColor: active ? PALETTE.text : void 0,
28917
- children: visible.map((line, i) => /* @__PURE__ */ jsx39(RationaleLine, { line, active }, i))
28807
+ children: visible.map((line, i) => /* @__PURE__ */ jsx38(RationaleLine, { line, active }, i))
28918
28808
  }
28919
28809
  );
28920
28810
  }
@@ -28930,8 +28820,8 @@ var init_RationalePanel = __esm({
28930
28820
 
28931
28821
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/TokenReviewPanel.tsx
28932
28822
  import figures7 from "figures";
28933
- import { Box as Box32, Text as Text33 } from "ink";
28934
- import { jsx as jsx40, jsxs as jsxs31 } from "react/jsx-runtime";
28823
+ import { Box as Box31, Text as Text32 } from "ink";
28824
+ import { jsx as jsx39, jsxs as jsxs30 } from "react/jsx-runtime";
28935
28825
  function TokenReviewPanel({
28936
28826
  componentName,
28937
28827
  suggestions,
@@ -28950,8 +28840,8 @@ function TokenReviewPanel({
28950
28840
  const scrollStart = Math.max(0, Math.min(editCursor - Math.floor(visibleCount / 2), maxStart));
28951
28841
  const visiblePaths = current.paths.slice(scrollStart, scrollStart + visibleCount);
28952
28842
  const rangeLabel = current.paths.length === 0 ? "no compatible tokens" : `${scrollStart + 1}-${scrollStart + visiblePaths.length} of ${current.paths.length}`;
28953
- return /* @__PURE__ */ jsxs31(
28954
- Box32,
28843
+ return /* @__PURE__ */ jsxs30(
28844
+ Box31,
28955
28845
  {
28956
28846
  flexDirection: "column",
28957
28847
  width,
@@ -28959,16 +28849,16 @@ function TokenReviewPanel({
28959
28849
  borderStyle: "single",
28960
28850
  borderColor: active ? PALETTE.text : void 0,
28961
28851
  children: [
28962
- /* @__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(", ")})` : ""}` }),
28963
- /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: `Tick the tokens this property may use (${rangeLabel}).` }),
28964
- /* @__PURE__ */ jsx40(Text33, { children: " " }),
28965
- current.paths.length === 0 && /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, children: "(no compatible tokens found for this token kind)" }),
28852
+ /* @__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(", ")})` : ""}` }),
28853
+ /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, wrap: "truncate", children: `Tick the tokens this property may use (${rangeLabel}).` }),
28854
+ /* @__PURE__ */ jsx39(Text32, { children: " " }),
28855
+ current.paths.length === 0 && /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, children: "(no compatible tokens found for this token kind)" }),
28966
28856
  visiblePaths.map((path5, i) => {
28967
28857
  const pathIndex = scrollStart + i;
28968
28858
  const checked = editSelection.has(path5);
28969
28859
  const focused = pathIndex === editCursor;
28970
- return /* @__PURE__ */ jsx40(Box32, { children: /* @__PURE__ */ jsx40(
28971
- Text33,
28860
+ return /* @__PURE__ */ jsx39(Box31, { children: /* @__PURE__ */ jsx39(
28861
+ Text32,
28972
28862
  {
28973
28863
  color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted,
28974
28864
  bold: focused,
@@ -28977,15 +28867,15 @@ function TokenReviewPanel({
28977
28867
  }
28978
28868
  ) }, path5);
28979
28869
  }),
28980
- /* @__PURE__ */ jsx40(Text33, { children: " " }),
28981
- /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
28982
- /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
28870
+ /* @__PURE__ */ jsx39(Text32, { children: " " }),
28871
+ /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
28872
+ /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
28983
28873
  ]
28984
28874
  }
28985
28875
  );
28986
28876
  }
28987
- return /* @__PURE__ */ jsxs31(
28988
- Box32,
28877
+ return /* @__PURE__ */ jsxs30(
28878
+ Box31,
28989
28879
  {
28990
28880
  flexDirection: "column",
28991
28881
  width,
@@ -28993,33 +28883,33 @@ function TokenReviewPanel({
28993
28883
  borderStyle: "single",
28994
28884
  borderColor: active ? PALETTE.text : void 0,
28995
28885
  children: [
28996
- /* @__PURE__ */ jsx40(Text33, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Review mapped tokens \u2014 ${componentName}` }),
28997
- /* @__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.` }),
28998
- /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: "Suggested tokens come from the agent. Allowed tokens are what editors can pick in Contentful." }),
28999
- /* @__PURE__ */ jsx40(Text33, { children: " " }),
29000
- suggestions.length === 0 && /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, children: "(no token suggestions for this component)" }),
28886
+ /* @__PURE__ */ jsx39(Text32, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Review mapped tokens \u2014 ${componentName}` }),
28887
+ /* @__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.` }),
28888
+ /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, wrap: "truncate", children: "Suggested tokens come from the agent. Allowed tokens are what editors can pick in Contentful." }),
28889
+ /* @__PURE__ */ jsx39(Text32, { children: " " }),
28890
+ suggestions.length === 0 && /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, children: "(no token suggestions for this component)" }),
29001
28891
  suggestions.map((s, i) => {
29002
28892
  const focused = i === selectedRow;
29003
- return /* @__PURE__ */ jsxs31(Box32, { flexDirection: "column", children: [
29004
- /* @__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(", ")})` : ""}` }) }),
29005
- /* @__PURE__ */ jsx40(
29006
- Text33,
28893
+ return /* @__PURE__ */ jsxs30(Box31, { flexDirection: "column", children: [
28894
+ /* @__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(", ")})` : ""}` }) }),
28895
+ /* @__PURE__ */ jsx39(
28896
+ Text32,
29007
28897
  {
29008
28898
  color: PALETTE.muted,
29009
28899
  children: ` suggested: ${s.suggested.length > 0 ? s.suggested.join(", ") : "none"}`
29010
28900
  }
29011
28901
  ),
29012
- /* @__PURE__ */ jsx40(
29013
- Text33,
28902
+ /* @__PURE__ */ jsx39(
28903
+ Text32,
29014
28904
  {
29015
28905
  color: PALETTE.muted,
29016
28906
  children: ` allowed: ${s.allowed.length > 0 ? s.allowed.join(", ") : "none (any token)"}`
29017
28907
  }
29018
28908
  ),
29019
- /* @__PURE__ */ jsx40(Text33, { children: " " })
28909
+ /* @__PURE__ */ jsx39(Text32, { children: " " })
29020
28910
  ] }, s.propName);
29021
28911
  }),
29022
- /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, children: "[\u2191/\u2193] move [Enter] edit allowed tokens [Esc] close" })
28912
+ /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, children: "[\u2191/\u2193] move [Enter] edit allowed tokens [Esc] close" })
29023
28913
  ]
29024
28914
  }
29025
28915
  );
@@ -29032,8 +28922,8 @@ var init_TokenReviewPanel = __esm({
29032
28922
  });
29033
28923
 
29034
28924
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx
29035
- import { Text as Text34 } from "ink";
29036
- import { Fragment as Fragment10, jsx as jsx41, jsxs as jsxs32 } from "react/jsx-runtime";
28925
+ import { Text as Text33 } from "ink";
28926
+ import { Fragment as Fragment9, jsx as jsx40, jsxs as jsxs31 } from "react/jsx-runtime";
29037
28927
  function ReviewDetailsPanel({
29038
28928
  selectedKey,
29039
28929
  panelOpen,
@@ -29068,7 +28958,7 @@ function ReviewDetailsPanel({
29068
28958
  rationale: s.rationale ?? ""
29069
28959
  }))
29070
28960
  ];
29071
- return /* @__PURE__ */ jsx41(
28961
+ return /* @__PURE__ */ jsx40(
29072
28962
  RationalePanel,
29073
28963
  {
29074
28964
  componentName: componentRationale?.name ?? selectedKey,
@@ -29081,7 +28971,7 @@ function ReviewDetailsPanel({
29081
28971
  );
29082
28972
  }
29083
28973
  if (panelOpen === "component-rationale") {
29084
- return /* @__PURE__ */ jsx41(
28974
+ return /* @__PURE__ */ jsx40(
29085
28975
  ComponentRationalePanel,
29086
28976
  {
29087
28977
  data: componentRationale ?? {
@@ -29106,14 +28996,14 @@ function ReviewDetailsPanel({
29106
28996
  const headerPath = path5 ?? "<unknown source path>";
29107
28997
  const sourceLineCount = Math.max(1, height - 4);
29108
28998
  const lines = source ? source.split("\n").slice(panelScrollOffset, panelScrollOffset + sourceLineCount) : [];
29109
- return /* @__PURE__ */ jsxs32(FixedPanel, { width, height, borderStyle: "single", borderColor: sourceBorderColor, paddingLeft: 1, children: [
29110
- /* @__PURE__ */ jsx41(Text34, { color: PALETTE.muted, bold: true, wrap: "truncate-end", children: `source: ${headerPath}` }),
29111
- 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)" }),
29112
- /* @__PURE__ */ jsx41(Text34, { color: PALETTE.muted, wrap: "truncate-end", children: "[s/Esc] close" })
28999
+ return /* @__PURE__ */ jsxs31(FixedPanel, { width, height, borderStyle: "single", borderColor: sourceBorderColor, paddingLeft: 1, children: [
29000
+ /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, bold: true, wrap: "truncate-end", children: `source: ${headerPath}` }),
29001
+ 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)" }),
29002
+ /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate-end", children: "[s/Esc] close" })
29113
29003
  ] });
29114
29004
  }
29115
29005
  if (panelOpen === "token-review") {
29116
- return /* @__PURE__ */ jsx41(
29006
+ return /* @__PURE__ */ jsx40(
29117
29007
  TokenReviewPanel,
29118
29008
  {
29119
29009
  componentName: selectedKey,
@@ -29129,7 +29019,7 @@ function ReviewDetailsPanel({
29129
29019
  );
29130
29020
  }
29131
29021
  if (showJson) {
29132
- return /* @__PURE__ */ jsx41(
29022
+ return /* @__PURE__ */ jsx40(
29133
29023
  JsonPanel,
29134
29024
  {
29135
29025
  label: "GENERATED DEFINITION (read-only)",
@@ -29141,7 +29031,7 @@ function ReviewDetailsPanel({
29141
29031
  }
29142
29032
  );
29143
29033
  }
29144
- return /* @__PURE__ */ jsx41(Fragment10, { children: editor });
29034
+ return /* @__PURE__ */ jsx40(Fragment9, { children: editor });
29145
29035
  }
29146
29036
  var init_review_details_panel = __esm({
29147
29037
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx"() {
@@ -29156,7 +29046,7 @@ var init_review_details_panel = __esm({
29156
29046
  });
29157
29047
 
29158
29048
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDetailsEditor.tsx
29159
- import { jsx as jsx42 } from "react/jsx-runtime";
29049
+ import { jsx as jsx41 } from "react/jsx-runtime";
29160
29050
  import { createElement } from "react";
29161
29051
  function toFieldEditorMetadata(reviewMetadata) {
29162
29052
  if (!reviewMetadata) return void 0;
@@ -29190,7 +29080,7 @@ function ReviewDetailsEditor({
29190
29080
  jsonScrollOffset,
29191
29081
  currentTokenSuggestions
29192
29082
  } = reviewEditor;
29193
- return /* @__PURE__ */ jsx42(
29083
+ return /* @__PURE__ */ jsx41(
29194
29084
  ReviewDetailsPanel,
29195
29085
  {
29196
29086
  selectedKey,
@@ -29237,8 +29127,8 @@ var init_ReviewDetailsEditor = __esm({
29237
29127
  });
29238
29128
 
29239
29129
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewComponentPanel.tsx
29240
- import { Box as Box33, Text as Text35 } from "ink";
29241
- import { Fragment as Fragment11, jsx as jsx43, jsxs as jsxs33 } from "react/jsx-runtime";
29130
+ import { Box as Box32, Text as Text34 } from "ink";
29131
+ import { Fragment as Fragment10, jsx as jsx42, jsxs as jsxs32 } from "react/jsx-runtime";
29242
29132
  function buildReviewFieldEditor(reviewEditor, selectedJson, onExit, overrides = {}) {
29243
29133
  return {
29244
29134
  value: reviewEditor.draftValue || selectedJson,
@@ -29278,24 +29168,24 @@ function ReviewEmptyComponentsWarning({
29278
29168
  hidden
29279
29169
  }) {
29280
29170
  if (hidden || count === 0) return null;
29281
- return /* @__PURE__ */ jsx43(Text35, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
29171
+ return /* @__PURE__ */ jsx42(Text34, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
29282
29172
  }
29283
29173
  function ReviewNoSelection() {
29284
- return /* @__PURE__ */ jsx43(Box33, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx43(Text35, { color: PALETTE.muted, children: "No component selected" }) });
29174
+ return /* @__PURE__ */ jsx42(Box32, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx42(Text34, { color: PALETTE.muted, children: "No component selected" }) });
29285
29175
  }
29286
29176
  function ReviewFinalizeError({
29287
29177
  message,
29288
29178
  hidden
29289
29179
  }) {
29290
29180
  if (hidden || !message) return null;
29291
- return /* @__PURE__ */ jsx43(Text35, { color: PALETTE.error, children: `\u26A0 ${message}` });
29181
+ return /* @__PURE__ */ jsx42(Text34, { color: PALETTE.error, children: `\u26A0 ${message}` });
29292
29182
  }
29293
29183
  function ReviewPanelFooter({
29294
29184
  reviewEditor,
29295
29185
  sidebarFocused,
29296
29186
  sidebarFooter
29297
29187
  }) {
29298
- 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" : "") });
29188
+ 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" : "") });
29299
29189
  }
29300
29190
  function ReviewComponentTitle({
29301
29191
  selectedKey,
@@ -29303,10 +29193,10 @@ function ReviewComponentTitle({
29303
29193
  slotCount,
29304
29194
  sidebarFocused
29305
29195
  }) {
29306
- return /* @__PURE__ */ jsxs33(Box33, { paddingLeft: 2, paddingBottom: 1, children: [
29307
- /* @__PURE__ */ jsx43(Text35, { bold: true, wrap: "truncate-end", children: selectedKey }),
29308
- /* @__PURE__ */ jsx43(Box33, { flexGrow: 1 }),
29309
- /* @__PURE__ */ jsxs33(Text35, { color: PALETTE.muted, wrap: "truncate-end", children: [
29196
+ return /* @__PURE__ */ jsxs32(Box32, { paddingLeft: 2, paddingBottom: 1, children: [
29197
+ /* @__PURE__ */ jsx42(Text34, { bold: true, wrap: "truncate-end", children: selectedKey }),
29198
+ /* @__PURE__ */ jsx42(Box32, { flexGrow: 1 }),
29199
+ /* @__PURE__ */ jsxs32(Text34, { color: PALETTE.muted, wrap: "truncate-end", children: [
29310
29200
  propCount,
29311
29201
  " prop",
29312
29202
  propCount !== 1 ? "s" : "",
@@ -29335,8 +29225,8 @@ function ReviewComponentPanel({
29335
29225
  const slotCount = selectedEntry.$slots ? Object.keys(selectedEntry.$slots).length : 0;
29336
29226
  const contentHeight = Math.max(1, height - 2);
29337
29227
  const contentWidth = Math.max(1, width - 1);
29338
- 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: [
29339
- /* @__PURE__ */ jsx43(Box33, { width: contentWidth, height: contentHeight, flexShrink: 0, overflowY: "hidden", children: /* @__PURE__ */ jsx43(
29228
+ 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: [
29229
+ /* @__PURE__ */ jsx42(Box32, { width: contentWidth, height: contentHeight, flexShrink: 0, overflowY: "hidden", children: /* @__PURE__ */ jsx42(
29340
29230
  ReviewDetailsEditor,
29341
29231
  {
29342
29232
  selectedKey,
@@ -29349,7 +29239,7 @@ function ReviewComponentPanel({
29349
29239
  jsonValue,
29350
29240
  sidebarFocused,
29351
29241
  fieldEditor,
29352
- header: /* @__PURE__ */ jsx43(
29242
+ header: /* @__PURE__ */ jsx42(
29353
29243
  ReviewComponentTitle,
29354
29244
  {
29355
29245
  selectedKey,
@@ -29360,8 +29250,8 @@ function ReviewComponentPanel({
29360
29250
  )
29361
29251
  }
29362
29252
  ) }),
29363
- /* @__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 : " " }) }),
29364
- /* @__PURE__ */ jsx43(Box33, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx43(Text35, { color: PALETTE.muted, wrap: "truncate-end", children: /* @__PURE__ */ jsx43(
29253
+ /* @__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 : " " }) }),
29254
+ /* @__PURE__ */ jsx42(Box32, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx42(Text34, { color: PALETTE.muted, wrap: "truncate-end", children: /* @__PURE__ */ jsx42(
29365
29255
  ReviewPanelFooter,
29366
29256
  {
29367
29257
  reviewEditor,
@@ -29382,8 +29272,8 @@ var init_ReviewComponentPanel = __esm({
29382
29272
  });
29383
29273
 
29384
29274
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewStatus.tsx
29385
- import { Box as Box34, Text as Text36 } from "ink";
29386
- import { jsx as jsx44, jsxs as jsxs34 } from "react/jsx-runtime";
29275
+ import { Box as Box33, Text as Text35 } from "ink";
29276
+ import { jsx as jsx43, jsxs as jsxs33 } from "react/jsx-runtime";
29387
29277
  function countReviewStatuses(entries) {
29388
29278
  return entries.reduce(
29389
29279
  (counts, entry) => {
@@ -29396,13 +29286,13 @@ function countReviewStatuses(entries) {
29396
29286
  );
29397
29287
  }
29398
29288
  function ReviewLoadingState() {
29399
- return /* @__PURE__ */ jsx44(Box34, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: "Loading generated definitions..." }) });
29289
+ return /* @__PURE__ */ jsx43(Box33, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx43(Text35, { color: PALETTE.muted, children: "Loading generated definitions..." }) });
29400
29290
  }
29401
29291
  function ReviewLoadError({ message }) {
29402
- return /* @__PURE__ */ jsxs34(Box34, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
29403
- /* @__PURE__ */ jsx44(Text36, { color: PALETTE.error, children: message }),
29404
- /* @__PURE__ */ jsx44(Text36, { children: " " }),
29405
- /* @__PURE__ */ jsx44(ControlHints, { hints: [{ keys: "q / Enter / Esc", label: "Quit" }] })
29292
+ return /* @__PURE__ */ jsxs33(Box33, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
29293
+ /* @__PURE__ */ jsx43(Text35, { color: PALETTE.error, children: message }),
29294
+ /* @__PURE__ */ jsx43(Text35, { children: " " }),
29295
+ /* @__PURE__ */ jsx43(ControlHints, { hints: [{ keys: "q / Enter / Esc", label: "Quit" }] })
29406
29296
  ] });
29407
29297
  }
29408
29298
  var init_ReviewStatus = __esm({
@@ -29626,8 +29516,8 @@ var init_run_live_preview = __esm({
29626
29516
  });
29627
29517
 
29628
29518
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FinalizeDialog.tsx
29629
- import { Box as Box35, Text as Text37 } from "ink";
29630
- import { Fragment as Fragment12, jsx as jsx45, jsxs as jsxs35 } from "react/jsx-runtime";
29519
+ import { Box as Box34, Text as Text36 } from "ink";
29520
+ import { Fragment as Fragment11, jsx as jsx44, jsxs as jsxs34 } from "react/jsx-runtime";
29631
29521
  function FinalizeDialog({
29632
29522
  accepted,
29633
29523
  rejected,
@@ -29655,51 +29545,51 @@ function FinalizeDialog({
29655
29545
  const windowed = removed.slice(offset, offset + FINALIZE_REMOVED_WINDOW);
29656
29546
  const hasMoreBelow = offset + FINALIZE_REMOVED_WINDOW < removed.length;
29657
29547
  const hasMoreAbove = offset > 0;
29658
- return /* @__PURE__ */ jsx45(Box35, { width: "100%", paddingX: 2, children: /* @__PURE__ */ jsxs35(Box35, { flexDirection: "column", alignItems: "flex-start", children: [
29659
- /* @__PURE__ */ jsx45(Text37, { bold: true, children: "Finalize" }),
29660
- /* @__PURE__ */ jsx45(Text37, { children: " " }),
29661
- /* @__PURE__ */ jsxs35(Text37, { children: [
29662
- /* @__PURE__ */ jsxs35(Text37, { color: PALETTE.success, children: [
29548
+ return /* @__PURE__ */ jsx44(Box34, { width: "100%", paddingX: 2, children: /* @__PURE__ */ jsxs34(Box34, { flexDirection: "column", alignItems: "flex-start", children: [
29549
+ /* @__PURE__ */ jsx44(Text36, { bold: true, children: "Finalize" }),
29550
+ /* @__PURE__ */ jsx44(Text36, { children: " " }),
29551
+ /* @__PURE__ */ jsxs34(Text36, { children: [
29552
+ /* @__PURE__ */ jsxs34(Text36, { color: PALETTE.success, children: [
29663
29553
  accepted,
29664
29554
  " accepted"
29665
29555
  ] }),
29666
- /* @__PURE__ */ jsx45(Text37, { children: " \xB7 " }),
29667
- /* @__PURE__ */ jsxs35(Text37, { color: PALETTE.error, children: [
29556
+ /* @__PURE__ */ jsx44(Text36, { children: " \xB7 " }),
29557
+ /* @__PURE__ */ jsxs34(Text36, { color: PALETTE.error, children: [
29668
29558
  rejected,
29669
29559
  " rejected"
29670
29560
  ] }),
29671
- /* @__PURE__ */ jsx45(Text37, { children: " \xB7 " }),
29672
- /* @__PURE__ */ jsxs35(Text37, { color: PALETTE.muted, children: [
29561
+ /* @__PURE__ */ jsx44(Text36, { children: " \xB7 " }),
29562
+ /* @__PURE__ */ jsxs34(Text36, { color: PALETTE.muted, children: [
29673
29563
  needsReview,
29674
29564
  " unresolved"
29675
29565
  ] })
29676
29566
  ] }),
29677
- /* @__PURE__ */ jsx45(Text37, { children: " " }),
29678
- noneAccepted && /* @__PURE__ */ jsxs35(Fragment12, { children: [
29679
- /* @__PURE__ */ jsx45(Text37, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
29680
- /* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, children: "Accept at least one component ([a] a row, [A] accept all) to push." }),
29681
- /* @__PURE__ */ jsx45(Text37, { children: " " })
29567
+ /* @__PURE__ */ jsx44(Text36, { children: " " }),
29568
+ noneAccepted && /* @__PURE__ */ jsxs34(Fragment11, { children: [
29569
+ /* @__PURE__ */ jsx44(Text36, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
29570
+ /* @__PURE__ */ jsx44(Text36, { color: PALETTE.warning, children: "Accept at least one component ([a] a row, [A] accept all) to push." }),
29571
+ /* @__PURE__ */ jsx44(Text36, { children: " " })
29682
29572
  ] }),
29683
- !allResolved && /* @__PURE__ */ jsxs35(Fragment12, { children: [
29684
- /* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
29685
- /* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, children: "Only explicitly accepted components ship." }),
29686
- /* @__PURE__ */ jsx45(Text37, { children: " " })
29573
+ !allResolved && /* @__PURE__ */ jsxs34(Fragment11, { children: [
29574
+ /* @__PURE__ */ jsx44(Text36, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
29575
+ /* @__PURE__ */ jsx44(Text36, { color: PALETTE.warning, children: "Only explicitly accepted components ship." }),
29576
+ /* @__PURE__ */ jsx44(Text36, { children: " " })
29687
29577
  ] }),
29688
- /* @__PURE__ */ jsxs35(Box35, { flexDirection: "column", height: 2, children: [
29689
- 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: " " }),
29690
- /* @__PURE__ */ jsx45(Text37, { children: " " })
29578
+ /* @__PURE__ */ jsxs34(Box34, { flexDirection: "column", height: 2, children: [
29579
+ 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: " " }),
29580
+ /* @__PURE__ */ jsx44(Text36, { children: " " })
29691
29581
  ] }),
29692
- previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs35(Fragment12, { children: [
29693
- /* @__PURE__ */ jsx45(Text37, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
29694
- hasMoreAbove && /* @__PURE__ */ jsx45(Text37, { color: PALETTE.muted, children: "\u2191 more above" }),
29695
- windowed.map((rc) => /* @__PURE__ */ jsx45(Text37, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
29696
- hasMoreBelow && /* @__PURE__ */ jsx45(Text37, { color: PALETTE.muted, children: "\u2193 more below" }),
29697
- removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx45(Text37, { children: "[\u2191\u2193] scroll deletions" }),
29698
- /* @__PURE__ */ jsx45(Text37, { children: " " })
29582
+ previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs34(Fragment11, { children: [
29583
+ /* @__PURE__ */ jsx44(Text36, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
29584
+ hasMoreAbove && /* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: "\u2191 more above" }),
29585
+ windowed.map((rc) => /* @__PURE__ */ jsx44(Text36, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
29586
+ hasMoreBelow && /* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: "\u2193 more below" }),
29587
+ removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx44(Text36, { children: "[\u2191\u2193] scroll deletions" }),
29588
+ /* @__PURE__ */ jsx44(Text36, { children: " " })
29699
29589
  ] }),
29700
- /* @__PURE__ */ jsx45(Text37, { children: noneAccepted ? "Confirm exit with nothing accepted?" : allResolved ? "Save decisions and exit? All components resolved." : "Save decisions and exit?" }),
29701
- /* @__PURE__ */ jsx45(Text37, { children: " " }),
29702
- /* @__PURE__ */ jsx45(
29590
+ /* @__PURE__ */ jsx44(Text36, { children: noneAccepted ? "Confirm exit with nothing accepted?" : allResolved ? "Save decisions and exit? All components resolved." : "Save decisions and exit?" }),
29591
+ /* @__PURE__ */ jsx44(Text36, { children: " " }),
29592
+ /* @__PURE__ */ jsx44(
29703
29593
  ControlHints,
29704
29594
  {
29705
29595
  hints: [
@@ -30167,8 +30057,8 @@ var init_use_review_surface_state = __esm({
30167
30057
  });
30168
30058
 
30169
30059
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/QuitDialog.tsx
30170
- import { Box as Box36, Text as Text38 } from "ink";
30171
- import { Fragment as Fragment13, jsx as jsx46, jsxs as jsxs36 } from "react/jsx-runtime";
30060
+ import { Box as Box35, Text as Text37 } from "ink";
30061
+ import { Fragment as Fragment12, jsx as jsx45, jsxs as jsxs35 } from "react/jsx-runtime";
30172
30062
  function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
30173
30063
  useImmediateInput((input, key) => {
30174
30064
  if (input === "y" || key.return) {
@@ -30177,16 +30067,16 @@ function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
30177
30067
  onCancel();
30178
30068
  }
30179
30069
  });
30180
- return /* @__PURE__ */ jsxs36(Box36, { flexDirection: "column", borderStyle: "round", padding: 1, width: 50, children: [
30181
- /* @__PURE__ */ jsx46(Text38, { bold: true, children: "\u2500".repeat(19) + " Quit " + "\u2500".repeat(19) }),
30182
- /* @__PURE__ */ jsx46(Text38, { children: " " }),
30183
- hasUnsavedDrafts ? /* @__PURE__ */ jsxs36(Fragment13, { children: [
30184
- /* @__PURE__ */ jsx46(Text38, { children: "You have unsaved draft edits." }),
30185
- /* @__PURE__ */ jsx46(Text38, { children: "Session state is preserved \u2014 you can resume" }),
30186
- /* @__PURE__ */ jsx46(Text38, { children: "by running the same review command again." })
30187
- ] }) : /* @__PURE__ */ jsx46(Text38, { children: "Session is saved. Quit without finalizing?" }),
30188
- /* @__PURE__ */ jsx46(Text38, { children: " " }),
30189
- /* @__PURE__ */ jsx46(
30070
+ return /* @__PURE__ */ jsxs35(Box35, { flexDirection: "column", borderStyle: "round", padding: 1, width: 50, children: [
30071
+ /* @__PURE__ */ jsx45(Text37, { bold: true, children: "\u2500".repeat(19) + " Quit " + "\u2500".repeat(19) }),
30072
+ /* @__PURE__ */ jsx45(Text37, { children: " " }),
30073
+ hasUnsavedDrafts ? /* @__PURE__ */ jsxs35(Fragment12, { children: [
30074
+ /* @__PURE__ */ jsx45(Text37, { children: "You have unsaved draft edits." }),
30075
+ /* @__PURE__ */ jsx45(Text37, { children: "Session state is preserved \u2014 you can resume" }),
30076
+ /* @__PURE__ */ jsx45(Text37, { children: "by running the same review command again." })
30077
+ ] }) : /* @__PURE__ */ jsx45(Text37, { children: "Session is saved. Quit without finalizing?" }),
30078
+ /* @__PURE__ */ jsx45(Text37, { children: " " }),
30079
+ /* @__PURE__ */ jsx45(
30190
30080
  ControlHints,
30191
30081
  {
30192
30082
  hints: [
@@ -30206,8 +30096,8 @@ var init_QuitDialog = __esm({
30206
30096
  });
30207
30097
 
30208
30098
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDialogs.tsx
30209
- import { Box as Box37, Text as Text39 } from "ink";
30210
- import { Fragment as Fragment14, jsx as jsx47, jsxs as jsxs37 } from "react/jsx-runtime";
30099
+ import { Box as Box36, Text as Text38 } from "ink";
30100
+ import { Fragment as Fragment13, jsx as jsx46, jsxs as jsxs36 } from "react/jsx-runtime";
30211
30101
  function ReviewFinalizeDialogs({
30212
30102
  showFinalize,
30213
30103
  showQuit,
@@ -30221,8 +30111,8 @@ function ReviewFinalizeDialogs({
30221
30111
  onQuitCancel
30222
30112
  }) {
30223
30113
  const { accepted, rejected, needsReview } = countReviewStatuses(components);
30224
- return /* @__PURE__ */ jsxs37(Fragment14, { children: [
30225
- showFinalize && /* @__PURE__ */ jsx47(
30114
+ return /* @__PURE__ */ jsxs36(Fragment13, { children: [
30115
+ showFinalize && /* @__PURE__ */ jsx46(
30226
30116
  FinalizeDialog,
30227
30117
  {
30228
30118
  accepted,
@@ -30235,7 +30125,7 @@ function ReviewFinalizeDialogs({
30235
30125
  onCancel: onFinalizeCancel
30236
30126
  }
30237
30127
  ),
30238
- showQuit && /* @__PURE__ */ jsx47(QuitDialog, { hasUnsavedDrafts: false, onConfirm: onQuitConfirm, onCancel: onQuitCancel })
30128
+ showQuit && /* @__PURE__ */ jsx46(QuitDialog, { hasUnsavedDrafts: false, onConfirm: onQuitConfirm, onCancel: onQuitCancel })
30239
30129
  ] });
30240
30130
  }
30241
30131
  function ReviewStepDialogs({
@@ -30245,7 +30135,7 @@ function ReviewStepDialogs({
30245
30135
  onFinalize,
30246
30136
  onQuit
30247
30137
  }) {
30248
- return /* @__PURE__ */ jsx47(
30138
+ return /* @__PURE__ */ jsx46(
30249
30139
  ReviewFinalizeDialogs,
30250
30140
  {
30251
30141
  showFinalize: surfaceState.showFinalize,
@@ -30263,12 +30153,12 @@ function ReviewStepDialogs({
30263
30153
  }
30264
30154
  function ReviewReloadDialog({ open }) {
30265
30155
  if (!open) return null;
30266
- return /* @__PURE__ */ jsxs37(Box37, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
30267
- /* @__PURE__ */ jsx47(Text39, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
30268
- /* @__PURE__ */ jsx47(Text39, { children: "Unsaved in-memory changes will be lost." }),
30269
- /* @__PURE__ */ jsx47(Text39, { children: " " }),
30270
- /* @__PURE__ */ jsx47(Text39, { children: " [Enter] Confirm" }),
30271
- /* @__PURE__ */ jsx47(Text39, { children: " [Esc] Cancel" })
30156
+ return /* @__PURE__ */ jsxs36(Box36, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
30157
+ /* @__PURE__ */ jsx46(Text38, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
30158
+ /* @__PURE__ */ jsx46(Text38, { children: "Unsaved in-memory changes will be lost." }),
30159
+ /* @__PURE__ */ jsx46(Text38, { children: " " }),
30160
+ /* @__PURE__ */ jsx46(Text38, { children: " [Enter] Confirm" }),
30161
+ /* @__PURE__ */ jsx46(Text38, { children: " [Esc] Cancel" })
30272
30162
  ] });
30273
30163
  }
30274
30164
  var init_ReviewDialogs = __esm({
@@ -30791,8 +30681,8 @@ var init_use_review_log = __esm({
30791
30681
  });
30792
30682
 
30793
30683
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/components/LivePreviewSummary.tsx
30794
- import { Box as Box38, Text as Text40 } from "ink";
30795
- import { jsx as jsx48, jsxs as jsxs38 } from "react/jsx-runtime";
30684
+ import { Box as Box37, Text as Text39 } from "ink";
30685
+ import { jsx as jsx47, jsxs as jsxs37 } from "react/jsx-runtime";
30796
30686
  function LivePreviewSummary({
30797
30687
  enabled,
30798
30688
  previewAnnotations,
@@ -30806,19 +30696,19 @@ function LivePreviewSummary({
30806
30696
  const counts = { new: 0, changed: 0, removed: 0, breaking: 0 };
30807
30697
  for (const annotation of previewAnnotations.values()) counts[annotation] += 1;
30808
30698
  const hasCounts = counts.new + counts.changed + counts.removed + counts.breaking > 0;
30809
- if (disabled) return /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: "Preview: disabled (creds rejected)" });
30810
- if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: `Preview: ${spinner} running...` });
30699
+ if (disabled) return /* @__PURE__ */ jsx47(Text39, { color: PALETTE.muted, children: "Preview: disabled (creds rejected)" });
30700
+ if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx47(Text39, { color: PALETTE.muted, children: `Preview: ${spinner} running...` });
30811
30701
  if (!hasCounts) return null;
30812
- return /* @__PURE__ */ jsxs38(Box38, { children: [
30813
- /* @__PURE__ */ jsx48(Text40, { children: "Preview: " }),
30814
- /* @__PURE__ */ jsx48(Text40, { color: PALETTE.success, children: `${counts.new} new` }),
30815
- /* @__PURE__ */ jsx48(Text40, { children: " \xB7 " }),
30816
- /* @__PURE__ */ jsx48(Text40, { color: PALETTE.warning, children: `${counts.changed} changed` }),
30817
- /* @__PURE__ */ jsx48(Text40, { children: " \xB7 " }),
30818
- /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: `${counts.removed} removed` }),
30819
- showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx48(Text40, { children: " ([d] removed list)" }),
30820
- /* @__PURE__ */ jsx48(Text40, { children: " \xB7 " }),
30821
- /* @__PURE__ */ jsx48(Text40, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
30702
+ return /* @__PURE__ */ jsxs37(Box37, { children: [
30703
+ /* @__PURE__ */ jsx47(Text39, { children: "Preview: " }),
30704
+ /* @__PURE__ */ jsx47(Text39, { color: PALETTE.success, children: `${counts.new} new` }),
30705
+ /* @__PURE__ */ jsx47(Text39, { children: " \xB7 " }),
30706
+ /* @__PURE__ */ jsx47(Text39, { color: PALETTE.warning, children: `${counts.changed} changed` }),
30707
+ /* @__PURE__ */ jsx47(Text39, { children: " \xB7 " }),
30708
+ /* @__PURE__ */ jsx47(Text39, { color: PALETTE.muted, children: `${counts.removed} removed` }),
30709
+ showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx47(Text39, { children: " ([d] removed list)" }),
30710
+ /* @__PURE__ */ jsx47(Text39, { children: " \xB7 " }),
30711
+ /* @__PURE__ */ jsx47(Text39, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
30822
30712
  ] });
30823
30713
  }
30824
30714
  var init_LivePreviewSummary = __esm({
@@ -30831,8 +30721,8 @@ var init_LivePreviewSummary = __esm({
30831
30721
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx
30832
30722
  import { useCallback as useCallback5, useEffect as useEffect24, useMemo as useMemo6, useRef as useRef17, useState as useState26 } from "react";
30833
30723
  import figures8 from "figures";
30834
- import { Box as Box39, Text as Text41 } from "ink";
30835
- import { Fragment as Fragment15, jsx as jsx49, jsxs as jsxs39 } from "react/jsx-runtime";
30724
+ import { Box as Box38, Text as Text40 } from "ink";
30725
+ import { Fragment as Fragment14, jsx as jsx48, jsxs as jsxs38 } from "react/jsx-runtime";
30836
30726
  function sortComponentsForSidebar(components, cycleParticipants) {
30837
30727
  const isEmpty2 = (entry) => Object.keys(entry.$properties ?? {}).length === 0 && Object.keys(entry.$slots ?? {}).length === 0;
30838
30728
  const tier = (c2) => {
@@ -30873,10 +30763,10 @@ function CyclePathLine({
30873
30763
  highlightComponents = false,
30874
30764
  highlightLine = false
30875
30765
  }) {
30876
- return /* @__PURE__ */ jsxs39(Text41, { color: highlightLine ? PALETTE.warning : void 0, children: [
30766
+ return /* @__PURE__ */ jsxs38(Text40, { color: highlightLine ? PALETTE.warning : void 0, children: [
30877
30767
  prefix,
30878
30768
  segments.map(
30879
- (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)
30769
+ (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)
30880
30770
  )
30881
30771
  ] });
30882
30772
  }
@@ -30888,31 +30778,31 @@ function CycleDetailPanel({
30888
30778
  height
30889
30779
  }) {
30890
30780
  const lines = [
30891
- /* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${cycles.length})` }, "cyc-title"),
30892
- /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: "push will fail until these are resolved" }, "cyc-sub"),
30893
- /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: "Reject a cycle member or remove a slot edge to break the cycle." }, "cyc-guidance"),
30894
- /* @__PURE__ */ jsx49(Text41, { children: " " }, "cyc-space")
30781
+ /* @__PURE__ */ jsx48(Text40, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${cycles.length})` }, "cyc-title"),
30782
+ /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: "push will fail until these are resolved" }, "cyc-sub"),
30783
+ /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: "Reject a cycle member or remove a slot edge to break the cycle." }, "cyc-guidance"),
30784
+ /* @__PURE__ */ jsx48(Text40, { children: " " }, "cyc-space")
30895
30785
  ];
30896
30786
  cycles.forEach((cycle, index) => {
30897
30787
  const nodeCount = new Set(cycle.path).size;
30898
30788
  const isCursor = index === cursor;
30899
30789
  lines.push(
30900
- /* @__PURE__ */ jsx49(Text41, { bold: true, inverse: isCursor, children: `${isCursor ? figures8.pointer : " "} Cycle ${index + 1} (${nodeCount} component${nodeCount === 1 ? "" : "s"}):` }, `cyc-h-${index}`),
30901
- /* @__PURE__ */ jsx49(CyclePathLine, { segments: formatCyclePathSegments2(cycle, 16), prefix: " " }, `cyc-p-${index}`)
30790
+ /* @__PURE__ */ jsx48(Text40, { bold: true, inverse: isCursor, children: `${isCursor ? figures8.pointer : " "} Cycle ${index + 1} (${nodeCount} component${nodeCount === 1 ? "" : "s"}):` }, `cyc-h-${index}`),
30791
+ /* @__PURE__ */ jsx48(CyclePathLine, { segments: formatCyclePathSegments2(cycle, 16), prefix: " " }, `cyc-p-${index}`)
30902
30792
  );
30903
30793
  if (cycle.suggestedBreak) {
30904
30794
  lines.push(
30905
- /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: ` Suggested fix: remove [${cycle.suggestedBreak.slotName}] from ${cycle.suggestedBreak.fromComponent}` }, `cyc-fix-${index}`)
30795
+ /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: ` Suggested fix: remove [${cycle.suggestedBreak.slotName}] from ${cycle.suggestedBreak.fromComponent}` }, `cyc-fix-${index}`)
30906
30796
  );
30907
30797
  }
30908
- lines.push(/* @__PURE__ */ jsx49(Text41, { children: " " }, `cyc-s-${index}`));
30798
+ lines.push(/* @__PURE__ */ jsx48(Text40, { children: " " }, `cyc-s-${index}`));
30909
30799
  });
30910
30800
  const footer = "[\u2191\u2193] move [Enter] fix cycle [c/q/Esc] close";
30911
30801
  const viewportHeight = Math.max(1, height - 3);
30912
30802
  const visible = lines.slice(scrollOffset, scrollOffset + viewportHeight - 1);
30913
- return /* @__PURE__ */ jsxs39(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
30803
+ return /* @__PURE__ */ jsxs38(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
30914
30804
  visible,
30915
- /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: footer })
30805
+ /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: footer })
30916
30806
  ] });
30917
30807
  }
30918
30808
  function BreakCyclePanel({
@@ -30923,14 +30813,14 @@ function BreakCyclePanel({
30923
30813
  width,
30924
30814
  height
30925
30815
  }) {
30926
- return /* @__PURE__ */ jsxs39(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
30927
- /* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.warning, children: "BREAK CYCLE \u2014 remove a slot edge" }),
30928
- cycle && /* @__PURE__ */ jsx49(CyclePathLine, { segments: formatCyclePathSegments2(cycle), prefix: " ", highlightComponents: true }),
30929
- /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: cycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
30930
- /* @__PURE__ */ jsx49(Text41, { children: " " }),
30931
- edges.length > 0 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: "remove slot edge:" }),
30932
- 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}`)),
30933
- 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" })
30816
+ return /* @__PURE__ */ jsxs38(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
30817
+ /* @__PURE__ */ jsx48(Text40, { bold: true, color: PALETTE.warning, children: "BREAK CYCLE \u2014 remove a slot edge" }),
30818
+ cycle && /* @__PURE__ */ jsx48(CyclePathLine, { segments: formatCyclePathSegments2(cycle), prefix: " ", highlightComponents: true }),
30819
+ /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: cycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
30820
+ /* @__PURE__ */ jsx48(Text40, { children: " " }),
30821
+ edges.length > 0 && /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: "remove slot edge:" }),
30822
+ 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}`)),
30823
+ 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" })
30934
30824
  ] });
30935
30825
  }
30936
30826
  function buildBreakingRows(breakingChanges) {
@@ -30976,9 +30866,9 @@ function deriveBreakingChanges(response) {
30976
30866
  }
30977
30867
  function GenerateReviewStep(props) {
30978
30868
  if (!props.extractSessionId) {
30979
- 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." }) });
30869
+ 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." }) });
30980
30870
  }
30981
- return /* @__PURE__ */ jsx49(GenerateReviewStepView, { ...props, extractSessionId: props.extractSessionId });
30871
+ return /* @__PURE__ */ jsx48(GenerateReviewStepView, { ...props, extractSessionId: props.extractSessionId });
30982
30872
  }
30983
30873
  function GenerateReviewStepView({
30984
30874
  extractSessionId,
@@ -31840,13 +31730,13 @@ function GenerateReviewStepView({
31840
31730
  }
31841
31731
  });
31842
31732
  if (loading) {
31843
- return /* @__PURE__ */ jsx49(ReviewLoadingState, {});
31733
+ return /* @__PURE__ */ jsx48(ReviewLoadingState, {});
31844
31734
  }
31845
31735
  if (loadError) {
31846
- return /* @__PURE__ */ jsx49(ReviewLoadError, { message: loadError });
31736
+ return /* @__PURE__ */ jsx48(ReviewLoadError, { message: loadError });
31847
31737
  }
31848
31738
  if (showHelp) {
31849
- return /* @__PURE__ */ jsx49(HelpOverlay, { sections: HELP_SECTIONS2, handleInput: false, onClose: () => setShowHelp(false) });
31739
+ return /* @__PURE__ */ jsx48(HelpOverlay, { sections: HELP_SECTIONS2, handleInput: false, onClose: () => setShowHelp(false) });
31850
31740
  }
31851
31741
  const { selected, selectedJson, visibleJsonPanelValue } = getReviewSelectionState(
31852
31742
  components,
@@ -31886,9 +31776,9 @@ function GenerateReviewStepView({
31886
31776
  for (const c2 of closures.values()) if (c2.nodes.length > 1) return true;
31887
31777
  return false;
31888
31778
  })();
31889
- return /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", children: [
31890
- /* @__PURE__ */ jsx49(StepHeader, { step: "review" }),
31891
- /* @__PURE__ */ jsx49(
31779
+ return /* @__PURE__ */ jsxs38(Box38, { flexDirection: "column", children: [
31780
+ /* @__PURE__ */ jsx48(StepHeader, { step: "review" }),
31781
+ /* @__PURE__ */ jsx48(
31892
31782
  ReviewStepDialogs,
31893
31783
  {
31894
31784
  surfaceState: reviewSurface,
@@ -31898,16 +31788,16 @@ function GenerateReviewStepView({
31898
31788
  onQuit
31899
31789
  }
31900
31790
  ),
31901
- /* @__PURE__ */ jsx49(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
31902
- removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
31903
- /* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
31904
- !removedBannerCollapsed && /* @__PURE__ */ jsxs39(Fragment15, { children: [
31905
- /* @__PURE__ */ jsx49(Text41, { children: " " }),
31906
- removedComponents.map((rc) => /* @__PURE__ */ jsx49(Text41, { children: removedComponentLine(rc) }, rc.id))
31791
+ /* @__PURE__ */ jsx48(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
31792
+ removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs38(Box38, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
31793
+ /* @__PURE__ */ jsx48(Text40, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
31794
+ !removedBannerCollapsed && /* @__PURE__ */ jsxs38(Fragment14, { children: [
31795
+ /* @__PURE__ */ jsx48(Text40, { children: " " }),
31796
+ removedComponents.map((rc) => /* @__PURE__ */ jsx48(Text40, { children: removedComponentLine(rc) }, rc.id))
31907
31797
  ] })
31908
31798
  ] }),
31909
- breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx49(Box39, { paddingX: 1, children: /* @__PURE__ */ jsx49(
31910
- Text41,
31799
+ breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx48(Box38, { paddingX: 1, children: /* @__PURE__ */ jsx48(
31800
+ Text40,
31911
31801
  {
31912
31802
  color: PALETTE.warning,
31913
31803
  children: `[b] ${breakingChanges.length} breaking change${breakingChanges.length === 1 ? "" : "s"}`
@@ -31917,14 +31807,14 @@ function GenerateReviewStepView({
31917
31807
  const row = breakingRows[breakingCursor];
31918
31808
  const comp = row ? breakingChanges.find((b) => b.componentName === row.componentName) : void 0;
31919
31809
  if (!comp) return null;
31920
- return /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
31921
- /* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
31922
- 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"}` }),
31923
- 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}`)),
31924
- /* @__PURE__ */ jsx49(Text41, { children: "[D/Esc] close detail" })
31810
+ return /* @__PURE__ */ jsxs38(Box38, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
31811
+ /* @__PURE__ */ jsx48(Text40, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
31812
+ 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"}` }),
31813
+ 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}`)),
31814
+ /* @__PURE__ */ jsx48(Text40, { children: "[D/Esc] close detail" })
31925
31815
  ] });
31926
31816
  })(),
31927
- !dialogOpen && /* @__PURE__ */ jsx49(
31817
+ !dialogOpen && /* @__PURE__ */ jsx48(
31928
31818
  LivePreviewSummary,
31929
31819
  {
31930
31820
  enabled: livePreview,
@@ -31943,16 +31833,16 @@ function GenerateReviewStepView({
31943
31833
  const participantSet = cycleView.structural;
31944
31834
  const members = stillRejected.filter((n) => participantSet.has(n)).sort();
31945
31835
  const ancestors = stillRejected.filter((n) => !participantSet.has(n)).sort();
31946
- return /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
31947
- /* @__PURE__ */ jsx49(Text41, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
31948
- members.length > 0 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
31949
- ancestors.length > 0 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
31950
- /* @__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" })
31836
+ return /* @__PURE__ */ jsxs38(Box38, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
31837
+ /* @__PURE__ */ jsx48(Text40, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
31838
+ members.length > 0 && /* @__PURE__ */ jsx48(Text40, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
31839
+ ancestors.length > 0 && /* @__PURE__ */ jsx48(Text40, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
31840
+ /* @__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" })
31951
31841
  ] });
31952
31842
  })(),
31953
- /* @__PURE__ */ jsx49(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
31954
- /* @__PURE__ */ jsx49(ReviewFinalizeError, { message: finalizeError, hidden: dialogOpen }),
31955
- !dialogOpen && breakPanel.isOpen && /* @__PURE__ */ jsx49(
31843
+ /* @__PURE__ */ jsx48(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
31844
+ /* @__PURE__ */ jsx48(ReviewFinalizeError, { message: finalizeError, hidden: dialogOpen }),
31845
+ !dialogOpen && breakPanel.isOpen && /* @__PURE__ */ jsx48(
31956
31846
  BreakCyclePanel,
31957
31847
  {
31958
31848
  cycle: cycleRows[cyclesCursor],
@@ -31963,7 +31853,7 @@ function GenerateReviewStepView({
31963
31853
  height: panelHeight
31964
31854
  }
31965
31855
  ),
31966
- !dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsx49(
31856
+ !dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsx48(
31967
31857
  CycleDetailPanel,
31968
31858
  {
31969
31859
  cycles: cycleRows,
@@ -31973,8 +31863,8 @@ function GenerateReviewStepView({
31973
31863
  height: panelHeight
31974
31864
  }
31975
31865
  ),
31976
- !dialogOpen && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs39(Box39, { children: [
31977
- breakingPanel.isOpen ? /* @__PURE__ */ jsx49(
31866
+ !dialogOpen && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs38(Box38, { children: [
31867
+ breakingPanel.isOpen ? /* @__PURE__ */ jsx48(
31978
31868
  GotoBanner,
31979
31869
  {
31980
31870
  title: `Breaking changes \u2014 ${breakingRows[breakingCursor]?.componentName ?? "unknown component"}`,
@@ -31987,7 +31877,7 @@ function GenerateReviewStepView({
31987
31877
  width: sidebarWidth,
31988
31878
  footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [D] detail \xB7 [Esc] close"
31989
31879
  }
31990
- ) : /* @__PURE__ */ jsx49(
31880
+ ) : /* @__PURE__ */ jsx48(
31991
31881
  GroupedSidebar,
31992
31882
  {
31993
31883
  items: groupedItems,
@@ -32028,7 +31918,7 @@ function GenerateReviewStepView({
32028
31918
  graph: sidebarGraph
32029
31919
  }
32030
31920
  ),
32031
- selected ? /* @__PURE__ */ jsx49(
31921
+ selected ? /* @__PURE__ */ jsx48(
32032
31922
  ReviewComponentPanel,
32033
31923
  {
32034
31924
  selectedKey: selected.key,
@@ -32058,12 +31948,12 @@ function GenerateReviewStepView({
32058
31948
  ),
32059
31949
  saveError: reviewEditor.saveError
32060
31950
  }
32061
- ) : /* @__PURE__ */ jsx49(ReviewNoSelection, {})
31951
+ ) : /* @__PURE__ */ jsx48(ReviewNoSelection, {})
32062
31952
  ] }),
32063
- !dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", children: [
32064
- /* @__PURE__ */ jsx49(Text41, { color: PALETTE.warning, children: `\u26A0 ${cycleRows.length} slot dependency cycle${cycleRows.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
31953
+ !dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs38(Box38, { flexDirection: "column", children: [
31954
+ /* @__PURE__ */ jsx48(Text40, { color: PALETTE.warning, children: `\u26A0 ${cycleRows.length} slot dependency cycle${cycleRows.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
32065
31955
  cycleRows.slice(0, 3).map((cycle, idx) => {
32066
- return /* @__PURE__ */ jsx49(
31956
+ return /* @__PURE__ */ jsx48(
32067
31957
  CyclePathLine,
32068
31958
  {
32069
31959
  segments: formatCyclePathSegments2(cycle),
@@ -32074,10 +31964,10 @@ function GenerateReviewStepView({
32074
31964
  `cyc-banner-${idx}`
32075
31965
  );
32076
31966
  }),
32077
- cycleRows.length > 3 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.warning, children: ` \u2026${cycleRows.length - 3} more` }),
32078
- /* @__PURE__ */ jsx49(Text41, { children: " press [c] for detail" })
31967
+ cycleRows.length > 3 && /* @__PURE__ */ jsx48(Text40, { color: PALETTE.warning, children: ` \u2026${cycleRows.length - 3} more` }),
31968
+ /* @__PURE__ */ jsx48(Text40, { children: " press [c] for detail" })
32079
31969
  ] }),
32080
- /* @__PURE__ */ jsx49(
31970
+ /* @__PURE__ */ jsx48(
32081
31971
  SearchMatchSummary,
32082
31972
  {
32083
31973
  open: searchOpen,
@@ -32088,7 +31978,7 @@ function GenerateReviewStepView({
32088
31978
  hidden: dialogOpen
32089
31979
  }
32090
31980
  ),
32091
- !dialogOpen && sidebarFocused && reviewEditor.panelOpen !== "token-review" && /* @__PURE__ */ jsx49(CompactControlBar, { hasGroupRoots, searchActive: searchOpen || searchQuery.length > 0 })
31981
+ !dialogOpen && sidebarFocused && reviewEditor.panelOpen !== "token-review" && /* @__PURE__ */ jsx48(CompactControlBar, { hasGroupRoots, searchActive: searchOpen || searchQuery.length > 0 })
32092
31982
  ] });
32093
31983
  }
32094
31984
  var HELP_SECTIONS2;
@@ -32205,17 +32095,17 @@ var init_generate_review_step = __esm({
32205
32095
  });
32206
32096
 
32207
32097
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/CustomPromptBanner.tsx
32208
- import { Box as Box40, Text as Text42 } from "ink";
32209
- import { jsx as jsx50, jsxs as jsxs40 } from "react/jsx-runtime";
32098
+ import { Box as Box39, Text as Text41 } from "ink";
32099
+ import { jsx as jsx49, jsxs as jsxs39 } from "react/jsx-runtime";
32210
32100
  function CustomPromptBanner({ generatePromptPath }) {
32211
32101
  if (!generatePromptPath) return null;
32212
- return /* @__PURE__ */ jsxs40(Box40, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
32213
- /* @__PURE__ */ jsx50(Text42, { color: PALETTE.warning, bold: true, children: "WARNING: Custom prompt active" }),
32214
- generatePromptPath ? /* @__PURE__ */ jsxs40(Text42, { color: PALETTE.warning, children: [
32102
+ return /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
32103
+ /* @__PURE__ */ jsx49(Text41, { color: PALETTE.warning, bold: true, children: "WARNING: Custom prompt active" }),
32104
+ generatePromptPath ? /* @__PURE__ */ jsxs39(Text41, { color: PALETTE.warning, children: [
32215
32105
  "components: ",
32216
32106
  generatePromptPath
32217
32107
  ] }) : null,
32218
- /* @__PURE__ */ jsx50(Text42, { color: PALETTE.warning, children: "Bundled invariants (utility-wrapper rejection, description content rules) do NOT apply." })
32108
+ /* @__PURE__ */ jsx49(Text41, { color: PALETTE.warning, children: "Bundled invariants (utility-wrapper rejection, description content rules) do NOT apply." })
32219
32109
  ] });
32220
32110
  }
32221
32111
  var init_CustomPromptBanner = __esm({
@@ -32244,15 +32134,15 @@ var init_contentful_urls2 = __esm({
32244
32134
  });
32245
32135
 
32246
32136
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/SpaceEnvironment.tsx
32247
- import { Box as Box41, Text as Text43 } from "ink";
32248
- import { jsx as jsx51, jsxs as jsxs41 } from "react/jsx-runtime";
32137
+ import { Box as Box40, Text as Text42 } from "ink";
32138
+ import { jsx as jsx50, jsxs as jsxs40 } from "react/jsx-runtime";
32249
32139
  function SpaceEnvironment({ spaceId, environmentId }) {
32250
- return /* @__PURE__ */ jsxs41(Box41, { gap: 1, marginTop: 1, children: [
32251
- /* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: "Space:" }),
32252
- /* @__PURE__ */ jsx51(Text43, { children: spaceId }),
32253
- /* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: "/" }),
32254
- /* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: "Environment:" }),
32255
- /* @__PURE__ */ jsx51(Text43, { children: environmentId })
32140
+ return /* @__PURE__ */ jsxs40(Box40, { gap: 1, marginTop: 1, children: [
32141
+ /* @__PURE__ */ jsx50(Text42, { color: PALETTE.muted, children: "Space:" }),
32142
+ /* @__PURE__ */ jsx50(Text42, { children: spaceId }),
32143
+ /* @__PURE__ */ jsx50(Text42, { color: PALETTE.muted, children: "/" }),
32144
+ /* @__PURE__ */ jsx50(Text42, { color: PALETTE.muted, children: "Environment:" }),
32145
+ /* @__PURE__ */ jsx50(Text42, { children: environmentId })
32256
32146
  ] });
32257
32147
  }
32258
32148
  var init_SpaceEnvironment = __esm({
@@ -32263,19 +32153,19 @@ var init_SpaceEnvironment = __esm({
32263
32153
  });
32264
32154
 
32265
32155
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/DoneStep.tsx
32266
- import { Box as Box42, Text as Text44 } from "ink";
32267
- import { Fragment as Fragment16, jsx as jsx52, jsxs as jsxs42 } from "react/jsx-runtime";
32156
+ import { Box as Box41, Text as Text43 } from "ink";
32157
+ import { Fragment as Fragment15, jsx as jsx51, jsxs as jsxs41 } from "react/jsx-runtime";
32268
32158
  function EntityRows({ entity, label }) {
32269
32159
  const plural3 = (n) => `${n} ${label}${n !== 1 ? "s" : ""}`;
32270
- return /* @__PURE__ */ jsxs42(Fragment16, { children: [
32271
- ACTIONS.filter((action) => entity[action] > 0).map((action) => /* @__PURE__ */ jsxs42(Text44, { children: [
32272
- /* @__PURE__ */ jsx52(Text44, { color: PALETTE.success, children: "\u2713" }),
32160
+ return /* @__PURE__ */ jsxs41(Fragment15, { children: [
32161
+ ACTIONS.filter((action) => entity[action] > 0).map((action) => /* @__PURE__ */ jsxs41(Text43, { children: [
32162
+ /* @__PURE__ */ jsx51(Text43, { color: PALETTE.success, children: "\u2713" }),
32273
32163
  " ",
32274
32164
  plural3(entity[action]),
32275
32165
  " ",
32276
32166
  action
32277
32167
  ] }, action)),
32278
- entity.failed > 0 && /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.error, children: [
32168
+ entity.failed > 0 && /* @__PURE__ */ jsxs41(Text43, { color: PALETTE.error, children: [
32279
32169
  "\u2717 ",
32280
32170
  plural3(entity.failed),
32281
32171
  " failed \u2014 check logs above"
@@ -32283,9 +32173,9 @@ function EntityRows({ entity, label }) {
32283
32173
  ] });
32284
32174
  }
32285
32175
  function LinkRow({ title, url }) {
32286
- return /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
32287
- /* @__PURE__ */ jsx52(Text44, { color: PALETTE.muted, children: title }),
32288
- /* @__PURE__ */ jsx52(Text44, { color: PALETTE.accent, children: url })
32176
+ return /* @__PURE__ */ jsxs41(Box41, { flexDirection: "column", children: [
32177
+ /* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: title }),
32178
+ /* @__PURE__ */ jsx51(Text43, { color: PALETTE.accent, children: url })
32289
32179
  ] });
32290
32180
  }
32291
32181
  function DoneStep({
@@ -32309,29 +32199,29 @@ function DoneStep({
32309
32199
  const totalPushed = componentTypes.created + componentTypes.updated + componentTypes.removed + designTokens.created + designTokens.updated + designTokens.removed;
32310
32200
  const success = totalFailed === 0;
32311
32201
  const urlArgs = { host: host ?? "api.contentful.com", spaceId, environmentId };
32312
- return /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
32313
- /* @__PURE__ */ jsx52(StepHeader, { step: "done" }),
32314
- /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
32315
- success ? /* @__PURE__ */ jsx52(Text44, { bold: true, color: PALETTE.success, children: "Done!" }) : /* @__PURE__ */ jsx52(Text44, { bold: true, color: PALETTE.warning, children: "\u26A0 Finished with errors" }),
32316
- 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: [
32317
- /* @__PURE__ */ jsx52(EntityRows, { entity: componentTypes, label: "Component" }),
32318
- /* @__PURE__ */ jsx52(EntityRows, { entity: designTokens, label: "Design Token" }),
32319
- summary && /* @__PURE__ */ jsx52(Box42, { marginTop: 1, children: /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.muted, children: [
32202
+ return /* @__PURE__ */ jsxs41(Box41, { flexDirection: "column", children: [
32203
+ /* @__PURE__ */ jsx51(StepHeader, { step: "done" }),
32204
+ /* @__PURE__ */ jsxs41(Box41, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
32205
+ success ? /* @__PURE__ */ jsx51(Text43, { bold: true, color: PALETTE.success, children: "Done!" }) : /* @__PURE__ */ jsx51(Text43, { bold: true, color: PALETTE.warning, children: "\u26A0 Finished with errors" }),
32206
+ 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: [
32207
+ /* @__PURE__ */ jsx51(EntityRows, { entity: componentTypes, label: "Component" }),
32208
+ /* @__PURE__ */ jsx51(EntityRows, { entity: designTokens, label: "Design Token" }),
32209
+ summary && /* @__PURE__ */ jsx51(Box41, { marginTop: 1, children: /* @__PURE__ */ jsxs41(Text43, { color: PALETTE.muted, children: [
32320
32210
  "Push result: ",
32321
32211
  summary.succeeded,
32322
32212
  "/",
32323
32213
  summary.total,
32324
32214
  " succeeded",
32325
- summary.failed > 0 && /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.error, children: [
32215
+ summary.failed > 0 && /* @__PURE__ */ jsxs41(Text43, { color: PALETTE.error, children: [
32326
32216
  ", ",
32327
32217
  summary.failed,
32328
32218
  " failed"
32329
32219
  ] })
32330
32220
  ] }) })
32331
32221
  ] }),
32332
- failures.length > 0 && /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
32333
- /* @__PURE__ */ jsx52(Text44, { bold: true, color: PALETTE.error, children: "Failure details" }),
32334
- failures.map((failure) => /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.error, children: [
32222
+ failures.length > 0 && /* @__PURE__ */ jsxs41(Box41, { flexDirection: "column", children: [
32223
+ /* @__PURE__ */ jsx51(Text43, { bold: true, color: PALETTE.error, children: "Failure details" }),
32224
+ failures.map((failure) => /* @__PURE__ */ jsxs41(Text43, { color: PALETTE.error, children: [
32335
32225
  failure.entityType,
32336
32226
  " ",
32337
32227
  failure.entityId,
@@ -32339,11 +32229,11 @@ function DoneStep({
32339
32229
  failure.message
32340
32230
  ] }, `${failure.entityType}:${failure.entityId}`))
32341
32231
  ] }),
32342
- /* @__PURE__ */ jsx52(SpaceEnvironment, { spaceId, environmentId }),
32343
- success && totalPushed > 0 && /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", gap: 1, children: [
32344
- /* @__PURE__ */ jsx52(Text44, { color: PALETTE.success, children: "Your design system is now in Contentful Experiences." }),
32345
- produced.components && /* @__PURE__ */ jsx52(LinkRow, { title: "View your components here:", url: buildPostPushUrl2(urlArgs) }),
32346
- produced.tokens && /* @__PURE__ */ jsx52(
32232
+ /* @__PURE__ */ jsx51(SpaceEnvironment, { spaceId, environmentId }),
32233
+ success && totalPushed > 0 && /* @__PURE__ */ jsxs41(Box41, { flexDirection: "column", gap: 1, children: [
32234
+ /* @__PURE__ */ jsx51(Text43, { color: PALETTE.success, children: "Your design system is now in Contentful Experiences." }),
32235
+ produced.components && /* @__PURE__ */ jsx51(LinkRow, { title: "View your components here:", url: buildPostPushUrl2(urlArgs) }),
32236
+ produced.tokens && /* @__PURE__ */ jsx51(
32347
32237
  LinkRow,
32348
32238
  {
32349
32239
  title: "View your design tokens here:",
@@ -32351,7 +32241,7 @@ function DoneStep({
32351
32241
  }
32352
32242
  )
32353
32243
  ] }),
32354
- /* @__PURE__ */ jsx52(ControlHints, { hints: [{ keys: "Enter / q", label: "Exit" }] })
32244
+ /* @__PURE__ */ jsx51(ControlHints, { hints: [{ keys: "Enter / q", label: "Exit" }] })
32355
32245
  ] })
32356
32246
  ] });
32357
32247
  }
@@ -32410,10 +32300,10 @@ var init_use_blinking_cursor = __esm({
32410
32300
 
32411
32301
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PathPrompt.tsx
32412
32302
  import { useState as useState28 } from "react";
32413
- import { Box as Box43, Text as Text45 } from "ink";
32303
+ import { Box as Box42, Text as Text44 } from "ink";
32414
32304
  import { readdirSync as readdirSync4 } from "node:fs";
32415
32305
  import { dirname as dirname17, basename as basename6, join as join23 } from "node:path";
32416
- import { jsx as jsx53, jsxs as jsxs43 } from "react/jsx-runtime";
32306
+ import { jsx as jsx52, jsxs as jsxs42 } from "react/jsx-runtime";
32417
32307
  function autocomplete(partial) {
32418
32308
  if (!partial) return null;
32419
32309
  const normalized = normalizePath(partial);
@@ -32471,20 +32361,20 @@ function PathPrompt({
32471
32361
  const shown = input || defaultPath;
32472
32362
  const isPlaceholder = input === "";
32473
32363
  const cursor = cursorVisible ? "\u2588" : " ";
32474
- return /* @__PURE__ */ jsxs43(Box43, { flexDirection: "column", children: [
32475
- /* @__PURE__ */ jsx53(StepHeader, { step: "push" }),
32476
- /* @__PURE__ */ jsxs43(Box43, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
32477
- summary && /* @__PURE__ */ jsx53(Text45, { color: PALETTE.muted, children: summary }),
32478
- /* @__PURE__ */ jsxs43(Box43, { gap: 1, children: [
32479
- /* @__PURE__ */ jsx53(Text45, { color: PALETTE.accent, children: "?" }),
32480
- /* @__PURE__ */ jsxs43(Text45, { bold: true, children: [
32364
+ return /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
32365
+ /* @__PURE__ */ jsx52(StepHeader, { step: "push" }),
32366
+ /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
32367
+ summary && /* @__PURE__ */ jsx52(Text44, { color: PALETTE.muted, children: summary }),
32368
+ /* @__PURE__ */ jsxs42(Box42, { gap: 1, children: [
32369
+ /* @__PURE__ */ jsx52(Text44, { color: PALETTE.accent, children: "?" }),
32370
+ /* @__PURE__ */ jsxs42(Text44, { bold: true, children: [
32481
32371
  label,
32482
32372
  ":"
32483
32373
  ] }),
32484
- /* @__PURE__ */ jsx53(Text45, { color: isPlaceholder ? PALETTE.muted : void 0, children: shown }),
32485
- /* @__PURE__ */ jsx53(Text45, { children: cursor })
32374
+ /* @__PURE__ */ jsx52(Text44, { color: isPlaceholder ? PALETTE.muted : void 0, children: shown }),
32375
+ /* @__PURE__ */ jsx52(Text44, { children: cursor })
32486
32376
  ] }),
32487
- /* @__PURE__ */ jsx53(
32377
+ /* @__PURE__ */ jsx52(
32488
32378
  ControlHints,
32489
32379
  {
32490
32380
  hints: [
@@ -32534,8 +32424,8 @@ var init_produced = __esm({
32534
32424
 
32535
32425
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/use-timed-spinner.tsx
32536
32426
  import { useEffect as useEffect26, useState as useState29 } from "react";
32537
- import { Spinner as Spinner3 } from "@inkjs/ui";
32538
- import { jsx as jsx54 } from "react/jsx-runtime";
32427
+ import { Spinner as Spinner2 } from "@inkjs/ui";
32428
+ import { jsx as jsx53 } from "react/jsx-runtime";
32539
32429
  function useTimedSpinner() {
32540
32430
  const [elapsedSeconds, setElapsedSeconds] = useState29(0);
32541
32431
  useEffect26(() => {
@@ -32547,7 +32437,7 @@ function useTimedSpinner() {
32547
32437
  const mins = Math.floor(elapsedSeconds / 60);
32548
32438
  const secs = elapsedSeconds % 60;
32549
32439
  return {
32550
- spinner: /* @__PURE__ */ jsx54(Spinner3, {}),
32440
+ spinner: /* @__PURE__ */ jsx53(Spinner2, {}),
32551
32441
  elapsed: mins > 0 ? `${mins}m ${secs}s` : `${secs}s`
32552
32442
  };
32553
32443
  }
@@ -32558,52 +32448,51 @@ var init_use_timed_spinner = __esm({
32558
32448
  });
32559
32449
 
32560
32450
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PushingStep.tsx
32561
- import { Box as Box44, Text as Text46 } from "ink";
32451
+ import { Box as Box43, Text as Text45 } from "ink";
32562
32452
  import { ProgressBar as ProgressBar2, ThemeProvider as ThemeProvider2 } from "@inkjs/ui";
32563
- import { jsx as jsx55, jsxs as jsxs44 } from "react/jsx-runtime";
32453
+ import { jsx as jsx54, jsxs as jsxs43 } from "react/jsx-runtime";
32564
32454
  function PushingStep({ progress, produced, counts }) {
32565
32455
  const { spinner, elapsed } = useTimedSpinner();
32566
32456
  const operationId = progress && progress.kind === "queued" ? progress.operationId : null;
32567
32457
  const showGlobal = progress && progress.kind === "progress";
32568
32458
  const showCurrent = progress && progress.kind === "progress" && progress.current ? progress.current : null;
32569
- const items = progress && progress.kind === "progress" ? progress.items : [];
32570
- return /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", children: [
32571
- /* @__PURE__ */ jsx55(StepHeader, { step: "push" }),
32572
- /* @__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: [
32573
- /* @__PURE__ */ jsxs44(Box44, { gap: 1, children: [
32459
+ return /* @__PURE__ */ jsxs43(Box43, { flexDirection: "column", children: [
32460
+ /* @__PURE__ */ jsx54(StepHeader, { step: "push" }),
32461
+ /* @__PURE__ */ jsxs43(Box43, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
32462
+ /* @__PURE__ */ jsxs43(Box43, { gap: 1, children: [
32574
32463
  spinner,
32575
- /* @__PURE__ */ jsxs44(Text46, { children: [
32464
+ /* @__PURE__ */ jsxs43(Text45, { children: [
32576
32465
  "Writing ",
32577
32466
  countedThings(produced, counts),
32578
32467
  " to your Contentful space..."
32579
32468
  ] })
32580
32469
  ] }),
32581
- operationId && /* @__PURE__ */ jsxs44(Box44, { gap: 1, children: [
32582
- /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: "Operation:" }),
32583
- /* @__PURE__ */ jsx55(Text46, { children: operationId })
32470
+ operationId && /* @__PURE__ */ jsxs43(Box43, { gap: 1, children: [
32471
+ /* @__PURE__ */ jsx54(Text45, { color: PALETTE.muted, children: "Operation:" }),
32472
+ /* @__PURE__ */ jsx54(Text45, { children: operationId })
32584
32473
  ] }),
32585
- showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */ jsx55(Box44, { gap: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs44(Box44, { gap: 2, children: [
32586
- /* @__PURE__ */ jsx55(Box44, { width: 40, children: /* @__PURE__ */ jsx55(ThemeProvider2, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx55(ProgressBar2, { value: Math.round(progress.processed / progress.total * 100) }) }) }),
32587
- /* @__PURE__ */ jsxs44(Text46, { color: PALETTE.muted, children: [
32474
+ showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */ jsx54(Box43, { gap: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs43(Box43, { gap: 2, children: [
32475
+ /* @__PURE__ */ jsx54(Box43, { width: 40, children: /* @__PURE__ */ jsx54(ThemeProvider2, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx54(ProgressBar2, { value: Math.round(progress.processed / progress.total * 100) }) }) }),
32476
+ /* @__PURE__ */ jsxs43(Text45, { color: PALETTE.muted, children: [
32588
32477
  progress.processed,
32589
32478
  "/",
32590
32479
  progress.total,
32591
32480
  " entities"
32592
32481
  ] }),
32593
- progress.failed > 0 && /* @__PURE__ */ jsxs44(Text46, { color: PALETTE.error, children: [
32482
+ progress.failed > 0 && /* @__PURE__ */ jsxs43(Text45, { color: PALETTE.error, children: [
32594
32483
  progress.failed,
32595
32484
  " failed"
32596
32485
  ] })
32597
32486
  ] }) }),
32598
- showCurrent && /* @__PURE__ */ jsxs44(Box44, { gap: 1, children: [
32599
- /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: "Now processing:" }),
32600
- /* @__PURE__ */ jsx55(Text46, { children: showCurrent })
32487
+ showCurrent && /* @__PURE__ */ jsxs43(Box43, { gap: 1, children: [
32488
+ /* @__PURE__ */ jsx54(Text45, { color: PALETTE.muted, children: "Now processing:" }),
32489
+ /* @__PURE__ */ jsx54(Text45, { children: showCurrent })
32601
32490
  ] }),
32602
- /* @__PURE__ */ jsx55(Box44, { marginTop: 1, children: /* @__PURE__ */ jsxs44(Text46, { color: PALETTE.muted, children: [
32491
+ /* @__PURE__ */ jsx54(Box43, { marginTop: 1, children: /* @__PURE__ */ jsxs43(Text45, { color: PALETTE.muted, children: [
32603
32492
  "Elapsed: ",
32604
32493
  elapsed
32605
32494
  ] }) })
32606
- ] }) })
32495
+ ] })
32607
32496
  ] });
32608
32497
  }
32609
32498
  var init_PushingStep = __esm({
@@ -32612,7 +32501,6 @@ var init_PushingStep = __esm({
32612
32501
  init_StepHeader();
32613
32502
  init_produced();
32614
32503
  init_use_timed_spinner();
32615
- init_activity_panel();
32616
32504
  init_theme2();
32617
32505
  init_theme();
32618
32506
  }
@@ -32814,8 +32702,8 @@ var init_preview_confirmation_input = __esm({
32814
32702
 
32815
32703
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/WizardPreviewStep.tsx
32816
32704
  import { useEffect as useEffect27, useState as useState30, useMemo as useMemo7 } from "react";
32817
- import { Box as Box45, Text as Text47 } from "ink";
32818
- import { Fragment as Fragment17, jsx as jsx56, jsxs as jsxs45 } from "react/jsx-runtime";
32705
+ import { Box as Box44, Text as Text46 } from "ink";
32706
+ import { Fragment as Fragment16, jsx as jsx55, jsxs as jsxs44 } from "react/jsx-runtime";
32819
32707
  function buildPreviewSummaryLines(preview) {
32820
32708
  const lines = [];
32821
32709
  const { components, tokens } = preview;
@@ -33067,12 +32955,12 @@ function WizardPreviewStep({
33067
32955
  return;
33068
32956
  }
33069
32957
  });
33070
- return /* @__PURE__ */ jsxs45(Box45, { flexDirection: "column", children: [
33071
- /* @__PURE__ */ jsx56(StepHeader, { step: "push" }),
33072
- /* @__PURE__ */ jsxs45(Box45, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 2, children: [
33073
- hasAnything ? /* @__PURE__ */ jsxs45(Fragment17, { children: [
33074
- /* @__PURE__ */ jsx56(Text47, { children: "Here's what will happen in your space:" }),
33075
- /* @__PURE__ */ jsxs45(
32958
+ return /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", children: [
32959
+ /* @__PURE__ */ jsx55(StepHeader, { step: "push" }),
32960
+ /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 2, children: [
32961
+ hasAnything ? /* @__PURE__ */ jsxs44(Fragment16, { children: [
32962
+ /* @__PURE__ */ jsx55(Text46, { children: "Here's what will happen in your space:" }),
32963
+ /* @__PURE__ */ jsxs44(
33076
32964
  WindowedPanel,
33077
32965
  {
33078
32966
  width: Math.max(20, terminalColumns - 4),
@@ -33080,15 +32968,15 @@ function WizardPreviewStep({
33080
32968
  title: diffExpanded ? `Diff (${diffLines.length} lines)` : "",
33081
32969
  focused: false,
33082
32970
  children: [
33083
- activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */ jsx56(Text47, { color: line.color, wrap: "truncate-end", children: line.text }, line.key)),
33084
- /* @__PURE__ */ jsx56(Text47, { color: PALETTE.muted, wrap: "truncate-end", children: formatPreviewScrollIndicator(activeLines.length, boundedScrollOffset, viewportHeight) })
32971
+ activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */ jsx55(Text46, { color: line.color, wrap: "truncate-end", children: line.text }, line.key)),
32972
+ /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, wrap: "truncate-end", children: formatPreviewScrollIndicator(activeLines.length, boundedScrollOffset, viewportHeight) })
33085
32973
  ]
33086
32974
  }
33087
32975
  )
33088
- ] }) : /* @__PURE__ */ jsx56(Text47, { color: PALETTE.muted, children: "Nothing to push \u2014 everything is already up to date." }),
33089
- 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." }) }),
33090
- /* @__PURE__ */ jsx56(SpaceEnvironment, { spaceId, environmentId }),
33091
- /* @__PURE__ */ jsx56(Box45, { marginTop: 1, children: /* @__PURE__ */ jsx56(
32976
+ ] }) : /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: "Nothing to push \u2014 everything is already up to date." }),
32977
+ 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." }) }),
32978
+ /* @__PURE__ */ jsx55(SpaceEnvironment, { spaceId, environmentId }),
32979
+ /* @__PURE__ */ jsx55(Box44, { marginTop: 1, children: /* @__PURE__ */ jsx55(
33092
32980
  ControlHints,
33093
32981
  {
33094
32982
  hints: [
@@ -33335,8 +33223,8 @@ var init_use_flow_log = __esm({
33335
33223
  });
33336
33224
 
33337
33225
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/screen.tsx
33338
- import { Box as Box46 } from "ink";
33339
- import { jsx as jsx57, jsxs as jsxs46 } from "react/jsx-runtime";
33226
+ import { Box as Box45 } from "ink";
33227
+ import { jsx as jsx56, jsxs as jsxs45 } from "react/jsx-runtime";
33340
33228
  function canEditFromPreview(cdf) {
33341
33229
  if (!cdf) return false;
33342
33230
  return parseCDFComponents(cdf).components.length > 0;
@@ -33356,7 +33244,7 @@ function FlowScreen({
33356
33244
  const content = (() => {
33357
33245
  switch (state2.step) {
33358
33246
  case "final-review":
33359
- return /* @__PURE__ */ jsx57(
33247
+ return /* @__PURE__ */ jsx56(
33360
33248
  GenerateReviewStep,
33361
33249
  {
33362
33250
  extractSessionId: state2.extractSessionId,
@@ -33373,10 +33261,10 @@ function FlowScreen({
33373
33261
  }
33374
33262
  );
33375
33263
  case "previewing":
33376
- return /* @__PURE__ */ jsx57(RunningStep, { step: "push", description: `Computing diff for ${things} against your Contentful space...` });
33264
+ return /* @__PURE__ */ jsx56(RunningStep, { step: "push", description: `Computing diff for ${things} against your Contentful space...` });
33377
33265
  case "preview-gate":
33378
33266
  if (!state2.serverPreview) return null;
33379
- return /* @__PURE__ */ jsx57(
33267
+ return /* @__PURE__ */ jsx56(
33380
33268
  WizardPreviewStep,
33381
33269
  {
33382
33270
  preview: state2.serverPreview,
@@ -33388,9 +33276,9 @@ function FlowScreen({
33388
33276
  }
33389
33277
  );
33390
33278
  case "pushing":
33391
- return /* @__PURE__ */ jsx57(PushingStep, { progress: state2.pushProgress, produced, counts });
33279
+ return /* @__PURE__ */ jsx56(PushingStep, { progress: state2.pushProgress, produced, counts });
33392
33280
  case "path-prompt":
33393
- return /* @__PURE__ */ jsx57(
33281
+ return /* @__PURE__ */ jsx56(
33394
33282
  PathPrompt,
33395
33283
  {
33396
33284
  summary: `Saving ${things}${state2.credentialsSkipped ? "" : " and pushing them to your Contentful space"}.`,
@@ -33400,10 +33288,10 @@ function FlowScreen({
33400
33288
  }
33401
33289
  );
33402
33290
  case "printing":
33403
- return /* @__PURE__ */ jsx57(RunningStep, { step: "push", description: "Writing output files to disk..." });
33291
+ return /* @__PURE__ */ jsx56(RunningStep, { step: "push", description: "Writing output files to disk..." });
33404
33292
  case "print-gate": {
33405
33293
  const teaser = buildRunTeaserLine(state2.lastRunId);
33406
- return /* @__PURE__ */ jsx57(
33294
+ return /* @__PURE__ */ jsx56(
33407
33295
  GateStep,
33408
33296
  {
33409
33297
  step: "push",
@@ -33418,7 +33306,7 @@ function FlowScreen({
33418
33306
  }
33419
33307
  case "done": {
33420
33308
  const totalFailed = state2.pushResult.componentTypes.failed + state2.pushResult.designTokens.failed;
33421
- return /* @__PURE__ */ jsx57(
33309
+ return /* @__PURE__ */ jsx56(
33422
33310
  DoneStep,
33423
33311
  {
33424
33312
  componentTypes: state2.pushResult.componentTypes,
@@ -33435,7 +33323,7 @@ function FlowScreen({
33435
33323
  );
33436
33324
  }
33437
33325
  case "preview-validation-error":
33438
- return /* @__PURE__ */ jsx57(
33326
+ return /* @__PURE__ */ jsx56(
33439
33327
  PreviewValidationErrorScreen,
33440
33328
  {
33441
33329
  errors: state2.previewValidationErrors,
@@ -33446,7 +33334,7 @@ function FlowScreen({
33446
33334
  }
33447
33335
  );
33448
33336
  case "error":
33449
- return /* @__PURE__ */ jsx57(
33337
+ return /* @__PURE__ */ jsx56(
33450
33338
  ErrorStep,
33451
33339
  {
33452
33340
  stepName: state2.errorStep,
@@ -33457,8 +33345,8 @@ function FlowScreen({
33457
33345
  );
33458
33346
  }
33459
33347
  })();
33460
- return /* @__PURE__ */ jsxs46(Box46, { flexDirection: "column", children: [
33461
- /* @__PURE__ */ jsx57(CustomPromptBanner, { generatePromptPath }),
33348
+ return /* @__PURE__ */ jsxs45(Box45, { flexDirection: "column", children: [
33349
+ /* @__PURE__ */ jsx56(CustomPromptBanner, { generatePromptPath }),
33462
33350
  content
33463
33351
  ] });
33464
33352
  }
@@ -33670,21 +33558,6 @@ var init_preview2 = __esm({
33670
33558
  }
33671
33559
  });
33672
33560
 
33673
- // packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/push-progress.ts
33674
- function activityFromItems(items) {
33675
- return items.filter((item) => item.status !== "queued").map((item) => ({
33676
- name: item.id,
33677
- state: item.status === "failed" ? "failed" : "done",
33678
- detail: `${item.action} ${item.entityType === "DesignToken" ? "token" : "component"}`,
33679
- ...item.error ? { error: typeof item.error === "string" ? item.error : item.error.message } : {}
33680
- }));
33681
- }
33682
- var init_push_progress = __esm({
33683
- "packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/push-progress.ts"() {
33684
- "use strict";
33685
- }
33686
- });
33687
-
33688
33561
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/push.ts
33689
33562
  async function runPush(input, deps, onPatch) {
33690
33563
  if (shouldRefusePush(input.state)) return buildSkippedPushTransition();
@@ -33738,14 +33611,7 @@ async function runPush(input, deps, onPatch) {
33738
33611
  const lastDone = items.length > 0 ? items[items.length - 1] : null;
33739
33612
  const current = lastDone && lastDone.status === "succeeded" ? lastDone.id : null;
33740
33613
  onPatch({
33741
- pushProgress: {
33742
- kind: "progress",
33743
- processed: done,
33744
- total: summary.total,
33745
- failed: summary.failed,
33746
- current,
33747
- items: activityFromItems(items)
33748
- }
33614
+ pushProgress: { kind: "progress", processed: done, total: summary.total, failed: summary.failed, current }
33749
33615
  });
33750
33616
  }
33751
33617
  safeLog(deps, { pollTick: { attempt: pollCount, status: op.sys.status, summary: op.summary } });
@@ -33857,7 +33723,6 @@ var init_push = __esm({
33857
33723
  init_src3();
33858
33724
  init_src4();
33859
33725
  init_user_agent();
33860
- init_push_progress();
33861
33726
  init_wizard_state_transitions();
33862
33727
  realPushDeps = (log) => ({
33863
33728
  createClient: (options) => new ApiClient({ ...options, userAgent: cliUserAgent() }),
@@ -34403,14 +34268,14 @@ var init_help_info = __esm({
34403
34268
 
34404
34269
  // packages/experience-design-system-cli/src/tui/help/PageContainer.tsx
34405
34270
  import { useEffect as useEffect30, useState as useState31 } from "react";
34406
- import { Box as Box47, Text as Text48, useInput as useInput13 } from "ink";
34407
- import { Fragment as Fragment18, jsx as jsx58, jsxs as jsxs47 } from "react/jsx-runtime";
34271
+ import { Box as Box46, Text as Text47, useInput as useInput13 } from "ink";
34272
+ import { Fragment as Fragment17, jsx as jsx57, jsxs as jsxs46 } from "react/jsx-runtime";
34408
34273
  function Section({ title, rows }) {
34409
- return /* @__PURE__ */ jsxs47(Box47, { flexDirection: "column", children: [
34410
- /* @__PURE__ */ jsx58(Text48, { bold: true, color: PALETTE.accent, children: title }),
34411
- rows.map((row) => /* @__PURE__ */ jsxs47(Box47, { gap: 1, children: [
34412
- /* @__PURE__ */ jsx58(Box47, { width: 16, flexShrink: 0, children: /* @__PURE__ */ jsx58(Text48, { color: PALETTE.muted, children: row.label }) }),
34413
- /* @__PURE__ */ jsx58(Text48, { children: row.value })
34274
+ return /* @__PURE__ */ jsxs46(Box46, { flexDirection: "column", children: [
34275
+ /* @__PURE__ */ jsx57(Text47, { bold: true, color: PALETTE.accent, children: title }),
34276
+ rows.map((row) => /* @__PURE__ */ jsxs46(Box46, { gap: 1, children: [
34277
+ /* @__PURE__ */ jsx57(Box46, { width: 16, flexShrink: 0, children: /* @__PURE__ */ jsx57(Text47, { color: PALETTE.muted, children: row.label }) }),
34278
+ /* @__PURE__ */ jsx57(Text47, { children: row.value })
34414
34279
  ] }, row.label))
34415
34280
  ] });
34416
34281
  }
@@ -34434,14 +34299,14 @@ function HelpScreen({ onDone }) {
34434
34299
  return;
34435
34300
  }
34436
34301
  });
34437
- return /* @__PURE__ */ jsxs47(Box47, { flexDirection: "column", paddingX: 2, paddingY: 1, gap: 1, children: [
34438
- /* @__PURE__ */ jsx58(Text48, { bold: true, children: "Help" }),
34439
- info ? /* @__PURE__ */ jsxs47(Fragment18, { children: [
34440
- /* @__PURE__ */ jsx58(Section, { title: "Where things are stored", rows: info.storage }),
34441
- /* @__PURE__ */ jsx58(Section, { title: "Troubleshooting", rows: info.troubleshooting }),
34442
- /* @__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." })
34443
- ] }) : /* @__PURE__ */ jsx58(Text48, { color: PALETTE.accent, children: "Loading..." }),
34444
- /* @__PURE__ */ jsx58(
34302
+ return /* @__PURE__ */ jsxs46(Box46, { flexDirection: "column", paddingX: 2, paddingY: 1, gap: 1, children: [
34303
+ /* @__PURE__ */ jsx57(Text47, { bold: true, children: "Help" }),
34304
+ info ? /* @__PURE__ */ jsxs46(Fragment17, { children: [
34305
+ /* @__PURE__ */ jsx57(Section, { title: "Where things are stored", rows: info.storage }),
34306
+ /* @__PURE__ */ jsx57(Section, { title: "Troubleshooting", rows: info.troubleshooting }),
34307
+ /* @__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." })
34308
+ ] }) : /* @__PURE__ */ jsx57(Text47, { color: PALETTE.accent, children: "Loading..." }),
34309
+ /* @__PURE__ */ jsx57(
34445
34310
  ControlHints,
34446
34311
  {
34447
34312
  hints: [
@@ -34464,8 +34329,8 @@ var init_PageContainer2 = __esm({
34464
34329
 
34465
34330
  // packages/experience-design-system-cli/src/tui/settings/PageContainer.tsx
34466
34331
  import { useState as useState32 } from "react";
34467
- import { Box as Box48, Text as Text49, useInput as useInput14 } from "ink";
34468
- import { jsx as jsx59, jsxs as jsxs48 } from "react/jsx-runtime";
34332
+ import { Box as Box47, Text as Text48, useInput as useInput14 } from "ink";
34333
+ import { jsx as jsx58, jsxs as jsxs47 } from "react/jsx-runtime";
34469
34334
  function SettingsScreen({
34470
34335
  onNavigate,
34471
34336
  onBack
@@ -34496,15 +34361,15 @@ function SettingsScreen({
34496
34361
  onBack();
34497
34362
  }
34498
34363
  });
34499
- return /* @__PURE__ */ jsxs48(Box48, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
34500
- /* @__PURE__ */ jsx59(Text49, { bold: true, children: "Settings" }),
34501
- /* @__PURE__ */ jsx59(Text49, { color: PALETTE.muted, children: " " }),
34502
- items.map((item, i) => /* @__PURE__ */ jsxs48(Text49, { color: i === focusIdx ? PALETTE.accent : void 0, children: [
34364
+ return /* @__PURE__ */ jsxs47(Box47, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
34365
+ /* @__PURE__ */ jsx58(Text48, { bold: true, children: "Settings" }),
34366
+ /* @__PURE__ */ jsx58(Text48, { color: PALETTE.muted, children: " " }),
34367
+ items.map((item, i) => /* @__PURE__ */ jsxs47(Text48, { color: i === focusIdx ? PALETTE.accent : void 0, children: [
34503
34368
  i === focusIdx ? "> " : " ",
34504
34369
  item.label
34505
34370
  ] }, item.label)),
34506
- /* @__PURE__ */ jsx59(Text49, { children: " " }),
34507
- /* @__PURE__ */ jsx59(
34371
+ /* @__PURE__ */ jsx58(Text48, { children: " " }),
34372
+ /* @__PURE__ */ jsx58(
34508
34373
  ControlHints,
34509
34374
  {
34510
34375
  hints: [
@@ -34773,15 +34638,15 @@ var init_agent_debug = __esm({
34773
34638
  });
34774
34639
 
34775
34640
  // packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentStatusBadge.tsx
34776
- import { Text as Text50 } from "ink";
34777
- import { jsx as jsx60 } from "react/jsx-runtime";
34641
+ import { Text as Text49 } from "ink";
34642
+ import { jsx as jsx59 } from "react/jsx-runtime";
34778
34643
  function AgentStatusBadge({
34779
34644
  name,
34780
34645
  checks,
34781
34646
  binary
34782
34647
  }) {
34783
34648
  const { symbol, text, tone } = LIST_STATUS[checks ? statusFromChecks(name, checks, binary) : "checking"];
34784
- return /* @__PURE__ */ jsx60(Text50, { color: TONE_COLOR[tone], children: `${symbol} ${text}` });
34649
+ return /* @__PURE__ */ jsx59(Text49, { color: TONE_COLOR[tone], children: `${symbol} ${text}` });
34785
34650
  }
34786
34651
  var TONE_COLOR;
34787
34652
  var init_AgentStatusBadge = __esm({
@@ -34799,12 +34664,12 @@ var init_AgentStatusBadge = __esm({
34799
34664
 
34800
34665
  // packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentDetail.tsx
34801
34666
  import { useEffect as useEffect31, useState as useState33 } from "react";
34802
- import { Box as Box49, Text as Text51 } from "ink";
34803
- import { jsx as jsx61, jsxs as jsxs49 } from "react/jsx-runtime";
34667
+ import { Box as Box48, Text as Text50 } from "ink";
34668
+ import { jsx as jsx60, jsxs as jsxs48 } from "react/jsx-runtime";
34804
34669
  function StatusHeading() {
34805
- return /* @__PURE__ */ jsxs49(Box49, { gap: 1, children: [
34806
- /* @__PURE__ */ jsx61(Text51, { bold: true, color: PALETTE.muted, children: "STATUS" }),
34807
- /* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: "\xB7 read only" })
34670
+ return /* @__PURE__ */ jsxs48(Box48, { gap: 1, children: [
34671
+ /* @__PURE__ */ jsx60(Text50, { bold: true, color: PALETTE.muted, children: "STATUS" }),
34672
+ /* @__PURE__ */ jsx60(Text50, { color: PALETTE.muted, children: "\xB7 read only" })
34808
34673
  ] });
34809
34674
  }
34810
34675
  function AgentDetail({
@@ -34867,7 +34732,7 @@ function AgentDetail({
34867
34732
  };
34868
34733
  const formFields = fields(name);
34869
34734
  const labelWidth = formLabelWidth([...formFields, action]);
34870
- return /* @__PURE__ */ jsx61(
34735
+ return /* @__PURE__ */ jsx60(
34871
34736
  FieldForm,
34872
34737
  {
34873
34738
  title: `Settings \u203A Configuration \u203A Agents \u203A ${AGENT_LABELS[name]}`,
@@ -34884,9 +34749,9 @@ function AgentDetail({
34884
34749
  actions: [action],
34885
34750
  notice: testing ? null : notice,
34886
34751
  busy: saving || testing,
34887
- children: /* @__PURE__ */ jsxs49(Box49, { flexDirection: "column", marginTop: 1, children: [
34888
- /* @__PURE__ */ jsx61(StatusHeading, {}),
34889
- 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))
34752
+ children: /* @__PURE__ */ jsxs48(Box48, { flexDirection: "column", marginTop: 1, children: [
34753
+ /* @__PURE__ */ jsx60(StatusHeading, {}),
34754
+ 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))
34890
34755
  ] })
34891
34756
  }
34892
34757
  );
@@ -34912,8 +34777,8 @@ var init_AgentDetail = __esm({
34912
34777
 
34913
34778
  // packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentsScreen.tsx
34914
34779
  import { useEffect as useEffect32, useRef as useRef20, useState as useState34 } from "react";
34915
- import { Box as Box50, Text as Text52, useInput as useInput15 } from "ink";
34916
- import { Fragment as Fragment19, jsx as jsx62, jsxs as jsxs50 } from "react/jsx-runtime";
34780
+ import { Box as Box49, Text as Text51, useInput as useInput15 } from "ink";
34781
+ import { Fragment as Fragment18, jsx as jsx61, jsxs as jsxs49 } from "react/jsx-runtime";
34917
34782
  function AgentsScreen({ onDone }) {
34918
34783
  const [config, setConfig] = useState34(null);
34919
34784
  const [focus, setFocus] = useState34(0);
@@ -35021,21 +34886,21 @@ function AgentsScreen({ onDone }) {
35021
34886
  }
35022
34887
  });
35023
34888
  if (!config) {
35024
- return /* @__PURE__ */ jsxs50(Box50, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
35025
- /* @__PURE__ */ jsx62(Text52, { bold: true, children: "Settings \u203A Configuration \u203A Agents" }),
35026
- /* @__PURE__ */ jsx62(Text52, { children: " " }),
35027
- loadError ? /* @__PURE__ */ jsxs50(Fragment19, { children: [
35028
- /* @__PURE__ */ jsxs50(Text52, { color: PALETTE.error, children: [
34889
+ return /* @__PURE__ */ jsxs49(Box49, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
34890
+ /* @__PURE__ */ jsx61(Text51, { bold: true, children: "Settings \u203A Configuration \u203A Agents" }),
34891
+ /* @__PURE__ */ jsx61(Text51, { children: " " }),
34892
+ loadError ? /* @__PURE__ */ jsxs49(Fragment18, { children: [
34893
+ /* @__PURE__ */ jsxs49(Text51, { color: PALETTE.error, children: [
35029
34894
  "\u2717 Could not read the settings: ",
35030
34895
  loadError
35031
34896
  ] }),
35032
- /* @__PURE__ */ jsx62(Text52, { children: " " }),
35033
- /* @__PURE__ */ jsx62(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
35034
- ] }) : /* @__PURE__ */ jsx62(Text52, { color: PALETTE.accent, children: "Loading..." })
34897
+ /* @__PURE__ */ jsx61(Text51, { children: " " }),
34898
+ /* @__PURE__ */ jsx61(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
34899
+ ] }) : /* @__PURE__ */ jsx61(Text51, { color: PALETTE.accent, children: "Loading..." })
35035
34900
  ] });
35036
34901
  }
35037
34902
  if (open) {
35038
- return /* @__PURE__ */ jsx62(
34903
+ return /* @__PURE__ */ jsx61(
35039
34904
  AgentDetail,
35040
34905
  {
35041
34906
  name: open,
@@ -35056,48 +34921,48 @@ function AgentsScreen({ onDone }) {
35056
34921
  );
35057
34922
  }
35058
34923
  const focusedAgent = AGENT_NAMES[focus];
35059
- return /* @__PURE__ */ jsxs50(Box50, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
35060
- /* @__PURE__ */ jsx62(Text52, { bold: true, children: "Settings \u203A Configuration \u203A Agents" }),
35061
- /* @__PURE__ */ jsx62(Text52, { children: " " }),
35062
- /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "The coding agent the CLI runs, and what was found for each one." }),
35063
- /* @__PURE__ */ jsx62(Text52, { children: " " }),
35064
- /* @__PURE__ */ jsxs50(Box50, { gap: 1, children: [
35065
- /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "Default agent" }),
35066
- /* @__PURE__ */ jsx62(Text52, { bold: true, children: AGENT_LABELS[config.defaultAgent] }),
35067
- saving && /* @__PURE__ */ jsx62(Text52, { color: PALETTE.accent, children: "\u2026 saving" })
34924
+ return /* @__PURE__ */ jsxs49(Box49, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
34925
+ /* @__PURE__ */ jsx61(Text51, { bold: true, children: "Settings \u203A Configuration \u203A Agents" }),
34926
+ /* @__PURE__ */ jsx61(Text51, { children: " " }),
34927
+ /* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: "The coding agent the CLI runs, and what was found for each one." }),
34928
+ /* @__PURE__ */ jsx61(Text51, { children: " " }),
34929
+ /* @__PURE__ */ jsxs49(Box49, { gap: 1, children: [
34930
+ /* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: "Default agent" }),
34931
+ /* @__PURE__ */ jsx61(Text51, { bold: true, children: AGENT_LABELS[config.defaultAgent] }),
34932
+ saving && /* @__PURE__ */ jsx61(Text51, { color: PALETTE.accent, children: "\u2026 saving" })
35068
34933
  ] }),
35069
- /* @__PURE__ */ jsxs50(Box50, { marginTop: 1, gap: 1, children: [
35070
- /* @__PURE__ */ jsx62(Text52, { children: " " }),
35071
- /* @__PURE__ */ jsx62(Text52, { children: " " }),
35072
- /* @__PURE__ */ jsx62(Box50, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "AGENT" }) }),
35073
- /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "STATUS" })
34934
+ /* @__PURE__ */ jsxs49(Box49, { marginTop: 1, gap: 1, children: [
34935
+ /* @__PURE__ */ jsx61(Text51, { children: " " }),
34936
+ /* @__PURE__ */ jsx61(Text51, { children: " " }),
34937
+ /* @__PURE__ */ jsx61(Box49, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: "AGENT" }) }),
34938
+ /* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: "STATUS" })
35074
34939
  ] }),
35075
34940
  AGENT_NAMES.map((name) => {
35076
34941
  const isFocused = focusedAgent === name;
35077
- return /* @__PURE__ */ jsxs50(Box50, { gap: 1, children: [
35078
- /* @__PURE__ */ jsx62(Text52, { color: isFocused ? PALETTE.accent : void 0, children: isFocused ? "\u276F" : " " }),
35079
- /* @__PURE__ */ jsx62(Text52, { color: PALETTE.success, children: name === config.defaultAgent ? "\u2605" : " " }),
35080
- /* @__PURE__ */ jsx62(Box50, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text52, { bold: isFocused, color: isFocused ? PALETTE.accent : void 0, children: AGENT_LABELS[name] }) }),
35081
- /* @__PURE__ */ jsx62(AgentStatusBadge, { name, checks: checks[name], binary: config.agents[name].binary })
34942
+ return /* @__PURE__ */ jsxs49(Box49, { gap: 1, children: [
34943
+ /* @__PURE__ */ jsx61(Text51, { color: isFocused ? PALETTE.accent : void 0, children: isFocused ? "\u276F" : " " }),
34944
+ /* @__PURE__ */ jsx61(Text51, { color: PALETTE.success, children: name === config.defaultAgent ? "\u2605" : " " }),
34945
+ /* @__PURE__ */ jsx61(Box49, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx61(Text51, { bold: isFocused, color: isFocused ? PALETTE.accent : void 0, children: AGENT_LABELS[name] }) }),
34946
+ /* @__PURE__ */ jsx61(AgentStatusBadge, { name, checks: checks[name], binary: config.agents[name].binary })
35082
34947
  ] }, name);
35083
34948
  }),
35084
- /* @__PURE__ */ jsxs50(Box50, { flexDirection: "column", marginTop: 1, children: [
35085
- /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: `\u2500 ${AGENT_LABELS[focusedAgent]} ${"\u2500".repeat(30)}` }),
35086
- panelRows(focusedAgent, checks[focusedAgent], config.agents[focusedAgent]).map((row) => /* @__PURE__ */ jsxs50(Box50, { gap: 1, paddingLeft: 1, children: [
35087
- /* @__PURE__ */ jsx62(Box50, { width: PANEL_LABEL_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: row.label }) }),
35088
- /* @__PURE__ */ jsx62(Text52, { color: TONE_COLOR[row.tone], children: row.value })
34949
+ /* @__PURE__ */ jsxs49(Box49, { flexDirection: "column", marginTop: 1, children: [
34950
+ /* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: `\u2500 ${AGENT_LABELS[focusedAgent]} ${"\u2500".repeat(30)}` }),
34951
+ panelRows(focusedAgent, checks[focusedAgent], config.agents[focusedAgent]).map((row) => /* @__PURE__ */ jsxs49(Box49, { gap: 1, paddingLeft: 1, children: [
34952
+ /* @__PURE__ */ jsx61(Box49, { width: PANEL_LABEL_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: row.label }) }),
34953
+ /* @__PURE__ */ jsx61(Text51, { color: TONE_COLOR[row.tone], children: row.value })
35089
34954
  ] }, row.label))
35090
34955
  ] }),
35091
- notice && /* @__PURE__ */ jsxs50(Fragment19, { children: [
35092
- /* @__PURE__ */ jsx62(Text52, { children: " " }),
35093
- /* @__PURE__ */ jsxs50(Text52, { bold: true, color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
34956
+ notice && /* @__PURE__ */ jsxs49(Fragment18, { children: [
34957
+ /* @__PURE__ */ jsx61(Text51, { children: " " }),
34958
+ /* @__PURE__ */ jsxs49(Text51, { bold: true, color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
35094
34959
  notice.kind === "success" ? "\u2713" : "\u2717",
35095
34960
  " ",
35096
34961
  notice.text
35097
34962
  ] })
35098
34963
  ] }),
35099
- /* @__PURE__ */ jsx62(Text52, { children: " " }),
35100
- /* @__PURE__ */ jsx62(
34964
+ /* @__PURE__ */ jsx61(Text51, { children: " " }),
34965
+ /* @__PURE__ */ jsx61(
35101
34966
  ControlHints,
35102
34967
  {
35103
34968
  hints: [
@@ -35162,8 +35027,8 @@ var init_project_store = __esm({
35162
35027
 
35163
35028
  // packages/experience-design-system-cli/src/tui/settings/configuration/project/ProjectScreen.tsx
35164
35029
  import { useEffect as useEffect33, useRef as useRef21, useState as useState35 } from "react";
35165
- import { Box as Box51, Text as Text53, useInput as useInput16 } from "ink";
35166
- import { Fragment as Fragment20, jsx as jsx63, jsxs as jsxs51 } from "react/jsx-runtime";
35030
+ import { Box as Box50, Text as Text52, useInput as useInput16 } from "ink";
35031
+ import { Fragment as Fragment19, jsx as jsx62, jsxs as jsxs50 } from "react/jsx-runtime";
35167
35032
  function debugFields(config) {
35168
35033
  return {
35169
35034
  space_id: config?.spaceId ?? "",
@@ -35232,17 +35097,17 @@ function ProjectScreen({ onDone }) {
35232
35097
  }
35233
35098
  });
35234
35099
  if (!config) {
35235
- return /* @__PURE__ */ jsxs51(Box51, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
35236
- /* @__PURE__ */ jsx63(Text53, { bold: true, children: "Settings \u203A Configuration \u203A Project" }),
35237
- /* @__PURE__ */ jsx63(Text53, { children: " " }),
35238
- loadError ? /* @__PURE__ */ jsxs51(Fragment20, { children: [
35239
- /* @__PURE__ */ jsxs51(Text53, { color: PALETTE.error, children: [
35100
+ return /* @__PURE__ */ jsxs50(Box50, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
35101
+ /* @__PURE__ */ jsx62(Text52, { bold: true, children: "Settings \u203A Configuration \u203A Project" }),
35102
+ /* @__PURE__ */ jsx62(Text52, { children: " " }),
35103
+ loadError ? /* @__PURE__ */ jsxs50(Fragment19, { children: [
35104
+ /* @__PURE__ */ jsxs50(Text52, { color: PALETTE.error, children: [
35240
35105
  "\u2717 Could not read the settings: ",
35241
35106
  loadError
35242
35107
  ] }),
35243
- /* @__PURE__ */ jsx63(Text53, { children: " " }),
35244
- /* @__PURE__ */ jsx63(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
35245
- ] }) : /* @__PURE__ */ jsx63(Text53, { color: PALETTE.accent, children: "Loading..." })
35108
+ /* @__PURE__ */ jsx62(Text52, { children: " " }),
35109
+ /* @__PURE__ */ jsx62(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
35110
+ ] }) : /* @__PURE__ */ jsx62(Text52, { color: PALETTE.accent, children: "Loading..." })
35246
35111
  ] });
35247
35112
  }
35248
35113
  const save = () => {
@@ -35263,7 +35128,7 @@ function ProjectScreen({ onDone }) {
35263
35128
  endVisit(config);
35264
35129
  onDone();
35265
35130
  };
35266
- return /* @__PURE__ */ jsx63(
35131
+ return /* @__PURE__ */ jsx62(
35267
35132
  FieldForm,
35268
35133
  {
35269
35134
  title: "Settings \u203A Configuration \u203A Project",
@@ -35309,8 +35174,8 @@ var init_ProjectScreen = __esm({
35309
35174
 
35310
35175
  // packages/experience-design-system-cli/src/tui/settings/configuration/ConfigurationScreen.tsx
35311
35176
  import { useState as useState36 } from "react";
35312
- import { Box as Box52, Text as Text54, useInput as useInput17 } from "ink";
35313
- import { jsx as jsx64, jsxs as jsxs52 } from "react/jsx-runtime";
35177
+ import { Box as Box51, Text as Text53, useInput as useInput17 } from "ink";
35178
+ import { jsx as jsx63, jsxs as jsxs51 } from "react/jsx-runtime";
35314
35179
  function ConfigurationScreen({ onDone }) {
35315
35180
  const [focus, setFocus] = useState36(0);
35316
35181
  const [open, setOpen] = useState36(null);
@@ -35331,18 +35196,18 @@ function ConfigurationScreen({ onDone }) {
35331
35196
  }
35332
35197
  if (key.escape || input === "q") onDone();
35333
35198
  });
35334
- if (open === "project") return /* @__PURE__ */ jsx64(ProjectScreen, { onDone: close });
35335
- if (open === "agents") return /* @__PURE__ */ jsx64(AgentsScreen, { onDone: close });
35336
- return /* @__PURE__ */ jsxs52(Box52, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
35337
- /* @__PURE__ */ jsx64(Text54, { bold: true, children: "Settings \u203A Configuration" }),
35338
- /* @__PURE__ */ jsx64(Text54, { children: " " }),
35339
- SECTIONS.map((section, index) => /* @__PURE__ */ jsxs52(Box52, { gap: 1, children: [
35340
- /* @__PURE__ */ jsx64(Text54, { color: index === focus ? PALETTE.accent : void 0, children: index === focus ? "\u276F" : " " }),
35341
- /* @__PURE__ */ jsx64(Box52, { width: 9, flexShrink: 0, children: /* @__PURE__ */ jsx64(Text54, { bold: index === focus, color: index === focus ? PALETTE.accent : void 0, children: section.label }) }),
35342
- /* @__PURE__ */ jsx64(Text54, { color: PALETTE.muted, children: section.description })
35199
+ if (open === "project") return /* @__PURE__ */ jsx63(ProjectScreen, { onDone: close });
35200
+ if (open === "agents") return /* @__PURE__ */ jsx63(AgentsScreen, { onDone: close });
35201
+ return /* @__PURE__ */ jsxs51(Box51, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
35202
+ /* @__PURE__ */ jsx63(Text53, { bold: true, children: "Settings \u203A Configuration" }),
35203
+ /* @__PURE__ */ jsx63(Text53, { children: " " }),
35204
+ SECTIONS.map((section, index) => /* @__PURE__ */ jsxs51(Box51, { gap: 1, children: [
35205
+ /* @__PURE__ */ jsx63(Text53, { color: index === focus ? PALETTE.accent : void 0, children: index === focus ? "\u276F" : " " }),
35206
+ /* @__PURE__ */ jsx63(Box51, { width: 9, flexShrink: 0, children: /* @__PURE__ */ jsx63(Text53, { bold: index === focus, color: index === focus ? PALETTE.accent : void 0, children: section.label }) }),
35207
+ /* @__PURE__ */ jsx63(Text53, { color: PALETTE.muted, children: section.description })
35343
35208
  ] }, section.id)),
35344
- /* @__PURE__ */ jsx64(Text54, { children: " " }),
35345
- /* @__PURE__ */ jsx64(
35209
+ /* @__PURE__ */ jsx63(Text53, { children: " " }),
35210
+ /* @__PURE__ */ jsx63(
35346
35211
  ControlHints,
35347
35212
  {
35348
35213
  hints: [
@@ -35375,8 +35240,8 @@ var init_ConfigurationScreen = __esm({
35375
35240
 
35376
35241
  // packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx
35377
35242
  import { useEffect as useEffect34, useState as useState37 } from "react";
35378
- import { Box as Box53, Text as Text55, useInput as useInput18 } from "ink";
35379
- import { Fragment as Fragment21, jsx as jsx65, jsxs as jsxs53 } from "react/jsx-runtime";
35243
+ import { Box as Box52, Text as Text54, useInput as useInput18 } from "ink";
35244
+ import { Fragment as Fragment20, jsx as jsx64, jsxs as jsxs52 } from "react/jsx-runtime";
35380
35245
  function OptInAnalyticsScreen({ onDone }) {
35381
35246
  const [loading, setLoading] = useState37(true);
35382
35247
  const [enabled, setEnabled] = useState37(true);
@@ -35407,21 +35272,21 @@ function OptInAnalyticsScreen({ onDone }) {
35407
35272
  onDone();
35408
35273
  }
35409
35274
  });
35410
- return /* @__PURE__ */ jsxs53(Box53, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
35411
- /* @__PURE__ */ jsx65(Text55, { bold: true, children: "Settings \u203A Opt-in Analytics" }),
35412
- /* @__PURE__ */ jsx65(Text55, { children: " " }),
35413
- loading ? /* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "Loading\u2026" }) : /* @__PURE__ */ jsxs53(Fragment21, { children: [
35414
- /* @__PURE__ */ jsxs53(Text55, { children: [
35275
+ return /* @__PURE__ */ jsxs52(Box52, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
35276
+ /* @__PURE__ */ jsx64(Text54, { bold: true, children: "Settings \u203A Opt-in Analytics" }),
35277
+ /* @__PURE__ */ jsx64(Text54, { children: " " }),
35278
+ loading ? /* @__PURE__ */ jsx64(Text54, { color: PALETTE.muted, children: "Loading\u2026" }) : /* @__PURE__ */ jsxs52(Fragment20, { children: [
35279
+ /* @__PURE__ */ jsxs52(Text54, { children: [
35415
35280
  "Share anonymous usage data:",
35416
35281
  " ",
35417
- /* @__PURE__ */ jsx65(Text55, { bold: true, color: enabled ? PALETTE.success : PALETTE.muted, children: enabled ? "On" : "Off" })
35282
+ /* @__PURE__ */ jsx64(Text54, { bold: true, color: enabled ? PALETTE.success : PALETTE.muted, children: enabled ? "On" : "Off" })
35418
35283
  ] }),
35419
- /* @__PURE__ */ jsx65(Text55, { children: " " }),
35420
- /* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "Shares which CLI commands are used and where imports succeed or fail." }),
35421
- /* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "Never includes source code, file paths, credentials, or authored content." })
35284
+ /* @__PURE__ */ jsx64(Text54, { children: " " }),
35285
+ /* @__PURE__ */ jsx64(Text54, { color: PALETTE.muted, children: "Shares which CLI commands are used and where imports succeed or fail." }),
35286
+ /* @__PURE__ */ jsx64(Text54, { color: PALETTE.muted, children: "Never includes source code, file paths, credentials, or authored content." })
35422
35287
  ] }),
35423
- /* @__PURE__ */ jsx65(Text55, { children: " " }),
35424
- /* @__PURE__ */ jsx65(
35288
+ /* @__PURE__ */ jsx64(Text54, { children: " " }),
35289
+ /* @__PURE__ */ jsx64(
35425
35290
  ControlHints,
35426
35291
  {
35427
35292
  hints: [
@@ -35444,8 +35309,8 @@ var init_screen12 = __esm({
35444
35309
 
35445
35310
  // packages/experience-design-system-cli/src/tui/settings/debug-mode/screen.tsx
35446
35311
  import { useEffect as useEffect35, useRef as useRef22, useState as useState38 } from "react";
35447
- import { Box as Box54, Text as Text56, useInput as useInput19 } from "ink";
35448
- import { Fragment as Fragment22, jsx as jsx66, jsxs as jsxs54 } from "react/jsx-runtime";
35312
+ import { Box as Box53, Text as Text55, useInput as useInput19 } from "ink";
35313
+ import { Fragment as Fragment21, jsx as jsx65, jsxs as jsxs53 } from "react/jsx-runtime";
35449
35314
  function DebugModeScreen({ onDone }) {
35450
35315
  const [setting, setSetting] = useState38(null);
35451
35316
  const [focus, setFocus] = useState38("enabled");
@@ -35521,25 +35386,25 @@ function DebugModeScreen({ onDone }) {
35521
35386
  onDone();
35522
35387
  }
35523
35388
  });
35524
- const marker = (row) => /* @__PURE__ */ jsx66(Text56, { color: focus === row ? PALETTE.accent : void 0, children: focus === row ? "\u276F" : " " });
35525
- const label = (row, text) => /* @__PURE__ */ jsx66(Text56, { bold: focus === row, color: focus === row ? PALETTE.accent : PALETTE.muted, children: text });
35526
- return /* @__PURE__ */ jsxs54(Box54, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
35527
- /* @__PURE__ */ jsx66(Text56, { bold: true, children: "Settings \u203A Debug Mode" }),
35528
- /* @__PURE__ */ jsx66(Text56, { children: " " }),
35529
- setting ? /* @__PURE__ */ jsxs54(Fragment22, { children: [
35530
- /* @__PURE__ */ jsxs54(Box54, { gap: 1, children: [
35389
+ const marker = (row) => /* @__PURE__ */ jsx65(Text55, { color: focus === row ? PALETTE.accent : void 0, children: focus === row ? "\u276F" : " " });
35390
+ const label = (row, text) => /* @__PURE__ */ jsx65(Text55, { bold: focus === row, color: focus === row ? PALETTE.accent : PALETTE.muted, children: text });
35391
+ return /* @__PURE__ */ jsxs53(Box53, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
35392
+ /* @__PURE__ */ jsx65(Text55, { bold: true, children: "Settings \u203A Debug Mode" }),
35393
+ /* @__PURE__ */ jsx65(Text55, { children: " " }),
35394
+ setting ? /* @__PURE__ */ jsxs53(Fragment21, { children: [
35395
+ /* @__PURE__ */ jsxs53(Box53, { gap: 1, children: [
35531
35396
  marker("enabled"),
35532
35397
  label("enabled", "Debug logging:"),
35533
- /* @__PURE__ */ jsx66(Text56, { bold: true, color: setting.enabled ? PALETTE.success : PALETTE.muted, children: setting.enabled ? "On" : "Off" })
35398
+ /* @__PURE__ */ jsx65(Text55, { bold: true, color: setting.enabled ? PALETTE.success : PALETTE.muted, children: setting.enabled ? "On" : "Off" })
35534
35399
  ] }),
35535
- /* @__PURE__ */ jsxs54(Box54, { gap: 1, children: [
35400
+ /* @__PURE__ */ jsxs53(Box53, { gap: 1, children: [
35536
35401
  marker("retentionDays"),
35537
35402
  label("retentionDays", "Delete logs after:"),
35538
35403
  RETENTION_CHOICES.map((days) => {
35539
35404
  const highlighted = focus === "retentionDays" && days === pending;
35540
35405
  const saved = days === setting.retentionDays;
35541
- return /* @__PURE__ */ jsx66(
35542
- Text56,
35406
+ return /* @__PURE__ */ jsx65(
35407
+ Text55,
35543
35408
  {
35544
35409
  bold: highlighted || saved,
35545
35410
  underline: highlighted,
@@ -35550,15 +35415,15 @@ function DebugModeScreen({ onDone }) {
35550
35415
  );
35551
35416
  })
35552
35417
  ] }),
35553
- /* @__PURE__ */ jsx66(Text56, { children: " " }),
35554
- notice ? /* @__PURE__ */ jsxs54(Text56, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
35418
+ /* @__PURE__ */ jsx65(Text55, { children: " " }),
35419
+ notice ? /* @__PURE__ */ jsxs53(Text55, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
35555
35420
  notice.kind === "success" ? "\u2713" : "\u2717",
35556
35421
  " ",
35557
35422
  notice.text
35558
- ] }) : /* @__PURE__ */ jsx66(Text56, { color: PALETTE.muted, children: "\u2713 marks what is saved. Older logs are deleted the next time the CLI starts." })
35559
- ] }) : /* @__PURE__ */ jsx66(Text56, { color: PALETTE.muted, children: "Loading\u2026" }),
35560
- /* @__PURE__ */ jsx66(Text56, { children: " " }),
35561
- /* @__PURE__ */ jsx66(
35423
+ ] }) : /* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "\u2713 marks what is saved. Older logs are deleted the next time the CLI starts." })
35424
+ ] }) : /* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "Loading\u2026" }),
35425
+ /* @__PURE__ */ jsx65(Text55, { children: " " }),
35426
+ /* @__PURE__ */ jsx65(
35562
35427
  ControlHints,
35563
35428
  {
35564
35429
  hints: [
@@ -35596,7 +35461,7 @@ __export(app_exports, {
35596
35461
  runApp: () => runApp
35597
35462
  });
35598
35463
  import { useEffect as useEffect36, useState as useState39 } from "react";
35599
- import { Fragment as Fragment23, jsx as jsx67 } from "react/jsx-runtime";
35464
+ import { Fragment as Fragment22, jsx as jsx66 } from "react/jsx-runtime";
35600
35465
  function App({ importOptions, inkClear }) {
35601
35466
  const [screen, setScreen] = useState39("start");
35602
35467
  const [importExitCode, setImportExitCode] = useState39();
@@ -35797,9 +35662,9 @@ function App({ importOptions, inkClear }) {
35797
35662
  const content = (() => {
35798
35663
  switch (screen) {
35799
35664
  case "import":
35800
- if (showImportResult) return /* @__PURE__ */ jsx67(ImportScreen, { exitCode: importExitCode, onDone: finishImportResult });
35665
+ if (showImportResult) return /* @__PURE__ */ jsx66(ImportScreen, { exitCode: importExitCode, onDone: finishImportResult });
35801
35666
  if (flow && flowStart) {
35802
- return /* @__PURE__ */ jsx67(
35667
+ return /* @__PURE__ */ jsx66(
35803
35668
  FlowScreen,
35804
35669
  {
35805
35670
  state: flow.state,
@@ -35810,7 +35675,7 @@ function App({ importOptions, inkClear }) {
35810
35675
  );
35811
35676
  }
35812
35677
  if (tokenReview) {
35813
- return /* @__PURE__ */ jsx67(
35678
+ return /* @__PURE__ */ jsx66(
35814
35679
  TokenReviewScreen,
35815
35680
  {
35816
35681
  tokensPath: tokenReview.tokensPath,
@@ -35819,15 +35684,15 @@ function App({ importOptions, inkClear }) {
35819
35684
  }
35820
35685
  );
35821
35686
  }
35822
- if (importDefaults === void 0) return /* @__PURE__ */ jsx67(Fragment23, {});
35687
+ if (importDefaults === void 0) return /* @__PURE__ */ jsx66(Fragment22, {});
35823
35688
  if (target === void 0) {
35824
- return /* @__PURE__ */ jsx67(PreflightScreen, { onChoose: setTarget, onQuit: leaveImport });
35689
+ return /* @__PURE__ */ jsx66(PreflightScreen, { onChoose: setTarget, onQuit: leaveImport });
35825
35690
  }
35826
35691
  const inputStep = currentInputStep(target, answers);
35827
35692
  if (!extractionRun && !tokensOnlyRun && inputStep !== "credentials") {
35828
35693
  switch (inputStep) {
35829
35694
  case "project":
35830
- return /* @__PURE__ */ jsx67(
35695
+ return /* @__PURE__ */ jsx66(
35831
35696
  WelcomeScreen,
35832
35697
  {
35833
35698
  mode: target,
@@ -35837,7 +35702,7 @@ function App({ importOptions, inkClear }) {
35837
35702
  }
35838
35703
  );
35839
35704
  case "token-file":
35840
- return /* @__PURE__ */ jsx67(
35705
+ return /* @__PURE__ */ jsx66(
35841
35706
  TokenInputScreen,
35842
35707
  {
35843
35708
  mode: target,
@@ -35847,7 +35712,7 @@ function App({ importOptions, inkClear }) {
35847
35712
  }
35848
35713
  );
35849
35714
  case "path-validation":
35850
- return /* @__PURE__ */ jsx67(
35715
+ return /* @__PURE__ */ jsx66(
35851
35716
  PathValidationScreen,
35852
35717
  {
35853
35718
  mode: target,
@@ -35862,9 +35727,9 @@ function App({ importOptions, inkClear }) {
35862
35727
  }
35863
35728
  if (tokensOnlyRun) {
35864
35729
  if (tokensOnly?.status === "done" && !tokensOnly.result.ok) {
35865
- return /* @__PURE__ */ jsx67(ErrorStep, { stepName: tokensOnly.result.step, message: tokensOnly.result.message, onExit: leaveImport });
35730
+ return /* @__PURE__ */ jsx66(ErrorStep, { stepName: tokensOnly.result.step, message: tokensOnly.result.message, onExit: leaveImport });
35866
35731
  }
35867
- return /* @__PURE__ */ jsx67(
35732
+ return /* @__PURE__ */ jsx66(
35868
35733
  RunningStep,
35869
35734
  {
35870
35735
  step: "generation",
@@ -35875,10 +35740,10 @@ function App({ importOptions, inkClear }) {
35875
35740
  }
35876
35741
  if (extractionRun) {
35877
35742
  if (extraction?.status === "done" && !extraction.result.ok) {
35878
- return /* @__PURE__ */ jsx67(ErrorStep, { stepName: extraction.result.step, message: extraction.result.message, onExit: leaveImport });
35743
+ return /* @__PURE__ */ jsx66(ErrorStep, { stepName: extraction.result.step, message: extraction.result.message, onExit: leaveImport });
35879
35744
  }
35880
35745
  if (extraction?.status === "running") {
35881
- return /* @__PURE__ */ jsx67(
35746
+ return /* @__PURE__ */ jsx66(
35882
35747
  ExtractionScreen,
35883
35748
  {
35884
35749
  progress: extraction.progress,
@@ -35887,14 +35752,14 @@ function App({ importOptions, inkClear }) {
35887
35752
  }
35888
35753
  );
35889
35754
  }
35890
- return /* @__PURE__ */ jsx67(Fragment23, {});
35755
+ return /* @__PURE__ */ jsx66(Fragment22, {});
35891
35756
  }
35892
35757
  if (scopeRun && scopeFlow) {
35893
35758
  if (scopeFlow.status === "failed") {
35894
- return /* @__PURE__ */ jsx67(ErrorStep, { stepName: "scope gate", message: scopeFlow.message, onExit: leaveImport });
35759
+ return /* @__PURE__ */ jsx66(ErrorStep, { stepName: "scope gate", message: scopeFlow.message, onExit: leaveImport });
35895
35760
  }
35896
35761
  if (scopeFlow.status === "deciding") {
35897
- return /* @__PURE__ */ jsx67(
35762
+ return /* @__PURE__ */ jsx66(
35898
35763
  ScopeGateScreen,
35899
35764
  {
35900
35765
  components: scopeFlow.load.components,
@@ -35905,10 +35770,10 @@ function App({ importOptions, inkClear }) {
35905
35770
  );
35906
35771
  }
35907
35772
  if (generation?.status === "done" && !generation.result.ok) {
35908
- return /* @__PURE__ */ jsx67(ErrorStep, { stepName: generation.result.step, message: generation.result.message, onExit: leaveImport });
35773
+ return /* @__PURE__ */ jsx66(ErrorStep, { stepName: generation.result.step, message: generation.result.message, onExit: leaveImport });
35909
35774
  }
35910
35775
  if (generation?.status === "running") {
35911
- return /* @__PURE__ */ jsx67(
35776
+ return /* @__PURE__ */ jsx66(
35912
35777
  GenerationScreen,
35913
35778
  {
35914
35779
  progress: generation.progress,
@@ -35919,9 +35784,9 @@ function App({ importOptions, inkClear }) {
35919
35784
  }
35920
35785
  );
35921
35786
  }
35922
- return /* @__PURE__ */ jsx67(Fragment23, {});
35787
+ return /* @__PURE__ */ jsx66(Fragment22, {});
35923
35788
  }
35924
- return /* @__PURE__ */ jsx67(
35789
+ return /* @__PURE__ */ jsx66(
35925
35790
  CredentialsScreen,
35926
35791
  {
35927
35792
  mode: target,
@@ -35932,27 +35797,27 @@ function App({ importOptions, inkClear }) {
35932
35797
  }
35933
35798
  );
35934
35799
  case "help":
35935
- return /* @__PURE__ */ jsx67(HelpScreen, { onDone: goToStart });
35800
+ return /* @__PURE__ */ jsx66(HelpScreen, { onDone: goToStart });
35936
35801
  case "settings":
35937
- return /* @__PURE__ */ jsx67(SettingsScreen, { onNavigate: setScreen, onBack: goToStart });
35802
+ return /* @__PURE__ */ jsx66(SettingsScreen, { onNavigate: setScreen, onBack: goToStart });
35938
35803
  case "settings-configuration":
35939
- return /* @__PURE__ */ jsx67(ConfigurationScreen, { onDone: goToSettings });
35804
+ return /* @__PURE__ */ jsx66(ConfigurationScreen, { onDone: goToSettings });
35940
35805
  case "settings-opt-in-analytics":
35941
- return /* @__PURE__ */ jsx67(OptInAnalyticsScreen, { onDone: goToSettings });
35806
+ return /* @__PURE__ */ jsx66(OptInAnalyticsScreen, { onDone: goToSettings });
35942
35807
  case "settings-debug-mode":
35943
- return /* @__PURE__ */ jsx67(DebugModeScreen, { onDone: goToSettings });
35808
+ return /* @__PURE__ */ jsx66(DebugModeScreen, { onDone: goToSettings });
35944
35809
  case "start":
35945
- return /* @__PURE__ */ jsx67(HomeScreen, { onNavigate: setScreen });
35810
+ return /* @__PURE__ */ jsx66(HomeScreen, { onNavigate: setScreen });
35946
35811
  }
35947
35812
  })();
35948
- return /* @__PURE__ */ jsx67(HiddenStepsContext.Provider, { value: target === "tokens" ? TOKENS_ONLY_HIDDEN_STEPS : [], children: content });
35813
+ return /* @__PURE__ */ jsx66(HiddenStepsContext.Provider, { value: target === "tokens" ? TOKENS_ONLY_HIDDEN_STEPS : [], children: content });
35949
35814
  }
35950
35815
  async function runApp(renderApp, importOptions) {
35951
35816
  const inkClear = () => {
35952
35817
  instance.clear?.();
35953
35818
  process.stdout.write("\x1B[H\x1B[0J");
35954
35819
  };
35955
- const instance = renderApp(/* @__PURE__ */ jsx67(App, { importOptions, inkClear }));
35820
+ const instance = renderApp(/* @__PURE__ */ jsx66(App, { importOptions, inkClear }));
35956
35821
  await instance.waitUntilExit();
35957
35822
  }
35958
35823
  var TOKENS_ONLY_HIDDEN_STEPS;