@contentful/experience-design-system-cli 2.34.5-dev-build-ea694b2.0 → 2.34.5-dev-build-04d687d.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
@@ -10318,13 +10318,6 @@ function WizardPreviewStep({
10318
10318
  maxScroll > 0 && /* @__PURE__ */ jsx18(Text16, { dimColor: true, children: " \u2195 j/k to scroll, f/b to page" })
10319
10319
  ] })
10320
10320
  ] }) : /* @__PURE__ */ jsx18(Text16, { dimColor: true, children: "Nothing to push \u2014 everything is already up to date." }),
10321
- /* @__PURE__ */ jsxs16(Box16, { gap: 1, marginTop: 1, children: [
10322
- /* @__PURE__ */ jsx18(Text16, { dimColor: true, children: "Space:" }),
10323
- /* @__PURE__ */ jsx18(Text16, { children: spaceId }),
10324
- /* @__PURE__ */ jsx18(Text16, { dimColor: true, children: "/" }),
10325
- /* @__PURE__ */ jsx18(Text16, { dimColor: true, children: "Environment:" }),
10326
- /* @__PURE__ */ jsx18(Text16, { children: environmentId })
10327
- ] }),
10328
10321
  breakingWithImpact && /* @__PURE__ */ jsx18(Box16, { marginTop: 1, children: /* @__PURE__ */ jsx18(Text16, { color: PALETTE.error, bold: true, children: "\u26A0 Breaking changes will affect downstream entities. Press Enter to acknowledge and apply." }) }),
10329
10322
  /* @__PURE__ */ jsx18(SpaceEnvironment, { spaceId, environmentId }),
10330
10323
  /* @__PURE__ */ jsxs16(Box16, { gap: 3, marginTop: 1, children: [
@@ -20062,7 +20055,17 @@ function toSidebarEntry(c2) {
20062
20055
  if (Object.keys($slots).length > 0) entry.$slots = $slots;
20063
20056
  return entry;
20064
20057
  }
20065
- function ScopeGateStep({ components, onConfirm, onQuit }) {
20058
+ function ScopeGateStep(props) {
20059
+ if (props.components.length === 0) {
20060
+ return /* @__PURE__ */ jsx32(Box28, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx32(Text29, { color: PALETTE.error, children: "Error: no components found for this session \u2014 please re-run analyze extract." }) });
20061
+ }
20062
+ return /* @__PURE__ */ jsx32(ScopeGateStepView, { ...props, components: [...props.components] });
20063
+ }
20064
+ function ScopeGateStepView({
20065
+ components,
20066
+ onConfirm,
20067
+ onQuit
20068
+ }) {
20066
20069
  const { stdout } = useStdout2();
20067
20070
  const totalWidth = stdout?.columns ?? 80;
20068
20071
  const columnPlan = useMemo2(() => computeColumnWidths(totalWidth), [totalWidth]);
@@ -21025,23 +21028,6 @@ var init_ScopeGateStep = __esm({
21025
21028
  }
21026
21029
  });
21027
21030
 
21028
- // packages/experience-design-system-cli/src/import/tui/scope-gate-host.tsx
21029
- import { Box as Box29, Text as Text30 } from "ink";
21030
- import { jsx as jsx33 } from "react/jsx-runtime";
21031
- function ScopeGateHost({ components, onConfirm, onQuit }) {
21032
- if (components.length === 0) {
21033
- return /* @__PURE__ */ jsx33(Box29, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx33(Text30, { color: PALETTE.error, children: "Error: no components found for this session \u2014 please re-run analyze extract." }) });
21034
- }
21035
- return /* @__PURE__ */ jsx33(ScopeGateStep, { components: [...components], onConfirm, onQuit });
21036
- }
21037
- var init_scope_gate_host = __esm({
21038
- "packages/experience-design-system-cli/src/import/tui/scope-gate-host.tsx"() {
21039
- "use strict";
21040
- init_theme();
21041
- init_ScopeGateStep();
21042
- }
21043
- });
21044
-
21045
21031
  // packages/experience-design-system-cli/src/import/tui/steps/review-json-panel.ts
21046
21032
  function getReviewJsonPanelValue(selected, showHiddenProps) {
21047
21033
  if (!selected) return "";
@@ -21383,8 +21369,8 @@ var init_cycle_auto_reject = __esm({
21383
21369
 
21384
21370
  // packages/experience-design-system-cli/src/analyze/select/tui/components/LineagePanel.tsx
21385
21371
  import figures4 from "figures";
21386
- import { Text as Text31 } from "ink";
21387
- import { jsx as jsx34, jsxs as jsxs30 } from "react/jsx-runtime";
21372
+ import { Text as Text30 } from "ink";
21373
+ import { jsx as jsx33, jsxs as jsxs30 } from "react/jsx-runtime";
21388
21374
  function LineagePanel({
21389
21375
  focusedComponentKey,
21390
21376
  entries,
@@ -21399,7 +21385,7 @@ function LineagePanel({
21399
21385
  kind: e.kind
21400
21386
  }));
21401
21387
  const cursorRowIndex = jumpables[cursor]?.i ?? 0;
21402
- return /* @__PURE__ */ jsx34(
21388
+ return /* @__PURE__ */ jsx33(
21403
21389
  GotoBanner,
21404
21390
  {
21405
21391
  title: `Lineage: ${focusedComponentKey}`,
@@ -21411,20 +21397,20 @@ function LineagePanel({
21411
21397
  footerHint: LINEAGE_FOOTER_HINT,
21412
21398
  renderRow: (row, i, isCursor) => {
21413
21399
  if (row.kind === "section") {
21414
- return /* @__PURE__ */ jsxs30(Text31, { bold: true, children: [
21400
+ return /* @__PURE__ */ jsxs30(Text30, { bold: true, children: [
21415
21401
  " ",
21416
21402
  row.label
21417
21403
  ] }, i);
21418
21404
  }
21419
21405
  if (row.kind === "empty") {
21420
- return /* @__PURE__ */ jsxs30(Text31, { children: [
21421
- /* @__PURE__ */ jsx34(Text31, { children: " " }),
21422
- /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: " " + row.label })
21406
+ return /* @__PURE__ */ jsxs30(Text30, { children: [
21407
+ /* @__PURE__ */ jsx33(Text30, { children: " " }),
21408
+ /* @__PURE__ */ jsx33(Text30, { dimColor: true, children: " " + row.label })
21423
21409
  ] }, i);
21424
21410
  }
21425
- return /* @__PURE__ */ jsxs30(Text31, { children: [
21426
- isCursor ? /* @__PURE__ */ jsx34(Text31, { color: PALETTE.info, bold: true, children: figures4.pointer }) : /* @__PURE__ */ jsx34(Text31, { children: " " }),
21427
- /* @__PURE__ */ jsx34(Text31, { inverse: isCursor, children: " " + row.label })
21411
+ return /* @__PURE__ */ jsxs30(Text30, { children: [
21412
+ isCursor ? /* @__PURE__ */ jsx33(Text30, { color: PALETTE.info, bold: true, children: figures4.pointer }) : /* @__PURE__ */ jsx33(Text30, { children: " " }),
21413
+ /* @__PURE__ */ jsx33(Text30, { inverse: isCursor, children: " " + row.label })
21428
21414
  ] }, i);
21429
21415
  }
21430
21416
  }
@@ -21597,13 +21583,13 @@ var init_scroll_offset = __esm({
21597
21583
  // packages/experience-design-system-cli/src/analyze/select/tui/components/FieldEditor.tsx
21598
21584
  import React15, { useState as useState15 } from "react";
21599
21585
  import figures5 from "figures";
21600
- import { Box as Box30, Text as Text32 } from "ink";
21586
+ import { Box as Box29, Text as Text31 } from "ink";
21601
21587
  import {
21602
21588
  CDF_PROPERTY_TYPES,
21603
21589
  CDF_PROPERTY_CATEGORIES,
21604
21590
  DESIGN_TOKEN_TYPES as DESIGN_TOKEN_TYPES2
21605
21591
  } from "@contentful/experience-design-system-types";
21606
- import { Fragment as Fragment9, jsx as jsx35, jsxs as jsxs31 } from "react/jsx-runtime";
21592
+ import { Fragment as Fragment9, jsx as jsx34, jsxs as jsxs31 } from "react/jsx-runtime";
21607
21593
  function removeAt(values, index) {
21608
21594
  return values.filter((_, i) => i !== index);
21609
21595
  }
@@ -21726,25 +21712,25 @@ function serializeState(state, originalJson) {
21726
21712
  return JSON.stringify(entry, null, 2);
21727
21713
  }
21728
21714
  function Picker({ value, active }) {
21729
- return /* @__PURE__ */ jsxs31(Box30, { children: [
21730
- active && /* @__PURE__ */ jsx35(Text32, { color: PALETTE.info, children: "\u2039" }),
21731
- /* @__PURE__ */ jsx35(Text32, { color: active ? PALETTE.info : PALETTE.inverse, bold: active, children: value }),
21732
- active && /* @__PURE__ */ jsx35(Text32, { color: PALETTE.info, children: "\u203A" })
21715
+ return /* @__PURE__ */ jsxs31(Box29, { children: [
21716
+ active && /* @__PURE__ */ jsx34(Text31, { color: PALETTE.info, children: "\u2039" }),
21717
+ /* @__PURE__ */ jsx34(Text31, { color: active ? PALETTE.info : PALETTE.inverse, bold: active, children: value }),
21718
+ active && /* @__PURE__ */ jsx34(Text31, { color: PALETTE.info, children: "\u203A" })
21733
21719
  ] });
21734
21720
  }
21735
21721
  function Toggle({ value, active }) {
21736
- return /* @__PURE__ */ jsx35(Box30, { children: /* @__PURE__ */ jsx35(Text32, { color: active ? PALETTE.info : value ? PALETTE.success : void 0, children: value ? "[\u2713]" : "[ ]" }) });
21722
+ return /* @__PURE__ */ jsx34(Box29, { children: /* @__PURE__ */ jsx34(Text31, { color: active ? PALETTE.info : value ? PALETTE.success : void 0, children: value ? "[\u2713]" : "[ ]" }) });
21737
21723
  }
21738
21724
  function DefaultValueRow({ display, active }) {
21739
- return /* @__PURE__ */ jsxs31(Box30, { paddingLeft: 2, gap: 1, children: [
21740
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "default:" }),
21741
- active ? /* @__PURE__ */ jsx35(Picker, { value: display, active: true }) : /* @__PURE__ */ jsx35(Text32, { color: PALETTE.inverse, children: display })
21725
+ return /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, gap: 1, children: [
21726
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "default:" }),
21727
+ active ? /* @__PURE__ */ jsx34(Picker, { value: display, active: true }) : /* @__PURE__ */ jsx34(Text31, { color: PALETTE.inverse, children: display })
21742
21728
  ] });
21743
21729
  }
21744
21730
  function RowLabel({ name, selected }) {
21745
21731
  const nameDisplay = name.length > 14 ? name.slice(0, 13) + "\u2026" : name.padEnd(14);
21746
21732
  return /* @__PURE__ */ jsxs31(
21747
- Text32,
21733
+ Text31,
21748
21734
  {
21749
21735
  color: selected ? PALETTE.inverse : PALETTE.info,
21750
21736
  bold: selected,
@@ -21762,10 +21748,10 @@ function ValueInputRow({
21762
21748
  valueText,
21763
21749
  cursorVisible
21764
21750
  }) {
21765
- return /* @__PURE__ */ jsxs31(Box30, { paddingLeft: 2, children: [
21766
- /* @__PURE__ */ jsx35(Text32, { color: PALETTE.info, children: mode === "edit" ? "\u270E " : "+ " }),
21767
- /* @__PURE__ */ jsx35(Text32, { children: valueText }),
21768
- /* @__PURE__ */ jsx35(Text32, { inverse: cursorVisible, children: " " })
21751
+ return /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, children: [
21752
+ /* @__PURE__ */ jsx34(Text31, { color: PALETTE.info, children: mode === "edit" ? "\u270E " : "+ " }),
21753
+ /* @__PURE__ */ jsx34(Text31, { children: valueText }),
21754
+ /* @__PURE__ */ jsx34(Text31, { inverse: cursorVisible, children: " " })
21769
21755
  ] });
21770
21756
  }
21771
21757
  function EditableListItem({
@@ -21778,9 +21764,9 @@ function EditableListItem({
21778
21764
  }) {
21779
21765
  const isBeingEdited = editingValue?.mode === "edit" && editingValue.index === index;
21780
21766
  if (isBeingEdited) {
21781
- return /* @__PURE__ */ jsx35(ValueInputRow, { mode: "edit", valueText, cursorVisible });
21767
+ return /* @__PURE__ */ jsx34(ValueInputRow, { mode: "edit", valueText, cursorVisible });
21782
21768
  }
21783
- return /* @__PURE__ */ jsx35(Box30, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx35(Text32, { color: active ? PALETTE.info : PALETTE.inverse, children: active ? `${figures5.pointer} ${value}` : ` ${value}` }) });
21769
+ return /* @__PURE__ */ jsx34(Box29, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx34(Text31, { color: active ? PALETTE.info : PALETTE.inverse, children: active ? `${figures5.pointer} ${value}` : ` ${value}` }) });
21784
21770
  }
21785
21771
  function EditableValueList({
21786
21772
  values,
@@ -21794,8 +21780,8 @@ function EditableValueList({
21794
21780
  showAddInput
21795
21781
  }) {
21796
21782
  return /* @__PURE__ */ jsxs31(Fragment9, { children: [
21797
- values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: emptyMessage }) : /* @__PURE__ */ jsx35(Box30, { paddingLeft: emptyPaddingLeft, children: /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: emptyMessage }) })),
21798
- values.map((value, index) => /* @__PURE__ */ jsx35(
21783
+ 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 }) })),
21784
+ values.map((value, index) => /* @__PURE__ */ jsx34(
21799
21785
  EditableListItem,
21800
21786
  {
21801
21787
  value,
@@ -21807,7 +21793,7 @@ function EditableValueList({
21807
21793
  },
21808
21794
  index
21809
21795
  )),
21810
- showAddInput && editingValue?.mode === "add" && /* @__PURE__ */ jsx35(ValueInputRow, { mode: "add", valueText, cursorVisible })
21796
+ showAddInput && editingValue?.mode === "add" && /* @__PURE__ */ jsx34(ValueInputRow, { mode: "add", valueText, cursorVisible })
21811
21797
  ] });
21812
21798
  }
21813
21799
  function DefaultSubRow({
@@ -21818,39 +21804,39 @@ function DefaultSubRow({
21818
21804
  }) {
21819
21805
  const cursor = cursorVisible ? "\u2588" : " ";
21820
21806
  if (prop.type === "richtext" || prop.type === "media" || prop.type === "link") {
21821
- return /* @__PURE__ */ jsxs31(Box30, { paddingLeft: 2, gap: 1, children: [
21822
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "default:" }),
21823
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "(not applicable)" })
21807
+ return /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, gap: 1, children: [
21808
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "default:" }),
21809
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "(not applicable)" })
21824
21810
  ] });
21825
21811
  }
21826
21812
  if (prop.type === "boolean") {
21827
21813
  const display = prop.default === true ? "true" : prop.default === false ? "false" : "(unset)";
21828
- return /* @__PURE__ */ jsx35(DefaultValueRow, { display, active });
21814
+ return /* @__PURE__ */ jsx34(DefaultValueRow, { display, active });
21829
21815
  }
21830
21816
  if (prop.type === "enum") {
21831
21817
  if (prop.values.length === 0) {
21832
- return /* @__PURE__ */ jsxs31(Box30, { paddingLeft: 2, gap: 1, children: [
21833
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "default:" }),
21834
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "(no values defined)" })
21818
+ return /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, gap: 1, children: [
21819
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "default:" }),
21820
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "(no values defined)" })
21835
21821
  ] });
21836
21822
  }
21837
21823
  const display = typeof prop.default === "string" && prop.default !== "" ? prop.default : "(unset)";
21838
- return /* @__PURE__ */ jsx35(DefaultValueRow, { display, active });
21824
+ return /* @__PURE__ */ jsx34(DefaultValueRow, { display, active });
21839
21825
  }
21840
21826
  const value = typeof prop.default === "string" ? prop.default : "";
21841
21827
  if (active) {
21842
- return /* @__PURE__ */ jsxs31(Box30, { paddingLeft: 2, flexDirection: "row", children: [
21843
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "default:" }),
21844
- /* @__PURE__ */ jsxs31(Box30, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
21845
- /* @__PURE__ */ jsx35(Text32, { children: value.slice(0, textCursor) }),
21846
- /* @__PURE__ */ jsx35(Text32, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
21847
- /* @__PURE__ */ jsx35(Text32, { children: value.slice(textCursor + 1) })
21828
+ return /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, flexDirection: "row", children: [
21829
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "default:" }),
21830
+ /* @__PURE__ */ jsxs31(Box29, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
21831
+ /* @__PURE__ */ jsx34(Text31, { children: value.slice(0, textCursor) }),
21832
+ /* @__PURE__ */ jsx34(Text31, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
21833
+ /* @__PURE__ */ jsx34(Text31, { children: value.slice(textCursor + 1) })
21848
21834
  ] })
21849
21835
  ] });
21850
21836
  }
21851
- return /* @__PURE__ */ jsxs31(Box30, { paddingLeft: 2, gap: 1, children: [
21852
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "default:" }),
21853
- /* @__PURE__ */ jsx35(Text32, { color: value ? PALETTE.inverse : void 0, dimColor: !value, children: value || "(none)" })
21837
+ return /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, gap: 1, children: [
21838
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "default:" }),
21839
+ /* @__PURE__ */ jsx34(Text31, { color: value ? PALETTE.inverse : void 0, dimColor: !value, children: value || "(none)" })
21854
21840
  ] });
21855
21841
  }
21856
21842
  function PropRow({
@@ -21868,28 +21854,28 @@ function PropRow({
21868
21854
  }) {
21869
21855
  const cursor = cursorVisible ? "\u2588" : " ";
21870
21856
  const descActive = activeField === "description";
21871
- return /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", width, children: [
21872
- /* @__PURE__ */ jsxs31(Box30, { gap: 1, children: [
21873
- /* @__PURE__ */ jsx35(RowLabel, { name: prop.name, selected }),
21874
- /* @__PURE__ */ jsx35(Text32, { dimColor: !selected, children: "type:" }),
21875
- activeField === "type" ? /* @__PURE__ */ jsx35(Picker, { value: prop.type, active: true }) : /* @__PURE__ */ jsx35(Text32, { color: selected ? PALETTE.warning : PALETTE.inverse, children: prop.type }),
21876
- activeField === "category" && /* @__PURE__ */ jsx35(Picker, { value: prop.category, active: true }),
21877
- /* @__PURE__ */ jsx35(Text32, { dimColor: !selected, children: "req:" }),
21878
- activeField === "required" ? /* @__PURE__ */ jsx35(Toggle, { value: prop.required, active: true }) : /* @__PURE__ */ jsx35(Toggle, { value: prop.required, active: false }),
21857
+ return /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", width, children: [
21858
+ /* @__PURE__ */ jsxs31(Box29, { gap: 1, children: [
21859
+ /* @__PURE__ */ jsx34(RowLabel, { name: prop.name, selected }),
21860
+ /* @__PURE__ */ jsx34(Text31, { dimColor: !selected, children: "type:" }),
21861
+ activeField === "type" ? /* @__PURE__ */ jsx34(Picker, { value: prop.type, active: true }) : /* @__PURE__ */ jsx34(Text31, { color: selected ? PALETTE.warning : PALETTE.inverse, children: prop.type }),
21862
+ activeField === "category" && /* @__PURE__ */ jsx34(Picker, { value: prop.category, active: true }),
21863
+ /* @__PURE__ */ jsx34(Text31, { dimColor: !selected, children: "req:" }),
21864
+ activeField === "required" ? /* @__PURE__ */ jsx34(Toggle, { value: prop.required, active: true }) : /* @__PURE__ */ jsx34(Toggle, { value: prop.required, active: false }),
21879
21865
  prop.type === "enum" && /* @__PURE__ */ jsxs31(Fragment9, { children: [
21880
- /* @__PURE__ */ jsx35(Text32, { dimColor: !selected, children: "values:" }),
21881
- /* @__PURE__ */ jsxs31(Text32, { color: selected ? PALETTE.warning : PALETTE.inverse, children: [
21866
+ /* @__PURE__ */ jsx34(Text31, { dimColor: !selected, children: "values:" }),
21867
+ /* @__PURE__ */ jsxs31(Text31, { color: selected ? PALETTE.warning : PALETTE.inverse, children: [
21882
21868
  "[",
21883
21869
  prop.values.join(", "),
21884
21870
  "]"
21885
21871
  ] })
21886
21872
  ] }),
21887
21873
  prop.type === "token" && /* @__PURE__ */ jsxs31(Fragment9, { children: [
21888
- /* @__PURE__ */ jsx35(Text32, { dimColor: !selected, children: "kind:" }),
21889
- activeField === "tokenKind" ? /* @__PURE__ */ jsx35(Picker, { value: prop.tokenKind || DESIGN_TOKEN_TYPES2[0], active: true }) : /* @__PURE__ */ jsx35(Text32, { color: selected ? PALETTE.success : PALETTE.inverse, children: prop.tokenKind || "\u2014" })
21874
+ /* @__PURE__ */ jsx34(Text31, { dimColor: !selected, children: "kind:" }),
21875
+ 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" })
21890
21876
  ] })
21891
21877
  ] }),
21892
- selected && /* @__PURE__ */ jsx35(
21878
+ selected && /* @__PURE__ */ jsx34(
21893
21879
  DefaultSubRow,
21894
21880
  {
21895
21881
  prop,
@@ -21898,33 +21884,33 @@ function PropRow({
21898
21884
  cursorVisible
21899
21885
  }
21900
21886
  ),
21901
- selected && descActive && /* @__PURE__ */ jsxs31(Box30, { paddingLeft: 2, flexDirection: "row", children: [
21902
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "desc:" }),
21903
- /* @__PURE__ */ jsxs31(Box30, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
21904
- /* @__PURE__ */ jsx35(Text32, { children: prop.description.slice(0, textCursor) }),
21905
- /* @__PURE__ */ jsx35(Text32, { inverse: cursorVisible, children: prop.description[textCursor] ?? cursor }),
21906
- /* @__PURE__ */ jsx35(Text32, { children: prop.description.slice(textCursor + 1) })
21887
+ selected && descActive && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, flexDirection: "row", children: [
21888
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "desc:" }),
21889
+ /* @__PURE__ */ jsxs31(Box29, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
21890
+ /* @__PURE__ */ jsx34(Text31, { children: prop.description.slice(0, textCursor) }),
21891
+ /* @__PURE__ */ jsx34(Text31, { inverse: cursorVisible, children: prop.description[textCursor] ?? cursor }),
21892
+ /* @__PURE__ */ jsx34(Text31, { children: prop.description.slice(textCursor + 1) })
21907
21893
  ] })
21908
21894
  ] }),
21909
- selected && !descActive && /* @__PURE__ */ jsxs31(Box30, { paddingLeft: 2, gap: 1, children: [
21910
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "desc:" }),
21911
- /* @__PURE__ */ jsx35(Text32, { color: PALETTE.success, children: prop.description || "\u2014" })
21895
+ selected && !descActive && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, gap: 1, children: [
21896
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "desc:" }),
21897
+ /* @__PURE__ */ jsx34(Text31, { color: PALETTE.success, children: prop.description || "\u2014" })
21912
21898
  ] }),
21913
- selected && prop.type === "token" && prop.category === "design" && /* @__PURE__ */ jsxs31(Box30, { paddingLeft: 2, flexDirection: "row", gap: 1, children: [
21914
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "allowed:" }),
21915
- activeField === "allowed" ? /* @__PURE__ */ jsx35(Box30, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "press [t] to edit allowed tokens" }) }) : /* @__PURE__ */ jsx35(Text32, { color: prop.allowed.length > 0 ? PALETTE.info : void 0, dimColor: prop.allowed.length === 0, children: prop.allowed.length > 0 ? prop.allowed.join(", ") : "(any)" })
21899
+ selected && prop.type === "token" && prop.category === "design" && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, flexDirection: "row", gap: 1, children: [
21900
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "allowed:" }),
21901
+ 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)" })
21916
21902
  ] }),
21917
- selected && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx35(Box30, { paddingLeft: 2, children: /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: (() => {
21903
+ selected && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx34(Box29, { paddingLeft: 2, children: /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: (() => {
21918
21904
  const max = Math.max(8, width - 8);
21919
21905
  const text = `~ ${rationale}`;
21920
21906
  return text.length > max ? text.slice(0, max - 1) + "\u2026" : text;
21921
21907
  })() }) }, rowKey ? `rationale-${rowKey}` : void 0),
21922
- selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs31(Box30, { paddingLeft: 2, flexDirection: "column", children: [
21923
- /* @__PURE__ */ jsxs31(Box30, { children: [
21924
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "values:" }),
21925
- activeField === "values" && /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: " [a]dd [e]dit [r]emove [\u2191\u2193] navigate [K/J] reorder" })
21908
+ selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, flexDirection: "column", children: [
21909
+ /* @__PURE__ */ jsxs31(Box29, { children: [
21910
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "values:" }),
21911
+ activeField === "values" && /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: " [a]dd [e]dit [r]emove [\u2191\u2193] navigate [K/J] reorder" })
21926
21912
  ] }),
21927
- /* @__PURE__ */ jsx35(
21913
+ /* @__PURE__ */ jsx34(
21928
21914
  EditableValueList,
21929
21915
  {
21930
21916
  values: prop.values,
@@ -21954,22 +21940,22 @@ function SlotRow({
21954
21940
  pickerCursor
21955
21941
  }) {
21956
21942
  const cursor = cursorVisible ? "\u2588" : " ";
21957
- return /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", width, children: [
21958
- /* @__PURE__ */ jsxs31(Box30, { gap: 1, children: [
21959
- /* @__PURE__ */ jsx35(RowLabel, { name: slot.name, selected }),
21960
- /* @__PURE__ */ jsx35(Text32, { dimColor: !selected, children: "req:" }),
21961
- activeField === "required" ? /* @__PURE__ */ jsx35(Toggle, { value: slot.required, active: true }) : /* @__PURE__ */ jsx35(Toggle, { value: slot.required, active: false })
21943
+ return /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", width, children: [
21944
+ /* @__PURE__ */ jsxs31(Box29, { gap: 1, children: [
21945
+ /* @__PURE__ */ jsx34(RowLabel, { name: slot.name, selected }),
21946
+ /* @__PURE__ */ jsx34(Text31, { dimColor: !selected, children: "req:" }),
21947
+ activeField === "required" ? /* @__PURE__ */ jsx34(Toggle, { value: slot.required, active: true }) : /* @__PURE__ */ jsx34(Toggle, { value: slot.required, active: false })
21962
21948
  ] }),
21963
- !selected && /* @__PURE__ */ jsxs31(Box30, { paddingLeft: 2, gap: 1, children: [
21964
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "allowed:" }),
21965
- slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "(any)" }) : /* @__PURE__ */ jsx35(Text32, { color: PALETTE.info, children: slot.allowedComponents.join(", ") })
21949
+ !selected && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, gap: 1, children: [
21950
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "allowed:" }),
21951
+ slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "(any)" }) : /* @__PURE__ */ jsx34(Text31, { color: PALETTE.info, children: slot.allowedComponents.join(", ") })
21966
21952
  ] }),
21967
- selected && /* @__PURE__ */ jsxs31(Box30, { paddingLeft: 2, flexDirection: "column", children: [
21968
- /* @__PURE__ */ jsxs31(Box30, { children: [
21969
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "allowed:" }),
21970
- activeField === "allowedComponents" && /* @__PURE__ */ jsx35(Text32, { 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" })
21953
+ selected && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, flexDirection: "column", children: [
21954
+ /* @__PURE__ */ jsxs31(Box29, { children: [
21955
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "allowed:" }),
21956
+ 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" })
21971
21957
  ] }),
21972
- /* @__PURE__ */ jsx35(
21958
+ /* @__PURE__ */ jsx34(
21973
21959
  EditableValueList,
21974
21960
  {
21975
21961
  values: slot.allowedComponents,
@@ -21983,36 +21969,36 @@ function SlotRow({
21983
21969
  showAddInput: activeField === "allowedComponents"
21984
21970
  }
21985
21971
  ),
21986
- editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */ jsx35(Box30, { paddingLeft: 2, flexDirection: "column", children: pickerCandidates.length === 0 ? /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "(no valid components to add \u2014 all remaining candidates would create cycles)" }) : (() => {
21972
+ 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)" }) : (() => {
21987
21973
  const filtered = valueText.length === 0 ? pickerCandidates : pickerCandidates.filter((n) => n.toLowerCase().includes(valueText.toLowerCase()));
21988
21974
  if (filtered.length === 0) {
21989
- return /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "(no candidates match \u2014 Enter to add as free text)" });
21975
+ return /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "(no candidates match \u2014 Enter to add as free text)" });
21990
21976
  }
21991
21977
  const cursor2 = pickerCursor % filtered.length;
21992
21978
  const MAX_VISIBLE = 5;
21993
21979
  const start = Math.max(0, Math.min(filtered.length - MAX_VISIBLE, cursor2 - 2));
21994
21980
  const slice = filtered.slice(start, start + MAX_VISIBLE);
21995
- return /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", children: [
21996
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
21981
+ return /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", children: [
21982
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
21997
21983
  slice.map((name, i) => {
21998
21984
  const absIdx = start + i;
21999
21985
  const isCursor = absIdx === cursor2;
22000
- return /* @__PURE__ */ jsx35(Text32, { color: isCursor ? PALETTE.info : void 0, dimColor: !isCursor, children: isCursor ? ` ${figures5.pointer} ${name}` : ` ${name}` }, name);
21986
+ return /* @__PURE__ */ jsx34(Text31, { color: isCursor ? PALETTE.info : void 0, dimColor: !isCursor, children: isCursor ? ` ${figures5.pointer} ${name}` : ` ${name}` }, name);
22001
21987
  })
22002
21988
  ] });
22003
21989
  })() })
22004
21990
  ] }),
22005
- selected && activeField === "description" && /* @__PURE__ */ jsxs31(Box30, { paddingLeft: 2, flexDirection: "row", children: [
22006
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "desc:" }),
22007
- /* @__PURE__ */ jsxs31(Box30, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
22008
- /* @__PURE__ */ jsx35(Text32, { children: slot.description.slice(0, textCursor) }),
22009
- /* @__PURE__ */ jsx35(Text32, { inverse: cursorVisible, children: slot.description[textCursor] ?? cursor }),
22010
- /* @__PURE__ */ jsx35(Text32, { children: slot.description.slice(textCursor + 1) })
21991
+ selected && activeField === "description" && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, flexDirection: "row", children: [
21992
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "desc:" }),
21993
+ /* @__PURE__ */ jsxs31(Box29, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
21994
+ /* @__PURE__ */ jsx34(Text31, { children: slot.description.slice(0, textCursor) }),
21995
+ /* @__PURE__ */ jsx34(Text31, { inverse: cursorVisible, children: slot.description[textCursor] ?? cursor }),
21996
+ /* @__PURE__ */ jsx34(Text31, { children: slot.description.slice(textCursor + 1) })
22011
21997
  ] })
22012
21998
  ] }),
22013
- selected && activeField !== "description" && /* @__PURE__ */ jsxs31(Box30, { paddingLeft: 2, gap: 1, children: [
22014
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "desc:" }),
22015
- /* @__PURE__ */ jsx35(Text32, { color: PALETTE.success, children: slot.description || "\u2014" })
21999
+ selected && activeField !== "description" && /* @__PURE__ */ jsxs31(Box29, { paddingLeft: 2, gap: 1, children: [
22000
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "desc:" }),
22001
+ /* @__PURE__ */ jsx34(Text31, { color: PALETTE.success, children: slot.description || "\u2014" })
22016
22002
  ] })
22017
22003
  ] });
22018
22004
  }
@@ -22796,18 +22782,18 @@ function FieldEditor({
22796
22782
  });
22797
22783
  const innerWidth = Math.max(1, width - 2);
22798
22784
  if (parseErr) {
22799
- return /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
22800
- /* @__PURE__ */ jsx35(Text32, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
22801
- /* @__PURE__ */ jsx35(Text32, { color: PALETTE.error, children: parseErr }),
22802
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "Cannot display structured editor. Fix the JSON first." })
22785
+ return /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
22786
+ /* @__PURE__ */ jsx34(Text31, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
22787
+ /* @__PURE__ */ jsx34(Text31, { color: PALETTE.error, children: parseErr }),
22788
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "Cannot display structured editor. Fix the JSON first." })
22803
22789
  ] });
22804
22790
  }
22805
22791
  if (props.length === 0 && slots.length === 0) {
22806
- return /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
22807
- /* @__PURE__ */ jsx35(Text32, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
22808
- /* @__PURE__ */ jsx35(Text32, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
22809
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "You can add fields manually below or reject this component." }),
22810
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "Ctrl+S to save \xB7 Esc to discard" })
22792
+ return /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
22793
+ /* @__PURE__ */ jsx34(Text31, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
22794
+ /* @__PURE__ */ jsx34(Text31, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
22795
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "You can add fields manually below or reject this component." }),
22796
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "Ctrl+S to save \xB7 Esc to discard" })
22811
22797
  ] });
22812
22798
  }
22813
22799
  const hasEmptyProperties = props.length === 0 && slots.length === 0;
@@ -22859,25 +22845,25 @@ function FieldEditor({
22859
22845
  const scrollStart = selectedRowIdx < 0 ? 0 : Math.max(0, Math.min(selectedRowIdx, rows.length - visibleRows));
22860
22846
  const visibleRowSlice = rows.slice(scrollStart, scrollStart + visibleRows);
22861
22847
  return /* @__PURE__ */ jsxs31(
22862
- Box30,
22848
+ Box29,
22863
22849
  {
22864
22850
  flexDirection: "column",
22865
22851
  width,
22866
22852
  borderStyle: "single",
22867
22853
  borderColor: hasEmptyProperties ? PALETTE.warning : PALETTE.info,
22868
22854
  children: [
22869
- hasEmptyProperties && /* @__PURE__ */ jsx35(Text32, { 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." }),
22870
- /* @__PURE__ */ jsx35(Box30, { flexDirection: "column", width: innerWidth, children: visibleRowSlice.map((row, i) => {
22855
+ 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." }),
22856
+ /* @__PURE__ */ jsx34(Box29, { flexDirection: "column", width: innerWidth, children: visibleRowSlice.map((row, i) => {
22871
22857
  if (row.kind === "header") {
22872
- return /* @__PURE__ */ jsx35(Text32, { bold: true, color: PALETTE.success, children: row.label }, `header-${i}`);
22858
+ return /* @__PURE__ */ jsx34(Text31, { bold: true, color: PALETTE.success, children: row.label }, `header-${i}`);
22873
22859
  }
22874
22860
  if (row.kind === "component-description") {
22875
22861
  const isSelected2 = inComponentDesc;
22876
22862
  const isEditing = isSelected2 && focusLevel === "field" && activeField === "description";
22877
22863
  const desc = editorState.componentDescription;
22878
- return /* @__PURE__ */ jsx35(Box30, { flexDirection: "column", children: /* @__PURE__ */ jsxs31(Box30, { gap: 1, children: [
22879
- /* @__PURE__ */ jsx35(
22880
- Text32,
22864
+ return /* @__PURE__ */ jsx34(Box29, { flexDirection: "column", children: /* @__PURE__ */ jsxs31(Box29, { gap: 1, children: [
22865
+ /* @__PURE__ */ jsx34(
22866
+ Text31,
22881
22867
  {
22882
22868
  color: isSelected2 ? PALETTE.inverse : PALETTE.info,
22883
22869
  bold: isSelected2,
@@ -22885,18 +22871,18 @@ function FieldEditor({
22885
22871
  children: " description: "
22886
22872
  }
22887
22873
  ),
22888
- isEditing ? /* @__PURE__ */ jsxs31(Box30, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
22889
- /* @__PURE__ */ jsx35(Text32, { children: desc.slice(0, textCursor) }),
22890
- /* @__PURE__ */ jsx35(Text32, { inverse: cursorVisible, children: desc[textCursor] ?? (cursorVisible ? "\u2588" : " ") }),
22891
- /* @__PURE__ */ jsx35(Text32, { children: desc.slice(textCursor + 1) })
22892
- ] }) : /* @__PURE__ */ jsx35(Text32, { color: isSelected2 ? PALETTE.warning : PALETTE.inverse, dimColor: !desc, children: desc || "(none \u2014 Return to edit)" })
22874
+ isEditing ? /* @__PURE__ */ jsxs31(Box29, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
22875
+ /* @__PURE__ */ jsx34(Text31, { children: desc.slice(0, textCursor) }),
22876
+ /* @__PURE__ */ jsx34(Text31, { inverse: cursorVisible, children: desc[textCursor] ?? (cursorVisible ? "\u2588" : " ") }),
22877
+ /* @__PURE__ */ jsx34(Text31, { children: desc.slice(textCursor + 1) })
22878
+ ] }) : /* @__PURE__ */ jsx34(Text31, { color: isSelected2 ? PALETTE.warning : PALETTE.inverse, dimColor: !desc, children: desc || "(none \u2014 Return to edit)" })
22893
22879
  ] }) }, `component-description-${i}`);
22894
22880
  }
22895
22881
  if (row.kind === "prop") {
22896
22882
  const p = props[row.idx];
22897
22883
  const isSelected2 = !inSlots && !inComponentDesc && row.idx === propIdx;
22898
22884
  const propMeta = metadata?.props?.[p.name];
22899
- return /* @__PURE__ */ jsx35(
22885
+ return /* @__PURE__ */ jsx34(
22900
22886
  PropRow,
22901
22887
  {
22902
22888
  prop: p,
@@ -22917,7 +22903,7 @@ function FieldEditor({
22917
22903
  const s = slots[row.idx];
22918
22904
  const isSelected = inSlots && row.idx === slotIdx;
22919
22905
  const slotPickerCandidates = isSelected && editingValue?.mode === "add" && activeField === "allowedComponents" && projectSlotGraph && currentComponentName ? computeAllowedComponentCandidates(projectSlotGraph, currentComponentName, slots, s.name) : null;
22920
- return /* @__PURE__ */ jsx35(
22906
+ return /* @__PURE__ */ jsx34(
22921
22907
  SlotRow,
22922
22908
  {
22923
22909
  slot: s,
@@ -22943,50 +22929,50 @@ function FieldEditor({
22943
22929
  const src = metadata?.componentSource ?? null;
22944
22930
  const headerPath = path ?? "<unknown source path>";
22945
22931
  if (!start || !end || !src) {
22946
- return /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
22947
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, bold: true, children: `source: ${headerPath}` }),
22948
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "(no source location captured for this prop)" }),
22949
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "[s] close" })
22932
+ return /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
22933
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, bold: true, children: `source: ${headerPath}` }),
22934
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "(no source location captured for this prop)" }),
22935
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "[s] close" })
22950
22936
  ] });
22951
22937
  }
22952
22938
  const lines = src.split("\n").slice(Math.max(0, start - 1), end);
22953
- return /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
22954
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, bold: true, children: `${headerPath}: lines ${start}\u2013${end}` }),
22955
- lines.map((ln, i) => /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: ln }, `source-line-${i}`)),
22956
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "[s] close \xB7 [Esc] close" })
22939
+ return /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
22940
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, bold: true, children: `${headerPath}: lines ${start}\u2013${end}` }),
22941
+ lines.map((ln, i) => /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: ln }, `source-line-${i}`)),
22942
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "[s] close \xB7 [Esc] close" })
22957
22943
  ] });
22958
22944
  })(),
22959
- showHelp && /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
22960
- /* @__PURE__ */ jsx35(Text32, { bold: true, color: PALETTE.info, children: "Keybindings" }),
22961
- /* @__PURE__ */ jsx35(Text32, { children: " " }),
22962
- /* @__PURE__ */ jsx35(Text32, { bold: true, children: "Row navigation" }),
22963
- /* @__PURE__ */ jsx35(Text32, { children: " \u2191/\u2193 or j/k move between rows" }),
22964
- /* @__PURE__ */ jsx35(Text32, { children: " Enter edit fields on the current row" }),
22965
- /* @__PURE__ */ jsx35(Text32, { children: " Esc exit the panel" }),
22966
- /* @__PURE__ */ jsx35(Text32, { children: " " }),
22967
- /* @__PURE__ */ jsx35(Text32, { bold: true, children: "Field editing" }),
22968
- /* @__PURE__ */ jsx35(Text32, { children: " \u2191/\u2193 or j/k cycle through fields (j/k literal in text inputs)" }),
22969
- /* @__PURE__ */ jsx35(Text32, { children: " \u2190/\u2192 cycle picker values \xB7 move cursor in text inputs" }),
22970
- /* @__PURE__ */ jsx35(Text32, { children: " Space/Enter toggle required" }),
22971
- /* @__PURE__ */ jsx35(Text32, { children: " Type edit description / string default" }),
22972
- /* @__PURE__ */ jsx35(Text32, { children: " Ctrl+S save changes" }),
22973
- /* @__PURE__ */ jsx35(Text32, { children: " Esc exit field-edit back to the row" }),
22974
- /* @__PURE__ */ jsx35(Text32, { children: " " }),
22975
- /* @__PURE__ */ jsx35(Text32, { bold: true, children: "Values / allowedComponents" }),
22976
- /* @__PURE__ */ jsx35(Text32, { children: " a / e / r add \xB7 edit \xB7 remove" }),
22977
- /* @__PURE__ */ jsx35(Text32, { children: " \u2191\u2193 or j/k navigate the list" }),
22978
- /* @__PURE__ */ jsx35(Text32, { children: " K / J reorder up \xB7 down" }),
22979
- /* @__PURE__ */ jsx35(Text32, { children: " " }),
22980
- /* @__PURE__ */ jsx35(Text32, { bold: true, children: "Panels" }),
22981
- /* @__PURE__ */ jsx35(Text32, { children: " s toggle source-view for the current prop" }),
22982
- /* @__PURE__ */ jsx35(Text32, { children: " " + propRationaleKey.padEnd(16) + " toggle prop rationale panel" }),
22983
- /* @__PURE__ */ jsx35(Text32, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
22984
- /* @__PURE__ */ jsx35(Text32, { children: " ? toggle this overlay" }),
22985
- /* @__PURE__ */ jsx35(Text32, { children: " " }),
22986
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: "press ? or Esc to close" })
22945
+ showHelp && /* @__PURE__ */ jsxs31(Box29, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.info, paddingX: 1, children: [
22946
+ /* @__PURE__ */ jsx34(Text31, { bold: true, color: PALETTE.info, children: "Keybindings" }),
22947
+ /* @__PURE__ */ jsx34(Text31, { children: " " }),
22948
+ /* @__PURE__ */ jsx34(Text31, { bold: true, children: "Row navigation" }),
22949
+ /* @__PURE__ */ jsx34(Text31, { children: " \u2191/\u2193 or j/k move between rows" }),
22950
+ /* @__PURE__ */ jsx34(Text31, { children: " Enter edit fields on the current row" }),
22951
+ /* @__PURE__ */ jsx34(Text31, { children: " Esc exit the panel" }),
22952
+ /* @__PURE__ */ jsx34(Text31, { children: " " }),
22953
+ /* @__PURE__ */ jsx34(Text31, { bold: true, children: "Field editing" }),
22954
+ /* @__PURE__ */ jsx34(Text31, { children: " \u2191/\u2193 or j/k cycle through fields (j/k literal in text inputs)" }),
22955
+ /* @__PURE__ */ jsx34(Text31, { children: " \u2190/\u2192 cycle picker values \xB7 move cursor in text inputs" }),
22956
+ /* @__PURE__ */ jsx34(Text31, { children: " Space/Enter toggle required" }),
22957
+ /* @__PURE__ */ jsx34(Text31, { children: " Type edit description / string default" }),
22958
+ /* @__PURE__ */ jsx34(Text31, { children: " Ctrl+S save changes" }),
22959
+ /* @__PURE__ */ jsx34(Text31, { children: " Esc exit field-edit back to the row" }),
22960
+ /* @__PURE__ */ jsx34(Text31, { children: " " }),
22961
+ /* @__PURE__ */ jsx34(Text31, { bold: true, children: "Values / allowedComponents" }),
22962
+ /* @__PURE__ */ jsx34(Text31, { children: " a / e / r add \xB7 edit \xB7 remove" }),
22963
+ /* @__PURE__ */ jsx34(Text31, { children: " \u2191\u2193 or j/k navigate the list" }),
22964
+ /* @__PURE__ */ jsx34(Text31, { children: " K / J reorder up \xB7 down" }),
22965
+ /* @__PURE__ */ jsx34(Text31, { children: " " }),
22966
+ /* @__PURE__ */ jsx34(Text31, { bold: true, children: "Panels" }),
22967
+ /* @__PURE__ */ jsx34(Text31, { children: " s toggle source-view for the current prop" }),
22968
+ /* @__PURE__ */ jsx34(Text31, { children: " " + propRationaleKey.padEnd(16) + " toggle prop rationale panel" }),
22969
+ /* @__PURE__ */ jsx34(Text31, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
22970
+ /* @__PURE__ */ jsx34(Text31, { children: " ? toggle this overlay" }),
22971
+ /* @__PURE__ */ jsx34(Text31, { children: " " }),
22972
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: "press ? or Esc to close" })
22987
22973
  ] }),
22988
- validationError && /* @__PURE__ */ jsx35(Text32, { color: PALETTE.error, children: "\u2717 " + validationError }),
22989
- /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: modeLabel })
22974
+ validationError && /* @__PURE__ */ jsx34(Text31, { color: PALETTE.error, children: "\u2717 " + validationError }),
22975
+ /* @__PURE__ */ jsx34(Text31, { dimColor: true, children: modeLabel })
22990
22976
  ]
22991
22977
  }
22992
22978
  );
@@ -23041,23 +23027,23 @@ var init_wrap_text = __esm({
23041
23027
  });
23042
23028
 
23043
23029
  // packages/experience-design-system-cli/src/analyze/select/tui/components/RationaleLine.tsx
23044
- import { Box as Box31, Text as Text33 } from "ink";
23045
- import { jsx as jsx36, jsxs as jsxs32 } from "react/jsx-runtime";
23030
+ import { Box as Box30, Text as Text32 } from "ink";
23031
+ import { jsx as jsx35, jsxs as jsxs32 } from "react/jsx-runtime";
23046
23032
  function RationaleLine({ line, active }) {
23047
23033
  if (line.kind === "blank") {
23048
- return /* @__PURE__ */ jsx36(Box31, { children: /* @__PURE__ */ jsx36(Text33, { children: " " }) });
23034
+ return /* @__PURE__ */ jsx35(Box30, { children: /* @__PURE__ */ jsx35(Text32, { children: " " }) });
23049
23035
  }
23050
23036
  if (line.kind === "heading") {
23051
- return /* @__PURE__ */ jsx36(Box31, { children: /* @__PURE__ */ jsx36(Text33, { bold: true, color: PALETTE.info, dimColor: !active, children: line.text }) });
23037
+ return /* @__PURE__ */ jsx35(Box30, { children: /* @__PURE__ */ jsx35(Text32, { bold: true, color: PALETTE.info, dimColor: !active, children: line.text }) });
23052
23038
  }
23053
23039
  if (line.kind === "label") {
23054
- return /* @__PURE__ */ jsxs32(Box31, { children: [
23055
- line.prefix && /* @__PURE__ */ jsx36(Text33, { children: line.prefix }),
23056
- /* @__PURE__ */ jsx36(Text33, { bold: true, color: line.color, dimColor: !active, children: line.text }),
23057
- line.suffix && /* @__PURE__ */ jsx36(Text33, { dimColor: true, children: line.suffix })
23040
+ return /* @__PURE__ */ jsxs32(Box30, { children: [
23041
+ line.prefix && /* @__PURE__ */ jsx35(Text32, { children: line.prefix }),
23042
+ /* @__PURE__ */ jsx35(Text32, { bold: true, color: line.color, dimColor: !active, children: line.text }),
23043
+ line.suffix && /* @__PURE__ */ jsx35(Text32, { dimColor: true, children: line.suffix })
23058
23044
  ] });
23059
23045
  }
23060
- return /* @__PURE__ */ jsx36(Box31, { children: /* @__PURE__ */ jsx36(Text33, { dimColor: !active || line.dim, children: line.text }) });
23046
+ return /* @__PURE__ */ jsx35(Box30, { children: /* @__PURE__ */ jsx35(Text32, { dimColor: !active || line.dim, children: line.text }) });
23061
23047
  }
23062
23048
  var init_RationaleLine = __esm({
23063
23049
  "packages/experience-design-system-cli/src/analyze/select/tui/components/RationaleLine.tsx"() {
@@ -23067,8 +23053,8 @@ var init_RationaleLine = __esm({
23067
23053
  });
23068
23054
 
23069
23055
  // packages/experience-design-system-cli/src/analyze/select/tui/components/ComponentRationalePanel.tsx
23070
- import { Box as Box32, Text as Text34 } from "ink";
23071
- import { jsx as jsx37, jsxs as jsxs33 } from "react/jsx-runtime";
23056
+ import { Box as Box31, Text as Text33 } from "ink";
23057
+ import { jsx as jsx36, jsxs as jsxs33 } from "react/jsx-runtime";
23072
23058
  function renderComponentRationaleLines(data, innerWidth) {
23073
23059
  const out = [];
23074
23060
  const pushSection = (heading, body) => {
@@ -23136,7 +23122,7 @@ function ComponentRationalePanel({
23136
23122
  const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
23137
23123
  const visibleEnd = Math.min(totalLines, scrollOffset + contentHeight);
23138
23124
  return /* @__PURE__ */ jsxs33(
23139
- Box32,
23125
+ Box31,
23140
23126
  {
23141
23127
  flexDirection: "column",
23142
23128
  width,
@@ -23144,9 +23130,9 @@ function ComponentRationalePanel({
23144
23130
  borderStyle: "single",
23145
23131
  borderColor: active ? PALETTE.inverse : void 0,
23146
23132
  children: [
23147
- /* @__PURE__ */ jsx37(Box32, { children: /* @__PURE__ */ jsx37(Text34, { bold: true, dimColor: !active, children: `Component rationale: ${data.name}` }) }),
23148
- visible.map((line, i) => /* @__PURE__ */ jsx37(RationaleLine, { line, active }, i)),
23149
- /* @__PURE__ */ jsx37(Box32, { children: overflowed ? /* @__PURE__ */ jsx37(Text34, { dimColor: true, children: `${visibleStart}-${visibleEnd}/${totalLines} [j/k] scroll [I/Esc] close` }) : /* @__PURE__ */ jsx37(Text34, { dimColor: true, children: "[I/Esc] close" }) })
23133
+ /* @__PURE__ */ jsx36(Box31, { children: /* @__PURE__ */ jsx36(Text33, { bold: true, dimColor: !active, children: `Component rationale: ${data.name}` }) }),
23134
+ visible.map((line, i) => /* @__PURE__ */ jsx36(RationaleLine, { line, active }, i)),
23135
+ /* @__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" }) })
23150
23136
  ]
23151
23137
  }
23152
23138
  );
@@ -23163,10 +23149,10 @@ var init_ComponentRationalePanel = __esm({
23163
23149
  });
23164
23150
 
23165
23151
  // packages/experience-design-system-cli/src/analyze/select/tui/components/HighlightedLine.tsx
23166
- import { Text as Text35 } from "ink";
23167
- import { Fragment as Fragment10, jsx as jsx38 } from "react/jsx-runtime";
23152
+ import { Text as Text34 } from "ink";
23153
+ import { Fragment as Fragment10, jsx as jsx37 } from "react/jsx-runtime";
23168
23154
  function HighlightedLine({ parts }) {
23169
- return /* @__PURE__ */ jsx38(Fragment10, { children: parts.map((part, i) => /* @__PURE__ */ jsx38(Text35, { color: part.color, dimColor: part.dim, children: part.text }, i)) });
23155
+ return /* @__PURE__ */ jsx37(Fragment10, { children: parts.map((part, i) => /* @__PURE__ */ jsx37(Text34, { color: part.color, dimColor: part.dim, children: part.text }, i)) });
23170
23156
  }
23171
23157
  var init_HighlightedLine = __esm({
23172
23158
  "packages/experience-design-system-cli/src/analyze/select/tui/components/HighlightedLine.tsx"() {
@@ -23175,8 +23161,8 @@ var init_HighlightedLine = __esm({
23175
23161
  });
23176
23162
 
23177
23163
  // packages/experience-design-system-cli/src/analyze/select/tui/components/ScrollablePanel.tsx
23178
- import { Box as Box33, Text as Text36 } from "ink";
23179
- import { Fragment as Fragment11, jsx as jsx39, jsxs as jsxs34 } from "react/jsx-runtime";
23164
+ import { Box as Box32, Text as Text35 } from "ink";
23165
+ import { Fragment as Fragment11, jsx as jsx38, jsxs as jsxs34 } from "react/jsx-runtime";
23180
23166
  function ScrollablePanel({
23181
23167
  header,
23182
23168
  width,
@@ -23189,12 +23175,12 @@ function ScrollablePanel({
23189
23175
  children
23190
23176
  }) {
23191
23177
  const overflowed = totalLines > height;
23192
- return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
23193
- /* @__PURE__ */ jsxs34(Box33, { children: [
23178
+ return /* @__PURE__ */ jsxs34(Box32, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
23179
+ /* @__PURE__ */ jsxs34(Box32, { children: [
23194
23180
  header,
23195
23181
  overflowed && /* @__PURE__ */ jsxs34(Fragment11, { children: [
23196
- /* @__PURE__ */ jsx39(Box33, { flexGrow: 1 }),
23197
- /* @__PURE__ */ jsx39(Text36, { dimColor: !active, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
23182
+ /* @__PURE__ */ jsx38(Box32, { flexGrow: 1 }),
23183
+ /* @__PURE__ */ jsx38(Text35, { dimColor: !active, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
23198
23184
  ] })
23199
23185
  ] }),
23200
23186
  children
@@ -23207,8 +23193,8 @@ var init_ScrollablePanel = __esm({
23207
23193
  });
23208
23194
 
23209
23195
  // packages/experience-design-system-cli/src/analyze/select/tui/components/JsonPanel.tsx
23210
- import { Box as Box34, Text as Text37 } from "ink";
23211
- import { jsx as jsx40 } from "react/jsx-runtime";
23196
+ import { Box as Box33, Text as Text36 } from "ink";
23197
+ import { jsx as jsx39 } from "react/jsx-runtime";
23212
23198
  function highlightJson(line) {
23213
23199
  const parts = [];
23214
23200
  let remaining = line;
@@ -23246,7 +23232,7 @@ function highlightJson(line) {
23246
23232
  parts.push({ text: remaining[0] });
23247
23233
  remaining = remaining.slice(1);
23248
23234
  }
23249
- return /* @__PURE__ */ jsx40(HighlightedLine, { parts });
23235
+ return /* @__PURE__ */ jsx39(HighlightedLine, { parts });
23250
23236
  }
23251
23237
  function truncateLine(line, maxWidth) {
23252
23238
  if (line.length <= maxWidth) return line;
@@ -23259,10 +23245,10 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
23259
23245
  const totalLines = allLines.length;
23260
23246
  const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
23261
23247
  const visibleEnd = Math.min(totalLines, scrollOffset + height);
23262
- return /* @__PURE__ */ jsx40(
23248
+ return /* @__PURE__ */ jsx39(
23263
23249
  ScrollablePanel,
23264
23250
  {
23265
- header: /* @__PURE__ */ jsx40(Text37, { bold: true, dimColor: !active, children: label }),
23251
+ header: /* @__PURE__ */ jsx39(Text36, { bold: true, dimColor: !active, children: label }),
23266
23252
  width,
23267
23253
  height,
23268
23254
  active,
@@ -23272,7 +23258,7 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
23272
23258
  borderColor: active ? "white" : void 0,
23273
23259
  children: visibleLines.map((line, i) => {
23274
23260
  const truncated = truncateLine(line, innerWidth);
23275
- return /* @__PURE__ */ jsx40(Box34, { children: highlightJson(truncated) }, i);
23261
+ return /* @__PURE__ */ jsx39(Box33, { children: highlightJson(truncated) }, i);
23276
23262
  })
23277
23263
  }
23278
23264
  );
@@ -23286,8 +23272,8 @@ var init_JsonPanel = __esm({
23286
23272
  });
23287
23273
 
23288
23274
  // packages/experience-design-system-cli/src/analyze/select/tui/components/RationalePanel.tsx
23289
- import { Text as Text38 } from "ink";
23290
- import { jsx as jsx41 } from "react/jsx-runtime";
23275
+ import { Text as Text37 } from "ink";
23276
+ import { jsx as jsx40 } from "react/jsx-runtime";
23291
23277
  function renderRationaleLines(rows, innerWidth) {
23292
23278
  const out = [];
23293
23279
  rows.forEach((row, idx) => {
@@ -23320,10 +23306,10 @@ function RationalePanel({
23320
23306
  const visible = allLines.slice(scrollOffset, scrollOffset + height);
23321
23307
  const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
23322
23308
  const visibleEnd = Math.min(totalLines, scrollOffset + height);
23323
- return /* @__PURE__ */ jsx41(
23309
+ return /* @__PURE__ */ jsx40(
23324
23310
  ScrollablePanel,
23325
23311
  {
23326
- header: /* @__PURE__ */ jsx41(Text38, { bold: true, dimColor: !active, children: `RATIONALE \u2014 ${componentName}` }),
23312
+ header: /* @__PURE__ */ jsx40(Text37, { bold: true, dimColor: !active, children: `RATIONALE \u2014 ${componentName}` }),
23327
23313
  width,
23328
23314
  height,
23329
23315
  active,
@@ -23331,7 +23317,7 @@ function RationalePanel({
23331
23317
  visibleStart,
23332
23318
  visibleEnd,
23333
23319
  borderColor: active ? PALETTE.inverse : void 0,
23334
- children: visible.map((line, i) => /* @__PURE__ */ jsx41(RationaleLine, { line, active }, i))
23320
+ children: visible.map((line, i) => /* @__PURE__ */ jsx40(RationaleLine, { line, active }, i))
23335
23321
  }
23336
23322
  );
23337
23323
  }
@@ -23347,8 +23333,8 @@ var init_RationalePanel = __esm({
23347
23333
 
23348
23334
  // packages/experience-design-system-cli/src/analyze/select/tui/components/TokenReviewPanel.tsx
23349
23335
  import figures6 from "figures";
23350
- import { Box as Box35, Text as Text39 } from "ink";
23351
- import { jsx as jsx42, jsxs as jsxs35 } from "react/jsx-runtime";
23336
+ import { Box as Box34, Text as Text38 } from "ink";
23337
+ import { jsx as jsx41, jsxs as jsxs35 } from "react/jsx-runtime";
23352
23338
  function collectTokenSuggestions(entry, availableTokens = []) {
23353
23339
  return Object.entries(entry.$properties).filter(([, def]) => {
23354
23340
  const rawKind = def["$token.kind"];
@@ -23383,7 +23369,7 @@ function TokenReviewPanel({
23383
23369
  const visiblePaths = current.paths.slice(scrollStart, scrollStart + visibleCount);
23384
23370
  const rangeLabel = current.paths.length === 0 ? "no compatible tokens" : `${scrollStart + 1}-${scrollStart + visiblePaths.length} of ${current.paths.length}`;
23385
23371
  return /* @__PURE__ */ jsxs35(
23386
- Box35,
23372
+ Box34,
23387
23373
  {
23388
23374
  flexDirection: "column",
23389
23375
  width,
@@ -23391,25 +23377,25 @@ function TokenReviewPanel({
23391
23377
  borderStyle: "single",
23392
23378
  borderColor: active ? PALETTE.inverse : void 0,
23393
23379
  children: [
23394
- /* @__PURE__ */ jsx42(Text39, { bold: true, dimColor: !active, wrap: "truncate", children: `TOKEN REVIEW \u2014 ${componentName} \xB7 ${current.propName} (edit allowed)` }),
23395
- /* @__PURE__ */ jsx42(Text39, { dimColor: true, wrap: "truncate", children: `select which tokens are allowed (${rangeLabel})` }),
23396
- /* @__PURE__ */ jsx42(Text39, { children: " " }),
23397
- current.paths.length === 0 && /* @__PURE__ */ jsx42(Text39, { dimColor: true, children: "(no compatible tokens found for this token kind)" }),
23380
+ /* @__PURE__ */ jsx41(Text38, { bold: true, dimColor: !active, wrap: "truncate", children: `TOKEN REVIEW \u2014 ${componentName} \xB7 ${current.propName} (edit allowed)` }),
23381
+ /* @__PURE__ */ jsx41(Text38, { dimColor: true, wrap: "truncate", children: `select which tokens are allowed (${rangeLabel})` }),
23382
+ /* @__PURE__ */ jsx41(Text38, { children: " " }),
23383
+ current.paths.length === 0 && /* @__PURE__ */ jsx41(Text38, { dimColor: true, children: "(no compatible tokens found for this token kind)" }),
23398
23384
  visiblePaths.map((path, i) => {
23399
23385
  const pathIndex = scrollStart + i;
23400
23386
  const checked = editSelection.has(path);
23401
23387
  const focused = pathIndex === editCursor;
23402
- return /* @__PURE__ */ jsx42(Box35, { children: /* @__PURE__ */ jsx42(Text39, { color: focused ? PALETTE.info : void 0, bold: focused, dimColor: !active, wrap: "truncate", children: ` [${checked ? "x" : " "}] ${path}` }) }, path);
23388
+ 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);
23403
23389
  }),
23404
- /* @__PURE__ */ jsx42(Text39, { children: " " }),
23405
- /* @__PURE__ */ jsx42(Text39, { dimColor: true, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
23406
- /* @__PURE__ */ jsx42(Text39, { dimColor: true, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
23390
+ /* @__PURE__ */ jsx41(Text38, { children: " " }),
23391
+ /* @__PURE__ */ jsx41(Text38, { dimColor: true, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
23392
+ /* @__PURE__ */ jsx41(Text38, { dimColor: true, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
23407
23393
  ]
23408
23394
  }
23409
23395
  );
23410
23396
  }
23411
23397
  return /* @__PURE__ */ jsxs35(
23412
- Box35,
23398
+ Box34,
23413
23399
  {
23414
23400
  flexDirection: "column",
23415
23401
  width,
@@ -23417,18 +23403,18 @@ function TokenReviewPanel({
23417
23403
  borderStyle: "single",
23418
23404
  borderColor: active ? PALETTE.inverse : void 0,
23419
23405
  children: [
23420
- /* @__PURE__ */ jsx42(Text39, { bold: true, dimColor: !active, children: `TOKEN REVIEW \u2014 ${componentName}` }),
23421
- suggestions.length === 0 && /* @__PURE__ */ jsx42(Text39, { dimColor: true, children: "(no token suggestions for this component)" }),
23406
+ /* @__PURE__ */ jsx41(Text38, { bold: true, dimColor: !active, children: `TOKEN REVIEW \u2014 ${componentName}` }),
23407
+ suggestions.length === 0 && /* @__PURE__ */ jsx41(Text38, { dimColor: true, children: "(no token suggestions for this component)" }),
23422
23408
  suggestions.map((s, i) => {
23423
23409
  const focused = i === selectedRow;
23424
- return /* @__PURE__ */ jsxs35(Box35, { flexDirection: "column", children: [
23425
- /* @__PURE__ */ jsx42(Box35, { children: /* @__PURE__ */ jsx42(Text39, { color: focused ? PALETTE.info : void 0, bold: focused, dimColor: !active, children: `${focused ? figures6.pointer : " "} ${s.propName}` }) }),
23426
- /* @__PURE__ */ jsx42(Text39, { dimColor: true, children: ` suggested: ${s.suggested.join(", ")}` }),
23427
- /* @__PURE__ */ jsx42(Text39, { dimColor: true, children: ` allowed: ${s.allowed.join(", ")}` })
23410
+ return /* @__PURE__ */ jsxs35(Box34, { flexDirection: "column", children: [
23411
+ /* @__PURE__ */ jsx41(Box34, { children: /* @__PURE__ */ jsx41(Text38, { color: focused ? PALETTE.info : void 0, bold: focused, dimColor: !active, children: `${focused ? figures6.pointer : " "} ${s.propName}` }) }),
23412
+ /* @__PURE__ */ jsx41(Text38, { dimColor: true, children: ` suggested: ${s.suggested.join(", ")}` }),
23413
+ /* @__PURE__ */ jsx41(Text38, { dimColor: true, children: ` allowed: ${s.allowed.join(", ")}` })
23428
23414
  ] }, s.propName);
23429
23415
  }),
23430
- /* @__PURE__ */ jsx42(Text39, { children: " " }),
23431
- /* @__PURE__ */ jsx42(Text39, { dimColor: true, children: "[\u2191/\u2193] move [Enter] edit allowed [Esc] close" })
23416
+ /* @__PURE__ */ jsx41(Text38, { children: " " }),
23417
+ /* @__PURE__ */ jsx41(Text38, { dimColor: true, children: "[\u2191/\u2193] move [Enter] edit allowed [Esc] close" })
23432
23418
  ]
23433
23419
  }
23434
23420
  );
@@ -23441,8 +23427,8 @@ var init_TokenReviewPanel = __esm({
23441
23427
  });
23442
23428
 
23443
23429
  // packages/experience-design-system-cli/src/import/tui/steps/review-details-panel.tsx
23444
- import { Box as Box36, Text as Text40 } from "ink";
23445
- import { Fragment as Fragment12, jsx as jsx43, jsxs as jsxs36 } from "react/jsx-runtime";
23430
+ import { Box as Box35, Text as Text39 } from "ink";
23431
+ import { Fragment as Fragment12, jsx as jsx42, jsxs as jsxs36 } from "react/jsx-runtime";
23446
23432
  function ReviewDetailsPanel({
23447
23433
  selectedKey,
23448
23434
  panelOpen,
@@ -23476,7 +23462,7 @@ function ReviewDetailsPanel({
23476
23462
  rationale: s.rationale ?? ""
23477
23463
  }))
23478
23464
  ];
23479
- return /* @__PURE__ */ jsx43(
23465
+ return /* @__PURE__ */ jsx42(
23480
23466
  RationalePanel,
23481
23467
  {
23482
23468
  componentName: componentRationale?.name ?? selectedKey,
@@ -23489,7 +23475,7 @@ function ReviewDetailsPanel({
23489
23475
  );
23490
23476
  }
23491
23477
  if (panelOpen === "component-rationale") {
23492
- return /* @__PURE__ */ jsx43(
23478
+ return /* @__PURE__ */ jsx42(
23493
23479
  ComponentRationalePanel,
23494
23480
  {
23495
23481
  data: componentRationale ?? {
@@ -23513,14 +23499,14 @@ function ReviewDetailsPanel({
23513
23499
  const source = reviewMetadata?.componentSource ?? null;
23514
23500
  const headerPath = path ?? "<unknown source path>";
23515
23501
  const lines = source ? source.split("\n").slice(panelScrollOffset, panelScrollOffset + height) : [];
23516
- return /* @__PURE__ */ jsxs36(Box36, { flexDirection: "column", width, borderStyle: "single", borderColor: sourceBorderColor, paddingX: 1, children: [
23517
- /* @__PURE__ */ jsx43(Text40, { dimColor: true, bold: true, children: `source: ${headerPath}` }),
23518
- source ? lines.map((line, index) => /* @__PURE__ */ jsx43(Text40, { dimColor: true, children: line }, `source-line-${index}`)) : /* @__PURE__ */ jsx43(Text40, { dimColor: true, children: "(no source captured)" }),
23519
- /* @__PURE__ */ jsx43(Text40, { dimColor: true, children: "[s/Esc] close" })
23502
+ return /* @__PURE__ */ jsxs36(Box35, { flexDirection: "column", width, borderStyle: "single", borderColor: sourceBorderColor, paddingX: 1, children: [
23503
+ /* @__PURE__ */ jsx42(Text39, { dimColor: true, bold: true, children: `source: ${headerPath}` }),
23504
+ source ? lines.map((line, index) => /* @__PURE__ */ jsx42(Text39, { dimColor: true, children: line }, `source-line-${index}`)) : /* @__PURE__ */ jsx42(Text39, { dimColor: true, children: "(no source captured)" }),
23505
+ /* @__PURE__ */ jsx42(Text39, { dimColor: true, children: "[s/Esc] close" })
23520
23506
  ] });
23521
23507
  }
23522
23508
  if (panelOpen === "token-review") {
23523
- return /* @__PURE__ */ jsx43(
23509
+ return /* @__PURE__ */ jsx42(
23524
23510
  TokenReviewPanel,
23525
23511
  {
23526
23512
  componentName: selectedKey,
@@ -23536,7 +23522,7 @@ function ReviewDetailsPanel({
23536
23522
  );
23537
23523
  }
23538
23524
  if (showJson) {
23539
- return /* @__PURE__ */ jsx43(
23525
+ return /* @__PURE__ */ jsx42(
23540
23526
  JsonPanel,
23541
23527
  {
23542
23528
  label: "GENERATED DEFINITION (read-only)",
@@ -23548,7 +23534,7 @@ function ReviewDetailsPanel({
23548
23534
  }
23549
23535
  );
23550
23536
  }
23551
- return /* @__PURE__ */ jsx43(Fragment12, { children: editor });
23537
+ return /* @__PURE__ */ jsx42(Fragment12, { children: editor });
23552
23538
  }
23553
23539
  var init_review_details_panel = __esm({
23554
23540
  "packages/experience-design-system-cli/src/import/tui/steps/review-details-panel.tsx"() {
@@ -23561,7 +23547,7 @@ var init_review_details_panel = __esm({
23561
23547
  });
23562
23548
 
23563
23549
  // packages/experience-design-system-cli/src/import/tui/components/ReviewDetailsEditor.tsx
23564
- import { jsx as jsx44 } from "react/jsx-runtime";
23550
+ import { jsx as jsx43 } from "react/jsx-runtime";
23565
23551
  import { createElement as createElement5 } from "react";
23566
23552
  function toFieldEditorMetadata(reviewMetadata) {
23567
23553
  if (!reviewMetadata) return void 0;
@@ -23594,7 +23580,7 @@ function ReviewDetailsEditor({
23594
23580
  jsonScrollOffset,
23595
23581
  currentTokenSuggestions
23596
23582
  } = reviewEditor;
23597
- return /* @__PURE__ */ jsx44(
23583
+ return /* @__PURE__ */ jsx43(
23598
23584
  ReviewDetailsPanel,
23599
23585
  {
23600
23586
  selectedKey,
@@ -23637,8 +23623,8 @@ var init_ReviewDetailsEditor = __esm({
23637
23623
  });
23638
23624
 
23639
23625
  // packages/experience-design-system-cli/src/import/tui/components/ReviewComponentPanel.tsx
23640
- import { Box as Box37, Text as Text41 } from "ink";
23641
- import { Fragment as Fragment13, jsx as jsx45, jsxs as jsxs37 } from "react/jsx-runtime";
23626
+ import { Box as Box36, Text as Text40 } from "ink";
23627
+ import { Fragment as Fragment13, jsx as jsx44, jsxs as jsxs37 } from "react/jsx-runtime";
23642
23628
  function buildReviewFieldEditor(reviewEditor, selectedJson, onExit, overrides = {}) {
23643
23629
  return {
23644
23630
  value: reviewEditor.draftValue || selectedJson,
@@ -23678,17 +23664,17 @@ function ReviewEmptyComponentsWarning({
23678
23664
  hidden
23679
23665
  }) {
23680
23666
  if (hidden || count === 0) return null;
23681
- return /* @__PURE__ */ jsx45(Text41, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
23667
+ return /* @__PURE__ */ jsx44(Text40, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
23682
23668
  }
23683
23669
  function ReviewNoSelection() {
23684
- return /* @__PURE__ */ jsx45(Box37, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx45(Text41, { dimColor: true, children: "No component selected" }) });
23670
+ return /* @__PURE__ */ jsx44(Box36, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx44(Text40, { dimColor: true, children: "No component selected" }) });
23685
23671
  }
23686
23672
  function ReviewFinalizeError({
23687
23673
  message,
23688
23674
  hidden
23689
23675
  }) {
23690
23676
  if (hidden || !message) return null;
23691
- return /* @__PURE__ */ jsx45(Text41, { color: PALETTE.error, children: `\u26A0 ${message}` });
23677
+ return /* @__PURE__ */ jsx44(Text40, { color: PALETTE.error, children: `\u26A0 ${message}` });
23692
23678
  }
23693
23679
  function ReviewPanelFooter({
23694
23680
  reviewEditor,
@@ -23699,8 +23685,8 @@ function ReviewPanelFooter({
23699
23685
  }) {
23700
23686
  return /* @__PURE__ */ jsxs37(Fragment13, { children: [
23701
23687
  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" : ""),
23702
- livePreview.status === "running" && /* @__PURE__ */ jsx45(Text41, { children: ` ${livePreviewSpinner} live preview` }),
23703
- livePreview.disabled && /* @__PURE__ */ jsx45(Text41, { children: " \xB7 live preview disabled" })
23688
+ livePreview.status === "running" && /* @__PURE__ */ jsx44(Text40, { children: ` ${livePreviewSpinner} live preview` }),
23689
+ livePreview.disabled && /* @__PURE__ */ jsx44(Text40, { children: " \xB7 live preview disabled" })
23704
23690
  ] });
23705
23691
  }
23706
23692
  function ReviewComponentPanel({
@@ -23722,11 +23708,11 @@ function ReviewComponentPanel({
23722
23708
  }) {
23723
23709
  const propCount = Object.keys(selectedEntry.$properties).length;
23724
23710
  const slotCount = selectedEntry.$slots ? Object.keys(selectedEntry.$slots).length : 0;
23725
- return /* @__PURE__ */ jsxs37(Box37, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: [
23726
- /* @__PURE__ */ jsxs37(Box37, { children: [
23727
- /* @__PURE__ */ jsx45(Text41, { bold: true, children: selectedKey }),
23728
- /* @__PURE__ */ jsx45(Box37, { flexGrow: 1 }),
23729
- /* @__PURE__ */ jsxs37(Text41, { dimColor: true, children: [
23711
+ return /* @__PURE__ */ jsxs37(Box36, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: [
23712
+ /* @__PURE__ */ jsxs37(Box36, { children: [
23713
+ /* @__PURE__ */ jsx44(Text40, { bold: true, children: selectedKey }),
23714
+ /* @__PURE__ */ jsx44(Box36, { flexGrow: 1 }),
23715
+ /* @__PURE__ */ jsxs37(Text40, { dimColor: true, children: [
23730
23716
  propCount,
23731
23717
  " prop",
23732
23718
  propCount !== 1 ? "s" : "",
@@ -23735,7 +23721,7 @@ function ReviewComponentPanel({
23735
23721
  sidebarFocused ? "[Tab] focus panel" : "[Tab] focus list"
23736
23722
  ] })
23737
23723
  ] }),
23738
- /* @__PURE__ */ jsx45(
23724
+ /* @__PURE__ */ jsx44(
23739
23725
  ReviewDetailsEditor,
23740
23726
  {
23741
23727
  selectedKey,
@@ -23750,8 +23736,8 @@ function ReviewComponentPanel({
23750
23736
  fieldEditor
23751
23737
  }
23752
23738
  ),
23753
- saveError && /* @__PURE__ */ jsx45(Text41, { color: PALETTE.error, children: "\u2717 " + saveError }),
23754
- /* @__PURE__ */ jsx45(Text41, { dimColor: true, children: /* @__PURE__ */ jsx45(
23739
+ saveError && /* @__PURE__ */ jsx44(Text40, { color: PALETTE.error, children: "\u2717 " + saveError }),
23740
+ /* @__PURE__ */ jsx44(Text40, { dimColor: true, children: /* @__PURE__ */ jsx44(
23755
23741
  ReviewPanelFooter,
23756
23742
  {
23757
23743
  reviewEditor,
@@ -23773,30 +23759,30 @@ var init_ReviewComponentPanel = __esm({
23773
23759
  });
23774
23760
 
23775
23761
  // packages/experience-design-system-cli/src/analyze/select/tui/components/StatusBar.tsx
23776
- import { Box as Box38, Text as Text42 } from "ink";
23777
- import { jsx as jsx46, jsxs as jsxs38 } from "react/jsx-runtime";
23762
+ import { Box as Box37, Text as Text41 } from "ink";
23763
+ import { jsx as jsx45, jsxs as jsxs38 } from "react/jsx-runtime";
23778
23764
  function StatusBar({ accepted, rejected, reviewed, needsReview }) {
23779
23765
  const allResolved = needsReview === 0;
23780
- return /* @__PURE__ */ jsxs38(Box38, { gap: 2, flexWrap: "wrap", children: [
23781
- /* @__PURE__ */ jsxs38(Text42, { color: PALETTE.success, children: [
23766
+ return /* @__PURE__ */ jsxs38(Box37, { gap: 2, flexWrap: "wrap", children: [
23767
+ /* @__PURE__ */ jsxs38(Text41, { color: PALETTE.success, children: [
23782
23768
  accepted,
23783
23769
  " accepted"
23784
23770
  ] }),
23785
- /* @__PURE__ */ jsxs38(Text42, { color: PALETTE.error, children: [
23771
+ /* @__PURE__ */ jsxs38(Text41, { color: PALETTE.error, children: [
23786
23772
  rejected,
23787
23773
  " rejected"
23788
23774
  ] }),
23789
- /* @__PURE__ */ jsxs38(Text42, { dimColor: true, children: [
23775
+ /* @__PURE__ */ jsxs38(Text41, { dimColor: true, children: [
23790
23776
  needsReview,
23791
23777
  " pending"
23792
23778
  ] }),
23793
- /* @__PURE__ */ jsxs38(Text42, { color: PALETTE.info, children: [
23779
+ /* @__PURE__ */ jsxs38(Text41, { color: PALETTE.info, children: [
23794
23780
  reviewed,
23795
23781
  " reviewed"
23796
23782
  ] }),
23797
- /* @__PURE__ */ jsx46(Text42, { dimColor: true, children: "\xB7" }),
23798
- /* @__PURE__ */ jsx46(Text42, { dimColor: true, children: "[A] accept all" }),
23799
- /* @__PURE__ */ jsx46(Text42, { bold: allResolved, color: allResolved ? PALETTE.success : PALETTE.fg, children: "[F] finalize" })
23783
+ /* @__PURE__ */ jsx45(Text41, { dimColor: true, children: "\xB7" }),
23784
+ /* @__PURE__ */ jsx45(Text41, { dimColor: true, children: "[A] accept all" }),
23785
+ /* @__PURE__ */ jsx45(Text41, { bold: allResolved, color: allResolved ? PALETTE.success : PALETTE.fg, children: "[F] finalize" })
23800
23786
  ] });
23801
23787
  }
23802
23788
  var init_StatusBar = __esm({
@@ -23807,8 +23793,8 @@ var init_StatusBar = __esm({
23807
23793
  });
23808
23794
 
23809
23795
  // packages/experience-design-system-cli/src/import/tui/components/ReviewStatus.tsx
23810
- import { Box as Box39, Text as Text43 } from "ink";
23811
- import { jsx as jsx47, jsxs as jsxs39 } from "react/jsx-runtime";
23796
+ import { Box as Box38, Text as Text42 } from "ink";
23797
+ import { jsx as jsx46, jsxs as jsxs39 } from "react/jsx-runtime";
23812
23798
  function countReviewStatuses(entries) {
23813
23799
  return entries.reduce(
23814
23800
  (counts, entry) => {
@@ -23826,7 +23812,7 @@ function ReviewStatusBar({
23826
23812
  onFinalize
23827
23813
  }) {
23828
23814
  const { accepted, rejected, needsReview } = countReviewStatuses(entries);
23829
- return /* @__PURE__ */ jsx47(
23815
+ return /* @__PURE__ */ jsx46(
23830
23816
  StatusBar,
23831
23817
  {
23832
23818
  accepted,
@@ -23839,13 +23825,13 @@ function ReviewStatusBar({
23839
23825
  );
23840
23826
  }
23841
23827
  function ReviewLoadingState() {
23842
- return /* @__PURE__ */ jsx47(Box39, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx47(Text43, { dimColor: true, children: "Loading generated definitions..." }) });
23828
+ return /* @__PURE__ */ jsx46(Box38, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx46(Text42, { dimColor: true, children: "Loading generated definitions..." }) });
23843
23829
  }
23844
23830
  function ReviewLoadError({ message }) {
23845
- return /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
23846
- /* @__PURE__ */ jsx47(Text43, { color: PALETTE.error, children: message }),
23847
- /* @__PURE__ */ jsx47(Text43, { children: " " }),
23848
- /* @__PURE__ */ jsx47(Text43, { dimColor: true, children: "[q / Enter / Esc] Quit" })
23831
+ return /* @__PURE__ */ jsxs39(Box38, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
23832
+ /* @__PURE__ */ jsx46(Text42, { color: PALETTE.error, children: message }),
23833
+ /* @__PURE__ */ jsx46(Text42, { children: " " }),
23834
+ /* @__PURE__ */ jsx46(Text42, { dimColor: true, children: "[q / Enter / Esc] Quit" })
23849
23835
  ] });
23850
23836
  }
23851
23837
  var init_ReviewStatus = __esm({
@@ -23980,8 +23966,8 @@ var init_runLivePreview = __esm({
23980
23966
  });
23981
23967
 
23982
23968
  // packages/experience-design-system-cli/src/analyze/select/tui/components/FinalizeDialog.tsx
23983
- import { Box as Box40, Text as Text44 } from "ink";
23984
- import { Fragment as Fragment14, jsx as jsx48, jsxs as jsxs40 } from "react/jsx-runtime";
23969
+ import { Box as Box39, Text as Text43 } from "ink";
23970
+ import { Fragment as Fragment14, jsx as jsx47, jsxs as jsxs40 } from "react/jsx-runtime";
23985
23971
  function FinalizeDialog({
23986
23972
  accepted,
23987
23973
  rejected,
@@ -24009,55 +23995,55 @@ function FinalizeDialog({
24009
23995
  const windowed = removed.slice(offset, offset + FINALIZE_REMOVED_WINDOW);
24010
23996
  const hasMoreBelow = offset + FINALIZE_REMOVED_WINDOW < removed.length;
24011
23997
  const hasMoreAbove = offset > 0;
24012
- return /* @__PURE__ */ jsxs40(Box40, { flexDirection: "column", borderStyle: "round", padding: 1, width: 58, children: [
24013
- /* @__PURE__ */ jsx48(Text44, { bold: true, children: "\u2500".repeat(17) + " Finalize " + "\u2500".repeat(17) }),
24014
- /* @__PURE__ */ jsx48(Text44, { children: " " }),
24015
- /* @__PURE__ */ jsxs40(Text44, { children: [
24016
- /* @__PURE__ */ jsxs40(Text44, { color: PALETTE.success, children: [
23998
+ return /* @__PURE__ */ jsxs40(Box39, { flexDirection: "column", borderStyle: "round", padding: 1, width: 58, children: [
23999
+ /* @__PURE__ */ jsx47(Text43, { bold: true, children: "\u2500".repeat(17) + " Finalize " + "\u2500".repeat(17) }),
24000
+ /* @__PURE__ */ jsx47(Text43, { children: " " }),
24001
+ /* @__PURE__ */ jsxs40(Text43, { children: [
24002
+ /* @__PURE__ */ jsxs40(Text43, { color: PALETTE.success, children: [
24017
24003
  accepted,
24018
24004
  " accepted"
24019
24005
  ] }),
24020
- /* @__PURE__ */ jsx48(Text44, { children: " \xB7 " }),
24021
- /* @__PURE__ */ jsxs40(Text44, { color: PALETTE.error, children: [
24006
+ /* @__PURE__ */ jsx47(Text43, { children: " \xB7 " }),
24007
+ /* @__PURE__ */ jsxs40(Text43, { color: PALETTE.error, children: [
24022
24008
  rejected,
24023
24009
  " rejected"
24024
24010
  ] }),
24025
- /* @__PURE__ */ jsx48(Text44, { children: " \xB7 " }),
24026
- /* @__PURE__ */ jsxs40(Text44, { dimColor: true, children: [
24011
+ /* @__PURE__ */ jsx47(Text43, { children: " \xB7 " }),
24012
+ /* @__PURE__ */ jsxs40(Text43, { dimColor: true, children: [
24027
24013
  needsReview,
24028
24014
  " unresolved"
24029
24015
  ] })
24030
24016
  ] }),
24031
- /* @__PURE__ */ jsx48(Text44, { children: " " }),
24017
+ /* @__PURE__ */ jsx47(Text43, { children: " " }),
24032
24018
  noneAccepted && /* @__PURE__ */ jsxs40(Fragment14, { children: [
24033
- /* @__PURE__ */ jsx48(Text44, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
24034
- /* @__PURE__ */ jsx48(Text44, { color: PALETTE.warning, children: " Accept at least one component ([a] a row, [A] accept all) to push." }),
24035
- /* @__PURE__ */ jsx48(Text44, { children: " " })
24019
+ /* @__PURE__ */ jsx47(Text43, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
24020
+ /* @__PURE__ */ jsx47(Text43, { color: PALETTE.warning, children: " Accept at least one component ([a] a row, [A] accept all) to push." }),
24021
+ /* @__PURE__ */ jsx47(Text43, { children: " " })
24036
24022
  ] }),
24037
24023
  !allResolved && /* @__PURE__ */ jsxs40(Fragment14, { children: [
24038
- /* @__PURE__ */ jsx48(Text44, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
24039
- /* @__PURE__ */ jsx48(Text44, { color: PALETTE.warning, children: " Only explicitly accepted components ship." }),
24040
- /* @__PURE__ */ jsx48(Text44, { children: " " })
24024
+ /* @__PURE__ */ jsx47(Text43, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
24025
+ /* @__PURE__ */ jsx47(Text43, { color: PALETTE.warning, children: " Only explicitly accepted components ship." }),
24026
+ /* @__PURE__ */ jsx47(Text43, { children: " " })
24041
24027
  ] }),
24042
24028
  previewStatus === "running" && /* @__PURE__ */ jsxs40(Fragment14, { children: [
24043
- /* @__PURE__ */ jsx48(Text44, { dimColor: true, children: "Previewing deletions against the target space\u2026" }),
24044
- /* @__PURE__ */ jsx48(Text44, { children: " " })
24029
+ /* @__PURE__ */ jsx47(Text43, { dimColor: true, children: "Previewing deletions against the target space\u2026" }),
24030
+ /* @__PURE__ */ jsx47(Text43, { children: " " })
24045
24031
  ] }),
24046
24032
  previewStatus === "error" && /* @__PURE__ */ jsxs40(Fragment14, { children: [
24047
- /* @__PURE__ */ jsx48(Text44, { color: PALETTE.warning, children: "\u26A0 Could not preview deletions (the push will still proceed)." }),
24048
- /* @__PURE__ */ jsx48(Text44, { children: " " })
24033
+ /* @__PURE__ */ jsx47(Text43, { color: PALETTE.warning, children: "\u26A0 Could not preview deletions (the push will still proceed)." }),
24034
+ /* @__PURE__ */ jsx47(Text43, { children: " " })
24049
24035
  ] }),
24050
24036
  previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs40(Fragment14, { children: [
24051
- /* @__PURE__ */ jsx48(Text44, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
24052
- hasMoreAbove && /* @__PURE__ */ jsx48(Text44, { dimColor: true, children: " \u2191 more above" }),
24053
- windowed.map((rc) => /* @__PURE__ */ jsx48(Text44, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
24054
- hasMoreBelow && /* @__PURE__ */ jsx48(Text44, { dimColor: true, children: " \u2193 more below" }),
24055
- removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx48(Text44, { dimColor: true, children: " [j/k] scroll deletions" }),
24056
- /* @__PURE__ */ jsx48(Text44, { children: " " })
24037
+ /* @__PURE__ */ jsx47(Text43, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
24038
+ hasMoreAbove && /* @__PURE__ */ jsx47(Text43, { dimColor: true, children: " \u2191 more above" }),
24039
+ windowed.map((rc) => /* @__PURE__ */ jsx47(Text43, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
24040
+ hasMoreBelow && /* @__PURE__ */ jsx47(Text43, { dimColor: true, children: " \u2193 more below" }),
24041
+ removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx47(Text43, { dimColor: true, children: " [j/k] scroll deletions" }),
24042
+ /* @__PURE__ */ jsx47(Text43, { children: " " })
24057
24043
  ] }),
24058
- /* @__PURE__ */ jsx48(Text44, { children: noneAccepted ? "Confirm exit with nothing accepted?" : allResolved ? "Save decisions and exit? All components resolved." : "Save decisions and exit?" }),
24059
- /* @__PURE__ */ jsx48(Text44, { children: " " }),
24060
- /* @__PURE__ */ jsx48(Text44, { children: " [y / Enter] Confirm [n / Esc] Cancel" })
24044
+ /* @__PURE__ */ jsx47(Text43, { children: noneAccepted ? "Confirm exit with nothing accepted?" : allResolved ? "Save decisions and exit? All components resolved." : "Save decisions and exit?" }),
24045
+ /* @__PURE__ */ jsx47(Text43, { children: " " }),
24046
+ /* @__PURE__ */ jsx47(Text43, { children: " [y / Enter] Confirm [n / Esc] Cancel" })
24061
24047
  ] });
24062
24048
  }
24063
24049
  var FINALIZE_REMOVED_WINDOW;
@@ -24562,8 +24548,8 @@ var init_useReviewSurfaceState = __esm({
24562
24548
  });
24563
24549
 
24564
24550
  // packages/experience-design-system-cli/src/analyze/select/tui/components/QuitDialog.tsx
24565
- import { Box as Box41, Text as Text45 } from "ink";
24566
- import { Fragment as Fragment15, jsx as jsx49, jsxs as jsxs41 } from "react/jsx-runtime";
24551
+ import { Box as Box40, Text as Text44 } from "ink";
24552
+ import { Fragment as Fragment15, jsx as jsx48, jsxs as jsxs41 } from "react/jsx-runtime";
24567
24553
  function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
24568
24554
  useImmediateInput((input, key) => {
24569
24555
  if (input === "y" || key.return) {
@@ -24572,16 +24558,16 @@ function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
24572
24558
  onCancel();
24573
24559
  }
24574
24560
  });
24575
- return /* @__PURE__ */ jsxs41(Box41, { flexDirection: "column", borderStyle: "round", padding: 1, width: 50, children: [
24576
- /* @__PURE__ */ jsx49(Text45, { bold: true, children: "\u2500".repeat(19) + " Quit " + "\u2500".repeat(19) }),
24577
- /* @__PURE__ */ jsx49(Text45, { children: " " }),
24561
+ return /* @__PURE__ */ jsxs41(Box40, { flexDirection: "column", borderStyle: "round", padding: 1, width: 50, children: [
24562
+ /* @__PURE__ */ jsx48(Text44, { bold: true, children: "\u2500".repeat(19) + " Quit " + "\u2500".repeat(19) }),
24563
+ /* @__PURE__ */ jsx48(Text44, { children: " " }),
24578
24564
  hasUnsavedDrafts ? /* @__PURE__ */ jsxs41(Fragment15, { children: [
24579
- /* @__PURE__ */ jsx49(Text45, { children: "You have unsaved draft edits." }),
24580
- /* @__PURE__ */ jsx49(Text45, { children: "Session state is preserved \u2014 you can resume" }),
24581
- /* @__PURE__ */ jsx49(Text45, { children: "by running the same review command again." })
24582
- ] }) : /* @__PURE__ */ jsx49(Text45, { children: "Session is saved. Quit without finalizing?" }),
24583
- /* @__PURE__ */ jsx49(Text45, { children: " " }),
24584
- /* @__PURE__ */ jsx49(Text45, { children: " [y / Enter] Quit [n / Esc] Stay" })
24565
+ /* @__PURE__ */ jsx48(Text44, { children: "You have unsaved draft edits." }),
24566
+ /* @__PURE__ */ jsx48(Text44, { children: "Session state is preserved \u2014 you can resume" }),
24567
+ /* @__PURE__ */ jsx48(Text44, { children: "by running the same review command again." })
24568
+ ] }) : /* @__PURE__ */ jsx48(Text44, { children: "Session is saved. Quit without finalizing?" }),
24569
+ /* @__PURE__ */ jsx48(Text44, { children: " " }),
24570
+ /* @__PURE__ */ jsx48(Text44, { children: " [y / Enter] Quit [n / Esc] Stay" })
24585
24571
  ] });
24586
24572
  }
24587
24573
  var init_QuitDialog = __esm({
@@ -24592,8 +24578,8 @@ var init_QuitDialog = __esm({
24592
24578
  });
24593
24579
 
24594
24580
  // packages/experience-design-system-cli/src/import/tui/components/ReviewDialogs.tsx
24595
- import { Box as Box42, Text as Text46 } from "ink";
24596
- import { Fragment as Fragment16, jsx as jsx50, jsxs as jsxs42 } from "react/jsx-runtime";
24581
+ import { Box as Box41, Text as Text45 } from "ink";
24582
+ import { Fragment as Fragment16, jsx as jsx49, jsxs as jsxs42 } from "react/jsx-runtime";
24597
24583
  function ReviewFinalizeDialogs({
24598
24584
  showFinalize,
24599
24585
  showQuit,
@@ -24608,7 +24594,7 @@ function ReviewFinalizeDialogs({
24608
24594
  }) {
24609
24595
  const { accepted, rejected, needsReview } = countReviewStatuses(components);
24610
24596
  return /* @__PURE__ */ jsxs42(Fragment16, { children: [
24611
- showFinalize && /* @__PURE__ */ jsx50(
24597
+ showFinalize && /* @__PURE__ */ jsx49(
24612
24598
  FinalizeDialog,
24613
24599
  {
24614
24600
  accepted,
@@ -24621,7 +24607,7 @@ function ReviewFinalizeDialogs({
24621
24607
  onCancel: onFinalizeCancel
24622
24608
  }
24623
24609
  ),
24624
- showQuit && /* @__PURE__ */ jsx50(QuitDialog, { hasUnsavedDrafts: false, onConfirm: onQuitConfirm, onCancel: onQuitCancel })
24610
+ showQuit && /* @__PURE__ */ jsx49(QuitDialog, { hasUnsavedDrafts: false, onConfirm: onQuitConfirm, onCancel: onQuitCancel })
24625
24611
  ] });
24626
24612
  }
24627
24613
  function ReviewStepDialogs({
@@ -24631,7 +24617,7 @@ function ReviewStepDialogs({
24631
24617
  onFinalize,
24632
24618
  onQuit
24633
24619
  }) {
24634
- return /* @__PURE__ */ jsx50(
24620
+ return /* @__PURE__ */ jsx49(
24635
24621
  ReviewFinalizeDialogs,
24636
24622
  {
24637
24623
  showFinalize: surfaceState.showFinalize,
@@ -24649,12 +24635,12 @@ function ReviewStepDialogs({
24649
24635
  }
24650
24636
  function ReviewReloadDialog({ open }) {
24651
24637
  if (!open) return null;
24652
- return /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
24653
- /* @__PURE__ */ jsx50(Text46, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
24654
- /* @__PURE__ */ jsx50(Text46, { children: "Unsaved in-memory changes will be lost." }),
24655
- /* @__PURE__ */ jsx50(Text46, { children: " " }),
24656
- /* @__PURE__ */ jsx50(Text46, { children: " [Enter] Confirm" }),
24657
- /* @__PURE__ */ jsx50(Text46, { children: " [Esc] Cancel" })
24638
+ return /* @__PURE__ */ jsxs42(Box41, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
24639
+ /* @__PURE__ */ jsx49(Text45, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
24640
+ /* @__PURE__ */ jsx49(Text45, { children: "Unsaved in-memory changes will be lost." }),
24641
+ /* @__PURE__ */ jsx49(Text45, { children: " " }),
24642
+ /* @__PURE__ */ jsx49(Text45, { children: " [Enter] Confirm" }),
24643
+ /* @__PURE__ */ jsx49(Text45, { children: " [Esc] Cancel" })
24658
24644
  ] });
24659
24645
  }
24660
24646
  var init_ReviewDialogs = __esm({
@@ -25062,8 +25048,8 @@ var init_useReviewPreview = __esm({
25062
25048
  });
25063
25049
 
25064
25050
  // packages/experience-design-system-cli/src/import/tui/components/LivePreviewSummary.tsx
25065
- import { Box as Box43, Text as Text47 } from "ink";
25066
- import { jsx as jsx51, jsxs as jsxs43 } from "react/jsx-runtime";
25051
+ import { Box as Box42, Text as Text46 } from "ink";
25052
+ import { jsx as jsx50, jsxs as jsxs43 } from "react/jsx-runtime";
25067
25053
  function LivePreviewSummary({
25068
25054
  enabled,
25069
25055
  previewAnnotations,
@@ -25077,19 +25063,19 @@ function LivePreviewSummary({
25077
25063
  const counts = { new: 0, changed: 0, removed: 0, breaking: 0 };
25078
25064
  for (const annotation of previewAnnotations.values()) counts[annotation] += 1;
25079
25065
  const hasCounts = counts.new + counts.changed + counts.removed + counts.breaking > 0;
25080
- if (disabled) return /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: "Preview: disabled (creds rejected)" });
25081
- if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: `Preview: ${spinner} running...` });
25066
+ if (disabled) return /* @__PURE__ */ jsx50(Text46, { dimColor: true, children: "Preview: disabled (creds rejected)" });
25067
+ if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx50(Text46, { dimColor: true, children: `Preview: ${spinner} running...` });
25082
25068
  if (!hasCounts) return null;
25083
- return /* @__PURE__ */ jsxs43(Box43, { children: [
25084
- /* @__PURE__ */ jsx51(Text47, { children: "Preview: " }),
25085
- /* @__PURE__ */ jsx51(Text47, { color: PALETTE.success, children: `${counts.new} new` }),
25086
- /* @__PURE__ */ jsx51(Text47, { children: " \xB7 " }),
25087
- /* @__PURE__ */ jsx51(Text47, { color: PALETTE.warning, children: `${counts.changed} changed` }),
25088
- /* @__PURE__ */ jsx51(Text47, { children: " \xB7 " }),
25089
- /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: `${counts.removed} removed` }),
25090
- showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: " ([d] removed list)" }),
25091
- /* @__PURE__ */ jsx51(Text47, { children: " \xB7 " }),
25092
- /* @__PURE__ */ jsx51(Text47, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
25069
+ return /* @__PURE__ */ jsxs43(Box42, { children: [
25070
+ /* @__PURE__ */ jsx50(Text46, { children: "Preview: " }),
25071
+ /* @__PURE__ */ jsx50(Text46, { color: PALETTE.success, children: `${counts.new} new` }),
25072
+ /* @__PURE__ */ jsx50(Text46, { children: " \xB7 " }),
25073
+ /* @__PURE__ */ jsx50(Text46, { color: PALETTE.warning, children: `${counts.changed} changed` }),
25074
+ /* @__PURE__ */ jsx50(Text46, { children: " \xB7 " }),
25075
+ /* @__PURE__ */ jsx50(Text46, { dimColor: true, children: `${counts.removed} removed` }),
25076
+ showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx50(Text46, { dimColor: true, children: " ([d] removed list)" }),
25077
+ /* @__PURE__ */ jsx50(Text46, { children: " \xB7 " }),
25078
+ /* @__PURE__ */ jsx50(Text46, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
25093
25079
  ] });
25094
25080
  }
25095
25081
  var init_LivePreviewSummary = __esm({
@@ -25102,8 +25088,8 @@ var init_LivePreviewSummary = __esm({
25102
25088
  // packages/experience-design-system-cli/src/import/tui/steps/GenerateReviewStep.tsx
25103
25089
  import { useCallback as useCallback6, useEffect as useEffect10, useMemo as useMemo4, useRef as useRef8, useState as useState22 } from "react";
25104
25090
  import figures7 from "figures";
25105
- import { Box as Box44, Text as Text48, useStdout as useStdout3 } from "ink";
25106
- import { Fragment as Fragment17, jsx as jsx52, jsxs as jsxs44 } from "react/jsx-runtime";
25091
+ import { Box as Box43, Text as Text47, useStdout as useStdout3 } from "ink";
25092
+ import { Fragment as Fragment17, jsx as jsx51, jsxs as jsxs44 } from "react/jsx-runtime";
25107
25093
  function sortComponentsForSidebar(components, cycleParticipants) {
25108
25094
  const isEmpty2 = (entry) => Object.keys(entry.$properties ?? {}).length === 0 && Object.keys(entry.$slots ?? {}).length === 0;
25109
25095
  const tier = (c2) => {
@@ -25144,10 +25130,10 @@ function CyclePathLine({
25144
25130
  highlightComponents = false,
25145
25131
  highlightLine = false
25146
25132
  }) {
25147
- return /* @__PURE__ */ jsxs44(Text48, { color: highlightLine ? PALETTE.warning : void 0, children: [
25133
+ return /* @__PURE__ */ jsxs44(Text47, { color: highlightLine ? PALETTE.warning : void 0, children: [
25148
25134
  prefix,
25149
25135
  segments.map(
25150
- (segment, index) => segment.kind === "slot" ? /* @__PURE__ */ jsx52(Text48, { color: PALETTE.info, children: segment.text }, index) : segment.kind === "arrow" ? /* @__PURE__ */ jsx52(Text48, { dimColor: true, children: segment.text }, index) : /* @__PURE__ */ jsx52(Text48, { color: highlightComponents ? PALETTE.warning : void 0, children: segment.text }, index)
25136
+ (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)
25151
25137
  )
25152
25138
  ] });
25153
25139
  }
@@ -25192,7 +25178,13 @@ function deriveBreakingChanges(response) {
25192
25178
  }
25193
25179
  return out;
25194
25180
  }
25195
- function GenerateReviewStep({
25181
+ function GenerateReviewStep(props) {
25182
+ if (!props.extractSessionId) {
25183
+ return /* @__PURE__ */ jsx51(Box43, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx51(Text47, { color: PALETTE.error, children: "Error: no session ID \u2014 cannot load generated definitions." }) });
25184
+ }
25185
+ return /* @__PURE__ */ jsx51(GenerateReviewStepView, { ...props, extractSessionId: props.extractSessionId });
25186
+ }
25187
+ function GenerateReviewStepView({
25196
25188
  extractSessionId,
25197
25189
  tokenSessionId,
25198
25190
  onFinalize,
@@ -26058,30 +26050,30 @@ function GenerateReviewStep({
26058
26050
  }
26059
26051
  });
26060
26052
  if (loading) {
26061
- return /* @__PURE__ */ jsx52(ReviewLoadingState, {});
26053
+ return /* @__PURE__ */ jsx51(ReviewLoadingState, {});
26062
26054
  }
26063
26055
  if (loadError) {
26064
- return /* @__PURE__ */ jsx52(ReviewLoadError, { message: loadError });
26056
+ return /* @__PURE__ */ jsx51(ReviewLoadError, { message: loadError });
26065
26057
  }
26066
26058
  if (showHelp) {
26067
- return /* @__PURE__ */ jsx52(HelpOverlay, { sections: HELP_SECTIONS2, onClose: () => setShowHelp(false) });
26059
+ return /* @__PURE__ */ jsx51(HelpOverlay, { sections: HELP_SECTIONS2, onClose: () => setShowHelp(false) });
26068
26060
  }
26069
26061
  const renderBreakOverlay = (width) => {
26070
26062
  const highlightedCycle = slotCycles[cyclesCursor];
26071
- return /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, width, children: [
26072
- /* @__PURE__ */ jsx52(Text48, { bold: true, color: PALETTE.warning, children: `BREAK CYCLE ${cyclesCursor + 1} \u2014 remove a slot edge or reject a member` }),
26073
- highlightedCycle && /* @__PURE__ */ jsx52(CyclePathLine, { segments: formatCyclePathSegments(highlightedCycle), prefix: " ", highlightComponents: true }),
26074
- /* @__PURE__ */ jsx52(Text48, { dimColor: true, children: highlightedCycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
26075
- /* @__PURE__ */ jsx52(Text48, { children: " " }),
26076
- breakEdges.length > 0 && /* @__PURE__ */ jsx52(Text48, { dimColor: true, children: "remove slot edge:" }),
26063
+ return /* @__PURE__ */ jsxs44(Box43, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, width, children: [
26064
+ /* @__PURE__ */ jsx51(Text47, { bold: true, color: PALETTE.warning, children: `BREAK CYCLE ${cyclesCursor + 1} \u2014 remove a slot edge or reject a member` }),
26065
+ highlightedCycle && /* @__PURE__ */ jsx51(CyclePathLine, { segments: formatCyclePathSegments(highlightedCycle), prefix: " ", highlightComponents: true }),
26066
+ /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: highlightedCycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
26067
+ /* @__PURE__ */ jsx51(Text47, { children: " " }),
26068
+ breakEdges.length > 0 && /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: "remove slot edge:" }),
26077
26069
  breakEdges.map((edge, idx) => {
26078
26070
  const isCursor = idx === breakCursor;
26079
- return /* @__PURE__ */ jsx52(Text48, { inverse: isCursor, children: `${isCursor ? figures7.pointer : " "} remove '${edge.toComponent}' from ${edge.fromComponent}.$slots.${edge.slotName}.$allowedComponents` }, `break-${idx}`);
26071
+ return /* @__PURE__ */ jsx51(Text47, { inverse: isCursor, children: `${isCursor ? figures7.pointer : " "} remove '${edge.toComponent}' from ${edge.fromComponent}.$slots.${edge.slotName}.$allowedComponents` }, `break-${idx}`);
26080
26072
  }),
26081
26073
  breakConfirm ? /* @__PURE__ */ jsxs44(Fragment17, { children: [
26082
- /* @__PURE__ */ jsx52(Text48, { children: " " }),
26083
- /* @__PURE__ */ jsx52(Text48, { bold: true, color: PALETTE.warning, children: "Delete this slot edge? [y] confirm [n] cancel" })
26084
- ] }) : /* @__PURE__ */ jsx52(Text48, { dimColor: true, children: "[\u2191\u2193/j/k] move [Enter] delete [x/Esc] close" })
26074
+ /* @__PURE__ */ jsx51(Text47, { children: " " }),
26075
+ /* @__PURE__ */ jsx51(Text47, { bold: true, color: PALETTE.warning, children: "Delete this slot edge? [y] confirm [n] cancel" })
26076
+ ] }) : /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: "[\u2191\u2193/j/k] move [Enter] delete [x/Esc] close" })
26085
26077
  ] });
26086
26078
  };
26087
26079
  const breakOverlayFullScreen = breakPanel.isOpen && shouldBreakOverlayGoFullScreen({
@@ -26125,8 +26117,8 @@ function GenerateReviewStep({
26125
26117
  for (const c2 of closures.values()) if (c2.nodes.length > 1) return true;
26126
26118
  return false;
26127
26119
  })();
26128
- return /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", children: [
26129
- /* @__PURE__ */ jsx52(
26120
+ return /* @__PURE__ */ jsxs44(Box43, { flexDirection: "column", children: [
26121
+ /* @__PURE__ */ jsx51(
26130
26122
  ReviewStepDialogs,
26131
26123
  {
26132
26124
  surfaceState: reviewSurface,
@@ -26136,24 +26128,24 @@ function GenerateReviewStep({
26136
26128
  onQuit
26137
26129
  }
26138
26130
  ),
26139
- showUnsavedWarning && !dialogOpen && /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
26140
- /* @__PURE__ */ jsx52(Text48, { bold: true, color: PALETTE.warning, children: "Unsaved changes" }),
26141
- /* @__PURE__ */ jsx52(Text48, { children: "You have unsaved edits in the current field editor." }),
26142
- /* @__PURE__ */ jsx52(Text48, { children: " " }),
26143
- /* @__PURE__ */ jsx52(Text48, { children: " [Enter] Save and continue" }),
26144
- /* @__PURE__ */ jsx52(Text48, { children: " [Esc] Discard changes and continue" }),
26145
- /* @__PURE__ */ jsx52(Text48, { children: " [Tab] Stay in the panel" })
26131
+ showUnsavedWarning && !dialogOpen && /* @__PURE__ */ jsxs44(Box43, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
26132
+ /* @__PURE__ */ jsx51(Text47, { bold: true, color: PALETTE.warning, children: "Unsaved changes" }),
26133
+ /* @__PURE__ */ jsx51(Text47, { children: "You have unsaved edits in the current field editor." }),
26134
+ /* @__PURE__ */ jsx51(Text47, { children: " " }),
26135
+ /* @__PURE__ */ jsx51(Text47, { children: " [Enter] Save and continue" }),
26136
+ /* @__PURE__ */ jsx51(Text47, { children: " [Esc] Discard changes and continue" }),
26137
+ /* @__PURE__ */ jsx51(Text47, { children: " [Tab] Stay in the panel" })
26146
26138
  ] }),
26147
- /* @__PURE__ */ jsx52(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
26148
- removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
26149
- /* @__PURE__ */ jsx52(Text48, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
26139
+ /* @__PURE__ */ jsx51(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
26140
+ removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs44(Box43, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
26141
+ /* @__PURE__ */ jsx51(Text47, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
26150
26142
  !removedBannerCollapsed && /* @__PURE__ */ jsxs44(Fragment17, { children: [
26151
- /* @__PURE__ */ jsx52(Text48, { children: " " }),
26152
- removedComponents.map((rc) => /* @__PURE__ */ jsx52(Text48, { children: removedComponentLine(rc) }, rc.id))
26143
+ /* @__PURE__ */ jsx51(Text47, { children: " " }),
26144
+ removedComponents.map((rc) => /* @__PURE__ */ jsx51(Text47, { children: removedComponentLine(rc) }, rc.id))
26153
26145
  ] })
26154
26146
  ] }),
26155
- breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx52(Box44, { paddingX: 1, children: /* @__PURE__ */ jsx52(
26156
- Text48,
26147
+ breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx51(Box43, { paddingX: 1, children: /* @__PURE__ */ jsx51(
26148
+ Text47,
26157
26149
  {
26158
26150
  color: PALETTE.warning,
26159
26151
  children: `[b] ${breakingChanges.length} breaking change${breakingChanges.length === 1 ? "" : "s"}`
@@ -26163,32 +26155,32 @@ function GenerateReviewStep({
26163
26155
  const row = breakingRows[breakingCursor];
26164
26156
  const comp = row ? breakingChanges.find((b) => b.componentName === row.componentName) : void 0;
26165
26157
  if (!comp) return null;
26166
- return /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
26167
- /* @__PURE__ */ jsx52(Text48, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
26168
- comp.impact && /* @__PURE__ */ jsx52(Text48, { dimColor: true, children: ` affects ${comp.impact.affectedExperiences} experience${comp.impact.affectedExperiences === 1 ? "" : "s"}, ${comp.impact.affectedFragments} fragment${comp.impact.affectedFragments === 1 ? "" : "s"}` }),
26169
- comp.changes.length === 0 ? /* @__PURE__ */ jsx52(Text48, { dimColor: true, children: " (no enumerated changes)" }) : comp.changes.map((change, ci) => /* @__PURE__ */ jsx52(Text48, { children: ` \u2022 ${formatBreakingChange(change, comp.current)}` }, `bd-detail-${ci}`)),
26170
- /* @__PURE__ */ jsx52(Text48, { dimColor: true, children: "[D/Esc] close detail" })
26158
+ return /* @__PURE__ */ jsxs44(Box43, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
26159
+ /* @__PURE__ */ jsx51(Text47, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
26160
+ 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"}` }),
26161
+ 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}`)),
26162
+ /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: "[D/Esc] close detail" })
26171
26163
  ] });
26172
26164
  })(),
26173
26165
  cyclePanel.isOpen && !dialogOpen && (() => {
26174
26166
  const PANEL_H = 20;
26175
26167
  const lines = [];
26176
26168
  lines.push(
26177
- /* @__PURE__ */ jsx52(Text48, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${slotCycles.length})` }, "cyc-title")
26169
+ /* @__PURE__ */ jsx51(Text47, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${slotCycles.length})` }, "cyc-title")
26178
26170
  );
26179
26171
  lines.push(
26180
- /* @__PURE__ */ jsx52(Text48, { dimColor: true, children: "push will fail until these are resolved" }, "cyc-sub")
26172
+ /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: "push will fail until these are resolved" }, "cyc-sub")
26181
26173
  );
26182
26174
  lines.push(
26183
- /* @__PURE__ */ jsx52(Text48, { dimColor: true, children: "To fix: reject a cycle member, or break the cycle by removing a slot edge." }, "cyc-guide")
26175
+ /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: "To fix: reject a cycle member, or break the cycle by removing a slot edge." }, "cyc-guide")
26184
26176
  );
26185
- lines.push(/* @__PURE__ */ jsx52(Text48, { children: " " }, "cyc-space"));
26177
+ lines.push(/* @__PURE__ */ jsx51(Text47, { children: " " }, "cyc-space"));
26186
26178
  slotCycles.forEach((cycle, idx) => {
26187
26179
  const nodeCount = new Set(cycle.path).size;
26188
26180
  const isCursor = idx === cyclesCursor;
26189
26181
  lines.push(
26190
- /* @__PURE__ */ jsx52(
26191
- Text48,
26182
+ /* @__PURE__ */ jsx51(
26183
+ Text47,
26192
26184
  {
26193
26185
  bold: true,
26194
26186
  inverse: isCursor,
@@ -26198,23 +26190,23 @@ function GenerateReviewStep({
26198
26190
  )
26199
26191
  );
26200
26192
  lines.push(
26201
- /* @__PURE__ */ jsx52(CyclePathLine, { segments: formatCyclePathSegments(cycle, 16), prefix: " " }, `cyc-p-${idx}`)
26193
+ /* @__PURE__ */ jsx51(CyclePathLine, { segments: formatCyclePathSegments(cycle, 16), prefix: " " }, `cyc-p-${idx}`)
26202
26194
  );
26203
26195
  if (cycle.suggestedBreak) {
26204
26196
  const b = cycle.suggestedBreak;
26205
26197
  lines.push(
26206
- /* @__PURE__ */ jsx52(Text48, { dimColor: true, children: ` Suggested fix: remove '${b.toComponent}' from ${b.fromComponent}.$slots.${b.slotName}.$allowedComponents` }, `cyc-f-${idx}`)
26198
+ /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: ` Suggested fix: remove '${b.toComponent}' from ${b.fromComponent}.$slots.${b.slotName}.$allowedComponents` }, `cyc-f-${idx}`)
26207
26199
  );
26208
26200
  }
26209
- lines.push(/* @__PURE__ */ jsx52(Text48, { children: " " }, `cyc-s-${idx}`));
26201
+ lines.push(/* @__PURE__ */ jsx51(Text47, { children: " " }, `cyc-s-${idx}`));
26210
26202
  });
26211
26203
  const visible = lines.slice(cyclePanelScroll, cyclePanelScroll + PANEL_H);
26212
- return /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
26204
+ return /* @__PURE__ */ jsxs44(Box43, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
26213
26205
  visible,
26214
- /* @__PURE__ */ jsx52(Text48, { dimColor: true, children: "[\u2191\u2193/j/k] move [Enter] jump [x] break cycle [c/q/Esc] close" })
26206
+ /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: "[\u2191\u2193/j/k] move [Enter] jump [x] break cycle [c/q/Esc] close" })
26215
26207
  ] });
26216
26208
  })(),
26217
- !dialogOpen && /* @__PURE__ */ jsx52(
26209
+ !dialogOpen && /* @__PURE__ */ jsx51(
26218
26210
  LivePreviewSummary,
26219
26211
  {
26220
26212
  enabled: livePreview,
@@ -26233,17 +26225,17 @@ function GenerateReviewStep({
26233
26225
  const participantSet = cycleView.structural;
26234
26226
  const members = stillRejected.filter((n) => participantSet.has(n)).sort();
26235
26227
  const ancestors = stillRejected.filter((n) => !participantSet.has(n)).sort();
26236
- return /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
26237
- /* @__PURE__ */ jsx52(Text48, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
26238
- members.length > 0 && /* @__PURE__ */ jsx52(Text48, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
26239
- ancestors.length > 0 && /* @__PURE__ */ jsx52(Text48, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
26240
- /* @__PURE__ */ jsx52(Text48, { dimColor: true, children: undoSnapshot ? " [Ctrl+Z] undo \xB7 [r]/[a] manually toggle \xB7 [F] continue" : " [r]/[a] manually toggle \xB7 [F] continue" })
26228
+ return /* @__PURE__ */ jsxs44(Box43, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
26229
+ /* @__PURE__ */ jsx51(Text47, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
26230
+ members.length > 0 && /* @__PURE__ */ jsx51(Text47, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
26231
+ ancestors.length > 0 && /* @__PURE__ */ jsx51(Text47, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
26232
+ /* @__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" })
26241
26233
  ] });
26242
26234
  })(),
26243
- /* @__PURE__ */ jsx52(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
26244
- /* @__PURE__ */ jsx52(ReviewFinalizeError, { message: finalizeError, hidden: dialogOpen }),
26245
- !dialogOpen && /* @__PURE__ */ jsxs44(Box44, { children: [
26246
- breakingPanel.isOpen ? /* @__PURE__ */ jsx52(
26235
+ /* @__PURE__ */ jsx51(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
26236
+ /* @__PURE__ */ jsx51(ReviewFinalizeError, { message: finalizeError, hidden: dialogOpen }),
26237
+ !dialogOpen && /* @__PURE__ */ jsxs44(Box43, { children: [
26238
+ breakingPanel.isOpen ? /* @__PURE__ */ jsx51(
26247
26239
  GotoBanner,
26248
26240
  {
26249
26241
  title: "Breaking changes",
@@ -26256,7 +26248,7 @@ function GenerateReviewStep({
26256
26248
  width: sidebarWidth,
26257
26249
  footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [D] detail \xB7 [Esc] close"
26258
26250
  }
26259
- ) : lineagePanel.isOpen && focusedComponentKey ? /* @__PURE__ */ jsx52(
26251
+ ) : lineagePanel.isOpen && focusedComponentKey ? /* @__PURE__ */ jsx51(
26260
26252
  LineagePanel,
26261
26253
  {
26262
26254
  focusedComponentKey,
@@ -26266,7 +26258,7 @@ function GenerateReviewStep({
26266
26258
  maxRows: panelMaxRows,
26267
26259
  width: sidebarWidth
26268
26260
  }
26269
- ) : /* @__PURE__ */ jsx52(
26261
+ ) : /* @__PURE__ */ jsx51(
26270
26262
  GroupedSidebar,
26271
26263
  {
26272
26264
  items: groupedItems,
@@ -26304,7 +26296,7 @@ function GenerateReviewStep({
26304
26296
  graph: sidebarGraph
26305
26297
  }
26306
26298
  ),
26307
- selected ? /* @__PURE__ */ jsx52(
26299
+ selected ? /* @__PURE__ */ jsx51(
26308
26300
  ReviewComponentPanel,
26309
26301
  {
26310
26302
  selectedKey: selected.key,
@@ -26331,13 +26323,13 @@ function GenerateReviewStep({
26331
26323
  livePreview: livePreviewHook,
26332
26324
  livePreviewSpinner
26333
26325
  }
26334
- ) : /* @__PURE__ */ jsx52(ReviewNoSelection, {})
26326
+ ) : /* @__PURE__ */ jsx51(ReviewNoSelection, {})
26335
26327
  ] }),
26336
26328
  breakPanel.isOpen && !breakOverlayFullScreen && !dialogOpen && renderBreakOverlay(),
26337
- !dialogOpen && slotCycles.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", children: [
26338
- /* @__PURE__ */ jsx52(Text48, { color: PALETTE.warning, children: `\u26A0 ${slotCycles.length} slot dependency cycle${slotCycles.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
26329
+ !dialogOpen && slotCycles.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs44(Box43, { flexDirection: "column", children: [
26330
+ /* @__PURE__ */ jsx51(Text47, { color: PALETTE.warning, children: `\u26A0 ${slotCycles.length} slot dependency cycle${slotCycles.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
26339
26331
  slotCycles.slice(0, 3).map((cycle, idx) => {
26340
- return /* @__PURE__ */ jsx52(
26332
+ return /* @__PURE__ */ jsx51(
26341
26333
  CyclePathLine,
26342
26334
  {
26343
26335
  segments: formatCyclePathSegments(cycle),
@@ -26348,10 +26340,10 @@ function GenerateReviewStep({
26348
26340
  `cyc-banner-${idx}`
26349
26341
  );
26350
26342
  }),
26351
- slotCycles.length > 3 && /* @__PURE__ */ jsx52(Text48, { color: PALETTE.warning, children: ` \u2026${slotCycles.length - 3} more` }),
26352
- /* @__PURE__ */ jsx52(Text48, { dimColor: true, children: " press [c] for detail" })
26343
+ slotCycles.length > 3 && /* @__PURE__ */ jsx51(Text47, { color: PALETTE.warning, children: ` \u2026${slotCycles.length - 3} more` }),
26344
+ /* @__PURE__ */ jsx51(Text47, { dimColor: true, children: " press [c] for detail" })
26353
26345
  ] }),
26354
- /* @__PURE__ */ jsx52(
26346
+ /* @__PURE__ */ jsx51(
26355
26347
  SearchMatchSummary,
26356
26348
  {
26357
26349
  open: searchOpen,
@@ -26362,7 +26354,7 @@ function GenerateReviewStep({
26362
26354
  hidden: dialogOpen
26363
26355
  }
26364
26356
  ),
26365
- !dialogOpen && sidebarFocused && /* @__PURE__ */ jsx52(Box44, { columnGap: 2, flexWrap: "wrap", children: reviewEditor.panelOpen === "token-review" ? /* @__PURE__ */ jsxs44(Fragment17, { children: [
26357
+ !dialogOpen && sidebarFocused && /* @__PURE__ */ jsx51(Box43, { columnGap: 2, flexWrap: "wrap", children: reviewEditor.panelOpen === "token-review" ? /* @__PURE__ */ jsxs44(Fragment17, { children: [
26366
26358
  legendEntry("[\u2191/\u2193]", "move"),
26367
26359
  legendEntry("[Enter]", "edit allowed"),
26368
26360
  legendEntry("[Esc]", "close")
@@ -26398,7 +26390,7 @@ function GenerateReviewStep({
26398
26390
  legendEntry("[?]", "help"),
26399
26391
  legendEntry("[q]", "quit")
26400
26392
  ] }) }),
26401
- !dialogOpen && /* @__PURE__ */ jsx52(
26393
+ !dialogOpen && /* @__PURE__ */ jsx51(
26402
26394
  ReviewStatusBar,
26403
26395
  {
26404
26396
  entries: components,
@@ -26464,7 +26456,7 @@ var init_GenerateReviewStep = __esm({
26464
26456
  {
26465
26457
  title: "Navigation",
26466
26458
  entries: [
26467
- { keys: "j / k / \u2191 / \u2193", label: "Move cursor" },
26459
+ { keys: "\u2191 / \u2193", label: "Move cursor" },
26468
26460
  { keys: "Tab", label: "Toggle sidebar/panel" },
26469
26461
  { keys: "Enter", label: "Drill to source" }
26470
26462
  ]
@@ -26521,50 +26513,6 @@ var init_GenerateReviewStep = __esm({
26521
26513
  }
26522
26514
  });
26523
26515
 
26524
- // packages/experience-design-system-cli/src/import/tui/final-review-host.tsx
26525
- import { Box as Box45, Text as Text49 } from "ink";
26526
- import { jsx as jsx53 } from "react/jsx-runtime";
26527
- function FinalReviewHost({
26528
- extractSessionId,
26529
- tokenSessionId,
26530
- onFinalize,
26531
- onQuit,
26532
- livePreview,
26533
- spaceId,
26534
- environmentId,
26535
- cmaToken,
26536
- host,
26537
- tokensPath,
26538
- initialFinalizeError
26539
- }) {
26540
- if (!extractSessionId) {
26541
- return /* @__PURE__ */ jsx53(Box45, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx53(Text49, { color: PALETTE.error, children: "Error: no session ID \u2014 cannot load generated definitions." }) });
26542
- }
26543
- return /* @__PURE__ */ jsx53(
26544
- GenerateReviewStep,
26545
- {
26546
- extractSessionId,
26547
- tokenSessionId,
26548
- onFinalize,
26549
- onQuit,
26550
- livePreview,
26551
- spaceId,
26552
- environmentId,
26553
- cmaToken,
26554
- host,
26555
- tokensPath,
26556
- initialFinalizeError
26557
- }
26558
- );
26559
- }
26560
- var init_final_review_host = __esm({
26561
- "packages/experience-design-system-cli/src/import/tui/final-review-host.tsx"() {
26562
- "use strict";
26563
- init_theme();
26564
- init_GenerateReviewStep();
26565
- }
26566
- });
26567
-
26568
26516
  // packages/experience-design-system-cli/src/import/tui/runScopeGate.ts
26569
26517
  async function runScopeGate(opts) {
26570
26518
  const db = openPipelineDb();
@@ -26766,7 +26714,7 @@ __export(WizardApp_exports, {
26766
26714
  shouldRunMapTokens: () => shouldRunMapTokens
26767
26715
  });
26768
26716
  import { useEffect as useEffect11, useRef as useRef9, useState as useState23 } from "react";
26769
- import { Box as Box46, Text as Text50, useStdout as useStdout4 } from "ink";
26717
+ import { Box as Box44, Text as Text48, useStdout as useStdout4 } from "ink";
26770
26718
  import { join as join20, resolve as resolve17 } from "node:path";
26771
26719
  import { appendFileSync as appendFileSync2, writeFileSync } from "node:fs";
26772
26720
  import { access as access7, stat as stat5, writeFile as writeFile6 } from "node:fs/promises";
@@ -26774,7 +26722,7 @@ import { tmpdir } from "node:os";
26774
26722
  import { execFile as execFile2, spawn as spawn3 } from "node:child_process";
26775
26723
  import { mkdir as mkdir5 } from "node:fs/promises";
26776
26724
  import { buildCDF as buildCDF3, validateCDF as validateCDF3, validateSlotReferences as validateSlotReferences2 } from "@contentful/experience-design-system-types";
26777
- import { jsx as jsx54, jsxs as jsxs45 } from "react/jsx-runtime";
26725
+ import { jsx as jsx52, jsxs as jsxs45 } from "react/jsx-runtime";
26778
26726
  function buildGenerateComponentsArgs(opts) {
26779
26727
  const args = ["__generate", "components", "--agent", opts.agent, "--session", opts.sessionId];
26780
26728
  if (opts.tokensPath) args.push("--tokens", opts.tokensPath);
@@ -27961,7 +27909,7 @@ If using a custom host configuration, make sure the space exists on that host.`
27961
27909
  const stepContent = (() => {
27962
27910
  switch (state.step) {
27963
27911
  case "welcome":
27964
- return /* @__PURE__ */ jsx54(
27912
+ return /* @__PURE__ */ jsx52(
27965
27913
  WelcomeStep,
27966
27914
  {
27967
27915
  onContinue: (path) => {
@@ -27973,7 +27921,7 @@ If using a custom host configuration, make sure the space exists on that host.`
27973
27921
  }
27974
27922
  );
27975
27923
  case "token-input":
27976
- return /* @__PURE__ */ jsx54(
27924
+ return /* @__PURE__ */ jsx52(
27977
27925
  TokenInputStep,
27978
27926
  {
27979
27927
  onConfirm: (rawTokensPath) => {
@@ -27984,7 +27932,7 @@ If using a custom host configuration, make sure the space exists on that host.`
27984
27932
  }
27985
27933
  );
27986
27934
  case "token-reuse-gate":
27987
- return /* @__PURE__ */ jsx54(
27935
+ return /* @__PURE__ */ jsx52(
27988
27936
  GateStep,
27989
27937
  {
27990
27938
  successMessage: "Existing tokens.json found",
@@ -28006,7 +27954,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28006
27954
  }
28007
27955
  );
28008
27956
  case "checking-claude-auth":
28009
- return /* @__PURE__ */ jsx54(
27957
+ return /* @__PURE__ */ jsx52(
28010
27958
  RunningStep,
28011
27959
  {
28012
27960
  stepNumber: state.authCheckStepNumber,
@@ -28016,7 +27964,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28016
27964
  }
28017
27965
  );
28018
27966
  case "generating-tokens":
28019
- return /* @__PURE__ */ jsx54(
27967
+ return /* @__PURE__ */ jsx52(
28020
27968
  RunningStep,
28021
27969
  {
28022
27970
  stepNumber: 1,
@@ -28026,7 +27974,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28026
27974
  }
28027
27975
  );
28028
27976
  case "path-validation":
28029
- return /* @__PURE__ */ jsx54(
27977
+ return /* @__PURE__ */ jsx52(
28030
27978
  PathValidationStep,
28031
27979
  {
28032
27980
  projectPath: state.projectPath,
@@ -28061,7 +28009,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28061
28009
  if (phase === "done") return "Composition mapping resolved \u2713";
28062
28010
  return `Composition: ${phase}`;
28063
28011
  })();
28064
- return /* @__PURE__ */ jsx54(
28012
+ return /* @__PURE__ */ jsx52(
28065
28013
  RunningStep,
28066
28014
  {
28067
28015
  stepNumber: hasTokens ? 2 : 1,
@@ -28075,7 +28023,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28075
28023
  }
28076
28024
  case "scope-gate": {
28077
28025
  if (!state.extractSessionId) {
28078
- return /* @__PURE__ */ jsx54(Box46, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx54(Text50, { color: PALETTE.error, children: "Error: extract session ID missing \u2014 please re-run." }) });
28026
+ return /* @__PURE__ */ jsx52(Box44, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx52(Text48, { color: PALETTE.error, children: "Error: extract session ID missing \u2014 please re-run." }) });
28079
28027
  }
28080
28028
  const sessionId2 = state.extractSessionId;
28081
28029
  const db = openPipelineDb();
@@ -28085,8 +28033,8 @@ If using a custom host configuration, make sure the space exists on that host.`
28085
28033
  } finally {
28086
28034
  db.close();
28087
28035
  }
28088
- return /* @__PURE__ */ jsx54(
28089
- ScopeGateHost,
28036
+ return /* @__PURE__ */ jsx52(
28037
+ ScopeGateStep,
28090
28038
  {
28091
28039
  components,
28092
28040
  onConfirm: (decisions) => {
@@ -28118,7 +28066,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28118
28066
  const p = state.generateProgress;
28119
28067
  const stepNum = hasTokens ? 4 : 3;
28120
28068
  const progressDetail = p ? `[${p.done}/${p.total}] ${p.current} \u2014 this can take 10\u201330 minutes for large libraries` : `Starting up ${state.agent}... (this can take 10\u201330 minutes for large libraries \u2014 grab a coffee)`;
28121
- return /* @__PURE__ */ jsx54(
28069
+ return /* @__PURE__ */ jsx52(
28122
28070
  RunningStep,
28123
28071
  {
28124
28072
  stepNumber: stepNum,
@@ -28131,7 +28079,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28131
28079
  }
28132
28080
  case "mapping-tokens": {
28133
28081
  const stepNum = hasTokens ? 5 : 4;
28134
- return /* @__PURE__ */ jsx54(
28082
+ return /* @__PURE__ */ jsx52(
28135
28083
  RunningStep,
28136
28084
  {
28137
28085
  stepNumber: stepNum,
@@ -28143,8 +28091,8 @@ If using a custom host configuration, make sure the space exists on that host.`
28143
28091
  );
28144
28092
  }
28145
28093
  case "final-review": {
28146
- return /* @__PURE__ */ jsx54(
28147
- FinalReviewHost,
28094
+ return /* @__PURE__ */ jsx52(
28095
+ GenerateReviewStep,
28148
28096
  {
28149
28097
  extractSessionId: state.extractSessionId,
28150
28098
  tokenSessionId: state.tokenSessionId,
@@ -28202,7 +28150,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28202
28150
  const files = hasComponents || hasTokens ? "components.json" : null;
28203
28151
  const count = state.generatedAcceptedCount > 0 ? state.generatedAcceptedCount : state.generatedCount;
28204
28152
  const summary = hasComponents ? `${count} component definition${count !== 1 ? "s" : ""} ready${hasTokens ? ", design tokens ready" : ""}.` : hasTokens ? "Design tokens ready." : "Ready to continue.";
28205
- return /* @__PURE__ */ jsx54(
28153
+ return /* @__PURE__ */ jsx52(
28206
28154
  PushDecisionGateStep,
28207
28155
  {
28208
28156
  summary,
@@ -28234,7 +28182,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28234
28182
  );
28235
28183
  }
28236
28184
  case "credentials":
28237
- return /* @__PURE__ */ jsx54(
28185
+ return /* @__PURE__ */ jsx52(
28238
28186
  CredentialsStep,
28239
28187
  {
28240
28188
  initialSpaceId: state.spaceId,
@@ -28266,7 +28214,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28266
28214
  }
28267
28215
  );
28268
28216
  case "previewing":
28269
- return /* @__PURE__ */ jsx54(
28217
+ return /* @__PURE__ */ jsx52(
28270
28218
  RunningStep,
28271
28219
  {
28272
28220
  stepNumber: totalSteps,
@@ -28277,7 +28225,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28277
28225
  );
28278
28226
  case "preview-gate": {
28279
28227
  const editableComponentCount = extractComponents(state.cdf).length;
28280
- return /* @__PURE__ */ jsx54(
28228
+ return /* @__PURE__ */ jsx52(
28281
28229
  WizardPreviewStep,
28282
28230
  {
28283
28231
  preview: state.serverPreview,
@@ -28305,9 +28253,9 @@ If using a custom host configuration, make sure the space exists on that host.`
28305
28253
  );
28306
28254
  }
28307
28255
  case "pushing":
28308
- return /* @__PURE__ */ jsx54(PushingStep, { stepNumber: totalSteps, totalSteps, progress: state.pushProgress });
28256
+ return /* @__PURE__ */ jsx52(PushingStep, { stepNumber: totalSteps, totalSteps, progress: state.pushProgress });
28309
28257
  case "path-prompt":
28310
- return /* @__PURE__ */ jsx54(
28258
+ return /* @__PURE__ */ jsx52(
28311
28259
  PathPrompt,
28312
28260
  {
28313
28261
  defaultPath: state.outDir,
@@ -28326,7 +28274,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28326
28274
  }
28327
28275
  );
28328
28276
  case "save-conflict-gate":
28329
- return /* @__PURE__ */ jsx54(
28277
+ return /* @__PURE__ */ jsx52(
28330
28278
  SaveConflictGate,
28331
28279
  {
28332
28280
  path: state.outDir,
@@ -28344,7 +28292,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28344
28292
  }
28345
28293
  );
28346
28294
  case "printing":
28347
- return /* @__PURE__ */ jsx54(
28295
+ return /* @__PURE__ */ jsx52(
28348
28296
  RunningStep,
28349
28297
  {
28350
28298
  stepNumber: totalSteps,
@@ -28355,7 +28303,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28355
28303
  );
28356
28304
  case "print-gate": {
28357
28305
  const teaser = buildRunTeaserLine(state.lastRunId);
28358
- return /* @__PURE__ */ jsx54(
28306
+ return /* @__PURE__ */ jsx52(
28359
28307
  GateStep,
28360
28308
  {
28361
28309
  successMessage: "Files saved",
@@ -28373,7 +28321,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28373
28321
  case "done": {
28374
28322
  const totalFailed = state.pushResult.componentTypes.failed + state.pushResult.designTokens.failed;
28375
28323
  const teaser = buildRunTeaserLine(state.lastRunId);
28376
- return /* @__PURE__ */ jsx54(
28324
+ return /* @__PURE__ */ jsx52(
28377
28325
  DoneStep,
28378
28326
  {
28379
28327
  componentTypes: state.pushResult.componentTypes,
@@ -28389,7 +28337,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28389
28337
  );
28390
28338
  }
28391
28339
  case "preview-validation-error": {
28392
- return /* @__PURE__ */ jsx54(
28340
+ return /* @__PURE__ */ jsx52(
28393
28341
  PreviewValidationErrorStep,
28394
28342
  {
28395
28343
  errors: state.previewValidationErrors,
@@ -28405,7 +28353,7 @@ If using a custom host configuration, make sure the space exists on that host.`
28405
28353
  );
28406
28354
  }
28407
28355
  case "error":
28408
- return /* @__PURE__ */ jsx54(
28356
+ return /* @__PURE__ */ jsx52(
28409
28357
  ErrorStep,
28410
28358
  {
28411
28359
  stepName: state.errorStep,
@@ -28427,9 +28375,9 @@ If using a custom host configuration, make sure the space exists on that host.`
28427
28375
  return null;
28428
28376
  }
28429
28377
  })();
28430
- return /* @__PURE__ */ jsxs45(Box46, { flexDirection: "column", width: terminalWidth, children: [
28431
- /* @__PURE__ */ jsx54(TopBar, { subcommand: "import", hints }),
28432
- /* @__PURE__ */ jsx54(CustomPromptBanner, { generatePromptPath }),
28378
+ return /* @__PURE__ */ jsxs45(Box44, { flexDirection: "column", width: terminalWidth, children: [
28379
+ /* @__PURE__ */ jsx52(TopBar, { subcommand: "import", hints }),
28380
+ /* @__PURE__ */ jsx52(CustomPromptBanner, { generatePromptPath }),
28433
28381
  stepContent
28434
28382
  ] });
28435
28383
  }
@@ -28472,8 +28420,8 @@ var init_WizardApp = __esm({
28472
28420
  init_tokens();
28473
28421
  init_preview_utils();
28474
28422
  init_db();
28475
- init_scope_gate_host();
28476
- init_final_review_host();
28423
+ init_ScopeGateStep();
28424
+ init_GenerateReviewStep();
28477
28425
  init_runScopeGate();
28478
28426
  init_src();
28479
28427
  init_path_utils();
@@ -28941,8 +28889,8 @@ var init_command7 = __esm({
28941
28889
 
28942
28890
  // packages/experience-design-system-cli/src/setup/SetupStepper.tsx
28943
28891
  import React18 from "react";
28944
- import { Box as Box47, Text as Text51 } from "ink";
28945
- import { jsx as jsx55, jsxs as jsxs46 } from "react/jsx-runtime";
28892
+ import { Box as Box45, Text as Text49 } from "ink";
28893
+ import { jsx as jsx53, jsxs as jsxs46 } from "react/jsx-runtime";
28946
28894
  function stepLabel(step, title, state, wide) {
28947
28895
  if (state === "complete") return wide ? `\u2713 ${title}` : "\u2713";
28948
28896
  if (state === "active") return wide ? `[${step} ${title}]` : `[${step}]`;
@@ -28955,12 +28903,12 @@ function stepColor(state) {
28955
28903
  }
28956
28904
  function SetupStepper({ activeStep, columns }) {
28957
28905
  const wide = columns !== void 0 && columns >= WIDE_MIN_COLUMNS;
28958
- return /* @__PURE__ */ jsx55(Box47, { columnGap: wide ? 0 : COMPACT_GAP, children: SETUP_SCREENS.map((title, index) => {
28906
+ return /* @__PURE__ */ jsx53(Box45, { columnGap: wide ? 0 : COMPACT_GAP, children: SETUP_SCREENS.map((title, index) => {
28959
28907
  const step = index + 1;
28960
28908
  const state = step < activeStep ? "complete" : step === activeStep ? "active" : "pending";
28961
28909
  return /* @__PURE__ */ jsxs46(React18.Fragment, { children: [
28962
- wide && index > 0 && /* @__PURE__ */ jsx55(Text51, { dimColor: true, children: WIDE_SEPARATOR }),
28963
- /* @__PURE__ */ jsx55(Text51, { bold: state === "active", dimColor: state === "pending", color: stepColor(state), children: stepLabel(step, title, state, wide) })
28910
+ wide && index > 0 && /* @__PURE__ */ jsx53(Text49, { dimColor: true, children: WIDE_SEPARATOR }),
28911
+ /* @__PURE__ */ jsx53(Text49, { bold: state === "active", dimColor: state === "pending", color: stepColor(state), children: stepLabel(step, title, state, wide) })
28964
28912
  ] }, step);
28965
28913
  }) });
28966
28914
  }
@@ -28979,33 +28927,33 @@ var init_SetupStepper = __esm({
28979
28927
  });
28980
28928
 
28981
28929
  // packages/experience-design-system-cli/src/setup/steps/StepLayout.tsx
28982
- import { Box as Box48, Text as Text52 } from "ink";
28983
- import { jsx as jsx56, jsxs as jsxs47 } from "react/jsx-runtime";
28930
+ import { Box as Box46, Text as Text50 } from "ink";
28931
+ import { jsx as jsx54, jsxs as jsxs47 } from "react/jsx-runtime";
28984
28932
  function StepLayout({ helpText, children, prompt }) {
28985
- return /* @__PURE__ */ jsxs47(Box48, { flexDirection: "column", children: [
28933
+ return /* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", children: [
28986
28934
  children,
28987
- prompt && /* @__PURE__ */ jsx56(Box48, { marginTop: 1, children: prompt }),
28988
- helpText && /* @__PURE__ */ jsx56(Box48, { marginTop: 1, children: /* @__PURE__ */ jsx56(Text52, { dimColor: true, children: helpText }) })
28935
+ prompt && /* @__PURE__ */ jsx54(Box46, { marginTop: 1, children: prompt }),
28936
+ helpText && /* @__PURE__ */ jsx54(Box46, { marginTop: 1, children: /* @__PURE__ */ jsx54(Text50, { dimColor: true, children: helpText }) })
28989
28937
  ] });
28990
28938
  }
28991
28939
  function StepSuccess({ children }) {
28992
- return /* @__PURE__ */ jsxs47(Text52, { color: PALETTE.success, children: [
28940
+ return /* @__PURE__ */ jsxs47(Text50, { color: PALETTE.success, children: [
28993
28941
  "\u2713 ",
28994
28942
  children
28995
28943
  ] });
28996
28944
  }
28997
28945
  function StepWarning({ children }) {
28998
- return /* @__PURE__ */ jsxs47(Text52, { color: PALETTE.warning, children: [
28946
+ return /* @__PURE__ */ jsxs47(Text50, { color: PALETTE.warning, children: [
28999
28947
  "\u26A0 ",
29000
28948
  children
29001
28949
  ] });
29002
28950
  }
29003
28951
  function StepValue({ label, value }) {
29004
28952
  const color = value ? void 0 : PALETTE.warning;
29005
- return /* @__PURE__ */ jsxs47(Box48, { children: [
29006
- /* @__PURE__ */ jsx56(Box48, { width: 2, children: /* @__PURE__ */ jsx56(Text52, { color, children: value ? "" : "\u26A0" }) }),
29007
- /* @__PURE__ */ jsx56(Box48, { width: 20, flexShrink: 0, children: /* @__PURE__ */ jsx56(Text52, { color, children: label }) }),
29008
- /* @__PURE__ */ jsx56(Text52, { color, children: value || "(not set)" })
28953
+ return /* @__PURE__ */ jsxs47(Box46, { children: [
28954
+ /* @__PURE__ */ jsx54(Box46, { width: 2, children: /* @__PURE__ */ jsx54(Text50, { color, children: value ? "" : "\u26A0" }) }),
28955
+ /* @__PURE__ */ jsx54(Box46, { width: 20, flexShrink: 0, children: /* @__PURE__ */ jsx54(Text50, { color, children: label }) }),
28956
+ /* @__PURE__ */ jsx54(Text50, { color, children: value || "(not set)" })
29009
28957
  ] });
29010
28958
  }
29011
28959
  var init_StepLayout = __esm({
@@ -29017,9 +28965,9 @@ var init_StepLayout = __esm({
29017
28965
 
29018
28966
  // packages/experience-design-system-cli/src/setup/steps/CodingAgentScreen.tsx
29019
28967
  import { useEffect as useEffect12, useRef as useRef10, useState as useState24 } from "react";
29020
- import { Box as Box49, Text as Text53 } from "ink";
28968
+ import { Box as Box47, Text as Text51 } from "ink";
29021
28969
  import { Select, TextInput } from "@inkjs/ui";
29022
- import { jsx as jsx57, jsxs as jsxs48 } from "react/jsx-runtime";
28970
+ import { jsx as jsx55, jsxs as jsxs48 } from "react/jsx-runtime";
29023
28971
  async function detectAgents(exists = binaryExists) {
29024
28972
  const found = await Promise.all(AGENT_DEFS.map(async (agent) => await exists(agent.binary) ? agent : void 0));
29025
28973
  return found.filter((agent) => agent !== void 0);
@@ -29052,7 +29000,7 @@ function CodingAgentScreen({ onDone, deps }) {
29052
29000
  const found = await detectAgents(exists);
29053
29001
  if (found.length === 1) {
29054
29002
  const only = found[0];
29055
- setNotes([/* @__PURE__ */ jsx57(StepSuccess, { children: `${only.name} (${only.binary}) found` }, "found")]);
29003
+ setNotes([/* @__PURE__ */ jsx55(StepSuccess, { children: `${only.name} (${only.binary}) found` }, "found")]);
29056
29004
  afterSelection(only);
29057
29005
  return;
29058
29006
  }
@@ -29060,7 +29008,7 @@ function CodingAgentScreen({ onDone, deps }) {
29060
29008
  setPhase({ kind: "choose", found });
29061
29009
  return;
29062
29010
  }
29063
- setNotes([/* @__PURE__ */ jsx57(StepWarning, { children: "No coding agent found on PATH" }, "none")]);
29011
+ setNotes([/* @__PURE__ */ jsx55(StepWarning, { children: "No coding agent found on PATH" }, "none")]);
29064
29012
  setPhase({ kind: "install-choice" });
29065
29013
  })();
29066
29014
  }, []);
@@ -29072,12 +29020,12 @@ function CodingAgentScreen({ onDone, deps }) {
29072
29020
  onDone("failed");
29073
29021
  return;
29074
29022
  }
29075
- setNotes((current) => [...current, /* @__PURE__ */ jsx57(StepSuccess, { children: `${agent.name} installed` }, "installed")]);
29023
+ setNotes((current) => [...current, /* @__PURE__ */ jsx55(StepSuccess, { children: `${agent.name} installed` }, "installed")]);
29076
29024
  afterSelection(agent);
29077
29025
  };
29078
- const chooser = (question, options, describe, onPick) => /* @__PURE__ */ jsxs48(Box49, { flexDirection: "column", children: [
29079
- /* @__PURE__ */ jsx57(Text53, { children: question }),
29080
- /* @__PURE__ */ jsx57(Box49, { marginTop: 1, children: /* @__PURE__ */ jsx57(
29026
+ const chooser = (question, options, describe, onPick) => /* @__PURE__ */ jsxs48(Box47, { flexDirection: "column", children: [
29027
+ /* @__PURE__ */ jsx55(Text51, { children: question }),
29028
+ /* @__PURE__ */ jsx55(Box47, { marginTop: 1, children: /* @__PURE__ */ jsx55(
29081
29029
  Select,
29082
29030
  {
29083
29031
  options: [
@@ -29089,7 +29037,7 @@ function CodingAgentScreen({ onDone, deps }) {
29089
29037
  ) })
29090
29038
  ] });
29091
29039
  if (phase.kind === "choose") {
29092
- return /* @__PURE__ */ jsx57(
29040
+ return /* @__PURE__ */ jsx55(
29093
29041
  StepLayout,
29094
29042
  {
29095
29043
  helpText: AGENT_HELP,
@@ -29104,7 +29052,7 @@ function CodingAgentScreen({ onDone, deps }) {
29104
29052
  );
29105
29053
  }
29106
29054
  if (phase.kind === "install-choice") {
29107
- return /* @__PURE__ */ jsx57(
29055
+ return /* @__PURE__ */ jsx55(
29108
29056
  StepLayout,
29109
29057
  {
29110
29058
  helpText: AGENT_HELP,
@@ -29119,13 +29067,13 @@ function CodingAgentScreen({ onDone, deps }) {
29119
29067
  );
29120
29068
  }
29121
29069
  if (phase.kind === "model") {
29122
- return /* @__PURE__ */ jsx57(
29070
+ return /* @__PURE__ */ jsx55(
29123
29071
  StepLayout,
29124
29072
  {
29125
29073
  helpText: AGENT_HELP,
29126
- prompt: /* @__PURE__ */ jsxs48(Box49, { children: [
29127
- /* @__PURE__ */ jsx57(Text53, { children: "Model name (optional - press Enter for Codex default): " }),
29128
- /* @__PURE__ */ jsx57(
29074
+ prompt: /* @__PURE__ */ jsxs48(Box47, { children: [
29075
+ /* @__PURE__ */ jsx55(Text51, { children: "Model name (optional - press Enter for Codex default): " }),
29076
+ /* @__PURE__ */ jsx55(
29129
29077
  TextInput,
29130
29078
  {
29131
29079
  onSubmit: (value) => void save(phase.agent.binary, value.trim() || void 0)
@@ -29135,19 +29083,19 @@ function CodingAgentScreen({ onDone, deps }) {
29135
29083
  ] }),
29136
29084
  children: [
29137
29085
  ...notes,
29138
- /* @__PURE__ */ jsx57(StepWarning, { children: "No OPENAI_API_KEY \u2014 using ChatGPT account authentication." }, "no-key"),
29139
- /* @__PURE__ */ jsx57(Text53, { dimColor: true, children: "Tip: run codex then type /model to browse all available models." }, "tip")
29086
+ /* @__PURE__ */ jsx55(StepWarning, { children: "No OPENAI_API_KEY \u2014 using ChatGPT account authentication." }, "no-key"),
29087
+ /* @__PURE__ */ jsx55(Text51, { dimColor: true, children: "Tip: run codex then type /model to browse all available models." }, "tip")
29140
29088
  ]
29141
29089
  }
29142
29090
  );
29143
29091
  }
29144
29092
  if (phase.kind === "installing") {
29145
- return /* @__PURE__ */ jsx57(StepLayout, { helpText: AGENT_HELP, children: [...notes, /* @__PURE__ */ jsx57(Text53, { children: `Installing ${phase.agent.name}\u2026` }, "installing")] });
29093
+ return /* @__PURE__ */ jsx55(StepLayout, { helpText: AGENT_HELP, children: [...notes, /* @__PURE__ */ jsx55(Text51, { children: `Installing ${phase.agent.name}\u2026` }, "installing")] });
29146
29094
  }
29147
29095
  if (phase.kind === "failed") {
29148
- return /* @__PURE__ */ jsx57(StepLayout, { helpText: AGENT_HELP, children: [...notes, /* @__PURE__ */ jsx57(Text53, { children: `\u2717 ${phase.message}` }, "failed")] });
29096
+ return /* @__PURE__ */ jsx55(StepLayout, { helpText: AGENT_HELP, children: [...notes, /* @__PURE__ */ jsx55(Text51, { children: `\u2717 ${phase.message}` }, "failed")] });
29149
29097
  }
29150
- return /* @__PURE__ */ jsx57(Text53, { dimColor: true, children: "Looking for a coding agent\u2026" });
29098
+ return /* @__PURE__ */ jsx55(Text51, { dimColor: true, children: "Looking for a coding agent\u2026" });
29151
29099
  }
29152
29100
  var AGENT_HELP, SKIP_VALUE;
29153
29101
  var init_CodingAgentScreen = __esm({
@@ -29164,9 +29112,9 @@ var init_CodingAgentScreen = __esm({
29164
29112
 
29165
29113
  // packages/experience-design-system-cli/src/setup/steps/ContentfulCredentialsScreen.tsx
29166
29114
  import { useEffect as useEffect13, useRef as useRef11, useState as useState25 } from "react";
29167
- import { Box as Box50, Text as Text54 } from "ink";
29115
+ import { Box as Box48, Text as Text52 } from "ink";
29168
29116
  import { PasswordInput, Select as Select2, TextInput as TextInput2 } from "@inkjs/ui";
29169
- import { Fragment as Fragment18, jsx as jsx58, jsxs as jsxs49 } from "react/jsx-runtime";
29117
+ import { Fragment as Fragment18, jsx as jsx56, jsxs as jsxs49 } from "react/jsx-runtime";
29170
29118
  function envShadowingWarning(env) {
29171
29119
  const set = ENV_KEYS.filter((key) => env[key]);
29172
29120
  if (set.length === 0) return null;
@@ -29183,21 +29131,21 @@ function ContentfulCredentialsScreen({ onDone }) {
29183
29131
  useEffect13(() => {
29184
29132
  void readExperiencesCredentials().then(setStored);
29185
29133
  }, []);
29186
- if (!stored) return /* @__PURE__ */ jsx58(Text54, { dimColor: true, children: "Reading saved credentials\u2026" });
29134
+ if (!stored) return /* @__PURE__ */ jsx56(Text52, { dimColor: true, children: "Reading saved credentials\u2026" });
29187
29135
  const currentHost = stored.host ?? DEFAULT_CONFIGURED_HOST;
29188
29136
  const hasAny = Boolean(stored.spaceId || stored.environmentId || stored.cmaToken);
29189
29137
  const allSet = Boolean(stored.spaceId && stored.environmentId && stored.cmaToken);
29190
29138
  const shadowing = envShadowingWarning(process.env);
29191
29139
  const summary = /* @__PURE__ */ jsxs49(Fragment18, { children: [
29192
- shadowing && /* @__PURE__ */ jsx58(StepWarning, { children: shadowing }),
29193
- hasAny && /* @__PURE__ */ jsxs49(Box50, { flexDirection: "column", marginTop: shadowing ? 1 : 0, children: [
29194
- /* @__PURE__ */ jsx58(Text54, { children: "Current values:" }),
29195
- /* @__PURE__ */ jsx58(StepValue, { label: "Space ID", value: stored.spaceId }),
29196
- /* @__PURE__ */ jsx58(StepValue, { label: "Environment ID", value: stored.environmentId }),
29197
- /* @__PURE__ */ jsx58(StepValue, { label: "CMA Token", value: stored.cmaToken ? maskToken(stored.cmaToken) : void 0 }),
29198
- /* @__PURE__ */ jsx58(StepValue, { label: "API Host", value: currentHost })
29140
+ shadowing && /* @__PURE__ */ jsx56(StepWarning, { children: shadowing }),
29141
+ hasAny && /* @__PURE__ */ jsxs49(Box48, { flexDirection: "column", marginTop: shadowing ? 1 : 0, children: [
29142
+ /* @__PURE__ */ jsx56(Text52, { children: "Current values:" }),
29143
+ /* @__PURE__ */ jsx56(StepValue, { label: "Space ID", value: stored.spaceId }),
29144
+ /* @__PURE__ */ jsx56(StepValue, { label: "Environment ID", value: stored.environmentId }),
29145
+ /* @__PURE__ */ jsx56(StepValue, { label: "CMA Token", value: stored.cmaToken ? maskToken(stored.cmaToken) : void 0 }),
29146
+ /* @__PURE__ */ jsx56(StepValue, { label: "API Host", value: currentHost })
29199
29147
  ] }),
29200
- error && /* @__PURE__ */ jsx58(StepWarning, { children: error })
29148
+ error && /* @__PURE__ */ jsx56(StepWarning, { children: error })
29201
29149
  ] });
29202
29150
  const helpText = `Saved to ${experiencesCredentialsPath()} \u2014 loaded automatically by experiences import.`;
29203
29151
  if (field === "confirm") {
@@ -29205,13 +29153,13 @@ function ContentfulCredentialsScreen({ onDone }) {
29205
29153
  { label: hasAny ? "Update the saved credentials" : "Enter credentials now", value: ENTER },
29206
29154
  { label: allSet ? "Keep them as they are" : "Skip for now", value: KEEP }
29207
29155
  ];
29208
- return /* @__PURE__ */ jsx58(
29156
+ return /* @__PURE__ */ jsx56(
29209
29157
  StepLayout,
29210
29158
  {
29211
29159
  helpText,
29212
- prompt: /* @__PURE__ */ jsxs49(Box50, { flexDirection: "column", children: [
29213
- /* @__PURE__ */ jsx58(Text54, { children: "Contentful credentials" }),
29214
- /* @__PURE__ */ jsx58(Box50, { marginTop: 1, children: /* @__PURE__ */ jsx58(
29160
+ prompt: /* @__PURE__ */ jsxs49(Box48, { flexDirection: "column", children: [
29161
+ /* @__PURE__ */ jsx56(Text52, { children: "Contentful credentials" }),
29162
+ /* @__PURE__ */ jsx56(Box48, { marginTop: 1, children: /* @__PURE__ */ jsx56(
29215
29163
  Select2,
29216
29164
  {
29217
29165
  options: allSet ? [...options].reverse() : options,
@@ -29252,24 +29200,24 @@ function ContentfulCredentialsScreen({ onDone }) {
29252
29200
  onDone("completed");
29253
29201
  };
29254
29202
  const prompts = {
29255
- spaceId: /* @__PURE__ */ jsxs49(Box50, { children: [
29256
- /* @__PURE__ */ jsx58(Text54, { children: `Space ID${stored.spaceId ? ` [${stored.spaceId}]` : ""}: ` }),
29257
- /* @__PURE__ */ jsx58(TextInput2, { onSubmit: (v) => advance("spaceId", v) }, "spaceId")
29203
+ spaceId: /* @__PURE__ */ jsxs49(Box48, { children: [
29204
+ /* @__PURE__ */ jsx56(Text52, { children: `Space ID${stored.spaceId ? ` [${stored.spaceId}]` : ""}: ` }),
29205
+ /* @__PURE__ */ jsx56(TextInput2, { onSubmit: (v) => advance("spaceId", v) }, "spaceId")
29258
29206
  ] }),
29259
- environmentId: /* @__PURE__ */ jsxs49(Box50, { children: [
29260
- /* @__PURE__ */ jsx58(Text54, { children: `Environment ID [${stored.environmentId || "master"}]: ` }),
29261
- /* @__PURE__ */ jsx58(TextInput2, { onSubmit: (v) => advance("environmentId", v) }, "environmentId")
29207
+ environmentId: /* @__PURE__ */ jsxs49(Box48, { children: [
29208
+ /* @__PURE__ */ jsx56(Text52, { children: `Environment ID [${stored.environmentId || "master"}]: ` }),
29209
+ /* @__PURE__ */ jsx56(TextInput2, { onSubmit: (v) => advance("environmentId", v) }, "environmentId")
29262
29210
  ] }),
29263
- cmaToken: /* @__PURE__ */ jsxs49(Box50, { children: [
29264
- /* @__PURE__ */ jsx58(Text54, { children: `CMA token${stored.cmaToken ? " [press Enter to keep existing]" : " (paste here)"}: ` }),
29265
- /* @__PURE__ */ jsx58(PasswordInput, { onSubmit: (v) => advance("cmaToken", v) }, "cmaToken")
29211
+ cmaToken: /* @__PURE__ */ jsxs49(Box48, { children: [
29212
+ /* @__PURE__ */ jsx56(Text52, { children: `CMA token${stored.cmaToken ? " [press Enter to keep existing]" : " (paste here)"}: ` }),
29213
+ /* @__PURE__ */ jsx56(PasswordInput, { onSubmit: (v) => advance("cmaToken", v) }, "cmaToken")
29266
29214
  ] }),
29267
- host: /* @__PURE__ */ jsxs49(Box50, { children: [
29268
- /* @__PURE__ */ jsx58(Text54, { children: `API host [${currentHost}]: ` }),
29269
- /* @__PURE__ */ jsx58(TextInput2, { onSubmit: (v) => advance("host", v) }, "host")
29215
+ host: /* @__PURE__ */ jsxs49(Box48, { children: [
29216
+ /* @__PURE__ */ jsx56(Text52, { children: `API host [${currentHost}]: ` }),
29217
+ /* @__PURE__ */ jsx56(TextInput2, { onSubmit: (v) => advance("host", v) }, "host")
29270
29218
  ] })
29271
29219
  };
29272
- return /* @__PURE__ */ jsx58(StepLayout, { helpText, prompt: prompts[field], children: summary });
29220
+ return /* @__PURE__ */ jsx56(StepLayout, { helpText, prompt: prompts[field], children: summary });
29273
29221
  }
29274
29222
  var ENV_KEYS, ENTER, KEEP, FIELD_ORDER;
29275
29223
  var init_ContentfulCredentialsScreen = __esm({
@@ -29287,9 +29235,9 @@ var init_ContentfulCredentialsScreen = __esm({
29287
29235
 
29288
29236
  // packages/experience-design-system-cli/src/setup/steps/preferences/BooleanInput.tsx
29289
29237
  import { useEffect as useEffect14, useState as useState26 } from "react";
29290
- import { Box as Box51, Text as Text55 } from "ink";
29238
+ import { Box as Box49, Text as Text53 } from "ink";
29291
29239
  import { Select as Select3 } from "@inkjs/ui";
29292
- import { jsx as jsx59, jsxs as jsxs50 } from "react/jsx-runtime";
29240
+ import { jsx as jsx57, jsxs as jsxs50 } from "react/jsx-runtime";
29293
29241
  function tick(labels, forOn, current) {
29294
29242
  const label = forOn ? labels.on : labels.off;
29295
29243
  return forOn === current ? `${label} \u2713` : label;
@@ -29307,7 +29255,7 @@ function BooleanInput({
29307
29255
  useEffect14(() => {
29308
29256
  void readExperiencesCredentials().then(setStored);
29309
29257
  }, []);
29310
- if (!stored) return /* @__PURE__ */ jsx59(Text55, { dimColor: true, children: "Reading saved preferences\u2026" });
29258
+ if (!stored) return /* @__PURE__ */ jsx57(Text53, { dimColor: true, children: "Reading saved preferences\u2026" });
29311
29259
  const current = read(stored) ?? fallback;
29312
29260
  const submit = (value) => {
29313
29261
  if (value === current) {
@@ -29316,13 +29264,13 @@ function BooleanInput({
29316
29264
  }
29317
29265
  void writeExperiencesCredentials(write2(stored, value)).then(() => onDone("completed"));
29318
29266
  };
29319
- return /* @__PURE__ */ jsx59(
29267
+ return /* @__PURE__ */ jsx57(
29320
29268
  StepLayout,
29321
29269
  {
29322
29270
  helpText,
29323
- prompt: /* @__PURE__ */ jsxs50(Box51, { flexDirection: "column", children: [
29324
- /* @__PURE__ */ jsx59(Text55, { children: question }),
29325
- /* @__PURE__ */ jsx59(Box51, { marginTop: 1, children: /* @__PURE__ */ jsx59(
29271
+ prompt: /* @__PURE__ */ jsxs50(Box49, { flexDirection: "column", children: [
29272
+ /* @__PURE__ */ jsx57(Text53, { children: question }),
29273
+ /* @__PURE__ */ jsx57(Box49, { marginTop: 1, children: /* @__PURE__ */ jsx57(
29326
29274
  Select3,
29327
29275
  {
29328
29276
  options: [
@@ -29347,9 +29295,9 @@ var init_BooleanInput = __esm({
29347
29295
  });
29348
29296
 
29349
29297
  // packages/experience-design-system-cli/src/setup/steps/preferences/AnalyticsScreen.tsx
29350
- import { jsx as jsx60 } from "react/jsx-runtime";
29298
+ import { jsx as jsx58 } from "react/jsx-runtime";
29351
29299
  function AnalyticsScreen({ onDone }) {
29352
- return /* @__PURE__ */ jsx60(
29300
+ return /* @__PURE__ */ jsx58(
29353
29301
  BooleanInput,
29354
29302
  {
29355
29303
  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",
@@ -29370,9 +29318,9 @@ var init_AnalyticsScreen = __esm({
29370
29318
  });
29371
29319
 
29372
29320
  // packages/experience-design-system-cli/src/setup/steps/preferences/ColorPreferenceScreen.tsx
29373
- import { jsx as jsx61 } from "react/jsx-runtime";
29321
+ import { jsx as jsx59 } from "react/jsx-runtime";
29374
29322
  function ColorPreferenceScreen({ onDone }) {
29375
- return /* @__PURE__ */ jsx61(
29323
+ return /* @__PURE__ */ jsx59(
29376
29324
  BooleanInput,
29377
29325
  {
29378
29326
  helpText: `Prints plain text with no color, which suits CI logs and basic terminals.`,
@@ -29394,9 +29342,9 @@ var init_ColorPreferenceScreen = __esm({
29394
29342
 
29395
29343
  // packages/experience-design-system-cli/src/setup/steps/preferences/CustomPromptScreen.tsx
29396
29344
  import { useEffect as useEffect15, useState as useState27 } from "react";
29397
- import { Box as Box52, Text as Text56 } from "ink";
29345
+ import { Box as Box50, Text as Text54 } from "ink";
29398
29346
  import { ConfirmInput, TextInput as TextInput3 } from "@inkjs/ui";
29399
- import { jsx as jsx62, jsxs as jsxs51 } from "react/jsx-runtime";
29347
+ import { jsx as jsx60, jsxs as jsxs51 } from "react/jsx-runtime";
29400
29348
  function parseCustomSkillPath(answer) {
29401
29349
  const trimmed = answer.trim();
29402
29350
  if (trimmed === "") return void 0;
@@ -29418,19 +29366,19 @@ function CustomPromptsScreen({ onDone }) {
29418
29366
  useEffect15(() => {
29419
29367
  void readExperiencesCredentials().then(setStored);
29420
29368
  }, []);
29421
- if (!stored) return /* @__PURE__ */ jsx62(Text56, { dimColor: true, children: "Reading saved prompt paths\u2026" });
29369
+ if (!stored) return /* @__PURE__ */ jsx60(Text54, { dimColor: true, children: "Reading saved prompt paths\u2026" });
29422
29370
  const submit = (answer) => {
29423
29371
  const next = applyCustomSkillPath(stored, parseCustomSkillPath(answer));
29424
29372
  void writeExperiencesCredentials(next).then(() => onDone("completed"));
29425
29373
  };
29426
29374
  if (phase === "confirm") {
29427
- return /* @__PURE__ */ jsx62(
29375
+ return /* @__PURE__ */ jsx60(
29428
29376
  StepLayout,
29429
29377
  {
29430
29378
  helpText: CUSTOM_PROMPTS_HELP,
29431
- prompt: /* @__PURE__ */ jsxs51(Box52, { children: [
29432
- /* @__PURE__ */ jsx62(Text56, { children: "Use your own prompt file instead of the built-in one? " }),
29433
- /* @__PURE__ */ jsx62(
29379
+ prompt: /* @__PURE__ */ jsxs51(Box50, { children: [
29380
+ /* @__PURE__ */ jsx60(Text54, { children: "Use your own prompt file instead of the built-in one? " }),
29381
+ /* @__PURE__ */ jsx60(
29434
29382
  ConfirmInput,
29435
29383
  {
29436
29384
  defaultChoice: "cancel",
@@ -29442,13 +29390,13 @@ function CustomPromptsScreen({ onDone }) {
29442
29390
  }
29443
29391
  );
29444
29392
  }
29445
- return /* @__PURE__ */ jsx62(
29393
+ return /* @__PURE__ */ jsx60(
29446
29394
  StepLayout,
29447
29395
  {
29448
29396
  helpText: CUSTOM_PROMPTS_HELP,
29449
- prompt: /* @__PURE__ */ jsxs51(Box52, { children: [
29450
- /* @__PURE__ */ jsx62(Text56, { children: customSkillPathQuestion(stored.generatePromptPath) }),
29451
- /* @__PURE__ */ jsx62(TextInput3, { onSubmit: submit })
29397
+ prompt: /* @__PURE__ */ jsxs51(Box50, { children: [
29398
+ /* @__PURE__ */ jsx60(Text54, { children: customSkillPathQuestion(stored.generatePromptPath) }),
29399
+ /* @__PURE__ */ jsx60(TextInput3, { onSubmit: submit })
29452
29400
  ] })
29453
29401
  }
29454
29402
  );
@@ -29464,9 +29412,9 @@ var init_CustomPromptScreen = __esm({
29464
29412
  });
29465
29413
 
29466
29414
  // packages/experience-design-system-cli/src/setup/steps/preferences/DebugLogsScreen.tsx
29467
- import { jsx as jsx63 } from "react/jsx-runtime";
29415
+ import { jsx as jsx61 } from "react/jsx-runtime";
29468
29416
  function DebugLogsScreen({ onDone }) {
29469
- return /* @__PURE__ */ jsx63(
29417
+ return /* @__PURE__ */ jsx61(
29470
29418
  BooleanInput,
29471
29419
  {
29472
29420
  helpText: `Writes a verbose trace of every command decision, for troubleshooting.`,
@@ -29488,16 +29436,16 @@ var init_DebugLogsScreen = __esm({
29488
29436
 
29489
29437
  // packages/experience-design-system-cli/src/setup/steps/preferences/PreferencesMenu.tsx
29490
29438
  import { useState as useState28 } from "react";
29491
- import { Box as Box53, Text as Text57 } from "ink";
29439
+ import { Box as Box51, Text as Text55 } from "ink";
29492
29440
  import { Select as Select4 } from "@inkjs/ui";
29493
- import { jsx as jsx64, jsxs as jsxs52 } from "react/jsx-runtime";
29441
+ import { jsx as jsx62, jsxs as jsxs52 } from "react/jsx-runtime";
29494
29442
  function PreferencesMenu({ onDone }) {
29495
29443
  const [open, setOpen] = useState28(null);
29496
29444
  const [changed, setChanged] = useState28(/* @__PURE__ */ new Set());
29497
29445
  const entry = open === null ? void 0 : PREFERENCE_OPTIONS.find((option) => option.key === open);
29498
- if (!entry) return /* @__PURE__ */ jsx64(PreferenceList, { changed, onOpen: setOpen, onDone });
29446
+ if (!entry) return /* @__PURE__ */ jsx62(PreferenceList, { changed, onOpen: setOpen, onDone });
29499
29447
  const { key, Screen } = entry;
29500
- return /* @__PURE__ */ jsx64(
29448
+ return /* @__PURE__ */ jsx62(
29501
29449
  Screen,
29502
29450
  {
29503
29451
  onDone: (status) => {
@@ -29514,13 +29462,13 @@ function PreferenceList({ changed, onOpen, onDone }) {
29514
29462
  ...PREFERENCE_OPTIONS.map((option) => ({ label: option.label, value: option.key })),
29515
29463
  { label: "Done", value: DONE_VALUE }
29516
29464
  ];
29517
- return /* @__PURE__ */ jsx64(
29465
+ return /* @__PURE__ */ jsx62(
29518
29466
  StepLayout,
29519
29467
  {
29520
29468
  helpText: PREFERENCES_MENU_HELP,
29521
- prompt: /* @__PURE__ */ jsxs52(Box53, { flexDirection: "column", children: [
29522
- /* @__PURE__ */ jsx64(Text57, { children: "Preferences" }),
29523
- /* @__PURE__ */ jsx64(Box53, { marginTop: 1, children: /* @__PURE__ */ jsx64(
29469
+ prompt: /* @__PURE__ */ jsxs52(Box51, { flexDirection: "column", children: [
29470
+ /* @__PURE__ */ jsx62(Text55, { children: "Preferences" }),
29471
+ /* @__PURE__ */ jsx62(Box51, { marginTop: 1, children: /* @__PURE__ */ jsx62(
29524
29472
  Select4,
29525
29473
  {
29526
29474
  options,
@@ -29553,22 +29501,22 @@ var init_PreferencesMenu = __esm({
29553
29501
  {
29554
29502
  key: "customPrompts",
29555
29503
  label: "Custom prompts",
29556
- Screen: ({ onDone }) => /* @__PURE__ */ jsx64(CustomPromptsScreen, { onDone })
29504
+ Screen: ({ onDone }) => /* @__PURE__ */ jsx62(CustomPromptsScreen, { onDone })
29557
29505
  },
29558
29506
  {
29559
29507
  key: "debug",
29560
29508
  label: "Debug logging",
29561
- Screen: ({ onDone }) => /* @__PURE__ */ jsx64(DebugLogsScreen, { onDone })
29509
+ Screen: ({ onDone }) => /* @__PURE__ */ jsx62(DebugLogsScreen, { onDone })
29562
29510
  },
29563
29511
  {
29564
29512
  key: "analytics",
29565
29513
  label: "Usage analytics",
29566
- Screen: ({ onDone }) => /* @__PURE__ */ jsx64(AnalyticsScreen, { onDone })
29514
+ Screen: ({ onDone }) => /* @__PURE__ */ jsx62(AnalyticsScreen, { onDone })
29567
29515
  },
29568
29516
  {
29569
29517
  key: "noColor",
29570
29518
  label: "Terminal colors",
29571
- Screen: ({ onDone }) => /* @__PURE__ */ jsx64(ColorPreferenceScreen, { onDone })
29519
+ Screen: ({ onDone }) => /* @__PURE__ */ jsx62(ColorPreferenceScreen, { onDone })
29572
29520
  }
29573
29521
  ];
29574
29522
  DONE_VALUE = "menu:done";
@@ -29784,23 +29732,23 @@ var init_prerequisites = __esm({
29784
29732
 
29785
29733
  // packages/experience-design-system-cli/src/setup/steps/prerequisites/PrerequisitesScreen.tsx
29786
29734
  import { useEffect as useEffect16, useRef as useRef12, useState as useState29 } from "react";
29787
- import { Box as Box54, Text as Text58 } from "ink";
29735
+ import { Box as Box52, Text as Text56 } from "ink";
29788
29736
  import { ConfirmInput as ConfirmInput2 } from "@inkjs/ui";
29789
- import { jsx as jsx65, jsxs as jsxs53 } from "react/jsx-runtime";
29737
+ import { jsx as jsx63, jsxs as jsxs53 } from "react/jsx-runtime";
29790
29738
  function EventLine({ event }) {
29791
- if (event.kind === "success") return /* @__PURE__ */ jsxs53(Text58, { color: PALETTE.success, children: [
29739
+ if (event.kind === "success") return /* @__PURE__ */ jsxs53(Text56, { color: PALETTE.success, children: [
29792
29740
  "\u2713 ",
29793
29741
  event.message
29794
29742
  ] });
29795
- if (event.kind === "failure") return /* @__PURE__ */ jsxs53(Text58, { color: PALETTE.error, children: [
29743
+ if (event.kind === "failure") return /* @__PURE__ */ jsxs53(Text56, { color: PALETTE.error, children: [
29796
29744
  "\u2717 ",
29797
29745
  event.message
29798
29746
  ] });
29799
- if (event.kind === "warning") return /* @__PURE__ */ jsxs53(Text58, { color: PALETTE.warning, children: [
29747
+ if (event.kind === "warning") return /* @__PURE__ */ jsxs53(Text56, { color: PALETTE.warning, children: [
29800
29748
  "\u26A0 ",
29801
29749
  event.message
29802
29750
  ] });
29803
- return /* @__PURE__ */ jsx65(Text58, { children: event.message });
29751
+ return /* @__PURE__ */ jsx63(Text56, { children: event.message });
29804
29752
  }
29805
29753
  function PrerequisitesScreen({
29806
29754
  repoRoot,
@@ -29839,15 +29787,15 @@ function PrerequisitesScreen({
29839
29787
  ...skipBuild !== void 0 ? { skipBuild } : {}
29840
29788
  }).then(onDone);
29841
29789
  }, []);
29842
- return /* @__PURE__ */ jsx65(
29790
+ return /* @__PURE__ */ jsx63(
29843
29791
  StepLayout,
29844
29792
  {
29845
- prompt: confirm ? /* @__PURE__ */ jsxs53(Box54, { children: [
29846
- /* @__PURE__ */ jsxs53(Text58, { children: [
29793
+ prompt: confirm ? /* @__PURE__ */ jsxs53(Box52, { children: [
29794
+ /* @__PURE__ */ jsxs53(Text56, { children: [
29847
29795
  confirm.question,
29848
29796
  " "
29849
29797
  ] }),
29850
- /* @__PURE__ */ jsx65(
29798
+ /* @__PURE__ */ jsx63(
29851
29799
  ConfirmInput2,
29852
29800
  {
29853
29801
  defaultChoice: confirm.defaultYes ? "confirm" : "cancel",
@@ -29856,8 +29804,8 @@ function PrerequisitesScreen({
29856
29804
  },
29857
29805
  confirm.question
29858
29806
  )
29859
- ] }) : /* @__PURE__ */ jsx65(Text58, { color: PALETTE.info, children: "\u27F3 Checking prerequisites\u2026" }),
29860
- children: /* @__PURE__ */ jsx65(Box54, { flexDirection: "column", children: events.map((event, index) => /* @__PURE__ */ jsx65(EventLine, { event }, `${index}-${event.message}`)) })
29807
+ ] }) : /* @__PURE__ */ jsx63(Text56, { color: PALETTE.info, children: "\u27F3 Checking prerequisites\u2026" }),
29808
+ children: /* @__PURE__ */ jsx63(Box52, { flexDirection: "column", children: events.map((event, index) => /* @__PURE__ */ jsx63(EventLine, { event }, `${index}-${event.message}`)) })
29861
29809
  }
29862
29810
  );
29863
29811
  }
@@ -29878,8 +29826,8 @@ __export(SetupScreen_exports, {
29878
29826
  formatSetupCompletionMessage: () => formatSetupCompletionMessage
29879
29827
  });
29880
29828
  import { useEffect as useEffect17, useRef as useRef13, useState as useState30 } from "react";
29881
- import { Box as Box55, Text as Text59, useStdout as useStdout5 } from "ink";
29882
- import { jsx as jsx66, jsxs as jsxs54 } from "react/jsx-runtime";
29829
+ import { Box as Box53, Text as Text57, useStdout as useStdout5 } from "ink";
29830
+ import { jsx as jsx64, jsxs as jsxs54 } from "react/jsx-runtime";
29883
29831
  function countRequiredFailures(results) {
29884
29832
  return results.filter((result) => result.required && result.status === "failed").length;
29885
29833
  }
@@ -29910,7 +29858,7 @@ function SetupScreen({
29910
29858
  });
29911
29859
  void (async () => {
29912
29860
  const results = [];
29913
- const prerequisites = await runScreen((done) => /* @__PURE__ */ jsx66(
29861
+ const prerequisites = await runScreen((done) => /* @__PURE__ */ jsx64(
29914
29862
  PrerequisitesScreen,
29915
29863
  {
29916
29864
  repoRoot,
@@ -29944,21 +29892,21 @@ function SetupScreen({
29944
29892
  if (skip.skipAgent) {
29945
29893
  results.push({ name: "Coding agent", status: "skipped", required: false });
29946
29894
  } else {
29947
- const status = await runScreen((done) => /* @__PURE__ */ jsx66(CodingAgentScreen, { onDone: done }));
29895
+ const status = await runScreen((done) => /* @__PURE__ */ jsx64(CodingAgentScreen, { onDone: done }));
29948
29896
  results.push({ name: "Coding agent", status, required: true });
29949
29897
  }
29950
29898
  setActiveStep(3);
29951
29899
  if (skip.skipCredentials) {
29952
29900
  results.push({ name: "Contentful credentials", status: "skipped", required: false });
29953
29901
  } else {
29954
- const status = await runScreen((done) => /* @__PURE__ */ jsx66(ContentfulCredentialsScreen, { onDone: done }));
29902
+ const status = await runScreen((done) => /* @__PURE__ */ jsx64(ContentfulCredentialsScreen, { onDone: done }));
29955
29903
  results.push({ name: "Contentful credentials", status, required: false });
29956
29904
  }
29957
29905
  setActiveStep(4);
29958
29906
  if (skip.skipOptional) {
29959
29907
  results.push({ name: "Preferences", status: "skipped", required: false });
29960
29908
  } else {
29961
- const status = await runScreen((done) => /* @__PURE__ */ jsx66(PreferencesMenu, { onDone: done }));
29909
+ const status = await runScreen((done) => /* @__PURE__ */ jsx64(PreferencesMenu, { onDone: done }));
29962
29910
  results.push({ name: "Preferences", status, required: false });
29963
29911
  }
29964
29912
  const exitCode = countRequiredFailures(results) === 0 ? 0 : 1;
@@ -29967,37 +29915,37 @@ function SetupScreen({
29967
29915
  onComplete(finalOutcome);
29968
29916
  })();
29969
29917
  }, []);
29970
- return /* @__PURE__ */ jsxs54(Box55, { flexDirection: "column", paddingX: 1, children: [
29971
- /* @__PURE__ */ jsxs54(Box55, { justifyContent: "space-between", columnGap: 1, ...columns !== void 0 ? { width: columns - 2 } : {}, children: [
29972
- /* @__PURE__ */ jsx66(Box55, { flexShrink: 0, children: /* @__PURE__ */ jsx66(Text59, { bold: true, children: "experiences setup" }) }),
29973
- /* @__PURE__ */ jsx66(Box55, { flexShrink: 0, children: /* @__PURE__ */ jsxs54(Text59, { dimColor: true, children: [
29918
+ return /* @__PURE__ */ jsxs54(Box53, { flexDirection: "column", paddingX: 1, children: [
29919
+ /* @__PURE__ */ jsxs54(Box53, { justifyContent: "space-between", columnGap: 1, ...columns !== void 0 ? { width: columns - 2 } : {}, children: [
29920
+ /* @__PURE__ */ jsx64(Box53, { flexShrink: 0, children: /* @__PURE__ */ jsx64(Text57, { bold: true, children: "experiences setup" }) }),
29921
+ /* @__PURE__ */ jsx64(Box53, { flexShrink: 0, children: /* @__PURE__ */ jsxs54(Text57, { dimColor: true, children: [
29974
29922
  "v",
29975
29923
  version
29976
29924
  ] }) })
29977
29925
  ] }),
29978
- /* @__PURE__ */ jsx66(Box55, { marginTop: 1, children: /* @__PURE__ */ jsx66(SetupStepper, { activeStep, columns }) }),
29979
- outcome ? /* @__PURE__ */ jsx66(SetupSummary, { outcome, notice }) : screen && /* @__PURE__ */ jsx66(Box55, { marginTop: 1, children: screen })
29926
+ /* @__PURE__ */ jsx64(Box53, { marginTop: 1, children: /* @__PURE__ */ jsx64(SetupStepper, { activeStep, columns }) }),
29927
+ outcome ? /* @__PURE__ */ jsx64(SetupSummary, { outcome, notice }) : screen && /* @__PURE__ */ jsx64(Box53, { marginTop: 1, children: screen })
29980
29928
  ] });
29981
29929
  }
29982
29930
  function SetupSummary({ outcome, notice }) {
29983
29931
  const requiredFailed = countRequiredFailures(outcome.results);
29984
- return /* @__PURE__ */ jsxs54(Box55, { flexDirection: "column", marginTop: 1, children: [
29985
- /* @__PURE__ */ jsx66(Text59, { bold: true, children: "Summary" }),
29932
+ return /* @__PURE__ */ jsxs54(Box53, { flexDirection: "column", marginTop: 1, children: [
29933
+ /* @__PURE__ */ jsx64(Text57, { bold: true, children: "Summary" }),
29986
29934
  outcome.results.map((result) => {
29987
29935
  if (result.status === "completed") {
29988
- return /* @__PURE__ */ jsxs54(Text59, { color: PALETTE.success, children: [
29936
+ return /* @__PURE__ */ jsxs54(Text57, { color: PALETTE.success, children: [
29989
29937
  "\u2713 ",
29990
29938
  result.name
29991
29939
  ] }, result.name);
29992
29940
  }
29993
29941
  if (result.status === "skipped") {
29994
- return /* @__PURE__ */ jsxs54(Text59, { dimColor: true, children: [
29942
+ return /* @__PURE__ */ jsxs54(Text57, { dimColor: true, children: [
29995
29943
  "\u2013 ",
29996
29944
  result.name,
29997
29945
  " \u2014 skipped"
29998
29946
  ] }, result.name);
29999
29947
  }
30000
- return /* @__PURE__ */ jsxs54(Text59, { color: result.required ? PALETTE.error : PALETTE.warning, children: [
29948
+ return /* @__PURE__ */ jsxs54(Text57, { color: result.required ? PALETTE.error : PALETTE.warning, children: [
30001
29949
  result.required ? "\u2717" : "\u26A0",
30002
29950
  " ",
30003
29951
  result.name,
@@ -30005,10 +29953,10 @@ function SetupSummary({ outcome, notice }) {
30005
29953
  result.required ? "required" : "optional"
30006
29954
  ] }, result.name);
30007
29955
  }),
30008
- notice && /* @__PURE__ */ jsx66(Box55, { marginTop: 1, children: /* @__PURE__ */ jsx66(Text59, { color: PALETTE.warning, children: notice }) }),
30009
- /* @__PURE__ */ jsx66(Box55, { marginTop: 1, children: /* @__PURE__ */ jsx66(Text59, { bold: true, color: requiredFailed === 0 ? PALETTE.success : PALETTE.warning, children: formatSetupCompletionMessage(outcome.results) }) }),
30010
- requiredFailed > 0 && /* @__PURE__ */ jsx66(Text59, { dimColor: true, children: "Complete the steps above, then re-run experiences setup." }),
30011
- /* @__PURE__ */ jsx66(Text59, { dimColor: true, children: "Run experiences doctor any time to re-check." })
29956
+ notice && /* @__PURE__ */ jsx64(Box53, { marginTop: 1, children: /* @__PURE__ */ jsx64(Text57, { color: PALETTE.warning, children: notice }) }),
29957
+ /* @__PURE__ */ jsx64(Box53, { marginTop: 1, children: /* @__PURE__ */ jsx64(Text57, { bold: true, color: requiredFailed === 0 ? PALETTE.success : PALETTE.warning, children: formatSetupCompletionMessage(outcome.results) }) }),
29958
+ requiredFailed > 0 && /* @__PURE__ */ jsx64(Text57, { dimColor: true, children: "Complete the steps above, then re-run experiences setup." }),
29959
+ /* @__PURE__ */ jsx64(Text57, { dimColor: true, children: "Run experiences doctor any time to re-check." })
30012
29960
  ] });
30013
29961
  }
30014
29962
  var init_SetupScreen = __esm({