@contentful/experience-design-system-cli 2.37.1-dev-build-a7704a7f.0 → 2.37.1-dev-build-daf73756.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3765,8 +3765,30 @@ function applyScopeDecisions(db, sessionId, decisions) {
3765
3765
  const placeholders = accepted.map(() => "?").join(",");
3766
3766
  db.prepare(`UPDATE raw_components SET status = 'generated' WHERE session_id = ? AND name IN (${placeholders})`).run(sessionId, ...accepted);
3767
3767
  }
3768
+ removeSlotAllowedComponents(db, sessionId, decisions.excludedSlotEdges ?? [], rejected);
3768
3769
  db.prepare("UPDATE sessions SET updated_at = ? WHERE id = ?").run(now, sessionId);
3769
3770
  }
3771
+ function removeSlotAllowedComponents(db, sessionId, edges, rejectedNames) {
3772
+ if (edges.length === 0 && rejectedNames.length === 0)
3773
+ return;
3774
+ const componentId = db.prepare("SELECT component_id FROM raw_components WHERE session_id = ? AND name = ?");
3775
+ const removeEdge = db.prepare("DELETE FROM raw_slot_allowed_components WHERE session_id = ? AND component_id = ? AND allowed_component = ?");
3776
+ const removeEverywhere = db.prepare("DELETE FROM raw_slot_allowed_components WHERE session_id = ? AND allowed_component = ?");
3777
+ db.exec("BEGIN");
3778
+ try {
3779
+ for (const edge of edges) {
3780
+ const row = componentId.get(sessionId, edge.parent);
3781
+ if (row)
3782
+ removeEdge.run(sessionId, row.component_id, edge.child);
3783
+ }
3784
+ for (const name of rejectedNames)
3785
+ removeEverywhere.run(sessionId, name);
3786
+ db.exec("COMMIT");
3787
+ } catch (e) {
3788
+ db.exec("ROLLBACK");
3789
+ throw e;
3790
+ }
3791
+ }
3770
3792
  function findLatestSessionForCommand(db, command) {
3771
3793
  return getLatestCompletedSessionForCommand(db, command);
3772
3794
  }
@@ -19586,6 +19608,52 @@ var init_analytics_store = __esm({
19586
19608
  }
19587
19609
  });
19588
19610
 
19611
+ // packages/experience-design-system-cli/src/tui/theme.ts
19612
+ function detectColorMode(env = process.env) {
19613
+ const bg = env.COLORFGBG?.split(";").pop();
19614
+ if (bg === "7" || bg === "15") return "light";
19615
+ return "dark";
19616
+ }
19617
+ var DARK, LIGHT, PALETTE;
19618
+ var init_theme = __esm({
19619
+ "packages/experience-design-system-cli/src/tui/theme.ts"() {
19620
+ "use strict";
19621
+ DARK = {
19622
+ text: "#f7f9fa",
19623
+ // gray100
19624
+ muted: "#aec1cc",
19625
+ // gray400
19626
+ border: "#aec1cc",
19627
+ // gray400
19628
+ accent: "#40a0ff",
19629
+ // blue400
19630
+ error: "#ff707d",
19631
+ // red400
19632
+ success: "#5DB057",
19633
+ // green400
19634
+ warning: "#FFC835"
19635
+ // yellow500
19636
+ };
19637
+ LIGHT = {
19638
+ text: "#111B2B",
19639
+ // gray900
19640
+ muted: "#5A657C",
19641
+ // gray600
19642
+ border: "#5A657C",
19643
+ // gray600
19644
+ accent: "#0059c8",
19645
+ // semantic primary
19646
+ error: "#bd002a",
19647
+ // semantic negative
19648
+ success: "#006D23",
19649
+ // semantic positive
19650
+ warning: "#CC4500"
19651
+ // semantic warning
19652
+ };
19653
+ PALETTE = detectColorMode() === "light" ? LIGHT : DARK;
19654
+ }
19655
+ });
19656
+
19589
19657
  // packages/experience-design-system-cli/src/tui/home/home.theme.ts
19590
19658
  function brandBar(width, ramp = BRAND_RAMP) {
19591
19659
  if (width <= 0 || ramp.length === 0) return [];
@@ -19596,28 +19664,11 @@ function brandBar(width, ramp = BRAND_RAMP) {
19596
19664
  color
19597
19665
  })).filter((segment) => segment.text.length > 0);
19598
19666
  }
19599
- var BRAND, PALETTE, BRAND_RAMP, BAR_CELL, FOCUS_MARKER;
19667
+ var BRAND_RAMP, BAR_CELL, FOCUS_MARKER;
19600
19668
  var init_home_theme = __esm({
19601
19669
  "packages/experience-design-system-cli/src/tui/home/home.theme.ts"() {
19602
19670
  "use strict";
19603
- BRAND = {
19604
- blue: "#1773EB",
19605
- green: "#00C459",
19606
- orange: "#E44F20",
19607
- yellow: "#FFDA00",
19608
- white: "#FFFFFF",
19609
- slate: "#8B8D91",
19610
- steel: "#C4D1DE"
19611
- };
19612
- PALETTE = {
19613
- accent: BRAND.blue,
19614
- success: BRAND.green,
19615
- error: BRAND.orange,
19616
- warning: BRAND.yellow,
19617
- muted: BRAND.slate,
19618
- border: BRAND.steel
19619
- };
19620
- BRAND_RAMP = [BRAND.blue, BRAND.orange, BRAND.yellow];
19671
+ BRAND_RAMP = ["#1773EB", "#E44F20", "#FFDA00"];
19621
19672
  BAR_CELL = "\u2501";
19622
19673
  FOCUS_MARKER = "\u276F";
19623
19674
  }
@@ -19697,11 +19748,12 @@ var init_use_terminal_width = __esm({
19697
19748
  import { Text } from "ink";
19698
19749
  import { jsx } from "react/jsx-runtime";
19699
19750
  function ControlHints({ hints }) {
19700
- return /* @__PURE__ */ jsx(Text, { children: hints.map((hint) => `[${hint.keys}] ${hint.label}`).join(" \xB7 ") });
19751
+ return /* @__PURE__ */ jsx(Text, { color: PALETTE.muted, children: hints.map((hint) => `[${hint.keys}] ${hint.label}`).join(" \xB7 ") });
19701
19752
  }
19702
19753
  var init_control_hints = __esm({
19703
19754
  "packages/experience-design-system-cli/src/tui/control-hints.tsx"() {
19704
19755
  "use strict";
19756
+ init_theme();
19705
19757
  }
19706
19758
  });
19707
19759
 
@@ -19799,6 +19851,7 @@ var VERSION, HEADING, SUBTITLE, MIN_TERMINAL_WIDTH, START_ITEMS;
19799
19851
  var init_home = __esm({
19800
19852
  "packages/experience-design-system-cli/src/tui/home/home.tsx"() {
19801
19853
  "use strict";
19854
+ init_theme();
19802
19855
  init_home_theme();
19803
19856
  init_version();
19804
19857
  init_use_terminal_width();
@@ -19839,7 +19892,7 @@ function ImportScreen({ exitCode, onDone }) {
19839
19892
  var init_PageContainer = __esm({
19840
19893
  "packages/experience-design-system-cli/src/tui/import/PageContainer.tsx"() {
19841
19894
  "use strict";
19842
- init_home_theme();
19895
+ init_theme();
19843
19896
  }
19844
19897
  });
19845
19898
 
@@ -19889,20 +19942,19 @@ function WelcomeScreen({ onContinue, onQuit, initialPath = "" }) {
19889
19942
  if (path5) onContinue(path5);
19890
19943
  };
19891
19944
  return /* @__PURE__ */ jsxs3(Box3, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
19892
- /* @__PURE__ */ jsx4(Text4, { bold: true, color: PALETTE.success, children: "\u{1F44B} Hey! Let's import your design system into Contentful." }),
19893
- /* @__PURE__ */ jsx4(Text4, { color: PALETTE.muted, children: "I'll walk you through 5 steps to get your components into Contentful ExO." }),
19945
+ /* @__PURE__ */ jsx4(Text4, { bold: true, color: PALETTE.success, children: "Let's import your design system into Contentful." }),
19894
19946
  /* @__PURE__ */ jsxs3(Box3, { flexDirection: "column", children: [
19895
- /* @__PURE__ */ jsx4(Text4, { dimColor: true, children: RULE }),
19947
+ /* @__PURE__ */ jsx4(Text4, { color: PALETTE.muted, children: RULE }),
19896
19948
  OVERVIEW.map((item) => /* @__PURE__ */ jsxs3(Box3, { gap: 1, children: [
19897
19949
  /* @__PURE__ */ jsx4(Text4, { bold: true, children: item.label }),
19898
19950
  /* @__PURE__ */ jsx4(Text4, { color: PALETTE.muted, children: item.description })
19899
19951
  ] }, item.label)),
19900
- /* @__PURE__ */ jsx4(Text4, { dimColor: true, children: RULE })
19952
+ /* @__PURE__ */ jsx4(Text4, { color: PALETTE.muted, children: RULE })
19901
19953
  ] }),
19902
19954
  /* @__PURE__ */ jsxs3(Box3, { flexDirection: "column", gap: 1, children: [
19903
19955
  /* @__PURE__ */ jsx4(Text4, { children: "Where is your component library?" }),
19904
- /* @__PURE__ */ jsxs3(Box3, { gap: 1, children: [
19905
- /* @__PURE__ */ jsx4(Text4, { color: PALETTE.accent, children: "?" }),
19956
+ /* @__PURE__ */ jsxs3(Box3, { children: [
19957
+ /* @__PURE__ */ jsx4(Text4, { color: PALETTE.text, children: "?" }),
19906
19958
  /* @__PURE__ */ jsx4(Text4, { children: "Project path:" }),
19907
19959
  /* @__PURE__ */ jsx4(TextInput, { value: projectPath, onChange: setProjectPath, onSubmit: submit })
19908
19960
  ] })
@@ -19919,7 +19971,7 @@ var RULE, OVERVIEW;
19919
19971
  var init_screen = __esm({
19920
19972
  "packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx"() {
19921
19973
  "use strict";
19922
- init_home_theme();
19974
+ init_theme();
19923
19975
  init_controls();
19924
19976
  init_logic();
19925
19977
  RULE = "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500";
@@ -20068,7 +20120,7 @@ function TokenInputScreen({ onConfirm, onBack, initialPath = "" }) {
20068
20120
  var init_screen2 = __esm({
20069
20121
  "packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx"() {
20070
20122
  "use strict";
20071
- init_home_theme();
20123
+ init_theme();
20072
20124
  init_controls2();
20073
20125
  init_logic2();
20074
20126
  init_validate_path();
@@ -20212,7 +20264,7 @@ import { useEffect as useEffect3, useMemo, useState as useState5 } from "react";
20212
20264
  import { Box as Box5, Text as Text6 } from "ink";
20213
20265
  import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
20214
20266
  function Row({ row }) {
20215
- return /* @__PURE__ */ jsxs5(Text6, { color: row.tone === "accent" ? PALETTE.accent : void 0, dimColor: row.tone === "muted", children: [
20267
+ return /* @__PURE__ */ jsxs5(Text6, { color: row.tone === "accent" ? PALETTE.accent : row.tone === "muted" ? PALETTE.muted : void 0, children: [
20216
20268
  " \u2022 ",
20217
20269
  String(row.count).padStart(3),
20218
20270
  " ",
@@ -20226,7 +20278,7 @@ function Failure({ scan, path: path5 }) {
20226
20278
  "\u2717 ",
20227
20279
  headline
20228
20280
  ] }),
20229
- hints.map((hint) => /* @__PURE__ */ jsx6(Text6, { dimColor: true, children: hint }, hint))
20281
+ hints.map((hint) => /* @__PURE__ */ jsx6(Text6, { color: PALETTE.muted, children: hint }, hint))
20230
20282
  ] });
20231
20283
  }
20232
20284
  function Summary({ scan, path: path5 }) {
@@ -20271,14 +20323,14 @@ function PathValidationScreen({
20271
20323
  onBack
20272
20324
  });
20273
20325
  return /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
20274
- scan === void 0 && /* @__PURE__ */ jsxs5(Text6, { dimColor: true, children: [
20326
+ scan === void 0 && /* @__PURE__ */ jsxs5(Text6, { color: PALETTE.muted, children: [
20275
20327
  "Scanning ",
20276
20328
  /* @__PURE__ */ jsx6(Text6, { bold: true, children: resolvedPath }),
20277
20329
  "..."
20278
20330
  ] }),
20279
20331
  scan?.ok === false && /* @__PURE__ */ jsx6(Failure, { scan, path: resolvedPath }),
20280
20332
  scan?.ok === true && /* @__PURE__ */ jsx6(Summary, { scan, path: resolvedPath }),
20281
- /* @__PURE__ */ jsx6(Box5, { marginTop: 1, gap: 3, children: controlsFor(phase).map((control) => /* @__PURE__ */ jsxs5(Text6, { dimColor: true, children: [
20333
+ /* @__PURE__ */ jsx6(Box5, { marginTop: 1, gap: 3, children: controlsFor(phase).map((control) => /* @__PURE__ */ jsxs5(Text6, { color: PALETTE.muted, children: [
20282
20334
  "[",
20283
20335
  control.keys,
20284
20336
  "] ",
@@ -20289,7 +20341,7 @@ function PathValidationScreen({
20289
20341
  var init_screen3 = __esm({
20290
20342
  "packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/screen.tsx"() {
20291
20343
  "use strict";
20292
- init_home_theme();
20344
+ init_theme();
20293
20345
  init_resolve_user_path();
20294
20346
  init_controls3();
20295
20347
  init_scan_files();
@@ -20457,8 +20509,8 @@ function CredentialsScreen({
20457
20509
  /* @__PURE__ */ jsx7(Text7, { bold: true, children: "Contentful credentials" }),
20458
20510
  /* @__PURE__ */ jsx7(Text7, { children: prefilled ? "Credentials pre-filled from the configuration settings." : "Enter the Contentful space you want to import into." }),
20459
20511
  !prefilled && /* @__PURE__ */ jsxs6(Fragment, { children: [
20460
- /* @__PURE__ */ jsx7(Text7, { dimColor: true, children: "We use it to check what components already exist and to push your import. If you skip, files are saved locally and nothing is pushed." }),
20461
- /* @__PURE__ */ jsx7(Text7, { dimColor: true, children: "Tip: save these under Settings \u2192 Configuration so they pre-fill here." })
20512
+ /* @__PURE__ */ jsx7(Text7, { color: PALETTE.muted, children: "We use it to check what components already exist and to push your import. If you skip, files are saved locally and nothing is pushed." }),
20513
+ /* @__PURE__ */ jsx7(Text7, { color: PALETTE.muted, children: "Tip: save these under Settings \u2192 Configuration so they pre-fill here." })
20462
20514
  ] })
20463
20515
  ] }),
20464
20516
  /* @__PURE__ */ jsx7(Box6, { flexDirection: "column", children: FIELDS.map((field) => /* @__PURE__ */ jsxs6(Box6, { gap: 1, children: [
@@ -20479,14 +20531,14 @@ function CredentialsScreen({
20479
20531
  }
20480
20532
  )
20481
20533
  ] }, field)) }),
20482
- active === "host" && /* @__PURE__ */ jsx7(Text7, { dimColor: true, children: "Default: api.contentful.com \xB7 EU spaces: api.eu.contentful.com" }),
20534
+ active === "host" && /* @__PURE__ */ jsx7(Text7, { color: PALETTE.muted, children: "Default: api.contentful.com \xB7 EU spaces: api.eu.contentful.com" }),
20483
20535
  error && /* @__PURE__ */ jsxs6(Text7, { color: PALETTE.error, children: [
20484
20536
  "\u2717 ",
20485
20537
  error
20486
20538
  ] }),
20487
20539
  validating && /* @__PURE__ */ jsx7(Text7, { color: PALETTE.accent, children: "Validating credentials..." }),
20488
- !validating && !error && !isUnchanged(normalize(values), initialValues) && /* @__PURE__ */ jsx7(Text7, { dimColor: true, children: "Changed values are saved after they validate." }),
20489
- /* @__PURE__ */ jsx7(Box6, { marginTop: 1, gap: 3, children: CREDENTIALS_CONTROLS.map((control) => /* @__PURE__ */ jsxs6(Text7, { dimColor: true, children: [
20540
+ !validating && !error && !isUnchanged(normalize(values), initialValues) && /* @__PURE__ */ jsx7(Text7, { color: PALETTE.muted, children: "Changed values are saved after they validate." }),
20541
+ /* @__PURE__ */ jsx7(Box6, { marginTop: 1, gap: 3, children: CREDENTIALS_CONTROLS.map((control) => /* @__PURE__ */ jsxs6(Text7, { color: PALETTE.muted, children: [
20490
20542
  "[",
20491
20543
  control.keys,
20492
20544
  "] ",
@@ -20498,7 +20550,7 @@ var LABELS;
20498
20550
  var init_screen4 = __esm({
20499
20551
  "packages/experience-design-system-cli/src/tui/import/steps/04-credentials/screen.tsx"() {
20500
20552
  "use strict";
20501
- init_home_theme();
20553
+ init_theme();
20502
20554
  init_controls4();
20503
20555
  init_src4();
20504
20556
  init_logic4();
@@ -20574,7 +20626,7 @@ function ErrorStep({
20574
20626
  " failed"
20575
20627
  ] }),
20576
20628
  /* @__PURE__ */ jsx8(Text8, { color: PALETTE.error, children: message }),
20577
- /* @__PURE__ */ jsx8(Box7, { marginTop: 1, gap: 3, children: controls.map((control) => /* @__PURE__ */ jsxs7(Text8, { dimColor: true, children: [
20629
+ /* @__PURE__ */ jsx8(Box7, { marginTop: 1, gap: 3, children: controls.map((control) => /* @__PURE__ */ jsxs7(Text8, { color: PALETTE.muted, children: [
20578
20630
  "[",
20579
20631
  control.keys,
20580
20632
  "] ",
@@ -20585,7 +20637,7 @@ function ErrorStep({
20585
20637
  var init_error_step = __esm({
20586
20638
  "packages/experience-design-system-cli/src/tui/import/shared/error-step/error-step.tsx"() {
20587
20639
  "use strict";
20588
- init_home_theme();
20640
+ init_theme();
20589
20641
  init_controls5();
20590
20642
  init_logic5();
20591
20643
  }
@@ -20654,7 +20706,7 @@ function GateStep({
20654
20706
  ] }),
20655
20707
  summary && /* @__PURE__ */ jsx9(Text9, { color: PALETTE.muted, children: summary }),
20656
20708
  context && /* @__PURE__ */ jsx9(Box8, { marginTop: 1, children: /* @__PURE__ */ jsx9(Text9, { children: context }) }),
20657
- /* @__PURE__ */ jsx9(Box8, { marginTop: 1, gap: 3, children: gateControls(continueLabel, skipLabel2, onSkip !== void 0).map((control) => /* @__PURE__ */ jsxs8(Text9, { dimColor: true, children: [
20709
+ /* @__PURE__ */ jsx9(Box8, { marginTop: 1, gap: 3, children: gateControls(continueLabel, skipLabel2, onSkip !== void 0).map((control) => /* @__PURE__ */ jsxs8(Text9, { color: PALETTE.muted, children: [
20658
20710
  "[",
20659
20711
  control.keys,
20660
20712
  "] ",
@@ -20665,7 +20717,7 @@ function GateStep({
20665
20717
  var init_gate_step = __esm({
20666
20718
  "packages/experience-design-system-cli/src/tui/import/shared/gate-step/gate-step.tsx"() {
20667
20719
  "use strict";
20668
- init_home_theme();
20720
+ init_theme();
20669
20721
  init_controls6();
20670
20722
  init_logic6();
20671
20723
  }
@@ -20693,14 +20745,15 @@ var init_logic7 = __esm({
20693
20745
  // packages/experience-design-system-cli/src/tui/import/shared/running-step/theme.ts
20694
20746
  import { defaultTheme, extendTheme } from "@inkjs/ui";
20695
20747
  var PROGRESS_THEME;
20696
- var init_theme = __esm({
20748
+ var init_theme2 = __esm({
20697
20749
  "packages/experience-design-system-cli/src/tui/import/shared/running-step/theme.ts"() {
20698
20750
  "use strict";
20751
+ init_theme();
20699
20752
  PROGRESS_THEME = extendTheme(defaultTheme, {
20700
20753
  components: {
20701
20754
  ProgressBar: {
20702
20755
  styles: {
20703
- completed: () => ({ color: "blue" })
20756
+ completed: () => ({ color: PALETTE.accent })
20704
20757
  }
20705
20758
  }
20706
20759
  }
@@ -20758,9 +20811,9 @@ function RunningStep({
20758
20811
  const elapsed = useElapsed();
20759
20812
  return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
20760
20813
  /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
20761
- /* @__PURE__ */ jsx10(Text10, { dimColor: true, children: RULE2 }),
20814
+ /* @__PURE__ */ jsx10(Text10, { color: PALETTE.muted, children: RULE2 }),
20762
20815
  /* @__PURE__ */ jsx10(Text10, { bold: true, children: stepLabel(stepNumber, totalSteps, title) }),
20763
- /* @__PURE__ */ jsx10(Text10, { dimColor: true, children: RULE2 })
20816
+ /* @__PURE__ */ jsx10(Text10, { color: PALETTE.muted, children: RULE2 })
20764
20817
  ] }),
20765
20818
  /* @__PURE__ */ jsx10(Text10, { children: description }),
20766
20819
  /* @__PURE__ */ jsx10(Box9, { marginTop: 1, flexDirection: "column", gap: 1, children: lines.map((line, index) => /* @__PURE__ */ jsx10(Line, { line }, index)) }),
@@ -20774,9 +20827,9 @@ var RULE2;
20774
20827
  var init_running_step = __esm({
20775
20828
  "packages/experience-design-system-cli/src/tui/import/shared/running-step/running-step.tsx"() {
20776
20829
  "use strict";
20777
- init_home_theme();
20778
- init_logic7();
20779
20830
  init_theme();
20831
+ init_logic7();
20832
+ init_theme2();
20780
20833
  init_use_elapsed();
20781
20834
  RULE2 = "\u2500".repeat(40);
20782
20835
  }
@@ -21323,10 +21376,10 @@ var init_use_extraction = __esm({
21323
21376
 
21324
21377
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/theme.ts
21325
21378
  var PALETTE2;
21326
- var init_theme2 = __esm({
21379
+ var init_theme3 = __esm({
21327
21380
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/theme.ts"() {
21328
21381
  "use strict";
21329
- init_home_theme();
21382
+ init_theme();
21330
21383
  PALETTE2 = {
21331
21384
  info: PALETTE.accent,
21332
21385
  success: PALETTE.success,
@@ -21438,7 +21491,7 @@ var TWO_COLUMN_MIN_WIDTH, SCOPE_GATE_MAIN_COLUMN_WIDTH, ACCEPTED_COMPONENTS_COLU
21438
21491
  var init_columns = __esm({
21439
21492
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/columns.ts"() {
21440
21493
  "use strict";
21441
- init_theme2();
21494
+ init_theme3();
21442
21495
  TWO_COLUMN_MIN_WIDTH = 100;
21443
21496
  SCOPE_GATE_MAIN_COLUMN_WIDTH = 54;
21444
21497
  ACCEPTED_COMPONENTS_COLUMN_WIDTH = 36;
@@ -21504,7 +21557,7 @@ function WindowedPanelHeader({
21504
21557
  }) {
21505
21558
  return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
21506
21559
  /* @__PURE__ */ jsx13(Text11, { bold: true, color: PALETTE2.info, inverse: focused, children: title }),
21507
- /* @__PURE__ */ jsx13(Text11, { dimColor: true, children: "\u2500".repeat(Math.max(0, width - 2)) })
21560
+ /* @__PURE__ */ jsx13(Text11, { color: PALETTE2.muted, children: "\u2500".repeat(Math.max(0, width - 2)) })
21508
21561
  ] });
21509
21562
  }
21510
21563
  function formatWindowIndicator(direction, count) {
@@ -21518,7 +21571,7 @@ var MIN_TERMINAL_PANEL_HEIGHT;
21518
21571
  var init_windowed_panel = __esm({
21519
21572
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/windowed-panel.tsx"() {
21520
21573
  "use strict";
21521
- init_theme2();
21574
+ init_theme3();
21522
21575
  MIN_TERMINAL_PANEL_HEIGHT = 5;
21523
21576
  }
21524
21577
  });
@@ -21543,7 +21596,7 @@ function AddedColumn(props) {
21543
21596
  const showSeparator = firstNonCycleIdx > 0 && i === firstNonCycleIdx;
21544
21597
  const style = sideColumnLabelStyle({ isCycle: entry.isCycle, isSelected, focused });
21545
21598
  return /* @__PURE__ */ jsxs11(React6.Fragment, { children: [
21546
- showSeparator && /* @__PURE__ */ jsx14(Text12, { dimColor: true, children: "\u2500".repeat(Math.max(0, width - 2)) }),
21599
+ showSeparator && /* @__PURE__ */ jsx14(Text12, { color: PALETTE2.muted, children: "\u2500".repeat(Math.max(0, width - 2)) }),
21547
21600
  /* @__PURE__ */ jsxs11(Box11, { children: [
21548
21601
  isCursor ? /* @__PURE__ */ jsx14(Text12, { color: PALETTE2.info, bold: true, children: figures.pointer }) : /* @__PURE__ */ jsx14(Text12, { children: " " }),
21549
21602
  reserveAiBadge && (aiFlagged ? /* @__PURE__ */ jsx14(Text12, { color: PALETTE2.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx14(Text12, { children: " " })),
@@ -21569,7 +21622,7 @@ var init_added_column = __esm({
21569
21622
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/added-column.tsx"() {
21570
21623
  "use strict";
21571
21624
  init_columns();
21572
- init_theme2();
21625
+ init_theme3();
21573
21626
  init_windowed_panel();
21574
21627
  }
21575
21628
  });
@@ -21604,7 +21657,7 @@ function CyclesPanel({ cycles, cursor }) {
21604
21657
  var init_cycles_panel = __esm({
21605
21658
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/cycles-panel.tsx"() {
21606
21659
  "use strict";
21607
- init_theme2();
21660
+ init_theme3();
21608
21661
  }
21609
21662
  });
21610
21663
 
@@ -21622,7 +21675,7 @@ function RejectPrompt({ pending }) {
21622
21675
  var init_reject_prompt = __esm({
21623
21676
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/reject-prompt.tsx"() {
21624
21677
  "use strict";
21625
- init_theme2();
21678
+ init_theme3();
21626
21679
  }
21627
21680
  });
21628
21681
 
@@ -21638,7 +21691,7 @@ function legendEntry(keyBracket, label, active = false) {
21638
21691
  var init_LegendEntry = __esm({
21639
21692
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/LegendEntry.tsx"() {
21640
21693
  "use strict";
21641
- init_theme2();
21694
+ init_theme3();
21642
21695
  }
21643
21696
  });
21644
21697
 
@@ -21659,7 +21712,7 @@ function CompactControlBar({ hasGroupRoots, searchActive }) {
21659
21712
  var init_CompactControlBar = __esm({
21660
21713
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CompactControlBar.tsx"() {
21661
21714
  "use strict";
21662
- init_theme2();
21715
+ init_theme3();
21663
21716
  init_LegendEntry();
21664
21717
  }
21665
21718
  });
@@ -21698,7 +21751,7 @@ function CounterStrip(props) {
21698
21751
  var init_CounterStrip = __esm({
21699
21752
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CounterStrip.tsx"() {
21700
21753
  "use strict";
21701
- init_theme2();
21754
+ init_theme3();
21702
21755
  }
21703
21756
  });
21704
21757
 
@@ -21763,7 +21816,7 @@ var DEFAULT_MAX_ROWS;
21763
21816
  var init_GotoBanner = __esm({
21764
21817
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GotoBanner.tsx"() {
21765
21818
  "use strict";
21766
- init_theme2();
21819
+ init_theme3();
21767
21820
  DEFAULT_MAX_ROWS = 15;
21768
21821
  }
21769
21822
  });
@@ -22142,7 +22195,7 @@ function PreviewBadge({
22142
22195
  var init_badge = __esm({
22143
22196
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/badge.tsx"() {
22144
22197
  "use strict";
22145
- init_theme2();
22198
+ init_theme3();
22146
22199
  }
22147
22200
  });
22148
22201
 
@@ -22259,7 +22312,7 @@ function buildVisibleRows(props) {
22259
22312
  if (visited.has(target)) continue;
22260
22313
  visited.add(target);
22261
22314
  const isCycleMember = cycleParticipants.has(target);
22262
- out.push({ name: target, depth: cur.depth + 1, isCycleMember });
22315
+ out.push({ name: target, depth: cur.depth + 1, isCycleMember, parent: cur.name });
22263
22316
  queue.push({ name: target, depth: cur.depth + 1 });
22264
22317
  }
22265
22318
  }
@@ -22306,7 +22359,8 @@ function buildVisibleRows(props) {
22306
22359
  sharedSuffix,
22307
22360
  cycleChild: child.isCycleMember || void 0,
22308
22361
  itemIdx: childRec?.idx ?? -1,
22309
- rootName: key
22362
+ rootName: key,
22363
+ parentName: child.parent
22310
22364
  });
22311
22365
  });
22312
22366
  }
@@ -22389,13 +22443,19 @@ function buildVisibleRows(props) {
22389
22443
  injectedChildren.push({
22390
22444
  name: target,
22391
22445
  depth: parentDepth + 1,
22392
- isCycleChild: true
22446
+ isCycleChild: true,
22447
+ parent: parentName
22393
22448
  });
22394
22449
  }
22395
22450
  };
22396
22451
  emitCycleChildrenOf(root, 0);
22397
22452
  for (const c2 of closureChildren) {
22398
- injectedChildren.push({ name: c2.name, depth: c2.depth, isCycleChild: false });
22453
+ injectedChildren.push({
22454
+ name: c2.name,
22455
+ depth: c2.depth,
22456
+ isCycleChild: false,
22457
+ parent: c2.path[c2.path.length - 2] ?? root
22458
+ });
22399
22459
  emitCycleChildrenOf(c2.name, c2.depth);
22400
22460
  }
22401
22461
  const isLastAtDepth = (idx) => {
@@ -22429,7 +22489,8 @@ function buildVisibleRows(props) {
22429
22489
  sharedSuffix,
22430
22490
  cycleChild: child.isCycleChild || void 0,
22431
22491
  itemIdx: childRec?.idx ?? -1,
22432
- rootName: root
22492
+ rootName: root,
22493
+ parentName: child.parent
22433
22494
  });
22434
22495
  });
22435
22496
  }
@@ -22587,7 +22648,7 @@ function GroupedSidebar(props) {
22587
22648
  const rs = itemName ? renderStatusByKey?.get(itemName) : void 0;
22588
22649
  const badge = itemName ? previewBadge(previewAnnotationByKey?.get(itemName)) : null;
22589
22650
  const showInheritance = rs !== void 0 && row.kind !== "cycle" && row.kind !== "empty" && row.kind !== "group-root";
22590
- const supportsSelectionGlyph = selectionStateByKey !== void 0 && itemName !== void 0 && (row.kind === "standalone" || row.kind === "group-root" || row.kind === "group-child" || row.kind === "flat" || row.kind === "cycle");
22651
+ const supportsSelectionGlyph = selectionStateByKey !== void 0 && itemName !== void 0 && (row.kind === "standalone" || row.kind === "group-root" || row.kind === "group-child" || row.kind === "flat" || row.kind === "empty" || row.kind === "cycle");
22591
22652
  const selState = supportsSelectionGlyph ? selectionStateByKey.get(itemName) ?? "undecided" : void 0;
22592
22653
  const isCycleRow = row.kind === "cycle";
22593
22654
  const selStyle = selectionGlyphStyleFor(selState, isCycleRow);
@@ -22617,7 +22678,7 @@ function GroupedSidebar(props) {
22617
22678
  color: isSelected ? PALETTE2.info : labelStyle.dim ? PALETTE2.muted : labelStyle.color,
22618
22679
  bold: isSelected || labelStyle.bold,
22619
22680
  inverse: false,
22620
- underline: isSelected && !focused,
22681
+ underline: isSelected && focused,
22621
22682
  wrap: wrapLabels ? "wrap" : "truncate",
22622
22683
  children: [
22623
22684
  " ",
@@ -22637,7 +22698,7 @@ var init_GroupedSidebar = __esm({
22637
22698
  "use strict";
22638
22699
  init_composite_closure();
22639
22700
  init_badge();
22640
- init_theme2();
22701
+ init_theme3();
22641
22702
  init_windowed_panel();
22642
22703
  GLYPH_EXPAND_COLLAPSED = "\u25B8";
22643
22704
  GLYPH_EXPAND_EXPANDED = "\u25BE";
@@ -22932,7 +22993,7 @@ function SearchMatchSummary({
22932
22993
  var init_SearchMatchSummary = __esm({
22933
22994
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/SearchMatchSummary.tsx"() {
22934
22995
  "use strict";
22935
- init_theme2();
22996
+ init_theme3();
22936
22997
  init_sidebar_input();
22937
22998
  }
22938
22999
  });
@@ -23368,6 +23429,7 @@ function resolveKey(mode, key, ctx) {
23368
23429
  function resolveMain(key, ctx) {
23369
23430
  const { input } = key;
23370
23431
  const inMain = ctx.focusedColumn === "main";
23432
+ if (key.ctrl && input === "z") return { type: "undo" };
23371
23433
  if (input === "q" || key.escape) {
23372
23434
  if (key.escape && ctx.jumpFilterActive) return { type: "clear-jump-filter" };
23373
23435
  if (key.escape && ctx.searchActive) return { type: "clear-search" };
@@ -23678,14 +23740,30 @@ function rejectNeedsConfirmation(graph, name, state2) {
23678
23740
  const ancestors = toReject.filter((n) => n !== name);
23679
23741
  return ancestors.length + toDeselect.length >= 2;
23680
23742
  }
23681
- function partitionDecisions(components, state2) {
23743
+ function removeSlotChild(components, edge) {
23744
+ return components.map(
23745
+ (component) => component.name === edge.parent ? {
23746
+ ...component,
23747
+ slots: component.slots?.map((slot) => ({
23748
+ ...slot,
23749
+ allowedComponents: slot.allowedComponents.filter((name) => name !== edge.child)
23750
+ }))
23751
+ } : component
23752
+ );
23753
+ }
23754
+ function withoutSlotChildren(components, removedEdges) {
23755
+ return removedEdges.reduce(removeSlotChild, components);
23756
+ }
23757
+ function partitionDecisions(components, state2, removedEdges) {
23682
23758
  const accepted = [];
23683
23759
  const rejected = [];
23684
23760
  for (const c2 of components) {
23685
23761
  if (state2.get(c2.name) === "accepted") accepted.push(c2.name);
23686
23762
  else rejected.push(c2.name);
23687
23763
  }
23688
- return { accepted, rejected };
23764
+ const rejectedNames = new Set(rejected);
23765
+ const excludedSlotEdges = removedEdges.filter((e) => !rejectedNames.has(e.parent) && !rejectedNames.has(e.child));
23766
+ return { accepted, rejected, excludedSlotEdges };
23689
23767
  }
23690
23768
  var init_state = __esm({
23691
23769
  "packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/state.ts"() {
@@ -23697,10 +23775,15 @@ var init_state = __esm({
23697
23775
 
23698
23776
  // packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/use-scope-gate.ts
23699
23777
  import { useEffect as useEffect7, useMemo as useMemo2, useRef as useRef4, useState as useState12 } from "react";
23700
- function useScopeGate({ components, onConfirm, onQuit }) {
23778
+ function useScopeGate({ components: loadedComponents, onConfirm, onQuit }) {
23701
23779
  const { columns: totalWidth, rows: terminalRows } = useTerminalSize();
23702
23780
  const columnPlan = useMemo2(() => computeColumnWidths(totalWidth), [totalWidth]);
23703
23781
  const [decisions, setDecisions] = useState12(/* @__PURE__ */ new Map());
23782
+ const [removedEdges, setRemovedEdges] = useState12([]);
23783
+ const components = useMemo2(
23784
+ () => withoutSlotChildren(loadedComponents, removedEdges),
23785
+ [loadedComponents, removedEdges]
23786
+ );
23704
23787
  const [nav, setNav] = useState12({ cursor: 0, scrollOffset: 0 });
23705
23788
  const [focusedColumn, setFocusedColumn] = useState12("main");
23706
23789
  const [addedComponentsCursor, setAddedComponentsCursor] = useState12(0);
@@ -23873,6 +23956,14 @@ function useScopeGate({ components, onConfirm, onQuit }) {
23873
23956
  return void 0;
23874
23957
  }
23875
23958
  };
23959
+ const focusedNestedEdge = () => {
23960
+ const row = visibleRows[safeCursor];
23961
+ if (row?.kind !== "group-child" || !row.parentName || row.itemIdx < 0) return void 0;
23962
+ const child = groupedItems[row.itemIdx]?.key;
23963
+ return child ? { parent: row.parentName, child } : void 0;
23964
+ };
23965
+ const removeFromParentSlot = (edge) => setRemovedEdges((edges) => [...edges, edge]);
23966
+ const undoSlotRemoval = () => setRemovedEdges((edges) => edges.slice(0, -1));
23876
23967
  const jumpCursorTo = (name) => {
23877
23968
  let idx = -1;
23878
23969
  for (let i = 0; i < visibleRows.length; i++) {
@@ -23972,7 +24063,7 @@ function useScopeGate({ components, onConfirm, onQuit }) {
23972
24063
  onQuit();
23973
24064
  return;
23974
24065
  case "confirm":
23975
- onConfirm(partitionDecisions(components, decisions));
24066
+ onConfirm(partitionDecisions(components, decisions, removedEdges));
23976
24067
  return;
23977
24068
  case "close-help":
23978
24069
  setShowHelp(false);
@@ -24025,6 +24116,11 @@ function useScopeGate({ components, onConfirm, onQuit }) {
24025
24116
  return;
24026
24117
  }
24027
24118
  case "reject": {
24119
+ const edge = focusedColumn === "main" ? focusedNestedEdge() : void 0;
24120
+ if (edge) {
24121
+ removeFromParentSlot(edge);
24122
+ return;
24123
+ }
24028
24124
  const key = focusedColumn === "added-components" ? addedComponents[safeAddedComponentsCursor]?.name : focusedRowKey();
24029
24125
  if (key) requestReject(key);
24030
24126
  return;
@@ -24032,6 +24128,9 @@ function useScopeGate({ components, onConfirm, onQuit }) {
24032
24128
  case "toggle-all":
24033
24129
  decide({ type: "toggle-all" });
24034
24130
  return;
24131
+ case "undo":
24132
+ undoSlotRemoval();
24133
+ return;
24035
24134
  case "accept-unflagged":
24036
24135
  decide({ type: "accept-unflagged" });
24037
24136
  return;
@@ -24300,7 +24399,7 @@ var init_screen7 = __esm({
24300
24399
  init_HelpOverlay();
24301
24400
  init_SearchMatchSummary();
24302
24401
  init_sidebar_help();
24303
- init_theme2();
24402
+ init_theme3();
24304
24403
  init_use_scope_gate();
24305
24404
  HELP_SECTIONS = [
24306
24405
  {
@@ -25188,24 +25287,6 @@ var init_screen9 = __esm({
25188
25287
  }
25189
25288
  });
25190
25289
 
25191
- // packages/experience-design-system-cli/src/tui/import/steps/09-review/theme.ts
25192
- var PALETTE3;
25193
- var init_theme3 = __esm({
25194
- "packages/experience-design-system-cli/src/tui/import/steps/09-review/theme.ts"() {
25195
- "use strict";
25196
- init_home_theme();
25197
- PALETTE3 = {
25198
- info: PALETTE.accent,
25199
- success: PALETTE.success,
25200
- error: PALETTE.error,
25201
- warning: PALETTE.warning,
25202
- muted: PALETTE.muted,
25203
- border: PALETTE.border,
25204
- inverse: "#FFFFFF"
25205
- };
25206
- }
25207
- });
25208
-
25209
25290
  // packages/experience-design-system-cli/src/tui/import/steps/09-review/review-json-panel.ts
25210
25291
  function getReviewJsonPanelValue(selected, showHiddenProps) {
25211
25292
  if (!selected) return "";
@@ -25697,13 +25778,13 @@ function serializeState(state2, originalJson) {
25697
25778
  }
25698
25779
  function Picker({ value, active }) {
25699
25780
  return /* @__PURE__ */ jsxs22(Box21, { children: [
25700
- active && /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.warning, children: "\u2039" }),
25701
- /* @__PURE__ */ jsx27(Text23, { color: active ? PALETTE3.warning : void 0, bold: active, children: value }),
25702
- active && /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.warning, children: "\u203A" })
25781
+ active && /* @__PURE__ */ jsx27(Text23, { color: PALETTE.warning, children: "\u2039" }),
25782
+ /* @__PURE__ */ jsx27(Text23, { color: active ? PALETTE.warning : void 0, bold: active, children: value }),
25783
+ active && /* @__PURE__ */ jsx27(Text23, { color: PALETTE.warning, children: "\u203A" })
25703
25784
  ] });
25704
25785
  }
25705
25786
  function Toggle({ value, active }) {
25706
- return /* @__PURE__ */ jsx27(Box21, { children: /* @__PURE__ */ jsx27(Text23, { color: active ? PALETTE3.warning : value ? PALETTE3.success : PALETTE3.border, children: value ? "[\u2713]" : "[ ]" }) });
25787
+ return /* @__PURE__ */ jsx27(Box21, { children: /* @__PURE__ */ jsx27(Text23, { color: active ? PALETTE.warning : value ? PALETTE.success : PALETTE.border, children: value ? "[\u2713]" : "[ ]" }) });
25707
25788
  }
25708
25789
  function InlinePropField({
25709
25790
  label,
@@ -25713,7 +25794,7 @@ function InlinePropField({
25713
25794
  width
25714
25795
  }) {
25715
25796
  return /* @__PURE__ */ jsxs22(Box21, { width, gap: 1, flexShrink: flexible ? 1 : 0, flexGrow: flexible ? 1 : 0, flexWrap: "wrap", children: [
25716
- /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE3.warning : PALETTE3.muted, bold: focused, wrap: "truncate-end", children: [
25797
+ /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, wrap: "truncate-end", children: [
25717
25798
  focused ? "\u203A " : " ",
25718
25799
  label
25719
25800
  ] }),
@@ -25734,7 +25815,7 @@ function DefaultValueRow({
25734
25815
  focused
25735
25816
  }) {
25736
25817
  return /* @__PURE__ */ jsxs22(Box21, { gap: 1, flexWrap: "wrap", flexShrink: 0, children: [
25737
- /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE3.warning : PALETTE3.muted, bold: focused, children: [
25818
+ /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
25738
25819
  focused ? "\u203A " : " ",
25739
25820
  "default:"
25740
25821
  ] }),
@@ -25749,9 +25830,9 @@ function RowLabel({
25749
25830
  return /* @__PURE__ */ jsxs22(
25750
25831
  Text23,
25751
25832
  {
25752
- color: selected ? PALETTE3.inverse : PALETTE3.info,
25833
+ color: selected ? "#FFFFFF" : PALETTE.accent,
25753
25834
  bold: selected,
25754
- backgroundColor: selected ? "blue" : void 0,
25835
+ backgroundColor: selected ? PALETTE.accent : void 0,
25755
25836
  wrap: "truncate-end",
25756
25837
  children: [
25757
25838
  " ",
@@ -25767,7 +25848,7 @@ function ValueInputRow({
25767
25848
  cursorVisible
25768
25849
  }) {
25769
25850
  return /* @__PURE__ */ jsxs22(Box21, { paddingLeft: 2, children: [
25770
- /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.info, children: mode === "edit" ? "\u270E " : "+ " }),
25851
+ /* @__PURE__ */ jsx27(Text23, { color: PALETTE.accent, children: mode === "edit" ? "\u270E " : "+ " }),
25771
25852
  /* @__PURE__ */ jsx27(Text23, { children: valueText }),
25772
25853
  /* @__PURE__ */ jsx27(Text23, { inverse: cursorVisible, children: " " })
25773
25854
  ] });
@@ -25784,7 +25865,7 @@ function EditableListItem({
25784
25865
  if (isBeingEdited) {
25785
25866
  return /* @__PURE__ */ jsx27(ValueInputRow, { mode: "edit", valueText, cursorVisible });
25786
25867
  }
25787
- return /* @__PURE__ */ jsx27(Box21, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx27(Text23, { color: active ? PALETTE3.info : void 0, children: active ? `${figures5.pointer} ${value}` : ` ${value}` }) });
25868
+ return /* @__PURE__ */ jsx27(Box21, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx27(Text23, { color: active ? PALETTE.accent : void 0, children: active ? `${figures5.pointer} ${value}` : ` ${value}` }) });
25788
25869
  }
25789
25870
  function EditableValueList({
25790
25871
  values,
@@ -25798,7 +25879,7 @@ function EditableValueList({
25798
25879
  showAddInput
25799
25880
  }) {
25800
25881
  return /* @__PURE__ */ jsxs22(Fragment5, { children: [
25801
- values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: emptyMessage }) : /* @__PURE__ */ jsx27(Box21, { paddingLeft: emptyPaddingLeft, children: /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: emptyMessage }) })),
25882
+ values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: emptyMessage }) : /* @__PURE__ */ jsx27(Box21, { paddingLeft: emptyPaddingLeft, children: /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: emptyMessage }) })),
25802
25883
  values.map((value, index) => /* @__PURE__ */ jsx27(
25803
25884
  EditableListItem,
25804
25885
  {
@@ -25824,11 +25905,11 @@ function DefaultSubRow({
25824
25905
  const cursor = cursorVisible ? "\u2588" : " ";
25825
25906
  if (prop.type === "richtext" || prop.type === "media" || prop.type === "link") {
25826
25907
  return /* @__PURE__ */ jsxs22(Box21, { gap: 1, flexShrink: 0, children: [
25827
- /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE3.warning : PALETTE3.muted, bold: focused, children: [
25908
+ /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
25828
25909
  focused ? "\u203A " : " ",
25829
25910
  "default:"
25830
25911
  ] }),
25831
- /* @__PURE__ */ jsx27(Text23, { color: focused ? void 0 : PALETTE3.muted, children: "(not applicable)" })
25912
+ /* @__PURE__ */ jsx27(Text23, { color: focused ? void 0 : PALETTE.muted, children: "(not applicable)" })
25832
25913
  ] });
25833
25914
  }
25834
25915
  if (prop.type === "boolean") {
@@ -25838,11 +25919,11 @@ function DefaultSubRow({
25838
25919
  if (prop.type === "enum") {
25839
25920
  if (prop.values.length === 0) {
25840
25921
  return /* @__PURE__ */ jsxs22(Box21, { gap: 1, flexShrink: 0, children: [
25841
- /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE3.warning : PALETTE3.muted, bold: focused, children: [
25922
+ /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
25842
25923
  focused ? "\u203A " : " ",
25843
25924
  "default:"
25844
25925
  ] }),
25845
- /* @__PURE__ */ jsx27(Text23, { color: focused ? void 0 : PALETTE3.muted, children: "(no values defined)" })
25926
+ /* @__PURE__ */ jsx27(Text23, { color: focused ? void 0 : PALETTE.muted, children: "(no values defined)" })
25846
25927
  ] });
25847
25928
  }
25848
25929
  const display = typeof prop.default === "string" && prop.default !== "" ? prop.default : "(unset)";
@@ -25851,11 +25932,11 @@ function DefaultSubRow({
25851
25932
  const value = typeof prop.default === "string" ? prop.default : "";
25852
25933
  if (active) {
25853
25934
  return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "row", flexShrink: 0, children: [
25854
- /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE3.warning : PALETTE3.muted, bold: focused, children: [
25935
+ /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
25855
25936
  focused ? "\u203A " : " ",
25856
25937
  "default:"
25857
25938
  ] }),
25858
- /* @__PURE__ */ jsxs22(Box21, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE3.warning, paddingX: 1, children: [
25939
+ /* @__PURE__ */ jsxs22(Box21, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
25859
25940
  /* @__PURE__ */ jsx27(Text23, { children: value.slice(0, textCursor) }),
25860
25941
  /* @__PURE__ */ jsx27(Text23, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
25861
25942
  /* @__PURE__ */ jsx27(Text23, { children: value.slice(textCursor + 1) })
@@ -25863,11 +25944,11 @@ function DefaultSubRow({
25863
25944
  ] });
25864
25945
  }
25865
25946
  return /* @__PURE__ */ jsxs22(Box21, { gap: 1, flexShrink: 0, children: [
25866
- /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE3.warning : PALETTE3.muted, bold: focused, children: [
25947
+ /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
25867
25948
  focused ? "\u203A " : " ",
25868
25949
  "default:"
25869
25950
  ] }),
25870
- /* @__PURE__ */ jsx27(Text23, { color: focused || value ? void 0 : PALETTE3.muted, children: value || "(none)" })
25951
+ /* @__PURE__ */ jsx27(Text23, { color: focused || value ? void 0 : PALETTE.muted, children: value || "(none)" })
25871
25952
  ] });
25872
25953
  }
25873
25954
  function DescriptionField({
@@ -25883,15 +25964,15 @@ function DescriptionField({
25883
25964
  }) {
25884
25965
  if (compact) {
25885
25966
  return /* @__PURE__ */ jsxs22(Box21, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
25886
- /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE3.warning : PALETTE3.muted, bold: focused, children: [
25967
+ /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
25887
25968
  focused ? "\u203A " : " ",
25888
25969
  label
25889
25970
  ] }),
25890
- /* @__PURE__ */ jsx27(Text23, { wrap: "truncate-end", color: value ? void 0 : PALETTE3.muted, children: value || "\u2014" })
25971
+ /* @__PURE__ */ jsx27(Text23, { wrap: "truncate-end", color: value ? void 0 : PALETTE.muted, children: value || "\u2014" })
25891
25972
  ] });
25892
25973
  }
25893
25974
  return /* @__PURE__ */ jsxs22(Box21, { paddingLeft, flexDirection: "column", width, flexShrink: 0, children: [
25894
- /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE3.warning : PALETTE3.muted, bold: focused, children: [
25975
+ /* @__PURE__ */ jsxs22(Text23, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
25895
25976
  focused ? "\u203A " : " ",
25896
25977
  label
25897
25978
  ] }),
@@ -25955,7 +26036,7 @@ function PropRow({
25955
26036
  ] }),
25956
26037
  prop.type === "token" && /* @__PURE__ */ jsx27(InlinePropField, { label: "kind:", focused: activeField === "tokenKind", width, children: editingField && activeField === "tokenKind" ? /* @__PURE__ */ jsx27(Picker, { value: prop.tokenKind || DESIGN_TOKEN_TYPES2[0], active: true }) : /* @__PURE__ */ jsx27(Text23, { wrap: "wrap", children: prop.tokenKind || "\u2014" }) }),
25957
26038
  prop.type === "enum" && /* @__PURE__ */ jsxs22(Box21, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
25958
- /* @__PURE__ */ jsxs22(Text23, { color: activeField === "values" ? PALETTE3.warning : PALETTE3.muted, bold: activeField === "values", children: [
26039
+ /* @__PURE__ */ jsxs22(Text23, { color: activeField === "values" ? PALETTE.warning : PALETTE.muted, bold: activeField === "values", children: [
25959
26040
  activeField === "values" ? "\u203A " : " ",
25960
26041
  "values:"
25961
26042
  ] }),
@@ -25976,27 +26057,27 @@ function PropRow({
25976
26057
  }
25977
26058
  ),
25978
26059
  prop.type === "token" && prop.category === "design" && /* @__PURE__ */ jsxs22(Box21, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
25979
- /* @__PURE__ */ jsxs22(Text23, { color: activeField === "allowed" ? PALETTE3.warning : PALETTE3.muted, bold: activeField === "allowed", children: [
26060
+ /* @__PURE__ */ jsxs22(Text23, { color: activeField === "allowed" ? PALETTE.warning : PALETTE.muted, bold: activeField === "allowed", children: [
25980
26061
  activeField === "allowed" ? "\u203A " : " ",
25981
26062
  "allowed:"
25982
26063
  ] }),
25983
- editingField && activeField === "allowed" ? /* @__PURE__ */ jsx27(Box21, { width: Math.max(1, width - 4), borderStyle: "round", borderColor: PALETTE3.warning, paddingX: 1, children: /* @__PURE__ */ jsx27(Text23, { children: "press [t] to edit allowed tokens" }) }) : /* @__PURE__ */ jsx27(
26064
+ editingField && activeField === "allowed" ? /* @__PURE__ */ jsx27(Box21, { width: Math.max(1, width - 4), borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: /* @__PURE__ */ jsx27(Text23, { children: "press [t] to edit allowed tokens" }) }) : /* @__PURE__ */ jsx27(
25984
26065
  Text23,
25985
26066
  {
25986
- color: activeField !== "allowed" && prop.allowed.length === 0 ? PALETTE3.muted : void 0,
26067
+ color: activeField !== "allowed" && prop.allowed.length === 0 ? PALETTE.muted : void 0,
25987
26068
  wrap: "wrap",
25988
26069
  children: prop.allowed.length > 0 ? prop.allowed.join(", ") : "(any)"
25989
26070
  }
25990
26071
  )
25991
26072
  ] }),
25992
- selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx27(Box21, { paddingLeft: 2, children: /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: (() => {
26073
+ selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx27(Box21, { paddingLeft: 2, children: /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: (() => {
25993
26074
  const max = Math.max(8, width - 8);
25994
26075
  const text = `~ ${rationale}`;
25995
26076
  return text.length > max ? text.slice(0, max - 1) + "\u2026" : text;
25996
26077
  })() }) }, rowKey ? `rationale-${rowKey}` : void 0),
25997
26078
  selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs22(Box21, { paddingLeft: 2, flexDirection: "column", children: [
25998
26079
  /* @__PURE__ */ jsxs22(Box21, { children: [
25999
- /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: "values:" }),
26080
+ /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "values:" }),
26000
26081
  activeField === "values" && /* @__PURE__ */ jsx27(Text23, { children: " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
26001
26082
  ] }),
26002
26083
  /* @__PURE__ */ jsx27(
@@ -26057,7 +26138,7 @@ function SlotRow({
26057
26138
  /* @__PURE__ */ jsxs22(
26058
26139
  Text23,
26059
26140
  {
26060
- color: activeField === "allowedComponents" ? PALETTE3.warning : PALETTE3.muted,
26141
+ color: activeField === "allowedComponents" ? PALETTE.warning : PALETTE.muted,
26061
26142
  bold: activeField === "allowedComponents",
26062
26143
  children: [
26063
26144
  activeField === "allowedComponents" ? "\u203A " : " ",
@@ -26065,14 +26146,14 @@ function SlotRow({
26065
26146
  ]
26066
26147
  }
26067
26148
  ),
26068
- slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: "(any)" }) : /* @__PURE__ */ jsx27(Text23, { wrap: "wrap", children: slot.allowedComponents.join(", ") })
26149
+ slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "(any)" }) : /* @__PURE__ */ jsx27(Text23, { wrap: "wrap", children: slot.allowedComponents.join(", ") })
26069
26150
  ] }),
26070
26151
  selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", children: [
26071
26152
  /* @__PURE__ */ jsxs22(Box21, { children: [
26072
26153
  /* @__PURE__ */ jsxs22(
26073
26154
  Text23,
26074
26155
  {
26075
- color: activeField === "allowedComponents" ? PALETTE3.warning : PALETTE3.muted,
26156
+ color: activeField === "allowedComponents" ? PALETTE.warning : PALETTE.muted,
26076
26157
  bold: activeField === "allowedComponents",
26077
26158
  children: [
26078
26159
  activeField === "allowedComponents" ? "\u203A " : " ",
@@ -26080,7 +26161,7 @@ function SlotRow({
26080
26161
  ]
26081
26162
  }
26082
26163
  ),
26083
- editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: slot.allowedComponents.length > 0 ? " [a] add [e] edit [r] remove [\u2190\u2192] cycle [\u2191\u2193] navigate [K/J] reorder" : " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
26164
+ editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: slot.allowedComponents.length > 0 ? " [a] add [e] edit [r] remove [\u2190\u2192] cycle [\u2191\u2193] navigate [K/J] reorder" : " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
26084
26165
  ] }),
26085
26166
  /* @__PURE__ */ jsx27(
26086
26167
  EditableValueList,
@@ -26096,21 +26177,21 @@ function SlotRow({
26096
26177
  showAddInput: editingField && activeField === "allowedComponents"
26097
26178
  }
26098
26179
  ),
26099
- editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */ jsx27(Box21, { paddingLeft: 2, flexDirection: "column", children: pickerCandidates.length === 0 ? /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: "(no valid components to add \u2014 all remaining candidates would create cycles)" }) : (() => {
26180
+ editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */ jsx27(Box21, { paddingLeft: 2, flexDirection: "column", children: pickerCandidates.length === 0 ? /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "(no valid components to add \u2014 all remaining candidates would create cycles)" }) : (() => {
26100
26181
  const filtered = valueText.length === 0 ? pickerCandidates : pickerCandidates.filter((n) => n.toLowerCase().includes(valueText.toLowerCase()));
26101
26182
  if (filtered.length === 0) {
26102
- return /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: "(no candidates match \u2014 Enter to add as free text)" });
26183
+ return /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "(no candidates match \u2014 Enter to add as free text)" });
26103
26184
  }
26104
26185
  const cursor = pickerCursor % filtered.length;
26105
26186
  const MAX_VISIBLE = 5;
26106
26187
  const start = Math.max(0, Math.min(filtered.length - MAX_VISIBLE, cursor - 2));
26107
26188
  const slice = filtered.slice(start, start + MAX_VISIBLE);
26108
26189
  return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", children: [
26109
- /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
26190
+ /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
26110
26191
  slice.map((name, i) => {
26111
26192
  const absIdx = start + i;
26112
26193
  const isCursor = absIdx === cursor;
26113
- return /* @__PURE__ */ jsx27(Text23, { color: isCursor ? PALETTE3.info : PALETTE3.muted, children: isCursor ? ` ${figures5.pointer} ${name}` : ` ${name}` }, name);
26194
+ return /* @__PURE__ */ jsx27(Text23, { color: isCursor ? PALETTE.accent : PALETTE.muted, children: isCursor ? ` ${figures5.pointer} ${name}` : ` ${name}` }, name);
26114
26195
  })
26115
26196
  ] });
26116
26197
  })() })
@@ -26938,18 +27019,18 @@ function FieldEditor({
26938
27019
  });
26939
27020
  const innerWidth = Math.max(1, width - 2);
26940
27021
  if (parseErr) {
26941
- return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE3.error, children: [
26942
- /* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE3.error, children: "FIELD EDITOR \u2014 parse error" }),
26943
- /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.error, children: parseErr }),
26944
- /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: "Cannot display structured editor. Fix the JSON first." })
27022
+ return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
27023
+ /* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
27024
+ /* @__PURE__ */ jsx27(Text23, { color: PALETTE.error, children: parseErr }),
27025
+ /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "Cannot display structured editor. Fix the JSON first." })
26945
27026
  ] });
26946
27027
  }
26947
27028
  if (props.length === 0 && slots.length === 0) {
26948
- return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE3.warning, children: [
26949
- /* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE3.warning, children: "FIELD EDITOR \u2014 no fields" }),
26950
- /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
26951
- /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: "You can add fields manually below or reject this component." }),
26952
- /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: "Enter to save \xB7 Esc to discard" })
27029
+ return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
27030
+ /* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
27031
+ /* @__PURE__ */ jsx27(Text23, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
27032
+ /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "There is nothing to edit here." }),
27033
+ /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: active ? "[Esc] go back to the list" : "In the list: [r] reject this component \xB7 [a] accept it" })
26953
27034
  ] });
26954
27035
  }
26955
27036
  const hasEmptyProperties = props.length === 0 && slots.length === 0;
@@ -27078,7 +27159,7 @@ function FieldEditor({
27078
27159
  const renderRow = (row, index) => {
27079
27160
  const key = rowKey(row, index);
27080
27161
  if (row.kind === "header") {
27081
- return /* @__PURE__ */ jsx27(Box21, { flexDirection: "column", paddingTop: 1, children: /* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE3.success, children: row.label }) }, key);
27162
+ return /* @__PURE__ */ jsx27(Box21, { flexDirection: "column", paddingTop: 1, children: /* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE.success, children: row.label }) }, key);
27082
27163
  }
27083
27164
  if (row.kind === "component-description") {
27084
27165
  const isSelected2 = inComponentDesc && active;
@@ -27160,11 +27241,11 @@ function FieldEditor({
27160
27241
  ...fixedHeight ? { height } : { minHeight: height },
27161
27242
  clipOverflow: fixedHeight,
27162
27243
  borderStyle: "single",
27163
- borderColor: hasEmptyProperties ? PALETTE3.warning : active ? PALETTE3.info : PALETTE3.border,
27244
+ borderColor: hasEmptyProperties ? PALETTE.warning : active ? PALETTE.accent : PALETTE.border,
27164
27245
  children: [
27165
- hasEmptyProperties && /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify. Reject this component or add fields manually." }),
27246
+ hasEmptyProperties && /* @__PURE__ */ jsx27(Text23, { 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." }),
27166
27247
  header,
27167
- /* @__PURE__ */ jsx27(Box21, { flexDirection: "column", width: innerWidth, flexShrink: 0, children: focusLevel === "field" && !inComponentDesc && currentProp ? /* @__PURE__ */ jsx27(
27248
+ /* @__PURE__ */ jsx27(Box21, { flexDirection: "column", width: innerWidth, flexShrink: 0, children: focusLevel === "field" && !inComponentDesc && !inSlots && currentProp ? /* @__PURE__ */ jsx27(
27168
27249
  PropRow,
27169
27250
  {
27170
27251
  prop: currentProp,
@@ -27213,7 +27294,7 @@ function FieldEditor({
27213
27294
  `visible-${key}`
27214
27295
  );
27215
27296
  }) }),
27216
- categoryBelow && /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.success, bold: true, children: `(${categoryBelow} below)` }),
27297
+ categoryBelow && /* @__PURE__ */ jsx27(Text23, { color: PALETTE.success, bold: true, children: `(${categoryBelow} below)` }),
27217
27298
  sourceOpen && !onToggleSourceExternal && (() => {
27218
27299
  const propMeta = !inSlots && !inComponentDesc && currentProp ? metadata?.props?.[currentProp.name] : void 0;
27219
27300
  const start = propMeta?.sourceStartLine ?? null;
@@ -27223,20 +27304,20 @@ function FieldEditor({
27223
27304
  const headerPath = path5 ?? "<unknown source path>";
27224
27305
  if (!start || !end2 || !src) {
27225
27306
  return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
27226
- /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, bold: true, children: `source: ${headerPath}` }),
27227
- /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: "(no source location captured for this prop)" }),
27307
+ /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, bold: true, children: `source: ${headerPath}` }),
27308
+ /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "(no source location captured for this prop)" }),
27228
27309
  /* @__PURE__ */ jsx27(Text23, { children: "[s] close" })
27229
27310
  ] });
27230
27311
  }
27231
27312
  const lines = src.split("\n").slice(Math.max(0, start - 1), end2);
27232
27313
  return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
27233
- /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, bold: true, children: `${headerPath}: lines ${start}\u2013${end2}` }),
27234
- lines.map((ln, i) => /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: ln }, `source-line-${i}`)),
27314
+ /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, bold: true, children: `${headerPath}: lines ${start}\u2013${end2}` }),
27315
+ lines.map((ln, i) => /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: ln }, `source-line-${i}`)),
27235
27316
  /* @__PURE__ */ jsx27(Text23, { children: "[s] close \xB7 [Esc] close" })
27236
27317
  ] });
27237
27318
  })(),
27238
- showHelp && /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE3.info, paddingX: 1, children: [
27239
- /* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE3.info, children: "Keybindings" }),
27319
+ showHelp && /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.accent, paddingX: 1, children: [
27320
+ /* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE.accent, children: "Keybindings" }),
27240
27321
  /* @__PURE__ */ jsx27(Text23, { children: " " }),
27241
27322
  /* @__PURE__ */ jsx27(Text23, { bold: true, children: "Row navigation" }),
27242
27323
  /* @__PURE__ */ jsx27(Text23, { children: " \u2191/\u2193 move between rows" }),
@@ -27261,10 +27342,10 @@ function FieldEditor({
27261
27342
  /* @__PURE__ */ jsx27(Text23, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
27262
27343
  /* @__PURE__ */ jsx27(Text23, { children: " ? toggle this overlay" }),
27263
27344
  /* @__PURE__ */ jsx27(Text23, { children: " " }),
27264
- /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: "press ? or Esc to close" })
27345
+ /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "press ? or Esc to close" })
27265
27346
  ] }),
27266
- validationError && /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.error, children: "\u2717 " + validationError }),
27267
- /* @__PURE__ */ jsx27(Box21, { paddingTop: 1, children: /* @__PURE__ */ jsx27(Text23, { color: PALETTE3.muted, children: modeLabel }) })
27347
+ validationError && /* @__PURE__ */ jsx27(Text23, { color: PALETTE.error, children: "\u2717 " + validationError }),
27348
+ /* @__PURE__ */ jsx27(Box21, { paddingTop: 1, children: /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: modeLabel }) })
27268
27349
  ]
27269
27350
  }
27270
27351
  );
@@ -27273,7 +27354,7 @@ var SLOT_FIELDS;
27273
27354
  var init_FieldEditor = __esm({
27274
27355
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx"() {
27275
27356
  "use strict";
27276
- init_theme3();
27357
+ init_theme();
27277
27358
  init_src5();
27278
27359
  init_useImmediateInput();
27279
27360
  init_scroll_offset();
@@ -27328,21 +27409,21 @@ function RationaleLine({ line, active }) {
27328
27409
  return /* @__PURE__ */ jsx28(Box22, { children: /* @__PURE__ */ jsx28(Text24, { children: " " }) });
27329
27410
  }
27330
27411
  if (line.kind === "heading") {
27331
- return /* @__PURE__ */ jsx28(Box22, { children: /* @__PURE__ */ jsx28(Text24, { bold: true, color: active ? PALETTE3.info : PALETTE3.muted, children: line.text }) });
27412
+ return /* @__PURE__ */ jsx28(Box22, { children: /* @__PURE__ */ jsx28(Text24, { bold: true, color: active ? PALETTE.accent : PALETTE.muted, children: line.text }) });
27332
27413
  }
27333
27414
  if (line.kind === "label") {
27334
27415
  return /* @__PURE__ */ jsxs23(Box22, { children: [
27335
27416
  line.prefix && /* @__PURE__ */ jsx28(Text24, { children: line.prefix }),
27336
- /* @__PURE__ */ jsx28(Text24, { bold: true, color: active ? line.color : PALETTE3.muted, children: line.text }),
27337
- line.suffix && /* @__PURE__ */ jsx28(Text24, { color: PALETTE3.muted, children: line.suffix })
27417
+ /* @__PURE__ */ jsx28(Text24, { bold: true, color: active ? line.color : PALETTE.muted, children: line.text }),
27418
+ line.suffix && /* @__PURE__ */ jsx28(Text24, { color: PALETTE.muted, children: line.suffix })
27338
27419
  ] });
27339
27420
  }
27340
- return /* @__PURE__ */ jsx28(Box22, { children: /* @__PURE__ */ jsx28(Text24, { color: !active || line.dim ? PALETTE3.muted : void 0, children: line.text }) });
27421
+ return /* @__PURE__ */ jsx28(Box22, { children: /* @__PURE__ */ jsx28(Text24, { color: !active || line.dim ? PALETTE.muted : void 0, children: line.text }) });
27341
27422
  }
27342
27423
  var init_RationaleLine = __esm({
27343
27424
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationaleLine.tsx"() {
27344
27425
  "use strict";
27345
- init_theme3();
27426
+ init_theme();
27346
27427
  }
27347
27428
  });
27348
27429
 
@@ -27422,9 +27503,9 @@ function ComponentRationalePanel({
27422
27503
  width,
27423
27504
  height: height + 2,
27424
27505
  borderStyle: "single",
27425
- borderColor: active ? PALETTE3.inverse : void 0,
27506
+ borderColor: active ? PALETTE.text : void 0,
27426
27507
  children: [
27427
- /* @__PURE__ */ jsx29(Box23, { children: /* @__PURE__ */ jsx29(Text25, { bold: true, color: active ? void 0 : PALETTE3.muted, children: `Component rationale: ${data.name}` }) }),
27508
+ /* @__PURE__ */ jsx29(Box23, { children: /* @__PURE__ */ jsx29(Text25, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Component rationale: ${data.name}` }) }),
27428
27509
  visible.map((line, i) => /* @__PURE__ */ jsx29(RationaleLine, { line, active }, i)),
27429
27510
  /* @__PURE__ */ jsx29(Box23, { children: overflowed ? /* @__PURE__ */ jsx29(Text25, { children: `${visibleStart}-${visibleEnd}/${totalLines} [\u2191\u2193] scroll [I/Esc] close` }) : /* @__PURE__ */ jsx29(Text25, { children: "[I/Esc] close" }) })
27430
27511
  ]
@@ -27435,7 +27516,7 @@ var PLACEHOLDER;
27435
27516
  var init_ComponentRationalePanel = __esm({
27436
27517
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ComponentRationalePanel.tsx"() {
27437
27518
  "use strict";
27438
- init_theme3();
27519
+ init_theme();
27439
27520
  init_wrap_text();
27440
27521
  init_RationaleLine();
27441
27522
  PLACEHOLDER = "(no rationale captured)";
@@ -27446,12 +27527,12 @@ var init_ComponentRationalePanel = __esm({
27446
27527
  import { Text as Text26 } from "ink";
27447
27528
  import { Fragment as Fragment6, jsx as jsx30 } from "react/jsx-runtime";
27448
27529
  function HighlightedLine({ parts }) {
27449
- return /* @__PURE__ */ jsx30(Fragment6, { children: parts.map((part, i) => /* @__PURE__ */ jsx30(Text26, { color: part.dim ? PALETTE3.muted : part.color, children: part.text }, i)) });
27530
+ return /* @__PURE__ */ jsx30(Fragment6, { children: parts.map((part, i) => /* @__PURE__ */ jsx30(Text26, { color: part.dim ? PALETTE.muted : part.color, children: part.text }, i)) });
27450
27531
  }
27451
27532
  var init_HighlightedLine = __esm({
27452
27533
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/components/HighlightedLine.tsx"() {
27453
27534
  "use strict";
27454
- init_theme3();
27535
+ init_theme();
27455
27536
  }
27456
27537
  });
27457
27538
 
@@ -27472,10 +27553,10 @@ function ScrollablePanel({
27472
27553
  const overflowed = totalLines > height;
27473
27554
  return /* @__PURE__ */ jsxs25(Box24, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
27474
27555
  /* @__PURE__ */ jsxs25(Box24, { children: [
27475
- /* @__PURE__ */ jsx31(Text27, { bold: true, color: active ? void 0 : PALETTE3.muted, children: title }),
27556
+ /* @__PURE__ */ jsx31(Text27, { bold: true, color: active ? void 0 : PALETTE.muted, children: title }),
27476
27557
  overflowed && /* @__PURE__ */ jsxs25(Fragment7, { children: [
27477
27558
  /* @__PURE__ */ jsx31(Box24, { flexGrow: 1 }),
27478
- /* @__PURE__ */ jsx31(Text27, { color: active ? void 0 : PALETTE3.muted, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
27559
+ /* @__PURE__ */ jsx31(Text27, { color: active ? void 0 : PALETTE.muted, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
27479
27560
  ] })
27480
27561
  ] }),
27481
27562
  children
@@ -27484,7 +27565,7 @@ function ScrollablePanel({
27484
27565
  var init_ScrollablePanel = __esm({
27485
27566
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ScrollablePanel.tsx"() {
27486
27567
  "use strict";
27487
- init_theme3();
27568
+ init_theme();
27488
27569
  }
27489
27570
  });
27490
27571
 
@@ -27575,7 +27656,7 @@ function renderRationaleLines(rows, innerWidth) {
27575
27656
  out.push({
27576
27657
  kind: "label",
27577
27658
  text: row.name,
27578
- color: PALETTE3.info,
27659
+ color: PALETTE.accent,
27579
27660
  suffix: row.kind === "slot" ? " (slot)" : void 0
27580
27661
  });
27581
27662
  for (const line of wrapText(row.rationale, innerWidth)) {
@@ -27611,7 +27692,7 @@ function RationalePanel({
27611
27692
  totalLines,
27612
27693
  visibleStart,
27613
27694
  visibleEnd,
27614
- borderColor: active ? PALETTE3.inverse : void 0,
27695
+ borderColor: active ? PALETTE.text : void 0,
27615
27696
  children: visible.map((line, i) => /* @__PURE__ */ jsx33(RationaleLine, { line, active }, i))
27616
27697
  }
27617
27698
  );
@@ -27619,7 +27700,7 @@ function RationalePanel({
27619
27700
  var init_RationalePanel = __esm({
27620
27701
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationalePanel.tsx"() {
27621
27702
  "use strict";
27622
- init_theme3();
27703
+ init_theme();
27623
27704
  init_wrap_text();
27624
27705
  init_RationaleLine();
27625
27706
  init_ScrollablePanel();
@@ -27655,21 +27736,29 @@ function TokenReviewPanel({
27655
27736
  width,
27656
27737
  height: height + 2,
27657
27738
  borderStyle: "single",
27658
- borderColor: active ? PALETTE3.inverse : void 0,
27739
+ borderColor: active ? PALETTE.text : void 0,
27659
27740
  children: [
27660
- /* @__PURE__ */ jsx34(Text28, { bold: true, color: active ? void 0 : PALETTE3.muted, wrap: "truncate", children: `TOKEN REVIEW \u2014 ${componentName} \xB7 ${current.propName} (edit allowed)` }),
27661
- /* @__PURE__ */ jsx34(Text28, { color: PALETTE3.muted, wrap: "truncate", children: `select which tokens are allowed (${rangeLabel})` }),
27741
+ /* @__PURE__ */ jsx34(Text28, { bold: true, color: active ? void 0 : PALETTE.muted, wrap: "truncate", children: `TOKEN REVIEW \u2014 ${componentName} \xB7 ${current.propName} (edit allowed)` }),
27742
+ /* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, wrap: "truncate", children: `select which tokens are allowed (${rangeLabel})` }),
27662
27743
  /* @__PURE__ */ jsx34(Text28, { children: " " }),
27663
- current.paths.length === 0 && /* @__PURE__ */ jsx34(Text28, { color: PALETTE3.muted, children: "(no compatible tokens found for this token kind)" }),
27744
+ current.paths.length === 0 && /* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, children: "(no compatible tokens found for this token kind)" }),
27664
27745
  visiblePaths.map((path5, i) => {
27665
27746
  const pathIndex = scrollStart + i;
27666
27747
  const checked = editSelection.has(path5);
27667
27748
  const focused = pathIndex === editCursor;
27668
- return /* @__PURE__ */ jsx34(Box26, { children: /* @__PURE__ */ jsx34(Text28, { color: focused ? PALETTE3.info : active ? void 0 : PALETTE3.muted, bold: focused, wrap: "truncate", children: ` [${checked ? "x" : " "}] ${path5}` }) }, path5);
27749
+ return /* @__PURE__ */ jsx34(Box26, { children: /* @__PURE__ */ jsx34(
27750
+ Text28,
27751
+ {
27752
+ color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted,
27753
+ bold: focused,
27754
+ wrap: "truncate",
27755
+ children: ` [${checked ? "x" : " "}] ${path5}`
27756
+ }
27757
+ ) }, path5);
27669
27758
  }),
27670
27759
  /* @__PURE__ */ jsx34(Text28, { children: " " }),
27671
- /* @__PURE__ */ jsx34(Text28, { color: PALETTE3.muted, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
27672
- /* @__PURE__ */ jsx34(Text28, { color: PALETTE3.muted, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
27760
+ /* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
27761
+ /* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
27673
27762
  ]
27674
27763
  }
27675
27764
  );
@@ -27681,16 +27770,16 @@ function TokenReviewPanel({
27681
27770
  width,
27682
27771
  height: height + 2,
27683
27772
  borderStyle: "single",
27684
- borderColor: active ? PALETTE3.inverse : void 0,
27773
+ borderColor: active ? PALETTE.text : void 0,
27685
27774
  children: [
27686
- /* @__PURE__ */ jsx34(Text28, { bold: true, color: active ? void 0 : PALETTE3.muted, children: `TOKEN REVIEW \u2014 ${componentName}` }),
27687
- suggestions.length === 0 && /* @__PURE__ */ jsx34(Text28, { color: PALETTE3.muted, children: "(no token suggestions for this component)" }),
27775
+ /* @__PURE__ */ jsx34(Text28, { bold: true, color: active ? void 0 : PALETTE.muted, children: `TOKEN REVIEW \u2014 ${componentName}` }),
27776
+ suggestions.length === 0 && /* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, children: "(no token suggestions for this component)" }),
27688
27777
  suggestions.map((s, i) => {
27689
27778
  const focused = i === selectedRow;
27690
27779
  return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", children: [
27691
- /* @__PURE__ */ jsx34(Box26, { children: /* @__PURE__ */ jsx34(Text28, { color: focused ? PALETTE3.info : active ? void 0 : PALETTE3.muted, bold: focused, children: `${focused ? figures6.pointer : " "} ${s.propName}` }) }),
27692
- /* @__PURE__ */ jsx34(Text28, { color: PALETTE3.muted, children: ` suggested: ${s.suggested.join(", ")}` }),
27693
- /* @__PURE__ */ jsx34(Text28, { color: PALETTE3.muted, children: ` allowed: ${s.allowed.join(", ")}` })
27780
+ /* @__PURE__ */ jsx34(Box26, { children: /* @__PURE__ */ jsx34(Text28, { color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted, bold: focused, children: `${focused ? figures6.pointer : " "} ${s.propName}` }) }),
27781
+ /* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, children: ` suggested: ${s.suggested.join(", ")}` }),
27782
+ /* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, children: ` allowed: ${s.allowed.join(", ")}` })
27694
27783
  ] }, s.propName);
27695
27784
  }),
27696
27785
  /* @__PURE__ */ jsx34(Text28, { children: " " }),
@@ -27702,7 +27791,7 @@ function TokenReviewPanel({
27702
27791
  var init_TokenReviewPanel = __esm({
27703
27792
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/components/TokenReviewPanel.tsx"() {
27704
27793
  "use strict";
27705
- init_theme3();
27794
+ init_theme();
27706
27795
  }
27707
27796
  });
27708
27797
 
@@ -27782,9 +27871,9 @@ function ReviewDetailsPanel({
27782
27871
  const sourceLineCount = Math.max(1, height - 4);
27783
27872
  const lines = source ? source.split("\n").slice(panelScrollOffset, panelScrollOffset + sourceLineCount) : [];
27784
27873
  return /* @__PURE__ */ jsxs27(FixedPanel, { width, height, borderStyle: "single", borderColor: sourceBorderColor, paddingLeft: 1, children: [
27785
- /* @__PURE__ */ jsx35(Text29, { color: PALETTE3.muted, bold: true, wrap: "truncate-end", children: `source: ${headerPath}` }),
27786
- source ? lines.map((line, index) => /* @__PURE__ */ jsx35(Text29, { color: PALETTE3.muted, wrap: "truncate-end", children: line }, `source-line-${index}`)) : /* @__PURE__ */ jsx35(Text29, { color: PALETTE3.muted, children: "(no source captured)" }),
27787
- /* @__PURE__ */ jsx35(Text29, { color: PALETTE3.muted, wrap: "truncate-end", children: "[s/Esc] close" })
27874
+ /* @__PURE__ */ jsx35(Text29, { color: PALETTE.muted, bold: true, wrap: "truncate-end", children: `source: ${headerPath}` }),
27875
+ source ? lines.map((line, index) => /* @__PURE__ */ jsx35(Text29, { color: PALETTE.muted, wrap: "truncate-end", children: line }, `source-line-${index}`)) : /* @__PURE__ */ jsx35(Text29, { color: PALETTE.muted, children: "(no source captured)" }),
27876
+ /* @__PURE__ */ jsx35(Text29, { color: PALETTE.muted, wrap: "truncate-end", children: "[s/Esc] close" })
27788
27877
  ] });
27789
27878
  }
27790
27879
  if (panelOpen === "token-review") {
@@ -27826,7 +27915,7 @@ var init_review_details_panel = __esm({
27826
27915
  init_RationalePanel();
27827
27916
  init_TokenReviewPanel();
27828
27917
  init_windowed_panel();
27829
- init_theme3();
27918
+ init_theme();
27830
27919
  }
27831
27920
  });
27832
27921
 
@@ -27953,17 +28042,17 @@ function ReviewEmptyComponentsWarning({
27953
28042
  hidden
27954
28043
  }) {
27955
28044
  if (hidden || count === 0) return null;
27956
- return /* @__PURE__ */ jsx37(Text30, { color: PALETTE3.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
28045
+ return /* @__PURE__ */ jsx37(Text30, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
27957
28046
  }
27958
28047
  function ReviewNoSelection() {
27959
- return /* @__PURE__ */ jsx37(Box27, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx37(Text30, { color: PALETTE3.muted, children: "No component selected" }) });
28048
+ return /* @__PURE__ */ jsx37(Box27, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx37(Text30, { color: PALETTE.muted, children: "No component selected" }) });
27960
28049
  }
27961
28050
  function ReviewFinalizeError({
27962
28051
  message,
27963
28052
  hidden
27964
28053
  }) {
27965
28054
  if (hidden || !message) return null;
27966
- return /* @__PURE__ */ jsx37(Text30, { color: PALETTE3.error, children: `\u26A0 ${message}` });
28055
+ return /* @__PURE__ */ jsx37(Text30, { color: PALETTE.error, children: `\u26A0 ${message}` });
27967
28056
  }
27968
28057
  function ReviewPanelFooter({
27969
28058
  reviewEditor,
@@ -27987,7 +28076,7 @@ function ReviewComponentTitle({
27987
28076
  return /* @__PURE__ */ jsxs28(Box27, { paddingLeft: 2, paddingBottom: 1, children: [
27988
28077
  /* @__PURE__ */ jsx37(Text30, { bold: true, wrap: "truncate-end", children: selectedKey }),
27989
28078
  /* @__PURE__ */ jsx37(Box27, { flexGrow: 1 }),
27990
- /* @__PURE__ */ jsxs28(Text30, { color: PALETTE3.muted, wrap: "truncate-end", children: [
28079
+ /* @__PURE__ */ jsxs28(Text30, { color: PALETTE.muted, wrap: "truncate-end", children: [
27991
28080
  propCount,
27992
28081
  " prop",
27993
28082
  propCount !== 1 ? "s" : "",
@@ -28043,8 +28132,8 @@ function ReviewComponentPanel({
28043
28132
  )
28044
28133
  }
28045
28134
  ) }),
28046
- /* @__PURE__ */ jsx37(Box27, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx37(Text30, { color: saveError ? PALETTE3.error : void 0, wrap: "truncate-end", children: saveError ? "\u2717 " + saveError : " " }) }),
28047
- /* @__PURE__ */ jsx37(Box27, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx37(Text30, { color: PALETTE3.muted, wrap: "truncate-end", children: /* @__PURE__ */ jsx37(
28135
+ /* @__PURE__ */ jsx37(Box27, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx37(Text30, { color: saveError ? PALETTE.error : void 0, wrap: "truncate-end", children: saveError ? "\u2717 " + saveError : " " }) }),
28136
+ /* @__PURE__ */ jsx37(Box27, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx37(Text30, { color: PALETTE.muted, wrap: "truncate-end", children: /* @__PURE__ */ jsx37(
28048
28137
  ReviewPanelFooter,
28049
28138
  {
28050
28139
  reviewEditor,
@@ -28059,7 +28148,7 @@ function ReviewComponentPanel({
28059
28148
  var init_ReviewComponentPanel = __esm({
28060
28149
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewComponentPanel.tsx"() {
28061
28150
  "use strict";
28062
- init_theme3();
28151
+ init_theme();
28063
28152
  init_review_json_panel();
28064
28153
  init_ReviewDetailsEditor();
28065
28154
  init_windowed_panel();
@@ -28081,11 +28170,11 @@ function countReviewStatuses(entries) {
28081
28170
  );
28082
28171
  }
28083
28172
  function ReviewLoadingState() {
28084
- return /* @__PURE__ */ jsx38(Box28, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx38(Text31, { color: PALETTE3.muted, children: "Loading generated definitions..." }) });
28173
+ return /* @__PURE__ */ jsx38(Box28, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx38(Text31, { color: PALETTE.muted, children: "Loading generated definitions..." }) });
28085
28174
  }
28086
28175
  function ReviewLoadError({ message }) {
28087
28176
  return /* @__PURE__ */ jsxs29(Box28, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
28088
- /* @__PURE__ */ jsx38(Text31, { color: PALETTE3.error, children: message }),
28177
+ /* @__PURE__ */ jsx38(Text31, { color: PALETTE.error, children: message }),
28089
28178
  /* @__PURE__ */ jsx38(Text31, { children: " " }),
28090
28179
  /* @__PURE__ */ jsx38(Text31, { children: "[q / Enter / Esc] Quit" })
28091
28180
  ] });
@@ -28093,7 +28182,7 @@ function ReviewLoadError({ message }) {
28093
28182
  var init_ReviewStatus = __esm({
28094
28183
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewStatus.tsx"() {
28095
28184
  "use strict";
28096
- init_theme3();
28185
+ init_theme();
28097
28186
  }
28098
28187
  });
28099
28188
 
@@ -28168,6 +28257,7 @@ function finalizeReviewSession(extractSessionId, components) {
28168
28257
  db.exec("ROLLBACK");
28169
28258
  throw error;
28170
28259
  }
28260
+ removeSlotAllowedComponents(db, extractSessionId, [], toReject);
28171
28261
  } finally {
28172
28262
  db.close();
28173
28263
  }
@@ -28343,41 +28433,41 @@ function FinalizeDialog({
28343
28433
  /* @__PURE__ */ jsx39(Text32, { bold: true, children: "\u2500".repeat(22) + " Finalize " + "\u2500".repeat(22) }),
28344
28434
  /* @__PURE__ */ jsx39(Text32, { children: " " }),
28345
28435
  /* @__PURE__ */ jsxs30(Text32, { children: [
28346
- /* @__PURE__ */ jsxs30(Text32, { color: PALETTE3.success, children: [
28436
+ /* @__PURE__ */ jsxs30(Text32, { color: PALETTE.success, children: [
28347
28437
  accepted,
28348
28438
  " accepted"
28349
28439
  ] }),
28350
28440
  /* @__PURE__ */ jsx39(Text32, { children: " \xB7 " }),
28351
- /* @__PURE__ */ jsxs30(Text32, { color: PALETTE3.error, children: [
28441
+ /* @__PURE__ */ jsxs30(Text32, { color: PALETTE.error, children: [
28352
28442
  rejected,
28353
28443
  " rejected"
28354
28444
  ] }),
28355
28445
  /* @__PURE__ */ jsx39(Text32, { children: " \xB7 " }),
28356
- /* @__PURE__ */ jsxs30(Text32, { color: PALETTE3.muted, children: [
28446
+ /* @__PURE__ */ jsxs30(Text32, { color: PALETTE.muted, children: [
28357
28447
  needsReview,
28358
28448
  " unresolved"
28359
28449
  ] })
28360
28450
  ] }),
28361
28451
  /* @__PURE__ */ jsx39(Text32, { children: " " }),
28362
28452
  noneAccepted && /* @__PURE__ */ jsxs30(Fragment10, { children: [
28363
- /* @__PURE__ */ jsx39(Text32, { bold: true, color: PALETTE3.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
28364
- /* @__PURE__ */ jsx39(Text32, { color: PALETTE3.warning, children: "Accept at least one component ([a] a row, [A] accept all) to push." }),
28453
+ /* @__PURE__ */ jsx39(Text32, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
28454
+ /* @__PURE__ */ jsx39(Text32, { color: PALETTE.warning, children: "Accept at least one component ([a] a row, [A] accept all) to push." }),
28365
28455
  /* @__PURE__ */ jsx39(Text32, { children: " " })
28366
28456
  ] }),
28367
28457
  !allResolved && /* @__PURE__ */ jsxs30(Fragment10, { children: [
28368
- /* @__PURE__ */ jsx39(Text32, { color: PALETTE3.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
28369
- /* @__PURE__ */ jsx39(Text32, { color: PALETTE3.warning, children: "Only explicitly accepted components ship." }),
28458
+ /* @__PURE__ */ jsx39(Text32, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
28459
+ /* @__PURE__ */ jsx39(Text32, { color: PALETTE.warning, children: "Only explicitly accepted components ship." }),
28370
28460
  /* @__PURE__ */ jsx39(Text32, { children: " " })
28371
28461
  ] }),
28372
28462
  /* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", height: 2, children: [
28373
- previewStatus === "running" ? /* @__PURE__ */ jsx39(Text32, { color: PALETTE3.muted, children: "Previewing deletions against the target space\u2026" }) : previewStatus === "error" ? /* @__PURE__ */ jsx39(Text32, { color: PALETTE3.warning, children: "\u26A0 Could not preview deletions (the push will still proceed)." }) : /* @__PURE__ */ jsx39(Text32, { children: " " }),
28463
+ previewStatus === "running" ? /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, children: "Previewing deletions against the target space\u2026" }) : previewStatus === "error" ? /* @__PURE__ */ jsx39(Text32, { color: PALETTE.warning, children: "\u26A0 Could not preview deletions (the push will still proceed)." }) : /* @__PURE__ */ jsx39(Text32, { children: " " }),
28374
28464
  /* @__PURE__ */ jsx39(Text32, { children: " " })
28375
28465
  ] }),
28376
28466
  previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs30(Fragment10, { children: [
28377
- /* @__PURE__ */ jsx39(Text32, { bold: true, color: PALETTE3.error, children: removedComponentsHeader(removed.length, false) }),
28378
- hasMoreAbove && /* @__PURE__ */ jsx39(Text32, { color: PALETTE3.muted, children: "\u2191 more above" }),
28379
- windowed.map((rc) => /* @__PURE__ */ jsx39(Text32, { color: PALETTE3.error, children: removedComponentLine(rc) }, rc.id)),
28380
- hasMoreBelow && /* @__PURE__ */ jsx39(Text32, { color: PALETTE3.muted, children: "\u2193 more below" }),
28467
+ /* @__PURE__ */ jsx39(Text32, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
28468
+ hasMoreAbove && /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, children: "\u2191 more above" }),
28469
+ windowed.map((rc) => /* @__PURE__ */ jsx39(Text32, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
28470
+ hasMoreBelow && /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, children: "\u2193 more below" }),
28381
28471
  removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx39(Text32, { children: "[\u2191\u2193] scroll deletions" }),
28382
28472
  /* @__PURE__ */ jsx39(Text32, { children: " " })
28383
28473
  ] }),
@@ -28390,7 +28480,7 @@ var FINALIZE_REMOVED_WINDOW;
28390
28480
  var init_FinalizeDialog = __esm({
28391
28481
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FinalizeDialog.tsx"() {
28392
28482
  "use strict";
28393
- init_theme3();
28483
+ init_theme();
28394
28484
  init_useImmediateInput();
28395
28485
  init_removed_components_text();
28396
28486
  FINALIZE_REMOVED_WINDOW = 6;
@@ -28918,8 +29008,8 @@ function ReviewStepDialogs({
28918
29008
  }
28919
29009
  function ReviewReloadDialog({ open }) {
28920
29010
  if (!open) return null;
28921
- return /* @__PURE__ */ jsxs32(Box31, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE3.warning, paddingX: 1, children: [
28922
- /* @__PURE__ */ jsx41(Text34, { bold: true, color: PALETTE3.warning, children: "Reload from saved state?" }),
29011
+ return /* @__PURE__ */ jsxs32(Box31, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
29012
+ /* @__PURE__ */ jsx41(Text34, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
28923
29013
  /* @__PURE__ */ jsx41(Text34, { children: "Unsaved in-memory changes will be lost." }),
28924
29014
  /* @__PURE__ */ jsx41(Text34, { children: " " }),
28925
29015
  /* @__PURE__ */ jsx41(Text34, { children: " [Enter] Confirm" }),
@@ -28929,7 +29019,7 @@ function ReviewReloadDialog({ open }) {
28929
29019
  var init_ReviewDialogs = __esm({
28930
29020
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDialogs.tsx"() {
28931
29021
  "use strict";
28932
- init_theme3();
29022
+ init_theme();
28933
29023
  init_FinalizeDialog();
28934
29024
  init_QuitDialog();
28935
29025
  init_ReviewStatus();
@@ -29340,25 +29430,25 @@ function LivePreviewSummary({
29340
29430
  const counts = { new: 0, changed: 0, removed: 0, breaking: 0 };
29341
29431
  for (const annotation of previewAnnotations.values()) counts[annotation] += 1;
29342
29432
  const hasCounts = counts.new + counts.changed + counts.removed + counts.breaking > 0;
29343
- if (disabled) return /* @__PURE__ */ jsx42(Text35, { color: PALETTE3.muted, children: "Preview: disabled (creds rejected)" });
29344
- if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx42(Text35, { color: PALETTE3.muted, children: `Preview: ${spinner} running...` });
29433
+ if (disabled) return /* @__PURE__ */ jsx42(Text35, { color: PALETTE.muted, children: "Preview: disabled (creds rejected)" });
29434
+ if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx42(Text35, { color: PALETTE.muted, children: `Preview: ${spinner} running...` });
29345
29435
  if (!hasCounts) return null;
29346
29436
  return /* @__PURE__ */ jsxs33(Box32, { children: [
29347
29437
  /* @__PURE__ */ jsx42(Text35, { children: "Preview: " }),
29348
- /* @__PURE__ */ jsx42(Text35, { color: PALETTE3.success, children: `${counts.new} new` }),
29438
+ /* @__PURE__ */ jsx42(Text35, { color: PALETTE.success, children: `${counts.new} new` }),
29349
29439
  /* @__PURE__ */ jsx42(Text35, { children: " \xB7 " }),
29350
- /* @__PURE__ */ jsx42(Text35, { color: PALETTE3.warning, children: `${counts.changed} changed` }),
29440
+ /* @__PURE__ */ jsx42(Text35, { color: PALETTE.warning, children: `${counts.changed} changed` }),
29351
29441
  /* @__PURE__ */ jsx42(Text35, { children: " \xB7 " }),
29352
- /* @__PURE__ */ jsx42(Text35, { color: PALETTE3.muted, children: `${counts.removed} removed` }),
29442
+ /* @__PURE__ */ jsx42(Text35, { color: PALETTE.muted, children: `${counts.removed} removed` }),
29353
29443
  showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx42(Text35, { children: " ([d] removed list)" }),
29354
29444
  /* @__PURE__ */ jsx42(Text35, { children: " \xB7 " }),
29355
- /* @__PURE__ */ jsx42(Text35, { color: PALETTE3.error, bold: true, children: `${counts.breaking} breaking` })
29445
+ /* @__PURE__ */ jsx42(Text35, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
29356
29446
  ] });
29357
29447
  }
29358
29448
  var init_LivePreviewSummary = __esm({
29359
29449
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/components/LivePreviewSummary.tsx"() {
29360
29450
  "use strict";
29361
- init_theme3();
29451
+ init_theme();
29362
29452
  }
29363
29453
  });
29364
29454
 
@@ -29407,10 +29497,10 @@ function CyclePathLine({
29407
29497
  highlightComponents = false,
29408
29498
  highlightLine = false
29409
29499
  }) {
29410
- return /* @__PURE__ */ jsxs34(Text36, { color: highlightLine ? PALETTE3.warning : void 0, children: [
29500
+ return /* @__PURE__ */ jsxs34(Text36, { color: highlightLine ? PALETTE.warning : void 0, children: [
29411
29501
  prefix,
29412
29502
  segments.map(
29413
- (segment, index) => segment.kind === "slot" ? /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.info, children: segment.text }, index) : segment.kind === "arrow" ? /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.muted, children: segment.text }, index) : /* @__PURE__ */ jsx43(Text36, { color: highlightComponents ? PALETTE3.warning : void 0, children: segment.text }, index)
29503
+ (segment, index) => segment.kind === "slot" ? /* @__PURE__ */ jsx43(Text36, { color: PALETTE.accent, children: segment.text }, index) : segment.kind === "arrow" ? /* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: segment.text }, index) : /* @__PURE__ */ jsx43(Text36, { color: highlightComponents ? PALETTE.warning : void 0, children: segment.text }, index)
29414
29504
  )
29415
29505
  ] });
29416
29506
  }
@@ -29422,9 +29512,9 @@ function CycleDetailPanel({
29422
29512
  height
29423
29513
  }) {
29424
29514
  const lines = [
29425
- /* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE3.warning, children: `SLOT DEPENDENCY CYCLES (${cycles.length})` }, "cyc-title"),
29426
- /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.muted, children: "push will fail until these are resolved" }, "cyc-sub"),
29427
- /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.muted, children: "Reject a cycle member or remove a slot edge to break the cycle." }, "cyc-guidance"),
29515
+ /* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${cycles.length})` }, "cyc-title"),
29516
+ /* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: "push will fail until these are resolved" }, "cyc-sub"),
29517
+ /* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: "Reject a cycle member or remove a slot edge to break the cycle." }, "cyc-guidance"),
29428
29518
  /* @__PURE__ */ jsx43(Text36, { children: " " }, "cyc-space")
29429
29519
  ];
29430
29520
  cycles.forEach((cycle, index) => {
@@ -29436,7 +29526,7 @@ function CycleDetailPanel({
29436
29526
  );
29437
29527
  if (cycle.suggestedBreak) {
29438
29528
  lines.push(
29439
- /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.muted, children: ` Suggested fix: remove [${cycle.suggestedBreak.slotName}] from ${cycle.suggestedBreak.fromComponent}` }, `cyc-fix-${index}`)
29529
+ /* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: ` Suggested fix: remove [${cycle.suggestedBreak.slotName}] from ${cycle.suggestedBreak.fromComponent}` }, `cyc-fix-${index}`)
29440
29530
  );
29441
29531
  }
29442
29532
  lines.push(/* @__PURE__ */ jsx43(Text36, { children: " " }, `cyc-s-${index}`));
@@ -29444,9 +29534,9 @@ function CycleDetailPanel({
29444
29534
  const footer = "[\u2191\u2193] move [Enter] fix cycle [c/q/Esc] close";
29445
29535
  const viewportHeight = Math.max(1, height - 3);
29446
29536
  const visible = lines.slice(scrollOffset, scrollOffset + viewportHeight - 1);
29447
- return /* @__PURE__ */ jsxs34(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE3.warning, paddingLeft: 1, children: [
29537
+ return /* @__PURE__ */ jsxs34(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
29448
29538
  visible,
29449
- /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.muted, children: footer })
29539
+ /* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: footer })
29450
29540
  ] });
29451
29541
  }
29452
29542
  function BreakCyclePanel({
@@ -29457,14 +29547,14 @@ function BreakCyclePanel({
29457
29547
  width,
29458
29548
  height
29459
29549
  }) {
29460
- return /* @__PURE__ */ jsxs34(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE3.warning, paddingLeft: 1, children: [
29461
- /* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE3.warning, children: "BREAK CYCLE \u2014 remove a slot edge" }),
29550
+ return /* @__PURE__ */ jsxs34(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
29551
+ /* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE.warning, children: "BREAK CYCLE \u2014 remove a slot edge" }),
29462
29552
  cycle && /* @__PURE__ */ jsx43(CyclePathLine, { segments: formatCyclePathSegments2(cycle), prefix: " ", highlightComponents: true }),
29463
- /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.muted, children: cycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
29553
+ /* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: cycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
29464
29554
  /* @__PURE__ */ jsx43(Text36, { children: " " }),
29465
- edges.length > 0 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.muted, children: "remove slot edge:" }),
29555
+ edges.length > 0 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: "remove slot edge:" }),
29466
29556
  edges.map((edge, index) => /* @__PURE__ */ jsx43(Text36, { inverse: index === cursor, children: `${index === cursor ? figures7.pointer : " "} remove '${edge.toComponent}' from ${edge.fromComponent}.$slots.${edge.slotName}.$allowedComponents` }, `${edge.fromComponent}-${edge.slotName}-${edge.toComponent}`)),
29467
- confirming ? /* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE3.warning, children: "Delete this slot edge? [y] confirm [n] cancel" }) : /* @__PURE__ */ jsx43(Text36, { children: "[\u2191\u2193] move [Enter] delete [x/Esc] close" })
29557
+ confirming ? /* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE.warning, children: "Delete this slot edge? [y] confirm [n] cancel" }) : /* @__PURE__ */ jsx43(Text36, { children: "[\u2191\u2193] move [Enter] delete [x/Esc] close" })
29468
29558
  ] });
29469
29559
  }
29470
29560
  function buildBreakingRows(breakingChanges) {
@@ -29510,7 +29600,7 @@ function deriveBreakingChanges(response) {
29510
29600
  }
29511
29601
  function GenerateReviewStep(props) {
29512
29602
  if (!props.extractSessionId) {
29513
- return /* @__PURE__ */ jsx43(Box33, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.error, children: "Error: no session ID \u2014 cannot load generated definitions." }) });
29603
+ return /* @__PURE__ */ jsx43(Box33, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx43(Text36, { color: PALETTE.error, children: "Error: no session ID \u2014 cannot load generated definitions." }) });
29514
29604
  }
29515
29605
  return /* @__PURE__ */ jsx43(GenerateReviewStepView, { ...props, extractSessionId: props.extractSessionId });
29516
29606
  }
@@ -29946,33 +30036,50 @@ function GenerateReviewStepView({
29946
30036
  const cycle = cycleRows[cyclesCursor];
29947
30037
  return cycle ? enumerateCycleBreaks(cycle, components) : [];
29948
30038
  }, [cycleRows, cyclesCursor, components]);
29949
- const handleBreakEdge = (edge) => {
29950
- const target = components.find((component) => component.key === edge.fromComponent);
29951
- const slot = target?.entry.$slots?.[edge.slotName];
29952
- if (!target || !slot || !Array.isArray(slot.$allowedComponents)) return;
29953
- const nextEntry = {
29954
- ...target.entry,
29955
- $slots: {
29956
- ...target.entry.$slots,
29957
- [edge.slotName]: {
29958
- ...slot,
29959
- $allowedComponents: slot.$allowedComponents.filter((value) => value !== edge.toComponent)
29960
- }
29961
- }
29962
- };
30039
+ const saveSlotChange = (parentKey, nextEntry, historyLabel) => {
29963
30040
  const next = components.map(
29964
- (component) => component.key === target.key ? { ...component, entry: nextEntry } : component
30041
+ (component) => component.key === parentKey ? { ...component, entry: nextEntry } : component
29965
30042
  );
29966
30043
  setComponents(next);
29967
30044
  const db = openPipelineDb();
29968
30045
  try {
29969
- storeCDFComponents(db, extractSessionId, [{ key: target.key, entry: nextEntry }]);
30046
+ storeCDFComponents(db, extractSessionId, [{ key: parentKey, entry: nextEntry }]);
29970
30047
  } finally {
29971
30048
  db.close();
29972
30049
  }
29973
30050
  recomputeCycles(next);
29974
30051
  livePreviewHook.trigger();
29975
- pushHistorySnapshot(next, "break-cycle-edge");
30052
+ pushHistorySnapshot(next, historyLabel);
30053
+ };
30054
+ const handleBreakEdge = (edge) => {
30055
+ const target = components.find((component) => component.key === edge.fromComponent);
30056
+ const slot = target?.entry.$slots?.[edge.slotName];
30057
+ if (!target || !slot || !Array.isArray(slot.$allowedComponents)) return;
30058
+ saveSlotChange(
30059
+ target.key,
30060
+ {
30061
+ ...target.entry,
30062
+ $slots: {
30063
+ ...target.entry.$slots,
30064
+ [edge.slotName]: {
30065
+ ...slot,
30066
+ $allowedComponents: slot.$allowedComponents.filter((value) => value !== edge.toComponent)
30067
+ }
30068
+ }
30069
+ },
30070
+ "break-cycle-edge"
30071
+ );
30072
+ };
30073
+ const handleRemoveSlotChild = (parentKey, childKey) => {
30074
+ const parent = components.find((component) => component.key === parentKey);
30075
+ if (!parent?.entry.$slots) return;
30076
+ const slots = Object.fromEntries(
30077
+ Object.entries(parent.entry.$slots).map(([slotName, slot]) => [
30078
+ slotName,
30079
+ Array.isArray(slot.$allowedComponents) ? { ...slot, $allowedComponents: slot.$allowedComponents.filter((value) => value !== childKey) } : slot
30080
+ ])
30081
+ );
30082
+ saveSlotChange(parentKey, { ...parent.entry, $slots: slots }, "remove-slot-child");
29976
30083
  };
29977
30084
  const handleRejectComponent = (key) => {
29978
30085
  const rejectCascade2 = computeRejectCascade(key, componentGraph);
@@ -30302,6 +30409,11 @@ function GenerateReviewStepView({
30302
30409
  if (input === "r") {
30303
30410
  const current = components[selectedIdx];
30304
30411
  if (!current) return;
30412
+ const row = visibleRowsMemo[cursorRowIdx];
30413
+ if (row?.kind === "group-child" && row.parentName) {
30414
+ handleRemoveSlotChild(row.parentName, current.key);
30415
+ return;
30416
+ }
30305
30417
  handleRejectComponent(current.key);
30306
30418
  return;
30307
30419
  }
@@ -30427,8 +30539,8 @@ function GenerateReviewStepView({
30427
30539
  }
30428
30540
  ),
30429
30541
  /* @__PURE__ */ jsx43(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
30430
- removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE3.error, paddingX: 1, children: [
30431
- /* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE3.error, children: removedComponentsHeader(removedComponents.length, true) }),
30542
+ removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
30543
+ /* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
30432
30544
  !removedBannerCollapsed && /* @__PURE__ */ jsxs34(Fragment13, { children: [
30433
30545
  /* @__PURE__ */ jsx43(Text36, { children: " " }),
30434
30546
  removedComponents.map((rc) => /* @__PURE__ */ jsx43(Text36, { children: removedComponentLine(rc) }, rc.id))
@@ -30437,7 +30549,7 @@ function GenerateReviewStepView({
30437
30549
  breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx43(Box33, { paddingX: 1, children: /* @__PURE__ */ jsx43(
30438
30550
  Text36,
30439
30551
  {
30440
- color: PALETTE3.warning,
30552
+ color: PALETTE.warning,
30441
30553
  children: `[b] ${breakingChanges.length} breaking change${breakingChanges.length === 1 ? "" : "s"}`
30442
30554
  }
30443
30555
  ) }),
@@ -30445,10 +30557,10 @@ function GenerateReviewStepView({
30445
30557
  const row = breakingRows[breakingCursor];
30446
30558
  const comp = row ? breakingChanges.find((b) => b.componentName === row.componentName) : void 0;
30447
30559
  if (!comp) return null;
30448
- return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE3.warning, paddingX: 1, children: [
30449
- /* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE3.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
30450
- comp.impact && /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.muted, children: ` affects ${comp.impact.affectedExperiences} experience${comp.impact.affectedExperiences === 1 ? "" : "s"}, ${comp.impact.affectedFragments} fragment${comp.impact.affectedFragments === 1 ? "" : "s"}` }),
30451
- comp.changes.length === 0 ? /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.muted, children: " (no enumerated changes)" }) : comp.changes.map((change, ci) => /* @__PURE__ */ jsx43(Text36, { children: ` \u2022 ${formatBreakingChange(change, comp.current)}` }, `bd-detail-${ci}`)),
30560
+ return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
30561
+ /* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
30562
+ comp.impact && /* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: ` affects ${comp.impact.affectedExperiences} experience${comp.impact.affectedExperiences === 1 ? "" : "s"}, ${comp.impact.affectedFragments} fragment${comp.impact.affectedFragments === 1 ? "" : "s"}` }),
30563
+ comp.changes.length === 0 ? /* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: " (no enumerated changes)" }) : comp.changes.map((change, ci) => /* @__PURE__ */ jsx43(Text36, { children: ` \u2022 ${formatBreakingChange(change, comp.current)}` }, `bd-detail-${ci}`)),
30452
30564
  /* @__PURE__ */ jsx43(Text36, { children: "[D/Esc] close detail" })
30453
30565
  ] });
30454
30566
  })(),
@@ -30471,11 +30583,11 @@ function GenerateReviewStepView({
30471
30583
  const participantSet = cycleView.structural;
30472
30584
  const members = stillRejected.filter((n) => participantSet.has(n)).sort();
30473
30585
  const ancestors = stillRejected.filter((n) => !participantSet.has(n)).sort();
30474
- return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE3.error, paddingX: 1, children: [
30475
- /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
30476
- members.length > 0 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.error, children: ` Cycle members: ${members.join(", ")}` }),
30477
- ancestors.length > 0 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
30478
- /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.muted, children: undoSnapshot ? " [Ctrl+Z] undo \xB7 [r]/[a] manually toggle \xB7 [F] continue" : " [r]/[a] manually toggle \xB7 [F] continue" })
30586
+ return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
30587
+ /* @__PURE__ */ jsx43(Text36, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
30588
+ members.length > 0 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
30589
+ ancestors.length > 0 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
30590
+ /* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: undoSnapshot ? " [Ctrl+Z] undo \xB7 [r]/[a] manually toggle \xB7 [F] continue" : " [r]/[a] manually toggle \xB7 [F] continue" })
30479
30591
  ] });
30480
30592
  })(),
30481
30593
  /* @__PURE__ */ jsx43(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
@@ -30591,7 +30703,7 @@ function GenerateReviewStepView({
30591
30703
  ) : /* @__PURE__ */ jsx43(ReviewNoSelection, {})
30592
30704
  ] }),
30593
30705
  !dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", children: [
30594
- /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.warning, children: `\u26A0 ${cycleRows.length} slot dependency cycle${cycleRows.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
30706
+ /* @__PURE__ */ jsx43(Text36, { color: PALETTE.warning, children: `\u26A0 ${cycleRows.length} slot dependency cycle${cycleRows.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
30595
30707
  cycleRows.slice(0, 3).map((cycle, idx) => {
30596
30708
  return /* @__PURE__ */ jsx43(
30597
30709
  CyclePathLine,
@@ -30604,7 +30716,7 @@ function GenerateReviewStepView({
30604
30716
  `cyc-banner-${idx}`
30605
30717
  );
30606
30718
  }),
30607
- cycleRows.length > 3 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE3.warning, children: ` \u2026${cycleRows.length - 3} more` }),
30719
+ cycleRows.length > 3 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE.warning, children: ` \u2026${cycleRows.length - 3} more` }),
30608
30720
  /* @__PURE__ */ jsx43(Text36, { children: " press [c] for detail" })
30609
30721
  ] }),
30610
30722
  /* @__PURE__ */ jsx43(
@@ -30625,7 +30737,7 @@ var HELP_SECTIONS2;
30625
30737
  var init_generate_review_step = __esm({
30626
30738
  "packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx"() {
30627
30739
  "use strict";
30628
- init_theme3();
30740
+ init_theme();
30629
30741
  init_review_json_panel();
30630
30742
  init_GroupedSidebar();
30631
30743
  init_composite_closure();
@@ -30732,49 +30844,24 @@ var init_generate_review_step = __esm({
30732
30844
  }
30733
30845
  });
30734
30846
 
30735
- // packages/experience-design-system-cli/src/tui/import/steps/10-flow/theme.ts
30736
- import { defaultTheme as defaultTheme2, extendTheme as extendTheme2 } from "@inkjs/ui";
30737
- var PALETTE4, INK_UI_THEME;
30738
- var init_theme4 = __esm({
30739
- "packages/experience-design-system-cli/src/tui/import/steps/10-flow/theme.ts"() {
30740
- "use strict";
30741
- init_theme3();
30742
- PALETTE4 = {
30743
- ...PALETTE3,
30744
- link: "#58A6FF"
30745
- };
30746
- INK_UI_THEME = extendTheme2(defaultTheme2, {
30747
- components: {
30748
- ProgressBar: {
30749
- styles: {
30750
- completed: () => ({
30751
- color: "blue"
30752
- })
30753
- }
30754
- }
30755
- }
30756
- });
30757
- }
30758
- });
30759
-
30760
30847
  // packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/CustomPromptBanner.tsx
30761
30848
  import { Box as Box34, Text as Text37 } from "ink";
30762
30849
  import { jsx as jsx44, jsxs as jsxs35 } from "react/jsx-runtime";
30763
30850
  function CustomPromptBanner({ generatePromptPath }) {
30764
30851
  if (!generatePromptPath) return null;
30765
- return /* @__PURE__ */ jsxs35(Box34, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE4.warning, paddingX: 1, children: [
30766
- /* @__PURE__ */ jsx44(Text37, { color: PALETTE4.warning, bold: true, children: "WARNING: Custom prompt active" }),
30767
- generatePromptPath ? /* @__PURE__ */ jsxs35(Text37, { color: PALETTE4.warning, children: [
30852
+ return /* @__PURE__ */ jsxs35(Box34, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
30853
+ /* @__PURE__ */ jsx44(Text37, { color: PALETTE.warning, bold: true, children: "WARNING: Custom prompt active" }),
30854
+ generatePromptPath ? /* @__PURE__ */ jsxs35(Text37, { color: PALETTE.warning, children: [
30768
30855
  "components: ",
30769
30856
  generatePromptPath
30770
30857
  ] }) : null,
30771
- /* @__PURE__ */ jsx44(Text37, { color: PALETTE4.warning, children: "Bundled invariants (utility-wrapper rejection, description content rules) do NOT apply." })
30858
+ /* @__PURE__ */ jsx44(Text37, { color: PALETTE.warning, children: "Bundled invariants (utility-wrapper rejection, description content rules) do NOT apply." })
30772
30859
  ] });
30773
30860
  }
30774
30861
  var init_CustomPromptBanner = __esm({
30775
30862
  "packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/CustomPromptBanner.tsx"() {
30776
30863
  "use strict";
30777
- init_theme4();
30864
+ init_theme();
30778
30865
  }
30779
30866
  });
30780
30867
 
@@ -30801,17 +30888,17 @@ import { Box as Box35, Text as Text38 } from "ink";
30801
30888
  import { jsx as jsx45, jsxs as jsxs36 } from "react/jsx-runtime";
30802
30889
  function SpaceEnvironment({ spaceId, environmentId }) {
30803
30890
  return /* @__PURE__ */ jsxs36(Box35, { gap: 1, marginTop: 1, children: [
30804
- /* @__PURE__ */ jsx45(Text38, { color: PALETTE4.muted, children: "Space:" }),
30891
+ /* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: "Space:" }),
30805
30892
  /* @__PURE__ */ jsx45(Text38, { children: spaceId }),
30806
- /* @__PURE__ */ jsx45(Text38, { color: PALETTE4.muted, children: "/" }),
30807
- /* @__PURE__ */ jsx45(Text38, { color: PALETTE4.muted, children: "Environment:" }),
30893
+ /* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: "/" }),
30894
+ /* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: "Environment:" }),
30808
30895
  /* @__PURE__ */ jsx45(Text38, { children: environmentId })
30809
30896
  ] });
30810
30897
  }
30811
30898
  var init_SpaceEnvironment = __esm({
30812
30899
  "packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/SpaceEnvironment.tsx"() {
30813
30900
  "use strict";
30814
- init_theme4();
30901
+ init_theme();
30815
30902
  }
30816
30903
  });
30817
30904
 
@@ -30822,13 +30909,13 @@ function EntityRows({ entity, label }) {
30822
30909
  const plural3 = (n) => `${n} ${label}${n !== 1 ? "s" : ""}`;
30823
30910
  return /* @__PURE__ */ jsxs37(Fragment14, { children: [
30824
30911
  ACTIONS.filter((action) => entity[action] > 0).map((action) => /* @__PURE__ */ jsxs37(Text39, { children: [
30825
- /* @__PURE__ */ jsx46(Text39, { color: PALETTE4.success, children: "\u2713" }),
30912
+ /* @__PURE__ */ jsx46(Text39, { color: PALETTE.success, children: "\u2713" }),
30826
30913
  " ",
30827
30914
  plural3(entity[action]),
30828
30915
  " ",
30829
30916
  action
30830
30917
  ] }, action)),
30831
- entity.failed > 0 && /* @__PURE__ */ jsxs37(Text39, { color: PALETTE4.error, children: [
30918
+ entity.failed > 0 && /* @__PURE__ */ jsxs37(Text39, { color: PALETTE.error, children: [
30832
30919
  "\u2717 ",
30833
30920
  plural3(entity.failed),
30834
30921
  " failed \u2014 check logs above"
@@ -30837,8 +30924,8 @@ function EntityRows({ entity, label }) {
30837
30924
  }
30838
30925
  function LinkRow({ title, url }) {
30839
30926
  return /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", children: [
30840
- /* @__PURE__ */ jsx46(Text39, { color: PALETTE4.muted, children: title }),
30841
- /* @__PURE__ */ jsx46(Text39, { color: PALETTE4.link, children: url })
30927
+ /* @__PURE__ */ jsx46(Text39, { color: PALETTE.muted, children: title }),
30928
+ /* @__PURE__ */ jsx46(Text39, { color: PALETTE.accent, children: url })
30842
30929
  ] });
30843
30930
  }
30844
30931
  function DoneStep({
@@ -30861,17 +30948,17 @@ function DoneStep({
30861
30948
  const success = totalFailed === 0;
30862
30949
  const urlArgs = { host: host ?? "api.contentful.com", spaceId, environmentId };
30863
30950
  return /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
30864
- success ? /* @__PURE__ */ jsx46(Text39, { bold: true, color: PALETTE4.success, children: "Done!" }) : /* @__PURE__ */ jsx46(Text39, { bold: true, color: PALETTE4.warning, children: "\u26A0 Finished with errors" }),
30865
- totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */ jsx46(Text39, { color: PALETTE4.muted, children: "Nothing was pushed \u2014 everything was already up to date." }) : /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", children: [
30951
+ success ? /* @__PURE__ */ jsx46(Text39, { bold: true, color: PALETTE.success, children: "Done!" }) : /* @__PURE__ */ jsx46(Text39, { bold: true, color: PALETTE.warning, children: "\u26A0 Finished with errors" }),
30952
+ totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */ jsx46(Text39, { color: PALETTE.muted, children: "Nothing was pushed \u2014 everything was already up to date." }) : /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", children: [
30866
30953
  /* @__PURE__ */ jsx46(EntityRows, { entity: componentTypes, label: "Component Type" }),
30867
30954
  /* @__PURE__ */ jsx46(EntityRows, { entity: designTokens, label: "Design Token" }),
30868
- summary && /* @__PURE__ */ jsx46(Box36, { marginTop: 1, children: /* @__PURE__ */ jsxs37(Text39, { color: PALETTE4.muted, children: [
30955
+ summary && /* @__PURE__ */ jsx46(Box36, { marginTop: 1, children: /* @__PURE__ */ jsxs37(Text39, { color: PALETTE.muted, children: [
30869
30956
  "Push result: ",
30870
30957
  summary.succeeded,
30871
30958
  "/",
30872
30959
  summary.total,
30873
30960
  " succeeded",
30874
- summary.failed > 0 && /* @__PURE__ */ jsxs37(Text39, { color: PALETTE4.error, children: [
30961
+ summary.failed > 0 && /* @__PURE__ */ jsxs37(Text39, { color: PALETTE.error, children: [
30875
30962
  ", ",
30876
30963
  summary.failed,
30877
30964
  " failed"
@@ -30879,8 +30966,8 @@ function DoneStep({
30879
30966
  ] }) })
30880
30967
  ] }),
30881
30968
  failures.length > 0 && /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", children: [
30882
- /* @__PURE__ */ jsx46(Text39, { bold: true, color: PALETTE4.error, children: "Failure details" }),
30883
- failures.map((failure) => /* @__PURE__ */ jsxs37(Text39, { color: PALETTE4.error, children: [
30969
+ /* @__PURE__ */ jsx46(Text39, { bold: true, color: PALETTE.error, children: "Failure details" }),
30970
+ failures.map((failure) => /* @__PURE__ */ jsxs37(Text39, { color: PALETTE.error, children: [
30884
30971
  failure.entityType,
30885
30972
  " ",
30886
30973
  failure.entityId,
@@ -30890,7 +30977,7 @@ function DoneStep({
30890
30977
  ] }),
30891
30978
  /* @__PURE__ */ jsx46(SpaceEnvironment, { spaceId, environmentId }),
30892
30979
  success && totalPushed > 0 && /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", gap: 1, children: [
30893
- /* @__PURE__ */ jsx46(Text39, { color: PALETTE4.success, children: "Your design system is now in Contentful Experiences." }),
30980
+ /* @__PURE__ */ jsx46(Text39, { color: PALETTE.success, children: "Your design system is now in Contentful Experiences." }),
30894
30981
  /* @__PURE__ */ jsx46(LinkRow, { title: "View your components here:", url: buildPostPushUrl2(urlArgs) }),
30895
30982
  /* @__PURE__ */ jsx46(
30896
30983
  LinkRow,
@@ -30907,7 +30994,7 @@ var ACTIONS;
30907
30994
  var init_DoneStep = __esm({
30908
30995
  "packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/DoneStep.tsx"() {
30909
30996
  "use strict";
30910
- init_theme4();
30997
+ init_theme();
30911
30998
  init_useImmediateInput();
30912
30999
  init_contentful_urls2();
30913
31000
  init_SpaceEnvironment();
@@ -31018,12 +31105,12 @@ function PathPrompt({
31018
31105
  const cursor = cursorVisible ? "\u2588" : " ";
31019
31106
  return /* @__PURE__ */ jsxs38(Box37, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
31020
31107
  /* @__PURE__ */ jsxs38(Box37, { gap: 1, children: [
31021
- /* @__PURE__ */ jsx47(Text40, { color: "cyan", children: "?" }),
31108
+ /* @__PURE__ */ jsx47(Text40, { color: PALETTE.accent, children: "?" }),
31022
31109
  /* @__PURE__ */ jsxs38(Text40, { bold: true, children: [
31023
31110
  label,
31024
31111
  ":"
31025
31112
  ] }),
31026
- /* @__PURE__ */ jsx47(Text40, { color: isPlaceholder ? PALETTE4.muted : void 0, children: shown }),
31113
+ /* @__PURE__ */ jsx47(Text40, { color: isPlaceholder ? PALETTE.muted : void 0, children: shown }),
31027
31114
  /* @__PURE__ */ jsx47(Text40, { children: cursor })
31028
31115
  ] }),
31029
31116
  /* @__PURE__ */ jsxs38(Box37, { gap: 3, children: [
@@ -31039,7 +31126,7 @@ var init_PathPrompt = __esm({
31039
31126
  init_useImmediateInput();
31040
31127
  init_path_utils();
31041
31128
  init_use_blinking_cursor();
31042
- init_theme4();
31129
+ init_theme();
31043
31130
  }
31044
31131
  });
31045
31132
 
@@ -31048,7 +31135,7 @@ import { Box as Box38, Text as Text41 } from "ink";
31048
31135
  import { jsx as jsx48, jsxs as jsxs39 } from "react/jsx-runtime";
31049
31136
  function StepHeader({ stepNumber, totalSteps, title }) {
31050
31137
  return /* @__PURE__ */ jsxs39(Box38, { flexDirection: "column", gap: 0, children: [
31051
- /* @__PURE__ */ jsx48(Text41, { dimColor: true, children: "\u2500".repeat(40) }),
31138
+ /* @__PURE__ */ jsx48(Text41, { color: PALETTE.muted, children: "\u2500".repeat(40) }),
31052
31139
  /* @__PURE__ */ jsxs39(Box38, { gap: 1, children: [
31053
31140
  /* @__PURE__ */ jsxs39(Text41, { bold: true, children: [
31054
31141
  "Step ",
@@ -31059,12 +31146,13 @@ function StepHeader({ stepNumber, totalSteps, title }) {
31059
31146
  /* @__PURE__ */ jsx48(Text41, { bold: true, children: "\u2014" }),
31060
31147
  /* @__PURE__ */ jsx48(Text41, { bold: true, children: title })
31061
31148
  ] }),
31062
- /* @__PURE__ */ jsx48(Text41, { dimColor: true, children: "\u2500".repeat(40) })
31149
+ /* @__PURE__ */ jsx48(Text41, { color: PALETTE.muted, children: "\u2500".repeat(40) })
31063
31150
  ] });
31064
31151
  }
31065
31152
  var init_StepHeader = __esm({
31066
31153
  "packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/StepHeader.tsx"() {
31067
31154
  "use strict";
31155
+ init_theme();
31068
31156
  }
31069
31157
  });
31070
31158
 
@@ -31106,12 +31194,12 @@ function PushingStep({ stepNumber, totalSteps, progress }) {
31106
31194
  /* @__PURE__ */ jsx50(StepHeader, { stepNumber, totalSteps, title: "Push to Contentful" }),
31107
31195
  /* @__PURE__ */ jsx50(Text42, { children: "Writing component types and design tokens to your Contentful space..." }),
31108
31196
  operationId && /* @__PURE__ */ jsxs40(Box39, { gap: 1, children: [
31109
- /* @__PURE__ */ jsx50(Text42, { color: PALETTE4.muted, children: "Operation:" }),
31197
+ /* @__PURE__ */ jsx50(Text42, { color: PALETTE.muted, children: "Operation:" }),
31110
31198
  /* @__PURE__ */ jsx50(Text42, { children: operationId })
31111
31199
  ] }),
31112
31200
  showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */ jsx50(Box39, { gap: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs40(Box39, { gap: 2, children: [
31113
- /* @__PURE__ */ jsx50(Box39, { width: 40, children: /* @__PURE__ */ jsx50(ThemeProvider2, { theme: INK_UI_THEME, children: /* @__PURE__ */ jsx50(ProgressBar2, { value: Math.round(progress.processed / progress.total * 100) }) }) }),
31114
- /* @__PURE__ */ jsxs40(Text42, { color: PALETTE4.muted, children: [
31201
+ /* @__PURE__ */ jsx50(Box39, { width: 40, children: /* @__PURE__ */ jsx50(ThemeProvider2, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx50(ProgressBar2, { value: Math.round(progress.processed / progress.total * 100) }) }) }),
31202
+ /* @__PURE__ */ jsxs40(Text42, { color: PALETTE.muted, children: [
31115
31203
  progress.processed,
31116
31204
  "/",
31117
31205
  progress.total,
@@ -31119,10 +31207,10 @@ function PushingStep({ stepNumber, totalSteps, progress }) {
31119
31207
  ] })
31120
31208
  ] }) }),
31121
31209
  showCurrent && /* @__PURE__ */ jsxs40(Box39, { gap: 1, children: [
31122
- /* @__PURE__ */ jsx50(Text42, { color: PALETTE4.muted, children: "Now processing:" }),
31210
+ /* @__PURE__ */ jsx50(Text42, { color: PALETTE.muted, children: "Now processing:" }),
31123
31211
  /* @__PURE__ */ jsx50(Text42, { children: showCurrent })
31124
31212
  ] }),
31125
- /* @__PURE__ */ jsx50(Box39, { marginTop: 1, children: /* @__PURE__ */ jsxs40(Text42, { color: PALETTE4.muted, children: [
31213
+ /* @__PURE__ */ jsx50(Box39, { marginTop: 1, children: /* @__PURE__ */ jsxs40(Text42, { color: PALETTE.muted, children: [
31126
31214
  "Elapsed: ",
31127
31215
  elapsed
31128
31216
  ] }) })
@@ -31133,8 +31221,8 @@ var init_PushingStep = __esm({
31133
31221
  "use strict";
31134
31222
  init_StepHeader();
31135
31223
  init_use_timed_spinner();
31136
- init_theme4();
31137
- init_theme4();
31224
+ init_theme2();
31225
+ init_theme();
31138
31226
  }
31139
31227
  });
31140
31228
 
@@ -31329,25 +31417,25 @@ function buildPreviewSummaryLines(preview) {
31329
31417
  if (components.new.length > 0) {
31330
31418
  lines.push({
31331
31419
  key: "summary-components-new",
31332
- color: PALETTE4.success,
31420
+ color: PALETTE.success,
31333
31421
  text: ` \uFF0B ${components.new.length} components will be created`
31334
31422
  });
31335
31423
  for (const [index, item] of components.new.entries()) {
31336
31424
  const name = item.key ?? item.$name ?? "unknown";
31337
- lines.push({ key: `summary-components-new-${index}`, color: PALETTE4.success, text: ` + ${name}` });
31425
+ lines.push({ key: `summary-components-new-${index}`, color: PALETTE.success, text: ` + ${name}` });
31338
31426
  }
31339
31427
  }
31340
31428
  if (components.changed.length > 0) {
31341
31429
  lines.push({
31342
31430
  key: "summary-components-changed",
31343
- color: PALETTE4.warning,
31431
+ color: PALETTE.warning,
31344
31432
  text: ` \uFF5E ${components.changed.length} components will be updated`
31345
31433
  });
31346
31434
  for (const [index, item] of components.changed.entries()) {
31347
31435
  const isBreaking = item.changeClassification?.classification === "breaking";
31348
31436
  lines.push({
31349
31437
  key: `summary-components-changed-${index}`,
31350
- color: isBreaking ? PALETTE4.error : PALETTE4.warning,
31438
+ color: isBreaking ? PALETTE.error : PALETTE.warning,
31351
31439
  text: ` ${isBreaking ? "\u26A0" : "~"} ${item.current.name}`
31352
31440
  });
31353
31441
  }
@@ -31355,11 +31443,11 @@ function buildPreviewSummaryLines(preview) {
31355
31443
  if (components.removed.length > 0) {
31356
31444
  lines.push({
31357
31445
  key: "summary-components-removed",
31358
- color: PALETTE4.warning,
31446
+ color: PALETTE.warning,
31359
31447
  text: ` \u2298 ${components.removed.length} components will be skipped`
31360
31448
  });
31361
31449
  for (const [index, item] of components.removed.entries()) {
31362
- lines.push({ key: `summary-components-removed-${index}`, color: PALETTE4.warning, text: ` \u2298 ${item.name}` });
31450
+ lines.push({ key: `summary-components-removed-${index}`, color: PALETTE.warning, text: ` \u2298 ${item.name}` });
31363
31451
  }
31364
31452
  }
31365
31453
  if (components.unchanged.length > 0) {
@@ -31372,21 +31460,21 @@ function buildPreviewSummaryLines(preview) {
31372
31460
  if (tokens.new.length > 0) {
31373
31461
  lines.push({
31374
31462
  key: "summary-tokens-new",
31375
- color: PALETTE4.success,
31463
+ color: PALETTE.success,
31376
31464
  text: ` \uFF0B ${tokens.new.length} design tokens will be created`
31377
31465
  });
31378
31466
  }
31379
31467
  if (tokens.changed.length > 0) {
31380
31468
  lines.push({
31381
31469
  key: "summary-tokens-changed",
31382
- color: PALETTE4.warning,
31470
+ color: PALETTE.warning,
31383
31471
  text: ` \uFF5E ${tokens.changed.length} design tokens will be updated`
31384
31472
  });
31385
31473
  }
31386
31474
  if (tokens.removed.length > 0) {
31387
31475
  lines.push({
31388
31476
  key: "summary-tokens-removed",
31389
- color: PALETTE4.warning,
31477
+ color: PALETTE.warning,
31390
31478
  text: ` \u2298 ${tokens.removed.length} design tokens will be skipped`
31391
31479
  });
31392
31480
  }
@@ -31430,12 +31518,12 @@ function getPreviewScrollOffset(input, downArrow, upArrow, diffExpanded, current
31430
31518
  function appendChangedPreviewLine(lines, keyPrefix, name, hasPendingDraftChanges, changeClassification) {
31431
31519
  lines.push({
31432
31520
  key: `${keyPrefix}-h-${name}`,
31433
- color: PALETTE4.warning,
31521
+ color: PALETTE.warning,
31434
31522
  text: ` ~ ${name}${hasPendingDraftChanges ? " \u26A1 has pending draft changes" : ""}`
31435
31523
  });
31436
31524
  if (changeClassification?.classification !== "breaking") return;
31437
31525
  const reasons = changeClassification.breakingChanges.map((bc) => `${"slotId" in bc ? bc.slotId : bc.propertyId}: ${bc.reason}`).join(", ");
31438
- lines.push({ key: `${keyPrefix}-b-${name}`, color: PALETTE4.error, text: ` \u26A0 BREAKING: ${reasons}` });
31526
+ lines.push({ key: `${keyPrefix}-b-${name}`, color: PALETTE.error, text: ` \u26A0 BREAKING: ${reasons}` });
31439
31527
  }
31440
31528
  function buildPreviewDiffLines(preview) {
31441
31529
  const lines = [];
@@ -31443,12 +31531,12 @@ function buildPreviewDiffLines(preview) {
31443
31531
  for (const item of components.new) {
31444
31532
  const raw = item;
31445
31533
  const name = raw.key ?? raw.$name ?? "unknown";
31446
- lines.push({ key: `comp-new-${name}`, color: PALETTE4.success, text: ` + ${name}` });
31534
+ lines.push({ key: `comp-new-${name}`, color: PALETTE.success, text: ` + ${name}` });
31447
31535
  const slots = raw.$slots ?? {};
31448
31536
  for (const slotName of Object.keys(slots).sort()) {
31449
31537
  lines.push({
31450
31538
  key: `comp-new-${name}-slot-${slotName}`,
31451
- color: PALETTE4.success,
31539
+ color: PALETTE.success,
31452
31540
  text: ` slot: ${slotName}`
31453
31541
  });
31454
31542
  const allowed = slots[slotName]?.["$allowedComponents"];
@@ -31456,14 +31544,14 @@ function buildPreviewDiffLines(preview) {
31456
31544
  const names = allowed.filter((n) => typeof n === "string");
31457
31545
  lines.push({
31458
31546
  key: `comp-new-${name}-slot-${slotName}-allow`,
31459
- color: PALETTE4.success,
31547
+ color: PALETTE.success,
31460
31548
  text: ` allowedComponents: [${names.join(", ")}]`
31461
31549
  });
31462
31550
  }
31463
31551
  }
31464
31552
  }
31465
31553
  for (const item of components.removed) {
31466
- lines.push({ key: `comp-rm-${item.name}`, color: PALETTE4.error, text: ` - ${item.name}` });
31554
+ lines.push({ key: `comp-rm-${item.name}`, color: PALETTE.error, text: ` - ${item.name}` });
31467
31555
  }
31468
31556
  for (const item of components.changed) {
31469
31557
  appendChangedPreviewLine(lines, "comp", item.current.name, item.hasPendingDraftChanges, item.changeClassification);
@@ -31494,10 +31582,10 @@ function buildPreviewDiffLines(preview) {
31494
31582
  for (const item of tokens.new) {
31495
31583
  const raw = item;
31496
31584
  const name = raw.name ?? raw.path ?? "unknown";
31497
- lines.push({ key: `tok-new-${name}`, color: PALETTE4.success, text: ` + ${name}` });
31585
+ lines.push({ key: `tok-new-${name}`, color: PALETTE.success, text: ` + ${name}` });
31498
31586
  }
31499
31587
  for (const item of tokens.removed) {
31500
- lines.push({ key: `tok-rm-${item.name}`, color: PALETTE4.error, text: ` - ${item.name}` });
31588
+ lines.push({ key: `tok-rm-${item.name}`, color: PALETTE.error, text: ` - ${item.name}` });
31501
31589
  }
31502
31590
  for (const item of tokens.changed) {
31503
31591
  const tokenName = item.current.name;
@@ -31588,13 +31676,13 @@ function WizardPreviewStep({
31588
31676
  title: diffExpanded ? `Diff (${diffLines.length} lines)` : "",
31589
31677
  focused: false,
31590
31678
  children: [
31591
- activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */ jsx51(Text43, { color: line.color === "gray" ? PALETTE4.muted : line.color, wrap: "truncate-end", children: line.text }, line.key)),
31592
- /* @__PURE__ */ jsx51(Text43, { color: PALETTE4.muted, wrap: "truncate-end", children: formatPreviewScrollIndicator(activeLines.length, boundedScrollOffset, viewportHeight) })
31679
+ activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */ jsx51(Text43, { color: line.color === "gray" ? PALETTE.muted : line.color, wrap: "truncate-end", children: line.text }, line.key)),
31680
+ /* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, wrap: "truncate-end", children: formatPreviewScrollIndicator(activeLines.length, boundedScrollOffset, viewportHeight) })
31593
31681
  ]
31594
31682
  }
31595
31683
  )
31596
- ] }) : /* @__PURE__ */ jsx51(Text43, { color: PALETTE4.muted, children: "Nothing to push \u2014 everything is already up to date." }),
31597
- breakingWithImpact && /* @__PURE__ */ jsx51(Box40, { marginTop: 1, children: /* @__PURE__ */ jsx51(Text43, { color: PALETTE4.error, bold: true, children: "\u26A0 Breaking changes will affect downstream entities. Press Enter to acknowledge and apply." }) }),
31684
+ ] }) : /* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: "Nothing to push \u2014 everything is already up to date." }),
31685
+ breakingWithImpact && /* @__PURE__ */ jsx51(Box40, { marginTop: 1, children: /* @__PURE__ */ jsx51(Text43, { color: PALETTE.error, bold: true, children: "\u26A0 Breaking changes will affect downstream entities. Press Enter to acknowledge and apply." }) }),
31598
31686
  /* @__PURE__ */ jsx51(SpaceEnvironment, { spaceId, environmentId }),
31599
31687
  /* @__PURE__ */ jsxs41(Box40, { gap: 3, marginTop: 1, children: [
31600
31688
  /* @__PURE__ */ jsx51(Text43, { children: "[Enter] Push to Contentful" }),
@@ -31612,7 +31700,7 @@ function WizardPreviewStep({
31612
31700
  var init_WizardPreviewStep = __esm({
31613
31701
  "packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/WizardPreviewStep.tsx"() {
31614
31702
  "use strict";
31615
- init_theme4();
31703
+ init_theme();
31616
31704
  init_useImmediateInput();
31617
31705
  init_use_terminal_size();
31618
31706
  init_src4();
@@ -32911,7 +32999,7 @@ function HelpScreen({ onDone }) {
32911
32999
  var init_PageContainer2 = __esm({
32912
33000
  "packages/experience-design-system-cli/src/tui/help/PageContainer.tsx"() {
32913
33001
  "use strict";
32914
- init_home_theme();
33002
+ init_theme();
32915
33003
  init_debug_store();
32916
33004
  init_control_hints();
32917
33005
  init_help_info();
@@ -32954,8 +33042,8 @@ function SettingsScreen({
32954
33042
  });
32955
33043
  return /* @__PURE__ */ jsxs44(Box43, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
32956
33044
  /* @__PURE__ */ jsx54(Text45, { bold: true, children: "Settings" }),
32957
- /* @__PURE__ */ jsx54(Text45, { children: " " }),
32958
- items.map((item, i) => /* @__PURE__ */ jsxs44(Text45, { color: i === focusIdx ? "cyan" : void 0, children: [
33045
+ /* @__PURE__ */ jsx54(Text45, { color: PALETTE.muted, children: " " }),
33046
+ items.map((item, i) => /* @__PURE__ */ jsxs44(Text45, { color: i === focusIdx ? PALETTE.accent : void 0, children: [
32959
33047
  i === focusIdx ? "> " : " ",
32960
33048
  item.label
32961
33049
  ] }, item.label)),
@@ -32976,6 +33064,7 @@ var init_PageContainer3 = __esm({
32976
33064
  "packages/experience-design-system-cli/src/tui/settings/PageContainer.tsx"() {
32977
33065
  "use strict";
32978
33066
  init_control_hints();
33067
+ init_theme();
32979
33068
  }
32980
33069
  });
32981
33070
 
@@ -33172,7 +33261,7 @@ var FIELD_ORDER, FIELD_LABELS, FIELD_HINTS, LABEL_WIDTH;
33172
33261
  var init_ContentfulConfigScreen = __esm({
33173
33262
  "packages/experience-design-system-cli/src/tui/settings/contentful-configuration/ContentfulConfigScreen.tsx"() {
33174
33263
  "use strict";
33175
- init_home_theme();
33264
+ init_theme();
33176
33265
  init_config_store();
33177
33266
  init_debug_store();
33178
33267
  init_control_hints();
@@ -33263,7 +33352,7 @@ function OptInAnalyticsScreen({ onDone }) {
33263
33352
  var init_screen11 = __esm({
33264
33353
  "packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx"() {
33265
33354
  "use strict";
33266
- init_home_theme();
33355
+ init_theme();
33267
33356
  init_analytics_store();
33268
33357
  init_debug_store();
33269
33358
  init_control_hints();
@@ -33343,6 +33432,7 @@ var UPGRADE_COMMANDS;
33343
33432
  var init_PageContainer4 = __esm({
33344
33433
  "packages/experience-design-system-cli/src/tui/upgrade/PageContainer.tsx"() {
33345
33434
  "use strict";
33435
+ init_theme();
33346
33436
  init_home_theme();
33347
33437
  init_version();
33348
33438
  init_debug_store();
@@ -33407,7 +33497,7 @@ function DebugModeScreen({ onDone }) {
33407
33497
  var init_screen12 = __esm({
33408
33498
  "packages/experience-design-system-cli/src/tui/settings/debug-mode/screen.tsx"() {
33409
33499
  "use strict";
33410
- init_home_theme();
33500
+ init_theme();
33411
33501
  init_debug_mode_store();
33412
33502
  init_debug_store();
33413
33503
  init_control_hints();