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