@contentful/experience-design-system-cli 2.34.5-dev-build-5cd8bcd6.0 → 2.34.5-dev-build-67c73a67.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/src/index.js CHANGED
@@ -19861,55 +19861,6 @@ function findAllAncestors(target, components) {
19861
19861
  }
19862
19862
  return ancestors;
19863
19863
  }
19864
- function buildAncestorTree(target, components) {
19865
- const visited = /* @__PURE__ */ new Set();
19866
- visited.add(target);
19867
- function walk(name, depth) {
19868
- const parents = findDirectParents(name, components);
19869
- const out = [];
19870
- for (const { parent, slotName } of parents) {
19871
- if (parent === target) {
19872
- out.push({
19873
- name: parent,
19874
- incomingSlotName: slotName,
19875
- depth: depth + 1,
19876
- shared: false,
19877
- cycle: true,
19878
- parents: []
19879
- });
19880
- continue;
19881
- }
19882
- if (visited.has(parent)) {
19883
- out.push({
19884
- name: parent,
19885
- incomingSlotName: slotName,
19886
- depth: depth + 1,
19887
- shared: true,
19888
- cycle: false,
19889
- parents: []
19890
- });
19891
- continue;
19892
- }
19893
- visited.add(parent);
19894
- out.push({
19895
- name: parent,
19896
- incomingSlotName: slotName,
19897
- depth: depth + 1,
19898
- shared: false,
19899
- cycle: false,
19900
- parents: walk(parent, depth + 1)
19901
- });
19902
- }
19903
- return out;
19904
- }
19905
- return {
19906
- name: target,
19907
- depth: 0,
19908
- shared: false,
19909
- cycle: false,
19910
- parents: walk(target, 0)
19911
- };
19912
- }
19913
19864
  var init_lineage = __esm({
19914
19865
  "packages/experience-design-system-cli/src/analyze/lineage.ts"() {
19915
19866
  "use strict";
@@ -21298,113 +21249,6 @@ var init_selection_cascade = __esm({
21298
21249
  }
21299
21250
  });
21300
21251
 
21301
- // packages/experience-design-system-cli/src/import/tui/hooks/useLineage.ts
21302
- import { useMemo as useMemo3 } from "react";
21303
- function renderCleanAncestorTree(node) {
21304
- const lines = [];
21305
- lines.push({ text: node.name, jumpTarget: node.name });
21306
- const walk = (parents, prefix) => {
21307
- for (let i = 0; i < parents.length; i++) {
21308
- const child = parents[i];
21309
- const isLast = i === parents.length - 1;
21310
- const glyph = isLast ? "\u2514\u2500" : "\u251C\u2500";
21311
- lines.push({ text: `${prefix}${glyph} ${child.name}`, jumpTarget: child.name });
21312
- if (child.parents.length > 0) {
21313
- const nextPrefix = prefix + (isLast ? " " : "\u2502 ");
21314
- walk(child.parents, nextPrefix);
21315
- }
21316
- }
21317
- };
21318
- walk(node.parents, "");
21319
- return lines;
21320
- }
21321
- function renderDescendantTree(root, closure, graph) {
21322
- const lines = [];
21323
- if (closure.containsCycle) {
21324
- for (const node of closure.nodes) {
21325
- if (node.name === root) continue;
21326
- lines.push({ text: ` ${node.name}`, jumpTarget: node.name });
21327
- }
21328
- return lines;
21329
- }
21330
- const byName = new Map(graph.map((n) => [n.name, n]));
21331
- const known = new Set(closure.nodes.map((n) => n.name));
21332
- const childrenOf = (name) => {
21333
- const node = byName.get(name);
21334
- if (!node) return [];
21335
- const seen = /* @__PURE__ */ new Set();
21336
- const out = [];
21337
- for (const slot of node.slots) {
21338
- for (const target of slot.allowedComponents ?? []) {
21339
- if (!known.has(target)) continue;
21340
- if (target === name) continue;
21341
- if (seen.has(target)) continue;
21342
- seen.add(target);
21343
- out.push(target);
21344
- }
21345
- }
21346
- return out.sort((a, b) => a.localeCompare(b));
21347
- };
21348
- const visited = /* @__PURE__ */ new Set([root]);
21349
- const walk = (parent, prefix) => {
21350
- const kids = childrenOf(parent);
21351
- for (let i = 0; i < kids.length; i++) {
21352
- const child = kids[i];
21353
- if (visited.has(child)) continue;
21354
- visited.add(child);
21355
- const isLast = i === kids.length - 1;
21356
- const glyph = isLast ? "\u2514\u2500" : "\u251C\u2500";
21357
- lines.push({ text: `${prefix}${glyph} ${child}`, jumpTarget: child });
21358
- const nextPrefix = prefix + (isLast ? " " : "\u2502 ");
21359
- walk(child, nextPrefix);
21360
- }
21361
- };
21362
- walk(root, "");
21363
- return lines;
21364
- }
21365
- function useLineage(focusedKey, graph) {
21366
- const graphKey = useMemo3(() => JSON.stringify(graph), [graph]);
21367
- const stableGraph = useMemo3(() => graph, [graphKey]);
21368
- const closures = useMemo3(() => computeAllClosures(stableGraph), [stableGraph]);
21369
- const entries = useMemo3(() => {
21370
- if (!focusedKey) return [];
21371
- const name = focusedKey;
21372
- const tree = buildAncestorTree(name, stableGraph);
21373
- const closure = closures.get(name);
21374
- const out = [];
21375
- out.push({ kind: "section", label: "Ancestors:" });
21376
- if (tree.parents.length === 0) {
21377
- out.push({ kind: "empty", label: " (no ancestors)" });
21378
- } else {
21379
- const lines = renderCleanAncestorTree(tree);
21380
- for (const line of lines) {
21381
- out.push({ kind: "ancestor", label: " " + line.text, jumpTarget: line.jumpTarget ?? name });
21382
- }
21383
- }
21384
- out.push({ kind: "section", label: "Descendants:" });
21385
- if (!closure || closure.nodes.length <= 1) {
21386
- out.push({ kind: "empty", label: " (none)" });
21387
- } else {
21388
- for (const line of renderDescendantTree(name, closure, stableGraph)) {
21389
- out.push({ kind: "descendant", label: " " + line.text, jumpTarget: line.jumpTarget });
21390
- }
21391
- }
21392
- return out;
21393
- }, [focusedKey, stableGraph, closures]);
21394
- const jumpables = useMemo3(
21395
- () => entries.map((entry, i) => ({ entry, i })).filter(({ entry }) => entry.kind === "ancestor" || entry.kind === "descendant"),
21396
- [entries]
21397
- );
21398
- return { entries, jumpables };
21399
- }
21400
- var init_useLineage = __esm({
21401
- "packages/experience-design-system-cli/src/import/tui/hooks/useLineage.ts"() {
21402
- "use strict";
21403
- init_composite_closure();
21404
- init_lineage();
21405
- }
21406
- });
21407
-
21408
21252
  // packages/experience-design-system-cli/src/import/cycle-auto-reject.ts
21409
21253
  function computeCycleAutoRejectTargets(slotCycles, graph) {
21410
21254
  const targets = /* @__PURE__ */ new Set();
@@ -21423,65 +21267,6 @@ var init_cycle_auto_reject = __esm({
21423
21267
  }
21424
21268
  });
21425
21269
 
21426
- // packages/experience-design-system-cli/src/analyze/select/tui/components/LineagePanel.tsx
21427
- import figures4 from "figures";
21428
- import { Text as Text30 } from "ink";
21429
- import { jsx as jsx33, jsxs as jsxs30 } from "react/jsx-runtime";
21430
- function LineagePanel({
21431
- focusedComponentKey,
21432
- entries,
21433
- cursor,
21434
- jumpables,
21435
- maxRows,
21436
- width
21437
- }) {
21438
- const rows = entries.map((e) => ({
21439
- label: e.label,
21440
- jumpTarget: e.kind === "ancestor" || e.kind === "descendant" ? e.jumpTarget : "",
21441
- kind: e.kind
21442
- }));
21443
- const cursorRowIndex = jumpables[cursor]?.i ?? 0;
21444
- return /* @__PURE__ */ jsx33(
21445
- GotoBanner,
21446
- {
21447
- title: `Lineage: ${focusedComponentKey}`,
21448
- rows,
21449
- cursor,
21450
- cursorRowIndex,
21451
- maxRows,
21452
- width,
21453
- footerHint: LINEAGE_FOOTER_HINT,
21454
- renderRow: (row, i, isCursor) => {
21455
- if (row.kind === "section") {
21456
- return /* @__PURE__ */ jsxs30(Text30, { bold: true, children: [
21457
- " ",
21458
- row.label
21459
- ] }, i);
21460
- }
21461
- if (row.kind === "empty") {
21462
- return /* @__PURE__ */ jsxs30(Text30, { children: [
21463
- /* @__PURE__ */ jsx33(Text30, { children: " " }),
21464
- /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: " " + row.label })
21465
- ] }, i);
21466
- }
21467
- return /* @__PURE__ */ jsxs30(Text30, { children: [
21468
- isCursor ? /* @__PURE__ */ jsx33(Text30, { color: PALETTE.info, bold: true, children: figures4.pointer }) : /* @__PURE__ */ jsx33(Text30, { children: " " }),
21469
- /* @__PURE__ */ jsx33(Text30, { inverse: isCursor, children: " " + row.label })
21470
- ] }, i);
21471
- }
21472
- }
21473
- );
21474
- }
21475
- var LINEAGE_FOOTER_HINT;
21476
- var init_LineagePanel = __esm({
21477
- "packages/experience-design-system-cli/src/analyze/select/tui/components/LineagePanel.tsx"() {
21478
- "use strict";
21479
- init_theme();
21480
- init_GotoBanner();
21481
- LINEAGE_FOOTER_HINT = "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [l/Esc] close";
21482
- }
21483
- });
21484
-
21485
21270
  // packages/experience-design-system-cli/src/import/tui/steps/auto-reject-decision.ts
21486
21271
  function computeAutoRejectDecision(input) {
21487
21272
  if (input.loading) return "skip";
@@ -21565,44 +21350,6 @@ var init_enumerate_cycle_breaks = __esm({
21565
21350
  }
21566
21351
  });
21567
21352
 
21568
- // packages/experience-design-system-cli/src/import/tui/lineage-input.ts
21569
- function handleLineageNavigation({
21570
- key,
21571
- cursor,
21572
- jumpables,
21573
- onCursorChange,
21574
- onJump,
21575
- onClose,
21576
- allowTab
21577
- }) {
21578
- if (key.upArrow) {
21579
- onCursorChange((current) => Math.max(0, current - 1));
21580
- return true;
21581
- }
21582
- if (key.downArrow) {
21583
- onCursorChange((current) => Math.min(Math.max(0, jumpables.length - 1), current + 1));
21584
- return true;
21585
- }
21586
- if (allowTab && key.tab) {
21587
- onCursorChange((current) => jumpables.length === 0 ? 0 : (current + 1) % jumpables.length);
21588
- return true;
21589
- }
21590
- if (key.return) {
21591
- const target = jumpables[cursor];
21592
- if (target && (target.entry.kind === "ancestor" || target.entry.kind === "descendant")) {
21593
- onJump(target.entry.jumpTarget);
21594
- }
21595
- onClose();
21596
- return true;
21597
- }
21598
- return false;
21599
- }
21600
- var init_lineage_input = __esm({
21601
- "packages/experience-design-system-cli/src/import/tui/lineage-input.ts"() {
21602
- "use strict";
21603
- }
21604
- });
21605
-
21606
21353
  // packages/experience-design-system-cli/src/analyze/select/tui/hooks/scroll-offset.ts
21607
21354
  function computeNextScrollOffset(current, input, key, totalLines, panelHeight) {
21608
21355
  const maxOffset = Math.max(0, totalLines - panelHeight);
@@ -21638,14 +21385,14 @@ var init_scroll_offset = __esm({
21638
21385
 
21639
21386
  // packages/experience-design-system-cli/src/analyze/select/tui/components/FieldEditor.tsx
21640
21387
  import React14, { useState as useState15 } from "react";
21641
- import figures5 from "figures";
21642
- import { Box as Box29, Text as Text31 } from "ink";
21388
+ import figures4 from "figures";
21389
+ import { Box as Box29, Text as Text30 } from "ink";
21643
21390
  import {
21644
21391
  CDF_PROPERTY_TYPES,
21645
21392
  CDF_PROPERTY_CATEGORIES,
21646
21393
  DESIGN_TOKEN_TYPES as DESIGN_TOKEN_TYPES2
21647
21394
  } from "@contentful/experience-design-system-types";
21648
- import { Fragment as Fragment10, jsx as jsx34, jsxs as jsxs31 } from "react/jsx-runtime";
21395
+ import { Fragment as Fragment10, jsx as jsx33, jsxs as jsxs30 } from "react/jsx-runtime";
21649
21396
  function removeAt(values, index) {
21650
21397
  return values.filter((_, i) => i !== index);
21651
21398
  }
@@ -21768,25 +21515,25 @@ function serializeState(state, originalJson) {
21768
21515
  return JSON.stringify(entry, null, 2);
21769
21516
  }
21770
21517
  function Picker({ value, active }) {
21771
- return /* @__PURE__ */ jsxs31(Box29, { children: [
21772
- active && /* @__PURE__ */ jsx34(Text31, { color: PALETTE.info, children: "\u2039" }),
21773
- /* @__PURE__ */ jsx34(Text31, { color: active ? PALETTE.info : PALETTE.inverse, bold: active, children: value }),
21774
- active && /* @__PURE__ */ jsx34(Text31, { color: PALETTE.info, children: "\u203A" })
21518
+ return /* @__PURE__ */ jsxs30(Box29, { children: [
21519
+ active && /* @__PURE__ */ jsx33(Text30, { color: PALETTE.info, children: "\u2039" }),
21520
+ /* @__PURE__ */ jsx33(Text30, { color: active ? PALETTE.info : PALETTE.inverse, bold: active, children: value }),
21521
+ active && /* @__PURE__ */ jsx33(Text30, { color: PALETTE.info, children: "\u203A" })
21775
21522
  ] });
21776
21523
  }
21777
21524
  function Toggle({ value, active }) {
21778
- return /* @__PURE__ */ jsx34(Box29, { children: /* @__PURE__ */ jsx34(Text31, { color: active ? PALETTE.info : value ? PALETTE.success : void 0, children: value ? "[\u2713]" : "[ ]" }) });
21525
+ return /* @__PURE__ */ jsx33(Box29, { children: /* @__PURE__ */ jsx33(Text30, { color: active ? PALETTE.info : value ? PALETTE.success : void 0, children: value ? "[\u2713]" : "[ ]" }) });
21779
21526
  }
21780
21527
  function DefaultValueRow({ display, active }) {
21781
- return /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, gap: 1, children: [
21782
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "default:" }),
21783
- active ? /* @__PURE__ */ jsx34(Picker, { value: display, active: true }) : /* @__PURE__ */ jsx34(Text31, { color: PALETTE.inverse, children: display })
21528
+ return /* @__PURE__ */ jsxs30(Box29, { paddingLeft: 2, gap: 1, children: [
21529
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "default:" }),
21530
+ active ? /* @__PURE__ */ jsx33(Picker, { value: display, active: true }) : /* @__PURE__ */ jsx33(Text30, { color: PALETTE.inverse, children: display })
21784
21531
  ] });
21785
21532
  }
21786
21533
  function RowLabel({ name, selected }) {
21787
21534
  const nameDisplay = name.length > 14 ? name.slice(0, 13) + "\u2026" : name.padEnd(14);
21788
- return /* @__PURE__ */ jsxs31(
21789
- Text31,
21535
+ return /* @__PURE__ */ jsxs30(
21536
+ Text30,
21790
21537
  {
21791
21538
  color: selected ? PALETTE.inverse : PALETTE.info,
21792
21539
  bold: selected,
@@ -21804,10 +21551,10 @@ function ValueInputRow({
21804
21551
  valueText,
21805
21552
  cursorVisible
21806
21553
  }) {
21807
- return /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, children: [
21808
- /* @__PURE__ */ jsx34(Text31, { color: PALETTE.info, children: mode === "edit" ? "\u270E " : "+ " }),
21809
- /* @__PURE__ */ jsx34(Text31, { children: valueText }),
21810
- /* @__PURE__ */ jsx34(Text31, { inverse: cursorVisible, children: " " })
21554
+ return /* @__PURE__ */ jsxs30(Box29, { paddingLeft: 2, children: [
21555
+ /* @__PURE__ */ jsx33(Text30, { color: PALETTE.info, children: mode === "edit" ? "\u270E " : "+ " }),
21556
+ /* @__PURE__ */ jsx33(Text30, { children: valueText }),
21557
+ /* @__PURE__ */ jsx33(Text30, { inverse: cursorVisible, children: " " })
21811
21558
  ] });
21812
21559
  }
21813
21560
  function EditableListItem({
@@ -21820,9 +21567,9 @@ function EditableListItem({
21820
21567
  }) {
21821
21568
  const isBeingEdited = editingValue?.mode === "edit" && editingValue.index === index;
21822
21569
  if (isBeingEdited) {
21823
- return /* @__PURE__ */ jsx34(ValueInputRow, { mode: "edit", valueText, cursorVisible });
21570
+ return /* @__PURE__ */ jsx33(ValueInputRow, { mode: "edit", valueText, cursorVisible });
21824
21571
  }
21825
- return /* @__PURE__ */ jsx34(Box29, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx34(Text31, { color: active ? PALETTE.info : PALETTE.inverse, children: active ? `${figures5.pointer} ${value}` : ` ${value}` }) });
21572
+ return /* @__PURE__ */ jsx33(Box29, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx33(Text30, { color: active ? PALETTE.info : PALETTE.inverse, children: active ? `${figures4.pointer} ${value}` : ` ${value}` }) });
21826
21573
  }
21827
21574
  function EditableValueList({
21828
21575
  values,
@@ -21835,9 +21582,9 @@ function EditableValueList({
21835
21582
  emptyPaddingLeft,
21836
21583
  showAddInput
21837
21584
  }) {
21838
- return /* @__PURE__ */ jsxs31(Fragment10, { children: [
21839
- values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: emptyMessage }) : /* @__PURE__ */ jsx34(Box29, { paddingLeft: emptyPaddingLeft, children: /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: emptyMessage }) })),
21840
- values.map((value, index) => /* @__PURE__ */ jsx34(
21585
+ return /* @__PURE__ */ jsxs30(Fragment10, { children: [
21586
+ values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: emptyMessage }) : /* @__PURE__ */ jsx33(Box29, { paddingLeft: emptyPaddingLeft, children: /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: emptyMessage }) })),
21587
+ values.map((value, index) => /* @__PURE__ */ jsx33(
21841
21588
  EditableListItem,
21842
21589
  {
21843
21590
  value,
@@ -21849,7 +21596,7 @@ function EditableValueList({
21849
21596
  },
21850
21597
  index
21851
21598
  )),
21852
- showAddInput && editingValue?.mode === "add" && /* @__PURE__ */ jsx34(ValueInputRow, { mode: "add", valueText, cursorVisible })
21599
+ showAddInput && editingValue?.mode === "add" && /* @__PURE__ */ jsx33(ValueInputRow, { mode: "add", valueText, cursorVisible })
21853
21600
  ] });
21854
21601
  }
21855
21602
  function DefaultSubRow({
@@ -21860,39 +21607,39 @@ function DefaultSubRow({
21860
21607
  }) {
21861
21608
  const cursor = cursorVisible ? "\u2588" : " ";
21862
21609
  if (prop.type === "richtext" || prop.type === "media" || prop.type === "link") {
21863
- return /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, gap: 1, children: [
21864
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "default:" }),
21865
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "(not applicable)" })
21610
+ return /* @__PURE__ */ jsxs30(Box29, { paddingLeft: 2, gap: 1, children: [
21611
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "default:" }),
21612
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "(not applicable)" })
21866
21613
  ] });
21867
21614
  }
21868
21615
  if (prop.type === "boolean") {
21869
21616
  const display = prop.default === true ? "true" : prop.default === false ? "false" : "(unset)";
21870
- return /* @__PURE__ */ jsx34(DefaultValueRow, { display, active });
21617
+ return /* @__PURE__ */ jsx33(DefaultValueRow, { display, active });
21871
21618
  }
21872
21619
  if (prop.type === "enum") {
21873
21620
  if (prop.values.length === 0) {
21874
- return /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, gap: 1, children: [
21875
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "default:" }),
21876
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "(no values defined)" })
21621
+ return /* @__PURE__ */ jsxs30(Box29, { paddingLeft: 2, gap: 1, children: [
21622
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "default:" }),
21623
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "(no values defined)" })
21877
21624
  ] });
21878
21625
  }
21879
21626
  const display = typeof prop.default === "string" && prop.default !== "" ? prop.default : "(unset)";
21880
- return /* @__PURE__ */ jsx34(DefaultValueRow, { display, active });
21627
+ return /* @__PURE__ */ jsx33(DefaultValueRow, { display, active });
21881
21628
  }
21882
21629
  const value = typeof prop.default === "string" ? prop.default : "";
21883
21630
  if (active) {
21884
- return /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, flexDirection: "row", children: [
21885
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "default:" }),
21886
- /* @__PURE__ */ jsxs31(Box29, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
21887
- /* @__PURE__ */ jsx34(Text31, { children: value.slice(0, textCursor) }),
21888
- /* @__PURE__ */ jsx34(Text31, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
21889
- /* @__PURE__ */ jsx34(Text31, { children: value.slice(textCursor + 1) })
21631
+ return /* @__PURE__ */ jsxs30(Box29, { paddingLeft: 2, flexDirection: "row", children: [
21632
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "default:" }),
21633
+ /* @__PURE__ */ jsxs30(Box29, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
21634
+ /* @__PURE__ */ jsx33(Text30, { children: value.slice(0, textCursor) }),
21635
+ /* @__PURE__ */ jsx33(Text30, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
21636
+ /* @__PURE__ */ jsx33(Text30, { children: value.slice(textCursor + 1) })
21890
21637
  ] })
21891
21638
  ] });
21892
21639
  }
21893
- return /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, gap: 1, children: [
21894
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "default:" }),
21895
- /* @__PURE__ */ jsx34(Text31, { color: value ? PALETTE.inverse : void 0, dimColor: !value, children: value || "(none)" })
21640
+ return /* @__PURE__ */ jsxs30(Box29, { paddingLeft: 2, gap: 1, children: [
21641
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "default:" }),
21642
+ /* @__PURE__ */ jsx33(Text30, { color: value ? PALETTE.inverse : void 0, dimColor: !value, children: value || "(none)" })
21896
21643
  ] });
21897
21644
  }
21898
21645
  function PropRow({
@@ -21910,28 +21657,28 @@ function PropRow({
21910
21657
  }) {
21911
21658
  const cursor = cursorVisible ? "\u2588" : " ";
21912
21659
  const descActive = activeField === "description";
21913
- return /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", width, children: [
21914
- /* @__PURE__ */ jsxs31(Box29, { gap: 1, children: [
21915
- /* @__PURE__ */ jsx34(RowLabel, { name: prop.name, selected }),
21916
- /* @__PURE__ */ jsx34(Text31, { dimColor: !selected, children: "type:" }),
21917
- activeField === "type" ? /* @__PURE__ */ jsx34(Picker, { value: prop.type, active: true }) : /* @__PURE__ */ jsx34(Text31, { color: selected ? PALETTE.warning : PALETTE.inverse, children: prop.type }),
21918
- activeField === "category" && /* @__PURE__ */ jsx34(Picker, { value: prop.category, active: true }),
21919
- /* @__PURE__ */ jsx34(Text31, { dimColor: !selected, children: "req:" }),
21920
- activeField === "required" ? /* @__PURE__ */ jsx34(Toggle, { value: prop.required, active: true }) : /* @__PURE__ */ jsx34(Toggle, { value: prop.required, active: false }),
21921
- prop.type === "enum" && /* @__PURE__ */ jsxs31(Fragment10, { children: [
21922
- /* @__PURE__ */ jsx34(Text31, { dimColor: !selected, children: "values:" }),
21923
- /* @__PURE__ */ jsxs31(Text31, { color: selected ? PALETTE.warning : PALETTE.inverse, children: [
21660
+ return /* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", width, children: [
21661
+ /* @__PURE__ */ jsxs30(Box29, { gap: 1, children: [
21662
+ /* @__PURE__ */ jsx33(RowLabel, { name: prop.name, selected }),
21663
+ /* @__PURE__ */ jsx33(Text30, { dimColor: !selected, children: "type:" }),
21664
+ activeField === "type" ? /* @__PURE__ */ jsx33(Picker, { value: prop.type, active: true }) : /* @__PURE__ */ jsx33(Text30, { color: selected ? PALETTE.warning : PALETTE.inverse, children: prop.type }),
21665
+ activeField === "category" && /* @__PURE__ */ jsx33(Picker, { value: prop.category, active: true }),
21666
+ /* @__PURE__ */ jsx33(Text30, { dimColor: !selected, children: "req:" }),
21667
+ activeField === "required" ? /* @__PURE__ */ jsx33(Toggle, { value: prop.required, active: true }) : /* @__PURE__ */ jsx33(Toggle, { value: prop.required, active: false }),
21668
+ prop.type === "enum" && /* @__PURE__ */ jsxs30(Fragment10, { children: [
21669
+ /* @__PURE__ */ jsx33(Text30, { dimColor: !selected, children: "values:" }),
21670
+ /* @__PURE__ */ jsxs30(Text30, { color: selected ? PALETTE.warning : PALETTE.inverse, children: [
21924
21671
  "[",
21925
21672
  prop.values.join(", "),
21926
21673
  "]"
21927
21674
  ] })
21928
21675
  ] }),
21929
- prop.type === "token" && /* @__PURE__ */ jsxs31(Fragment10, { children: [
21930
- /* @__PURE__ */ jsx34(Text31, { dimColor: !selected, children: "kind:" }),
21931
- activeField === "tokenKind" ? /* @__PURE__ */ jsx34(Picker, { value: prop.tokenKind || DESIGN_TOKEN_TYPES2[0], active: true }) : /* @__PURE__ */ jsx34(Text31, { color: selected ? PALETTE.success : PALETTE.inverse, children: prop.tokenKind || "\u2014" })
21676
+ prop.type === "token" && /* @__PURE__ */ jsxs30(Fragment10, { children: [
21677
+ /* @__PURE__ */ jsx33(Text30, { dimColor: !selected, children: "kind:" }),
21678
+ activeField === "tokenKind" ? /* @__PURE__ */ jsx33(Picker, { value: prop.tokenKind || DESIGN_TOKEN_TYPES2[0], active: true }) : /* @__PURE__ */ jsx33(Text30, { color: selected ? PALETTE.success : PALETTE.inverse, children: prop.tokenKind || "\u2014" })
21932
21679
  ] })
21933
21680
  ] }),
21934
- selected && /* @__PURE__ */ jsx34(
21681
+ selected && /* @__PURE__ */ jsx33(
21935
21682
  DefaultSubRow,
21936
21683
  {
21937
21684
  prop,
@@ -21940,33 +21687,33 @@ function PropRow({
21940
21687
  cursorVisible
21941
21688
  }
21942
21689
  ),
21943
- selected && descActive && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, flexDirection: "row", children: [
21944
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "desc:" }),
21945
- /* @__PURE__ */ jsxs31(Box29, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
21946
- /* @__PURE__ */ jsx34(Text31, { children: prop.description.slice(0, textCursor) }),
21947
- /* @__PURE__ */ jsx34(Text31, { inverse: cursorVisible, children: prop.description[textCursor] ?? cursor }),
21948
- /* @__PURE__ */ jsx34(Text31, { children: prop.description.slice(textCursor + 1) })
21690
+ selected && descActive && /* @__PURE__ */ jsxs30(Box29, { paddingLeft: 2, flexDirection: "row", children: [
21691
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "desc:" }),
21692
+ /* @__PURE__ */ jsxs30(Box29, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
21693
+ /* @__PURE__ */ jsx33(Text30, { children: prop.description.slice(0, textCursor) }),
21694
+ /* @__PURE__ */ jsx33(Text30, { inverse: cursorVisible, children: prop.description[textCursor] ?? cursor }),
21695
+ /* @__PURE__ */ jsx33(Text30, { children: prop.description.slice(textCursor + 1) })
21949
21696
  ] })
21950
21697
  ] }),
21951
- selected && !descActive && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, gap: 1, children: [
21952
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "desc:" }),
21953
- /* @__PURE__ */ jsx34(Text31, { color: PALETTE.success, children: prop.description || "\u2014" })
21698
+ selected && !descActive && /* @__PURE__ */ jsxs30(Box29, { paddingLeft: 2, gap: 1, children: [
21699
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "desc:" }),
21700
+ /* @__PURE__ */ jsx33(Text30, { color: PALETTE.success, children: prop.description || "\u2014" })
21954
21701
  ] }),
21955
- selected && prop.type === "token" && prop.category === "design" && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, flexDirection: "row", gap: 1, children: [
21956
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "allowed:" }),
21957
- activeField === "allowed" ? /* @__PURE__ */ jsx34(Box29, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "press [t] to edit allowed tokens" }) }) : /* @__PURE__ */ jsx34(Text31, { color: prop.allowed.length > 0 ? PALETTE.info : void 0, dimColor: prop.allowed.length === 0, children: prop.allowed.length > 0 ? prop.allowed.join(", ") : "(any)" })
21702
+ selected && prop.type === "token" && prop.category === "design" && /* @__PURE__ */ jsxs30(Box29, { paddingLeft: 2, flexDirection: "row", gap: 1, children: [
21703
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "allowed:" }),
21704
+ activeField === "allowed" ? /* @__PURE__ */ jsx33(Box29, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "press [t] to edit allowed tokens" }) }) : /* @__PURE__ */ jsx33(Text30, { color: prop.allowed.length > 0 ? PALETTE.info : void 0, dimColor: prop.allowed.length === 0, children: prop.allowed.length > 0 ? prop.allowed.join(", ") : "(any)" })
21958
21705
  ] }),
21959
- selected && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx34(Box29, { paddingLeft: 2, children: /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: (() => {
21706
+ selected && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx33(Box29, { paddingLeft: 2, children: /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: (() => {
21960
21707
  const max = Math.max(8, width - 8);
21961
21708
  const text = `~ ${rationale}`;
21962
21709
  return text.length > max ? text.slice(0, max - 1) + "\u2026" : text;
21963
21710
  })() }) }, rowKey ? `rationale-${rowKey}` : void 0),
21964
- selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, flexDirection: "column", children: [
21965
- /* @__PURE__ */ jsxs31(Box29, { children: [
21966
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "values:" }),
21967
- activeField === "values" && /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: " [a]dd [e]dit [r]emove [\u2191\u2193] navigate [K/J] reorder" })
21711
+ selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs30(Box29, { paddingLeft: 2, flexDirection: "column", children: [
21712
+ /* @__PURE__ */ jsxs30(Box29, { children: [
21713
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "values:" }),
21714
+ activeField === "values" && /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: " [a]dd [e]dit [r]emove [\u2191\u2193] navigate [K/J] reorder" })
21968
21715
  ] }),
21969
- /* @__PURE__ */ jsx34(
21716
+ /* @__PURE__ */ jsx33(
21970
21717
  EditableValueList,
21971
21718
  {
21972
21719
  values: prop.values,
@@ -21996,22 +21743,22 @@ function SlotRow({
21996
21743
  pickerCursor
21997
21744
  }) {
21998
21745
  const cursor = cursorVisible ? "\u2588" : " ";
21999
- return /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", width, children: [
22000
- /* @__PURE__ */ jsxs31(Box29, { gap: 1, children: [
22001
- /* @__PURE__ */ jsx34(RowLabel, { name: slot.name, selected }),
22002
- /* @__PURE__ */ jsx34(Text31, { dimColor: !selected, children: "req:" }),
22003
- activeField === "required" ? /* @__PURE__ */ jsx34(Toggle, { value: slot.required, active: true }) : /* @__PURE__ */ jsx34(Toggle, { value: slot.required, active: false })
21746
+ return /* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", width, children: [
21747
+ /* @__PURE__ */ jsxs30(Box29, { gap: 1, children: [
21748
+ /* @__PURE__ */ jsx33(RowLabel, { name: slot.name, selected }),
21749
+ /* @__PURE__ */ jsx33(Text30, { dimColor: !selected, children: "req:" }),
21750
+ activeField === "required" ? /* @__PURE__ */ jsx33(Toggle, { value: slot.required, active: true }) : /* @__PURE__ */ jsx33(Toggle, { value: slot.required, active: false })
22004
21751
  ] }),
22005
- !selected && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, gap: 1, children: [
22006
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "allowed:" }),
22007
- slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "(any)" }) : /* @__PURE__ */ jsx34(Text31, { color: PALETTE.info, children: slot.allowedComponents.join(", ") })
21752
+ !selected && /* @__PURE__ */ jsxs30(Box29, { paddingLeft: 2, gap: 1, children: [
21753
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "allowed:" }),
21754
+ slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "(any)" }) : /* @__PURE__ */ jsx33(Text30, { color: PALETTE.info, children: slot.allowedComponents.join(", ") })
22008
21755
  ] }),
22009
- selected && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, flexDirection: "column", children: [
22010
- /* @__PURE__ */ jsxs31(Box29, { children: [
22011
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "allowed:" }),
22012
- activeField === "allowedComponents" && /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: slot.allowedComponents.length > 0 ? " [a]dd [e]dit [r]emove [\u2190\u2192] cycle [\u2191\u2193] navigate [K/J] reorder" : " [a]dd [e]dit [r]emove [\u2191\u2193] navigate [K/J] reorder" })
21756
+ selected && /* @__PURE__ */ jsxs30(Box29, { paddingLeft: 2, flexDirection: "column", children: [
21757
+ /* @__PURE__ */ jsxs30(Box29, { children: [
21758
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "allowed:" }),
21759
+ activeField === "allowedComponents" && /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: slot.allowedComponents.length > 0 ? " [a]dd [e]dit [r]emove [\u2190\u2192] cycle [\u2191\u2193] navigate [K/J] reorder" : " [a]dd [e]dit [r]emove [\u2191\u2193] navigate [K/J] reorder" })
22013
21760
  ] }),
22014
- /* @__PURE__ */ jsx34(
21761
+ /* @__PURE__ */ jsx33(
22015
21762
  EditableValueList,
22016
21763
  {
22017
21764
  values: slot.allowedComponents,
@@ -22025,36 +21772,36 @@ function SlotRow({
22025
21772
  showAddInput: activeField === "allowedComponents"
22026
21773
  }
22027
21774
  ),
22028
- editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */ jsx34(Box29, { paddingLeft: 2, flexDirection: "column", children: pickerCandidates.length === 0 ? /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "(no valid components to add \u2014 all remaining candidates would create cycles)" }) : (() => {
21775
+ editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */ jsx33(Box29, { paddingLeft: 2, flexDirection: "column", children: pickerCandidates.length === 0 ? /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "(no valid components to add \u2014 all remaining candidates would create cycles)" }) : (() => {
22029
21776
  const filtered = valueText.length === 0 ? pickerCandidates : pickerCandidates.filter((n) => n.toLowerCase().includes(valueText.toLowerCase()));
22030
21777
  if (filtered.length === 0) {
22031
- return /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "(no candidates match \u2014 Enter to add as free text)" });
21778
+ return /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "(no candidates match \u2014 Enter to add as free text)" });
22032
21779
  }
22033
21780
  const cursor2 = pickerCursor % filtered.length;
22034
21781
  const MAX_VISIBLE = 5;
22035
21782
  const start = Math.max(0, Math.min(filtered.length - MAX_VISIBLE, cursor2 - 2));
22036
21783
  const slice = filtered.slice(start, start + MAX_VISIBLE);
22037
- return /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", children: [
22038
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
21784
+ return /* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", children: [
21785
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
22039
21786
  slice.map((name, i) => {
22040
21787
  const absIdx = start + i;
22041
21788
  const isCursor = absIdx === cursor2;
22042
- return /* @__PURE__ */ jsx34(Text31, { color: isCursor ? PALETTE.info : void 0, dimColor: !isCursor, children: isCursor ? ` ${figures5.pointer} ${name}` : ` ${name}` }, name);
21789
+ return /* @__PURE__ */ jsx33(Text30, { color: isCursor ? PALETTE.info : void 0, dimColor: !isCursor, children: isCursor ? ` ${figures4.pointer} ${name}` : ` ${name}` }, name);
22043
21790
  })
22044
21791
  ] });
22045
21792
  })() })
22046
21793
  ] }),
22047
- selected && activeField === "description" && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, flexDirection: "row", children: [
22048
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "desc:" }),
22049
- /* @__PURE__ */ jsxs31(Box29, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
22050
- /* @__PURE__ */ jsx34(Text31, { children: slot.description.slice(0, textCursor) }),
22051
- /* @__PURE__ */ jsx34(Text31, { inverse: cursorVisible, children: slot.description[textCursor] ?? cursor }),
22052
- /* @__PURE__ */ jsx34(Text31, { children: slot.description.slice(textCursor + 1) })
21794
+ selected && activeField === "description" && /* @__PURE__ */ jsxs30(Box29, { paddingLeft: 2, flexDirection: "row", children: [
21795
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "desc:" }),
21796
+ /* @__PURE__ */ jsxs30(Box29, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
21797
+ /* @__PURE__ */ jsx33(Text30, { children: slot.description.slice(0, textCursor) }),
21798
+ /* @__PURE__ */ jsx33(Text30, { inverse: cursorVisible, children: slot.description[textCursor] ?? cursor }),
21799
+ /* @__PURE__ */ jsx33(Text30, { children: slot.description.slice(textCursor + 1) })
22053
21800
  ] })
22054
21801
  ] }),
22055
- selected && activeField !== "description" && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, gap: 1, children: [
22056
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "desc:" }),
22057
- /* @__PURE__ */ jsx34(Text31, { color: PALETTE.success, children: slot.description || "\u2014" })
21802
+ selected && activeField !== "description" && /* @__PURE__ */ jsxs30(Box29, { paddingLeft: 2, gap: 1, children: [
21803
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "desc:" }),
21804
+ /* @__PURE__ */ jsx33(Text30, { color: PALETTE.success, children: slot.description || "\u2014" })
22058
21805
  ] })
22059
21806
  ] });
22060
21807
  }
@@ -22839,18 +22586,18 @@ function FieldEditor({
22839
22586
  });
22840
22587
  const innerWidth = Math.max(1, width - 2);
22841
22588
  if (parseErr) {
22842
- return /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
22843
- /* @__PURE__ */ jsx34(Text31, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
22844
- /* @__PURE__ */ jsx34(Text31, { color: PALETTE.error, children: parseErr }),
22845
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "Cannot display structured editor. Fix the JSON first." })
22589
+ return /* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
22590
+ /* @__PURE__ */ jsx33(Text30, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
22591
+ /* @__PURE__ */ jsx33(Text30, { color: PALETTE.error, children: parseErr }),
22592
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "Cannot display structured editor. Fix the JSON first." })
22846
22593
  ] });
22847
22594
  }
22848
22595
  if (props.length === 0 && slots.length === 0) {
22849
- return /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
22850
- /* @__PURE__ */ jsx34(Text31, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
22851
- /* @__PURE__ */ jsx34(Text31, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
22852
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "You can add fields manually below or reject this component." }),
22853
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "Ctrl+S to save \xB7 Esc to discard" })
22596
+ return /* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
22597
+ /* @__PURE__ */ jsx33(Text30, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
22598
+ /* @__PURE__ */ jsx33(Text30, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
22599
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "You can add fields manually below or reject this component." }),
22600
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "Ctrl+S to save \xB7 Esc to discard" })
22854
22601
  ] });
22855
22602
  }
22856
22603
  const hasEmptyProperties = props.length === 0 && slots.length === 0;
@@ -22901,7 +22648,7 @@ function FieldEditor({
22901
22648
  const visibleRows = Math.max(1, height - 3);
22902
22649
  const scrollStart = selectedRowIdx < 0 ? 0 : Math.max(0, Math.min(selectedRowIdx, rows.length - visibleRows));
22903
22650
  const visibleRowSlice = rows.slice(scrollStart, scrollStart + visibleRows);
22904
- return /* @__PURE__ */ jsxs31(
22651
+ return /* @__PURE__ */ jsxs30(
22905
22652
  Box29,
22906
22653
  {
22907
22654
  flexDirection: "column",
@@ -22909,18 +22656,18 @@ function FieldEditor({
22909
22656
  borderStyle: "single",
22910
22657
  borderColor: hasEmptyProperties ? PALETTE.warning : PALETTE.info,
22911
22658
  children: [
22912
- hasEmptyProperties && /* @__PURE__ */ jsx34(Text31, { 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." }),
22913
- /* @__PURE__ */ jsx34(Box29, { flexDirection: "column", width: innerWidth, children: visibleRowSlice.map((row, i) => {
22659
+ hasEmptyProperties && /* @__PURE__ */ jsx33(Text30, { 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." }),
22660
+ /* @__PURE__ */ jsx33(Box29, { flexDirection: "column", width: innerWidth, children: visibleRowSlice.map((row, i) => {
22914
22661
  if (row.kind === "header") {
22915
- return /* @__PURE__ */ jsx34(Text31, { bold: true, color: PALETTE.success, children: row.label }, `header-${i}`);
22662
+ return /* @__PURE__ */ jsx33(Text30, { bold: true, color: PALETTE.success, children: row.label }, `header-${i}`);
22916
22663
  }
22917
22664
  if (row.kind === "component-description") {
22918
22665
  const isSelected2 = inComponentDesc && active;
22919
22666
  const isEditing = isSelected2 && focusLevel === "field" && activeField === "description";
22920
22667
  const desc = editorState.componentDescription;
22921
- return /* @__PURE__ */ jsx34(Box29, { flexDirection: "column", children: /* @__PURE__ */ jsxs31(Box29, { gap: 1, children: [
22922
- /* @__PURE__ */ jsx34(
22923
- Text31,
22668
+ return /* @__PURE__ */ jsx33(Box29, { flexDirection: "column", children: /* @__PURE__ */ jsxs30(Box29, { gap: 1, children: [
22669
+ /* @__PURE__ */ jsx33(
22670
+ Text30,
22924
22671
  {
22925
22672
  color: isSelected2 ? PALETTE.inverse : PALETTE.info,
22926
22673
  bold: isSelected2,
@@ -22928,18 +22675,18 @@ function FieldEditor({
22928
22675
  children: `${isSelected2 ? "\u203A" : " "} description: `
22929
22676
  }
22930
22677
  ),
22931
- isEditing ? /* @__PURE__ */ jsxs31(Box29, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
22932
- /* @__PURE__ */ jsx34(Text31, { children: desc.slice(0, textCursor) }),
22933
- /* @__PURE__ */ jsx34(Text31, { inverse: cursorVisible, children: desc[textCursor] ?? (cursorVisible ? "\u2588" : " ") }),
22934
- /* @__PURE__ */ jsx34(Text31, { children: desc.slice(textCursor + 1) })
22935
- ] }) : /* @__PURE__ */ jsx34(Text31, { color: isSelected2 ? PALETTE.warning : PALETTE.inverse, dimColor: !desc, children: desc || "(none \u2014 Return to edit)" })
22678
+ isEditing ? /* @__PURE__ */ jsxs30(Box29, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
22679
+ /* @__PURE__ */ jsx33(Text30, { children: desc.slice(0, textCursor) }),
22680
+ /* @__PURE__ */ jsx33(Text30, { inverse: cursorVisible, children: desc[textCursor] ?? (cursorVisible ? "\u2588" : " ") }),
22681
+ /* @__PURE__ */ jsx33(Text30, { children: desc.slice(textCursor + 1) })
22682
+ ] }) : /* @__PURE__ */ jsx33(Text30, { color: isSelected2 ? PALETTE.warning : PALETTE.inverse, dimColor: !desc, children: desc || "(none \u2014 Return to edit)" })
22936
22683
  ] }) }, `component-description-${i}`);
22937
22684
  }
22938
22685
  if (row.kind === "prop") {
22939
22686
  const p = props[row.idx];
22940
22687
  const isSelected2 = !inSlots && !inComponentDesc && row.idx === propIdx;
22941
22688
  const propMeta = metadata?.props?.[p.name];
22942
- return /* @__PURE__ */ jsx34(
22689
+ return /* @__PURE__ */ jsx33(
22943
22690
  PropRow,
22944
22691
  {
22945
22692
  prop: p,
@@ -22960,7 +22707,7 @@ function FieldEditor({
22960
22707
  const s = slots[row.idx];
22961
22708
  const isSelected = inSlots && row.idx === slotIdx;
22962
22709
  const slotPickerCandidates = isSelected && editingValue?.mode === "add" && activeField === "allowedComponents" && projectSlotGraph && currentComponentName ? computeAllowedComponentCandidates(projectSlotGraph, currentComponentName, slots, s.name) : null;
22963
- return /* @__PURE__ */ jsx34(
22710
+ return /* @__PURE__ */ jsx33(
22964
22711
  SlotRow,
22965
22712
  {
22966
22713
  slot: s,
@@ -22986,50 +22733,50 @@ function FieldEditor({
22986
22733
  const src = metadata?.componentSource ?? null;
22987
22734
  const headerPath = path ?? "<unknown source path>";
22988
22735
  if (!start || !end || !src) {
22989
- return /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
22990
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, bold: true, children: `source: ${headerPath}` }),
22991
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "(no source location captured for this prop)" }),
22992
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "[s] close" })
22736
+ return /* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
22737
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, bold: true, children: `source: ${headerPath}` }),
22738
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "(no source location captured for this prop)" }),
22739
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "[s] close" })
22993
22740
  ] });
22994
22741
  }
22995
22742
  const lines = src.split("\n").slice(Math.max(0, start - 1), end);
22996
- return /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
22997
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, bold: true, children: `${headerPath}: lines ${start}\u2013${end}` }),
22998
- lines.map((ln, i) => /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: ln }, `source-line-${i}`)),
22999
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "[s] close \xB7 [Esc] close" })
22743
+ return /* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
22744
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, bold: true, children: `${headerPath}: lines ${start}\u2013${end}` }),
22745
+ lines.map((ln, i) => /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: ln }, `source-line-${i}`)),
22746
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "[s] close \xB7 [Esc] close" })
23000
22747
  ] });
23001
22748
  })(),
23002
- showHelp && /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
23003
- /* @__PURE__ */ jsx34(Text31, { bold: true, color: PALETTE.info, children: "Keybindings" }),
23004
- /* @__PURE__ */ jsx34(Text31, { children: " " }),
23005
- /* @__PURE__ */ jsx34(Text31, { bold: true, children: "Row navigation" }),
23006
- /* @__PURE__ */ jsx34(Text31, { children: " \u2191/\u2193 or j/k move between rows" }),
23007
- /* @__PURE__ */ jsx34(Text31, { children: " Enter edit fields on the current row" }),
23008
- /* @__PURE__ */ jsx34(Text31, { children: " Esc exit the panel" }),
23009
- /* @__PURE__ */ jsx34(Text31, { children: " " }),
23010
- /* @__PURE__ */ jsx34(Text31, { bold: true, children: "Field editing" }),
23011
- /* @__PURE__ */ jsx34(Text31, { children: " \u2191/\u2193 or j/k cycle through fields (j/k literal in text inputs)" }),
23012
- /* @__PURE__ */ jsx34(Text31, { children: " \u2190/\u2192 cycle picker values \xB7 move cursor in text inputs" }),
23013
- /* @__PURE__ */ jsx34(Text31, { children: " Space/Enter toggle required" }),
23014
- /* @__PURE__ */ jsx34(Text31, { children: " Type edit description / string default" }),
23015
- /* @__PURE__ */ jsx34(Text31, { children: " Ctrl+S save changes" }),
23016
- /* @__PURE__ */ jsx34(Text31, { children: " Esc exit field-edit back to the row" }),
23017
- /* @__PURE__ */ jsx34(Text31, { children: " " }),
23018
- /* @__PURE__ */ jsx34(Text31, { bold: true, children: "Values / allowedComponents" }),
23019
- /* @__PURE__ */ jsx34(Text31, { children: " a / e / r add \xB7 edit \xB7 remove" }),
23020
- /* @__PURE__ */ jsx34(Text31, { children: " \u2191\u2193 or j/k navigate the list" }),
23021
- /* @__PURE__ */ jsx34(Text31, { children: " K / J reorder up \xB7 down" }),
23022
- /* @__PURE__ */ jsx34(Text31, { children: " " }),
23023
- /* @__PURE__ */ jsx34(Text31, { bold: true, children: "Panels" }),
23024
- /* @__PURE__ */ jsx34(Text31, { children: " s toggle source-view for the current prop" }),
23025
- /* @__PURE__ */ jsx34(Text31, { children: " " + propRationaleKey.padEnd(16) + " toggle prop rationale panel" }),
23026
- /* @__PURE__ */ jsx34(Text31, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
23027
- /* @__PURE__ */ jsx34(Text31, { children: " ? toggle this overlay" }),
23028
- /* @__PURE__ */ jsx34(Text31, { children: " " }),
23029
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "press ? or Esc to close" })
22749
+ showHelp && /* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
22750
+ /* @__PURE__ */ jsx33(Text30, { bold: true, color: PALETTE.info, children: "Keybindings" }),
22751
+ /* @__PURE__ */ jsx33(Text30, { children: " " }),
22752
+ /* @__PURE__ */ jsx33(Text30, { bold: true, children: "Row navigation" }),
22753
+ /* @__PURE__ */ jsx33(Text30, { children: " \u2191/\u2193 or j/k move between rows" }),
22754
+ /* @__PURE__ */ jsx33(Text30, { children: " Enter edit fields on the current row" }),
22755
+ /* @__PURE__ */ jsx33(Text30, { children: " Esc exit the panel" }),
22756
+ /* @__PURE__ */ jsx33(Text30, { children: " " }),
22757
+ /* @__PURE__ */ jsx33(Text30, { bold: true, children: "Field editing" }),
22758
+ /* @__PURE__ */ jsx33(Text30, { children: " \u2191/\u2193 or j/k cycle through fields (j/k literal in text inputs)" }),
22759
+ /* @__PURE__ */ jsx33(Text30, { children: " \u2190/\u2192 cycle picker values \xB7 move cursor in text inputs" }),
22760
+ /* @__PURE__ */ jsx33(Text30, { children: " Space/Enter toggle required" }),
22761
+ /* @__PURE__ */ jsx33(Text30, { children: " Type edit description / string default" }),
22762
+ /* @__PURE__ */ jsx33(Text30, { children: " Ctrl+S save changes" }),
22763
+ /* @__PURE__ */ jsx33(Text30, { children: " Esc exit field-edit back to the row" }),
22764
+ /* @__PURE__ */ jsx33(Text30, { children: " " }),
22765
+ /* @__PURE__ */ jsx33(Text30, { bold: true, children: "Values / allowedComponents" }),
22766
+ /* @__PURE__ */ jsx33(Text30, { children: " a / e / r add \xB7 edit \xB7 remove" }),
22767
+ /* @__PURE__ */ jsx33(Text30, { children: " \u2191\u2193 or j/k navigate the list" }),
22768
+ /* @__PURE__ */ jsx33(Text30, { children: " K / J reorder up \xB7 down" }),
22769
+ /* @__PURE__ */ jsx33(Text30, { children: " " }),
22770
+ /* @__PURE__ */ jsx33(Text30, { bold: true, children: "Panels" }),
22771
+ /* @__PURE__ */ jsx33(Text30, { children: " s toggle source-view for the current prop" }),
22772
+ /* @__PURE__ */ jsx33(Text30, { children: " " + propRationaleKey.padEnd(16) + " toggle prop rationale panel" }),
22773
+ /* @__PURE__ */ jsx33(Text30, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
22774
+ /* @__PURE__ */ jsx33(Text30, { children: " ? toggle this overlay" }),
22775
+ /* @__PURE__ */ jsx33(Text30, { children: " " }),
22776
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: "press ? or Esc to close" })
23030
22777
  ] }),
23031
- validationError && /* @__PURE__ */ jsx34(Text31, { color: PALETTE.error, children: "\u2717 " + validationError }),
23032
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: modeLabel })
22778
+ validationError && /* @__PURE__ */ jsx33(Text30, { color: PALETTE.error, children: "\u2717 " + validationError }),
22779
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: modeLabel })
23033
22780
  ]
23034
22781
  }
23035
22782
  );
@@ -23084,23 +22831,23 @@ var init_wrap_text = __esm({
23084
22831
  });
23085
22832
 
23086
22833
  // packages/experience-design-system-cli/src/analyze/select/tui/components/RationaleLine.tsx
23087
- import { Box as Box30, Text as Text32 } from "ink";
23088
- import { jsx as jsx35, jsxs as jsxs32 } from "react/jsx-runtime";
22834
+ import { Box as Box30, Text as Text31 } from "ink";
22835
+ import { jsx as jsx34, jsxs as jsxs31 } from "react/jsx-runtime";
23089
22836
  function RationaleLine({ line, active }) {
23090
22837
  if (line.kind === "blank") {
23091
- return /* @__PURE__ */ jsx35(Box30, { children: /* @__PURE__ */ jsx35(Text32, { children: " " }) });
22838
+ return /* @__PURE__ */ jsx34(Box30, { children: /* @__PURE__ */ jsx34(Text31, { children: " " }) });
23092
22839
  }
23093
22840
  if (line.kind === "heading") {
23094
- return /* @__PURE__ */ jsx35(Box30, { children: /* @__PURE__ */ jsx35(Text32, { bold: true, color: PALETTE.info, dimColor: !active, children: line.text }) });
22841
+ return /* @__PURE__ */ jsx34(Box30, { children: /* @__PURE__ */ jsx34(Text31, { bold: true, color: PALETTE.info, dimColor: !active, children: line.text }) });
23095
22842
  }
23096
22843
  if (line.kind === "label") {
23097
- return /* @__PURE__ */ jsxs32(Box30, { children: [
23098
- line.prefix && /* @__PURE__ */ jsx35(Text32, { children: line.prefix }),
23099
- /* @__PURE__ */ jsx35(Text32, { bold: true, color: line.color, dimColor: !active, children: line.text }),
23100
- line.suffix && /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: line.suffix })
22844
+ return /* @__PURE__ */ jsxs31(Box30, { children: [
22845
+ line.prefix && /* @__PURE__ */ jsx34(Text31, { children: line.prefix }),
22846
+ /* @__PURE__ */ jsx34(Text31, { bold: true, color: line.color, dimColor: !active, children: line.text }),
22847
+ line.suffix && /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: line.suffix })
23101
22848
  ] });
23102
22849
  }
23103
- return /* @__PURE__ */ jsx35(Box30, { children: /* @__PURE__ */ jsx35(Text32, { dimColor: !active || line.dim, children: line.text }) });
22850
+ return /* @__PURE__ */ jsx34(Box30, { children: /* @__PURE__ */ jsx34(Text31, { dimColor: !active || line.dim, children: line.text }) });
23104
22851
  }
23105
22852
  var init_RationaleLine = __esm({
23106
22853
  "packages/experience-design-system-cli/src/analyze/select/tui/components/RationaleLine.tsx"() {
@@ -23110,8 +22857,8 @@ var init_RationaleLine = __esm({
23110
22857
  });
23111
22858
 
23112
22859
  // packages/experience-design-system-cli/src/analyze/select/tui/components/ComponentRationalePanel.tsx
23113
- import { Box as Box31, Text as Text33 } from "ink";
23114
- import { jsx as jsx36, jsxs as jsxs33 } from "react/jsx-runtime";
22860
+ import { Box as Box31, Text as Text32 } from "ink";
22861
+ import { jsx as jsx35, jsxs as jsxs32 } from "react/jsx-runtime";
23115
22862
  function renderComponentRationaleLines(data, innerWidth) {
23116
22863
  const out = [];
23117
22864
  const pushSection = (heading, body) => {
@@ -23178,7 +22925,7 @@ function ComponentRationalePanel({
23178
22925
  const overflowed = totalLines > contentHeight;
23179
22926
  const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
23180
22927
  const visibleEnd = Math.min(totalLines, scrollOffset + contentHeight);
23181
- return /* @__PURE__ */ jsxs33(
22928
+ return /* @__PURE__ */ jsxs32(
23182
22929
  Box31,
23183
22930
  {
23184
22931
  flexDirection: "column",
@@ -23187,9 +22934,9 @@ function ComponentRationalePanel({
23187
22934
  borderStyle: "single",
23188
22935
  borderColor: active ? PALETTE.inverse : void 0,
23189
22936
  children: [
23190
- /* @__PURE__ */ jsx36(Box31, { children: /* @__PURE__ */ jsx36(Text33, { bold: true, dimColor: !active, children: `Component rationale: ${data.name}` }) }),
23191
- visible.map((line, i) => /* @__PURE__ */ jsx36(RationaleLine, { line, active }, i)),
23192
- /* @__PURE__ */ jsx36(Box31, { children: overflowed ? /* @__PURE__ */ jsx36(Text33, { dimColor: true, children: `${visibleStart}-${visibleEnd}/${totalLines} [j/k] scroll [I/Esc] close` }) : /* @__PURE__ */ jsx36(Text33, { dimColor: true, children: "[I/Esc] close" }) })
22937
+ /* @__PURE__ */ jsx35(Box31, { children: /* @__PURE__ */ jsx35(Text32, { bold: true, dimColor: !active, children: `Component rationale: ${data.name}` }) }),
22938
+ visible.map((line, i) => /* @__PURE__ */ jsx35(RationaleLine, { line, active }, i)),
22939
+ /* @__PURE__ */ jsx35(Box31, { children: overflowed ? /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: `${visibleStart}-${visibleEnd}/${totalLines} [j/k] scroll [I/Esc] close` }) : /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "[I/Esc] close" }) })
23193
22940
  ]
23194
22941
  }
23195
22942
  );
@@ -23206,10 +22953,10 @@ var init_ComponentRationalePanel = __esm({
23206
22953
  });
23207
22954
 
23208
22955
  // packages/experience-design-system-cli/src/analyze/select/tui/components/HighlightedLine.tsx
23209
- import { Text as Text34 } from "ink";
23210
- import { Fragment as Fragment11, jsx as jsx37 } from "react/jsx-runtime";
22956
+ import { Text as Text33 } from "ink";
22957
+ import { Fragment as Fragment11, jsx as jsx36 } from "react/jsx-runtime";
23211
22958
  function HighlightedLine({ parts }) {
23212
- return /* @__PURE__ */ jsx37(Fragment11, { children: parts.map((part, i) => /* @__PURE__ */ jsx37(Text34, { color: part.color, dimColor: part.dim, children: part.text }, i)) });
22959
+ return /* @__PURE__ */ jsx36(Fragment11, { children: parts.map((part, i) => /* @__PURE__ */ jsx36(Text33, { color: part.color, dimColor: part.dim, children: part.text }, i)) });
23213
22960
  }
23214
22961
  var init_HighlightedLine = __esm({
23215
22962
  "packages/experience-design-system-cli/src/analyze/select/tui/components/HighlightedLine.tsx"() {
@@ -23218,8 +22965,8 @@ var init_HighlightedLine = __esm({
23218
22965
  });
23219
22966
 
23220
22967
  // packages/experience-design-system-cli/src/analyze/select/tui/components/ScrollablePanel.tsx
23221
- import { Box as Box32, Text as Text35 } from "ink";
23222
- import { Fragment as Fragment12, jsx as jsx38, jsxs as jsxs34 } from "react/jsx-runtime";
22968
+ import { Box as Box32, Text as Text34 } from "ink";
22969
+ import { Fragment as Fragment12, jsx as jsx37, jsxs as jsxs33 } from "react/jsx-runtime";
23223
22970
  function ScrollablePanel({
23224
22971
  header,
23225
22972
  width,
@@ -23232,12 +22979,12 @@ function ScrollablePanel({
23232
22979
  children
23233
22980
  }) {
23234
22981
  const overflowed = totalLines > height;
23235
- return /* @__PURE__ */ jsxs34(Box32, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
23236
- /* @__PURE__ */ jsxs34(Box32, { children: [
22982
+ return /* @__PURE__ */ jsxs33(Box32, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
22983
+ /* @__PURE__ */ jsxs33(Box32, { children: [
23237
22984
  header,
23238
- overflowed && /* @__PURE__ */ jsxs34(Fragment12, { children: [
23239
- /* @__PURE__ */ jsx38(Box32, { flexGrow: 1 }),
23240
- /* @__PURE__ */ jsx38(Text35, { dimColor: !active, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
22985
+ overflowed && /* @__PURE__ */ jsxs33(Fragment12, { children: [
22986
+ /* @__PURE__ */ jsx37(Box32, { flexGrow: 1 }),
22987
+ /* @__PURE__ */ jsx37(Text34, { dimColor: !active, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
23241
22988
  ] })
23242
22989
  ] }),
23243
22990
  children
@@ -23250,8 +22997,8 @@ var init_ScrollablePanel = __esm({
23250
22997
  });
23251
22998
 
23252
22999
  // packages/experience-design-system-cli/src/analyze/select/tui/components/JsonPanel.tsx
23253
- import { Box as Box33, Text as Text36 } from "ink";
23254
- import { jsx as jsx39 } from "react/jsx-runtime";
23000
+ import { Box as Box33, Text as Text35 } from "ink";
23001
+ import { jsx as jsx38 } from "react/jsx-runtime";
23255
23002
  function highlightJson(line) {
23256
23003
  const parts = [];
23257
23004
  let remaining = line;
@@ -23289,7 +23036,7 @@ function highlightJson(line) {
23289
23036
  parts.push({ text: remaining[0] });
23290
23037
  remaining = remaining.slice(1);
23291
23038
  }
23292
- return /* @__PURE__ */ jsx39(HighlightedLine, { parts });
23039
+ return /* @__PURE__ */ jsx38(HighlightedLine, { parts });
23293
23040
  }
23294
23041
  function truncateLine(line, maxWidth) {
23295
23042
  if (line.length <= maxWidth) return line;
@@ -23302,10 +23049,10 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
23302
23049
  const totalLines = allLines.length;
23303
23050
  const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
23304
23051
  const visibleEnd = Math.min(totalLines, scrollOffset + height);
23305
- return /* @__PURE__ */ jsx39(
23052
+ return /* @__PURE__ */ jsx38(
23306
23053
  ScrollablePanel,
23307
23054
  {
23308
- header: /* @__PURE__ */ jsx39(Text36, { bold: true, dimColor: !active, children: label }),
23055
+ header: /* @__PURE__ */ jsx38(Text35, { bold: true, dimColor: !active, children: label }),
23309
23056
  width,
23310
23057
  height,
23311
23058
  active,
@@ -23315,7 +23062,7 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
23315
23062
  borderColor: active ? "white" : void 0,
23316
23063
  children: visibleLines.map((line, i) => {
23317
23064
  const truncated = truncateLine(line, innerWidth);
23318
- return /* @__PURE__ */ jsx39(Box33, { children: highlightJson(truncated) }, i);
23065
+ return /* @__PURE__ */ jsx38(Box33, { children: highlightJson(truncated) }, i);
23319
23066
  })
23320
23067
  }
23321
23068
  );
@@ -23329,8 +23076,8 @@ var init_JsonPanel = __esm({
23329
23076
  });
23330
23077
 
23331
23078
  // packages/experience-design-system-cli/src/analyze/select/tui/components/RationalePanel.tsx
23332
- import { Text as Text37 } from "ink";
23333
- import { jsx as jsx40 } from "react/jsx-runtime";
23079
+ import { Text as Text36 } from "ink";
23080
+ import { jsx as jsx39 } from "react/jsx-runtime";
23334
23081
  function renderRationaleLines(rows, innerWidth) {
23335
23082
  const out = [];
23336
23083
  rows.forEach((row, idx) => {
@@ -23363,10 +23110,10 @@ function RationalePanel({
23363
23110
  const visible = allLines.slice(scrollOffset, scrollOffset + height);
23364
23111
  const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
23365
23112
  const visibleEnd = Math.min(totalLines, scrollOffset + height);
23366
- return /* @__PURE__ */ jsx40(
23113
+ return /* @__PURE__ */ jsx39(
23367
23114
  ScrollablePanel,
23368
23115
  {
23369
- header: /* @__PURE__ */ jsx40(Text37, { bold: true, dimColor: !active, children: `RATIONALE \u2014 ${componentName}` }),
23116
+ header: /* @__PURE__ */ jsx39(Text36, { bold: true, dimColor: !active, children: `RATIONALE \u2014 ${componentName}` }),
23370
23117
  width,
23371
23118
  height,
23372
23119
  active,
@@ -23374,7 +23121,7 @@ function RationalePanel({
23374
23121
  visibleStart,
23375
23122
  visibleEnd,
23376
23123
  borderColor: active ? PALETTE.inverse : void 0,
23377
- children: visible.map((line, i) => /* @__PURE__ */ jsx40(RationaleLine, { line, active }, i))
23124
+ children: visible.map((line, i) => /* @__PURE__ */ jsx39(RationaleLine, { line, active }, i))
23378
23125
  }
23379
23126
  );
23380
23127
  }
@@ -23389,9 +23136,9 @@ var init_RationalePanel = __esm({
23389
23136
  });
23390
23137
 
23391
23138
  // packages/experience-design-system-cli/src/analyze/select/tui/components/TokenReviewPanel.tsx
23392
- import figures6 from "figures";
23393
- import { Box as Box34, Text as Text38 } from "ink";
23394
- import { jsx as jsx41, jsxs as jsxs35 } from "react/jsx-runtime";
23139
+ import figures5 from "figures";
23140
+ import { Box as Box34, Text as Text37 } from "ink";
23141
+ import { jsx as jsx40, jsxs as jsxs34 } from "react/jsx-runtime";
23395
23142
  function collectTokenSuggestions(entry, availableTokens = []) {
23396
23143
  return Object.entries(entry.$properties).filter(([, def]) => {
23397
23144
  const rawKind = def["$token.kind"];
@@ -23425,7 +23172,7 @@ function TokenReviewPanel({
23425
23172
  const scrollStart = Math.max(0, Math.min(editCursor - Math.floor(visibleCount / 2), maxStart));
23426
23173
  const visiblePaths = current.paths.slice(scrollStart, scrollStart + visibleCount);
23427
23174
  const rangeLabel = current.paths.length === 0 ? "no compatible tokens" : `${scrollStart + 1}-${scrollStart + visiblePaths.length} of ${current.paths.length}`;
23428
- return /* @__PURE__ */ jsxs35(
23175
+ return /* @__PURE__ */ jsxs34(
23429
23176
  Box34,
23430
23177
  {
23431
23178
  flexDirection: "column",
@@ -23434,24 +23181,24 @@ function TokenReviewPanel({
23434
23181
  borderStyle: "single",
23435
23182
  borderColor: active ? PALETTE.inverse : void 0,
23436
23183
  children: [
23437
- /* @__PURE__ */ jsx41(Text38, { bold: true, dimColor: !active, wrap: "truncate", children: `TOKEN REVIEW \u2014 ${componentName} \xB7 ${current.propName} (edit allowed)` }),
23438
- /* @__PURE__ */ jsx41(Text38, { dimColor: true, wrap: "truncate", children: `select which tokens are allowed (${rangeLabel})` }),
23439
- /* @__PURE__ */ jsx41(Text38, { children: " " }),
23440
- current.paths.length === 0 && /* @__PURE__ */ jsx41(Text38, { dimColor: true, children: "(no compatible tokens found for this token kind)" }),
23184
+ /* @__PURE__ */ jsx40(Text37, { bold: true, dimColor: !active, wrap: "truncate", children: `TOKEN REVIEW \u2014 ${componentName} \xB7 ${current.propName} (edit allowed)` }),
23185
+ /* @__PURE__ */ jsx40(Text37, { dimColor: true, wrap: "truncate", children: `select which tokens are allowed (${rangeLabel})` }),
23186
+ /* @__PURE__ */ jsx40(Text37, { children: " " }),
23187
+ current.paths.length === 0 && /* @__PURE__ */ jsx40(Text37, { dimColor: true, children: "(no compatible tokens found for this token kind)" }),
23441
23188
  visiblePaths.map((path, i) => {
23442
23189
  const pathIndex = scrollStart + i;
23443
23190
  const checked = editSelection.has(path);
23444
23191
  const focused = pathIndex === editCursor;
23445
- return /* @__PURE__ */ jsx41(Box34, { children: /* @__PURE__ */ jsx41(Text38, { color: focused ? PALETTE.info : void 0, bold: focused, dimColor: !active, wrap: "truncate", children: ` [${checked ? "x" : " "}] ${path}` }) }, path);
23192
+ return /* @__PURE__ */ jsx40(Box34, { children: /* @__PURE__ */ jsx40(Text37, { color: focused ? PALETTE.info : void 0, bold: focused, dimColor: !active, wrap: "truncate", children: ` [${checked ? "x" : " "}] ${path}` }) }, path);
23446
23193
  }),
23447
- /* @__PURE__ */ jsx41(Text38, { children: " " }),
23448
- /* @__PURE__ */ jsx41(Text38, { dimColor: true, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
23449
- /* @__PURE__ */ jsx41(Text38, { dimColor: true, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
23194
+ /* @__PURE__ */ jsx40(Text37, { children: " " }),
23195
+ /* @__PURE__ */ jsx40(Text37, { dimColor: true, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
23196
+ /* @__PURE__ */ jsx40(Text37, { dimColor: true, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
23450
23197
  ]
23451
23198
  }
23452
23199
  );
23453
23200
  }
23454
- return /* @__PURE__ */ jsxs35(
23201
+ return /* @__PURE__ */ jsxs34(
23455
23202
  Box34,
23456
23203
  {
23457
23204
  flexDirection: "column",
@@ -23460,18 +23207,18 @@ function TokenReviewPanel({
23460
23207
  borderStyle: "single",
23461
23208
  borderColor: active ? PALETTE.inverse : void 0,
23462
23209
  children: [
23463
- /* @__PURE__ */ jsx41(Text38, { bold: true, dimColor: !active, children: `TOKEN REVIEW \u2014 ${componentName}` }),
23464
- suggestions.length === 0 && /* @__PURE__ */ jsx41(Text38, { dimColor: true, children: "(no token suggestions for this component)" }),
23210
+ /* @__PURE__ */ jsx40(Text37, { bold: true, dimColor: !active, children: `TOKEN REVIEW \u2014 ${componentName}` }),
23211
+ suggestions.length === 0 && /* @__PURE__ */ jsx40(Text37, { dimColor: true, children: "(no token suggestions for this component)" }),
23465
23212
  suggestions.map((s, i) => {
23466
23213
  const focused = i === selectedRow;
23467
- return /* @__PURE__ */ jsxs35(Box34, { flexDirection: "column", children: [
23468
- /* @__PURE__ */ jsx41(Box34, { children: /* @__PURE__ */ jsx41(Text38, { color: focused ? PALETTE.info : void 0, bold: focused, dimColor: !active, children: `${focused ? figures6.pointer : " "} ${s.propName}` }) }),
23469
- /* @__PURE__ */ jsx41(Text38, { dimColor: true, children: ` suggested: ${s.suggested.join(", ")}` }),
23470
- /* @__PURE__ */ jsx41(Text38, { dimColor: true, children: ` allowed: ${s.allowed.join(", ")}` })
23214
+ return /* @__PURE__ */ jsxs34(Box34, { flexDirection: "column", children: [
23215
+ /* @__PURE__ */ jsx40(Box34, { children: /* @__PURE__ */ jsx40(Text37, { color: focused ? PALETTE.info : void 0, bold: focused, dimColor: !active, children: `${focused ? figures5.pointer : " "} ${s.propName}` }) }),
23216
+ /* @__PURE__ */ jsx40(Text37, { dimColor: true, children: ` suggested: ${s.suggested.join(", ")}` }),
23217
+ /* @__PURE__ */ jsx40(Text37, { dimColor: true, children: ` allowed: ${s.allowed.join(", ")}` })
23471
23218
  ] }, s.propName);
23472
23219
  }),
23473
- /* @__PURE__ */ jsx41(Text38, { children: " " }),
23474
- /* @__PURE__ */ jsx41(Text38, { dimColor: true, children: "[\u2191/\u2193] move [Enter] edit allowed [Esc] close" })
23220
+ /* @__PURE__ */ jsx40(Text37, { children: " " }),
23221
+ /* @__PURE__ */ jsx40(Text37, { dimColor: true, children: "[\u2191/\u2193] move [Enter] edit allowed [Esc] close" })
23475
23222
  ]
23476
23223
  }
23477
23224
  );
@@ -23484,8 +23231,8 @@ var init_TokenReviewPanel = __esm({
23484
23231
  });
23485
23232
 
23486
23233
  // packages/experience-design-system-cli/src/import/tui/steps/review-details-panel.tsx
23487
- import { Text as Text39 } from "ink";
23488
- import { Fragment as Fragment13, jsx as jsx42, jsxs as jsxs36 } from "react/jsx-runtime";
23234
+ import { Text as Text38 } from "ink";
23235
+ import { Fragment as Fragment13, jsx as jsx41, jsxs as jsxs35 } from "react/jsx-runtime";
23489
23236
  function ReviewDetailsPanel({
23490
23237
  selectedKey,
23491
23238
  panelOpen,
@@ -23520,7 +23267,7 @@ function ReviewDetailsPanel({
23520
23267
  rationale: s.rationale ?? ""
23521
23268
  }))
23522
23269
  ];
23523
- return /* @__PURE__ */ jsx42(
23270
+ return /* @__PURE__ */ jsx41(
23524
23271
  RationalePanel,
23525
23272
  {
23526
23273
  componentName: componentRationale?.name ?? selectedKey,
@@ -23533,7 +23280,7 @@ function ReviewDetailsPanel({
23533
23280
  );
23534
23281
  }
23535
23282
  if (panelOpen === "component-rationale") {
23536
- return /* @__PURE__ */ jsx42(
23283
+ return /* @__PURE__ */ jsx41(
23537
23284
  ComponentRationalePanel,
23538
23285
  {
23539
23286
  data: componentRationale ?? {
@@ -23558,14 +23305,14 @@ function ReviewDetailsPanel({
23558
23305
  const headerPath = path ?? "<unknown source path>";
23559
23306
  const sourceLineCount = Math.max(1, height - 4);
23560
23307
  const lines = source ? source.split("\n").slice(panelScrollOffset, panelScrollOffset + sourceLineCount) : [];
23561
- return /* @__PURE__ */ jsxs36(FixedPanel, { width, height, borderStyle: "single", borderColor: sourceBorderColor, paddingLeft: 1, children: [
23562
- /* @__PURE__ */ jsx42(Text39, { dimColor: true, bold: true, wrap: "truncate-end", children: `source: ${headerPath}` }),
23563
- source ? lines.map((line, index) => /* @__PURE__ */ jsx42(Text39, { dimColor: true, wrap: "truncate-end", children: line }, `source-line-${index}`)) : /* @__PURE__ */ jsx42(Text39, { dimColor: true, children: "(no source captured)" }),
23564
- /* @__PURE__ */ jsx42(Text39, { dimColor: true, wrap: "truncate-end", children: "[s/Esc] close" })
23308
+ return /* @__PURE__ */ jsxs35(FixedPanel, { width, height, borderStyle: "single", borderColor: sourceBorderColor, paddingLeft: 1, children: [
23309
+ /* @__PURE__ */ jsx41(Text38, { dimColor: true, bold: true, wrap: "truncate-end", children: `source: ${headerPath}` }),
23310
+ source ? lines.map((line, index) => /* @__PURE__ */ jsx41(Text38, { dimColor: true, wrap: "truncate-end", children: line }, `source-line-${index}`)) : /* @__PURE__ */ jsx41(Text38, { dimColor: true, children: "(no source captured)" }),
23311
+ /* @__PURE__ */ jsx41(Text38, { dimColor: true, wrap: "truncate-end", children: "[s/Esc] close" })
23565
23312
  ] });
23566
23313
  }
23567
23314
  if (panelOpen === "token-review") {
23568
- return /* @__PURE__ */ jsx42(
23315
+ return /* @__PURE__ */ jsx41(
23569
23316
  TokenReviewPanel,
23570
23317
  {
23571
23318
  componentName: selectedKey,
@@ -23581,7 +23328,7 @@ function ReviewDetailsPanel({
23581
23328
  );
23582
23329
  }
23583
23330
  if (showJson) {
23584
- return /* @__PURE__ */ jsx42(
23331
+ return /* @__PURE__ */ jsx41(
23585
23332
  JsonPanel,
23586
23333
  {
23587
23334
  label: "GENERATED DEFINITION (read-only)",
@@ -23593,7 +23340,7 @@ function ReviewDetailsPanel({
23593
23340
  }
23594
23341
  );
23595
23342
  }
23596
- return /* @__PURE__ */ jsx42(Fragment13, { children: editor });
23343
+ return /* @__PURE__ */ jsx41(Fragment13, { children: editor });
23597
23344
  }
23598
23345
  var init_review_details_panel = __esm({
23599
23346
  "packages/experience-design-system-cli/src/import/tui/steps/review-details-panel.tsx"() {
@@ -23607,7 +23354,7 @@ var init_review_details_panel = __esm({
23607
23354
  });
23608
23355
 
23609
23356
  // packages/experience-design-system-cli/src/import/tui/components/ReviewDetailsEditor.tsx
23610
- import { jsx as jsx43 } from "react/jsx-runtime";
23357
+ import { jsx as jsx42 } from "react/jsx-runtime";
23611
23358
  import { createElement as createElement5 } from "react";
23612
23359
  function toFieldEditorMetadata(reviewMetadata) {
23613
23360
  if (!reviewMetadata) return void 0;
@@ -23640,7 +23387,7 @@ function ReviewDetailsEditor({
23640
23387
  jsonScrollOffset,
23641
23388
  currentTokenSuggestions
23642
23389
  } = reviewEditor;
23643
- return /* @__PURE__ */ jsx43(
23390
+ return /* @__PURE__ */ jsx42(
23644
23391
  ReviewDetailsPanel,
23645
23392
  {
23646
23393
  selectedKey,
@@ -23684,8 +23431,8 @@ var init_ReviewDetailsEditor = __esm({
23684
23431
  });
23685
23432
 
23686
23433
  // packages/experience-design-system-cli/src/import/tui/components/ReviewComponentPanel.tsx
23687
- import { Box as Box35, Text as Text40 } from "ink";
23688
- import { Fragment as Fragment14, jsx as jsx44, jsxs as jsxs37 } from "react/jsx-runtime";
23434
+ import { Box as Box35, Text as Text39 } from "ink";
23435
+ import { Fragment as Fragment14, jsx as jsx43, jsxs as jsxs36 } from "react/jsx-runtime";
23689
23436
  function buildReviewFieldEditor(reviewEditor, selectedJson, onExit, overrides = {}) {
23690
23437
  return {
23691
23438
  value: reviewEditor.draftValue || selectedJson,
@@ -23725,17 +23472,17 @@ function ReviewEmptyComponentsWarning({
23725
23472
  hidden
23726
23473
  }) {
23727
23474
  if (hidden || count === 0) return null;
23728
- return /* @__PURE__ */ jsx44(Text40, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
23475
+ return /* @__PURE__ */ jsx43(Text39, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
23729
23476
  }
23730
23477
  function ReviewNoSelection() {
23731
- return /* @__PURE__ */ jsx44(Box35, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx44(Text40, { dimColor: true, children: "No component selected" }) });
23478
+ return /* @__PURE__ */ jsx43(Box35, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx43(Text39, { dimColor: true, children: "No component selected" }) });
23732
23479
  }
23733
23480
  function ReviewFinalizeError({
23734
23481
  message,
23735
23482
  hidden
23736
23483
  }) {
23737
23484
  if (hidden || !message) return null;
23738
- return /* @__PURE__ */ jsx44(Text40, { color: PALETTE.error, children: `\u26A0 ${message}` });
23485
+ return /* @__PURE__ */ jsx43(Text39, { color: PALETTE.error, children: `\u26A0 ${message}` });
23739
23486
  }
23740
23487
  function ReviewPanelFooter({
23741
23488
  reviewEditor,
@@ -23744,10 +23491,10 @@ function ReviewPanelFooter({
23744
23491
  livePreview,
23745
23492
  livePreviewSpinner
23746
23493
  }) {
23747
- return /* @__PURE__ */ jsxs37(Fragment14, { children: [
23494
+ return /* @__PURE__ */ jsxs36(Fragment14, { children: [
23748
23495
  reviewEditor.panelOpen === "token-review" ? " [\u2191/\u2193] move [Enter] edit allowed [Esc] close" : sidebarFocused ? sidebarFooter : reviewEditor.showJson ? " [j/k] scroll [Ctrl+u/d] half-page [gg/G] top/bottom [Tab] focus list" : " [Tab] focus list (edit fields)" + (reviewEditor.currentTokenSuggestions().length > 0 ? " [t] token review" : ""),
23749
- livePreview.status === "running" && /* @__PURE__ */ jsx44(Text40, { children: ` ${livePreviewSpinner} live preview` }),
23750
- livePreview.disabled && /* @__PURE__ */ jsx44(Text40, { children: " \xB7 live preview disabled" })
23496
+ livePreview.status === "running" && /* @__PURE__ */ jsx43(Text39, { children: ` ${livePreviewSpinner} live preview` }),
23497
+ livePreview.disabled && /* @__PURE__ */ jsx43(Text39, { children: " \xB7 live preview disabled" })
23751
23498
  ] });
23752
23499
  }
23753
23500
  function ReviewComponentPanel({
@@ -23771,11 +23518,11 @@ function ReviewComponentPanel({
23771
23518
  const slotCount = selectedEntry.$slots ? Object.keys(selectedEntry.$slots).length : 0;
23772
23519
  const contentHeight = Math.max(1, height - 3);
23773
23520
  const contentWidth = Math.max(1, width - 1);
23774
- return /* @__PURE__ */ jsx44(FixedPanel, { width, height, borderStyle: void 0, paddingLeft: 1, children: /* @__PURE__ */ jsxs37(Box35, { flexDirection: "column", width: contentWidth, height, flexShrink: 0, overflowY: "hidden", children: [
23775
- /* @__PURE__ */ jsxs37(Box35, { width: contentWidth, height: 1, flexShrink: 0, children: [
23776
- /* @__PURE__ */ jsx44(Text40, { bold: true, wrap: "truncate-end", children: selectedKey }),
23777
- /* @__PURE__ */ jsx44(Box35, { flexGrow: 1 }),
23778
- /* @__PURE__ */ jsxs37(Text40, { dimColor: true, wrap: "truncate-end", children: [
23521
+ return /* @__PURE__ */ jsx43(FixedPanel, { width, height, borderStyle: void 0, paddingLeft: 1, children: /* @__PURE__ */ jsxs36(Box35, { flexDirection: "column", width: contentWidth, height, flexShrink: 0, overflowY: "hidden", children: [
23522
+ /* @__PURE__ */ jsxs36(Box35, { width: contentWidth, height: 1, flexShrink: 0, children: [
23523
+ /* @__PURE__ */ jsx43(Text39, { bold: true, wrap: "truncate-end", children: selectedKey }),
23524
+ /* @__PURE__ */ jsx43(Box35, { flexGrow: 1 }),
23525
+ /* @__PURE__ */ jsxs36(Text39, { dimColor: true, wrap: "truncate-end", children: [
23779
23526
  propCount,
23780
23527
  " prop",
23781
23528
  propCount !== 1 ? "s" : "",
@@ -23784,7 +23531,7 @@ function ReviewComponentPanel({
23784
23531
  sidebarFocused ? "[Tab] focus panel" : "[Tab] focus list"
23785
23532
  ] })
23786
23533
  ] }),
23787
- /* @__PURE__ */ jsx44(Box35, { width: contentWidth, height: contentHeight, flexShrink: 0, overflowY: "hidden", children: /* @__PURE__ */ jsx44(
23534
+ /* @__PURE__ */ jsx43(Box35, { width: contentWidth, height: contentHeight, flexShrink: 0, overflowY: "hidden", children: /* @__PURE__ */ jsx43(
23788
23535
  ReviewDetailsEditor,
23789
23536
  {
23790
23537
  selectedKey,
@@ -23799,8 +23546,8 @@ function ReviewComponentPanel({
23799
23546
  fieldEditor
23800
23547
  }
23801
23548
  ) }),
23802
- /* @__PURE__ */ jsx44(Box35, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx44(Text40, { color: saveError ? PALETTE.error : void 0, wrap: "truncate-end", children: saveError ? "\u2717 " + saveError : " " }) }),
23803
- /* @__PURE__ */ jsx44(Box35, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx44(Text40, { dimColor: true, wrap: "truncate-end", children: /* @__PURE__ */ jsx44(
23549
+ /* @__PURE__ */ jsx43(Box35, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx43(Text39, { color: saveError ? PALETTE.error : void 0, wrap: "truncate-end", children: saveError ? "\u2717 " + saveError : " " }) }),
23550
+ /* @__PURE__ */ jsx43(Box35, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx43(Text39, { dimColor: true, wrap: "truncate-end", children: /* @__PURE__ */ jsx43(
23804
23551
  ReviewPanelFooter,
23805
23552
  {
23806
23553
  reviewEditor,
@@ -23822,43 +23569,9 @@ var init_ReviewComponentPanel = __esm({
23822
23569
  }
23823
23570
  });
23824
23571
 
23825
- // packages/experience-design-system-cli/src/analyze/select/tui/components/StatusBar.tsx
23826
- import { Box as Box36, Text as Text41 } from "ink";
23827
- import { jsx as jsx45, jsxs as jsxs38 } from "react/jsx-runtime";
23828
- function StatusBar({ accepted, rejected, reviewed, needsReview }) {
23829
- const allResolved = needsReview === 0;
23830
- return /* @__PURE__ */ jsxs38(Box36, { gap: 2, flexWrap: "wrap", children: [
23831
- /* @__PURE__ */ jsxs38(Text41, { color: PALETTE.success, children: [
23832
- accepted,
23833
- " accepted"
23834
- ] }),
23835
- /* @__PURE__ */ jsxs38(Text41, { color: PALETTE.error, children: [
23836
- rejected,
23837
- " rejected"
23838
- ] }),
23839
- /* @__PURE__ */ jsxs38(Text41, { dimColor: true, children: [
23840
- needsReview,
23841
- " pending"
23842
- ] }),
23843
- /* @__PURE__ */ jsxs38(Text41, { color: PALETTE.info, children: [
23844
- reviewed,
23845
- " reviewed"
23846
- ] }),
23847
- /* @__PURE__ */ jsx45(Text41, { dimColor: true, children: "\xB7" }),
23848
- /* @__PURE__ */ jsx45(Text41, { dimColor: true, children: "[A] accept all" }),
23849
- /* @__PURE__ */ jsx45(Text41, { bold: allResolved, color: allResolved ? PALETTE.success : PALETTE.fg, children: "[F] finalize" })
23850
- ] });
23851
- }
23852
- var init_StatusBar = __esm({
23853
- "packages/experience-design-system-cli/src/analyze/select/tui/components/StatusBar.tsx"() {
23854
- "use strict";
23855
- init_theme();
23856
- }
23857
- });
23858
-
23859
23572
  // packages/experience-design-system-cli/src/import/tui/components/ReviewStatus.tsx
23860
- import { Box as Box37, Text as Text42 } from "ink";
23861
- import { jsx as jsx46, jsxs as jsxs39 } from "react/jsx-runtime";
23573
+ import { Box as Box36, Text as Text40 } from "ink";
23574
+ import { jsx as jsx44, jsxs as jsxs37 } from "react/jsx-runtime";
23862
23575
  function countReviewStatuses(entries) {
23863
23576
  return entries.reduce(
23864
23577
  (counts, entry) => {
@@ -23870,39 +23583,20 @@ function countReviewStatuses(entries) {
23870
23583
  { accepted: 0, rejected: 0, needsReview: 0 }
23871
23584
  );
23872
23585
  }
23873
- function ReviewStatusBar({
23874
- entries,
23875
- onApproveAll,
23876
- onFinalize
23877
- }) {
23878
- const { accepted, rejected, needsReview } = countReviewStatuses(entries);
23879
- return /* @__PURE__ */ jsx46(
23880
- StatusBar,
23881
- {
23882
- accepted,
23883
- rejected,
23884
- reviewed: 0,
23885
- needsReview,
23886
- onApproveAll,
23887
- onFinalize
23888
- }
23889
- );
23890
- }
23891
23586
  function ReviewLoadingState() {
23892
- return /* @__PURE__ */ jsx46(Box37, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx46(Text42, { dimColor: true, children: "Loading generated definitions..." }) });
23587
+ return /* @__PURE__ */ jsx44(Box36, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx44(Text40, { dimColor: true, children: "Loading generated definitions..." }) });
23893
23588
  }
23894
23589
  function ReviewLoadError({ message }) {
23895
- return /* @__PURE__ */ jsxs39(Box37, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
23896
- /* @__PURE__ */ jsx46(Text42, { color: PALETTE.error, children: message }),
23897
- /* @__PURE__ */ jsx46(Text42, { children: " " }),
23898
- /* @__PURE__ */ jsx46(Text42, { dimColor: true, children: "[q / Enter / Esc] Quit" })
23590
+ return /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
23591
+ /* @__PURE__ */ jsx44(Text40, { color: PALETTE.error, children: message }),
23592
+ /* @__PURE__ */ jsx44(Text40, { children: " " }),
23593
+ /* @__PURE__ */ jsx44(Text40, { dimColor: true, children: "[q / Enter / Esc] Quit" })
23899
23594
  ] });
23900
23595
  }
23901
23596
  var init_ReviewStatus = __esm({
23902
23597
  "packages/experience-design-system-cli/src/import/tui/components/ReviewStatus.tsx"() {
23903
23598
  "use strict";
23904
23599
  init_theme();
23905
- init_StatusBar();
23906
23600
  }
23907
23601
  });
23908
23602
 
@@ -24030,8 +23724,8 @@ var init_runLivePreview = __esm({
24030
23724
  });
24031
23725
 
24032
23726
  // packages/experience-design-system-cli/src/analyze/select/tui/components/FinalizeDialog.tsx
24033
- import { Box as Box38, Text as Text43 } from "ink";
24034
- import { Fragment as Fragment15, jsx as jsx47, jsxs as jsxs40 } from "react/jsx-runtime";
23727
+ import { Box as Box37, Text as Text41 } from "ink";
23728
+ import { Fragment as Fragment15, jsx as jsx45, jsxs as jsxs38 } from "react/jsx-runtime";
24035
23729
  function FinalizeDialog({
24036
23730
  accepted,
24037
23731
  rejected,
@@ -24059,51 +23753,51 @@ function FinalizeDialog({
24059
23753
  const windowed = removed.slice(offset, offset + FINALIZE_REMOVED_WINDOW);
24060
23754
  const hasMoreBelow = offset + FINALIZE_REMOVED_WINDOW < removed.length;
24061
23755
  const hasMoreAbove = offset > 0;
24062
- return /* @__PURE__ */ jsxs40(Box38, { flexDirection: "column", borderStyle: "round", padding: 1, width: 58, children: [
24063
- /* @__PURE__ */ jsx47(Text43, { bold: true, children: "\u2500".repeat(17) + " Finalize " + "\u2500".repeat(17) }),
24064
- /* @__PURE__ */ jsx47(Text43, { children: " " }),
24065
- /* @__PURE__ */ jsxs40(Text43, { children: [
24066
- /* @__PURE__ */ jsxs40(Text43, { color: PALETTE.success, children: [
23756
+ return /* @__PURE__ */ jsxs38(Box37, { flexDirection: "column", borderStyle: "round", padding: 1, width: 58, children: [
23757
+ /* @__PURE__ */ jsx45(Text41, { bold: true, children: "\u2500".repeat(17) + " Finalize " + "\u2500".repeat(17) }),
23758
+ /* @__PURE__ */ jsx45(Text41, { children: " " }),
23759
+ /* @__PURE__ */ jsxs38(Text41, { children: [
23760
+ /* @__PURE__ */ jsxs38(Text41, { color: PALETTE.success, children: [
24067
23761
  accepted,
24068
23762
  " accepted"
24069
23763
  ] }),
24070
- /* @__PURE__ */ jsx47(Text43, { children: " \xB7 " }),
24071
- /* @__PURE__ */ jsxs40(Text43, { color: PALETTE.error, children: [
23764
+ /* @__PURE__ */ jsx45(Text41, { children: " \xB7 " }),
23765
+ /* @__PURE__ */ jsxs38(Text41, { color: PALETTE.error, children: [
24072
23766
  rejected,
24073
23767
  " rejected"
24074
23768
  ] }),
24075
- /* @__PURE__ */ jsx47(Text43, { children: " \xB7 " }),
24076
- /* @__PURE__ */ jsxs40(Text43, { dimColor: true, children: [
23769
+ /* @__PURE__ */ jsx45(Text41, { children: " \xB7 " }),
23770
+ /* @__PURE__ */ jsxs38(Text41, { dimColor: true, children: [
24077
23771
  needsReview,
24078
23772
  " unresolved"
24079
23773
  ] })
24080
23774
  ] }),
24081
- /* @__PURE__ */ jsx47(Text43, { children: " " }),
24082
- noneAccepted && /* @__PURE__ */ jsxs40(Fragment15, { children: [
24083
- /* @__PURE__ */ jsx47(Text43, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
24084
- /* @__PURE__ */ jsx47(Text43, { color: PALETTE.warning, children: " Accept at least one component ([a] a row, [A] accept all) to push." }),
24085
- /* @__PURE__ */ jsx47(Text43, { children: " " })
23775
+ /* @__PURE__ */ jsx45(Text41, { children: " " }),
23776
+ noneAccepted && /* @__PURE__ */ jsxs38(Fragment15, { children: [
23777
+ /* @__PURE__ */ jsx45(Text41, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
23778
+ /* @__PURE__ */ jsx45(Text41, { color: PALETTE.warning, children: " Accept at least one component ([a] a row, [A] accept all) to push." }),
23779
+ /* @__PURE__ */ jsx45(Text41, { children: " " })
24086
23780
  ] }),
24087
- !allResolved && /* @__PURE__ */ jsxs40(Fragment15, { children: [
24088
- /* @__PURE__ */ jsx47(Text43, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
24089
- /* @__PURE__ */ jsx47(Text43, { color: PALETTE.warning, children: " Only explicitly accepted components ship." }),
24090
- /* @__PURE__ */ jsx47(Text43, { children: " " })
23781
+ !allResolved && /* @__PURE__ */ jsxs38(Fragment15, { children: [
23782
+ /* @__PURE__ */ jsx45(Text41, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
23783
+ /* @__PURE__ */ jsx45(Text41, { color: PALETTE.warning, children: " Only explicitly accepted components ship." }),
23784
+ /* @__PURE__ */ jsx45(Text41, { children: " " })
24091
23785
  ] }),
24092
- /* @__PURE__ */ jsxs40(Box38, { flexDirection: "column", height: 2, children: [
24093
- previewStatus === "running" ? /* @__PURE__ */ jsx47(Text43, { dimColor: true, children: "Previewing deletions against the target space\u2026" }) : previewStatus === "error" ? /* @__PURE__ */ jsx47(Text43, { color: PALETTE.warning, children: "\u26A0 Could not preview deletions (the push will still proceed)." }) : /* @__PURE__ */ jsx47(Text43, { children: " " }),
24094
- /* @__PURE__ */ jsx47(Text43, { children: " " })
23786
+ /* @__PURE__ */ jsxs38(Box37, { flexDirection: "column", height: 2, children: [
23787
+ previewStatus === "running" ? /* @__PURE__ */ jsx45(Text41, { dimColor: true, children: "Previewing deletions against the target space\u2026" }) : previewStatus === "error" ? /* @__PURE__ */ jsx45(Text41, { color: PALETTE.warning, children: "\u26A0 Could not preview deletions (the push will still proceed)." }) : /* @__PURE__ */ jsx45(Text41, { children: " " }),
23788
+ /* @__PURE__ */ jsx45(Text41, { children: " " })
24095
23789
  ] }),
24096
- previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs40(Fragment15, { children: [
24097
- /* @__PURE__ */ jsx47(Text43, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
24098
- hasMoreAbove && /* @__PURE__ */ jsx47(Text43, { dimColor: true, children: " \u2191 more above" }),
24099
- windowed.map((rc) => /* @__PURE__ */ jsx47(Text43, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
24100
- hasMoreBelow && /* @__PURE__ */ jsx47(Text43, { dimColor: true, children: " \u2193 more below" }),
24101
- removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx47(Text43, { dimColor: true, children: " [j/k] scroll deletions" }),
24102
- /* @__PURE__ */ jsx47(Text43, { children: " " })
23790
+ previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs38(Fragment15, { children: [
23791
+ /* @__PURE__ */ jsx45(Text41, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
23792
+ hasMoreAbove && /* @__PURE__ */ jsx45(Text41, { dimColor: true, children: " \u2191 more above" }),
23793
+ windowed.map((rc) => /* @__PURE__ */ jsx45(Text41, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
23794
+ hasMoreBelow && /* @__PURE__ */ jsx45(Text41, { dimColor: true, children: " \u2193 more below" }),
23795
+ removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx45(Text41, { dimColor: true, children: " [j/k] scroll deletions" }),
23796
+ /* @__PURE__ */ jsx45(Text41, { children: " " })
24103
23797
  ] }),
24104
- /* @__PURE__ */ jsx47(Text43, { children: noneAccepted ? "Confirm exit with nothing accepted?" : allResolved ? "Save decisions and exit? All components resolved." : "Save decisions and exit?" }),
24105
- /* @__PURE__ */ jsx47(Text43, { children: " " }),
24106
- /* @__PURE__ */ jsx47(Text43, { children: " [y / Enter] Confirm [n / Esc] Cancel" })
23798
+ /* @__PURE__ */ jsx45(Text41, { children: noneAccepted ? "Confirm exit with nothing accepted?" : allResolved ? "Save decisions and exit? All components resolved." : "Save decisions and exit?" }),
23799
+ /* @__PURE__ */ jsx45(Text41, { children: " " }),
23800
+ /* @__PURE__ */ jsx45(Text41, { children: " [y / Enter] Confirm [n / Esc] Cancel" })
24107
23801
  ] });
24108
23802
  }
24109
23803
  var FINALIZE_REMOVED_WINDOW;
@@ -24608,8 +24302,8 @@ var init_useReviewSurfaceState = __esm({
24608
24302
  });
24609
24303
 
24610
24304
  // packages/experience-design-system-cli/src/analyze/select/tui/components/QuitDialog.tsx
24611
- import { Box as Box39, Text as Text44 } from "ink";
24612
- import { Fragment as Fragment16, jsx as jsx48, jsxs as jsxs41 } from "react/jsx-runtime";
24305
+ import { Box as Box38, Text as Text42 } from "ink";
24306
+ import { Fragment as Fragment16, jsx as jsx46, jsxs as jsxs39 } from "react/jsx-runtime";
24613
24307
  function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
24614
24308
  useImmediateInput((input, key) => {
24615
24309
  if (input === "y" || key.return) {
@@ -24618,16 +24312,16 @@ function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
24618
24312
  onCancel();
24619
24313
  }
24620
24314
  });
24621
- return /* @__PURE__ */ jsxs41(Box39, { flexDirection: "column", borderStyle: "round", padding: 1, width: 50, children: [
24622
- /* @__PURE__ */ jsx48(Text44, { bold: true, children: "\u2500".repeat(19) + " Quit " + "\u2500".repeat(19) }),
24623
- /* @__PURE__ */ jsx48(Text44, { children: " " }),
24624
- hasUnsavedDrafts ? /* @__PURE__ */ jsxs41(Fragment16, { children: [
24625
- /* @__PURE__ */ jsx48(Text44, { children: "You have unsaved draft edits." }),
24626
- /* @__PURE__ */ jsx48(Text44, { children: "Session state is preserved \u2014 you can resume" }),
24627
- /* @__PURE__ */ jsx48(Text44, { children: "by running the same review command again." })
24628
- ] }) : /* @__PURE__ */ jsx48(Text44, { children: "Session is saved. Quit without finalizing?" }),
24629
- /* @__PURE__ */ jsx48(Text44, { children: " " }),
24630
- /* @__PURE__ */ jsx48(Text44, { children: " [y / Enter] Quit [n / Esc] Stay" })
24315
+ return /* @__PURE__ */ jsxs39(Box38, { flexDirection: "column", borderStyle: "round", padding: 1, width: 50, children: [
24316
+ /* @__PURE__ */ jsx46(Text42, { bold: true, children: "\u2500".repeat(19) + " Quit " + "\u2500".repeat(19) }),
24317
+ /* @__PURE__ */ jsx46(Text42, { children: " " }),
24318
+ hasUnsavedDrafts ? /* @__PURE__ */ jsxs39(Fragment16, { children: [
24319
+ /* @__PURE__ */ jsx46(Text42, { children: "You have unsaved draft edits." }),
24320
+ /* @__PURE__ */ jsx46(Text42, { children: "Session state is preserved \u2014 you can resume" }),
24321
+ /* @__PURE__ */ jsx46(Text42, { children: "by running the same review command again." })
24322
+ ] }) : /* @__PURE__ */ jsx46(Text42, { children: "Session is saved. Quit without finalizing?" }),
24323
+ /* @__PURE__ */ jsx46(Text42, { children: " " }),
24324
+ /* @__PURE__ */ jsx46(Text42, { children: " [y / Enter] Quit [n / Esc] Stay" })
24631
24325
  ] });
24632
24326
  }
24633
24327
  var init_QuitDialog = __esm({
@@ -24638,8 +24332,8 @@ var init_QuitDialog = __esm({
24638
24332
  });
24639
24333
 
24640
24334
  // packages/experience-design-system-cli/src/import/tui/components/ReviewDialogs.tsx
24641
- import { Box as Box40, Text as Text45 } from "ink";
24642
- import { Fragment as Fragment17, jsx as jsx49, jsxs as jsxs42 } from "react/jsx-runtime";
24335
+ import { Box as Box39, Text as Text43 } from "ink";
24336
+ import { Fragment as Fragment17, jsx as jsx47, jsxs as jsxs40 } from "react/jsx-runtime";
24643
24337
  function ReviewFinalizeDialogs({
24644
24338
  showFinalize,
24645
24339
  showQuit,
@@ -24653,8 +24347,8 @@ function ReviewFinalizeDialogs({
24653
24347
  onQuitCancel
24654
24348
  }) {
24655
24349
  const { accepted, rejected, needsReview } = countReviewStatuses(components);
24656
- return /* @__PURE__ */ jsxs42(Fragment17, { children: [
24657
- showFinalize && /* @__PURE__ */ jsx49(
24350
+ return /* @__PURE__ */ jsxs40(Fragment17, { children: [
24351
+ showFinalize && /* @__PURE__ */ jsx47(
24658
24352
  FinalizeDialog,
24659
24353
  {
24660
24354
  accepted,
@@ -24667,7 +24361,7 @@ function ReviewFinalizeDialogs({
24667
24361
  onCancel: onFinalizeCancel
24668
24362
  }
24669
24363
  ),
24670
- showQuit && /* @__PURE__ */ jsx49(QuitDialog, { hasUnsavedDrafts: false, onConfirm: onQuitConfirm, onCancel: onQuitCancel })
24364
+ showQuit && /* @__PURE__ */ jsx47(QuitDialog, { hasUnsavedDrafts: false, onConfirm: onQuitConfirm, onCancel: onQuitCancel })
24671
24365
  ] });
24672
24366
  }
24673
24367
  function ReviewStepDialogs({
@@ -24677,7 +24371,7 @@ function ReviewStepDialogs({
24677
24371
  onFinalize,
24678
24372
  onQuit
24679
24373
  }) {
24680
- return /* @__PURE__ */ jsx49(
24374
+ return /* @__PURE__ */ jsx47(
24681
24375
  ReviewFinalizeDialogs,
24682
24376
  {
24683
24377
  showFinalize: surfaceState.showFinalize,
@@ -24695,12 +24389,12 @@ function ReviewStepDialogs({
24695
24389
  }
24696
24390
  function ReviewReloadDialog({ open }) {
24697
24391
  if (!open) return null;
24698
- return /* @__PURE__ */ jsxs42(Box40, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
24699
- /* @__PURE__ */ jsx49(Text45, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
24700
- /* @__PURE__ */ jsx49(Text45, { children: "Unsaved in-memory changes will be lost." }),
24701
- /* @__PURE__ */ jsx49(Text45, { children: " " }),
24702
- /* @__PURE__ */ jsx49(Text45, { children: " [Enter] Confirm" }),
24703
- /* @__PURE__ */ jsx49(Text45, { children: " [Esc] Cancel" })
24392
+ return /* @__PURE__ */ jsxs40(Box39, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
24393
+ /* @__PURE__ */ jsx47(Text43, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
24394
+ /* @__PURE__ */ jsx47(Text43, { children: "Unsaved in-memory changes will be lost." }),
24395
+ /* @__PURE__ */ jsx47(Text43, { children: " " }),
24396
+ /* @__PURE__ */ jsx47(Text43, { children: " [Enter] Confirm" }),
24397
+ /* @__PURE__ */ jsx47(Text43, { children: " [Esc] Cancel" })
24704
24398
  ] });
24705
24399
  }
24706
24400
  var init_ReviewDialogs = __esm({
@@ -25108,8 +24802,8 @@ var init_useReviewPreview = __esm({
25108
24802
  });
25109
24803
 
25110
24804
  // packages/experience-design-system-cli/src/import/tui/components/LivePreviewSummary.tsx
25111
- import { Box as Box41, Text as Text46 } from "ink";
25112
- import { jsx as jsx50, jsxs as jsxs43 } from "react/jsx-runtime";
24805
+ import { Box as Box40, Text as Text44 } from "ink";
24806
+ import { jsx as jsx48, jsxs as jsxs41 } from "react/jsx-runtime";
25113
24807
  function LivePreviewSummary({
25114
24808
  enabled,
25115
24809
  previewAnnotations,
@@ -25123,19 +24817,19 @@ function LivePreviewSummary({
25123
24817
  const counts = { new: 0, changed: 0, removed: 0, breaking: 0 };
25124
24818
  for (const annotation of previewAnnotations.values()) counts[annotation] += 1;
25125
24819
  const hasCounts = counts.new + counts.changed + counts.removed + counts.breaking > 0;
25126
- if (disabled) return /* @__PURE__ */ jsx50(Text46, { dimColor: true, children: "Preview: disabled (creds rejected)" });
25127
- if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx50(Text46, { dimColor: true, children: `Preview: ${spinner} running...` });
24820
+ if (disabled) return /* @__PURE__ */ jsx48(Text44, { dimColor: true, children: "Preview: disabled (creds rejected)" });
24821
+ if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx48(Text44, { dimColor: true, children: `Preview: ${spinner} running...` });
25128
24822
  if (!hasCounts) return null;
25129
- return /* @__PURE__ */ jsxs43(Box41, { children: [
25130
- /* @__PURE__ */ jsx50(Text46, { children: "Preview: " }),
25131
- /* @__PURE__ */ jsx50(Text46, { color: PALETTE.success, children: `${counts.new} new` }),
25132
- /* @__PURE__ */ jsx50(Text46, { children: " \xB7 " }),
25133
- /* @__PURE__ */ jsx50(Text46, { color: PALETTE.warning, children: `${counts.changed} changed` }),
25134
- /* @__PURE__ */ jsx50(Text46, { children: " \xB7 " }),
25135
- /* @__PURE__ */ jsx50(Text46, { dimColor: true, children: `${counts.removed} removed` }),
25136
- showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx50(Text46, { dimColor: true, children: " ([d] removed list)" }),
25137
- /* @__PURE__ */ jsx50(Text46, { children: " \xB7 " }),
25138
- /* @__PURE__ */ jsx50(Text46, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
24823
+ return /* @__PURE__ */ jsxs41(Box40, { children: [
24824
+ /* @__PURE__ */ jsx48(Text44, { children: "Preview: " }),
24825
+ /* @__PURE__ */ jsx48(Text44, { color: PALETTE.success, children: `${counts.new} new` }),
24826
+ /* @__PURE__ */ jsx48(Text44, { children: " \xB7 " }),
24827
+ /* @__PURE__ */ jsx48(Text44, { color: PALETTE.warning, children: `${counts.changed} changed` }),
24828
+ /* @__PURE__ */ jsx48(Text44, { children: " \xB7 " }),
24829
+ /* @__PURE__ */ jsx48(Text44, { dimColor: true, children: `${counts.removed} removed` }),
24830
+ showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx48(Text44, { dimColor: true, children: " ([d] removed list)" }),
24831
+ /* @__PURE__ */ jsx48(Text44, { children: " \xB7 " }),
24832
+ /* @__PURE__ */ jsx48(Text44, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
25139
24833
  ] });
25140
24834
  }
25141
24835
  var init_LivePreviewSummary = __esm({
@@ -25146,10 +24840,10 @@ var init_LivePreviewSummary = __esm({
25146
24840
  });
25147
24841
 
25148
24842
  // packages/experience-design-system-cli/src/import/tui/steps/GenerateReviewStep.tsx
25149
- import { useCallback as useCallback6, useEffect as useEffect13, useMemo as useMemo4, useRef as useRef9, useState as useState22 } from "react";
25150
- import figures7 from "figures";
25151
- import { Box as Box42, Text as Text47, useStdout as useStdout2 } from "ink";
25152
- import { Fragment as Fragment18, jsx as jsx51, jsxs as jsxs44 } from "react/jsx-runtime";
24843
+ import { useCallback as useCallback6, useEffect as useEffect13, useMemo as useMemo3, useRef as useRef9, useState as useState22 } from "react";
24844
+ import figures6 from "figures";
24845
+ import { Box as Box41, Text as Text45, useStdout as useStdout2 } from "ink";
24846
+ import { Fragment as Fragment18, jsx as jsx49, jsxs as jsxs42 } from "react/jsx-runtime";
25153
24847
  function sortComponentsForSidebar(components, cycleParticipants) {
25154
24848
  const isEmpty2 = (entry) => Object.keys(entry.$properties ?? {}).length === 0 && Object.keys(entry.$slots ?? {}).length === 0;
25155
24849
  const tier = (c2) => {
@@ -25190,10 +24884,10 @@ function CyclePathLine({
25190
24884
  highlightComponents = false,
25191
24885
  highlightLine = false
25192
24886
  }) {
25193
- return /* @__PURE__ */ jsxs44(Text47, { color: highlightLine ? PALETTE.warning : void 0, children: [
24887
+ return /* @__PURE__ */ jsxs42(Text45, { color: highlightLine ? PALETTE.warning : void 0, children: [
25194
24888
  prefix,
25195
24889
  segments.map(
25196
- (segment, index) => segment.kind === "slot" ? /* @__PURE__ */ jsx51(Text47, { color: PALETTE.info, children: segment.text }, index) : segment.kind === "arrow" ? /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: segment.text }, index) : /* @__PURE__ */ jsx51(Text47, { color: highlightComponents ? PALETTE.warning : void 0, children: segment.text }, index)
24890
+ (segment, index) => segment.kind === "slot" ? /* @__PURE__ */ jsx49(Text45, { color: PALETTE.info, children: segment.text }, index) : segment.kind === "arrow" ? /* @__PURE__ */ jsx49(Text45, { dimColor: true, children: segment.text }, index) : /* @__PURE__ */ jsx49(Text45, { color: highlightComponents ? PALETTE.warning : void 0, children: segment.text }, index)
25197
24891
  )
25198
24892
  ] });
25199
24893
  }
@@ -25240,9 +24934,9 @@ function deriveBreakingChanges(response) {
25240
24934
  }
25241
24935
  function GenerateReviewStep(props) {
25242
24936
  if (!props.extractSessionId) {
25243
- return /* @__PURE__ */ jsx51(Box42, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx51(Text47, { color: PALETTE.error, children: "Error: no session ID \u2014 cannot load generated definitions." }) });
24937
+ return /* @__PURE__ */ jsx49(Box41, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx49(Text45, { color: PALETTE.error, children: "Error: no session ID \u2014 cannot load generated definitions." }) });
25244
24938
  }
25245
- return /* @__PURE__ */ jsx51(GenerateReviewStepView, { ...props, extractSessionId: props.extractSessionId });
24939
+ return /* @__PURE__ */ jsx49(GenerateReviewStepView, { ...props, extractSessionId: props.extractSessionId });
25246
24940
  }
25247
24941
  function GenerateReviewStepView({
25248
24942
  extractSessionId,
@@ -25345,8 +25039,6 @@ function GenerateReviewStepView({
25345
25039
  showHelp,
25346
25040
  setShowHelp
25347
25041
  } = useSidebarSearchState();
25348
- const lineagePanel = useOverlayPanel({ toggleKey: "l" });
25349
- const [lineageCursor, setLineageCursor] = useState22(0);
25350
25042
  const breakingPanel = useOverlayPanel({ toggleKey: "b", onClose: () => setBreakingDetailOpen(false) });
25351
25043
  const [breakingChanges, setBreakingChanges] = useState22([]);
25352
25044
  const [breakingCursor, setBreakingCursor] = useState22(0);
@@ -25415,12 +25107,12 @@ function GenerateReviewStepView({
25415
25107
  } catch {
25416
25108
  }
25417
25109
  };
25418
- const componentGraph = useMemo4(() => buildComponentGraph(components), [components]);
25419
- const sidebarGraph = useMemo4(
25110
+ const componentGraph = useMemo3(() => buildComponentGraph(components), [components]);
25111
+ const sidebarGraph = useMemo3(
25420
25112
  () => buildComponentGraph(components, { stripRejectedEdges: true }),
25421
25113
  [components]
25422
25114
  );
25423
- const closures = useMemo4(() => computeAllClosures(componentGraph), [componentGraph]);
25115
+ const closures = useMemo3(() => computeAllClosures(componentGraph), [componentGraph]);
25424
25116
  useEffect13(() => {
25425
25117
  if (seededGroupsRef.current) return;
25426
25118
  if (closures.size === 0 && slotCycles.length === 0) return;
@@ -25432,14 +25124,14 @@ function GenerateReviewStepView({
25432
25124
  )
25433
25125
  );
25434
25126
  }, [closures, slotCycles]);
25435
- const directIssues = useMemo4(() => {
25127
+ const directIssues = useMemo3(() => {
25436
25128
  const m = /* @__PURE__ */ new Map();
25437
25129
  for (const c2 of components) {
25438
25130
  if (c2.status === "rejected") m.set(c2.key, "error");
25439
25131
  }
25440
25132
  return m;
25441
25133
  }, [components]);
25442
- const cycleView = useMemo4(() => computeCycleView(components), [components]);
25134
+ const cycleView = useMemo3(() => computeCycleView(components), [components]);
25443
25135
  useEffect13(() => {
25444
25136
  const decision = computeAutoRejectDecision({
25445
25137
  loading,
@@ -25510,7 +25202,7 @@ function GenerateReviewStepView({
25510
25202
  reviewEditor.setSaveError(null);
25511
25203
  setFinalizeError(null);
25512
25204
  };
25513
- const groupedItemsMemo = useMemo4(
25205
+ const groupedItemsMemo = useMemo3(
25514
25206
  () => components.map((c2) => ({
25515
25207
  key: c2.key,
25516
25208
  entry: c2.entry,
@@ -25518,12 +25210,12 @@ function GenerateReviewStepView({
25518
25210
  })),
25519
25211
  [components, directIssues]
25520
25212
  );
25521
- const brokenKeys = useMemo4(
25213
+ const brokenKeys = useMemo3(
25522
25214
  () => new Set(breakingChanges.map((b) => b.componentName)),
25523
25215
  [breakingChanges]
25524
25216
  );
25525
- const breakingRows = useMemo4(() => buildBreakingRows(breakingChanges), [breakingChanges]);
25526
- const filterVisibleKeys = useMemo4(() => {
25217
+ const breakingRows = useMemo3(() => buildBreakingRows(breakingChanges), [breakingChanges]);
25218
+ const filterVisibleKeys = useMemo3(() => {
25527
25219
  if (jumpFilterTarget) {
25528
25220
  return findAllAncestors2(jumpFilterTarget, sidebarGraph);
25529
25221
  }
@@ -25539,7 +25231,7 @@ function GenerateReviewStepView({
25539
25231
  })();
25540
25232
  return intersectFilterKeys(categoryKeys, searchKeys);
25541
25233
  }, [jumpFilterTarget, activeFilters, cycleView, brokenKeys, searchQuery, groupedItemsMemo, sidebarGraph]);
25542
- const visibleRowsMemo = useMemo4(
25234
+ const visibleRowsMemo = useMemo3(
25543
25235
  () => buildVisibleRows({
25544
25236
  items: groupedItemsMemo,
25545
25237
  cycleParticipants: cycleView.structural,
@@ -25550,7 +25242,7 @@ function GenerateReviewStepView({
25550
25242
  }),
25551
25243
  [groupedItemsMemo, cycleView, expandedGroups, columnOneView, sidebarGraph, filterVisibleKeys]
25552
25244
  );
25553
- const selectableRowPositions = useMemo4(() => {
25245
+ const selectableRowPositions = useMemo3(() => {
25554
25246
  const out = [];
25555
25247
  for (let i = 0; i < visibleRowsMemo.length; i++) {
25556
25248
  if (visibleRowsMemo[i].itemIdx >= 0) out.push(i);
@@ -25559,11 +25251,9 @@ function GenerateReviewStepView({
25559
25251
  }, [visibleRowsMemo]);
25560
25252
  const selectedIdx = visibleRowsMemo[cursorRowIdx]?.itemIdx ?? -1;
25561
25253
  const focusedComponentKey = components[selectedIdx]?.key ?? null;
25562
- const { entries: lineageEntries, jumpables: lineageJumpables } = useLineage(focusedComponentKey, componentGraph);
25563
25254
  const { sidebarVisibleCount: visibleCount, panelMaxRows } = computeSidebarBudget({
25564
25255
  rows: stdout?.rows ?? FALLBACK_ROWS,
25565
- panelOpen: lineagePanel.isOpen,
25566
- entryCount: lineageEntries.length
25256
+ panelOpen: false
25567
25257
  });
25568
25258
  useEffect13(() => {
25569
25259
  if (selectableRowPositions.length === 0) return;
@@ -25596,7 +25286,7 @@ function GenerateReviewStepView({
25596
25286
  selectedIdx,
25597
25287
  extractSessionId
25598
25288
  });
25599
- const renderStatusByKey = useMemo4(() => {
25289
+ const renderStatusByKey = useMemo3(() => {
25600
25290
  const merged = /* @__PURE__ */ new Map();
25601
25291
  for (const closure of closures.values()) {
25602
25292
  const per = computeRenderStatuses(closure, directIssues);
@@ -25609,7 +25299,7 @@ function GenerateReviewStepView({
25609
25299
  }
25610
25300
  return merged;
25611
25301
  }, [closures, directIssues]);
25612
- const selectionStateByKey = useMemo4(() => {
25302
+ const selectionStateByKey = useMemo3(() => {
25613
25303
  const map = /* @__PURE__ */ new Map();
25614
25304
  for (const c2 of components) {
25615
25305
  if (c2.status === "accepted") map.set(c2.key, "accepted");
@@ -25618,7 +25308,7 @@ function GenerateReviewStepView({
25618
25308
  }
25619
25309
  return map;
25620
25310
  }, [components]);
25621
- const searchMatches = useMemo4(() => {
25311
+ const searchMatches = useMemo3(() => {
25622
25312
  if (!searchQuery) return [];
25623
25313
  const out = [];
25624
25314
  for (const pos of selectableRowPositions) {
@@ -25628,7 +25318,7 @@ function GenerateReviewStepView({
25628
25318
  }
25629
25319
  return out;
25630
25320
  }, [searchQuery, selectableRowPositions, visibleRowsMemo, components]);
25631
- const searchMatchCount = useMemo4(() => {
25321
+ const searchMatchCount = useMemo3(() => {
25632
25322
  if (searchMatches.length === 0) return 0;
25633
25323
  const seen = /* @__PURE__ */ new Set();
25634
25324
  for (const pos of searchMatches) {
@@ -25637,7 +25327,7 @@ function GenerateReviewStepView({
25637
25327
  }
25638
25328
  return seen.size;
25639
25329
  }, [searchMatches, visibleRowsMemo]);
25640
- const dimPredicate = useMemo4(
25330
+ const dimPredicate = useMemo3(
25641
25331
  () => buildFlatDimPredicate({
25642
25332
  viewMode: columnOneView,
25643
25333
  searchQuery,
@@ -25668,7 +25358,7 @@ function GenerateReviewStepView({
25668
25358
  }
25669
25359
  }
25670
25360
  };
25671
- const breakEdges = useMemo4(() => {
25361
+ const breakEdges = useMemo3(() => {
25672
25362
  const cycle = slotCycles[cyclesCursor];
25673
25363
  if (!cycle) return [];
25674
25364
  return enumerateCycleBreaks(cycle, components);
@@ -25821,21 +25511,6 @@ function GenerateReviewStepView({
25821
25511
  }
25822
25512
  return;
25823
25513
  }
25824
- if (lineagePanel.isOpen) {
25825
- if (lineagePanel.handleInput(input, key)) return;
25826
- if (handleLineageNavigation({
25827
- input,
25828
- key,
25829
- cursor: lineageCursor,
25830
- jumpables: lineageJumpables,
25831
- onCursorChange: setLineageCursor,
25832
- onJump: jumpCursorToName,
25833
- onClose: lineagePanel.close,
25834
- allowTab: true
25835
- }))
25836
- return;
25837
- return;
25838
- }
25839
25514
  if (breakPanel.isOpen) {
25840
25515
  if (breakConfirm) {
25841
25516
  if (input === "y") {
@@ -25908,11 +25583,6 @@ function GenerateReviewStepView({
25908
25583
  setCyclesCursor(0);
25909
25584
  return;
25910
25585
  }
25911
- if (input === "l" && sidebarFocused && focusedComponentKey) {
25912
- lineagePanel.open();
25913
- setLineageCursor(0);
25914
- return;
25915
- }
25916
25586
  if (input === "b" && sidebarFocused && breakingChanges.length > 0) {
25917
25587
  breakingPanel.open();
25918
25588
  setBreakingCursor(0);
@@ -26110,30 +25780,30 @@ function GenerateReviewStepView({
26110
25780
  }
26111
25781
  });
26112
25782
  if (loading) {
26113
- return /* @__PURE__ */ jsx51(ReviewLoadingState, {});
25783
+ return /* @__PURE__ */ jsx49(ReviewLoadingState, {});
26114
25784
  }
26115
25785
  if (loadError) {
26116
- return /* @__PURE__ */ jsx51(ReviewLoadError, { message: loadError });
25786
+ return /* @__PURE__ */ jsx49(ReviewLoadError, { message: loadError });
26117
25787
  }
26118
25788
  if (showHelp) {
26119
- return /* @__PURE__ */ jsx51(HelpOverlay, { sections: HELP_SECTIONS2, onClose: () => setShowHelp(false) });
25789
+ return /* @__PURE__ */ jsx49(HelpOverlay, { sections: HELP_SECTIONS2, onClose: () => setShowHelp(false) });
26120
25790
  }
26121
25791
  const renderBreakOverlay = (width) => {
26122
25792
  const highlightedCycle = slotCycles[cyclesCursor];
26123
- return /* @__PURE__ */ jsxs44(Box42, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, width, children: [
26124
- /* @__PURE__ */ jsx51(Text47, { bold: true, color: PALETTE.warning, children: `BREAK CYCLE ${cyclesCursor + 1} \u2014 remove a slot edge or reject a member` }),
26125
- highlightedCycle && /* @__PURE__ */ jsx51(CyclePathLine, { segments: formatCyclePathSegments(highlightedCycle), prefix: " ", highlightComponents: true }),
26126
- /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: highlightedCycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
26127
- /* @__PURE__ */ jsx51(Text47, { children: " " }),
26128
- breakEdges.length > 0 && /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: "remove slot edge:" }),
25793
+ return /* @__PURE__ */ jsxs42(Box41, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, width, children: [
25794
+ /* @__PURE__ */ jsx49(Text45, { bold: true, color: PALETTE.warning, children: `BREAK CYCLE ${cyclesCursor + 1} \u2014 remove a slot edge or reject a member` }),
25795
+ highlightedCycle && /* @__PURE__ */ jsx49(CyclePathLine, { segments: formatCyclePathSegments(highlightedCycle), prefix: " ", highlightComponents: true }),
25796
+ /* @__PURE__ */ jsx49(Text45, { dimColor: true, children: highlightedCycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
25797
+ /* @__PURE__ */ jsx49(Text45, { children: " " }),
25798
+ breakEdges.length > 0 && /* @__PURE__ */ jsx49(Text45, { dimColor: true, children: "remove slot edge:" }),
26129
25799
  breakEdges.map((edge, idx) => {
26130
25800
  const isCursor = idx === breakCursor;
26131
- return /* @__PURE__ */ jsx51(Text47, { inverse: isCursor, children: `${isCursor ? figures7.pointer : " "} remove '${edge.toComponent}' from ${edge.fromComponent}.$slots.${edge.slotName}.$allowedComponents` }, `break-${idx}`);
25801
+ return /* @__PURE__ */ jsx49(Text45, { inverse: isCursor, children: `${isCursor ? figures6.pointer : " "} remove '${edge.toComponent}' from ${edge.fromComponent}.$slots.${edge.slotName}.$allowedComponents` }, `break-${idx}`);
26132
25802
  }),
26133
- breakConfirm ? /* @__PURE__ */ jsxs44(Fragment18, { children: [
26134
- /* @__PURE__ */ jsx51(Text47, { children: " " }),
26135
- /* @__PURE__ */ jsx51(Text47, { bold: true, color: PALETTE.warning, children: "Delete this slot edge? [y] confirm [n] cancel" })
26136
- ] }) : /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: "[\u2191\u2193/j/k] move [Enter] delete [x/Esc] close" })
25803
+ breakConfirm ? /* @__PURE__ */ jsxs42(Fragment18, { children: [
25804
+ /* @__PURE__ */ jsx49(Text45, { children: " " }),
25805
+ /* @__PURE__ */ jsx49(Text45, { bold: true, color: PALETTE.warning, children: "Delete this slot edge? [y] confirm [n] cancel" })
25806
+ ] }) : /* @__PURE__ */ jsx49(Text45, { dimColor: true, children: "[\u2191\u2193/j/k] move [Enter] delete [x/Esc] close" })
26137
25807
  ] });
26138
25808
  };
26139
25809
  const breakOverlayFullScreen = breakPanel.isOpen && shouldBreakOverlayGoFullScreen({
@@ -26177,8 +25847,8 @@ function GenerateReviewStepView({
26177
25847
  for (const c2 of closures.values()) if (c2.nodes.length > 1) return true;
26178
25848
  return false;
26179
25849
  })();
26180
- return /* @__PURE__ */ jsxs44(Box42, { flexDirection: "column", children: [
26181
- /* @__PURE__ */ jsx51(
25850
+ return /* @__PURE__ */ jsxs42(Box41, { flexDirection: "column", children: [
25851
+ /* @__PURE__ */ jsx49(
26182
25852
  ReviewStepDialogs,
26183
25853
  {
26184
25854
  surfaceState: reviewSurface,
@@ -26188,24 +25858,24 @@ function GenerateReviewStepView({
26188
25858
  onQuit
26189
25859
  }
26190
25860
  ),
26191
- showUnsavedWarning && !dialogOpen && /* @__PURE__ */ jsxs44(Box42, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
26192
- /* @__PURE__ */ jsx51(Text47, { bold: true, color: PALETTE.warning, children: "Unsaved changes" }),
26193
- /* @__PURE__ */ jsx51(Text47, { children: "You have unsaved edits in the current field editor." }),
26194
- /* @__PURE__ */ jsx51(Text47, { children: " " }),
26195
- /* @__PURE__ */ jsx51(Text47, { children: " [Enter] Save and continue" }),
26196
- /* @__PURE__ */ jsx51(Text47, { children: " [Esc] Discard changes and continue" }),
26197
- /* @__PURE__ */ jsx51(Text47, { children: " [Tab] Stay in the panel" })
25861
+ showUnsavedWarning && !dialogOpen && /* @__PURE__ */ jsxs42(Box41, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
25862
+ /* @__PURE__ */ jsx49(Text45, { bold: true, color: PALETTE.warning, children: "Unsaved changes" }),
25863
+ /* @__PURE__ */ jsx49(Text45, { children: "You have unsaved edits in the current field editor." }),
25864
+ /* @__PURE__ */ jsx49(Text45, { children: " " }),
25865
+ /* @__PURE__ */ jsx49(Text45, { children: " [Enter] Save and continue" }),
25866
+ /* @__PURE__ */ jsx49(Text45, { children: " [Esc] Discard changes and continue" }),
25867
+ /* @__PURE__ */ jsx49(Text45, { children: " [Tab] Stay in the panel" })
26198
25868
  ] }),
26199
- /* @__PURE__ */ jsx51(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
26200
- removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs44(Box42, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
26201
- /* @__PURE__ */ jsx51(Text47, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
26202
- !removedBannerCollapsed && /* @__PURE__ */ jsxs44(Fragment18, { children: [
26203
- /* @__PURE__ */ jsx51(Text47, { children: " " }),
26204
- removedComponents.map((rc) => /* @__PURE__ */ jsx51(Text47, { children: removedComponentLine(rc) }, rc.id))
25869
+ /* @__PURE__ */ jsx49(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
25870
+ removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs42(Box41, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
25871
+ /* @__PURE__ */ jsx49(Text45, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
25872
+ !removedBannerCollapsed && /* @__PURE__ */ jsxs42(Fragment18, { children: [
25873
+ /* @__PURE__ */ jsx49(Text45, { children: " " }),
25874
+ removedComponents.map((rc) => /* @__PURE__ */ jsx49(Text45, { children: removedComponentLine(rc) }, rc.id))
26205
25875
  ] })
26206
25876
  ] }),
26207
- breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx51(Box42, { paddingX: 1, children: /* @__PURE__ */ jsx51(
26208
- Text47,
25877
+ breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx49(Box41, { paddingX: 1, children: /* @__PURE__ */ jsx49(
25878
+ Text45,
26209
25879
  {
26210
25880
  color: PALETTE.warning,
26211
25881
  children: `[b] ${breakingChanges.length} breaking change${breakingChanges.length === 1 ? "" : "s"}`
@@ -26215,58 +25885,58 @@ function GenerateReviewStepView({
26215
25885
  const row = breakingRows[breakingCursor];
26216
25886
  const comp = row ? breakingChanges.find((b) => b.componentName === row.componentName) : void 0;
26217
25887
  if (!comp) return null;
26218
- return /* @__PURE__ */ jsxs44(Box42, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
26219
- /* @__PURE__ */ jsx51(Text47, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
26220
- comp.impact && /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: ` affects ${comp.impact.affectedExperiences} experience${comp.impact.affectedExperiences === 1 ? "" : "s"}, ${comp.impact.affectedFragments} fragment${comp.impact.affectedFragments === 1 ? "" : "s"}` }),
26221
- comp.changes.length === 0 ? /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: " (no enumerated changes)" }) : comp.changes.map((change, ci) => /* @__PURE__ */ jsx51(Text47, { children: ` \u2022 ${formatBreakingChange(change, comp.current)}` }, `bd-detail-${ci}`)),
26222
- /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: "[D/Esc] close detail" })
25888
+ return /* @__PURE__ */ jsxs42(Box41, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
25889
+ /* @__PURE__ */ jsx49(Text45, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
25890
+ comp.impact && /* @__PURE__ */ jsx49(Text45, { dimColor: true, children: ` affects ${comp.impact.affectedExperiences} experience${comp.impact.affectedExperiences === 1 ? "" : "s"}, ${comp.impact.affectedFragments} fragment${comp.impact.affectedFragments === 1 ? "" : "s"}` }),
25891
+ comp.changes.length === 0 ? /* @__PURE__ */ jsx49(Text45, { dimColor: true, children: " (no enumerated changes)" }) : comp.changes.map((change, ci) => /* @__PURE__ */ jsx49(Text45, { children: ` \u2022 ${formatBreakingChange(change, comp.current)}` }, `bd-detail-${ci}`)),
25892
+ /* @__PURE__ */ jsx49(Text45, { dimColor: true, children: "[D/Esc] close detail" })
26223
25893
  ] });
26224
25894
  })(),
26225
25895
  cyclePanel.isOpen && !dialogOpen && (() => {
26226
25896
  const PANEL_H = 20;
26227
25897
  const lines = [];
26228
25898
  lines.push(
26229
- /* @__PURE__ */ jsx51(Text47, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${slotCycles.length})` }, "cyc-title")
25899
+ /* @__PURE__ */ jsx49(Text45, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${slotCycles.length})` }, "cyc-title")
26230
25900
  );
26231
25901
  lines.push(
26232
- /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: "push will fail until these are resolved" }, "cyc-sub")
25902
+ /* @__PURE__ */ jsx49(Text45, { dimColor: true, children: "push will fail until these are resolved" }, "cyc-sub")
26233
25903
  );
26234
25904
  lines.push(
26235
- /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: "To fix: reject a cycle member, or break the cycle by removing a slot edge." }, "cyc-guide")
25905
+ /* @__PURE__ */ jsx49(Text45, { dimColor: true, children: "To fix: reject a cycle member, or break the cycle by removing a slot edge." }, "cyc-guide")
26236
25906
  );
26237
- lines.push(/* @__PURE__ */ jsx51(Text47, { children: " " }, "cyc-space"));
25907
+ lines.push(/* @__PURE__ */ jsx49(Text45, { children: " " }, "cyc-space"));
26238
25908
  slotCycles.forEach((cycle, idx) => {
26239
25909
  const nodeCount = new Set(cycle.path).size;
26240
25910
  const isCursor = idx === cyclesCursor;
26241
25911
  lines.push(
26242
- /* @__PURE__ */ jsx51(
26243
- Text47,
25912
+ /* @__PURE__ */ jsx49(
25913
+ Text45,
26244
25914
  {
26245
25915
  bold: true,
26246
25916
  inverse: isCursor,
26247
- children: `${isCursor ? figures7.pointer : " "} Cycle ${idx + 1} (${nodeCount} component${nodeCount === 1 ? "" : "s"}):`
25917
+ children: `${isCursor ? figures6.pointer : " "} Cycle ${idx + 1} (${nodeCount} component${nodeCount === 1 ? "" : "s"}):`
26248
25918
  },
26249
25919
  `cyc-h-${idx}`
26250
25920
  )
26251
25921
  );
26252
25922
  lines.push(
26253
- /* @__PURE__ */ jsx51(CyclePathLine, { segments: formatCyclePathSegments(cycle, 16), prefix: " " }, `cyc-p-${idx}`)
25923
+ /* @__PURE__ */ jsx49(CyclePathLine, { segments: formatCyclePathSegments(cycle, 16), prefix: " " }, `cyc-p-${idx}`)
26254
25924
  );
26255
25925
  if (cycle.suggestedBreak) {
26256
25926
  const b = cycle.suggestedBreak;
26257
25927
  lines.push(
26258
- /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: ` Suggested fix: remove '${b.toComponent}' from ${b.fromComponent}.$slots.${b.slotName}.$allowedComponents` }, `cyc-f-${idx}`)
25928
+ /* @__PURE__ */ jsx49(Text45, { dimColor: true, children: ` Suggested fix: remove '${b.toComponent}' from ${b.fromComponent}.$slots.${b.slotName}.$allowedComponents` }, `cyc-f-${idx}`)
26259
25929
  );
26260
25930
  }
26261
- lines.push(/* @__PURE__ */ jsx51(Text47, { children: " " }, `cyc-s-${idx}`));
25931
+ lines.push(/* @__PURE__ */ jsx49(Text45, { children: " " }, `cyc-s-${idx}`));
26262
25932
  });
26263
25933
  const visible = lines.slice(cyclePanelScroll, cyclePanelScroll + PANEL_H);
26264
- return /* @__PURE__ */ jsxs44(Box42, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
25934
+ return /* @__PURE__ */ jsxs42(Box41, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
26265
25935
  visible,
26266
- /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: "[\u2191\u2193/j/k] move [Enter] jump [x] break cycle [c/q/Esc] close" })
25936
+ /* @__PURE__ */ jsx49(Text45, { dimColor: true, children: "[\u2191\u2193/j/k] move [Enter] jump [x] break cycle [c/q/Esc] close" })
26267
25937
  ] });
26268
25938
  })(),
26269
- !dialogOpen && /* @__PURE__ */ jsx51(
25939
+ !dialogOpen && /* @__PURE__ */ jsx49(
26270
25940
  LivePreviewSummary,
26271
25941
  {
26272
25942
  enabled: livePreview,
@@ -26285,17 +25955,17 @@ function GenerateReviewStepView({
26285
25955
  const participantSet = cycleView.structural;
26286
25956
  const members = stillRejected.filter((n) => participantSet.has(n)).sort();
26287
25957
  const ancestors = stillRejected.filter((n) => !participantSet.has(n)).sort();
26288
- return /* @__PURE__ */ jsxs44(Box42, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
26289
- /* @__PURE__ */ jsx51(Text47, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
26290
- members.length > 0 && /* @__PURE__ */ jsx51(Text47, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
26291
- ancestors.length > 0 && /* @__PURE__ */ jsx51(Text47, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
26292
- /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: undoSnapshot ? " [Ctrl+Z] undo \xB7 [r]/[a] manually toggle \xB7 [F] continue" : " [r]/[a] manually toggle \xB7 [F] continue" })
25958
+ return /* @__PURE__ */ jsxs42(Box41, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
25959
+ /* @__PURE__ */ jsx49(Text45, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
25960
+ members.length > 0 && /* @__PURE__ */ jsx49(Text45, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
25961
+ ancestors.length > 0 && /* @__PURE__ */ jsx49(Text45, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
25962
+ /* @__PURE__ */ jsx49(Text45, { dimColor: true, children: undoSnapshot ? " [Ctrl+Z] undo \xB7 [r]/[a] manually toggle \xB7 [F] continue" : " [r]/[a] manually toggle \xB7 [F] continue" })
26293
25963
  ] });
26294
25964
  })(),
26295
- /* @__PURE__ */ jsx51(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
26296
- /* @__PURE__ */ jsx51(ReviewFinalizeError, { message: finalizeError, hidden: dialogOpen }),
26297
- !dialogOpen && /* @__PURE__ */ jsxs44(Box42, { children: [
26298
- breakingPanel.isOpen ? /* @__PURE__ */ jsx51(
25965
+ /* @__PURE__ */ jsx49(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
25966
+ /* @__PURE__ */ jsx49(ReviewFinalizeError, { message: finalizeError, hidden: dialogOpen }),
25967
+ !dialogOpen && /* @__PURE__ */ jsxs42(Box41, { children: [
25968
+ breakingPanel.isOpen ? /* @__PURE__ */ jsx49(
26299
25969
  GotoBanner,
26300
25970
  {
26301
25971
  title: "Breaking changes",
@@ -26308,17 +25978,7 @@ function GenerateReviewStepView({
26308
25978
  width: sidebarWidth,
26309
25979
  footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [D] detail \xB7 [Esc] close"
26310
25980
  }
26311
- ) : lineagePanel.isOpen && focusedComponentKey ? /* @__PURE__ */ jsx51(
26312
- LineagePanel,
26313
- {
26314
- focusedComponentKey,
26315
- entries: lineageEntries,
26316
- cursor: lineageCursor,
26317
- jumpables: lineageJumpables,
26318
- maxRows: panelMaxRows,
26319
- width: sidebarWidth
26320
- }
26321
- ) : /* @__PURE__ */ jsx51(
25981
+ ) : /* @__PURE__ */ jsx49(
26322
25982
  GroupedSidebar,
26323
25983
  {
26324
25984
  items: groupedItems,
@@ -26356,7 +26016,7 @@ function GenerateReviewStepView({
26356
26016
  graph: sidebarGraph
26357
26017
  }
26358
26018
  ),
26359
- selected ? /* @__PURE__ */ jsx51(
26019
+ selected ? /* @__PURE__ */ jsx49(
26360
26020
  ReviewComponentPanel,
26361
26021
  {
26362
26022
  selectedKey: selected.key,
@@ -26383,13 +26043,13 @@ function GenerateReviewStepView({
26383
26043
  livePreview: livePreviewHook,
26384
26044
  livePreviewSpinner
26385
26045
  }
26386
- ) : /* @__PURE__ */ jsx51(ReviewNoSelection, {})
26046
+ ) : /* @__PURE__ */ jsx49(ReviewNoSelection, {})
26387
26047
  ] }),
26388
26048
  breakPanel.isOpen && !breakOverlayFullScreen && !dialogOpen && renderBreakOverlay(),
26389
- !dialogOpen && slotCycles.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs44(Box42, { flexDirection: "column", children: [
26390
- /* @__PURE__ */ jsx51(Text47, { color: PALETTE.warning, children: `\u26A0 ${slotCycles.length} slot dependency cycle${slotCycles.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
26049
+ !dialogOpen && slotCycles.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs42(Box41, { flexDirection: "column", children: [
26050
+ /* @__PURE__ */ jsx49(Text45, { color: PALETTE.warning, children: `\u26A0 ${slotCycles.length} slot dependency cycle${slotCycles.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
26391
26051
  slotCycles.slice(0, 3).map((cycle, idx) => {
26392
- return /* @__PURE__ */ jsx51(
26052
+ return /* @__PURE__ */ jsx49(
26393
26053
  CyclePathLine,
26394
26054
  {
26395
26055
  segments: formatCyclePathSegments(cycle),
@@ -26400,10 +26060,10 @@ function GenerateReviewStepView({
26400
26060
  `cyc-banner-${idx}`
26401
26061
  );
26402
26062
  }),
26403
- slotCycles.length > 3 && /* @__PURE__ */ jsx51(Text47, { color: PALETTE.warning, children: ` \u2026${slotCycles.length - 3} more` }),
26404
- /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: " press [c] for detail" })
26063
+ slotCycles.length > 3 && /* @__PURE__ */ jsx49(Text45, { color: PALETTE.warning, children: ` \u2026${slotCycles.length - 3} more` }),
26064
+ /* @__PURE__ */ jsx49(Text45, { dimColor: true, children: " press [c] for detail" })
26405
26065
  ] }),
26406
- /* @__PURE__ */ jsx51(
26066
+ /* @__PURE__ */ jsx49(
26407
26067
  SearchMatchSummary,
26408
26068
  {
26409
26069
  open: searchOpen,
@@ -26414,18 +26074,17 @@ function GenerateReviewStepView({
26414
26074
  hidden: dialogOpen
26415
26075
  }
26416
26076
  ),
26417
- !dialogOpen && sidebarFocused && /* @__PURE__ */ jsx51(Box42, { columnGap: 2, flexWrap: "wrap", children: reviewEditor.panelOpen === "token-review" ? /* @__PURE__ */ jsxs44(Fragment18, { children: [
26077
+ !dialogOpen && sidebarFocused && /* @__PURE__ */ jsx49(Box41, { columnGap: 2, flexWrap: "wrap", children: reviewEditor.panelOpen === "token-review" ? /* @__PURE__ */ jsxs42(Fragment18, { children: [
26418
26078
  legendEntry("[\u2191/\u2193]", "move"),
26419
26079
  legendEntry("[Enter]", "edit allowed"),
26420
26080
  legendEntry("[Esc]", "close")
26421
- ] }) : /* @__PURE__ */ jsxs44(Fragment18, { children: [
26081
+ ] }) : /* @__PURE__ */ jsxs42(Fragment18, { children: [
26422
26082
  legendEntry("[j/k]", "move"),
26423
26083
  legendEntry("[a]", "accept"),
26424
26084
  legendEntry("[r]", "reject"),
26425
26085
  legendEntry("[A]", "accept all"),
26426
26086
  legendEntry("[F]", "finalize"),
26427
26087
  legendEntry("[L]", "flat", columnOneView === "flat"),
26428
- legendEntry("[l]", "lineage", lineagePanel.isOpen),
26429
26088
  legendEntry("[i]", "focus lineage", jumpFilterTarget !== null),
26430
26089
  legendEntry("[w]", "only breaking", activeFilters.has("broken")),
26431
26090
  slotCycles.length > 0 && legendEntry("[o]", "only cycles", activeFilters.has("cycles")),
@@ -26449,17 +26108,7 @@ function GenerateReviewStepView({
26449
26108
  legendEntry("[Ctrl+R]", "reload"),
26450
26109
  legendEntry("[?]", "help"),
26451
26110
  legendEntry("[q]", "quit")
26452
- ] }) }),
26453
- !dialogOpen && /* @__PURE__ */ jsx51(
26454
- ReviewStatusBar,
26455
- {
26456
- entries: components,
26457
- onApproveAll: () => {
26458
- setComponents((prev) => prev.map((c2) => c2.status === "needs-review" ? { ...c2, status: "accepted" } : c2));
26459
- },
26460
- onFinalize: () => setShowFinalize(true)
26461
- }
26462
- )
26111
+ ] }) })
26463
26112
  ] });
26464
26113
  }
26465
26114
  var PANEL_HEIGHT, HELP_SECTIONS2;
@@ -26482,10 +26131,8 @@ var init_GenerateReviewStep = __esm({
26482
26131
  init_search_neighborhood();
26483
26132
  init_sidebar_width();
26484
26133
  init_selection_cascade();
26485
- init_useLineage();
26486
26134
  init_cycle_auto_reject();
26487
26135
  init_useOverlayPanel();
26488
- init_LineagePanel();
26489
26136
  init_GotoBanner();
26490
26137
  init_lineage_layout();
26491
26138
  init_HelpOverlay();
@@ -26498,7 +26145,6 @@ var init_GenerateReviewStep = __esm({
26498
26145
  init_sidebar_help();
26499
26146
  init_sidebar_input();
26500
26147
  init_sidebar_navigation();
26501
- init_lineage_input();
26502
26148
  init_sidebar_search_state();
26503
26149
  init_SearchMatchSummary();
26504
26150
  init_ReviewComponentPanel();
@@ -26827,7 +26473,7 @@ __export(WizardApp_exports, {
26827
26473
  shouldRunMapTokens: () => shouldRunMapTokens
26828
26474
  });
26829
26475
  import { useEffect as useEffect14, useRef as useRef10, useState as useState23 } from "react";
26830
- import { Box as Box43, Text as Text48 } from "ink";
26476
+ import { Box as Box42, Text as Text46 } from "ink";
26831
26477
  import { join as join20, resolve as resolve17 } from "node:path";
26832
26478
  import { appendFileSync as appendFileSync2, writeFileSync } from "node:fs";
26833
26479
  import { access as access7, stat as stat5, writeFile as writeFile6 } from "node:fs/promises";
@@ -26835,7 +26481,7 @@ import { tmpdir } from "node:os";
26835
26481
  import { execFile as execFile2, spawn as spawn3 } from "node:child_process";
26836
26482
  import { mkdir as mkdir5 } from "node:fs/promises";
26837
26483
  import { buildCDF as buildCDF3, validateCDF as validateCDF3, validateSlotReferences as validateSlotReferences2 } from "@contentful/experience-design-system-types";
26838
- import { jsx as jsx52, jsxs as jsxs45 } from "react/jsx-runtime";
26484
+ import { jsx as jsx50, jsxs as jsxs43 } from "react/jsx-runtime";
26839
26485
  function buildGenerateComponentsArgs(opts) {
26840
26486
  const args = ["__generate", "components", "--agent", opts.agent, "--session", opts.sessionId];
26841
26487
  if (opts.tokensPath) args.push("--tokens", opts.tokensPath);
@@ -28241,7 +27887,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28241
27887
  const stepContent = (() => {
28242
27888
  switch (state.step) {
28243
27889
  case "welcome":
28244
- return /* @__PURE__ */ jsx52(
27890
+ return /* @__PURE__ */ jsx50(
28245
27891
  WelcomeStep,
28246
27892
  {
28247
27893
  onContinue: (path) => {
@@ -28253,7 +27899,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28253
27899
  }
28254
27900
  );
28255
27901
  case "token-input":
28256
- return /* @__PURE__ */ jsx52(
27902
+ return /* @__PURE__ */ jsx50(
28257
27903
  TokenInputStep,
28258
27904
  {
28259
27905
  onConfirm: (rawTokensPath) => {
@@ -28264,7 +27910,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28264
27910
  }
28265
27911
  );
28266
27912
  case "token-reuse-gate":
28267
- return /* @__PURE__ */ jsx52(
27913
+ return /* @__PURE__ */ jsx50(
28268
27914
  GateStep,
28269
27915
  {
28270
27916
  successMessage: "Existing tokens.json found",
@@ -28292,7 +27938,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28292
27938
  }
28293
27939
  );
28294
27940
  case "checking-claude-auth":
28295
- return /* @__PURE__ */ jsx52(
27941
+ return /* @__PURE__ */ jsx50(
28296
27942
  RunningStep,
28297
27943
  {
28298
27944
  stepNumber: state.authCheckStepNumber,
@@ -28302,7 +27948,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28302
27948
  }
28303
27949
  );
28304
27950
  case "path-validation":
28305
- return /* @__PURE__ */ jsx52(
27951
+ return /* @__PURE__ */ jsx50(
28306
27952
  PathValidationStep,
28307
27953
  {
28308
27954
  projectPath: state.projectPath,
@@ -28335,7 +27981,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28335
27981
  }
28336
27982
  const selectionDetail = state.selectionAgentStatus === "complete" ? "Selection agent complete" : `Filtering component selection via ${state.agent}...`;
28337
27983
  const compositionDetail = state.compositionPhase === "cache-hit" ? "Composition mapping (cached)" : compositionComplete ? "Composition mapping complete" : state.compositionPhase?.startsWith("agent:") ? `Mapping composition via ${state.compositionPhase.slice("agent:".length)}...` : `Mapping composition via ${state.agent}...`;
28338
- return /* @__PURE__ */ jsx52(
27984
+ return /* @__PURE__ */ jsx50(
28339
27985
  RunningStep,
28340
27986
  {
28341
27987
  stepNumber: hasTokenStage ? 2 : 1,
@@ -28357,7 +28003,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28357
28003
  }
28358
28004
  case "scope-gate": {
28359
28005
  if (!state.extractSessionId) {
28360
- return /* @__PURE__ */ jsx52(Box43, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx52(Text48, { color: PALETTE.error, children: "Error: extract session ID missing \u2014 please re-run." }) });
28006
+ return /* @__PURE__ */ jsx50(Box42, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx50(Text46, { color: PALETTE.error, children: "Error: extract session ID missing \u2014 please re-run." }) });
28361
28007
  }
28362
28008
  const sessionId2 = state.extractSessionId;
28363
28009
  const db = openPipelineDb();
@@ -28367,7 +28013,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28367
28013
  } finally {
28368
28014
  db.close();
28369
28015
  }
28370
- return /* @__PURE__ */ jsx52(
28016
+ return /* @__PURE__ */ jsx50(
28371
28017
  ScopeGateStep,
28372
28018
  {
28373
28019
  components,
@@ -28408,7 +28054,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28408
28054
  const displayAgent = state.agent.charAt(0).toUpperCase() + state.agent.slice(1);
28409
28055
  const progressDetail = p ? `[${p.done}/${p.total}] ${p.current}` : `Starting up ${displayAgent}...`;
28410
28056
  const mapTokensDetail = state.mapTokensStatus === "running" ? skipMapTokens ? "Resolving token defaults..." : `Mapping token restrictions via ${displayAgent}...` : state.mapTokensStatus === "complete" ? skipMapTokens ? "Token defaults ready" : "Token restrictions ready" : void 0;
28411
- return /* @__PURE__ */ jsx52(
28057
+ return /* @__PURE__ */ jsx50(
28412
28058
  RunningStep,
28413
28059
  {
28414
28060
  stepNumber: stepNum,
@@ -28423,7 +28069,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28423
28069
  }
28424
28070
  case "mapping-tokens": {
28425
28071
  const stepNum = hasTokenStage ? 5 : 4;
28426
- return /* @__PURE__ */ jsx52(
28072
+ return /* @__PURE__ */ jsx50(
28427
28073
  RunningStep,
28428
28074
  {
28429
28075
  stepNumber: stepNum,
@@ -28435,7 +28081,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28435
28081
  );
28436
28082
  }
28437
28083
  case "final-review": {
28438
- return /* @__PURE__ */ jsx52(
28084
+ return /* @__PURE__ */ jsx50(
28439
28085
  GenerateReviewStep,
28440
28086
  {
28441
28087
  extractSessionId: state.extractSessionId,
@@ -28491,7 +28137,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28491
28137
  );
28492
28138
  }
28493
28139
  case "credentials":
28494
- return /* @__PURE__ */ jsx52(
28140
+ return /* @__PURE__ */ jsx50(
28495
28141
  CredentialsStep,
28496
28142
  {
28497
28143
  initialSpaceId: state.spaceId,
@@ -28526,7 +28172,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28526
28172
  }
28527
28173
  );
28528
28174
  case "previewing":
28529
- return /* @__PURE__ */ jsx52(
28175
+ return /* @__PURE__ */ jsx50(
28530
28176
  RunningStep,
28531
28177
  {
28532
28178
  stepNumber: totalSteps,
@@ -28537,7 +28183,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28537
28183
  );
28538
28184
  case "preview-gate": {
28539
28185
  const editableComponentCount = extractComponents(state.cdf).length;
28540
- return /* @__PURE__ */ jsx52(
28186
+ return /* @__PURE__ */ jsx50(
28541
28187
  WizardPreviewStep,
28542
28188
  {
28543
28189
  preview: state.serverPreview,
@@ -28562,9 +28208,9 @@ If using a custom host configuration, make sure the space exists on that host.`
28562
28208
  );
28563
28209
  }
28564
28210
  case "pushing":
28565
- return /* @__PURE__ */ jsx52(PushingStep, { stepNumber: totalSteps, totalSteps, progress: state.pushProgress });
28211
+ return /* @__PURE__ */ jsx50(PushingStep, { stepNumber: totalSteps, totalSteps, progress: state.pushProgress });
28566
28212
  case "path-prompt":
28567
- return /* @__PURE__ */ jsx52(
28213
+ return /* @__PURE__ */ jsx50(
28568
28214
  PathPrompt,
28569
28215
  {
28570
28216
  defaultPath: state.outDir,
@@ -28585,7 +28231,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28585
28231
  }
28586
28232
  );
28587
28233
  case "printing":
28588
- return /* @__PURE__ */ jsx52(
28234
+ return /* @__PURE__ */ jsx50(
28589
28235
  RunningStep,
28590
28236
  {
28591
28237
  stepNumber: totalSteps,
@@ -28596,7 +28242,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28596
28242
  );
28597
28243
  case "print-gate": {
28598
28244
  const teaser = buildRunTeaserLine(state.lastRunId);
28599
- return /* @__PURE__ */ jsx52(
28245
+ return /* @__PURE__ */ jsx50(
28600
28246
  GateStep,
28601
28247
  {
28602
28248
  successMessage: "Files saved",
@@ -28614,7 +28260,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28614
28260
  case "done": {
28615
28261
  const totalFailed = state.pushResult.componentTypes.failed + state.pushResult.designTokens.failed;
28616
28262
  const teaser = buildRunTeaserLine(state.lastRunId);
28617
- return /* @__PURE__ */ jsx52(
28263
+ return /* @__PURE__ */ jsx50(
28618
28264
  DoneStep,
28619
28265
  {
28620
28266
  componentTypes: state.pushResult.componentTypes,
@@ -28630,7 +28276,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28630
28276
  );
28631
28277
  }
28632
28278
  case "preview-validation-error": {
28633
- return /* @__PURE__ */ jsx52(
28279
+ return /* @__PURE__ */ jsx50(
28634
28280
  PreviewValidationErrorStep,
28635
28281
  {
28636
28282
  errors: state.previewValidationErrors,
@@ -28646,7 +28292,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28646
28292
  );
28647
28293
  }
28648
28294
  case "error":
28649
- return /* @__PURE__ */ jsx52(
28295
+ return /* @__PURE__ */ jsx50(
28650
28296
  ErrorStep,
28651
28297
  {
28652
28298
  stepName: state.errorStep,
@@ -28668,9 +28314,9 @@ If using a custom host configuration, make sure the space exists on that host.`
28668
28314
  return null;
28669
28315
  }
28670
28316
  })();
28671
- return /* @__PURE__ */ jsxs45(Box43, { flexDirection: "column", width: terminalWidth, children: [
28672
- /* @__PURE__ */ jsx52(TopBar, { subcommand: "import", hints }),
28673
- /* @__PURE__ */ jsx52(CustomPromptBanner, { generatePromptPath }),
28317
+ return /* @__PURE__ */ jsxs43(Box42, { flexDirection: "column", width: terminalWidth, children: [
28318
+ /* @__PURE__ */ jsx50(TopBar, { subcommand: "import", hints }),
28319
+ /* @__PURE__ */ jsx50(CustomPromptBanner, { generatePromptPath }),
28674
28320
  stepContent
28675
28321
  ] });
28676
28322
  }
@@ -29184,8 +28830,8 @@ var init_command7 = __esm({
29184
28830
 
29185
28831
  // packages/experience-design-system-cli/src/setup/SetupStepper.tsx
29186
28832
  import React17 from "react";
29187
- import { Box as Box44, Text as Text49 } from "ink";
29188
- import { jsx as jsx53, jsxs as jsxs46 } from "react/jsx-runtime";
28833
+ import { Box as Box43, Text as Text47 } from "ink";
28834
+ import { jsx as jsx51, jsxs as jsxs44 } from "react/jsx-runtime";
29189
28835
  function stepLabel(step, title, state, wide) {
29190
28836
  if (state === "complete") return wide ? `\u2713 ${title}` : "\u2713";
29191
28837
  if (state === "active") return wide ? `[${step} ${title}]` : `[${step}]`;
@@ -29198,12 +28844,12 @@ function stepColor(state) {
29198
28844
  }
29199
28845
  function SetupStepper({ activeStep, columns }) {
29200
28846
  const wide = columns !== void 0 && columns >= WIDE_MIN_COLUMNS;
29201
- return /* @__PURE__ */ jsx53(Box44, { columnGap: wide ? 0 : COMPACT_GAP, children: SETUP_SCREENS.map((title, index) => {
28847
+ return /* @__PURE__ */ jsx51(Box43, { columnGap: wide ? 0 : COMPACT_GAP, children: SETUP_SCREENS.map((title, index) => {
29202
28848
  const step = index + 1;
29203
28849
  const state = step < activeStep ? "complete" : step === activeStep ? "active" : "pending";
29204
- return /* @__PURE__ */ jsxs46(React17.Fragment, { children: [
29205
- wide && index > 0 && /* @__PURE__ */ jsx53(Text49, { dimColor: true, children: WIDE_SEPARATOR }),
29206
- /* @__PURE__ */ jsx53(Text49, { bold: state === "active", dimColor: state === "pending", color: stepColor(state), children: stepLabel(step, title, state, wide) })
28850
+ return /* @__PURE__ */ jsxs44(React17.Fragment, { children: [
28851
+ wide && index > 0 && /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: WIDE_SEPARATOR }),
28852
+ /* @__PURE__ */ jsx51(Text47, { bold: state === "active", dimColor: state === "pending", color: stepColor(state), children: stepLabel(step, title, state, wide) })
29207
28853
  ] }, step);
29208
28854
  }) });
29209
28855
  }
@@ -29222,33 +28868,33 @@ var init_SetupStepper = __esm({
29222
28868
  });
29223
28869
 
29224
28870
  // packages/experience-design-system-cli/src/setup/steps/StepLayout.tsx
29225
- import { Box as Box45, Text as Text50 } from "ink";
29226
- import { jsx as jsx54, jsxs as jsxs47 } from "react/jsx-runtime";
28871
+ import { Box as Box44, Text as Text48 } from "ink";
28872
+ import { jsx as jsx52, jsxs as jsxs45 } from "react/jsx-runtime";
29227
28873
  function StepLayout({ helpText, children, prompt }) {
29228
- return /* @__PURE__ */ jsxs47(Box45, { flexDirection: "column", children: [
28874
+ return /* @__PURE__ */ jsxs45(Box44, { flexDirection: "column", children: [
29229
28875
  children,
29230
- prompt && /* @__PURE__ */ jsx54(Box45, { marginTop: 1, children: prompt }),
29231
- helpText && /* @__PURE__ */ jsx54(Box45, { marginTop: 1, children: /* @__PURE__ */ jsx54(Text50, { dimColor: true, children: helpText }) })
28876
+ prompt && /* @__PURE__ */ jsx52(Box44, { marginTop: 1, children: prompt }),
28877
+ helpText && /* @__PURE__ */ jsx52(Box44, { marginTop: 1, children: /* @__PURE__ */ jsx52(Text48, { dimColor: true, children: helpText }) })
29232
28878
  ] });
29233
28879
  }
29234
28880
  function StepSuccess({ children }) {
29235
- return /* @__PURE__ */ jsxs47(Text50, { color: PALETTE.success, children: [
28881
+ return /* @__PURE__ */ jsxs45(Text48, { color: PALETTE.success, children: [
29236
28882
  "\u2713 ",
29237
28883
  children
29238
28884
  ] });
29239
28885
  }
29240
28886
  function StepWarning({ children }) {
29241
- return /* @__PURE__ */ jsxs47(Text50, { color: PALETTE.warning, children: [
28887
+ return /* @__PURE__ */ jsxs45(Text48, { color: PALETTE.warning, children: [
29242
28888
  "\u26A0 ",
29243
28889
  children
29244
28890
  ] });
29245
28891
  }
29246
28892
  function StepValue({ label, value }) {
29247
28893
  const color = value ? void 0 : PALETTE.warning;
29248
- return /* @__PURE__ */ jsxs47(Box45, { children: [
29249
- /* @__PURE__ */ jsx54(Box45, { width: 2, children: /* @__PURE__ */ jsx54(Text50, { color, children: value ? "" : "\u26A0" }) }),
29250
- /* @__PURE__ */ jsx54(Box45, { width: 20, flexShrink: 0, children: /* @__PURE__ */ jsx54(Text50, { color, children: label }) }),
29251
- /* @__PURE__ */ jsx54(Text50, { color, children: value || "(not set)" })
28894
+ return /* @__PURE__ */ jsxs45(Box44, { children: [
28895
+ /* @__PURE__ */ jsx52(Box44, { width: 2, children: /* @__PURE__ */ jsx52(Text48, { color, children: value ? "" : "\u26A0" }) }),
28896
+ /* @__PURE__ */ jsx52(Box44, { width: 20, flexShrink: 0, children: /* @__PURE__ */ jsx52(Text48, { color, children: label }) }),
28897
+ /* @__PURE__ */ jsx52(Text48, { color, children: value || "(not set)" })
29252
28898
  ] });
29253
28899
  }
29254
28900
  var init_StepLayout = __esm({
@@ -29260,9 +28906,9 @@ var init_StepLayout = __esm({
29260
28906
 
29261
28907
  // packages/experience-design-system-cli/src/setup/steps/CodingAgentScreen.tsx
29262
28908
  import { useEffect as useEffect15, useRef as useRef11, useState as useState24 } from "react";
29263
- import { Box as Box46, Text as Text51 } from "ink";
28909
+ import { Box as Box45, Text as Text49 } from "ink";
29264
28910
  import { Select, TextInput } from "@inkjs/ui";
29265
- import { jsx as jsx55, jsxs as jsxs48 } from "react/jsx-runtime";
28911
+ import { jsx as jsx53, jsxs as jsxs46 } from "react/jsx-runtime";
29266
28912
  async function detectAgents(exists = binaryExists) {
29267
28913
  const found = await Promise.all(AGENT_DEFS.map(async (agent) => await exists(agent.binary) ? agent : void 0));
29268
28914
  return found.filter((agent) => agent !== void 0);
@@ -29295,7 +28941,7 @@ function CodingAgentScreen({ onDone, deps }) {
29295
28941
  const found = await detectAgents(exists);
29296
28942
  if (found.length === 1) {
29297
28943
  const only = found[0];
29298
- setNotes([/* @__PURE__ */ jsx55(StepSuccess, { children: `${only.name} (${only.binary}) found` }, "found")]);
28944
+ setNotes([/* @__PURE__ */ jsx53(StepSuccess, { children: `${only.name} (${only.binary}) found` }, "found")]);
29299
28945
  afterSelection(only);
29300
28946
  return;
29301
28947
  }
@@ -29303,7 +28949,7 @@ function CodingAgentScreen({ onDone, deps }) {
29303
28949
  setPhase({ kind: "choose", found });
29304
28950
  return;
29305
28951
  }
29306
- setNotes([/* @__PURE__ */ jsx55(StepWarning, { children: "No coding agent found on PATH" }, "none")]);
28952
+ setNotes([/* @__PURE__ */ jsx53(StepWarning, { children: "No coding agent found on PATH" }, "none")]);
29307
28953
  setPhase({ kind: "install-choice" });
29308
28954
  })();
29309
28955
  }, []);
@@ -29315,12 +28961,12 @@ function CodingAgentScreen({ onDone, deps }) {
29315
28961
  onDone("failed");
29316
28962
  return;
29317
28963
  }
29318
- setNotes((current) => [...current, /* @__PURE__ */ jsx55(StepSuccess, { children: `${agent.name} installed` }, "installed")]);
28964
+ setNotes((current) => [...current, /* @__PURE__ */ jsx53(StepSuccess, { children: `${agent.name} installed` }, "installed")]);
29319
28965
  afterSelection(agent);
29320
28966
  };
29321
- const chooser = (question, options, describe, onPick) => /* @__PURE__ */ jsxs48(Box46, { flexDirection: "column", children: [
29322
- /* @__PURE__ */ jsx55(Text51, { children: question }),
29323
- /* @__PURE__ */ jsx55(Box46, { marginTop: 1, children: /* @__PURE__ */ jsx55(
28967
+ const chooser = (question, options, describe, onPick) => /* @__PURE__ */ jsxs46(Box45, { flexDirection: "column", children: [
28968
+ /* @__PURE__ */ jsx53(Text49, { children: question }),
28969
+ /* @__PURE__ */ jsx53(Box45, { marginTop: 1, children: /* @__PURE__ */ jsx53(
29324
28970
  Select,
29325
28971
  {
29326
28972
  options: [
@@ -29332,7 +28978,7 @@ function CodingAgentScreen({ onDone, deps }) {
29332
28978
  ) })
29333
28979
  ] });
29334
28980
  if (phase.kind === "choose") {
29335
- return /* @__PURE__ */ jsx55(
28981
+ return /* @__PURE__ */ jsx53(
29336
28982
  StepLayout,
29337
28983
  {
29338
28984
  helpText: AGENT_HELP,
@@ -29347,7 +28993,7 @@ function CodingAgentScreen({ onDone, deps }) {
29347
28993
  );
29348
28994
  }
29349
28995
  if (phase.kind === "install-choice") {
29350
- return /* @__PURE__ */ jsx55(
28996
+ return /* @__PURE__ */ jsx53(
29351
28997
  StepLayout,
29352
28998
  {
29353
28999
  helpText: AGENT_HELP,
@@ -29362,13 +29008,13 @@ function CodingAgentScreen({ onDone, deps }) {
29362
29008
  );
29363
29009
  }
29364
29010
  if (phase.kind === "model") {
29365
- return /* @__PURE__ */ jsx55(
29011
+ return /* @__PURE__ */ jsx53(
29366
29012
  StepLayout,
29367
29013
  {
29368
29014
  helpText: AGENT_HELP,
29369
- prompt: /* @__PURE__ */ jsxs48(Box46, { children: [
29370
- /* @__PURE__ */ jsx55(Text51, { children: "Model name (optional - press Enter for Codex default): " }),
29371
- /* @__PURE__ */ jsx55(
29015
+ prompt: /* @__PURE__ */ jsxs46(Box45, { children: [
29016
+ /* @__PURE__ */ jsx53(Text49, { children: "Model name (optional - press Enter for Codex default): " }),
29017
+ /* @__PURE__ */ jsx53(
29372
29018
  TextInput,
29373
29019
  {
29374
29020
  onSubmit: (value) => void save(phase.agent.binary, value.trim() || void 0)
@@ -29378,19 +29024,19 @@ function CodingAgentScreen({ onDone, deps }) {
29378
29024
  ] }),
29379
29025
  children: [
29380
29026
  ...notes,
29381
- /* @__PURE__ */ jsx55(StepWarning, { children: "No OPENAI_API_KEY \u2014 using ChatGPT account authentication." }, "no-key"),
29382
- /* @__PURE__ */ jsx55(Text51, { dimColor: true, children: "Tip: run codex then type /model to browse all available models." }, "tip")
29027
+ /* @__PURE__ */ jsx53(StepWarning, { children: "No OPENAI_API_KEY \u2014 using ChatGPT account authentication." }, "no-key"),
29028
+ /* @__PURE__ */ jsx53(Text49, { dimColor: true, children: "Tip: run codex then type /model to browse all available models." }, "tip")
29383
29029
  ]
29384
29030
  }
29385
29031
  );
29386
29032
  }
29387
29033
  if (phase.kind === "installing") {
29388
- return /* @__PURE__ */ jsx55(StepLayout, { helpText: AGENT_HELP, children: [...notes, /* @__PURE__ */ jsx55(Text51, { children: `Installing ${phase.agent.name}\u2026` }, "installing")] });
29034
+ return /* @__PURE__ */ jsx53(StepLayout, { helpText: AGENT_HELP, children: [...notes, /* @__PURE__ */ jsx53(Text49, { children: `Installing ${phase.agent.name}\u2026` }, "installing")] });
29389
29035
  }
29390
29036
  if (phase.kind === "failed") {
29391
- return /* @__PURE__ */ jsx55(StepLayout, { helpText: AGENT_HELP, children: [...notes, /* @__PURE__ */ jsx55(Text51, { children: `\u2717 ${phase.message}` }, "failed")] });
29037
+ return /* @__PURE__ */ jsx53(StepLayout, { helpText: AGENT_HELP, children: [...notes, /* @__PURE__ */ jsx53(Text49, { children: `\u2717 ${phase.message}` }, "failed")] });
29392
29038
  }
29393
- return /* @__PURE__ */ jsx55(Text51, { dimColor: true, children: "Looking for a coding agent\u2026" });
29039
+ return /* @__PURE__ */ jsx53(Text49, { dimColor: true, children: "Looking for a coding agent\u2026" });
29394
29040
  }
29395
29041
  var AGENT_HELP, SKIP_VALUE;
29396
29042
  var init_CodingAgentScreen = __esm({
@@ -29407,9 +29053,9 @@ var init_CodingAgentScreen = __esm({
29407
29053
 
29408
29054
  // packages/experience-design-system-cli/src/setup/steps/ContentfulCredentialsScreen.tsx
29409
29055
  import { useEffect as useEffect16, useRef as useRef12, useState as useState25 } from "react";
29410
- import { Box as Box47, Text as Text52 } from "ink";
29056
+ import { Box as Box46, Text as Text50 } from "ink";
29411
29057
  import { PasswordInput, Select as Select2, TextInput as TextInput2 } from "@inkjs/ui";
29412
- import { Fragment as Fragment19, jsx as jsx56, jsxs as jsxs49 } from "react/jsx-runtime";
29058
+ import { Fragment as Fragment19, jsx as jsx54, jsxs as jsxs47 } from "react/jsx-runtime";
29413
29059
  function envShadowingWarning(env) {
29414
29060
  const set = ENV_KEYS.filter((key) => env[key]);
29415
29061
  if (set.length === 0) return null;
@@ -29426,21 +29072,21 @@ function ContentfulCredentialsScreen({ onDone }) {
29426
29072
  useEffect16(() => {
29427
29073
  void readExperiencesCredentials().then(setStored);
29428
29074
  }, []);
29429
- if (!stored) return /* @__PURE__ */ jsx56(Text52, { dimColor: true, children: "Reading saved credentials\u2026" });
29075
+ if (!stored) return /* @__PURE__ */ jsx54(Text50, { dimColor: true, children: "Reading saved credentials\u2026" });
29430
29076
  const currentHost = stored.host ?? DEFAULT_CONFIGURED_HOST;
29431
29077
  const hasAny = Boolean(stored.spaceId || stored.environmentId || stored.cmaToken);
29432
29078
  const allSet = Boolean(stored.spaceId && stored.environmentId && stored.cmaToken);
29433
29079
  const shadowing = envShadowingWarning(process.env);
29434
- const summary = /* @__PURE__ */ jsxs49(Fragment19, { children: [
29435
- shadowing && /* @__PURE__ */ jsx56(StepWarning, { children: shadowing }),
29436
- hasAny && /* @__PURE__ */ jsxs49(Box47, { flexDirection: "column", marginTop: shadowing ? 1 : 0, children: [
29437
- /* @__PURE__ */ jsx56(Text52, { children: "Current values:" }),
29438
- /* @__PURE__ */ jsx56(StepValue, { label: "Space ID", value: stored.spaceId }),
29439
- /* @__PURE__ */ jsx56(StepValue, { label: "Environment ID", value: stored.environmentId }),
29440
- /* @__PURE__ */ jsx56(StepValue, { label: "CMA Token", value: stored.cmaToken ? maskToken(stored.cmaToken) : void 0 }),
29441
- /* @__PURE__ */ jsx56(StepValue, { label: "API Host", value: currentHost })
29080
+ const summary = /* @__PURE__ */ jsxs47(Fragment19, { children: [
29081
+ shadowing && /* @__PURE__ */ jsx54(StepWarning, { children: shadowing }),
29082
+ hasAny && /* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", marginTop: shadowing ? 1 : 0, children: [
29083
+ /* @__PURE__ */ jsx54(Text50, { children: "Current values:" }),
29084
+ /* @__PURE__ */ jsx54(StepValue, { label: "Space ID", value: stored.spaceId }),
29085
+ /* @__PURE__ */ jsx54(StepValue, { label: "Environment ID", value: stored.environmentId }),
29086
+ /* @__PURE__ */ jsx54(StepValue, { label: "CMA Token", value: stored.cmaToken ? maskToken(stored.cmaToken) : void 0 }),
29087
+ /* @__PURE__ */ jsx54(StepValue, { label: "API Host", value: currentHost })
29442
29088
  ] }),
29443
- error && /* @__PURE__ */ jsx56(StepWarning, { children: error })
29089
+ error && /* @__PURE__ */ jsx54(StepWarning, { children: error })
29444
29090
  ] });
29445
29091
  const helpText = `Saved to ${experiencesCredentialsPath()} \u2014 loaded automatically by experiences import.`;
29446
29092
  if (field === "confirm") {
@@ -29448,13 +29094,13 @@ function ContentfulCredentialsScreen({ onDone }) {
29448
29094
  { label: hasAny ? "Update the saved credentials" : "Enter credentials now", value: ENTER },
29449
29095
  { label: allSet ? "Keep them as they are" : "Skip for now", value: KEEP }
29450
29096
  ];
29451
- return /* @__PURE__ */ jsx56(
29097
+ return /* @__PURE__ */ jsx54(
29452
29098
  StepLayout,
29453
29099
  {
29454
29100
  helpText,
29455
- prompt: /* @__PURE__ */ jsxs49(Box47, { flexDirection: "column", children: [
29456
- /* @__PURE__ */ jsx56(Text52, { children: "Contentful credentials" }),
29457
- /* @__PURE__ */ jsx56(Box47, { marginTop: 1, children: /* @__PURE__ */ jsx56(
29101
+ prompt: /* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", children: [
29102
+ /* @__PURE__ */ jsx54(Text50, { children: "Contentful credentials" }),
29103
+ /* @__PURE__ */ jsx54(Box46, { marginTop: 1, children: /* @__PURE__ */ jsx54(
29458
29104
  Select2,
29459
29105
  {
29460
29106
  options: allSet ? [...options].reverse() : options,
@@ -29495,24 +29141,24 @@ function ContentfulCredentialsScreen({ onDone }) {
29495
29141
  onDone("completed");
29496
29142
  };
29497
29143
  const prompts = {
29498
- spaceId: /* @__PURE__ */ jsxs49(Box47, { children: [
29499
- /* @__PURE__ */ jsx56(Text52, { children: `Space ID${stored.spaceId ? ` [${stored.spaceId}]` : ""}: ` }),
29500
- /* @__PURE__ */ jsx56(TextInput2, { onSubmit: (v) => advance("spaceId", v) }, "spaceId")
29144
+ spaceId: /* @__PURE__ */ jsxs47(Box46, { children: [
29145
+ /* @__PURE__ */ jsx54(Text50, { children: `Space ID${stored.spaceId ? ` [${stored.spaceId}]` : ""}: ` }),
29146
+ /* @__PURE__ */ jsx54(TextInput2, { onSubmit: (v) => advance("spaceId", v) }, "spaceId")
29501
29147
  ] }),
29502
- environmentId: /* @__PURE__ */ jsxs49(Box47, { children: [
29503
- /* @__PURE__ */ jsx56(Text52, { children: `Environment ID [${stored.environmentId || "master"}]: ` }),
29504
- /* @__PURE__ */ jsx56(TextInput2, { onSubmit: (v) => advance("environmentId", v) }, "environmentId")
29148
+ environmentId: /* @__PURE__ */ jsxs47(Box46, { children: [
29149
+ /* @__PURE__ */ jsx54(Text50, { children: `Environment ID [${stored.environmentId || "master"}]: ` }),
29150
+ /* @__PURE__ */ jsx54(TextInput2, { onSubmit: (v) => advance("environmentId", v) }, "environmentId")
29505
29151
  ] }),
29506
- cmaToken: /* @__PURE__ */ jsxs49(Box47, { children: [
29507
- /* @__PURE__ */ jsx56(Text52, { children: `CMA token${stored.cmaToken ? " [press Enter to keep existing]" : " (paste here)"}: ` }),
29508
- /* @__PURE__ */ jsx56(PasswordInput, { onSubmit: (v) => advance("cmaToken", v) }, "cmaToken")
29152
+ cmaToken: /* @__PURE__ */ jsxs47(Box46, { children: [
29153
+ /* @__PURE__ */ jsx54(Text50, { children: `CMA token${stored.cmaToken ? " [press Enter to keep existing]" : " (paste here)"}: ` }),
29154
+ /* @__PURE__ */ jsx54(PasswordInput, { onSubmit: (v) => advance("cmaToken", v) }, "cmaToken")
29509
29155
  ] }),
29510
- host: /* @__PURE__ */ jsxs49(Box47, { children: [
29511
- /* @__PURE__ */ jsx56(Text52, { children: `API host [${currentHost}]: ` }),
29512
- /* @__PURE__ */ jsx56(TextInput2, { onSubmit: (v) => advance("host", v) }, "host")
29156
+ host: /* @__PURE__ */ jsxs47(Box46, { children: [
29157
+ /* @__PURE__ */ jsx54(Text50, { children: `API host [${currentHost}]: ` }),
29158
+ /* @__PURE__ */ jsx54(TextInput2, { onSubmit: (v) => advance("host", v) }, "host")
29513
29159
  ] })
29514
29160
  };
29515
- return /* @__PURE__ */ jsx56(StepLayout, { helpText, prompt: prompts[field], children: summary });
29161
+ return /* @__PURE__ */ jsx54(StepLayout, { helpText, prompt: prompts[field], children: summary });
29516
29162
  }
29517
29163
  var ENV_KEYS, ENTER, KEEP, FIELD_ORDER;
29518
29164
  var init_ContentfulCredentialsScreen = __esm({
@@ -29530,9 +29176,9 @@ var init_ContentfulCredentialsScreen = __esm({
29530
29176
 
29531
29177
  // packages/experience-design-system-cli/src/setup/steps/preferences/BooleanInput.tsx
29532
29178
  import { useEffect as useEffect17, useState as useState26 } from "react";
29533
- import { Box as Box48, Text as Text53 } from "ink";
29179
+ import { Box as Box47, Text as Text51 } from "ink";
29534
29180
  import { Select as Select3 } from "@inkjs/ui";
29535
- import { jsx as jsx57, jsxs as jsxs50 } from "react/jsx-runtime";
29181
+ import { jsx as jsx55, jsxs as jsxs48 } from "react/jsx-runtime";
29536
29182
  function tick(labels, forOn, current) {
29537
29183
  const label = forOn ? labels.on : labels.off;
29538
29184
  return forOn === current ? `${label} \u2713` : label;
@@ -29550,7 +29196,7 @@ function BooleanInput({
29550
29196
  useEffect17(() => {
29551
29197
  void readExperiencesCredentials().then(setStored);
29552
29198
  }, []);
29553
- if (!stored) return /* @__PURE__ */ jsx57(Text53, { dimColor: true, children: "Reading saved preferences\u2026" });
29199
+ if (!stored) return /* @__PURE__ */ jsx55(Text51, { dimColor: true, children: "Reading saved preferences\u2026" });
29554
29200
  const current = read(stored) ?? fallback;
29555
29201
  const submit = (value) => {
29556
29202
  if (value === current) {
@@ -29559,13 +29205,13 @@ function BooleanInput({
29559
29205
  }
29560
29206
  void writeExperiencesCredentials(write2(stored, value)).then(() => onDone("completed"));
29561
29207
  };
29562
- return /* @__PURE__ */ jsx57(
29208
+ return /* @__PURE__ */ jsx55(
29563
29209
  StepLayout,
29564
29210
  {
29565
29211
  helpText,
29566
- prompt: /* @__PURE__ */ jsxs50(Box48, { flexDirection: "column", children: [
29567
- /* @__PURE__ */ jsx57(Text53, { children: question }),
29568
- /* @__PURE__ */ jsx57(Box48, { marginTop: 1, children: /* @__PURE__ */ jsx57(
29212
+ prompt: /* @__PURE__ */ jsxs48(Box47, { flexDirection: "column", children: [
29213
+ /* @__PURE__ */ jsx55(Text51, { children: question }),
29214
+ /* @__PURE__ */ jsx55(Box47, { marginTop: 1, children: /* @__PURE__ */ jsx55(
29569
29215
  Select3,
29570
29216
  {
29571
29217
  options: [
@@ -29590,9 +29236,9 @@ var init_BooleanInput = __esm({
29590
29236
  });
29591
29237
 
29592
29238
  // packages/experience-design-system-cli/src/setup/steps/preferences/AnalyticsScreen.tsx
29593
- import { jsx as jsx58 } from "react/jsx-runtime";
29239
+ import { jsx as jsx56 } from "react/jsx-runtime";
29594
29240
  function AnalyticsScreen({ onDone }) {
29595
- return /* @__PURE__ */ jsx58(
29241
+ return /* @__PURE__ */ jsx56(
29596
29242
  BooleanInput,
29597
29243
  {
29598
29244
  helpText: "Shares anonymous usage data about which CLI commands are used and where imports succeed or fail. Never includes source code, file paths, credentials, or authored content",
@@ -29613,9 +29259,9 @@ var init_AnalyticsScreen = __esm({
29613
29259
  });
29614
29260
 
29615
29261
  // packages/experience-design-system-cli/src/setup/steps/preferences/ColorPreferenceScreen.tsx
29616
- import { jsx as jsx59 } from "react/jsx-runtime";
29262
+ import { jsx as jsx57 } from "react/jsx-runtime";
29617
29263
  function ColorPreferenceScreen({ onDone }) {
29618
- return /* @__PURE__ */ jsx59(
29264
+ return /* @__PURE__ */ jsx57(
29619
29265
  BooleanInput,
29620
29266
  {
29621
29267
  helpText: `Prints plain text with no color, which suits CI logs and basic terminals.`,
@@ -29637,9 +29283,9 @@ var init_ColorPreferenceScreen = __esm({
29637
29283
 
29638
29284
  // packages/experience-design-system-cli/src/setup/steps/preferences/CustomPromptScreen.tsx
29639
29285
  import { useEffect as useEffect18, useState as useState27 } from "react";
29640
- import { Box as Box49, Text as Text54 } from "ink";
29286
+ import { Box as Box48, Text as Text52 } from "ink";
29641
29287
  import { ConfirmInput, TextInput as TextInput3 } from "@inkjs/ui";
29642
- import { jsx as jsx60, jsxs as jsxs51 } from "react/jsx-runtime";
29288
+ import { jsx as jsx58, jsxs as jsxs49 } from "react/jsx-runtime";
29643
29289
  function parseCustomSkillPath(answer) {
29644
29290
  const trimmed = answer.trim();
29645
29291
  if (trimmed === "") return void 0;
@@ -29661,19 +29307,19 @@ function CustomPromptsScreen({ onDone }) {
29661
29307
  useEffect18(() => {
29662
29308
  void readExperiencesCredentials().then(setStored);
29663
29309
  }, []);
29664
- if (!stored) return /* @__PURE__ */ jsx60(Text54, { dimColor: true, children: "Reading saved prompt paths\u2026" });
29310
+ if (!stored) return /* @__PURE__ */ jsx58(Text52, { dimColor: true, children: "Reading saved prompt paths\u2026" });
29665
29311
  const submit = (answer) => {
29666
29312
  const next = applyCustomSkillPath(stored, parseCustomSkillPath(answer));
29667
29313
  void writeExperiencesCredentials(next).then(() => onDone("completed"));
29668
29314
  };
29669
29315
  if (phase === "confirm") {
29670
- return /* @__PURE__ */ jsx60(
29316
+ return /* @__PURE__ */ jsx58(
29671
29317
  StepLayout,
29672
29318
  {
29673
29319
  helpText: CUSTOM_PROMPTS_HELP,
29674
- prompt: /* @__PURE__ */ jsxs51(Box49, { children: [
29675
- /* @__PURE__ */ jsx60(Text54, { children: "Use your own prompt file instead of the built-in one? " }),
29676
- /* @__PURE__ */ jsx60(
29320
+ prompt: /* @__PURE__ */ jsxs49(Box48, { children: [
29321
+ /* @__PURE__ */ jsx58(Text52, { children: "Use your own prompt file instead of the built-in one? " }),
29322
+ /* @__PURE__ */ jsx58(
29677
29323
  ConfirmInput,
29678
29324
  {
29679
29325
  defaultChoice: "cancel",
@@ -29685,13 +29331,13 @@ function CustomPromptsScreen({ onDone }) {
29685
29331
  }
29686
29332
  );
29687
29333
  }
29688
- return /* @__PURE__ */ jsx60(
29334
+ return /* @__PURE__ */ jsx58(
29689
29335
  StepLayout,
29690
29336
  {
29691
29337
  helpText: CUSTOM_PROMPTS_HELP,
29692
- prompt: /* @__PURE__ */ jsxs51(Box49, { children: [
29693
- /* @__PURE__ */ jsx60(Text54, { children: customSkillPathQuestion(stored.generatePromptPath) }),
29694
- /* @__PURE__ */ jsx60(TextInput3, { onSubmit: submit })
29338
+ prompt: /* @__PURE__ */ jsxs49(Box48, { children: [
29339
+ /* @__PURE__ */ jsx58(Text52, { children: customSkillPathQuestion(stored.generatePromptPath) }),
29340
+ /* @__PURE__ */ jsx58(TextInput3, { onSubmit: submit })
29695
29341
  ] })
29696
29342
  }
29697
29343
  );
@@ -29707,9 +29353,9 @@ var init_CustomPromptScreen = __esm({
29707
29353
  });
29708
29354
 
29709
29355
  // packages/experience-design-system-cli/src/setup/steps/preferences/DebugLogsScreen.tsx
29710
- import { jsx as jsx61 } from "react/jsx-runtime";
29356
+ import { jsx as jsx59 } from "react/jsx-runtime";
29711
29357
  function DebugLogsScreen({ onDone }) {
29712
- return /* @__PURE__ */ jsx61(
29358
+ return /* @__PURE__ */ jsx59(
29713
29359
  BooleanInput,
29714
29360
  {
29715
29361
  helpText: `Writes a verbose trace of every command decision, for troubleshooting.`,
@@ -29731,16 +29377,16 @@ var init_DebugLogsScreen = __esm({
29731
29377
 
29732
29378
  // packages/experience-design-system-cli/src/setup/steps/preferences/PreferencesMenu.tsx
29733
29379
  import { useState as useState28 } from "react";
29734
- import { Box as Box50, Text as Text55 } from "ink";
29380
+ import { Box as Box49, Text as Text53 } from "ink";
29735
29381
  import { Select as Select4 } from "@inkjs/ui";
29736
- import { jsx as jsx62, jsxs as jsxs52 } from "react/jsx-runtime";
29382
+ import { jsx as jsx60, jsxs as jsxs50 } from "react/jsx-runtime";
29737
29383
  function PreferencesMenu({ onDone }) {
29738
29384
  const [open, setOpen] = useState28(null);
29739
29385
  const [changed, setChanged] = useState28(/* @__PURE__ */ new Set());
29740
29386
  const entry = open === null ? void 0 : PREFERENCE_OPTIONS.find((option) => option.key === open);
29741
- if (!entry) return /* @__PURE__ */ jsx62(PreferenceList, { changed, onOpen: setOpen, onDone });
29387
+ if (!entry) return /* @__PURE__ */ jsx60(PreferenceList, { changed, onOpen: setOpen, onDone });
29742
29388
  const { key, Screen } = entry;
29743
- return /* @__PURE__ */ jsx62(
29389
+ return /* @__PURE__ */ jsx60(
29744
29390
  Screen,
29745
29391
  {
29746
29392
  onDone: (status) => {
@@ -29757,13 +29403,13 @@ function PreferenceList({ changed, onOpen, onDone }) {
29757
29403
  ...PREFERENCE_OPTIONS.map((option) => ({ label: option.label, value: option.key })),
29758
29404
  { label: "Done", value: DONE_VALUE }
29759
29405
  ];
29760
- return /* @__PURE__ */ jsx62(
29406
+ return /* @__PURE__ */ jsx60(
29761
29407
  StepLayout,
29762
29408
  {
29763
29409
  helpText: PREFERENCES_MENU_HELP,
29764
- prompt: /* @__PURE__ */ jsxs52(Box50, { flexDirection: "column", children: [
29765
- /* @__PURE__ */ jsx62(Text55, { children: "Preferences" }),
29766
- /* @__PURE__ */ jsx62(Box50, { marginTop: 1, children: /* @__PURE__ */ jsx62(
29410
+ prompt: /* @__PURE__ */ jsxs50(Box49, { flexDirection: "column", children: [
29411
+ /* @__PURE__ */ jsx60(Text53, { children: "Preferences" }),
29412
+ /* @__PURE__ */ jsx60(Box49, { marginTop: 1, children: /* @__PURE__ */ jsx60(
29767
29413
  Select4,
29768
29414
  {
29769
29415
  options,
@@ -29796,22 +29442,22 @@ var init_PreferencesMenu = __esm({
29796
29442
  {
29797
29443
  key: "customPrompts",
29798
29444
  label: "Custom prompts",
29799
- Screen: ({ onDone }) => /* @__PURE__ */ jsx62(CustomPromptsScreen, { onDone })
29445
+ Screen: ({ onDone }) => /* @__PURE__ */ jsx60(CustomPromptsScreen, { onDone })
29800
29446
  },
29801
29447
  {
29802
29448
  key: "debug",
29803
29449
  label: "Debug logging",
29804
- Screen: ({ onDone }) => /* @__PURE__ */ jsx62(DebugLogsScreen, { onDone })
29450
+ Screen: ({ onDone }) => /* @__PURE__ */ jsx60(DebugLogsScreen, { onDone })
29805
29451
  },
29806
29452
  {
29807
29453
  key: "analytics",
29808
29454
  label: "Usage analytics",
29809
- Screen: ({ onDone }) => /* @__PURE__ */ jsx62(AnalyticsScreen, { onDone })
29455
+ Screen: ({ onDone }) => /* @__PURE__ */ jsx60(AnalyticsScreen, { onDone })
29810
29456
  },
29811
29457
  {
29812
29458
  key: "noColor",
29813
29459
  label: "Terminal colors",
29814
- Screen: ({ onDone }) => /* @__PURE__ */ jsx62(ColorPreferenceScreen, { onDone })
29460
+ Screen: ({ onDone }) => /* @__PURE__ */ jsx60(ColorPreferenceScreen, { onDone })
29815
29461
  }
29816
29462
  ];
29817
29463
  DONE_VALUE = "menu:done";
@@ -30027,23 +29673,23 @@ var init_prerequisites = __esm({
30027
29673
 
30028
29674
  // packages/experience-design-system-cli/src/setup/steps/prerequisites/PrerequisitesScreen.tsx
30029
29675
  import { useEffect as useEffect19, useRef as useRef13, useState as useState29 } from "react";
30030
- import { Box as Box51, Text as Text56 } from "ink";
29676
+ import { Box as Box50, Text as Text54 } from "ink";
30031
29677
  import { ConfirmInput as ConfirmInput2 } from "@inkjs/ui";
30032
- import { jsx as jsx63, jsxs as jsxs53 } from "react/jsx-runtime";
29678
+ import { jsx as jsx61, jsxs as jsxs51 } from "react/jsx-runtime";
30033
29679
  function EventLine({ event }) {
30034
- if (event.kind === "success") return /* @__PURE__ */ jsxs53(Text56, { color: PALETTE.success, children: [
29680
+ if (event.kind === "success") return /* @__PURE__ */ jsxs51(Text54, { color: PALETTE.success, children: [
30035
29681
  "\u2713 ",
30036
29682
  event.message
30037
29683
  ] });
30038
- if (event.kind === "failure") return /* @__PURE__ */ jsxs53(Text56, { color: PALETTE.error, children: [
29684
+ if (event.kind === "failure") return /* @__PURE__ */ jsxs51(Text54, { color: PALETTE.error, children: [
30039
29685
  "\u2717 ",
30040
29686
  event.message
30041
29687
  ] });
30042
- if (event.kind === "warning") return /* @__PURE__ */ jsxs53(Text56, { color: PALETTE.warning, children: [
29688
+ if (event.kind === "warning") return /* @__PURE__ */ jsxs51(Text54, { color: PALETTE.warning, children: [
30043
29689
  "\u26A0 ",
30044
29690
  event.message
30045
29691
  ] });
30046
- return /* @__PURE__ */ jsx63(Text56, { children: event.message });
29692
+ return /* @__PURE__ */ jsx61(Text54, { children: event.message });
30047
29693
  }
30048
29694
  function PrerequisitesScreen({
30049
29695
  repoRoot,
@@ -30082,15 +29728,15 @@ function PrerequisitesScreen({
30082
29728
  ...skipBuild !== void 0 ? { skipBuild } : {}
30083
29729
  }).then(onDone);
30084
29730
  }, []);
30085
- return /* @__PURE__ */ jsx63(
29731
+ return /* @__PURE__ */ jsx61(
30086
29732
  StepLayout,
30087
29733
  {
30088
- prompt: confirm ? /* @__PURE__ */ jsxs53(Box51, { children: [
30089
- /* @__PURE__ */ jsxs53(Text56, { children: [
29734
+ prompt: confirm ? /* @__PURE__ */ jsxs51(Box50, { children: [
29735
+ /* @__PURE__ */ jsxs51(Text54, { children: [
30090
29736
  confirm.question,
30091
29737
  " "
30092
29738
  ] }),
30093
- /* @__PURE__ */ jsx63(
29739
+ /* @__PURE__ */ jsx61(
30094
29740
  ConfirmInput2,
30095
29741
  {
30096
29742
  defaultChoice: confirm.defaultYes ? "confirm" : "cancel",
@@ -30099,8 +29745,8 @@ function PrerequisitesScreen({
30099
29745
  },
30100
29746
  confirm.question
30101
29747
  )
30102
- ] }) : /* @__PURE__ */ jsx63(Text56, { color: PALETTE.info, children: "\u27F3 Checking prerequisites\u2026" }),
30103
- children: /* @__PURE__ */ jsx63(Box51, { flexDirection: "column", children: events.map((event, index) => /* @__PURE__ */ jsx63(EventLine, { event }, `${index}-${event.message}`)) })
29748
+ ] }) : /* @__PURE__ */ jsx61(Text54, { color: PALETTE.info, children: "\u27F3 Checking prerequisites\u2026" }),
29749
+ children: /* @__PURE__ */ jsx61(Box50, { flexDirection: "column", children: events.map((event, index) => /* @__PURE__ */ jsx61(EventLine, { event }, `${index}-${event.message}`)) })
30104
29750
  }
30105
29751
  );
30106
29752
  }
@@ -30121,8 +29767,8 @@ __export(SetupScreen_exports, {
30121
29767
  formatSetupCompletionMessage: () => formatSetupCompletionMessage
30122
29768
  });
30123
29769
  import { useEffect as useEffect20, useRef as useRef14, useState as useState30 } from "react";
30124
- import { Box as Box52, Text as Text57 } from "ink";
30125
- import { jsx as jsx64, jsxs as jsxs54 } from "react/jsx-runtime";
29770
+ import { Box as Box51, Text as Text55 } from "ink";
29771
+ import { jsx as jsx62, jsxs as jsxs52 } from "react/jsx-runtime";
30126
29772
  function countRequiredFailures(results) {
30127
29773
  return results.filter((result) => result.required && result.status === "failed").length;
30128
29774
  }
@@ -30153,7 +29799,7 @@ function SetupScreen({
30153
29799
  });
30154
29800
  void (async () => {
30155
29801
  const results = [];
30156
- const prerequisites = await runScreen((done) => /* @__PURE__ */ jsx64(
29802
+ const prerequisites = await runScreen((done) => /* @__PURE__ */ jsx62(
30157
29803
  PrerequisitesScreen,
30158
29804
  {
30159
29805
  repoRoot,
@@ -30187,21 +29833,21 @@ function SetupScreen({
30187
29833
  if (skip.skipAgent) {
30188
29834
  results.push({ name: "Coding agent", status: "skipped", required: false });
30189
29835
  } else {
30190
- const status = await runScreen((done) => /* @__PURE__ */ jsx64(CodingAgentScreen, { onDone: done }));
29836
+ const status = await runScreen((done) => /* @__PURE__ */ jsx62(CodingAgentScreen, { onDone: done }));
30191
29837
  results.push({ name: "Coding agent", status, required: true });
30192
29838
  }
30193
29839
  setActiveStep(3);
30194
29840
  if (skip.skipCredentials) {
30195
29841
  results.push({ name: "Contentful credentials", status: "skipped", required: false });
30196
29842
  } else {
30197
- const status = await runScreen((done) => /* @__PURE__ */ jsx64(ContentfulCredentialsScreen, { onDone: done }));
29843
+ const status = await runScreen((done) => /* @__PURE__ */ jsx62(ContentfulCredentialsScreen, { onDone: done }));
30198
29844
  results.push({ name: "Contentful credentials", status, required: false });
30199
29845
  }
30200
29846
  setActiveStep(4);
30201
29847
  if (skip.skipOptional) {
30202
29848
  results.push({ name: "Preferences", status: "skipped", required: false });
30203
29849
  } else {
30204
- const status = await runScreen((done) => /* @__PURE__ */ jsx64(PreferencesMenu, { onDone: done }));
29850
+ const status = await runScreen((done) => /* @__PURE__ */ jsx62(PreferencesMenu, { onDone: done }));
30205
29851
  results.push({ name: "Preferences", status, required: false });
30206
29852
  }
30207
29853
  const exitCode = countRequiredFailures(results) === 0 ? 0 : 1;
@@ -30210,37 +29856,37 @@ function SetupScreen({
30210
29856
  onComplete(finalOutcome);
30211
29857
  })();
30212
29858
  }, []);
30213
- return /* @__PURE__ */ jsxs54(Box52, { flexDirection: "column", paddingX: 1, children: [
30214
- /* @__PURE__ */ jsxs54(Box52, { justifyContent: "space-between", columnGap: 1, ...columns !== void 0 ? { width: columns - 2 } : {}, children: [
30215
- /* @__PURE__ */ jsx64(Box52, { flexShrink: 0, children: /* @__PURE__ */ jsx64(Text57, { bold: true, children: "experiences setup" }) }),
30216
- /* @__PURE__ */ jsx64(Box52, { flexShrink: 0, children: /* @__PURE__ */ jsxs54(Text57, { dimColor: true, children: [
29859
+ return /* @__PURE__ */ jsxs52(Box51, { flexDirection: "column", paddingX: 1, children: [
29860
+ /* @__PURE__ */ jsxs52(Box51, { justifyContent: "space-between", columnGap: 1, ...columns !== void 0 ? { width: columns - 2 } : {}, children: [
29861
+ /* @__PURE__ */ jsx62(Box51, { flexShrink: 0, children: /* @__PURE__ */ jsx62(Text55, { bold: true, children: "experiences setup" }) }),
29862
+ /* @__PURE__ */ jsx62(Box51, { flexShrink: 0, children: /* @__PURE__ */ jsxs52(Text55, { dimColor: true, children: [
30217
29863
  "v",
30218
29864
  version
30219
29865
  ] }) })
30220
29866
  ] }),
30221
- /* @__PURE__ */ jsx64(Box52, { marginTop: 1, children: /* @__PURE__ */ jsx64(SetupStepper, { activeStep, columns }) }),
30222
- outcome ? /* @__PURE__ */ jsx64(SetupSummary, { outcome, notice }) : screen && /* @__PURE__ */ jsx64(Box52, { marginTop: 1, children: screen })
29867
+ /* @__PURE__ */ jsx62(Box51, { marginTop: 1, children: /* @__PURE__ */ jsx62(SetupStepper, { activeStep, columns }) }),
29868
+ outcome ? /* @__PURE__ */ jsx62(SetupSummary, { outcome, notice }) : screen && /* @__PURE__ */ jsx62(Box51, { marginTop: 1, children: screen })
30223
29869
  ] });
30224
29870
  }
30225
29871
  function SetupSummary({ outcome, notice }) {
30226
29872
  const requiredFailed = countRequiredFailures(outcome.results);
30227
- return /* @__PURE__ */ jsxs54(Box52, { flexDirection: "column", marginTop: 1, children: [
30228
- /* @__PURE__ */ jsx64(Text57, { bold: true, children: "Summary" }),
29873
+ return /* @__PURE__ */ jsxs52(Box51, { flexDirection: "column", marginTop: 1, children: [
29874
+ /* @__PURE__ */ jsx62(Text55, { bold: true, children: "Summary" }),
30229
29875
  outcome.results.map((result) => {
30230
29876
  if (result.status === "completed") {
30231
- return /* @__PURE__ */ jsxs54(Text57, { color: PALETTE.success, children: [
29877
+ return /* @__PURE__ */ jsxs52(Text55, { color: PALETTE.success, children: [
30232
29878
  "\u2713 ",
30233
29879
  result.name
30234
29880
  ] }, result.name);
30235
29881
  }
30236
29882
  if (result.status === "skipped") {
30237
- return /* @__PURE__ */ jsxs54(Text57, { dimColor: true, children: [
29883
+ return /* @__PURE__ */ jsxs52(Text55, { dimColor: true, children: [
30238
29884
  "\u2013 ",
30239
29885
  result.name,
30240
29886
  " \u2014 skipped"
30241
29887
  ] }, result.name);
30242
29888
  }
30243
- return /* @__PURE__ */ jsxs54(Text57, { color: result.required ? PALETTE.error : PALETTE.warning, children: [
29889
+ return /* @__PURE__ */ jsxs52(Text55, { color: result.required ? PALETTE.error : PALETTE.warning, children: [
30244
29890
  result.required ? "\u2717" : "\u26A0",
30245
29891
  " ",
30246
29892
  result.name,
@@ -30248,10 +29894,10 @@ function SetupSummary({ outcome, notice }) {
30248
29894
  result.required ? "required" : "optional"
30249
29895
  ] }, result.name);
30250
29896
  }),
30251
- notice && /* @__PURE__ */ jsx64(Box52, { marginTop: 1, children: /* @__PURE__ */ jsx64(Text57, { color: PALETTE.warning, children: notice }) }),
30252
- /* @__PURE__ */ jsx64(Box52, { marginTop: 1, children: /* @__PURE__ */ jsx64(Text57, { bold: true, color: requiredFailed === 0 ? PALETTE.success : PALETTE.warning, children: formatSetupCompletionMessage(outcome.results) }) }),
30253
- requiredFailed > 0 && /* @__PURE__ */ jsx64(Text57, { dimColor: true, children: "Complete the steps above, then re-run experiences setup." }),
30254
- /* @__PURE__ */ jsx64(Text57, { dimColor: true, children: "Run experiences doctor any time to re-check." })
29897
+ notice && /* @__PURE__ */ jsx62(Box51, { marginTop: 1, children: /* @__PURE__ */ jsx62(Text55, { color: PALETTE.warning, children: notice }) }),
29898
+ /* @__PURE__ */ jsx62(Box51, { marginTop: 1, children: /* @__PURE__ */ jsx62(Text55, { bold: true, color: requiredFailed === 0 ? PALETTE.success : PALETTE.warning, children: formatSetupCompletionMessage(outcome.results) }) }),
29899
+ requiredFailed > 0 && /* @__PURE__ */ jsx62(Text55, { dimColor: true, children: "Complete the steps above, then re-run experiences setup." }),
29900
+ /* @__PURE__ */ jsx62(Text55, { dimColor: true, children: "Run experiences doctor any time to re-check." })
30255
29901
  ] });
30256
29902
  }
30257
29903
  var init_SetupScreen = __esm({