@contentful/experience-design-system-cli 2.42.1-dev-build-35573a04.0 → 2.42.1-dev-build-62049584.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/app.js +1171 -1000
- package/dist/index.js +1202 -1001
- package/dist/package.json +1 -1
- package/dist/src/tui/import/shared/running-step/activity-panel.d.ts +15 -0
- package/dist/src/tui/import/shared/running-step/activity.d.ts +26 -0
- package/dist/src/tui/import/shared/running-step/logic.d.ts +16 -0
- package/dist/src/tui/import/shared/running-step/running-step.d.ts +3 -1
- package/dist/src/tui/import/steps/06-extraction/logic.d.ts +6 -5
- package/dist/src/tui/import/steps/06-extraction/screen.d.ts +3 -1
- package/dist/src/tui/import/steps/06-extraction/use-extraction.d.ts +1 -0
- package/dist/src/tui/import/steps/08-generation/logic.d.ts +10 -8
- package/dist/src/tui/import/steps/08-generation/screen.d.ts +3 -1
- package/dist/src/tui/import/steps/08-generation/types.d.ts +8 -1
- package/dist/src/tui/import/steps/08-generation/use-generation.d.ts +1 -0
- package/dist/src/tui/import/steps/10-flow/support/push-progress.d.ts +20 -0
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -20138,6 +20138,19 @@ var init_overview_box = __esm({
|
|
|
20138
20138
|
});
|
|
20139
20139
|
|
|
20140
20140
|
// packages/experience-design-system-cli/src/tui/import/shared/running-step/logic.ts
|
|
20141
|
+
function lineState(line) {
|
|
20142
|
+
if (line.state) return line.state;
|
|
20143
|
+
return line.complete ? "done" : "running";
|
|
20144
|
+
}
|
|
20145
|
+
function formatDuration(ms) {
|
|
20146
|
+
return ms < 1e3 ? "<1s" : formatElapsed(Math.round(ms / 1e3));
|
|
20147
|
+
}
|
|
20148
|
+
function trackFinished(previous, rows, elapsedMs) {
|
|
20149
|
+
return rows.map((row, index) => previous[index] ?? (lineState(row) === "running" ? void 0 : elapsedMs));
|
|
20150
|
+
}
|
|
20151
|
+
function withTimes(rows, rowMs) {
|
|
20152
|
+
return rows.map((row, index) => rowMs[index] === void 0 ? row : { ...row, ms: rowMs[index] });
|
|
20153
|
+
}
|
|
20141
20154
|
function progressPercent(progress) {
|
|
20142
20155
|
if (progress.total <= 0) return 0;
|
|
20143
20156
|
return Math.min(100, Math.max(0, Math.round(progress.done / progress.total * 100)));
|
|
@@ -20189,47 +20202,126 @@ var init_use_elapsed = __esm({
|
|
|
20189
20202
|
}
|
|
20190
20203
|
});
|
|
20191
20204
|
|
|
20192
|
-
// packages/experience-design-system-cli/src/tui/import/shared/running-step/
|
|
20205
|
+
// packages/experience-design-system-cli/src/tui/import/shared/running-step/activity.ts
|
|
20206
|
+
function panelLayout(columns) {
|
|
20207
|
+
return columns >= BESIDE_MIN_COLUMNS ? "beside" : "below";
|
|
20208
|
+
}
|
|
20209
|
+
function visibleActivity(items, max) {
|
|
20210
|
+
if (items.length <= max) return { shown: [...items], hidden: 0 };
|
|
20211
|
+
const chosen = items.map((item, index) => ({ index, priority: PRIORITY[item.state] })).sort((a, b) => a.priority - b.priority || b.index - a.index).slice(0, Math.max(0, max)).map(({ index }) => index).sort((a, b) => a - b);
|
|
20212
|
+
return { shown: chosen.map((index) => items[index]), hidden: items.length - chosen.length };
|
|
20213
|
+
}
|
|
20214
|
+
function truncate(text, max) {
|
|
20215
|
+
return text.length <= max ? text : `${text.slice(0, Math.max(0, max - 1))}\u2026`;
|
|
20216
|
+
}
|
|
20217
|
+
var BESIDE_MIN_COLUMNS, PANEL_COLUMNS, PRIORITY;
|
|
20218
|
+
var init_activity = __esm({
|
|
20219
|
+
"packages/experience-design-system-cli/src/tui/import/shared/running-step/activity.ts"() {
|
|
20220
|
+
"use strict";
|
|
20221
|
+
BESIDE_MIN_COLUMNS = 110;
|
|
20222
|
+
PANEL_COLUMNS = 46;
|
|
20223
|
+
PRIORITY = { failed: 0, running: 1, done: 2 };
|
|
20224
|
+
}
|
|
20225
|
+
});
|
|
20226
|
+
|
|
20227
|
+
// packages/experience-design-system-cli/src/tui/import/shared/running-step/activity-panel.tsx
|
|
20193
20228
|
import { Box as Box8, Text as Text8 } from "ink";
|
|
20194
|
-
import {
|
|
20195
|
-
import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
20229
|
+
import { Spinner } from "@inkjs/ui";
|
|
20230
|
+
import { Fragment, jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
20231
|
+
function Row({ item, width }) {
|
|
20232
|
+
const time = item.ms !== void 0 ? formatDuration(item.ms) : "";
|
|
20233
|
+
const note = item.detail ? ` ${item.detail}` : "";
|
|
20234
|
+
const name = truncate(`${item.name}${note}`, Math.max(8, width - 12));
|
|
20235
|
+
return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
|
|
20236
|
+
/* @__PURE__ */ jsxs8(Box8, { gap: 1, children: [
|
|
20237
|
+
item.state === "running" ? /* @__PURE__ */ jsx8(Spinner, {}) : /* @__PURE__ */ jsx8(Text8, { color: COLOR[item.state], children: ICON[item.state] }),
|
|
20238
|
+
/* @__PURE__ */ jsx8(Text8, { color: item.state === "failed" ? PALETTE.error : PALETTE.muted, children: name }),
|
|
20239
|
+
time && /* @__PURE__ */ jsx8(Text8, { color: PALETTE.muted, children: time })
|
|
20240
|
+
] }),
|
|
20241
|
+
item.state === "failed" && item.error && /* @__PURE__ */ jsx8(Text8, { color: PALETTE.error, children: ` ${truncate(item.error, Math.max(12, width - 6))}` })
|
|
20242
|
+
] });
|
|
20243
|
+
}
|
|
20244
|
+
function ActivityPanel({ title, items }) {
|
|
20245
|
+
const columns = useTerminalWidth();
|
|
20246
|
+
const width = panelLayout(columns) === "beside" ? PANEL_COLUMNS : Math.max(30, columns - 4);
|
|
20247
|
+
const { shown, hidden } = visibleActivity(items, MAX_ROWS);
|
|
20248
|
+
return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.muted, paddingX: 1, width, children: [
|
|
20249
|
+
/* @__PURE__ */ jsx8(Text8, { bold: true, children: title }),
|
|
20250
|
+
shown.map((item, index) => /* @__PURE__ */ jsx8(Row, { item, width }, `${index}-${item.name}`)),
|
|
20251
|
+
hidden > 0 && /* @__PURE__ */ jsx8(Text8, { color: PALETTE.muted, children: `+ ${hidden} more` })
|
|
20252
|
+
] });
|
|
20253
|
+
}
|
|
20254
|
+
function AsideLayout({
|
|
20255
|
+
aside,
|
|
20256
|
+
children
|
|
20257
|
+
}) {
|
|
20258
|
+
const columns = useTerminalWidth();
|
|
20259
|
+
if (!aside) return /* @__PURE__ */ jsx8(Fragment, { children });
|
|
20260
|
+
const beside = panelLayout(columns) === "beside";
|
|
20261
|
+
return /* @__PURE__ */ jsxs8(Box8, { flexDirection: beside ? "row" : "column", alignItems: "flex-start", children: [
|
|
20262
|
+
children,
|
|
20263
|
+
/* @__PURE__ */ jsx8(Box8, { paddingX: beside ? 0 : 2, paddingBottom: 1, children: aside })
|
|
20264
|
+
] });
|
|
20265
|
+
}
|
|
20266
|
+
var MAX_ROWS, ICON, COLOR;
|
|
20267
|
+
var init_activity_panel = __esm({
|
|
20268
|
+
"packages/experience-design-system-cli/src/tui/import/shared/running-step/activity-panel.tsx"() {
|
|
20269
|
+
"use strict";
|
|
20270
|
+
init_theme();
|
|
20271
|
+
init_use_terminal_width();
|
|
20272
|
+
init_logic4();
|
|
20273
|
+
init_activity();
|
|
20274
|
+
MAX_ROWS = 8;
|
|
20275
|
+
ICON = { done: "\u2713", failed: "\u2717" };
|
|
20276
|
+
COLOR = { done: PALETTE.success, failed: PALETTE.error };
|
|
20277
|
+
}
|
|
20278
|
+
});
|
|
20279
|
+
|
|
20280
|
+
// packages/experience-design-system-cli/src/tui/import/shared/running-step/running-step.tsx
|
|
20281
|
+
import { Box as Box9, Text as Text9 } from "ink";
|
|
20282
|
+
import { ProgressBar, Spinner as Spinner2, ThemeProvider } from "@inkjs/ui";
|
|
20283
|
+
import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
20196
20284
|
function Line({ line }) {
|
|
20197
20285
|
if (line.progress) {
|
|
20198
|
-
return /* @__PURE__ */
|
|
20199
|
-
/* @__PURE__ */
|
|
20200
|
-
/* @__PURE__ */
|
|
20201
|
-
/* @__PURE__ */
|
|
20286
|
+
return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, children: [
|
|
20287
|
+
/* @__PURE__ */ jsxs9(Box9, { gap: 2, children: [
|
|
20288
|
+
/* @__PURE__ */ jsx9(Box9, { width: 40, children: /* @__PURE__ */ jsx9(ThemeProvider, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx9(ProgressBar, { value: progressPercent(line.progress) }) }) }),
|
|
20289
|
+
/* @__PURE__ */ jsxs9(Text9, { color: PALETTE.muted, children: [
|
|
20202
20290
|
line.progress.done,
|
|
20203
20291
|
"/",
|
|
20204
20292
|
line.progress.total
|
|
20205
20293
|
] })
|
|
20206
20294
|
] }),
|
|
20207
|
-
/* @__PURE__ */
|
|
20295
|
+
/* @__PURE__ */ jsx9(Text9, { color: textColor(lineState(line)), children: line.text })
|
|
20208
20296
|
] });
|
|
20209
20297
|
}
|
|
20210
|
-
|
|
20211
|
-
|
|
20212
|
-
/* @__PURE__ */
|
|
20298
|
+
const state2 = lineState(line);
|
|
20299
|
+
return /* @__PURE__ */ jsxs9(Box9, { gap: 1, children: [
|
|
20300
|
+
state2 === "running" ? /* @__PURE__ */ jsx9(Spinner2, {}) : /* @__PURE__ */ jsx9(Text9, { color: STATE_COLOR[state2], children: STATE_ICON[state2] }),
|
|
20301
|
+
/* @__PURE__ */ jsx9(Text9, { color: textColor(state2), children: line.text }),
|
|
20302
|
+
line.ms !== void 0 && /* @__PURE__ */ jsx9(Text9, { color: PALETTE.muted, children: formatDuration(line.ms) })
|
|
20213
20303
|
] });
|
|
20214
20304
|
}
|
|
20215
20305
|
function RunningStep({
|
|
20216
20306
|
step,
|
|
20217
20307
|
description,
|
|
20218
|
-
lines = [{ text: "Running..." }]
|
|
20308
|
+
lines = [{ text: "Running..." }],
|
|
20309
|
+
aside
|
|
20219
20310
|
}) {
|
|
20220
20311
|
const elapsed = useElapsed();
|
|
20221
|
-
return /* @__PURE__ */
|
|
20222
|
-
/* @__PURE__ */
|
|
20223
|
-
/* @__PURE__ */
|
|
20224
|
-
/* @__PURE__ */
|
|
20225
|
-
/* @__PURE__ */
|
|
20226
|
-
/* @__PURE__ */
|
|
20312
|
+
return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
|
|
20313
|
+
/* @__PURE__ */ jsx9(StepHeader, { step }),
|
|
20314
|
+
/* @__PURE__ */ jsx9(AsideLayout, { aside, children: /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
20315
|
+
/* @__PURE__ */ jsx9(Text9, { children: description }),
|
|
20316
|
+
/* @__PURE__ */ jsx9(Box9, { marginTop: 1, flexDirection: "column", gap: 1, children: lines.map((line, index) => /* @__PURE__ */ jsx9(Line, { line }, index)) }),
|
|
20317
|
+
/* @__PURE__ */ jsx9(Box9, { marginTop: 1, children: /* @__PURE__ */ jsxs9(Text9, { color: PALETTE.muted, children: [
|
|
20227
20318
|
"Elapsed: ",
|
|
20228
20319
|
elapsed
|
|
20229
20320
|
] }) })
|
|
20230
|
-
] })
|
|
20321
|
+
] }) })
|
|
20231
20322
|
] });
|
|
20232
20323
|
}
|
|
20324
|
+
var STATE_ICON, STATE_COLOR, textColor;
|
|
20233
20325
|
var init_running_step = __esm({
|
|
20234
20326
|
"packages/experience-design-system-cli/src/tui/import/shared/running-step/running-step.tsx"() {
|
|
20235
20327
|
"use strict";
|
|
@@ -20238,6 +20330,10 @@ var init_running_step = __esm({
|
|
|
20238
20330
|
init_theme2();
|
|
20239
20331
|
init_StepHeader();
|
|
20240
20332
|
init_use_elapsed();
|
|
20333
|
+
init_activity_panel();
|
|
20334
|
+
STATE_ICON = { done: "\u2713", warning: "!", failed: "\u2717" };
|
|
20335
|
+
STATE_COLOR = { done: PALETTE.success, warning: PALETTE.warning, failed: PALETTE.error };
|
|
20336
|
+
textColor = (state2) => state2 === "warning" || state2 === "failed" ? STATE_COLOR[state2] : PALETTE.muted;
|
|
20241
20337
|
}
|
|
20242
20338
|
});
|
|
20243
20339
|
|
|
@@ -20254,8 +20350,8 @@ var init_shared2 = __esm({
|
|
|
20254
20350
|
|
|
20255
20351
|
// packages/experience-design-system-cli/src/tui/import/steps/00-preflight/screen.tsx
|
|
20256
20352
|
import { useEffect as useEffect4, useRef, useState as useState4 } from "react";
|
|
20257
|
-
import { Box as
|
|
20258
|
-
import { jsx as
|
|
20353
|
+
import { Box as Box10, Text as Text10 } from "ink";
|
|
20354
|
+
import { jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
20259
20355
|
function PreflightScreen({ onChoose, onQuit }) {
|
|
20260
20356
|
const [focus, setFocus] = useState4(0);
|
|
20261
20357
|
const viewed = useRef([optionAt(0)]).current;
|
|
@@ -20284,19 +20380,19 @@ function PreflightScreen({ onChoose, onQuit }) {
|
|
|
20284
20380
|
onQuit();
|
|
20285
20381
|
};
|
|
20286
20382
|
usePreflightControls({ focus, onFocus: moveTo, onChoose: choose, onQuit: quit });
|
|
20287
|
-
return /* @__PURE__ */
|
|
20288
|
-
/* @__PURE__ */
|
|
20289
|
-
/* @__PURE__ */
|
|
20290
|
-
/* @__PURE__ */
|
|
20291
|
-
/* @__PURE__ */
|
|
20383
|
+
return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
|
|
20384
|
+
/* @__PURE__ */ jsx10(StepHeader, { step: "setup" }),
|
|
20385
|
+
/* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
20386
|
+
/* @__PURE__ */ jsx10(Text10, { bold: true, color: PALETTE.text, children: "What do you want to import?" }),
|
|
20387
|
+
/* @__PURE__ */ jsx10(Box10, { flexDirection: "column", children: IMPORT_TARGET_OPTIONS.map((option, index) => {
|
|
20292
20388
|
const focused = index === focus;
|
|
20293
|
-
return /* @__PURE__ */
|
|
20294
|
-
/* @__PURE__ */
|
|
20295
|
-
/* @__PURE__ */
|
|
20389
|
+
return /* @__PURE__ */ jsxs10(Box10, { gap: 1, children: [
|
|
20390
|
+
/* @__PURE__ */ jsx10(Text10, { color: PALETTE.accent, children: focused ? "\u276F" : " " }),
|
|
20391
|
+
/* @__PURE__ */ jsx10(Text10, { bold: focused, color: focused ? PALETTE.accent : void 0, children: option.label })
|
|
20296
20392
|
] }, option.target);
|
|
20297
20393
|
}) }),
|
|
20298
|
-
/* @__PURE__ */
|
|
20299
|
-
/* @__PURE__ */
|
|
20394
|
+
/* @__PURE__ */ jsx10(OverviewBox, { steps: overviewFor(optionAt(focus)) }),
|
|
20395
|
+
/* @__PURE__ */ jsx10(ControlHints, { hints: PREFLIGHT_CONTROLS })
|
|
20300
20396
|
] })
|
|
20301
20397
|
] });
|
|
20302
20398
|
}
|
|
@@ -20319,7 +20415,7 @@ var init_screen = __esm({
|
|
|
20319
20415
|
import { useRef as useRef2 } from "react";
|
|
20320
20416
|
import { useInput as useInput6 } from "ink";
|
|
20321
20417
|
import TextInput from "ink-text-input";
|
|
20322
|
-
import { jsx as
|
|
20418
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
20323
20419
|
function isClearKey(input, key) {
|
|
20324
20420
|
return key.ctrl && input === "d";
|
|
20325
20421
|
}
|
|
@@ -20333,7 +20429,7 @@ function ClearableTextInput({ onChange, ...props }) {
|
|
|
20333
20429
|
}, 0);
|
|
20334
20430
|
onChange("");
|
|
20335
20431
|
});
|
|
20336
|
-
return /* @__PURE__ */
|
|
20432
|
+
return /* @__PURE__ */ jsx11(
|
|
20337
20433
|
TextInput,
|
|
20338
20434
|
{
|
|
20339
20435
|
...props,
|
|
@@ -20385,8 +20481,8 @@ var init_controls4 = __esm({
|
|
|
20385
20481
|
|
|
20386
20482
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx
|
|
20387
20483
|
import { useEffect as useEffect5, useRef as useRef3, useState as useState5 } from "react";
|
|
20388
|
-
import { Box as
|
|
20389
|
-
import { jsx as
|
|
20484
|
+
import { Box as Box11, Text as Text11 } from "ink";
|
|
20485
|
+
import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
20390
20486
|
function WelcomeScreen({ mode, onContinue, onQuit, initialPath = "" }) {
|
|
20391
20487
|
const [projectPath, setProjectPath] = useState5(initialPath);
|
|
20392
20488
|
const visit = useRef3({ emptySubmits: 0 }).current;
|
|
@@ -20428,18 +20524,18 @@ function WelcomeScreen({ mode, onContinue, onQuit, initialPath = "" }) {
|
|
|
20428
20524
|
});
|
|
20429
20525
|
onContinue(path5);
|
|
20430
20526
|
};
|
|
20431
|
-
return /* @__PURE__ */
|
|
20432
|
-
/* @__PURE__ */
|
|
20433
|
-
/* @__PURE__ */
|
|
20434
|
-
/* @__PURE__ */
|
|
20435
|
-
/* @__PURE__ */
|
|
20436
|
-
/* @__PURE__ */
|
|
20437
|
-
/* @__PURE__ */
|
|
20438
|
-
/* @__PURE__ */
|
|
20439
|
-
/* @__PURE__ */
|
|
20527
|
+
return /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", children: [
|
|
20528
|
+
/* @__PURE__ */ jsx12(StepHeader, { step: "setup" }),
|
|
20529
|
+
/* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
20530
|
+
/* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", gap: 1, children: [
|
|
20531
|
+
/* @__PURE__ */ jsx12(Text11, { color: PALETTE.text, children: "Where is your component library?" }),
|
|
20532
|
+
/* @__PURE__ */ jsxs11(Box11, { children: [
|
|
20533
|
+
/* @__PURE__ */ jsx12(Text11, { color: PALETTE.accent, children: "? " }),
|
|
20534
|
+
/* @__PURE__ */ jsx12(Text11, { children: "Project path: " }),
|
|
20535
|
+
/* @__PURE__ */ jsx12(ClearableTextInput, { value: projectPath, onChange: setProjectPath, onSubmit: submit })
|
|
20440
20536
|
] })
|
|
20441
20537
|
] }),
|
|
20442
|
-
/* @__PURE__ */
|
|
20538
|
+
/* @__PURE__ */ jsx12(Box11, { children: /* @__PURE__ */ jsx12(ControlHints, { hints: WELCOME_CONTROLS }) })
|
|
20443
20539
|
] })
|
|
20444
20540
|
] });
|
|
20445
20541
|
}
|
|
@@ -20540,8 +20636,8 @@ var init_validate_path = __esm({
|
|
|
20540
20636
|
|
|
20541
20637
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx
|
|
20542
20638
|
import { useEffect as useEffect6, useRef as useRef4, useState as useState6 } from "react";
|
|
20543
|
-
import { Box as
|
|
20544
|
-
import { jsx as
|
|
20639
|
+
import { Box as Box12, Text as Text12 } from "ink";
|
|
20640
|
+
import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
20545
20641
|
function TokenInputScreen({
|
|
20546
20642
|
mode,
|
|
20547
20643
|
onConfirm,
|
|
@@ -20604,29 +20700,29 @@ function TokenInputScreen({
|
|
|
20604
20700
|
});
|
|
20605
20701
|
onConfirm(check.path);
|
|
20606
20702
|
};
|
|
20607
|
-
return /* @__PURE__ */
|
|
20608
|
-
/* @__PURE__ */
|
|
20609
|
-
/* @__PURE__ */
|
|
20610
|
-
/* @__PURE__ */
|
|
20611
|
-
/* @__PURE__ */
|
|
20612
|
-
/* @__PURE__ */
|
|
20613
|
-
/* @__PURE__ */
|
|
20614
|
-
/* @__PURE__ */
|
|
20615
|
-
/* @__PURE__ */
|
|
20616
|
-
/* @__PURE__ */
|
|
20703
|
+
return /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
|
|
20704
|
+
/* @__PURE__ */ jsx13(StepHeader, { step: "setup" }),
|
|
20705
|
+
/* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
20706
|
+
/* @__PURE__ */ jsx13(Text12, { bold: true, children: "Design tokens" }),
|
|
20707
|
+
/* @__PURE__ */ jsx13(Text12, { color: PALETTE.muted, children: "Point me to your raw token file (e.g. ~/design-tokens/tokens.json). You can use ~, relative, or absolute paths. Claude will map it to Design Token Group Format (DTCG)." }),
|
|
20708
|
+
/* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
|
|
20709
|
+
/* @__PURE__ */ jsxs12(Box12, { gap: 1, children: [
|
|
20710
|
+
/* @__PURE__ */ jsx13(Text12, { color: PALETTE.accent, children: "?" }),
|
|
20711
|
+
/* @__PURE__ */ jsx13(Text12, { children: "Token path:" }),
|
|
20712
|
+
/* @__PURE__ */ jsx13(ClearableTextInput, { value: tokenPath, onChange: change, onSubmit: submit })
|
|
20617
20713
|
] }),
|
|
20618
|
-
failure && /* @__PURE__ */
|
|
20619
|
-
/* @__PURE__ */
|
|
20714
|
+
failure && /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
|
|
20715
|
+
/* @__PURE__ */ jsxs12(Text12, { color: PALETTE.error, children: [
|
|
20620
20716
|
"\u2717 ",
|
|
20621
20717
|
failure.error
|
|
20622
20718
|
] }),
|
|
20623
|
-
failure.resolvedPath && /* @__PURE__ */
|
|
20719
|
+
failure.resolvedPath && /* @__PURE__ */ jsxs12(Text12, { color: PALETTE.muted, children: [
|
|
20624
20720
|
" Resolved to: ",
|
|
20625
20721
|
failure.resolvedPath
|
|
20626
20722
|
] })
|
|
20627
20723
|
] })
|
|
20628
20724
|
] }),
|
|
20629
|
-
/* @__PURE__ */
|
|
20725
|
+
/* @__PURE__ */ jsx13(Box12, { marginTop: 1, children: /* @__PURE__ */ jsx13(ControlHints, { hints: TOKEN_INPUT_CONTROLS }) })
|
|
20630
20726
|
] })
|
|
20631
20727
|
] });
|
|
20632
20728
|
}
|
|
@@ -20794,10 +20890,10 @@ var init_scan_files = __esm({
|
|
|
20794
20890
|
|
|
20795
20891
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/screen.tsx
|
|
20796
20892
|
import { useEffect as useEffect7, useMemo, useState as useState7 } from "react";
|
|
20797
|
-
import { Box as
|
|
20798
|
-
import { jsx as
|
|
20799
|
-
function
|
|
20800
|
-
return /* @__PURE__ */
|
|
20893
|
+
import { Box as Box13, Text as Text13 } from "ink";
|
|
20894
|
+
import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
20895
|
+
function Row2({ row }) {
|
|
20896
|
+
return /* @__PURE__ */ jsxs13(Text13, { color: row.tone === "accent" ? PALETTE.accent : row.tone === "muted" ? PALETTE.muted : void 0, children: [
|
|
20801
20897
|
" \u2022 ",
|
|
20802
20898
|
String(row.count).padStart(3),
|
|
20803
20899
|
" ",
|
|
@@ -20806,12 +20902,12 @@ function Row({ row }) {
|
|
|
20806
20902
|
}
|
|
20807
20903
|
function Failure({ scan, path: path5 }) {
|
|
20808
20904
|
const { headline, hints } = describeFailure(scan.failure, path5);
|
|
20809
|
-
return /* @__PURE__ */
|
|
20810
|
-
/* @__PURE__ */
|
|
20905
|
+
return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
|
|
20906
|
+
/* @__PURE__ */ jsxs13(Text13, { color: PALETTE.error, children: [
|
|
20811
20907
|
"\u2717 ",
|
|
20812
20908
|
headline
|
|
20813
20909
|
] }),
|
|
20814
|
-
hints.map((hint) => /* @__PURE__ */
|
|
20910
|
+
hints.map((hint) => /* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: hint }, hint))
|
|
20815
20911
|
] });
|
|
20816
20912
|
}
|
|
20817
20913
|
function Summary({
|
|
@@ -20820,24 +20916,24 @@ function Summary({
|
|
|
20820
20916
|
hasTokens
|
|
20821
20917
|
}) {
|
|
20822
20918
|
const { total, rows, warning } = summarize(scan.counts, { hasTokens });
|
|
20823
|
-
return /* @__PURE__ */
|
|
20824
|
-
/* @__PURE__ */
|
|
20919
|
+
return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", gap: 1, children: [
|
|
20920
|
+
/* @__PURE__ */ jsxs13(Text13, { children: [
|
|
20825
20921
|
"Scanned ",
|
|
20826
|
-
/* @__PURE__ */
|
|
20922
|
+
/* @__PURE__ */ jsx14(Text13, { bold: true, children: path5 })
|
|
20827
20923
|
] }),
|
|
20828
|
-
/* @__PURE__ */
|
|
20829
|
-
/* @__PURE__ */
|
|
20924
|
+
/* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
|
|
20925
|
+
/* @__PURE__ */ jsxs13(Text13, { color: PALETTE.success, children: [
|
|
20830
20926
|
"\u2713 Found ",
|
|
20831
20927
|
total,
|
|
20832
20928
|
" files:"
|
|
20833
20929
|
] }),
|
|
20834
|
-
rows.map((row) => /* @__PURE__ */
|
|
20930
|
+
rows.map((row) => /* @__PURE__ */ jsx14(Row2, { row }, row.label))
|
|
20835
20931
|
] }),
|
|
20836
|
-
warning && /* @__PURE__ */
|
|
20932
|
+
warning && /* @__PURE__ */ jsxs13(Text13, { color: PALETTE.warning, children: [
|
|
20837
20933
|
"\u26A0 ",
|
|
20838
20934
|
warning
|
|
20839
20935
|
] }),
|
|
20840
|
-
/* @__PURE__ */
|
|
20936
|
+
/* @__PURE__ */ jsx14(Text13, { children: "Does this look right?" })
|
|
20841
20937
|
] });
|
|
20842
20938
|
}
|
|
20843
20939
|
function PathValidationScreen({
|
|
@@ -20884,17 +20980,17 @@ function PathValidationScreen({
|
|
|
20884
20980
|
onBack();
|
|
20885
20981
|
}
|
|
20886
20982
|
});
|
|
20887
|
-
return /* @__PURE__ */
|
|
20888
|
-
/* @__PURE__ */
|
|
20889
|
-
/* @__PURE__ */
|
|
20890
|
-
scan === void 0 && /* @__PURE__ */
|
|
20983
|
+
return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
|
|
20984
|
+
/* @__PURE__ */ jsx14(StepHeader, { step: "setup" }),
|
|
20985
|
+
/* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
20986
|
+
scan === void 0 && /* @__PURE__ */ jsxs13(Text13, { color: PALETTE.muted, children: [
|
|
20891
20987
|
"Scanning ",
|
|
20892
|
-
/* @__PURE__ */
|
|
20988
|
+
/* @__PURE__ */ jsx14(Text13, { bold: true, children: resolvedPath }),
|
|
20893
20989
|
"..."
|
|
20894
20990
|
] }),
|
|
20895
|
-
scan?.ok === false && /* @__PURE__ */
|
|
20896
|
-
scan?.ok === true && /* @__PURE__ */
|
|
20897
|
-
/* @__PURE__ */
|
|
20991
|
+
scan?.ok === false && /* @__PURE__ */ jsx14(Failure, { scan, path: resolvedPath }),
|
|
20992
|
+
scan?.ok === true && /* @__PURE__ */ jsx14(Summary, { scan, path: resolvedPath, hasTokens }),
|
|
20993
|
+
/* @__PURE__ */ jsx14(Box13, { marginTop: 1, children: /* @__PURE__ */ jsx14(ControlHints, { hints: controlsFor(phase) }) })
|
|
20898
20994
|
] })
|
|
20899
20995
|
] });
|
|
20900
20996
|
}
|
|
@@ -20914,8 +21010,8 @@ var init_screen4 = __esm({
|
|
|
20914
21010
|
|
|
20915
21011
|
// packages/experience-design-system-cli/src/tui/shared/components/FieldForm.tsx
|
|
20916
21012
|
import { useState as useState8 } from "react";
|
|
20917
|
-
import { Box as
|
|
20918
|
-
import { Fragment, jsx as
|
|
21013
|
+
import { Box as Box14, Text as Text14, useInput as useInput10 } from "ink";
|
|
21014
|
+
import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
20919
21015
|
function formLabelWidth(rows) {
|
|
20920
21016
|
return Math.max(...rows.map((row) => row.label.length));
|
|
20921
21017
|
}
|
|
@@ -20924,9 +21020,9 @@ function FormReadOnlyRow({
|
|
|
20924
21020
|
labelWidth,
|
|
20925
21021
|
children
|
|
20926
21022
|
}) {
|
|
20927
|
-
return /* @__PURE__ */
|
|
20928
|
-
/* @__PURE__ */
|
|
20929
|
-
/* @__PURE__ */
|
|
21023
|
+
return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
|
|
21024
|
+
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
21025
|
+
/* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: label }) }),
|
|
20930
21026
|
children
|
|
20931
21027
|
] });
|
|
20932
21028
|
}
|
|
@@ -21013,23 +21109,23 @@ function FieldForm({
|
|
|
21013
21109
|
setValueBeforeEdit(values[next.key]);
|
|
21014
21110
|
setActive(active + 1);
|
|
21015
21111
|
};
|
|
21016
|
-
const pointer = (isActive) => /* @__PURE__ */
|
|
21017
|
-
return /* @__PURE__ */
|
|
21112
|
+
const pointer = (isActive) => /* @__PURE__ */ jsx15(Text14, { color: isActive ? PALETTE.accent : void 0, children: isActive ? "\u276F" : " " });
|
|
21113
|
+
return /* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", children: [
|
|
21018
21114
|
header,
|
|
21019
|
-
/* @__PURE__ */
|
|
21020
|
-
/* @__PURE__ */
|
|
21021
|
-
/* @__PURE__ */
|
|
21022
|
-
subtitle && /* @__PURE__ */
|
|
21023
|
-
/* @__PURE__ */
|
|
21024
|
-
/* @__PURE__ */
|
|
21115
|
+
/* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", paddingX: 2, paddingTop: header ? 0 : 1, paddingBottom: 1, children: [
|
|
21116
|
+
/* @__PURE__ */ jsx15(Text14, { bold: true, children: title }),
|
|
21117
|
+
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
21118
|
+
subtitle && /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: subtitle }),
|
|
21119
|
+
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
21120
|
+
/* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", children: [
|
|
21025
21121
|
fields2.map((field, index) => {
|
|
21026
21122
|
const isActive = index === active;
|
|
21027
21123
|
const value = values[field.key];
|
|
21028
21124
|
const display = field.masked ? "\u2022".repeat(value.length) : value;
|
|
21029
|
-
return /* @__PURE__ */
|
|
21125
|
+
return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
|
|
21030
21126
|
pointer(isActive),
|
|
21031
|
-
/* @__PURE__ */
|
|
21032
|
-
isActive && editing ? /* @__PURE__ */
|
|
21127
|
+
/* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
|
|
21128
|
+
isActive && editing ? /* @__PURE__ */ jsx15(
|
|
21033
21129
|
ClearableTextInput,
|
|
21034
21130
|
{
|
|
21035
21131
|
value,
|
|
@@ -21037,34 +21133,34 @@ function FieldForm({
|
|
|
21037
21133
|
onSubmit: submitField,
|
|
21038
21134
|
mask: field.masked ? "\u2022" : void 0
|
|
21039
21135
|
}
|
|
21040
|
-
) : display ? /* @__PURE__ */
|
|
21136
|
+
) : display ? /* @__PURE__ */ jsx15(Text14, { bold: true, children: display }) : (
|
|
21041
21137
|
// An empty value shows its hint (or "(empty)") in the value's place, not after an empty element, so the
|
|
21042
21138
|
// text starts in the same column as every other row's.
|
|
21043
|
-
/* @__PURE__ */
|
|
21139
|
+
/* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: field.hint ?? "(empty)" })
|
|
21044
21140
|
),
|
|
21045
|
-
display && field.hint && /* @__PURE__ */
|
|
21141
|
+
display && field.hint && /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: field.hint })
|
|
21046
21142
|
] }, field.key);
|
|
21047
21143
|
}),
|
|
21048
21144
|
actions.map((action, index) => {
|
|
21049
21145
|
const isActive = fields2.length + index === active;
|
|
21050
|
-
return /* @__PURE__ */
|
|
21146
|
+
return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
|
|
21051
21147
|
pointer(isActive),
|
|
21052
|
-
/* @__PURE__ */
|
|
21053
|
-
/* @__PURE__ */
|
|
21148
|
+
/* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: action.label }) }),
|
|
21149
|
+
/* @__PURE__ */ jsx15(Text14, { color: action.running ? PALETTE.accent : PALETTE.muted, children: action.running ? action.runningText ?? "running..." : action.description })
|
|
21054
21150
|
] }, action.label);
|
|
21055
21151
|
})
|
|
21056
21152
|
] }),
|
|
21057
|
-
notice && /* @__PURE__ */
|
|
21058
|
-
/* @__PURE__ */
|
|
21059
|
-
/* @__PURE__ */
|
|
21153
|
+
notice && /* @__PURE__ */ jsxs14(Fragment2, { children: [
|
|
21154
|
+
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
21155
|
+
/* @__PURE__ */ jsxs14(Text14, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
21060
21156
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
21061
21157
|
" ",
|
|
21062
21158
|
notice.text
|
|
21063
21159
|
] })
|
|
21064
21160
|
] }),
|
|
21065
21161
|
children,
|
|
21066
|
-
/* @__PURE__ */
|
|
21067
|
-
/* @__PURE__ */
|
|
21162
|
+
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
21163
|
+
/* @__PURE__ */ jsx15(
|
|
21068
21164
|
ControlHints,
|
|
21069
21165
|
{
|
|
21070
21166
|
hints: editing ? [
|
|
@@ -21236,8 +21332,8 @@ var init_validate4 = __esm({
|
|
|
21236
21332
|
|
|
21237
21333
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/screen.tsx
|
|
21238
21334
|
import { useEffect as useEffect8, useRef as useRef5, useState as useState9 } from "react";
|
|
21239
|
-
import { Box as
|
|
21240
|
-
import { Fragment as
|
|
21335
|
+
import { Box as Box15, Text as Text15, useInput as useInput11 } from "ink";
|
|
21336
|
+
import { Fragment as Fragment3, jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
21241
21337
|
function CredentialsScreen({
|
|
21242
21338
|
mode,
|
|
21243
21339
|
onDone,
|
|
@@ -21355,24 +21451,24 @@ function CredentialsScreen({
|
|
|
21355
21451
|
});
|
|
21356
21452
|
const labelWidth = formLabelWidth([...FIELDS2, ...MENU]);
|
|
21357
21453
|
const changed = !isUnchanged(normalize(values), initialValues);
|
|
21358
|
-
return /* @__PURE__ */
|
|
21359
|
-
/* @__PURE__ */
|
|
21360
|
-
/* @__PURE__ */
|
|
21361
|
-
/* @__PURE__ */
|
|
21362
|
-
/* @__PURE__ */
|
|
21363
|
-
/* @__PURE__ */
|
|
21364
|
-
/* @__PURE__ */
|
|
21365
|
-
/* @__PURE__ */
|
|
21454
|
+
return /* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", children: [
|
|
21455
|
+
/* @__PURE__ */ jsx16(StepHeader, { step: "setup" }),
|
|
21456
|
+
/* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", paddingX: 2, paddingBottom: 1, children: [
|
|
21457
|
+
/* @__PURE__ */ jsx16(Text15, { bold: true, color: PALETTE.accent, children: "Contentful Credentials" }),
|
|
21458
|
+
/* @__PURE__ */ jsx16(Text15, { children: " " }),
|
|
21459
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: prefilled ? "Credentials pre-filled from the configuration settings." : "Enter the Contentful space you want to import into." }),
|
|
21460
|
+
/* @__PURE__ */ jsx16(Text15, { children: " " }),
|
|
21461
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Actions" }),
|
|
21366
21462
|
MENU.map((item, index) => {
|
|
21367
21463
|
const focused = !editing && index === focus;
|
|
21368
|
-
return /* @__PURE__ */
|
|
21369
|
-
/* @__PURE__ */
|
|
21370
|
-
/* @__PURE__ */
|
|
21371
|
-
/* @__PURE__ */
|
|
21464
|
+
return /* @__PURE__ */ jsxs15(Box15, { gap: 1, children: [
|
|
21465
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.accent, children: focused ? "\u276F" : " " }),
|
|
21466
|
+
/* @__PURE__ */ jsx16(Box15, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx16(Text15, { bold: focused, color: focused ? PALETTE.accent : editing ? PALETTE.muted : PALETTE.text, children: item.label }) }),
|
|
21467
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: item.description })
|
|
21372
21468
|
] }, item.choice);
|
|
21373
21469
|
}),
|
|
21374
|
-
/* @__PURE__ */
|
|
21375
|
-
|
|
21470
|
+
/* @__PURE__ */ jsxs15(
|
|
21471
|
+
Box15,
|
|
21376
21472
|
{
|
|
21377
21473
|
flexDirection: "column",
|
|
21378
21474
|
marginTop: 1,
|
|
@@ -21382,15 +21478,15 @@ function CredentialsScreen({
|
|
|
21382
21478
|
borderLeft: false,
|
|
21383
21479
|
borderRight: false,
|
|
21384
21480
|
children: [
|
|
21385
|
-
/* @__PURE__ */
|
|
21481
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Space" }),
|
|
21386
21482
|
FIELDS2.map((field, index) => {
|
|
21387
21483
|
const open = editing && index === active;
|
|
21388
21484
|
const value = values[field.key];
|
|
21389
21485
|
const display = field.masked ? "\u2022".repeat(value.length) : value;
|
|
21390
|
-
return /* @__PURE__ */
|
|
21391
|
-
/* @__PURE__ */
|
|
21392
|
-
/* @__PURE__ */
|
|
21393
|
-
open ? /* @__PURE__ */
|
|
21486
|
+
return /* @__PURE__ */ jsxs15(Box15, { gap: 1, children: [
|
|
21487
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.accent, children: open ? "\u276F" : " " }),
|
|
21488
|
+
/* @__PURE__ */ jsx16(Box15, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx16(Text15, { bold: open, color: open ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
|
|
21489
|
+
open ? /* @__PURE__ */ jsx16(
|
|
21394
21490
|
ClearableTextInput,
|
|
21395
21491
|
{
|
|
21396
21492
|
value,
|
|
@@ -21401,35 +21497,35 @@ function CredentialsScreen({
|
|
|
21401
21497
|
onSubmit: stopEditing,
|
|
21402
21498
|
mask: field.masked ? "\u2022" : void 0
|
|
21403
21499
|
}
|
|
21404
|
-
) : /* @__PURE__ */
|
|
21500
|
+
) : /* @__PURE__ */ jsx16(Text15, { color: display ? PALETTE.text : PALETTE.muted, children: display || (field.hint ?? "(empty)") })
|
|
21405
21501
|
] }, field.key);
|
|
21406
21502
|
})
|
|
21407
21503
|
]
|
|
21408
21504
|
}
|
|
21409
21505
|
),
|
|
21410
|
-
notice && /* @__PURE__ */
|
|
21411
|
-
/* @__PURE__ */
|
|
21412
|
-
/* @__PURE__ */
|
|
21506
|
+
notice && /* @__PURE__ */ jsxs15(Fragment3, { children: [
|
|
21507
|
+
/* @__PURE__ */ jsx16(Text15, { children: " " }),
|
|
21508
|
+
/* @__PURE__ */ jsxs15(Text15, { color: PALETTE.error, children: [
|
|
21413
21509
|
"\u2717 ",
|
|
21414
21510
|
notice.text
|
|
21415
21511
|
] })
|
|
21416
21512
|
] }),
|
|
21417
|
-
validating && /* @__PURE__ */
|
|
21418
|
-
/* @__PURE__ */
|
|
21419
|
-
/* @__PURE__ */
|
|
21513
|
+
validating && /* @__PURE__ */ jsxs15(Fragment3, { children: [
|
|
21514
|
+
/* @__PURE__ */ jsx16(Text15, { children: " " }),
|
|
21515
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.accent, children: "Validating credentials..." })
|
|
21420
21516
|
] }),
|
|
21421
|
-
!prefilled && !validating && !notice && /* @__PURE__ */
|
|
21422
|
-
/* @__PURE__ */
|
|
21423
|
-
/* @__PURE__ */
|
|
21424
|
-
/* @__PURE__ */
|
|
21517
|
+
!prefilled && !validating && !notice && /* @__PURE__ */ jsxs15(Fragment3, { children: [
|
|
21518
|
+
/* @__PURE__ */ jsx16(Text15, { children: " " }),
|
|
21519
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: credentialsPurpose(tokensOnly) }),
|
|
21520
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Tip: save these under Settings \u2192 Configuration so they pre-fill here." })
|
|
21425
21521
|
] }),
|
|
21426
|
-
changed && !validating && !notice && /* @__PURE__ */
|
|
21427
|
-
/* @__PURE__ */
|
|
21428
|
-
/* @__PURE__ */
|
|
21522
|
+
changed && !validating && !notice && /* @__PURE__ */ jsxs15(Fragment3, { children: [
|
|
21523
|
+
/* @__PURE__ */ jsx16(Text15, { children: " " }),
|
|
21524
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Changed values are saved after they validate." })
|
|
21429
21525
|
] }),
|
|
21430
|
-
editing && /* @__PURE__ */
|
|
21431
|
-
/* @__PURE__ */
|
|
21432
|
-
/* @__PURE__ */
|
|
21526
|
+
editing && /* @__PURE__ */ jsxs15(Fragment3, { children: [
|
|
21527
|
+
/* @__PURE__ */ jsx16(Text15, { children: " " }),
|
|
21528
|
+
/* @__PURE__ */ jsx16(
|
|
21433
21529
|
ControlHints,
|
|
21434
21530
|
{
|
|
21435
21531
|
hints: [
|
|
@@ -21535,7 +21631,7 @@ function plural(count, noun) {
|
|
|
21535
21631
|
function compositionDone(progress) {
|
|
21536
21632
|
return progress.composition === "done" || progress.composition === "cache-hit";
|
|
21537
21633
|
}
|
|
21538
|
-
function progressRows(progress, agent) {
|
|
21634
|
+
function progressRows(progress, agent, rowMs = []) {
|
|
21539
21635
|
const { scan, composition, selection, existingEntities, tokens } = progress;
|
|
21540
21636
|
const scanned = scan?.scanned ?? 0;
|
|
21541
21637
|
const scanComplete = (scan?.total ?? 0) > 0;
|
|
@@ -21556,16 +21652,20 @@ function progressRows(progress, agent) {
|
|
|
21556
21652
|
if (existingEntities !== "idle") {
|
|
21557
21653
|
rows.push({
|
|
21558
21654
|
text: existingEntities === "running" ? "Fetching existing components and tokens..." : existingEntities === "complete" ? "Existing components and tokens ready" : "Existing entities unavailable; continuing without them",
|
|
21559
|
-
complete: existingEntities !== "running"
|
|
21655
|
+
complete: existingEntities !== "running",
|
|
21656
|
+
// The import carries on without them, so this is not shown as a success.
|
|
21657
|
+
...existingEntities === "failed" ? { state: "warning" } : {}
|
|
21560
21658
|
});
|
|
21561
21659
|
}
|
|
21562
21660
|
if (tokens !== "idle") {
|
|
21563
21661
|
rows.push({
|
|
21564
21662
|
text: tokens === "complete" ? "Token definitions ready" : tokens === "failed" ? "Token definition generation failed" : `Generating token definitions via ${agent}...`,
|
|
21565
|
-
complete: tokens === "complete"
|
|
21663
|
+
complete: tokens === "complete",
|
|
21664
|
+
// A failed job is not still running.
|
|
21665
|
+
...tokens === "failed" ? { state: "failed" } : {}
|
|
21566
21666
|
});
|
|
21567
21667
|
}
|
|
21568
|
-
return rows;
|
|
21668
|
+
return withTimes(rows, rowMs);
|
|
21569
21669
|
}
|
|
21570
21670
|
function noComponentsMessage(projectPath) {
|
|
21571
21671
|
return `No components found in ${projectPath}.
|
|
@@ -21596,18 +21696,19 @@ var init_logic9 = __esm({
|
|
|
21596
21696
|
"use strict";
|
|
21597
21697
|
init_src3();
|
|
21598
21698
|
init_debug_trail();
|
|
21699
|
+
init_logic4();
|
|
21599
21700
|
}
|
|
21600
21701
|
});
|
|
21601
21702
|
|
|
21602
21703
|
// packages/experience-design-system-cli/src/tui/import/steps/06-extraction/screen.tsx
|
|
21603
|
-
import { jsx as
|
|
21604
|
-
function ExtractionScreen({ progress, agent }) {
|
|
21605
|
-
return /* @__PURE__ */
|
|
21704
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
21705
|
+
function ExtractionScreen({ progress, agent, rowMs }) {
|
|
21706
|
+
return /* @__PURE__ */ jsx17(
|
|
21606
21707
|
RunningStep,
|
|
21607
21708
|
{
|
|
21608
21709
|
step: "extraction",
|
|
21609
21710
|
description: "Extracting context from your source files.",
|
|
21610
|
-
lines: progressRows(progress, agent)
|
|
21711
|
+
lines: progressRows(progress, agent, rowMs)
|
|
21611
21712
|
}
|
|
21612
21713
|
);
|
|
21613
21714
|
}
|
|
@@ -21684,8 +21785,8 @@ var init_load = __esm({
|
|
|
21684
21785
|
|
|
21685
21786
|
// packages/experience-design-system-cli/src/tui/import/steps/05-token-review/screen.tsx
|
|
21686
21787
|
import { useEffect as useEffect9, useMemo as useMemo2, useState as useState10 } from "react";
|
|
21687
|
-
import { Box as
|
|
21688
|
-
import { jsx as
|
|
21788
|
+
import { Box as Box16, Text as Text16, useInput as useInput12 } from "ink";
|
|
21789
|
+
import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
21689
21790
|
function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
|
|
21690
21791
|
const loaded = useMemo2(() => loadTokenRows(tokensPath), [tokensPath]);
|
|
21691
21792
|
const rows = loaded.ok ? loaded.rows : [];
|
|
@@ -21728,22 +21829,22 @@ function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
|
|
|
21728
21829
|
const typeWidth = Math.max(4, ...rows.map((row) => row.type.length)) + COLUMN_GAP;
|
|
21729
21830
|
const valueWidth = Math.max(10, innerWidth - pathWidth - typeWidth - 2);
|
|
21730
21831
|
const clip = (text, width) => text.length > width ? `${text.slice(0, Math.max(0, width - 1))}\u2026` : text.padEnd(width);
|
|
21731
|
-
return /* @__PURE__ */
|
|
21732
|
-
/* @__PURE__ */
|
|
21733
|
-
/* @__PURE__ */
|
|
21734
|
-
/* @__PURE__ */
|
|
21735
|
-
/* @__PURE__ */
|
|
21832
|
+
return /* @__PURE__ */ jsxs16(Box16, { flexDirection: "column", children: [
|
|
21833
|
+
/* @__PURE__ */ jsx18(StepHeader, { step: "review" }),
|
|
21834
|
+
/* @__PURE__ */ jsxs16(Box16, { flexDirection: "column", paddingX: 2, paddingBottom: 1, children: [
|
|
21835
|
+
/* @__PURE__ */ jsx18(Text16, { bold: true, children: "Review design tokens" }),
|
|
21836
|
+
/* @__PURE__ */ jsx18(Box16, { marginTop: 1, children: loaded.ok ? /* @__PURE__ */ jsxs16(Text16, { color: PALETTE.muted, children: [
|
|
21736
21837
|
rows.length,
|
|
21737
21838
|
" ",
|
|
21738
21839
|
rows.length === 1 ? "token" : "tokens",
|
|
21739
21840
|
" generated from ",
|
|
21740
21841
|
tokensPath
|
|
21741
|
-
] }) : /* @__PURE__ */
|
|
21842
|
+
] }) : /* @__PURE__ */ jsxs16(Text16, { color: PALETTE.error, children: [
|
|
21742
21843
|
"Could not read the generated tokens: ",
|
|
21743
21844
|
loaded.message
|
|
21744
21845
|
] }) }),
|
|
21745
|
-
/* @__PURE__ */
|
|
21746
|
-
/* @__PURE__ */
|
|
21846
|
+
/* @__PURE__ */ jsxs16(Box16, { flexDirection: "column", marginTop: 1, children: [
|
|
21847
|
+
/* @__PURE__ */ jsxs16(Text16, { bold: true, color: PALETTE.muted, wrap: "truncate-end", children: [
|
|
21747
21848
|
" ",
|
|
21748
21849
|
clip("Token name", pathWidth),
|
|
21749
21850
|
" ",
|
|
@@ -21753,7 +21854,7 @@ function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
|
|
|
21753
21854
|
] }),
|
|
21754
21855
|
rows.slice(start, end).map((row, offset) => {
|
|
21755
21856
|
const active = start + offset === selected;
|
|
21756
|
-
return /* @__PURE__ */
|
|
21857
|
+
return /* @__PURE__ */ jsxs16(Text16, { color: active ? PALETTE.accent : void 0, bold: active, wrap: "truncate-end", children: [
|
|
21757
21858
|
active ? "\u203A " : " ",
|
|
21758
21859
|
clip(row.path, pathWidth),
|
|
21759
21860
|
" ",
|
|
@@ -21763,14 +21864,14 @@ function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
|
|
|
21763
21864
|
] }, row.path);
|
|
21764
21865
|
})
|
|
21765
21866
|
] }),
|
|
21766
|
-
rows.length > VISIBLE_ROWS && /* @__PURE__ */
|
|
21867
|
+
rows.length > VISIBLE_ROWS && /* @__PURE__ */ jsx18(Box16, { marginTop: 1, children: /* @__PURE__ */ jsxs16(Text16, { color: PALETTE.muted, children: [
|
|
21767
21868
|
start + 1,
|
|
21768
21869
|
"-",
|
|
21769
21870
|
end,
|
|
21770
21871
|
" of ",
|
|
21771
21872
|
rows.length
|
|
21772
21873
|
] }) }),
|
|
21773
|
-
/* @__PURE__ */
|
|
21874
|
+
/* @__PURE__ */ jsx18(Box16, { marginTop: 1, children: /* @__PURE__ */ jsx18(ControlHints, { hints: TOKEN_REVIEW_CONTROLS }) })
|
|
21774
21875
|
] })
|
|
21775
21876
|
] });
|
|
21776
21877
|
}
|
|
@@ -22092,9 +22193,12 @@ function useExtraction(input) {
|
|
|
22092
22193
|
progress: initialProgress({
|
|
22093
22194
|
hasCredentials: input.credentials !== null,
|
|
22094
22195
|
hasRawTokens: input.rawTokensPath !== ""
|
|
22095
|
-
})
|
|
22196
|
+
}),
|
|
22197
|
+
rowMs: []
|
|
22096
22198
|
});
|
|
22097
|
-
let
|
|
22199
|
+
let lastProgress2;
|
|
22200
|
+
const startedAt = Date.now();
|
|
22201
|
+
let rowMs = [];
|
|
22098
22202
|
startDebugRun({
|
|
22099
22203
|
flow: "import/extraction",
|
|
22100
22204
|
step: "06-extraction",
|
|
@@ -22102,12 +22206,13 @@ function useExtraction(input) {
|
|
|
22102
22206
|
inputs: extractionLogInputs(input)
|
|
22103
22207
|
});
|
|
22104
22208
|
void runExtraction(input, (progress) => {
|
|
22105
|
-
|
|
22106
|
-
|
|
22209
|
+
lastProgress2 = progress;
|
|
22210
|
+
rowMs = trackFinished(rowMs, progressRows(progress, input.agent), Date.now() - startedAt);
|
|
22211
|
+
if (current.current === input) setState({ status: "running", progress, rowMs });
|
|
22107
22212
|
}).then((result) => {
|
|
22108
22213
|
if (current.current !== input) return;
|
|
22109
22214
|
void finishDebugRun({
|
|
22110
|
-
...extractionLogOutputs(result,
|
|
22215
|
+
...extractionLogOutputs(result, lastProgress2, input.credentials?.cmaToken ?? ""),
|
|
22111
22216
|
exitMethod: result.ok ? "saved" : "discarded"
|
|
22112
22217
|
});
|
|
22113
22218
|
setState({ status: "done", result });
|
|
@@ -22122,6 +22227,7 @@ var init_use_extraction = __esm({
|
|
|
22122
22227
|
"packages/experience-design-system-cli/src/tui/import/steps/06-extraction/use-extraction.ts"() {
|
|
22123
22228
|
"use strict";
|
|
22124
22229
|
init_debug_store();
|
|
22230
|
+
init_logic4();
|
|
22125
22231
|
init_logic9();
|
|
22126
22232
|
init_run();
|
|
22127
22233
|
}
|
|
@@ -22227,8 +22333,8 @@ var init_log = __esm({
|
|
|
22227
22333
|
});
|
|
22228
22334
|
|
|
22229
22335
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/windowed-panel.tsx
|
|
22230
|
-
import { Box as
|
|
22231
|
-
import { jsx as
|
|
22336
|
+
import { Box as Box17, Text as Text17 } from "ink";
|
|
22337
|
+
import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
22232
22338
|
function terminalPanelHeight(rows, reservedRows = 4) {
|
|
22233
22339
|
return Math.max(MIN_TERMINAL_PANEL_HEIGHT, rows - reservedRows);
|
|
22234
22340
|
}
|
|
@@ -22243,8 +22349,8 @@ function FixedPanel({
|
|
|
22243
22349
|
clipOverflow = true,
|
|
22244
22350
|
children
|
|
22245
22351
|
}) {
|
|
22246
|
-
return /* @__PURE__ */
|
|
22247
|
-
|
|
22352
|
+
return /* @__PURE__ */ jsx19(
|
|
22353
|
+
Box17,
|
|
22248
22354
|
{
|
|
22249
22355
|
flexDirection: "column",
|
|
22250
22356
|
width,
|
|
@@ -22260,7 +22366,7 @@ function FixedPanel({
|
|
|
22260
22366
|
);
|
|
22261
22367
|
}
|
|
22262
22368
|
function WindowedPanel({ width, height, title, focused, children }) {
|
|
22263
|
-
return /* @__PURE__ */
|
|
22369
|
+
return /* @__PURE__ */ jsxs17(
|
|
22264
22370
|
FixedPanel,
|
|
22265
22371
|
{
|
|
22266
22372
|
width,
|
|
@@ -22269,7 +22375,7 @@ function WindowedPanel({ width, height, title, focused, children }) {
|
|
|
22269
22375
|
...height === void 0 ? {} : { height },
|
|
22270
22376
|
focused,
|
|
22271
22377
|
children: [
|
|
22272
|
-
title && /* @__PURE__ */
|
|
22378
|
+
title && /* @__PURE__ */ jsx19(WindowedPanelHeader, { title, width, focused }),
|
|
22273
22379
|
children
|
|
22274
22380
|
]
|
|
22275
22381
|
}
|
|
@@ -22280,9 +22386,9 @@ function WindowedPanelHeader({
|
|
|
22280
22386
|
width,
|
|
22281
22387
|
focused
|
|
22282
22388
|
}) {
|
|
22283
|
-
return /* @__PURE__ */
|
|
22284
|
-
/* @__PURE__ */
|
|
22285
|
-
/* @__PURE__ */
|
|
22389
|
+
return /* @__PURE__ */ jsxs17(Box17, { flexDirection: "column", children: [
|
|
22390
|
+
/* @__PURE__ */ jsx19(Text17, { bold: true, color: PALETTE.accent, inverse: focused, children: title }),
|
|
22391
|
+
/* @__PURE__ */ jsx19(Text17, { color: PALETTE.muted, children: "\u2500".repeat(Math.max(0, width - 2)) })
|
|
22286
22392
|
] });
|
|
22287
22393
|
}
|
|
22288
22394
|
function formatWindowIndicator(direction, count) {
|
|
@@ -22291,10 +22397,10 @@ function formatWindowIndicator(direction, count) {
|
|
|
22291
22397
|
}
|
|
22292
22398
|
function WindowFooter({ above, below }) {
|
|
22293
22399
|
const parts = [above > 0 ? `\u2191 ${above}` : "", below > 0 ? `\u2193 ${below}` : ""].filter(Boolean);
|
|
22294
|
-
return /* @__PURE__ */
|
|
22400
|
+
return /* @__PURE__ */ jsx19(Text17, { color: PALETTE.muted, children: parts.length === 0 ? " " : `${parts.join(" \xB7 ")} more` });
|
|
22295
22401
|
}
|
|
22296
22402
|
function WindowIndicator({ direction, count }) {
|
|
22297
|
-
return /* @__PURE__ */
|
|
22403
|
+
return /* @__PURE__ */ jsx19(Text17, { color: PALETTE.muted, children: formatWindowIndicator(direction, count) });
|
|
22298
22404
|
}
|
|
22299
22405
|
var MIN_TERMINAL_PANEL_HEIGHT;
|
|
22300
22406
|
var init_windowed_panel = __esm({
|
|
@@ -22306,26 +22412,26 @@ var init_windowed_panel = __esm({
|
|
|
22306
22412
|
});
|
|
22307
22413
|
|
|
22308
22414
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/tokens-column.tsx
|
|
22309
|
-
import { Box as
|
|
22415
|
+
import { Box as Box18, Text as Text18 } from "ink";
|
|
22310
22416
|
import figures2 from "figures";
|
|
22311
|
-
import { jsx as
|
|
22417
|
+
import { jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
22312
22418
|
function TokensColumn(props) {
|
|
22313
22419
|
const { title, width, height, tokens, cursor, focused, visibleCount } = props;
|
|
22314
22420
|
const nameWidth = Math.min(longestEntries(tokens).path + 2, Math.floor((width - 8) / 2));
|
|
22315
22421
|
const window = computeColumnWindow(tokens.length, cursor, Math.max(1, visibleCount));
|
|
22316
|
-
return /* @__PURE__ */
|
|
22317
|
-
/* @__PURE__ */
|
|
22422
|
+
return /* @__PURE__ */ jsxs18(WindowedPanel, { width, height, title, focused, children: [
|
|
22423
|
+
/* @__PURE__ */ jsx20(WindowIndicator, { direction: "up", count: window.above }),
|
|
22318
22424
|
tokens.slice(window.start, window.end).map((token, offset) => {
|
|
22319
22425
|
const isCursor = focused && window.start + offset === cursor;
|
|
22320
|
-
return /* @__PURE__ */
|
|
22321
|
-
/* @__PURE__ */
|
|
22322
|
-
/* @__PURE__ */
|
|
22426
|
+
return /* @__PURE__ */ jsxs18(Box18, { children: [
|
|
22427
|
+
/* @__PURE__ */ jsx20(Text18, { color: PALETTE.accent, bold: true, children: isCursor ? figures2.pointer : " " }),
|
|
22428
|
+
/* @__PURE__ */ jsxs18(Text18, { wrap: "truncate-end", color: isCursor ? PALETTE.accent : void 0, bold: isCursor, children: [
|
|
22323
22429
|
` ${token.path.padEnd(nameWidth)}`,
|
|
22324
|
-
/* @__PURE__ */
|
|
22430
|
+
/* @__PURE__ */ jsx20(Text18, { color: PALETTE.muted, children: token.value })
|
|
22325
22431
|
] })
|
|
22326
22432
|
] }, token.path);
|
|
22327
22433
|
}),
|
|
22328
|
-
/* @__PURE__ */
|
|
22434
|
+
/* @__PURE__ */ jsx20(WindowIndicator, { direction: "down", count: window.below })
|
|
22329
22435
|
] });
|
|
22330
22436
|
}
|
|
22331
22437
|
var init_tokens_column = __esm({
|
|
@@ -22338,9 +22444,9 @@ var init_tokens_column = __esm({
|
|
|
22338
22444
|
});
|
|
22339
22445
|
|
|
22340
22446
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/cycles-panel.tsx
|
|
22341
|
-
import { Box as
|
|
22447
|
+
import { Box as Box19, Text as Text19 } from "ink";
|
|
22342
22448
|
import figures3 from "figures";
|
|
22343
|
-
import { jsx as
|
|
22449
|
+
import { jsx as jsx21, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
22344
22450
|
function cycleLabel(cycle, index) {
|
|
22345
22451
|
const parts = [];
|
|
22346
22452
|
for (let i = 0; i < cycle.edges.length; i++) {
|
|
@@ -22351,17 +22457,17 @@ function cycleLabel(cycle, index) {
|
|
|
22351
22457
|
return `Cycle ${index + 1}: ${parts.join(" \u2192 ")}`;
|
|
22352
22458
|
}
|
|
22353
22459
|
function CyclesPanel({ cycles, cursor }) {
|
|
22354
|
-
return /* @__PURE__ */
|
|
22355
|
-
/* @__PURE__ */
|
|
22356
|
-
/* @__PURE__ */
|
|
22460
|
+
return /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.warning, paddingX: 1, marginTop: 1, children: [
|
|
22461
|
+
/* @__PURE__ */ jsx21(Text19, { bold: true, color: PALETTE.warning, children: `Cycles detected (${cycles.length}):` }),
|
|
22462
|
+
/* @__PURE__ */ jsx21(Text19, { children: " " }),
|
|
22357
22463
|
cycles.map((cycle, i) => {
|
|
22358
22464
|
const isCursor = i === cursor;
|
|
22359
|
-
return /* @__PURE__ */
|
|
22360
|
-
isCursor ? /* @__PURE__ */
|
|
22361
|
-
/* @__PURE__ */
|
|
22465
|
+
return /* @__PURE__ */ jsxs19(Text19, { children: [
|
|
22466
|
+
isCursor ? /* @__PURE__ */ jsx21(Text19, { color: PALETTE.accent, bold: true, children: figures3.pointer }) : /* @__PURE__ */ jsx21(Text19, { children: " " }),
|
|
22467
|
+
/* @__PURE__ */ jsx21(Text19, { color: PALETTE.warning, inverse: isCursor, children: " " + cycleLabel(cycle, i) })
|
|
22362
22468
|
] }, i);
|
|
22363
22469
|
}),
|
|
22364
|
-
/* @__PURE__ */
|
|
22470
|
+
/* @__PURE__ */ jsx21(Text19, { children: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [c/Esc] close" })
|
|
22365
22471
|
] });
|
|
22366
22472
|
}
|
|
22367
22473
|
var init_cycles_panel = __esm({
|
|
@@ -22372,14 +22478,14 @@ var init_cycles_panel = __esm({
|
|
|
22372
22478
|
});
|
|
22373
22479
|
|
|
22374
22480
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/reject-prompt.tsx
|
|
22375
|
-
import { Box as
|
|
22376
|
-
import { jsx as
|
|
22481
|
+
import { Box as Box20, Text as Text20 } from "ink";
|
|
22482
|
+
import { jsx as jsx22, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
22377
22483
|
function RejectPrompt({ pending }) {
|
|
22378
|
-
return /* @__PURE__ */
|
|
22379
|
-
/* @__PURE__ */
|
|
22380
|
-
pending.ancestors.length > 0 && /* @__PURE__ */
|
|
22381
|
-
pending.descendants.length > 0 && /* @__PURE__ */
|
|
22382
|
-
/* @__PURE__ */
|
|
22484
|
+
return /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.warning, paddingX: 1, marginTop: 1, children: [
|
|
22485
|
+
/* @__PURE__ */ jsx22(Text20, { bold: true, color: PALETTE.warning, children: `Rejecting ${pending.target} will:` }),
|
|
22486
|
+
pending.ancestors.length > 0 && /* @__PURE__ */ jsx22(Text20, { children: `- Reject ancestors: ${pending.ancestors.join(", ")}` }),
|
|
22487
|
+
pending.descendants.length > 0 && /* @__PURE__ */ jsx22(Text20, { children: `- Deselect descendants: ${pending.descendants.join(", ")}` }),
|
|
22488
|
+
/* @__PURE__ */ jsx22(Text20, { children: "[y] confirm \xB7 [n]/[Esc] cancel" })
|
|
22383
22489
|
] });
|
|
22384
22490
|
}
|
|
22385
22491
|
var init_reject_prompt = __esm({
|
|
@@ -22390,9 +22496,9 @@ var init_reject_prompt = __esm({
|
|
|
22390
22496
|
});
|
|
22391
22497
|
|
|
22392
22498
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CompactControlBar.tsx
|
|
22393
|
-
import { jsx as
|
|
22499
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
22394
22500
|
function CompactControlBar({ hasGroupRoots, searchActive }) {
|
|
22395
|
-
return /* @__PURE__ */
|
|
22501
|
+
return /* @__PURE__ */ jsx23(
|
|
22396
22502
|
ControlHints,
|
|
22397
22503
|
{
|
|
22398
22504
|
hints: [
|
|
@@ -22415,8 +22521,8 @@ var init_CompactControlBar = __esm({
|
|
|
22415
22521
|
});
|
|
22416
22522
|
|
|
22417
22523
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CounterStrip.tsx
|
|
22418
|
-
import { Box as
|
|
22419
|
-
import { jsx as
|
|
22524
|
+
import { Box as Box21, Text as Text21 } from "ink";
|
|
22525
|
+
import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
22420
22526
|
function CounterStrip(props) {
|
|
22421
22527
|
const { counters, totalWidth } = props;
|
|
22422
22528
|
const condensed = totalWidth < 60;
|
|
@@ -22425,31 +22531,31 @@ function CounterStrip(props) {
|
|
|
22425
22531
|
const labelRej = condensed ? "Rej" : "Rejected";
|
|
22426
22532
|
const labelUnd = condensed ? "Und" : "Undecided";
|
|
22427
22533
|
const sep = condensed ? " | " : " ";
|
|
22428
|
-
return /* @__PURE__ */
|
|
22429
|
-
/* @__PURE__ */
|
|
22534
|
+
return /* @__PURE__ */ jsx24(Box21, { children: /* @__PURE__ */ jsxs21(Text21, { children: [
|
|
22535
|
+
/* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
|
|
22430
22536
|
labelGrp,
|
|
22431
22537
|
" "
|
|
22432
22538
|
] }),
|
|
22433
|
-
/* @__PURE__ */
|
|
22434
|
-
/* @__PURE__ */
|
|
22435
|
-
/* @__PURE__ */
|
|
22539
|
+
/* @__PURE__ */ jsx24(Text21, { bold: true, children: counters.groups }),
|
|
22540
|
+
/* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep }),
|
|
22541
|
+
/* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
|
|
22436
22542
|
labelAcc,
|
|
22437
22543
|
" "
|
|
22438
22544
|
] }),
|
|
22439
|
-
/* @__PURE__ */
|
|
22440
|
-
/* @__PURE__ */
|
|
22441
|
-
/* @__PURE__ */
|
|
22545
|
+
/* @__PURE__ */ jsx24(Text21, { bold: true, children: `${counters.accepted}/${counters.total}` }),
|
|
22546
|
+
/* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep }),
|
|
22547
|
+
/* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
|
|
22442
22548
|
labelRej,
|
|
22443
22549
|
" "
|
|
22444
22550
|
] }),
|
|
22445
|
-
/* @__PURE__ */
|
|
22446
|
-
/* @__PURE__ */
|
|
22447
|
-
/* @__PURE__ */
|
|
22551
|
+
/* @__PURE__ */ jsx24(Text21, { bold: true, children: counters.rejected }),
|
|
22552
|
+
/* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep }),
|
|
22553
|
+
/* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
|
|
22448
22554
|
labelUnd,
|
|
22449
22555
|
" "
|
|
22450
22556
|
] }),
|
|
22451
|
-
/* @__PURE__ */
|
|
22452
|
-
/* @__PURE__ */
|
|
22557
|
+
/* @__PURE__ */ jsx24(Text21, { bold: true, children: counters.undecided }),
|
|
22558
|
+
/* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep })
|
|
22453
22559
|
] }) });
|
|
22454
22560
|
}
|
|
22455
22561
|
var init_CounterStrip = __esm({
|
|
@@ -22461,8 +22567,8 @@ var init_CounterStrip = __esm({
|
|
|
22461
22567
|
|
|
22462
22568
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GotoBanner.tsx
|
|
22463
22569
|
import figures4 from "figures";
|
|
22464
|
-
import { Box as
|
|
22465
|
-
import { jsx as
|
|
22570
|
+
import { Box as Box22, Text as Text22 } from "ink";
|
|
22571
|
+
import { jsx as jsx25, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
22466
22572
|
function windowStart(rowCount, highlightIndex, maxRows) {
|
|
22467
22573
|
if (rowCount <= maxRows) return 0;
|
|
22468
22574
|
const maxStart = rowCount - maxRows;
|
|
@@ -22472,9 +22578,9 @@ function windowStart(rowCount, highlightIndex, maxRows) {
|
|
|
22472
22578
|
return start;
|
|
22473
22579
|
}
|
|
22474
22580
|
function defaultRenderRow(row, index, isCursor) {
|
|
22475
|
-
return /* @__PURE__ */
|
|
22476
|
-
isCursor ? /* @__PURE__ */
|
|
22477
|
-
/* @__PURE__ */
|
|
22581
|
+
return /* @__PURE__ */ jsxs22(Text22, { children: [
|
|
22582
|
+
isCursor ? /* @__PURE__ */ jsx25(Text22, { color: PALETTE.accent, bold: true, children: figures4.pointer }) : /* @__PURE__ */ jsx25(Text22, { children: " " }),
|
|
22583
|
+
/* @__PURE__ */ jsx25(Text22, { inverse: isCursor, children: " " + row.label })
|
|
22478
22584
|
] }, index);
|
|
22479
22585
|
}
|
|
22480
22586
|
function GotoBanner({
|
|
@@ -22493,8 +22599,8 @@ function GotoBanner({
|
|
|
22493
22599
|
const visible = rows.slice(start, end);
|
|
22494
22600
|
const moreAbove = start;
|
|
22495
22601
|
const moreBelow = rows.length - end;
|
|
22496
|
-
return /* @__PURE__ */
|
|
22497
|
-
|
|
22602
|
+
return /* @__PURE__ */ jsxs22(
|
|
22603
|
+
Box22,
|
|
22498
22604
|
{
|
|
22499
22605
|
flexDirection: "column",
|
|
22500
22606
|
borderStyle: "single",
|
|
@@ -22505,14 +22611,14 @@ function GotoBanner({
|
|
|
22505
22611
|
width,
|
|
22506
22612
|
flexShrink: 0,
|
|
22507
22613
|
children: [
|
|
22508
|
-
/* @__PURE__ */
|
|
22509
|
-
moreAbove > 0 && /* @__PURE__ */
|
|
22614
|
+
/* @__PURE__ */ jsx25(Text22, { bold: true, children: title }),
|
|
22615
|
+
moreAbove > 0 && /* @__PURE__ */ jsx25(Text22, { color: PALETTE.muted, children: ` \u25B2 ${moreAbove} more` }),
|
|
22510
22616
|
visible.map((row, vi) => {
|
|
22511
22617
|
const i = start + vi;
|
|
22512
22618
|
return renderRow(row, i, i === highlightIndex);
|
|
22513
22619
|
}),
|
|
22514
|
-
moreBelow > 0 && /* @__PURE__ */
|
|
22515
|
-
footerHint !== void 0 && /* @__PURE__ */
|
|
22620
|
+
moreBelow > 0 && /* @__PURE__ */ jsx25(Text22, { color: PALETTE.muted, children: ` \u25BC ${moreBelow} more` }),
|
|
22621
|
+
footerHint !== void 0 && /* @__PURE__ */ jsx25(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text22, { color: PALETTE.muted, children: footerHint }) })
|
|
22516
22622
|
]
|
|
22517
22623
|
}
|
|
22518
22624
|
);
|
|
@@ -22875,8 +22981,8 @@ var init_composite_closure = __esm({
|
|
|
22875
22981
|
});
|
|
22876
22982
|
|
|
22877
22983
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/badge.tsx
|
|
22878
|
-
import { Text as
|
|
22879
|
-
import { jsx as
|
|
22984
|
+
import { Text as Text23 } from "ink";
|
|
22985
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
22880
22986
|
function previewBadge(annotation) {
|
|
22881
22987
|
switch (annotation) {
|
|
22882
22988
|
case "new":
|
|
@@ -22895,7 +23001,7 @@ function PreviewBadge({
|
|
|
22895
23001
|
badge,
|
|
22896
23002
|
highlighted = false
|
|
22897
23003
|
}) {
|
|
22898
|
-
return badge ? /* @__PURE__ */
|
|
23004
|
+
return badge ? /* @__PURE__ */ jsx26(Text23, { color: !highlighted && badge.dim ? PALETTE.muted : badge.color, bold: badge.bold, children: badge.char }) : /* @__PURE__ */ jsx26(Text23, { children: " " });
|
|
22899
23005
|
}
|
|
22900
23006
|
var init_badge = __esm({
|
|
22901
23007
|
"packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/badge.tsx"() {
|
|
@@ -22906,8 +23012,8 @@ var init_badge = __esm({
|
|
|
22906
23012
|
|
|
22907
23013
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GroupedSidebar.tsx
|
|
22908
23014
|
import figures5 from "figures";
|
|
22909
|
-
import { Box as
|
|
22910
|
-
import { jsx as
|
|
23015
|
+
import { Box as Box23, Text as Text24 } from "ink";
|
|
23016
|
+
import { jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
22911
23017
|
function hasDirectChild(node) {
|
|
22912
23018
|
return node.slots.some((slot) => (slot.allowedComponents ?? []).some((target) => target !== node.name));
|
|
22913
23019
|
}
|
|
@@ -23326,8 +23432,8 @@ function GroupedSidebar(props) {
|
|
|
23326
23432
|
const start = windowed ? Math.max(0, scrollOffset ?? 0) : 0;
|
|
23327
23433
|
const end = windowed ? start + (visibleCount ?? allRows.length) + 1 : allRows.length;
|
|
23328
23434
|
const rows = windowed ? allRows.slice(start, end) : allRows;
|
|
23329
|
-
return /* @__PURE__ */
|
|
23330
|
-
allRows.length === 0 && emptyMessage !== void 0 && /* @__PURE__ */
|
|
23435
|
+
return /* @__PURE__ */ jsxs23(WindowedPanel, { width, height: props.height, title, focused, children: [
|
|
23436
|
+
allRows.length === 0 && emptyMessage !== void 0 && /* @__PURE__ */ jsxs23(Text24, { color: PALETTE.warning, children: [
|
|
23331
23437
|
" ",
|
|
23332
23438
|
emptyMessage
|
|
23333
23439
|
] }),
|
|
@@ -23357,13 +23463,13 @@ function GroupedSidebar(props) {
|
|
|
23357
23463
|
isOwn: rs?.isOwn ?? false,
|
|
23358
23464
|
isCursor
|
|
23359
23465
|
});
|
|
23360
|
-
return /* @__PURE__ */
|
|
23361
|
-
isCursor ? /* @__PURE__ */
|
|
23362
|
-
/* @__PURE__ */
|
|
23363
|
-
selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */
|
|
23364
|
-
aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */
|
|
23365
|
-
/* @__PURE__ */
|
|
23366
|
-
|
|
23466
|
+
return /* @__PURE__ */ jsxs23(Box23, { children: [
|
|
23467
|
+
isCursor ? /* @__PURE__ */ jsx27(Text24, { color: PALETTE.accent, bold: true, children: figures5.pointer }) : /* @__PURE__ */ jsx27(Text24, { children: " " }),
|
|
23468
|
+
/* @__PURE__ */ jsx27(PreviewBadge, { badge, highlighted: isSelected }),
|
|
23469
|
+
selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */ jsx27(Text24, { color: !isSelected && selDim ? PALETTE.muted : selColor, bold: selBold, children: " " + selGlyph }) : /* @__PURE__ */ jsx27(Text24, { children: " " })),
|
|
23470
|
+
aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */ jsx27(Text24, { color: PALETTE.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx27(Text24, { children: " " })),
|
|
23471
|
+
/* @__PURE__ */ jsxs23(
|
|
23472
|
+
Text24,
|
|
23367
23473
|
{
|
|
23368
23474
|
color: isSelected ? PALETTE.accent : labelStyle.dim ? PALETTE.muted : labelStyle.color,
|
|
23369
23475
|
bold: isSelected || labelStyle.bold,
|
|
@@ -23376,10 +23482,10 @@ function GroupedSidebar(props) {
|
|
|
23376
23482
|
]
|
|
23377
23483
|
}
|
|
23378
23484
|
),
|
|
23379
|
-
inheritanceStyle.glyph && /* @__PURE__ */
|
|
23485
|
+
inheritanceStyle.glyph && /* @__PURE__ */ jsx27(Text24, { color: inheritanceStyle.dim ? PALETTE.muted : inheritanceStyle.color, bold: inheritanceStyle.bold, children: " " + inheritanceStyle.glyph })
|
|
23380
23486
|
] }, row.key);
|
|
23381
23487
|
}),
|
|
23382
|
-
windowed && /* @__PURE__ */
|
|
23488
|
+
windowed && /* @__PURE__ */ jsx27(WindowFooter, { above: start, below: Math.max(0, allRows.length - end) })
|
|
23383
23489
|
] });
|
|
23384
23490
|
}
|
|
23385
23491
|
var GLYPH_EXPAND_COLLAPSED, GLYPH_EXPAND_EXPANDED, GLYPH_TREE_MID, GLYPH_TREE_LAST, GLYPH_WARN, GLYPH_ERROR;
|
|
@@ -23508,8 +23614,8 @@ var init_use_terminal_size = __esm({
|
|
|
23508
23614
|
|
|
23509
23615
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/HelpOverlay.tsx
|
|
23510
23616
|
import React11 from "react";
|
|
23511
|
-
import { Box as
|
|
23512
|
-
import { Fragment as
|
|
23617
|
+
import { Box as Box24, Text as Text25 } from "ink";
|
|
23618
|
+
import { Fragment as Fragment4, jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
23513
23619
|
function HelpOverlay(props) {
|
|
23514
23620
|
const { onClose } = props;
|
|
23515
23621
|
const { columns: terminalColumns, rows: terminalRows } = useTerminalSize();
|
|
@@ -23520,8 +23626,8 @@ function HelpOverlay(props) {
|
|
|
23520
23626
|
if (input === "h" || key.escape) onClose();
|
|
23521
23627
|
}, props.handleInput !== false);
|
|
23522
23628
|
if (props.sections) {
|
|
23523
|
-
return /* @__PURE__ */
|
|
23524
|
-
|
|
23629
|
+
return /* @__PURE__ */ jsxs24(
|
|
23630
|
+
Box24,
|
|
23525
23631
|
{
|
|
23526
23632
|
flexDirection: "column",
|
|
23527
23633
|
borderStyle: "round",
|
|
@@ -23530,19 +23636,19 @@ function HelpOverlay(props) {
|
|
|
23530
23636
|
height: panelHeight,
|
|
23531
23637
|
overflowY: "hidden",
|
|
23532
23638
|
children: [
|
|
23533
|
-
/* @__PURE__ */
|
|
23534
|
-
props.sections.map((section) => /* @__PURE__ */
|
|
23535
|
-
/* @__PURE__ */
|
|
23536
|
-
/* @__PURE__ */
|
|
23537
|
-
section.entries.map((entry) => /* @__PURE__ */
|
|
23639
|
+
/* @__PURE__ */ jsx28(Text25, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
|
|
23640
|
+
props.sections.map((section) => /* @__PURE__ */ jsxs24(React11.Fragment, { children: [
|
|
23641
|
+
/* @__PURE__ */ jsx28(Text25, { children: " " }),
|
|
23642
|
+
/* @__PURE__ */ jsx28(Text25, { bold: true, children: section.title }),
|
|
23643
|
+
section.entries.map((entry) => /* @__PURE__ */ jsx28(Text25, { children: entry.keys ? " " + entry.keys.padEnd(16) + " " + entry.label : " " + entry.label }, entry.keys + entry.label))
|
|
23538
23644
|
] }, section.title))
|
|
23539
23645
|
]
|
|
23540
23646
|
}
|
|
23541
23647
|
);
|
|
23542
23648
|
}
|
|
23543
23649
|
const mode = props.mode;
|
|
23544
|
-
return /* @__PURE__ */
|
|
23545
|
-
|
|
23650
|
+
return /* @__PURE__ */ jsxs24(
|
|
23651
|
+
Box24,
|
|
23546
23652
|
{
|
|
23547
23653
|
flexDirection: "column",
|
|
23548
23654
|
borderStyle: "round",
|
|
@@ -23551,31 +23657,31 @@ function HelpOverlay(props) {
|
|
|
23551
23657
|
height: panelHeight,
|
|
23552
23658
|
overflowY: "hidden",
|
|
23553
23659
|
children: [
|
|
23554
|
-
/* @__PURE__ */
|
|
23555
|
-
/* @__PURE__ */
|
|
23556
|
-
/* @__PURE__ */
|
|
23557
|
-
/* @__PURE__ */
|
|
23558
|
-
/* @__PURE__ */
|
|
23559
|
-
/* @__PURE__ */
|
|
23560
|
-
/* @__PURE__ */
|
|
23561
|
-
mode === "review" && /* @__PURE__ */
|
|
23562
|
-
/* @__PURE__ */
|
|
23563
|
-
/* @__PURE__ */
|
|
23564
|
-
/* @__PURE__ */
|
|
23565
|
-
/* @__PURE__ */
|
|
23566
|
-
/* @__PURE__ */
|
|
23567
|
-
/* @__PURE__ */
|
|
23568
|
-
/* @__PURE__ */
|
|
23569
|
-
/* @__PURE__ */
|
|
23570
|
-
/* @__PURE__ */
|
|
23571
|
-
/* @__PURE__ */
|
|
23572
|
-
/* @__PURE__ */
|
|
23573
|
-
/* @__PURE__ */
|
|
23574
|
-
/* @__PURE__ */
|
|
23660
|
+
/* @__PURE__ */ jsx28(Text25, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
|
|
23661
|
+
/* @__PURE__ */ jsx28(Text25, { children: " " }),
|
|
23662
|
+
/* @__PURE__ */ jsx28(Text25, { bold: true, children: "Navigation" }),
|
|
23663
|
+
/* @__PURE__ */ jsx28(Text25, { children: " \u2191 / k / PgUp Scroll up" }),
|
|
23664
|
+
/* @__PURE__ */ jsx28(Text25, { children: " \u2193 / j / PgDn Scroll down" }),
|
|
23665
|
+
/* @__PURE__ */ jsx28(Text25, { children: " g / Home Jump to top" }),
|
|
23666
|
+
/* @__PURE__ */ jsx28(Text25, { children: " G / End Jump to bottom" }),
|
|
23667
|
+
mode === "review" && /* @__PURE__ */ jsxs24(Fragment4, { children: [
|
|
23668
|
+
/* @__PURE__ */ jsx28(Text25, { children: " " }),
|
|
23669
|
+
/* @__PURE__ */ jsx28(Text25, { bold: true, children: "[Review mode only]" }),
|
|
23670
|
+
/* @__PURE__ */ jsx28(Text25, { children: " Tab Toggle sidebar/detail" }),
|
|
23671
|
+
/* @__PURE__ */ jsx28(Text25, { children: " a Accept component" }),
|
|
23672
|
+
/* @__PURE__ */ jsx28(Text25, { children: " r Reject component" }),
|
|
23673
|
+
/* @__PURE__ */ jsx28(Text25, { children: " e Edit proposal" }),
|
|
23674
|
+
/* @__PURE__ */ jsx28(Text25, { children: " s Toggle source code" }),
|
|
23675
|
+
/* @__PURE__ */ jsx28(Text25, { children: " A Approve all" }),
|
|
23676
|
+
/* @__PURE__ */ jsx28(Text25, { children: " F Open finalize dialog" }),
|
|
23677
|
+
/* @__PURE__ */ jsx28(Text25, { children: " Ctrl+S Save draft" }),
|
|
23678
|
+
/* @__PURE__ */ jsx28(Text25, { children: " Ctrl+Z Undo" }),
|
|
23679
|
+
/* @__PURE__ */ jsx28(Text25, { children: " Ctrl+Y Redo" }),
|
|
23680
|
+
/* @__PURE__ */ jsx28(Text25, { children: " Esc Exit edit / close" })
|
|
23575
23681
|
] }),
|
|
23576
|
-
/* @__PURE__ */
|
|
23577
|
-
/* @__PURE__ */
|
|
23578
|
-
/* @__PURE__ */
|
|
23682
|
+
/* @__PURE__ */ jsx28(Text25, { children: " " }),
|
|
23683
|
+
/* @__PURE__ */ jsx28(Text25, { children: " h Close help" }),
|
|
23684
|
+
/* @__PURE__ */ jsx28(Text25, { children: " q Quit" })
|
|
23579
23685
|
]
|
|
23580
23686
|
}
|
|
23581
23687
|
);
|
|
@@ -23655,8 +23761,8 @@ var init_sidebar_input = __esm({
|
|
|
23655
23761
|
});
|
|
23656
23762
|
|
|
23657
23763
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/SearchMatchSummary.tsx
|
|
23658
|
-
import { Box as
|
|
23659
|
-
import { Fragment as
|
|
23764
|
+
import { Box as Box25, Text as Text26 } from "ink";
|
|
23765
|
+
import { Fragment as Fragment5, jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
23660
23766
|
function SearchMatchSummary({
|
|
23661
23767
|
open,
|
|
23662
23768
|
query,
|
|
@@ -23667,17 +23773,17 @@ function SearchMatchSummary({
|
|
|
23667
23773
|
marginTop
|
|
23668
23774
|
}) {
|
|
23669
23775
|
if (hidden) return null;
|
|
23670
|
-
return /* @__PURE__ */
|
|
23671
|
-
open && /* @__PURE__ */
|
|
23672
|
-
/* @__PURE__ */
|
|
23776
|
+
return /* @__PURE__ */ jsxs25(Fragment5, { children: [
|
|
23777
|
+
open && /* @__PURE__ */ jsxs25(Box25, { marginTop, flexDirection: "column", children: [
|
|
23778
|
+
/* @__PURE__ */ jsxs25(Text26, { children: [
|
|
23673
23779
|
`/${query}`,
|
|
23674
|
-
/* @__PURE__ */
|
|
23675
|
-
query && /* @__PURE__ */
|
|
23676
|
-
/* @__PURE__ */
|
|
23780
|
+
/* @__PURE__ */ jsx29(Text26, { color: PALETTE.accent, children: "\u258E" }),
|
|
23781
|
+
query && /* @__PURE__ */ jsx29(Text26, { color: PALETTE.muted, children: formatSearchMatchSummary(matches, total) }),
|
|
23782
|
+
/* @__PURE__ */ jsx29(Text26, { children: " \xB7 [Esc] leave" })
|
|
23677
23783
|
] }),
|
|
23678
|
-
autocompleteCandidates.length > 1 && /* @__PURE__ */
|
|
23784
|
+
autocompleteCandidates.length > 1 && /* @__PURE__ */ jsx29(Text26, { color: PALETTE.muted, children: ` possibilities: ${autocompleteCandidates.join(" \xB7 ").slice(0, 120)}` })
|
|
23679
23785
|
] }),
|
|
23680
|
-
!open && query && /* @__PURE__ */
|
|
23786
|
+
!open && query && /* @__PURE__ */ jsx29(Box25, { marginTop, children: /* @__PURE__ */ jsx29(Text26, { children: `/${query}${formatSearchMatchSummary(matches, total)} \xB7 [Esc] clear` }) })
|
|
23681
23787
|
] });
|
|
23682
23788
|
}
|
|
23683
23789
|
var init_SearchMatchSummary = __esm({
|
|
@@ -24629,7 +24735,7 @@ function useScopeGate({ components, tokenCount, tokensWidth, onConfirm, onQuit }
|
|
|
24629
24735
|
panelOpen: false,
|
|
24630
24736
|
entryCount: 0
|
|
24631
24737
|
});
|
|
24632
|
-
const
|
|
24738
|
+
const panelLayout2 = useMemo3(() => computePanelLayout(visibleCount), [visibleCount]);
|
|
24633
24739
|
useEffect13(() => {
|
|
24634
24740
|
setNav((prev) => {
|
|
24635
24741
|
const maxIdx = Math.max(0, visibleRows.length - 1);
|
|
@@ -24913,7 +25019,7 @@ function useScopeGate({ components, tokenCount, tokensWidth, onConfirm, onQuit }
|
|
|
24913
25019
|
// layout
|
|
24914
25020
|
totalWidth,
|
|
24915
25021
|
columnPlan,
|
|
24916
|
-
panelLayout,
|
|
25022
|
+
panelLayout: panelLayout2,
|
|
24917
25023
|
visibleCount,
|
|
24918
25024
|
panelMaxRows,
|
|
24919
25025
|
// sidebar
|
|
@@ -24976,8 +25082,8 @@ var init_use_scope_gate = __esm({
|
|
|
24976
25082
|
|
|
24977
25083
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/screen.tsx
|
|
24978
25084
|
import { useEffect as useEffect14, useMemo as useMemo4 } from "react";
|
|
24979
|
-
import { Box as
|
|
24980
|
-
import { Fragment as
|
|
25085
|
+
import { Box as Box26, Text as Text27 } from "ink";
|
|
25086
|
+
import { Fragment as Fragment6, jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
24981
25087
|
function ScopeGateScreen({
|
|
24982
25088
|
components,
|
|
24983
25089
|
tokensPath,
|
|
@@ -25014,24 +25120,24 @@ function ScopeGateScreen({
|
|
|
25014
25120
|
onQuit();
|
|
25015
25121
|
}
|
|
25016
25122
|
});
|
|
25017
|
-
const { search, graph, columnPlan, panelLayout, counters } = gate;
|
|
25123
|
+
const { search, graph, columnPlan, panelLayout: panelLayout2, counters } = gate;
|
|
25018
25124
|
if (gate.showHelp) {
|
|
25019
|
-
return /* @__PURE__ */
|
|
25020
|
-
}
|
|
25021
|
-
return /* @__PURE__ */
|
|
25022
|
-
/* @__PURE__ */
|
|
25023
|
-
/* @__PURE__ */
|
|
25024
|
-
/* @__PURE__ */
|
|
25025
|
-
/* @__PURE__ */
|
|
25026
|
-
gate.aiExcludedCount > 0 && /* @__PURE__ */
|
|
25125
|
+
return /* @__PURE__ */ jsx30(HelpOverlay, { sections: HELP_SECTIONS, handleInput: false, onClose: gate.closeHelp });
|
|
25126
|
+
}
|
|
25127
|
+
return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", children: [
|
|
25128
|
+
/* @__PURE__ */ jsx30(StepHeader, { step: "scope-gate" }),
|
|
25129
|
+
/* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", paddingX: 2, children: [
|
|
25130
|
+
/* @__PURE__ */ jsxs26(Box26, { flexDirection: "row", flexWrap: "wrap", children: [
|
|
25131
|
+
/* @__PURE__ */ jsx30(CounterStrip, { counters, totalWidth: gate.totalWidth }),
|
|
25132
|
+
gate.aiExcludedCount > 0 && /* @__PURE__ */ jsxs26(Text27, { color: PALETTE.muted, children: [
|
|
25027
25133
|
`${gate.aiExcludedCount} component${gate.aiExcludedCount === 1 ? "" : "s"} flagged by AI`,
|
|
25028
|
-
gate.aiRows.length > 0 && /* @__PURE__ */
|
|
25134
|
+
gate.aiRows.length > 0 && /* @__PURE__ */ jsx30(Text27, { color: PALETTE.accent, children: " \u2014 press [x] to see why" })
|
|
25029
25135
|
] })
|
|
25030
25136
|
] }),
|
|
25031
|
-
tokens.length > 0 && columnPlan.layout === "single" && /* @__PURE__ */
|
|
25032
|
-
graph.cycles.length > 0 && /* @__PURE__ */
|
|
25033
|
-
/* @__PURE__ */
|
|
25034
|
-
gate.aiRationalePanelOpen ? /* @__PURE__ */
|
|
25137
|
+
tokens.length > 0 && columnPlan.layout === "single" && /* @__PURE__ */ jsx30(Text27, { color: PALETTE.muted, children: `${tokens.length} design token${tokens.length === 1 ? "" : "s"} will be imported. Widen the terminal to list them.` }),
|
|
25138
|
+
graph.cycles.length > 0 && /* @__PURE__ */ jsx30(Box26, { marginTop: 1, children: /* @__PURE__ */ jsx30(Text27, { color: PALETTE.muted, children: "If you must have components with cycles, select them together into the generate step and then use the editor to fix them." }) }),
|
|
25139
|
+
/* @__PURE__ */ jsxs26(Box26, { flexDirection: "row", alignItems: "stretch", children: [
|
|
25140
|
+
gate.aiRationalePanelOpen ? /* @__PURE__ */ jsx30(
|
|
25035
25141
|
GotoBanner,
|
|
25036
25142
|
{
|
|
25037
25143
|
title: `Review flags (${gate.aiExcludedCount})`,
|
|
@@ -25041,7 +25147,7 @@ function ScopeGateScreen({
|
|
|
25041
25147
|
width: columnPlan.main,
|
|
25042
25148
|
footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [x/Esc] close"
|
|
25043
25149
|
}
|
|
25044
|
-
) : /* @__PURE__ */
|
|
25150
|
+
) : /* @__PURE__ */ jsx30(
|
|
25045
25151
|
GroupedSidebar,
|
|
25046
25152
|
{
|
|
25047
25153
|
items: gate.groupedItems,
|
|
@@ -25053,7 +25159,7 @@ function ScopeGateScreen({
|
|
|
25053
25159
|
expandedGroups: gate.expandedGroups,
|
|
25054
25160
|
onToggleExpanded: gate.toggleExpanded,
|
|
25055
25161
|
width: columnPlan.main,
|
|
25056
|
-
height:
|
|
25162
|
+
height: panelLayout2.height,
|
|
25057
25163
|
title: "Components",
|
|
25058
25164
|
wrapLabels: true,
|
|
25059
25165
|
focused: gate.focusedColumn === "main",
|
|
@@ -25069,25 +25175,25 @@ function ScopeGateScreen({
|
|
|
25069
25175
|
graph: graph.nodes
|
|
25070
25176
|
}
|
|
25071
25177
|
),
|
|
25072
|
-
columnPlan.layout === "two-column" && /* @__PURE__ */
|
|
25073
|
-
/* @__PURE__ */
|
|
25074
|
-
/* @__PURE__ */
|
|
25178
|
+
columnPlan.layout === "two-column" && /* @__PURE__ */ jsxs26(Fragment6, { children: [
|
|
25179
|
+
/* @__PURE__ */ jsx30(Box26, { width: 2, flexShrink: 0 }),
|
|
25180
|
+
/* @__PURE__ */ jsx30(
|
|
25075
25181
|
TokensColumn,
|
|
25076
25182
|
{
|
|
25077
25183
|
width: columnPlan.tokens,
|
|
25078
25184
|
tokens,
|
|
25079
25185
|
cursor: gate.safeTokensCursor,
|
|
25080
25186
|
focused: gate.focusedColumn === "tokens",
|
|
25081
|
-
height:
|
|
25187
|
+
height: panelLayout2.height,
|
|
25082
25188
|
title: `Design tokens (${tokens.length}) \xB7 read only`,
|
|
25083
|
-
visibleCount:
|
|
25189
|
+
visibleCount: panelLayout2.sideVisibleCount
|
|
25084
25190
|
}
|
|
25085
25191
|
)
|
|
25086
25192
|
] })
|
|
25087
25193
|
] }),
|
|
25088
|
-
gate.cyclesPanelOpen && /* @__PURE__ */
|
|
25089
|
-
gate.pendingRejectCascade && /* @__PURE__ */
|
|
25090
|
-
/* @__PURE__ */
|
|
25194
|
+
gate.cyclesPanelOpen && /* @__PURE__ */ jsx30(CyclesPanel, { cycles: gate.slotCycles, cursor: gate.cyclesCursor }),
|
|
25195
|
+
gate.pendingRejectCascade && /* @__PURE__ */ jsx30(RejectPrompt, { pending: gate.pendingRejectCascade }),
|
|
25196
|
+
/* @__PURE__ */ jsx30(
|
|
25091
25197
|
SearchMatchSummary,
|
|
25092
25198
|
{
|
|
25093
25199
|
open: search.searchOpen,
|
|
@@ -25098,7 +25204,7 @@ function ScopeGateScreen({
|
|
|
25098
25204
|
marginTop: 1
|
|
25099
25205
|
}
|
|
25100
25206
|
),
|
|
25101
|
-
/* @__PURE__ */
|
|
25207
|
+
/* @__PURE__ */ jsx30(
|
|
25102
25208
|
CompactControlBar,
|
|
25103
25209
|
{
|
|
25104
25210
|
hasGroupRoots: gate.hasGroupRoots,
|
|
@@ -25280,8 +25386,18 @@ function generationLogInputs(input) {
|
|
|
25280
25386
|
has_tokens: input.hasTokens
|
|
25281
25387
|
};
|
|
25282
25388
|
}
|
|
25389
|
+
function lastProgress(progress) {
|
|
25390
|
+
const { activity, ...rest } = progress;
|
|
25391
|
+
const failed = activity.filter((item) => item.state === "failed");
|
|
25392
|
+
return {
|
|
25393
|
+
final_progress: rest,
|
|
25394
|
+
...failed.length > 0 ? {
|
|
25395
|
+
failed_components: failed.slice(0, MAX_LOGGED_FAILURES).map((item) => ({ name: item.name, error: truncate(item.error ?? "", MAX_LOGGED_ERROR) }))
|
|
25396
|
+
} : {}
|
|
25397
|
+
};
|
|
25398
|
+
}
|
|
25283
25399
|
function generationLogOutputs(result, progress) {
|
|
25284
|
-
const last = progress ?
|
|
25400
|
+
const last = progress ? lastProgress(progress) : {};
|
|
25285
25401
|
if (!result.ok) {
|
|
25286
25402
|
return { outputs: { result: "failed", failed_step: result.step, error: result.message, ...last }, status: "error" };
|
|
25287
25403
|
}
|
|
@@ -25300,7 +25416,21 @@ function generationLogOutputs(result, progress) {
|
|
|
25300
25416
|
};
|
|
25301
25417
|
}
|
|
25302
25418
|
function initialProgress2() {
|
|
25303
|
-
return { components: null, mapTokens: "idle", mapTokensEligible: null };
|
|
25419
|
+
return { components: null, activity: [], mapTokens: "idle", mapTokensEligible: null };
|
|
25420
|
+
}
|
|
25421
|
+
function applyActivityEvent(event, previous, now) {
|
|
25422
|
+
if (event.kind !== "component:started" && event.kind !== "component:completed" && event.kind !== "component:cached" && event.kind !== "component:failed") {
|
|
25423
|
+
return [...previous];
|
|
25424
|
+
}
|
|
25425
|
+
const index = previous.findIndex((item2) => item2.name === event.name);
|
|
25426
|
+
const startedAt = previous[index]?.startedAt ?? now;
|
|
25427
|
+
const item = event.kind === "component:started" ? {
|
|
25428
|
+
name: event.name,
|
|
25429
|
+
state: "running",
|
|
25430
|
+
startedAt,
|
|
25431
|
+
...event.attempt > 1 ? { detail: `attempt ${event.attempt}` } : {}
|
|
25432
|
+
} : event.kind === "component:cached" ? { name: event.name, state: "done", detail: "cached", startedAt } : event.kind === "component:failed" ? { name: event.name, state: "failed", error: event.error, ms: now - startedAt, startedAt } : { name: event.name, state: "done", ms: now - startedAt, startedAt };
|
|
25433
|
+
return index >= 0 ? previous.map((existing, i) => i === index ? item : existing) : [...previous, item];
|
|
25304
25434
|
}
|
|
25305
25435
|
function shouldRunMapTokens(counts) {
|
|
25306
25436
|
return counts.mappablePropCount > 0 && counts.rawTokenCount > 0;
|
|
@@ -25315,52 +25445,70 @@ function describeGeneration(input) {
|
|
|
25315
25445
|
return `${formatAcceptanceSummary({ accepted: input.acceptedCount, autoRejected: 0 })}
|
|
25316
25446
|
${agent} is reading each selected component and writing a Contentful component definition for it.${input.hasTokens ? "\nUsing your design tokens for prop resolution." : ""}`;
|
|
25317
25447
|
}
|
|
25318
|
-
function
|
|
25448
|
+
function componentsRow(components, name) {
|
|
25449
|
+
if (!components) return { text: `Starting up ${name}...`, complete: false };
|
|
25450
|
+
const { done, total, current, failed } = components;
|
|
25451
|
+
if (total > 0 && done >= total) {
|
|
25452
|
+
return failed > 0 ? {
|
|
25453
|
+
text: `Generated ${total - failed} of ${total} components, ${failed} failed`,
|
|
25454
|
+
complete: false,
|
|
25455
|
+
state: "failed"
|
|
25456
|
+
} : { text: `Generated ${total} component${total === 1 ? "" : "s"}`, complete: true };
|
|
25457
|
+
}
|
|
25458
|
+
return {
|
|
25459
|
+
text: failed > 0 ? `${current} (${failed} failed so far)` : current,
|
|
25460
|
+
complete: false,
|
|
25461
|
+
progress: { done, total },
|
|
25462
|
+
...failed > 0 ? { state: "warning" } : {}
|
|
25463
|
+
};
|
|
25464
|
+
}
|
|
25465
|
+
function progressRows2(progress, agent, rowMs = []) {
|
|
25319
25466
|
const name = capitalize(agent);
|
|
25320
25467
|
const { components, mapTokens } = progress;
|
|
25321
|
-
const rows = [
|
|
25322
|
-
{
|
|
25323
|
-
text: components ? components.current : `Starting up ${name}...`,
|
|
25324
|
-
complete: false,
|
|
25325
|
-
...components ? { progress: { done: components.done, total: components.total } } : {}
|
|
25326
|
-
}
|
|
25327
|
-
];
|
|
25468
|
+
const rows = [componentsRow(components, name)];
|
|
25328
25469
|
if (mapTokens !== "idle") {
|
|
25329
25470
|
rows.push({
|
|
25330
25471
|
text: mapTokens === "running" ? `Mapping token restrictions via ${name}...` : "Token restrictions ready",
|
|
25331
25472
|
complete: mapTokens === "complete"
|
|
25332
25473
|
});
|
|
25333
25474
|
}
|
|
25334
|
-
return rows;
|
|
25475
|
+
return withTimes(rows, rowMs);
|
|
25335
25476
|
}
|
|
25336
|
-
var capitalize;
|
|
25477
|
+
var MAX_LOGGED_FAILURES, MAX_LOGGED_ERROR, capitalize;
|
|
25337
25478
|
var init_logic11 = __esm({
|
|
25338
25479
|
"packages/experience-design-system-cli/src/tui/import/steps/08-generation/logic.ts"() {
|
|
25339
25480
|
"use strict";
|
|
25481
|
+
init_activity();
|
|
25482
|
+
init_logic4();
|
|
25483
|
+
MAX_LOGGED_FAILURES = 10;
|
|
25484
|
+
MAX_LOGGED_ERROR = 300;
|
|
25340
25485
|
capitalize = (name) => name.charAt(0).toUpperCase() + name.slice(1);
|
|
25341
25486
|
}
|
|
25342
25487
|
});
|
|
25343
25488
|
|
|
25344
25489
|
// packages/experience-design-system-cli/src/tui/import/steps/08-generation/screen.tsx
|
|
25345
|
-
import { jsx as
|
|
25490
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
25346
25491
|
function GenerationScreen({
|
|
25347
25492
|
progress,
|
|
25348
25493
|
agent,
|
|
25349
25494
|
acceptedCount,
|
|
25350
|
-
hasTokens
|
|
25495
|
+
hasTokens,
|
|
25496
|
+
rowMs
|
|
25351
25497
|
}) {
|
|
25352
|
-
return /* @__PURE__ */
|
|
25498
|
+
return /* @__PURE__ */ jsx31(
|
|
25353
25499
|
RunningStep,
|
|
25354
25500
|
{
|
|
25355
25501
|
step: "generation",
|
|
25356
25502
|
description: describeGeneration({ acceptedCount, agent, hasTokens }),
|
|
25357
|
-
lines: progressRows2(progress, agent)
|
|
25503
|
+
lines: progressRows2(progress, agent, rowMs),
|
|
25504
|
+
aside: progress.activity.length > 0 ? /* @__PURE__ */ jsx31(ActivityPanel, { title: "Components", items: progress.activity }) : void 0
|
|
25358
25505
|
}
|
|
25359
25506
|
);
|
|
25360
25507
|
}
|
|
25361
25508
|
var init_screen9 = __esm({
|
|
25362
25509
|
"packages/experience-design-system-cli/src/tui/import/steps/08-generation/screen.tsx"() {
|
|
25363
25510
|
"use strict";
|
|
25511
|
+
init_activity_panel();
|
|
25364
25512
|
init_shared2();
|
|
25365
25513
|
init_logic11();
|
|
25366
25514
|
}
|
|
@@ -25418,7 +25566,7 @@ var init_save_decisions = __esm({
|
|
|
25418
25566
|
// packages/experience-design-system-cli/src/tui/import/steps/08-generation/run.ts
|
|
25419
25567
|
import { resolve as resolve25 } from "node:path";
|
|
25420
25568
|
async function runGeneration(input, onProgress, deps = realDeps4) {
|
|
25421
|
-
let progress = { components: null, mapTokens: "idle", mapTokensEligible: null };
|
|
25569
|
+
let progress = { components: null, activity: [], mapTokens: "idle", mapTokensEligible: null };
|
|
25422
25570
|
const update = (change) => {
|
|
25423
25571
|
progress = { ...progress, ...change };
|
|
25424
25572
|
onProgress(progress);
|
|
@@ -25446,7 +25594,10 @@ async function runGeneration(input, onProgress, deps = realDeps4) {
|
|
|
25446
25594
|
noCache: input.noCache,
|
|
25447
25595
|
existingEntitiesPath: input.existingEntitiesPath,
|
|
25448
25596
|
precomputedCachedNames: new Set(handedOverNames),
|
|
25449
|
-
onProgress: (event) => update({
|
|
25597
|
+
onProgress: (event) => update({
|
|
25598
|
+
components: applyProgressEvent2(event, progress.components, accepted.length),
|
|
25599
|
+
activity: applyActivityEvent(event, progress.activity, Date.now())
|
|
25600
|
+
})
|
|
25450
25601
|
});
|
|
25451
25602
|
} catch (error) {
|
|
25452
25603
|
return fail2("generate components", errorMessage3(error));
|
|
@@ -25517,11 +25668,17 @@ function appendGeneratePromptOverride(input) {
|
|
|
25517
25668
|
return [...input.promptOverrides, `generate=${input.generatePromptPath}`];
|
|
25518
25669
|
}
|
|
25519
25670
|
function applyProgressEvent2(event, previous, total) {
|
|
25671
|
+
const failed = previous?.failed ?? 0;
|
|
25520
25672
|
if (event.kind === "component:started") {
|
|
25521
|
-
return { done: previous?.done ?? 0, total: event.total || total, current: event.name };
|
|
25673
|
+
return { done: previous?.done ?? 0, total: event.total || total, current: event.name, failed };
|
|
25522
25674
|
}
|
|
25523
25675
|
if (event.kind === "component:completed" || event.kind === "component:failed" || event.kind === "component:cached") {
|
|
25524
|
-
return {
|
|
25676
|
+
return {
|
|
25677
|
+
done: (previous?.done ?? 0) + 1,
|
|
25678
|
+
total: event.total || total,
|
|
25679
|
+
current: event.name,
|
|
25680
|
+
failed: failed + (event.kind === "component:failed" ? 1 : 0)
|
|
25681
|
+
};
|
|
25525
25682
|
}
|
|
25526
25683
|
return previous;
|
|
25527
25684
|
}
|
|
@@ -25532,6 +25689,7 @@ var init_run2 = __esm({
|
|
|
25532
25689
|
init_src3();
|
|
25533
25690
|
init_find_skill_path();
|
|
25534
25691
|
init_logic9();
|
|
25692
|
+
init_logic11();
|
|
25535
25693
|
init_map_tokens();
|
|
25536
25694
|
init_save_decisions();
|
|
25537
25695
|
COMPONENTS_SKILL_PATH = findSkillPath("generate-components.md");
|
|
@@ -25559,8 +25717,10 @@ function useGeneration(input) {
|
|
|
25559
25717
|
setState(void 0);
|
|
25560
25718
|
return;
|
|
25561
25719
|
}
|
|
25562
|
-
setState({ status: "running", progress: initialProgress2() });
|
|
25563
|
-
let
|
|
25720
|
+
setState({ status: "running", progress: initialProgress2(), rowMs: [] });
|
|
25721
|
+
let lastProgress2;
|
|
25722
|
+
const startedAt = Date.now();
|
|
25723
|
+
let rowMs = [];
|
|
25564
25724
|
startDebugRun({
|
|
25565
25725
|
flow: "import/generation",
|
|
25566
25726
|
step: "08-generation",
|
|
@@ -25568,12 +25728,13 @@ function useGeneration(input) {
|
|
|
25568
25728
|
inputs: generationLogInputs(input)
|
|
25569
25729
|
});
|
|
25570
25730
|
void runGeneration(input, (progress) => {
|
|
25571
|
-
|
|
25572
|
-
|
|
25731
|
+
lastProgress2 = progress;
|
|
25732
|
+
rowMs = trackFinished(rowMs, progressRows2(progress, input.agent), Date.now() - startedAt);
|
|
25733
|
+
if (current.current === input) setState({ status: "running", progress, rowMs });
|
|
25573
25734
|
}).then((result) => {
|
|
25574
25735
|
if (current.current !== input) return;
|
|
25575
25736
|
void finishDebugRun({
|
|
25576
|
-
...generationLogOutputs(result,
|
|
25737
|
+
...generationLogOutputs(result, lastProgress2),
|
|
25577
25738
|
exitMethod: result.ok ? "saved" : "discarded"
|
|
25578
25739
|
});
|
|
25579
25740
|
setState({ status: "done", result });
|
|
@@ -25588,6 +25749,7 @@ var init_use_generation = __esm({
|
|
|
25588
25749
|
"packages/experience-design-system-cli/src/tui/import/steps/08-generation/use-generation.ts"() {
|
|
25589
25750
|
"use strict";
|
|
25590
25751
|
init_debug_store();
|
|
25752
|
+
init_logic4();
|
|
25591
25753
|
init_logic11();
|
|
25592
25754
|
init_run2();
|
|
25593
25755
|
}
|
|
@@ -26258,7 +26420,7 @@ var init_logic12 = __esm({
|
|
|
26258
26420
|
});
|
|
26259
26421
|
|
|
26260
26422
|
// packages/experience-design-system-cli/src/tui/import/steps/preview-validation-error/screen.tsx
|
|
26261
|
-
import { jsx as
|
|
26423
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
26262
26424
|
function PreviewValidationErrorScreen({
|
|
26263
26425
|
errors,
|
|
26264
26426
|
missingNames,
|
|
@@ -26267,7 +26429,7 @@ function PreviewValidationErrorScreen({
|
|
|
26267
26429
|
onQuit
|
|
26268
26430
|
}) {
|
|
26269
26431
|
const matchedNames = matchedComponentNames(errors, missingNames);
|
|
26270
|
-
return /* @__PURE__ */
|
|
26432
|
+
return /* @__PURE__ */ jsx32(
|
|
26271
26433
|
GateStep,
|
|
26272
26434
|
{
|
|
26273
26435
|
intent: "error",
|
|
@@ -26641,8 +26803,8 @@ var init_scroll_offset = __esm({
|
|
|
26641
26803
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx
|
|
26642
26804
|
import React13, { useEffect as useEffect17, useLayoutEffect as useLayoutEffect2, useState as useState19 } from "react";
|
|
26643
26805
|
import figures6 from "figures";
|
|
26644
|
-
import { Box as
|
|
26645
|
-
import { Fragment as
|
|
26806
|
+
import { Box as Box27, measureElement, Text as Text28 } from "ink";
|
|
26807
|
+
import { Fragment as Fragment7, jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
26646
26808
|
function createCommonRowProps(selected, focusLevel, editingField, textCursor, valueCursor, cursorVisible, editingValue, valueText, width) {
|
|
26647
26809
|
return {
|
|
26648
26810
|
selected,
|
|
@@ -26780,14 +26942,14 @@ function serializeState(state2, originalJson) {
|
|
|
26780
26942
|
return JSON.stringify(entry, null, 2);
|
|
26781
26943
|
}
|
|
26782
26944
|
function Picker({ value, active }) {
|
|
26783
|
-
return /* @__PURE__ */
|
|
26784
|
-
active && /* @__PURE__ */
|
|
26785
|
-
/* @__PURE__ */
|
|
26786
|
-
active && /* @__PURE__ */
|
|
26945
|
+
return /* @__PURE__ */ jsxs27(Box27, { children: [
|
|
26946
|
+
active && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.warning, children: "\u2039" }),
|
|
26947
|
+
/* @__PURE__ */ jsx33(Text28, { color: active ? PALETTE.warning : void 0, bold: active, children: value }),
|
|
26948
|
+
active && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.warning, children: "\u203A" })
|
|
26787
26949
|
] });
|
|
26788
26950
|
}
|
|
26789
26951
|
function Toggle({ value, active }) {
|
|
26790
|
-
return /* @__PURE__ */
|
|
26952
|
+
return /* @__PURE__ */ jsx33(Box27, { children: /* @__PURE__ */ jsx33(Text28, { color: active ? PALETTE.warning : value ? PALETTE.success : PALETTE.border, children: value ? "[\u2713]" : "[ ]" }) });
|
|
26791
26953
|
}
|
|
26792
26954
|
function InlinePropField({
|
|
26793
26955
|
label,
|
|
@@ -26796,8 +26958,8 @@ function InlinePropField({
|
|
|
26796
26958
|
flexible = false,
|
|
26797
26959
|
width
|
|
26798
26960
|
}) {
|
|
26799
|
-
return /* @__PURE__ */
|
|
26800
|
-
/* @__PURE__ */
|
|
26961
|
+
return /* @__PURE__ */ jsxs27(Box27, { width, gap: 1, flexShrink: flexible ? 1 : 0, flexGrow: flexible ? 1 : 0, flexWrap: "wrap", children: [
|
|
26962
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, wrap: "truncate-end", children: [
|
|
26801
26963
|
focused ? "\u203A " : " ",
|
|
26802
26964
|
label
|
|
26803
26965
|
] }),
|
|
@@ -26810,19 +26972,19 @@ function RequiredField({
|
|
|
26810
26972
|
editingField,
|
|
26811
26973
|
activeField
|
|
26812
26974
|
}) {
|
|
26813
|
-
return /* @__PURE__ */
|
|
26975
|
+
return /* @__PURE__ */ jsx33(InlinePropField, { label: "req:", focused, children: /* @__PURE__ */ jsx33(Toggle, { value, active: editingField && activeField === "required" }) });
|
|
26814
26976
|
}
|
|
26815
26977
|
function DefaultValueRow({
|
|
26816
26978
|
display,
|
|
26817
26979
|
active,
|
|
26818
26980
|
focused
|
|
26819
26981
|
}) {
|
|
26820
|
-
return /* @__PURE__ */
|
|
26821
|
-
/* @__PURE__ */
|
|
26982
|
+
return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", flexShrink: 0, children: [
|
|
26983
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
26822
26984
|
focused ? "\u203A " : " ",
|
|
26823
26985
|
"default:"
|
|
26824
26986
|
] }),
|
|
26825
|
-
active ? /* @__PURE__ */
|
|
26987
|
+
active ? /* @__PURE__ */ jsx33(Picker, { value: display, active: true }) : /* @__PURE__ */ jsx33(Text28, { wrap: "wrap", children: display })
|
|
26826
26988
|
] });
|
|
26827
26989
|
}
|
|
26828
26990
|
function RowLabel({
|
|
@@ -26830,8 +26992,8 @@ function RowLabel({
|
|
|
26830
26992
|
selected,
|
|
26831
26993
|
trailing = true
|
|
26832
26994
|
}) {
|
|
26833
|
-
return /* @__PURE__ */
|
|
26834
|
-
|
|
26995
|
+
return /* @__PURE__ */ jsxs27(
|
|
26996
|
+
Text28,
|
|
26835
26997
|
{
|
|
26836
26998
|
color: selected ? PALETTE.onAccent : PALETTE.accent,
|
|
26837
26999
|
bold: selected,
|
|
@@ -26850,10 +27012,10 @@ function ValueInputRow({
|
|
|
26850
27012
|
valueText,
|
|
26851
27013
|
cursorVisible
|
|
26852
27014
|
}) {
|
|
26853
|
-
return /* @__PURE__ */
|
|
26854
|
-
/* @__PURE__ */
|
|
26855
|
-
/* @__PURE__ */
|
|
26856
|
-
/* @__PURE__ */
|
|
27015
|
+
return /* @__PURE__ */ jsxs27(Box27, { paddingLeft: 2, children: [
|
|
27016
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.accent, children: mode === "edit" ? "\u270E " : "+ " }),
|
|
27017
|
+
/* @__PURE__ */ jsx33(Text28, { children: valueText }),
|
|
27018
|
+
/* @__PURE__ */ jsx33(Text28, { inverse: cursorVisible, children: " " })
|
|
26857
27019
|
] });
|
|
26858
27020
|
}
|
|
26859
27021
|
function EditableListItem({
|
|
@@ -26866,9 +27028,9 @@ function EditableListItem({
|
|
|
26866
27028
|
}) {
|
|
26867
27029
|
const isBeingEdited = editingValue?.mode === "edit" && editingValue.index === index;
|
|
26868
27030
|
if (isBeingEdited) {
|
|
26869
|
-
return /* @__PURE__ */
|
|
27031
|
+
return /* @__PURE__ */ jsx33(ValueInputRow, { mode: "edit", valueText, cursorVisible });
|
|
26870
27032
|
}
|
|
26871
|
-
return /* @__PURE__ */
|
|
27033
|
+
return /* @__PURE__ */ jsx33(Box27, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx33(Text28, { color: active ? PALETTE.accent : void 0, children: active ? `${figures6.pointer} ${value}` : ` ${value}` }) });
|
|
26872
27034
|
}
|
|
26873
27035
|
function EditableValueList({
|
|
26874
27036
|
values,
|
|
@@ -26881,9 +27043,9 @@ function EditableValueList({
|
|
|
26881
27043
|
emptyPaddingLeft,
|
|
26882
27044
|
showAddInput
|
|
26883
27045
|
}) {
|
|
26884
|
-
return /* @__PURE__ */
|
|
26885
|
-
values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */
|
|
26886
|
-
values.map((value, index) => /* @__PURE__ */
|
|
27046
|
+
return /* @__PURE__ */ jsxs27(Fragment7, { children: [
|
|
27047
|
+
values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: emptyMessage }) : /* @__PURE__ */ jsx33(Box27, { paddingLeft: emptyPaddingLeft, children: /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: emptyMessage }) })),
|
|
27048
|
+
values.map((value, index) => /* @__PURE__ */ jsx33(
|
|
26887
27049
|
EditableListItem,
|
|
26888
27050
|
{
|
|
26889
27051
|
value,
|
|
@@ -26895,7 +27057,7 @@ function EditableValueList({
|
|
|
26895
27057
|
},
|
|
26896
27058
|
index
|
|
26897
27059
|
)),
|
|
26898
|
-
showAddInput && editingValue?.mode === "add" && /* @__PURE__ */
|
|
27060
|
+
showAddInput && editingValue?.mode === "add" && /* @__PURE__ */ jsx33(ValueInputRow, { mode: "add", valueText, cursorVisible })
|
|
26899
27061
|
] });
|
|
26900
27062
|
}
|
|
26901
27063
|
function DefaultSubRow({
|
|
@@ -26907,51 +27069,51 @@ function DefaultSubRow({
|
|
|
26907
27069
|
}) {
|
|
26908
27070
|
const cursor = cursorVisible ? "\u2588" : " ";
|
|
26909
27071
|
if (prop.type === "richtext" || prop.type === "media" || prop.type === "link") {
|
|
26910
|
-
return /* @__PURE__ */
|
|
26911
|
-
/* @__PURE__ */
|
|
27072
|
+
return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexShrink: 0, children: [
|
|
27073
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
26912
27074
|
focused ? "\u203A " : " ",
|
|
26913
27075
|
"default:"
|
|
26914
27076
|
] }),
|
|
26915
|
-
/* @__PURE__ */
|
|
27077
|
+
/* @__PURE__ */ jsx33(Text28, { color: focused ? void 0 : PALETTE.muted, children: "(not applicable)" })
|
|
26916
27078
|
] });
|
|
26917
27079
|
}
|
|
26918
27080
|
if (prop.type === "boolean") {
|
|
26919
27081
|
const display = prop.default === true ? "true" : prop.default === false ? "false" : "(unset)";
|
|
26920
|
-
return /* @__PURE__ */
|
|
27082
|
+
return /* @__PURE__ */ jsx33(DefaultValueRow, { display, active, focused });
|
|
26921
27083
|
}
|
|
26922
27084
|
if (prop.type === "enum") {
|
|
26923
27085
|
if (prop.values.length === 0) {
|
|
26924
|
-
return /* @__PURE__ */
|
|
26925
|
-
/* @__PURE__ */
|
|
27086
|
+
return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexShrink: 0, children: [
|
|
27087
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
26926
27088
|
focused ? "\u203A " : " ",
|
|
26927
27089
|
"default:"
|
|
26928
27090
|
] }),
|
|
26929
|
-
/* @__PURE__ */
|
|
27091
|
+
/* @__PURE__ */ jsx33(Text28, { color: focused ? void 0 : PALETTE.muted, children: "(no values defined)" })
|
|
26930
27092
|
] });
|
|
26931
27093
|
}
|
|
26932
27094
|
const display = typeof prop.default === "string" && prop.default !== "" ? prop.default : "(unset)";
|
|
26933
|
-
return /* @__PURE__ */
|
|
27095
|
+
return /* @__PURE__ */ jsx33(DefaultValueRow, { display, active, focused });
|
|
26934
27096
|
}
|
|
26935
27097
|
const value = typeof prop.default === "string" ? prop.default : "";
|
|
26936
27098
|
if (active) {
|
|
26937
|
-
return /* @__PURE__ */
|
|
26938
|
-
/* @__PURE__ */
|
|
27099
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "row", flexShrink: 0, children: [
|
|
27100
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
26939
27101
|
focused ? "\u203A " : " ",
|
|
26940
27102
|
"default:"
|
|
26941
27103
|
] }),
|
|
26942
|
-
/* @__PURE__ */
|
|
26943
|
-
/* @__PURE__ */
|
|
26944
|
-
/* @__PURE__ */
|
|
26945
|
-
/* @__PURE__ */
|
|
27104
|
+
/* @__PURE__ */ jsxs27(Box27, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
27105
|
+
/* @__PURE__ */ jsx33(Text28, { children: value.slice(0, textCursor) }),
|
|
27106
|
+
/* @__PURE__ */ jsx33(Text28, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
|
|
27107
|
+
/* @__PURE__ */ jsx33(Text28, { children: value.slice(textCursor + 1) })
|
|
26946
27108
|
] })
|
|
26947
27109
|
] });
|
|
26948
27110
|
}
|
|
26949
|
-
return /* @__PURE__ */
|
|
26950
|
-
/* @__PURE__ */
|
|
27111
|
+
return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexShrink: 0, children: [
|
|
27112
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
26951
27113
|
focused ? "\u203A " : " ",
|
|
26952
27114
|
"default:"
|
|
26953
27115
|
] }),
|
|
26954
|
-
/* @__PURE__ */
|
|
27116
|
+
/* @__PURE__ */ jsx33(Text28, { color: focused || value ? void 0 : PALETTE.muted, children: value || "(none)" })
|
|
26955
27117
|
] });
|
|
26956
27118
|
}
|
|
26957
27119
|
function DescriptionField({
|
|
@@ -26966,20 +27128,20 @@ function DescriptionField({
|
|
|
26966
27128
|
paddingLeft = 2
|
|
26967
27129
|
}) {
|
|
26968
27130
|
if (compact) {
|
|
26969
|
-
return /* @__PURE__ */
|
|
26970
|
-
/* @__PURE__ */
|
|
27131
|
+
return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
27132
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
26971
27133
|
focused ? "\u203A " : " ",
|
|
26972
27134
|
label
|
|
26973
27135
|
] }),
|
|
26974
|
-
/* @__PURE__ */
|
|
27136
|
+
/* @__PURE__ */ jsx33(Text28, { wrap: "truncate-end", color: value ? void 0 : PALETTE.muted, children: value || "\u2014" })
|
|
26975
27137
|
] });
|
|
26976
27138
|
}
|
|
26977
|
-
return /* @__PURE__ */
|
|
26978
|
-
/* @__PURE__ */
|
|
27139
|
+
return /* @__PURE__ */ jsxs27(Box27, { paddingLeft, flexDirection: "column", width, flexShrink: 0, children: [
|
|
27140
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
26979
27141
|
focused ? "\u203A " : " ",
|
|
26980
27142
|
label
|
|
26981
27143
|
] }),
|
|
26982
|
-
editing ? /* @__PURE__ */
|
|
27144
|
+
editing ? /* @__PURE__ */ jsx33(EditableDescription, { cursorVisible, value, textCursor }) : /* @__PURE__ */ jsx33(Text28, { wrap: "wrap", children: value || "\u2014" })
|
|
26983
27145
|
] });
|
|
26984
27146
|
}
|
|
26985
27147
|
function EditableDescription({
|
|
@@ -26987,9 +27149,9 @@ function EditableDescription({
|
|
|
26987
27149
|
value,
|
|
26988
27150
|
textCursor
|
|
26989
27151
|
}) {
|
|
26990
|
-
return /* @__PURE__ */
|
|
27152
|
+
return /* @__PURE__ */ jsxs27(Text28, { wrap: "wrap", children: [
|
|
26991
27153
|
value.slice(0, textCursor),
|
|
26992
|
-
/* @__PURE__ */
|
|
27154
|
+
/* @__PURE__ */ jsx33(Text28, { inverse: cursorVisible, children: value[textCursor] ?? " " }),
|
|
26993
27155
|
value.slice(textCursor + 1)
|
|
26994
27156
|
] });
|
|
26995
27157
|
}
|
|
@@ -27010,9 +27172,9 @@ function PropRow({
|
|
|
27010
27172
|
}) {
|
|
27011
27173
|
const descFocused = activeField === "description";
|
|
27012
27174
|
const descActive = editingField && descFocused;
|
|
27013
|
-
return /* @__PURE__ */
|
|
27014
|
-
/* @__PURE__ */
|
|
27015
|
-
/* @__PURE__ */
|
|
27175
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
27176
|
+
/* @__PURE__ */ jsx33(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx33(RowLabel, { name: prop.name, selected }) }),
|
|
27177
|
+
/* @__PURE__ */ jsx33(
|
|
27016
27178
|
DescriptionField,
|
|
27017
27179
|
{
|
|
27018
27180
|
value: prop.description,
|
|
@@ -27025,8 +27187,8 @@ function PropRow({
|
|
|
27025
27187
|
paddingLeft: 0
|
|
27026
27188
|
}
|
|
27027
27189
|
),
|
|
27028
|
-
/* @__PURE__ */
|
|
27029
|
-
/* @__PURE__ */
|
|
27190
|
+
/* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
27191
|
+
/* @__PURE__ */ jsx33(
|
|
27030
27192
|
RequiredField,
|
|
27031
27193
|
{
|
|
27032
27194
|
value: prop.required,
|
|
@@ -27035,21 +27197,21 @@ function PropRow({
|
|
|
27035
27197
|
activeField
|
|
27036
27198
|
}
|
|
27037
27199
|
),
|
|
27038
|
-
/* @__PURE__ */
|
|
27200
|
+
/* @__PURE__ */ jsx33(InlinePropField, { label: "type:", focused: activeField === "type", children: editingField && activeField === "type" ? /* @__PURE__ */ jsx33(Picker, { value: prop.type, active: true }) : /* @__PURE__ */ jsx33(Text28, { children: prop.type }) })
|
|
27039
27201
|
] }),
|
|
27040
|
-
prop.type === "token" && /* @__PURE__ */
|
|
27041
|
-
prop.type === "enum" && /* @__PURE__ */
|
|
27042
|
-
/* @__PURE__ */
|
|
27202
|
+
prop.type === "token" && /* @__PURE__ */ jsx33(InlinePropField, { label: "kind:", focused: activeField === "tokenKind", width, children: editingField && activeField === "tokenKind" ? /* @__PURE__ */ jsx33(Picker, { value: prop.tokenKind || DESIGN_TOKEN_TYPES2[0], active: true }) : /* @__PURE__ */ jsx33(Text28, { wrap: "wrap", children: prop.tokenKind || "\u2014" }) }),
|
|
27203
|
+
prop.type === "enum" && /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
27204
|
+
/* @__PURE__ */ jsxs27(Text28, { color: activeField === "values" ? PALETTE.warning : PALETTE.muted, bold: activeField === "values", children: [
|
|
27043
27205
|
activeField === "values" ? "\u203A " : " ",
|
|
27044
27206
|
"values:"
|
|
27045
27207
|
] }),
|
|
27046
|
-
/* @__PURE__ */
|
|
27208
|
+
/* @__PURE__ */ jsxs27(Text28, { wrap: "wrap", children: [
|
|
27047
27209
|
"[",
|
|
27048
27210
|
prop.values.join(", "),
|
|
27049
27211
|
"]"
|
|
27050
27212
|
] })
|
|
27051
27213
|
] }),
|
|
27052
|
-
/* @__PURE__ */
|
|
27214
|
+
/* @__PURE__ */ jsx33(
|
|
27053
27215
|
DefaultSubRow,
|
|
27054
27216
|
{
|
|
27055
27217
|
prop,
|
|
@@ -27059,13 +27221,13 @@ function PropRow({
|
|
|
27059
27221
|
cursorVisible
|
|
27060
27222
|
}
|
|
27061
27223
|
),
|
|
27062
|
-
prop.type === "token" && prop.category === "design" && /* @__PURE__ */
|
|
27063
|
-
/* @__PURE__ */
|
|
27224
|
+
prop.type === "token" && prop.category === "design" && /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
27225
|
+
/* @__PURE__ */ jsxs27(Text28, { color: activeField === "allowed" ? PALETTE.warning : PALETTE.muted, bold: activeField === "allowed", children: [
|
|
27064
27226
|
activeField === "allowed" ? "\u203A " : " ",
|
|
27065
27227
|
"allowed:"
|
|
27066
27228
|
] }),
|
|
27067
|
-
editingField && activeField === "allowed" ? /* @__PURE__ */
|
|
27068
|
-
|
|
27229
|
+
editingField && activeField === "allowed" ? /* @__PURE__ */ jsx33(Box27, { width: Math.max(1, width - 4), borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: /* @__PURE__ */ jsx33(Text28, { children: "press [t] to edit allowed tokens" }) }) : /* @__PURE__ */ jsx33(
|
|
27230
|
+
Text28,
|
|
27069
27231
|
{
|
|
27070
27232
|
color: activeField !== "allowed" && prop.allowed.length === 0 ? PALETTE.muted : void 0,
|
|
27071
27233
|
wrap: "wrap",
|
|
@@ -27073,17 +27235,17 @@ function PropRow({
|
|
|
27073
27235
|
}
|
|
27074
27236
|
)
|
|
27075
27237
|
] }),
|
|
27076
|
-
selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */
|
|
27238
|
+
selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx33(Box27, { paddingLeft: 2, children: /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: (() => {
|
|
27077
27239
|
const max = Math.max(8, width - 8);
|
|
27078
27240
|
const text = `~ ${rationale}`;
|
|
27079
27241
|
return text.length > max ? text.slice(0, max - 1) + "\u2026" : text;
|
|
27080
27242
|
})() }) }, rowKey ? `rationale-${rowKey}` : void 0),
|
|
27081
|
-
selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */
|
|
27082
|
-
/* @__PURE__ */
|
|
27083
|
-
/* @__PURE__ */
|
|
27084
|
-
activeField === "values" && /* @__PURE__ */
|
|
27243
|
+
selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs27(Box27, { paddingLeft: 2, flexDirection: "column", children: [
|
|
27244
|
+
/* @__PURE__ */ jsxs27(Box27, { children: [
|
|
27245
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "values:" }),
|
|
27246
|
+
activeField === "values" && /* @__PURE__ */ jsx33(Text28, { children: " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
|
|
27085
27247
|
] }),
|
|
27086
|
-
/* @__PURE__ */
|
|
27248
|
+
/* @__PURE__ */ jsx33(
|
|
27087
27249
|
EditableValueList,
|
|
27088
27250
|
{
|
|
27089
27251
|
values: prop.values,
|
|
@@ -27113,9 +27275,9 @@ function SlotRow({
|
|
|
27113
27275
|
pickerCandidates,
|
|
27114
27276
|
pickerCursor
|
|
27115
27277
|
}) {
|
|
27116
|
-
return /* @__PURE__ */
|
|
27117
|
-
/* @__PURE__ */
|
|
27118
|
-
/* @__PURE__ */
|
|
27278
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
27279
|
+
/* @__PURE__ */ jsx33(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx33(RowLabel, { name: slot.name, selected, trailing: false }) }),
|
|
27280
|
+
/* @__PURE__ */ jsx33(
|
|
27119
27281
|
DescriptionField,
|
|
27120
27282
|
{
|
|
27121
27283
|
value: slot.description,
|
|
@@ -27128,7 +27290,7 @@ function SlotRow({
|
|
|
27128
27290
|
paddingLeft: 0
|
|
27129
27291
|
}
|
|
27130
27292
|
),
|
|
27131
|
-
/* @__PURE__ */
|
|
27293
|
+
/* @__PURE__ */ jsx33(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx33(
|
|
27132
27294
|
RequiredField,
|
|
27133
27295
|
{
|
|
27134
27296
|
value: slot.required,
|
|
@@ -27137,9 +27299,9 @@ function SlotRow({
|
|
|
27137
27299
|
activeField
|
|
27138
27300
|
}
|
|
27139
27301
|
) }),
|
|
27140
|
-
!(selected && editingField && activeField === "allowedComponents") && /* @__PURE__ */
|
|
27141
|
-
/* @__PURE__ */
|
|
27142
|
-
|
|
27302
|
+
!(selected && editingField && activeField === "allowedComponents") && /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
27303
|
+
/* @__PURE__ */ jsxs27(
|
|
27304
|
+
Text28,
|
|
27143
27305
|
{
|
|
27144
27306
|
color: activeField === "allowedComponents" ? PALETTE.warning : PALETTE.muted,
|
|
27145
27307
|
bold: activeField === "allowedComponents",
|
|
@@ -27149,12 +27311,12 @@ function SlotRow({
|
|
|
27149
27311
|
]
|
|
27150
27312
|
}
|
|
27151
27313
|
),
|
|
27152
|
-
slot.allowedComponents.length === 0 ? /* @__PURE__ */
|
|
27314
|
+
slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "(any)" }) : /* @__PURE__ */ jsx33(Text28, { wrap: "wrap", children: slot.allowedComponents.join(", ") })
|
|
27153
27315
|
] }),
|
|
27154
|
-
selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */
|
|
27155
|
-
/* @__PURE__ */
|
|
27156
|
-
/* @__PURE__ */
|
|
27157
|
-
|
|
27316
|
+
selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", children: [
|
|
27317
|
+
/* @__PURE__ */ jsxs27(Box27, { children: [
|
|
27318
|
+
/* @__PURE__ */ jsxs27(
|
|
27319
|
+
Text28,
|
|
27158
27320
|
{
|
|
27159
27321
|
color: activeField === "allowedComponents" ? PALETTE.warning : PALETTE.muted,
|
|
27160
27322
|
bold: activeField === "allowedComponents",
|
|
@@ -27164,9 +27326,9 @@ function SlotRow({
|
|
|
27164
27326
|
]
|
|
27165
27327
|
}
|
|
27166
27328
|
),
|
|
27167
|
-
editingField && activeField === "allowedComponents" && /* @__PURE__ */
|
|
27329
|
+
editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: slot.allowedComponents.length > 0 ? " [a] add [e] edit [r] remove [\u2190\u2192] cycle [\u2191\u2193] navigate [K/J] reorder" : " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
|
|
27168
27330
|
] }),
|
|
27169
|
-
/* @__PURE__ */
|
|
27331
|
+
/* @__PURE__ */ jsx33(
|
|
27170
27332
|
EditableValueList,
|
|
27171
27333
|
{
|
|
27172
27334
|
values: slot.allowedComponents,
|
|
@@ -27180,21 +27342,21 @@ function SlotRow({
|
|
|
27180
27342
|
showAddInput: editingField && activeField === "allowedComponents"
|
|
27181
27343
|
}
|
|
27182
27344
|
),
|
|
27183
|
-
editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */
|
|
27345
|
+
editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */ jsx33(Box27, { paddingLeft: 2, flexDirection: "column", children: pickerCandidates.length === 0 ? /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "(no valid components to add \u2014 all remaining candidates would create cycles)" }) : (() => {
|
|
27184
27346
|
const filtered = valueText.length === 0 ? pickerCandidates : pickerCandidates.filter((n) => n.toLowerCase().includes(valueText.toLowerCase()));
|
|
27185
27347
|
if (filtered.length === 0) {
|
|
27186
|
-
return /* @__PURE__ */
|
|
27348
|
+
return /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "(no candidates match \u2014 Enter to add as free text)" });
|
|
27187
27349
|
}
|
|
27188
27350
|
const cursor = pickerCursor % filtered.length;
|
|
27189
27351
|
const MAX_VISIBLE = 5;
|
|
27190
27352
|
const start = Math.max(0, Math.min(filtered.length - MAX_VISIBLE, cursor - 2));
|
|
27191
27353
|
const slice = filtered.slice(start, start + MAX_VISIBLE);
|
|
27192
|
-
return /* @__PURE__ */
|
|
27193
|
-
/* @__PURE__ */
|
|
27354
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", children: [
|
|
27355
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
|
|
27194
27356
|
slice.map((name, i) => {
|
|
27195
27357
|
const absIdx = start + i;
|
|
27196
27358
|
const isCursor = absIdx === cursor;
|
|
27197
|
-
return /* @__PURE__ */
|
|
27359
|
+
return /* @__PURE__ */ jsx33(Text28, { color: isCursor ? PALETTE.accent : PALETTE.muted, children: isCursor ? ` ${figures6.pointer} ${name}` : ` ${name}` }, name);
|
|
27198
27360
|
})
|
|
27199
27361
|
] });
|
|
27200
27362
|
})() })
|
|
@@ -28073,18 +28235,18 @@ function FieldEditor({
|
|
|
28073
28235
|
});
|
|
28074
28236
|
const innerWidth = Math.max(1, width - 2);
|
|
28075
28237
|
if (parseErr) {
|
|
28076
|
-
return /* @__PURE__ */
|
|
28077
|
-
/* @__PURE__ */
|
|
28078
|
-
/* @__PURE__ */
|
|
28079
|
-
/* @__PURE__ */
|
|
28238
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
|
|
28239
|
+
/* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
|
|
28240
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.error, children: parseErr }),
|
|
28241
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "Cannot display structured editor. Fix the JSON first." })
|
|
28080
28242
|
] });
|
|
28081
28243
|
}
|
|
28082
28244
|
if (props.length === 0 && slots.length === 0) {
|
|
28083
|
-
return /* @__PURE__ */
|
|
28084
|
-
/* @__PURE__ */
|
|
28085
|
-
/* @__PURE__ */
|
|
28086
|
-
/* @__PURE__ */
|
|
28087
|
-
/* @__PURE__ */
|
|
28245
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
|
|
28246
|
+
/* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
|
|
28247
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
|
|
28248
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "You can add fields manually below or reject this component." }),
|
|
28249
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "Enter to save \xB7 Esc to discard" })
|
|
28088
28250
|
] });
|
|
28089
28251
|
}
|
|
28090
28252
|
const hasEmptyProperties = props.length === 0 && slots.length === 0;
|
|
@@ -28217,12 +28379,12 @@ function FieldEditor({
|
|
|
28217
28379
|
const renderRow = (row, index) => {
|
|
28218
28380
|
const key = rowKey(row, index);
|
|
28219
28381
|
if (row.kind === "header") {
|
|
28220
|
-
return /* @__PURE__ */
|
|
28382
|
+
return /* @__PURE__ */ jsx33(Box27, { flexDirection: "column", paddingTop: 1, children: /* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.success, children: row.label }) }, key);
|
|
28221
28383
|
}
|
|
28222
28384
|
if (row.kind === "component-description") {
|
|
28223
28385
|
const isSelected2 = inComponentDesc && active;
|
|
28224
28386
|
const isEditing = isSelected2 && focusLevel === "field" && editingField && activeField === "description";
|
|
28225
|
-
return /* @__PURE__ */
|
|
28387
|
+
return /* @__PURE__ */ jsx33(
|
|
28226
28388
|
DescriptionField,
|
|
28227
28389
|
{
|
|
28228
28390
|
value: editorState.componentDescription,
|
|
@@ -28253,7 +28415,7 @@ function FieldEditor({
|
|
|
28253
28415
|
valueText,
|
|
28254
28416
|
innerWidth
|
|
28255
28417
|
);
|
|
28256
|
-
return /* @__PURE__ */
|
|
28418
|
+
return /* @__PURE__ */ jsx33(
|
|
28257
28419
|
PropRow,
|
|
28258
28420
|
{
|
|
28259
28421
|
prop: p,
|
|
@@ -28280,7 +28442,7 @@ function FieldEditor({
|
|
|
28280
28442
|
valueText,
|
|
28281
28443
|
innerWidth
|
|
28282
28444
|
);
|
|
28283
|
-
return /* @__PURE__ */
|
|
28445
|
+
return /* @__PURE__ */ jsx33(
|
|
28284
28446
|
SlotRow,
|
|
28285
28447
|
{
|
|
28286
28448
|
slot: s,
|
|
@@ -28292,7 +28454,7 @@ function FieldEditor({
|
|
|
28292
28454
|
key
|
|
28293
28455
|
);
|
|
28294
28456
|
};
|
|
28295
|
-
return /* @__PURE__ */
|
|
28457
|
+
return /* @__PURE__ */ jsxs27(
|
|
28296
28458
|
FixedPanel,
|
|
28297
28459
|
{
|
|
28298
28460
|
width,
|
|
@@ -28301,9 +28463,9 @@ function FieldEditor({
|
|
|
28301
28463
|
borderStyle: "single",
|
|
28302
28464
|
borderColor: hasEmptyProperties ? PALETTE.warning : active ? PALETTE.accent : PALETTE.border,
|
|
28303
28465
|
children: [
|
|
28304
|
-
hasEmptyProperties && /* @__PURE__ */
|
|
28466
|
+
hasEmptyProperties && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify. Reject this component or add fields manually." }),
|
|
28305
28467
|
header,
|
|
28306
|
-
/* @__PURE__ */
|
|
28468
|
+
/* @__PURE__ */ jsx33(Box27, { flexDirection: "column", width: innerWidth, flexShrink: 0, children: focusLevel === "field" && !inComponentDesc && currentProp ? /* @__PURE__ */ jsx33(
|
|
28307
28469
|
PropRow,
|
|
28308
28470
|
{
|
|
28309
28471
|
prop: currentProp,
|
|
@@ -28319,7 +28481,7 @@ function FieldEditor({
|
|
|
28319
28481
|
rationale: metadata?.props?.[currentProp.name]?.rationale ?? null,
|
|
28320
28482
|
showRationale: showInlineRationales
|
|
28321
28483
|
}
|
|
28322
|
-
) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */
|
|
28484
|
+
) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */ jsx33(
|
|
28323
28485
|
SlotRow,
|
|
28324
28486
|
{
|
|
28325
28487
|
slot: currentSlot,
|
|
@@ -28338,8 +28500,8 @@ function FieldEditor({
|
|
|
28338
28500
|
) : visibleRowSlice.map((row, index) => {
|
|
28339
28501
|
const absoluteIndex = scrollStart + index;
|
|
28340
28502
|
const key = rowKey(row, absoluteIndex);
|
|
28341
|
-
return /* @__PURE__ */
|
|
28342
|
-
|
|
28503
|
+
return /* @__PURE__ */ jsx33(
|
|
28504
|
+
Box27,
|
|
28343
28505
|
{
|
|
28344
28506
|
ref: (node) => {
|
|
28345
28507
|
if (node) rowMeasureRefs.current.set(key, node);
|
|
@@ -28352,7 +28514,7 @@ function FieldEditor({
|
|
|
28352
28514
|
`visible-${key}`
|
|
28353
28515
|
);
|
|
28354
28516
|
}) }),
|
|
28355
|
-
categoryBelow && /* @__PURE__ */
|
|
28517
|
+
categoryBelow && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.success, bold: true, children: `(${categoryBelow} below)` }),
|
|
28356
28518
|
sourceOpen && !onToggleSourceExternal && (() => {
|
|
28357
28519
|
const propMeta = !inSlots && !inComponentDesc && currentProp ? metadata?.props?.[currentProp.name] : void 0;
|
|
28358
28520
|
const start = propMeta?.sourceStartLine ?? null;
|
|
@@ -28361,50 +28523,50 @@ function FieldEditor({
|
|
|
28361
28523
|
const src = metadata?.componentSource ?? null;
|
|
28362
28524
|
const headerPath = path5 ?? "<unknown source path>";
|
|
28363
28525
|
if (!start || !end2 || !src) {
|
|
28364
|
-
return /* @__PURE__ */
|
|
28365
|
-
/* @__PURE__ */
|
|
28366
|
-
/* @__PURE__ */
|
|
28367
|
-
/* @__PURE__ */
|
|
28526
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
|
|
28527
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, bold: true, children: `source: ${headerPath}` }),
|
|
28528
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "(no source location captured for this prop)" }),
|
|
28529
|
+
/* @__PURE__ */ jsx33(Text28, { children: "[s] close" })
|
|
28368
28530
|
] });
|
|
28369
28531
|
}
|
|
28370
28532
|
const lines = src.split("\n").slice(Math.max(0, start - 1), end2);
|
|
28371
|
-
return /* @__PURE__ */
|
|
28372
|
-
/* @__PURE__ */
|
|
28373
|
-
lines.map((ln, i) => /* @__PURE__ */
|
|
28374
|
-
/* @__PURE__ */
|
|
28533
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
|
|
28534
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, bold: true, children: `${headerPath}: lines ${start}\u2013${end2}` }),
|
|
28535
|
+
lines.map((ln, i) => /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: ln }, `source-line-${i}`)),
|
|
28536
|
+
/* @__PURE__ */ jsx33(Text28, { children: "[s] close \xB7 [Esc] close" })
|
|
28375
28537
|
] });
|
|
28376
28538
|
})(),
|
|
28377
|
-
showHelp && /* @__PURE__ */
|
|
28378
|
-
/* @__PURE__ */
|
|
28379
|
-
/* @__PURE__ */
|
|
28380
|
-
/* @__PURE__ */
|
|
28381
|
-
/* @__PURE__ */
|
|
28382
|
-
/* @__PURE__ */
|
|
28383
|
-
/* @__PURE__ */
|
|
28384
|
-
/* @__PURE__ */
|
|
28385
|
-
/* @__PURE__ */
|
|
28386
|
-
/* @__PURE__ */
|
|
28387
|
-
/* @__PURE__ */
|
|
28388
|
-
/* @__PURE__ */
|
|
28389
|
-
/* @__PURE__ */
|
|
28390
|
-
/* @__PURE__ */
|
|
28391
|
-
/* @__PURE__ */
|
|
28392
|
-
/* @__PURE__ */
|
|
28393
|
-
/* @__PURE__ */
|
|
28394
|
-
/* @__PURE__ */
|
|
28395
|
-
/* @__PURE__ */
|
|
28396
|
-
/* @__PURE__ */
|
|
28397
|
-
/* @__PURE__ */
|
|
28398
|
-
/* @__PURE__ */
|
|
28399
|
-
/* @__PURE__ */
|
|
28400
|
-
/* @__PURE__ */
|
|
28401
|
-
/* @__PURE__ */
|
|
28402
|
-
/* @__PURE__ */
|
|
28403
|
-
/* @__PURE__ */
|
|
28404
|
-
/* @__PURE__ */
|
|
28539
|
+
showHelp && /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.accent, paddingX: 1, children: [
|
|
28540
|
+
/* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.accent, children: "Keybindings" }),
|
|
28541
|
+
/* @__PURE__ */ jsx33(Text28, { children: " " }),
|
|
28542
|
+
/* @__PURE__ */ jsx33(Text28, { bold: true, children: "Row navigation" }),
|
|
28543
|
+
/* @__PURE__ */ jsx33(Text28, { children: " \u2191/\u2193 move between rows" }),
|
|
28544
|
+
/* @__PURE__ */ jsx33(Text28, { children: " Enter edit fields on the current row" }),
|
|
28545
|
+
/* @__PURE__ */ jsx33(Text28, { children: " d delete the current prop or slot (asks to confirm)" }),
|
|
28546
|
+
/* @__PURE__ */ jsx33(Text28, { children: " Esc exit the panel" }),
|
|
28547
|
+
/* @__PURE__ */ jsx33(Text28, { children: " " }),
|
|
28548
|
+
/* @__PURE__ */ jsx33(Text28, { bold: true, children: "Field editing" }),
|
|
28549
|
+
/* @__PURE__ */ jsx33(Text28, { children: " \u2191/\u2193/\u2190\u2192 cycle through fields" }),
|
|
28550
|
+
/* @__PURE__ */ jsx33(Text28, { children: " \u2190/\u2192 cycle picker values \xB7 move cursor in text inputs" }),
|
|
28551
|
+
/* @__PURE__ */ jsx33(Text28, { children: " Space/Enter toggle required" }),
|
|
28552
|
+
/* @__PURE__ */ jsx33(Text28, { children: " Type edit description / string default" }),
|
|
28553
|
+
/* @__PURE__ */ jsx33(Text28, { children: " Esc exit field-edit back to the row" }),
|
|
28554
|
+
/* @__PURE__ */ jsx33(Text28, { children: " " }),
|
|
28555
|
+
/* @__PURE__ */ jsx33(Text28, { bold: true, children: "Values / allowedComponents" }),
|
|
28556
|
+
/* @__PURE__ */ jsx33(Text28, { children: " a / e / r add \xB7 edit \xB7 remove" }),
|
|
28557
|
+
/* @__PURE__ */ jsx33(Text28, { children: " \u2191\u2193 navigate the list" }),
|
|
28558
|
+
/* @__PURE__ */ jsx33(Text28, { children: " K / J reorder up \xB7 down" }),
|
|
28559
|
+
/* @__PURE__ */ jsx33(Text28, { children: " " }),
|
|
28560
|
+
/* @__PURE__ */ jsx33(Text28, { bold: true, children: "Panels" }),
|
|
28561
|
+
/* @__PURE__ */ jsx33(Text28, { children: " s toggle source-view for the current prop" }),
|
|
28562
|
+
/* @__PURE__ */ jsx33(Text28, { children: " " + propRationaleKey.padEnd(16) + " toggle prop rationale panel" }),
|
|
28563
|
+
/* @__PURE__ */ jsx33(Text28, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
|
|
28564
|
+
/* @__PURE__ */ jsx33(Text28, { children: " ? toggle this overlay" }),
|
|
28565
|
+
/* @__PURE__ */ jsx33(Text28, { children: " " }),
|
|
28566
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "press ? or Esc to close" })
|
|
28405
28567
|
] }),
|
|
28406
|
-
validationError && /* @__PURE__ */
|
|
28407
|
-
/* @__PURE__ */
|
|
28568
|
+
validationError && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.error, children: "\u2717 " + validationError }),
|
|
28569
|
+
/* @__PURE__ */ jsx33(Box27, { paddingTop: 1, children: /* @__PURE__ */ jsx33(Text28, { color: pendingDelete ? PALETTE.text : PALETTE.muted, children: modeLabel }) })
|
|
28408
28570
|
]
|
|
28409
28571
|
}
|
|
28410
28572
|
);
|
|
@@ -28461,23 +28623,23 @@ var init_wrap_text = __esm({
|
|
|
28461
28623
|
});
|
|
28462
28624
|
|
|
28463
28625
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationaleLine.tsx
|
|
28464
|
-
import { Box as
|
|
28465
|
-
import { jsx as
|
|
28626
|
+
import { Box as Box28, Text as Text29 } from "ink";
|
|
28627
|
+
import { jsx as jsx34, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
28466
28628
|
function RationaleLine({ line, active }) {
|
|
28467
28629
|
if (line.kind === "blank") {
|
|
28468
|
-
return /* @__PURE__ */
|
|
28630
|
+
return /* @__PURE__ */ jsx34(Box28, { children: /* @__PURE__ */ jsx34(Text29, { children: " " }) });
|
|
28469
28631
|
}
|
|
28470
28632
|
if (line.kind === "heading") {
|
|
28471
|
-
return /* @__PURE__ */
|
|
28633
|
+
return /* @__PURE__ */ jsx34(Box28, { children: /* @__PURE__ */ jsx34(Text29, { bold: true, color: active ? PALETTE.accent : PALETTE.muted, children: line.text }) });
|
|
28472
28634
|
}
|
|
28473
28635
|
if (line.kind === "label") {
|
|
28474
|
-
return /* @__PURE__ */
|
|
28475
|
-
line.prefix && /* @__PURE__ */
|
|
28476
|
-
/* @__PURE__ */
|
|
28477
|
-
line.suffix && /* @__PURE__ */
|
|
28636
|
+
return /* @__PURE__ */ jsxs28(Box28, { children: [
|
|
28637
|
+
line.prefix && /* @__PURE__ */ jsx34(Text29, { children: line.prefix }),
|
|
28638
|
+
/* @__PURE__ */ jsx34(Text29, { bold: true, color: active ? line.color : PALETTE.muted, children: line.text }),
|
|
28639
|
+
line.suffix && /* @__PURE__ */ jsx34(Text29, { color: PALETTE.muted, children: line.suffix })
|
|
28478
28640
|
] });
|
|
28479
28641
|
}
|
|
28480
|
-
return /* @__PURE__ */
|
|
28642
|
+
return /* @__PURE__ */ jsx34(Box28, { children: /* @__PURE__ */ jsx34(Text29, { color: !active || line.dim ? PALETTE.muted : void 0, children: line.text }) });
|
|
28481
28643
|
}
|
|
28482
28644
|
var init_RationaleLine = __esm({
|
|
28483
28645
|
"packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationaleLine.tsx"() {
|
|
@@ -28487,8 +28649,8 @@ var init_RationaleLine = __esm({
|
|
|
28487
28649
|
});
|
|
28488
28650
|
|
|
28489
28651
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ComponentRationalePanel.tsx
|
|
28490
|
-
import { Box as
|
|
28491
|
-
import { jsx as
|
|
28652
|
+
import { Box as Box29, Text as Text30 } from "ink";
|
|
28653
|
+
import { jsx as jsx35, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
28492
28654
|
function renderComponentRationaleLines(data, innerWidth) {
|
|
28493
28655
|
const out = [];
|
|
28494
28656
|
const pushSection = (heading, body) => {
|
|
@@ -28555,8 +28717,8 @@ function ComponentRationalePanel({
|
|
|
28555
28717
|
const overflowed = totalLines > contentHeight;
|
|
28556
28718
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
28557
28719
|
const visibleEnd = Math.min(totalLines, scrollOffset + contentHeight);
|
|
28558
|
-
return /* @__PURE__ */
|
|
28559
|
-
|
|
28720
|
+
return /* @__PURE__ */ jsxs29(
|
|
28721
|
+
Box29,
|
|
28560
28722
|
{
|
|
28561
28723
|
flexDirection: "column",
|
|
28562
28724
|
width,
|
|
@@ -28564,9 +28726,9 @@ function ComponentRationalePanel({
|
|
|
28564
28726
|
borderStyle: "single",
|
|
28565
28727
|
borderColor: active ? PALETTE.text : void 0,
|
|
28566
28728
|
children: [
|
|
28567
|
-
/* @__PURE__ */
|
|
28568
|
-
visible.map((line, i) => /* @__PURE__ */
|
|
28569
|
-
/* @__PURE__ */
|
|
28729
|
+
/* @__PURE__ */ jsx35(Box29, { children: /* @__PURE__ */ jsx35(Text30, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Component rationale: ${data.name}` }) }),
|
|
28730
|
+
visible.map((line, i) => /* @__PURE__ */ jsx35(RationaleLine, { line, active }, i)),
|
|
28731
|
+
/* @__PURE__ */ jsx35(Box29, { children: overflowed ? /* @__PURE__ */ jsx35(Text30, { children: `${visibleStart}-${visibleEnd}/${totalLines} [\u2191\u2193] scroll [I/Esc] close` }) : /* @__PURE__ */ jsx35(Text30, { children: "[I/Esc] close" }) })
|
|
28570
28732
|
]
|
|
28571
28733
|
}
|
|
28572
28734
|
);
|
|
@@ -28583,10 +28745,10 @@ var init_ComponentRationalePanel = __esm({
|
|
|
28583
28745
|
});
|
|
28584
28746
|
|
|
28585
28747
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/HighlightedLine.tsx
|
|
28586
|
-
import { Text as
|
|
28587
|
-
import { Fragment as
|
|
28748
|
+
import { Text as Text31 } from "ink";
|
|
28749
|
+
import { Fragment as Fragment8, jsx as jsx36 } from "react/jsx-runtime";
|
|
28588
28750
|
function HighlightedLine({ parts }) {
|
|
28589
|
-
return /* @__PURE__ */
|
|
28751
|
+
return /* @__PURE__ */ jsx36(Fragment8, { children: parts.map((part, i) => /* @__PURE__ */ jsx36(Text31, { color: part.dim ? PALETTE.muted : part.color, children: part.text }, i)) });
|
|
28590
28752
|
}
|
|
28591
28753
|
var init_HighlightedLine = __esm({
|
|
28592
28754
|
"packages/experience-design-system-cli/src/tui/import/steps/09-review/components/HighlightedLine.tsx"() {
|
|
@@ -28596,8 +28758,8 @@ var init_HighlightedLine = __esm({
|
|
|
28596
28758
|
});
|
|
28597
28759
|
|
|
28598
28760
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ScrollablePanel.tsx
|
|
28599
|
-
import { Box as
|
|
28600
|
-
import { Fragment as
|
|
28761
|
+
import { Box as Box30, Text as Text32 } from "ink";
|
|
28762
|
+
import { Fragment as Fragment9, jsx as jsx37, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
28601
28763
|
function ScrollablePanel({
|
|
28602
28764
|
title,
|
|
28603
28765
|
width,
|
|
@@ -28610,12 +28772,12 @@ function ScrollablePanel({
|
|
|
28610
28772
|
children
|
|
28611
28773
|
}) {
|
|
28612
28774
|
const overflowed = totalLines > height;
|
|
28613
|
-
return /* @__PURE__ */
|
|
28614
|
-
/* @__PURE__ */
|
|
28615
|
-
/* @__PURE__ */
|
|
28616
|
-
overflowed && /* @__PURE__ */
|
|
28617
|
-
/* @__PURE__ */
|
|
28618
|
-
/* @__PURE__ */
|
|
28775
|
+
return /* @__PURE__ */ jsxs30(Box30, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
|
|
28776
|
+
/* @__PURE__ */ jsxs30(Box30, { children: [
|
|
28777
|
+
/* @__PURE__ */ jsx37(Text32, { bold: true, color: active ? void 0 : PALETTE.muted, children: title }),
|
|
28778
|
+
overflowed && /* @__PURE__ */ jsxs30(Fragment9, { children: [
|
|
28779
|
+
/* @__PURE__ */ jsx37(Box30, { flexGrow: 1 }),
|
|
28780
|
+
/* @__PURE__ */ jsx37(Text32, { color: active ? void 0 : PALETTE.muted, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
|
|
28619
28781
|
] })
|
|
28620
28782
|
] }),
|
|
28621
28783
|
children
|
|
@@ -28629,8 +28791,8 @@ var init_ScrollablePanel = __esm({
|
|
|
28629
28791
|
});
|
|
28630
28792
|
|
|
28631
28793
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/JsonPanel.tsx
|
|
28632
|
-
import { Box as
|
|
28633
|
-
import { jsx as
|
|
28794
|
+
import { Box as Box31 } from "ink";
|
|
28795
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
28634
28796
|
function highlightJson(line) {
|
|
28635
28797
|
const parts = [];
|
|
28636
28798
|
let remaining = line;
|
|
@@ -28668,7 +28830,7 @@ function highlightJson(line) {
|
|
|
28668
28830
|
parts.push({ text: remaining[0] });
|
|
28669
28831
|
remaining = remaining.slice(1);
|
|
28670
28832
|
}
|
|
28671
|
-
return /* @__PURE__ */
|
|
28833
|
+
return /* @__PURE__ */ jsx38(HighlightedLine, { parts });
|
|
28672
28834
|
}
|
|
28673
28835
|
function truncateLine(line, maxWidth) {
|
|
28674
28836
|
if (line.length <= maxWidth) return line;
|
|
@@ -28681,7 +28843,7 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
|
|
|
28681
28843
|
const totalLines = allLines.length;
|
|
28682
28844
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
28683
28845
|
const visibleEnd = Math.min(totalLines, scrollOffset + height);
|
|
28684
|
-
return /* @__PURE__ */
|
|
28846
|
+
return /* @__PURE__ */ jsx38(
|
|
28685
28847
|
ScrollablePanel,
|
|
28686
28848
|
{
|
|
28687
28849
|
title: label,
|
|
@@ -28694,7 +28856,7 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
|
|
|
28694
28856
|
borderColor: active ? "white" : void 0,
|
|
28695
28857
|
children: visibleLines.map((line, i) => {
|
|
28696
28858
|
const truncated = truncateLine(line, innerWidth);
|
|
28697
|
-
return /* @__PURE__ */
|
|
28859
|
+
return /* @__PURE__ */ jsx38(Box31, { children: highlightJson(truncated) }, i);
|
|
28698
28860
|
})
|
|
28699
28861
|
}
|
|
28700
28862
|
);
|
|
@@ -28708,7 +28870,7 @@ var init_JsonPanel = __esm({
|
|
|
28708
28870
|
});
|
|
28709
28871
|
|
|
28710
28872
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationalePanel.tsx
|
|
28711
|
-
import { jsx as
|
|
28873
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
28712
28874
|
function renderRationaleLines(rows, innerWidth) {
|
|
28713
28875
|
const out = [];
|
|
28714
28876
|
rows.forEach((row, idx) => {
|
|
@@ -28741,7 +28903,7 @@ function RationalePanel({
|
|
|
28741
28903
|
const visible = allLines.slice(scrollOffset, scrollOffset + height);
|
|
28742
28904
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
28743
28905
|
const visibleEnd = Math.min(totalLines, scrollOffset + height);
|
|
28744
|
-
return /* @__PURE__ */
|
|
28906
|
+
return /* @__PURE__ */ jsx39(
|
|
28745
28907
|
ScrollablePanel,
|
|
28746
28908
|
{
|
|
28747
28909
|
title: `RATIONALE \u2014 ${componentName}`,
|
|
@@ -28752,7 +28914,7 @@ function RationalePanel({
|
|
|
28752
28914
|
visibleStart,
|
|
28753
28915
|
visibleEnd,
|
|
28754
28916
|
borderColor: active ? PALETTE.text : void 0,
|
|
28755
|
-
children: visible.map((line, i) => /* @__PURE__ */
|
|
28917
|
+
children: visible.map((line, i) => /* @__PURE__ */ jsx39(RationaleLine, { line, active }, i))
|
|
28756
28918
|
}
|
|
28757
28919
|
);
|
|
28758
28920
|
}
|
|
@@ -28768,8 +28930,8 @@ var init_RationalePanel = __esm({
|
|
|
28768
28930
|
|
|
28769
28931
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/TokenReviewPanel.tsx
|
|
28770
28932
|
import figures7 from "figures";
|
|
28771
|
-
import { Box as
|
|
28772
|
-
import { jsx as
|
|
28933
|
+
import { Box as Box32, Text as Text33 } from "ink";
|
|
28934
|
+
import { jsx as jsx40, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
28773
28935
|
function TokenReviewPanel({
|
|
28774
28936
|
componentName,
|
|
28775
28937
|
suggestions,
|
|
@@ -28788,8 +28950,8 @@ function TokenReviewPanel({
|
|
|
28788
28950
|
const scrollStart = Math.max(0, Math.min(editCursor - Math.floor(visibleCount / 2), maxStart));
|
|
28789
28951
|
const visiblePaths = current.paths.slice(scrollStart, scrollStart + visibleCount);
|
|
28790
28952
|
const rangeLabel = current.paths.length === 0 ? "no compatible tokens" : `${scrollStart + 1}-${scrollStart + visiblePaths.length} of ${current.paths.length}`;
|
|
28791
|
-
return /* @__PURE__ */
|
|
28792
|
-
|
|
28953
|
+
return /* @__PURE__ */ jsxs31(
|
|
28954
|
+
Box32,
|
|
28793
28955
|
{
|
|
28794
28956
|
flexDirection: "column",
|
|
28795
28957
|
width,
|
|
@@ -28797,16 +28959,16 @@ function TokenReviewPanel({
|
|
|
28797
28959
|
borderStyle: "single",
|
|
28798
28960
|
borderColor: active ? PALETTE.text : void 0,
|
|
28799
28961
|
children: [
|
|
28800
|
-
/* @__PURE__ */
|
|
28801
|
-
/* @__PURE__ */
|
|
28802
|
-
/* @__PURE__ */
|
|
28803
|
-
current.paths.length === 0 && /* @__PURE__ */
|
|
28962
|
+
/* @__PURE__ */ jsx40(Text33, { bold: true, color: active ? void 0 : PALETTE.muted, wrap: "truncate", children: `Review mapped tokens \u2014 ${componentName} \xB7 ${current.propName}${current.kinds.length > 0 ? ` (${current.kinds.join(", ")})` : ""}` }),
|
|
28963
|
+
/* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: `Tick the tokens this property may use (${rangeLabel}).` }),
|
|
28964
|
+
/* @__PURE__ */ jsx40(Text33, { children: " " }),
|
|
28965
|
+
current.paths.length === 0 && /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, children: "(no compatible tokens found for this token kind)" }),
|
|
28804
28966
|
visiblePaths.map((path5, i) => {
|
|
28805
28967
|
const pathIndex = scrollStart + i;
|
|
28806
28968
|
const checked = editSelection.has(path5);
|
|
28807
28969
|
const focused = pathIndex === editCursor;
|
|
28808
|
-
return /* @__PURE__ */
|
|
28809
|
-
|
|
28970
|
+
return /* @__PURE__ */ jsx40(Box32, { children: /* @__PURE__ */ jsx40(
|
|
28971
|
+
Text33,
|
|
28810
28972
|
{
|
|
28811
28973
|
color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted,
|
|
28812
28974
|
bold: focused,
|
|
@@ -28815,15 +28977,15 @@ function TokenReviewPanel({
|
|
|
28815
28977
|
}
|
|
28816
28978
|
) }, path5);
|
|
28817
28979
|
}),
|
|
28818
|
-
/* @__PURE__ */
|
|
28819
|
-
/* @__PURE__ */
|
|
28820
|
-
/* @__PURE__ */
|
|
28980
|
+
/* @__PURE__ */ jsx40(Text33, { children: " " }),
|
|
28981
|
+
/* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
|
|
28982
|
+
/* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
|
|
28821
28983
|
]
|
|
28822
28984
|
}
|
|
28823
28985
|
);
|
|
28824
28986
|
}
|
|
28825
|
-
return /* @__PURE__ */
|
|
28826
|
-
|
|
28987
|
+
return /* @__PURE__ */ jsxs31(
|
|
28988
|
+
Box32,
|
|
28827
28989
|
{
|
|
28828
28990
|
flexDirection: "column",
|
|
28829
28991
|
width,
|
|
@@ -28831,33 +28993,33 @@ function TokenReviewPanel({
|
|
|
28831
28993
|
borderStyle: "single",
|
|
28832
28994
|
borderColor: active ? PALETTE.text : void 0,
|
|
28833
28995
|
children: [
|
|
28834
|
-
/* @__PURE__ */
|
|
28835
|
-
/* @__PURE__ */
|
|
28836
|
-
/* @__PURE__ */
|
|
28837
|
-
/* @__PURE__ */
|
|
28838
|
-
suggestions.length === 0 && /* @__PURE__ */
|
|
28996
|
+
/* @__PURE__ */ jsx40(Text33, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Review mapped tokens \u2014 ${componentName}` }),
|
|
28997
|
+
/* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: `${componentName} has ${suggestions.length} design ${suggestions.length === 1 ? "prop" : "props"} of type token. Select which tokens are allowed for each property.` }),
|
|
28998
|
+
/* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: "Suggested tokens come from the agent. Allowed tokens are what editors can pick in Contentful." }),
|
|
28999
|
+
/* @__PURE__ */ jsx40(Text33, { children: " " }),
|
|
29000
|
+
suggestions.length === 0 && /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, children: "(no token suggestions for this component)" }),
|
|
28839
29001
|
suggestions.map((s, i) => {
|
|
28840
29002
|
const focused = i === selectedRow;
|
|
28841
|
-
return /* @__PURE__ */
|
|
28842
|
-
/* @__PURE__ */
|
|
28843
|
-
/* @__PURE__ */
|
|
28844
|
-
|
|
29003
|
+
return /* @__PURE__ */ jsxs31(Box32, { flexDirection: "column", children: [
|
|
29004
|
+
/* @__PURE__ */ jsx40(Box32, { children: /* @__PURE__ */ jsx40(Text33, { color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted, bold: focused, children: `${focused ? figures7.pointer : " "} ${s.propName}${s.kinds.length > 0 ? ` (${s.kinds.join(", ")})` : ""}` }) }),
|
|
29005
|
+
/* @__PURE__ */ jsx40(
|
|
29006
|
+
Text33,
|
|
28845
29007
|
{
|
|
28846
29008
|
color: PALETTE.muted,
|
|
28847
29009
|
children: ` suggested: ${s.suggested.length > 0 ? s.suggested.join(", ") : "none"}`
|
|
28848
29010
|
}
|
|
28849
29011
|
),
|
|
28850
|
-
/* @__PURE__ */
|
|
28851
|
-
|
|
29012
|
+
/* @__PURE__ */ jsx40(
|
|
29013
|
+
Text33,
|
|
28852
29014
|
{
|
|
28853
29015
|
color: PALETTE.muted,
|
|
28854
29016
|
children: ` allowed: ${s.allowed.length > 0 ? s.allowed.join(", ") : "none (any token)"}`
|
|
28855
29017
|
}
|
|
28856
29018
|
),
|
|
28857
|
-
/* @__PURE__ */
|
|
29019
|
+
/* @__PURE__ */ jsx40(Text33, { children: " " })
|
|
28858
29020
|
] }, s.propName);
|
|
28859
29021
|
}),
|
|
28860
|
-
/* @__PURE__ */
|
|
29022
|
+
/* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, children: "[\u2191/\u2193] move [Enter] edit allowed tokens [Esc] close" })
|
|
28861
29023
|
]
|
|
28862
29024
|
}
|
|
28863
29025
|
);
|
|
@@ -28870,8 +29032,8 @@ var init_TokenReviewPanel = __esm({
|
|
|
28870
29032
|
});
|
|
28871
29033
|
|
|
28872
29034
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx
|
|
28873
|
-
import { Text as
|
|
28874
|
-
import { Fragment as
|
|
29035
|
+
import { Text as Text34 } from "ink";
|
|
29036
|
+
import { Fragment as Fragment10, jsx as jsx41, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
28875
29037
|
function ReviewDetailsPanel({
|
|
28876
29038
|
selectedKey,
|
|
28877
29039
|
panelOpen,
|
|
@@ -28906,7 +29068,7 @@ function ReviewDetailsPanel({
|
|
|
28906
29068
|
rationale: s.rationale ?? ""
|
|
28907
29069
|
}))
|
|
28908
29070
|
];
|
|
28909
|
-
return /* @__PURE__ */
|
|
29071
|
+
return /* @__PURE__ */ jsx41(
|
|
28910
29072
|
RationalePanel,
|
|
28911
29073
|
{
|
|
28912
29074
|
componentName: componentRationale?.name ?? selectedKey,
|
|
@@ -28919,7 +29081,7 @@ function ReviewDetailsPanel({
|
|
|
28919
29081
|
);
|
|
28920
29082
|
}
|
|
28921
29083
|
if (panelOpen === "component-rationale") {
|
|
28922
|
-
return /* @__PURE__ */
|
|
29084
|
+
return /* @__PURE__ */ jsx41(
|
|
28923
29085
|
ComponentRationalePanel,
|
|
28924
29086
|
{
|
|
28925
29087
|
data: componentRationale ?? {
|
|
@@ -28944,14 +29106,14 @@ function ReviewDetailsPanel({
|
|
|
28944
29106
|
const headerPath = path5 ?? "<unknown source path>";
|
|
28945
29107
|
const sourceLineCount = Math.max(1, height - 4);
|
|
28946
29108
|
const lines = source ? source.split("\n").slice(panelScrollOffset, panelScrollOffset + sourceLineCount) : [];
|
|
28947
|
-
return /* @__PURE__ */
|
|
28948
|
-
/* @__PURE__ */
|
|
28949
|
-
source ? lines.map((line, index) => /* @__PURE__ */
|
|
28950
|
-
/* @__PURE__ */
|
|
29109
|
+
return /* @__PURE__ */ jsxs32(FixedPanel, { width, height, borderStyle: "single", borderColor: sourceBorderColor, paddingLeft: 1, children: [
|
|
29110
|
+
/* @__PURE__ */ jsx41(Text34, { color: PALETTE.muted, bold: true, wrap: "truncate-end", children: `source: ${headerPath}` }),
|
|
29111
|
+
source ? lines.map((line, index) => /* @__PURE__ */ jsx41(Text34, { color: PALETTE.muted, wrap: "truncate-end", children: line }, `source-line-${index}`)) : /* @__PURE__ */ jsx41(Text34, { color: PALETTE.muted, children: "(no source captured)" }),
|
|
29112
|
+
/* @__PURE__ */ jsx41(Text34, { color: PALETTE.muted, wrap: "truncate-end", children: "[s/Esc] close" })
|
|
28951
29113
|
] });
|
|
28952
29114
|
}
|
|
28953
29115
|
if (panelOpen === "token-review") {
|
|
28954
|
-
return /* @__PURE__ */
|
|
29116
|
+
return /* @__PURE__ */ jsx41(
|
|
28955
29117
|
TokenReviewPanel,
|
|
28956
29118
|
{
|
|
28957
29119
|
componentName: selectedKey,
|
|
@@ -28967,7 +29129,7 @@ function ReviewDetailsPanel({
|
|
|
28967
29129
|
);
|
|
28968
29130
|
}
|
|
28969
29131
|
if (showJson) {
|
|
28970
|
-
return /* @__PURE__ */
|
|
29132
|
+
return /* @__PURE__ */ jsx41(
|
|
28971
29133
|
JsonPanel,
|
|
28972
29134
|
{
|
|
28973
29135
|
label: "GENERATED DEFINITION (read-only)",
|
|
@@ -28979,7 +29141,7 @@ function ReviewDetailsPanel({
|
|
|
28979
29141
|
}
|
|
28980
29142
|
);
|
|
28981
29143
|
}
|
|
28982
|
-
return /* @__PURE__ */
|
|
29144
|
+
return /* @__PURE__ */ jsx41(Fragment10, { children: editor });
|
|
28983
29145
|
}
|
|
28984
29146
|
var init_review_details_panel = __esm({
|
|
28985
29147
|
"packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx"() {
|
|
@@ -28994,7 +29156,7 @@ var init_review_details_panel = __esm({
|
|
|
28994
29156
|
});
|
|
28995
29157
|
|
|
28996
29158
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDetailsEditor.tsx
|
|
28997
|
-
import { jsx as
|
|
29159
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
28998
29160
|
import { createElement } from "react";
|
|
28999
29161
|
function toFieldEditorMetadata(reviewMetadata) {
|
|
29000
29162
|
if (!reviewMetadata) return void 0;
|
|
@@ -29028,7 +29190,7 @@ function ReviewDetailsEditor({
|
|
|
29028
29190
|
jsonScrollOffset,
|
|
29029
29191
|
currentTokenSuggestions
|
|
29030
29192
|
} = reviewEditor;
|
|
29031
|
-
return /* @__PURE__ */
|
|
29193
|
+
return /* @__PURE__ */ jsx42(
|
|
29032
29194
|
ReviewDetailsPanel,
|
|
29033
29195
|
{
|
|
29034
29196
|
selectedKey,
|
|
@@ -29075,8 +29237,8 @@ var init_ReviewDetailsEditor = __esm({
|
|
|
29075
29237
|
});
|
|
29076
29238
|
|
|
29077
29239
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewComponentPanel.tsx
|
|
29078
|
-
import { Box as
|
|
29079
|
-
import { Fragment as
|
|
29240
|
+
import { Box as Box33, Text as Text35 } from "ink";
|
|
29241
|
+
import { Fragment as Fragment11, jsx as jsx43, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
29080
29242
|
function buildReviewFieldEditor(reviewEditor, selectedJson, onExit, overrides = {}) {
|
|
29081
29243
|
return {
|
|
29082
29244
|
value: reviewEditor.draftValue || selectedJson,
|
|
@@ -29116,24 +29278,24 @@ function ReviewEmptyComponentsWarning({
|
|
|
29116
29278
|
hidden
|
|
29117
29279
|
}) {
|
|
29118
29280
|
if (hidden || count === 0) return null;
|
|
29119
|
-
return /* @__PURE__ */
|
|
29281
|
+
return /* @__PURE__ */ jsx43(Text35, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
|
|
29120
29282
|
}
|
|
29121
29283
|
function ReviewNoSelection() {
|
|
29122
|
-
return /* @__PURE__ */
|
|
29284
|
+
return /* @__PURE__ */ jsx43(Box33, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx43(Text35, { color: PALETTE.muted, children: "No component selected" }) });
|
|
29123
29285
|
}
|
|
29124
29286
|
function ReviewFinalizeError({
|
|
29125
29287
|
message,
|
|
29126
29288
|
hidden
|
|
29127
29289
|
}) {
|
|
29128
29290
|
if (hidden || !message) return null;
|
|
29129
|
-
return /* @__PURE__ */
|
|
29291
|
+
return /* @__PURE__ */ jsx43(Text35, { color: PALETTE.error, children: `\u26A0 ${message}` });
|
|
29130
29292
|
}
|
|
29131
29293
|
function ReviewPanelFooter({
|
|
29132
29294
|
reviewEditor,
|
|
29133
29295
|
sidebarFocused,
|
|
29134
29296
|
sidebarFooter
|
|
29135
29297
|
}) {
|
|
29136
|
-
return /* @__PURE__ */
|
|
29298
|
+
return /* @__PURE__ */ jsx43(Fragment11, { children: reviewEditor.panelOpen === "token-review" ? "" : sidebarFocused ? sidebarFooter : reviewEditor.showJson ? " [\u2191\u2193] scroll [Ctrl+u/d] half-page [gg/G] top/bottom [Tab] focus list" : " [Tab] focus list [Enter] edit fields" + (reviewEditor.currentTokenSuggestions().length > 0 ? " [t] review mapped tokens" : "") });
|
|
29137
29299
|
}
|
|
29138
29300
|
function ReviewComponentTitle({
|
|
29139
29301
|
selectedKey,
|
|
@@ -29141,10 +29303,10 @@ function ReviewComponentTitle({
|
|
|
29141
29303
|
slotCount,
|
|
29142
29304
|
sidebarFocused
|
|
29143
29305
|
}) {
|
|
29144
|
-
return /* @__PURE__ */
|
|
29145
|
-
/* @__PURE__ */
|
|
29146
|
-
/* @__PURE__ */
|
|
29147
|
-
/* @__PURE__ */
|
|
29306
|
+
return /* @__PURE__ */ jsxs33(Box33, { paddingLeft: 2, paddingBottom: 1, children: [
|
|
29307
|
+
/* @__PURE__ */ jsx43(Text35, { bold: true, wrap: "truncate-end", children: selectedKey }),
|
|
29308
|
+
/* @__PURE__ */ jsx43(Box33, { flexGrow: 1 }),
|
|
29309
|
+
/* @__PURE__ */ jsxs33(Text35, { color: PALETTE.muted, wrap: "truncate-end", children: [
|
|
29148
29310
|
propCount,
|
|
29149
29311
|
" prop",
|
|
29150
29312
|
propCount !== 1 ? "s" : "",
|
|
@@ -29173,8 +29335,8 @@ function ReviewComponentPanel({
|
|
|
29173
29335
|
const slotCount = selectedEntry.$slots ? Object.keys(selectedEntry.$slots).length : 0;
|
|
29174
29336
|
const contentHeight = Math.max(1, height - 2);
|
|
29175
29337
|
const contentWidth = Math.max(1, width - 1);
|
|
29176
|
-
return /* @__PURE__ */
|
|
29177
|
-
/* @__PURE__ */
|
|
29338
|
+
return /* @__PURE__ */ jsx43(FixedPanel, { width, height, borderStyle: void 0, paddingLeft: 1, children: /* @__PURE__ */ jsxs33(Box33, { flexDirection: "column", width: contentWidth, height, flexShrink: 0, overflowY: "hidden", children: [
|
|
29339
|
+
/* @__PURE__ */ jsx43(Box33, { width: contentWidth, height: contentHeight, flexShrink: 0, overflowY: "hidden", children: /* @__PURE__ */ jsx43(
|
|
29178
29340
|
ReviewDetailsEditor,
|
|
29179
29341
|
{
|
|
29180
29342
|
selectedKey,
|
|
@@ -29187,7 +29349,7 @@ function ReviewComponentPanel({
|
|
|
29187
29349
|
jsonValue,
|
|
29188
29350
|
sidebarFocused,
|
|
29189
29351
|
fieldEditor,
|
|
29190
|
-
header: /* @__PURE__ */
|
|
29352
|
+
header: /* @__PURE__ */ jsx43(
|
|
29191
29353
|
ReviewComponentTitle,
|
|
29192
29354
|
{
|
|
29193
29355
|
selectedKey,
|
|
@@ -29198,8 +29360,8 @@ function ReviewComponentPanel({
|
|
|
29198
29360
|
)
|
|
29199
29361
|
}
|
|
29200
29362
|
) }),
|
|
29201
|
-
/* @__PURE__ */
|
|
29202
|
-
/* @__PURE__ */
|
|
29363
|
+
/* @__PURE__ */ jsx43(Box33, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx43(Text35, { color: saveError ? PALETTE.error : void 0, wrap: "truncate-end", children: saveError ? "\u2717 " + saveError : " " }) }),
|
|
29364
|
+
/* @__PURE__ */ jsx43(Box33, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx43(Text35, { color: PALETTE.muted, wrap: "truncate-end", children: /* @__PURE__ */ jsx43(
|
|
29203
29365
|
ReviewPanelFooter,
|
|
29204
29366
|
{
|
|
29205
29367
|
reviewEditor,
|
|
@@ -29220,8 +29382,8 @@ var init_ReviewComponentPanel = __esm({
|
|
|
29220
29382
|
});
|
|
29221
29383
|
|
|
29222
29384
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewStatus.tsx
|
|
29223
|
-
import { Box as
|
|
29224
|
-
import { jsx as
|
|
29385
|
+
import { Box as Box34, Text as Text36 } from "ink";
|
|
29386
|
+
import { jsx as jsx44, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
29225
29387
|
function countReviewStatuses(entries) {
|
|
29226
29388
|
return entries.reduce(
|
|
29227
29389
|
(counts, entry) => {
|
|
@@ -29234,13 +29396,13 @@ function countReviewStatuses(entries) {
|
|
|
29234
29396
|
);
|
|
29235
29397
|
}
|
|
29236
29398
|
function ReviewLoadingState() {
|
|
29237
|
-
return /* @__PURE__ */
|
|
29399
|
+
return /* @__PURE__ */ jsx44(Box34, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: "Loading generated definitions..." }) });
|
|
29238
29400
|
}
|
|
29239
29401
|
function ReviewLoadError({ message }) {
|
|
29240
|
-
return /* @__PURE__ */
|
|
29241
|
-
/* @__PURE__ */
|
|
29242
|
-
/* @__PURE__ */
|
|
29243
|
-
/* @__PURE__ */
|
|
29402
|
+
return /* @__PURE__ */ jsxs34(Box34, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
29403
|
+
/* @__PURE__ */ jsx44(Text36, { color: PALETTE.error, children: message }),
|
|
29404
|
+
/* @__PURE__ */ jsx44(Text36, { children: " " }),
|
|
29405
|
+
/* @__PURE__ */ jsx44(ControlHints, { hints: [{ keys: "q / Enter / Esc", label: "Quit" }] })
|
|
29244
29406
|
] });
|
|
29245
29407
|
}
|
|
29246
29408
|
var init_ReviewStatus = __esm({
|
|
@@ -29464,8 +29626,8 @@ var init_run_live_preview = __esm({
|
|
|
29464
29626
|
});
|
|
29465
29627
|
|
|
29466
29628
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FinalizeDialog.tsx
|
|
29467
|
-
import { Box as
|
|
29468
|
-
import { Fragment as
|
|
29629
|
+
import { Box as Box35, Text as Text37 } from "ink";
|
|
29630
|
+
import { Fragment as Fragment12, jsx as jsx45, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
29469
29631
|
function FinalizeDialog({
|
|
29470
29632
|
accepted,
|
|
29471
29633
|
rejected,
|
|
@@ -29493,51 +29655,51 @@ function FinalizeDialog({
|
|
|
29493
29655
|
const windowed = removed.slice(offset, offset + FINALIZE_REMOVED_WINDOW);
|
|
29494
29656
|
const hasMoreBelow = offset + FINALIZE_REMOVED_WINDOW < removed.length;
|
|
29495
29657
|
const hasMoreAbove = offset > 0;
|
|
29496
|
-
return /* @__PURE__ */
|
|
29497
|
-
/* @__PURE__ */
|
|
29498
|
-
/* @__PURE__ */
|
|
29499
|
-
/* @__PURE__ */
|
|
29500
|
-
/* @__PURE__ */
|
|
29658
|
+
return /* @__PURE__ */ jsx45(Box35, { width: "100%", paddingX: 2, children: /* @__PURE__ */ jsxs35(Box35, { flexDirection: "column", alignItems: "flex-start", children: [
|
|
29659
|
+
/* @__PURE__ */ jsx45(Text37, { bold: true, children: "Finalize" }),
|
|
29660
|
+
/* @__PURE__ */ jsx45(Text37, { children: " " }),
|
|
29661
|
+
/* @__PURE__ */ jsxs35(Text37, { children: [
|
|
29662
|
+
/* @__PURE__ */ jsxs35(Text37, { color: PALETTE.success, children: [
|
|
29501
29663
|
accepted,
|
|
29502
29664
|
" accepted"
|
|
29503
29665
|
] }),
|
|
29504
|
-
/* @__PURE__ */
|
|
29505
|
-
/* @__PURE__ */
|
|
29666
|
+
/* @__PURE__ */ jsx45(Text37, { children: " \xB7 " }),
|
|
29667
|
+
/* @__PURE__ */ jsxs35(Text37, { color: PALETTE.error, children: [
|
|
29506
29668
|
rejected,
|
|
29507
29669
|
" rejected"
|
|
29508
29670
|
] }),
|
|
29509
|
-
/* @__PURE__ */
|
|
29510
|
-
/* @__PURE__ */
|
|
29671
|
+
/* @__PURE__ */ jsx45(Text37, { children: " \xB7 " }),
|
|
29672
|
+
/* @__PURE__ */ jsxs35(Text37, { color: PALETTE.muted, children: [
|
|
29511
29673
|
needsReview,
|
|
29512
29674
|
" unresolved"
|
|
29513
29675
|
] })
|
|
29514
29676
|
] }),
|
|
29515
|
-
/* @__PURE__ */
|
|
29516
|
-
noneAccepted && /* @__PURE__ */
|
|
29517
|
-
/* @__PURE__ */
|
|
29518
|
-
/* @__PURE__ */
|
|
29519
|
-
/* @__PURE__ */
|
|
29677
|
+
/* @__PURE__ */ jsx45(Text37, { children: " " }),
|
|
29678
|
+
noneAccepted && /* @__PURE__ */ jsxs35(Fragment12, { children: [
|
|
29679
|
+
/* @__PURE__ */ jsx45(Text37, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
|
|
29680
|
+
/* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, children: "Accept at least one component ([a] a row, [A] accept all) to push." }),
|
|
29681
|
+
/* @__PURE__ */ jsx45(Text37, { children: " " })
|
|
29520
29682
|
] }),
|
|
29521
|
-
!allResolved && /* @__PURE__ */
|
|
29522
|
-
/* @__PURE__ */
|
|
29523
|
-
/* @__PURE__ */
|
|
29524
|
-
/* @__PURE__ */
|
|
29683
|
+
!allResolved && /* @__PURE__ */ jsxs35(Fragment12, { children: [
|
|
29684
|
+
/* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
|
|
29685
|
+
/* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, children: "Only explicitly accepted components ship." }),
|
|
29686
|
+
/* @__PURE__ */ jsx45(Text37, { children: " " })
|
|
29525
29687
|
] }),
|
|
29526
|
-
/* @__PURE__ */
|
|
29527
|
-
previewStatus === "running" ? /* @__PURE__ */
|
|
29528
|
-
/* @__PURE__ */
|
|
29688
|
+
/* @__PURE__ */ jsxs35(Box35, { flexDirection: "column", height: 2, children: [
|
|
29689
|
+
previewStatus === "running" ? /* @__PURE__ */ jsx45(Text37, { color: PALETTE.muted, children: "Previewing deletions against the target space\u2026" }) : previewStatus === "error" ? /* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, children: "\u26A0 Could not preview deletions (the push will still proceed)." }) : /* @__PURE__ */ jsx45(Text37, { children: " " }),
|
|
29690
|
+
/* @__PURE__ */ jsx45(Text37, { children: " " })
|
|
29529
29691
|
] }),
|
|
29530
|
-
previewStatus === "done" && removed.length > 0 && /* @__PURE__ */
|
|
29531
|
-
/* @__PURE__ */
|
|
29532
|
-
hasMoreAbove && /* @__PURE__ */
|
|
29533
|
-
windowed.map((rc) => /* @__PURE__ */
|
|
29534
|
-
hasMoreBelow && /* @__PURE__ */
|
|
29535
|
-
removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */
|
|
29536
|
-
/* @__PURE__ */
|
|
29692
|
+
previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs35(Fragment12, { children: [
|
|
29693
|
+
/* @__PURE__ */ jsx45(Text37, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
|
|
29694
|
+
hasMoreAbove && /* @__PURE__ */ jsx45(Text37, { color: PALETTE.muted, children: "\u2191 more above" }),
|
|
29695
|
+
windowed.map((rc) => /* @__PURE__ */ jsx45(Text37, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
|
|
29696
|
+
hasMoreBelow && /* @__PURE__ */ jsx45(Text37, { color: PALETTE.muted, children: "\u2193 more below" }),
|
|
29697
|
+
removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx45(Text37, { children: "[\u2191\u2193] scroll deletions" }),
|
|
29698
|
+
/* @__PURE__ */ jsx45(Text37, { children: " " })
|
|
29537
29699
|
] }),
|
|
29538
|
-
/* @__PURE__ */
|
|
29539
|
-
/* @__PURE__ */
|
|
29540
|
-
/* @__PURE__ */
|
|
29700
|
+
/* @__PURE__ */ jsx45(Text37, { children: noneAccepted ? "Confirm exit with nothing accepted?" : allResolved ? "Save decisions and exit? All components resolved." : "Save decisions and exit?" }),
|
|
29701
|
+
/* @__PURE__ */ jsx45(Text37, { children: " " }),
|
|
29702
|
+
/* @__PURE__ */ jsx45(
|
|
29541
29703
|
ControlHints,
|
|
29542
29704
|
{
|
|
29543
29705
|
hints: [
|
|
@@ -30005,8 +30167,8 @@ var init_use_review_surface_state = __esm({
|
|
|
30005
30167
|
});
|
|
30006
30168
|
|
|
30007
30169
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/QuitDialog.tsx
|
|
30008
|
-
import { Box as
|
|
30009
|
-
import { Fragment as
|
|
30170
|
+
import { Box as Box36, Text as Text38 } from "ink";
|
|
30171
|
+
import { Fragment as Fragment13, jsx as jsx46, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
30010
30172
|
function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
30011
30173
|
useImmediateInput((input, key) => {
|
|
30012
30174
|
if (input === "y" || key.return) {
|
|
@@ -30015,16 +30177,16 @@ function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
|
30015
30177
|
onCancel();
|
|
30016
30178
|
}
|
|
30017
30179
|
});
|
|
30018
|
-
return /* @__PURE__ */
|
|
30019
|
-
/* @__PURE__ */
|
|
30020
|
-
/* @__PURE__ */
|
|
30021
|
-
hasUnsavedDrafts ? /* @__PURE__ */
|
|
30022
|
-
/* @__PURE__ */
|
|
30023
|
-
/* @__PURE__ */
|
|
30024
|
-
/* @__PURE__ */
|
|
30025
|
-
] }) : /* @__PURE__ */
|
|
30026
|
-
/* @__PURE__ */
|
|
30027
|
-
/* @__PURE__ */
|
|
30180
|
+
return /* @__PURE__ */ jsxs36(Box36, { flexDirection: "column", borderStyle: "round", padding: 1, width: 50, children: [
|
|
30181
|
+
/* @__PURE__ */ jsx46(Text38, { bold: true, children: "\u2500".repeat(19) + " Quit " + "\u2500".repeat(19) }),
|
|
30182
|
+
/* @__PURE__ */ jsx46(Text38, { children: " " }),
|
|
30183
|
+
hasUnsavedDrafts ? /* @__PURE__ */ jsxs36(Fragment13, { children: [
|
|
30184
|
+
/* @__PURE__ */ jsx46(Text38, { children: "You have unsaved draft edits." }),
|
|
30185
|
+
/* @__PURE__ */ jsx46(Text38, { children: "Session state is preserved \u2014 you can resume" }),
|
|
30186
|
+
/* @__PURE__ */ jsx46(Text38, { children: "by running the same review command again." })
|
|
30187
|
+
] }) : /* @__PURE__ */ jsx46(Text38, { children: "Session is saved. Quit without finalizing?" }),
|
|
30188
|
+
/* @__PURE__ */ jsx46(Text38, { children: " " }),
|
|
30189
|
+
/* @__PURE__ */ jsx46(
|
|
30028
30190
|
ControlHints,
|
|
30029
30191
|
{
|
|
30030
30192
|
hints: [
|
|
@@ -30044,8 +30206,8 @@ var init_QuitDialog = __esm({
|
|
|
30044
30206
|
});
|
|
30045
30207
|
|
|
30046
30208
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDialogs.tsx
|
|
30047
|
-
import { Box as
|
|
30048
|
-
import { Fragment as
|
|
30209
|
+
import { Box as Box37, Text as Text39 } from "ink";
|
|
30210
|
+
import { Fragment as Fragment14, jsx as jsx47, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
30049
30211
|
function ReviewFinalizeDialogs({
|
|
30050
30212
|
showFinalize,
|
|
30051
30213
|
showQuit,
|
|
@@ -30059,8 +30221,8 @@ function ReviewFinalizeDialogs({
|
|
|
30059
30221
|
onQuitCancel
|
|
30060
30222
|
}) {
|
|
30061
30223
|
const { accepted, rejected, needsReview } = countReviewStatuses(components);
|
|
30062
|
-
return /* @__PURE__ */
|
|
30063
|
-
showFinalize && /* @__PURE__ */
|
|
30224
|
+
return /* @__PURE__ */ jsxs37(Fragment14, { children: [
|
|
30225
|
+
showFinalize && /* @__PURE__ */ jsx47(
|
|
30064
30226
|
FinalizeDialog,
|
|
30065
30227
|
{
|
|
30066
30228
|
accepted,
|
|
@@ -30073,7 +30235,7 @@ function ReviewFinalizeDialogs({
|
|
|
30073
30235
|
onCancel: onFinalizeCancel
|
|
30074
30236
|
}
|
|
30075
30237
|
),
|
|
30076
|
-
showQuit && /* @__PURE__ */
|
|
30238
|
+
showQuit && /* @__PURE__ */ jsx47(QuitDialog, { hasUnsavedDrafts: false, onConfirm: onQuitConfirm, onCancel: onQuitCancel })
|
|
30077
30239
|
] });
|
|
30078
30240
|
}
|
|
30079
30241
|
function ReviewStepDialogs({
|
|
@@ -30083,7 +30245,7 @@ function ReviewStepDialogs({
|
|
|
30083
30245
|
onFinalize,
|
|
30084
30246
|
onQuit
|
|
30085
30247
|
}) {
|
|
30086
|
-
return /* @__PURE__ */
|
|
30248
|
+
return /* @__PURE__ */ jsx47(
|
|
30087
30249
|
ReviewFinalizeDialogs,
|
|
30088
30250
|
{
|
|
30089
30251
|
showFinalize: surfaceState.showFinalize,
|
|
@@ -30101,12 +30263,12 @@ function ReviewStepDialogs({
|
|
|
30101
30263
|
}
|
|
30102
30264
|
function ReviewReloadDialog({ open }) {
|
|
30103
30265
|
if (!open) return null;
|
|
30104
|
-
return /* @__PURE__ */
|
|
30105
|
-
/* @__PURE__ */
|
|
30106
|
-
/* @__PURE__ */
|
|
30107
|
-
/* @__PURE__ */
|
|
30108
|
-
/* @__PURE__ */
|
|
30109
|
-
/* @__PURE__ */
|
|
30266
|
+
return /* @__PURE__ */ jsxs37(Box37, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
30267
|
+
/* @__PURE__ */ jsx47(Text39, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
|
|
30268
|
+
/* @__PURE__ */ jsx47(Text39, { children: "Unsaved in-memory changes will be lost." }),
|
|
30269
|
+
/* @__PURE__ */ jsx47(Text39, { children: " " }),
|
|
30270
|
+
/* @__PURE__ */ jsx47(Text39, { children: " [Enter] Confirm" }),
|
|
30271
|
+
/* @__PURE__ */ jsx47(Text39, { children: " [Esc] Cancel" })
|
|
30110
30272
|
] });
|
|
30111
30273
|
}
|
|
30112
30274
|
var init_ReviewDialogs = __esm({
|
|
@@ -30629,8 +30791,8 @@ var init_use_review_log = __esm({
|
|
|
30629
30791
|
});
|
|
30630
30792
|
|
|
30631
30793
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/LivePreviewSummary.tsx
|
|
30632
|
-
import { Box as
|
|
30633
|
-
import { jsx as
|
|
30794
|
+
import { Box as Box38, Text as Text40 } from "ink";
|
|
30795
|
+
import { jsx as jsx48, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
30634
30796
|
function LivePreviewSummary({
|
|
30635
30797
|
enabled,
|
|
30636
30798
|
previewAnnotations,
|
|
@@ -30644,19 +30806,19 @@ function LivePreviewSummary({
|
|
|
30644
30806
|
const counts = { new: 0, changed: 0, removed: 0, breaking: 0 };
|
|
30645
30807
|
for (const annotation of previewAnnotations.values()) counts[annotation] += 1;
|
|
30646
30808
|
const hasCounts = counts.new + counts.changed + counts.removed + counts.breaking > 0;
|
|
30647
|
-
if (disabled) return /* @__PURE__ */
|
|
30648
|
-
if (status === "running" && !hasCounts) return /* @__PURE__ */
|
|
30809
|
+
if (disabled) return /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: "Preview: disabled (creds rejected)" });
|
|
30810
|
+
if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: `Preview: ${spinner} running...` });
|
|
30649
30811
|
if (!hasCounts) return null;
|
|
30650
|
-
return /* @__PURE__ */
|
|
30651
|
-
/* @__PURE__ */
|
|
30652
|
-
/* @__PURE__ */
|
|
30653
|
-
/* @__PURE__ */
|
|
30654
|
-
/* @__PURE__ */
|
|
30655
|
-
/* @__PURE__ */
|
|
30656
|
-
/* @__PURE__ */
|
|
30657
|
-
showRemovedListHint && removedCount > 0 && /* @__PURE__ */
|
|
30658
|
-
/* @__PURE__ */
|
|
30659
|
-
/* @__PURE__ */
|
|
30812
|
+
return /* @__PURE__ */ jsxs38(Box38, { children: [
|
|
30813
|
+
/* @__PURE__ */ jsx48(Text40, { children: "Preview: " }),
|
|
30814
|
+
/* @__PURE__ */ jsx48(Text40, { color: PALETTE.success, children: `${counts.new} new` }),
|
|
30815
|
+
/* @__PURE__ */ jsx48(Text40, { children: " \xB7 " }),
|
|
30816
|
+
/* @__PURE__ */ jsx48(Text40, { color: PALETTE.warning, children: `${counts.changed} changed` }),
|
|
30817
|
+
/* @__PURE__ */ jsx48(Text40, { children: " \xB7 " }),
|
|
30818
|
+
/* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: `${counts.removed} removed` }),
|
|
30819
|
+
showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx48(Text40, { children: " ([d] removed list)" }),
|
|
30820
|
+
/* @__PURE__ */ jsx48(Text40, { children: " \xB7 " }),
|
|
30821
|
+
/* @__PURE__ */ jsx48(Text40, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
|
|
30660
30822
|
] });
|
|
30661
30823
|
}
|
|
30662
30824
|
var init_LivePreviewSummary = __esm({
|
|
@@ -30669,8 +30831,8 @@ var init_LivePreviewSummary = __esm({
|
|
|
30669
30831
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx
|
|
30670
30832
|
import { useCallback as useCallback5, useEffect as useEffect24, useMemo as useMemo6, useRef as useRef17, useState as useState26 } from "react";
|
|
30671
30833
|
import figures8 from "figures";
|
|
30672
|
-
import { Box as
|
|
30673
|
-
import { Fragment as
|
|
30834
|
+
import { Box as Box39, Text as Text41 } from "ink";
|
|
30835
|
+
import { Fragment as Fragment15, jsx as jsx49, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
30674
30836
|
function sortComponentsForSidebar(components, cycleParticipants) {
|
|
30675
30837
|
const isEmpty2 = (entry) => Object.keys(entry.$properties ?? {}).length === 0 && Object.keys(entry.$slots ?? {}).length === 0;
|
|
30676
30838
|
const tier = (c2) => {
|
|
@@ -30711,10 +30873,10 @@ function CyclePathLine({
|
|
|
30711
30873
|
highlightComponents = false,
|
|
30712
30874
|
highlightLine = false
|
|
30713
30875
|
}) {
|
|
30714
|
-
return /* @__PURE__ */
|
|
30876
|
+
return /* @__PURE__ */ jsxs39(Text41, { color: highlightLine ? PALETTE.warning : void 0, children: [
|
|
30715
30877
|
prefix,
|
|
30716
30878
|
segments.map(
|
|
30717
|
-
(segment, index) => segment.kind === "slot" ? /* @__PURE__ */
|
|
30879
|
+
(segment, index) => segment.kind === "slot" ? /* @__PURE__ */ jsx49(Text41, { color: PALETTE.accent, children: segment.text }, index) : segment.kind === "arrow" ? /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: segment.text }, index) : /* @__PURE__ */ jsx49(Text41, { color: highlightComponents ? PALETTE.warning : void 0, children: segment.text }, index)
|
|
30718
30880
|
)
|
|
30719
30881
|
] });
|
|
30720
30882
|
}
|
|
@@ -30726,31 +30888,31 @@ function CycleDetailPanel({
|
|
|
30726
30888
|
height
|
|
30727
30889
|
}) {
|
|
30728
30890
|
const lines = [
|
|
30729
|
-
/* @__PURE__ */
|
|
30730
|
-
/* @__PURE__ */
|
|
30731
|
-
/* @__PURE__ */
|
|
30732
|
-
/* @__PURE__ */
|
|
30891
|
+
/* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${cycles.length})` }, "cyc-title"),
|
|
30892
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: "push will fail until these are resolved" }, "cyc-sub"),
|
|
30893
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: "Reject a cycle member or remove a slot edge to break the cycle." }, "cyc-guidance"),
|
|
30894
|
+
/* @__PURE__ */ jsx49(Text41, { children: " " }, "cyc-space")
|
|
30733
30895
|
];
|
|
30734
30896
|
cycles.forEach((cycle, index) => {
|
|
30735
30897
|
const nodeCount = new Set(cycle.path).size;
|
|
30736
30898
|
const isCursor = index === cursor;
|
|
30737
30899
|
lines.push(
|
|
30738
|
-
/* @__PURE__ */
|
|
30739
|
-
/* @__PURE__ */
|
|
30900
|
+
/* @__PURE__ */ jsx49(Text41, { bold: true, inverse: isCursor, children: `${isCursor ? figures8.pointer : " "} Cycle ${index + 1} (${nodeCount} component${nodeCount === 1 ? "" : "s"}):` }, `cyc-h-${index}`),
|
|
30901
|
+
/* @__PURE__ */ jsx49(CyclePathLine, { segments: formatCyclePathSegments2(cycle, 16), prefix: " " }, `cyc-p-${index}`)
|
|
30740
30902
|
);
|
|
30741
30903
|
if (cycle.suggestedBreak) {
|
|
30742
30904
|
lines.push(
|
|
30743
|
-
/* @__PURE__ */
|
|
30905
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: ` Suggested fix: remove [${cycle.suggestedBreak.slotName}] from ${cycle.suggestedBreak.fromComponent}` }, `cyc-fix-${index}`)
|
|
30744
30906
|
);
|
|
30745
30907
|
}
|
|
30746
|
-
lines.push(/* @__PURE__ */
|
|
30908
|
+
lines.push(/* @__PURE__ */ jsx49(Text41, { children: " " }, `cyc-s-${index}`));
|
|
30747
30909
|
});
|
|
30748
30910
|
const footer = "[\u2191\u2193] move [Enter] fix cycle [c/q/Esc] close";
|
|
30749
30911
|
const viewportHeight = Math.max(1, height - 3);
|
|
30750
30912
|
const visible = lines.slice(scrollOffset, scrollOffset + viewportHeight - 1);
|
|
30751
|
-
return /* @__PURE__ */
|
|
30913
|
+
return /* @__PURE__ */ jsxs39(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
|
|
30752
30914
|
visible,
|
|
30753
|
-
/* @__PURE__ */
|
|
30915
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: footer })
|
|
30754
30916
|
] });
|
|
30755
30917
|
}
|
|
30756
30918
|
function BreakCyclePanel({
|
|
@@ -30761,14 +30923,14 @@ function BreakCyclePanel({
|
|
|
30761
30923
|
width,
|
|
30762
30924
|
height
|
|
30763
30925
|
}) {
|
|
30764
|
-
return /* @__PURE__ */
|
|
30765
|
-
/* @__PURE__ */
|
|
30766
|
-
cycle && /* @__PURE__ */
|
|
30767
|
-
/* @__PURE__ */
|
|
30768
|
-
/* @__PURE__ */
|
|
30769
|
-
edges.length > 0 && /* @__PURE__ */
|
|
30770
|
-
edges.map((edge, index) => /* @__PURE__ */
|
|
30771
|
-
confirming ? /* @__PURE__ */
|
|
30926
|
+
return /* @__PURE__ */ jsxs39(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
|
|
30927
|
+
/* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.warning, children: "BREAK CYCLE \u2014 remove a slot edge" }),
|
|
30928
|
+
cycle && /* @__PURE__ */ jsx49(CyclePathLine, { segments: formatCyclePathSegments2(cycle), prefix: " ", highlightComponents: true }),
|
|
30929
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: cycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
|
|
30930
|
+
/* @__PURE__ */ jsx49(Text41, { children: " " }),
|
|
30931
|
+
edges.length > 0 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: "remove slot edge:" }),
|
|
30932
|
+
edges.map((edge, index) => /* @__PURE__ */ jsx49(Text41, { inverse: index === cursor, children: `${index === cursor ? figures8.pointer : " "} remove '${edge.toComponent}' from ${edge.fromComponent}.$slots.${edge.slotName}.$allowedComponents` }, `${edge.fromComponent}-${edge.slotName}-${edge.toComponent}`)),
|
|
30933
|
+
confirming ? /* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.warning, children: "Delete this slot edge? [y] confirm [n] cancel" }) : /* @__PURE__ */ jsx49(Text41, { children: "[\u2191\u2193] move [Enter] delete [x/Esc] close" })
|
|
30772
30934
|
] });
|
|
30773
30935
|
}
|
|
30774
30936
|
function buildBreakingRows(breakingChanges) {
|
|
@@ -30814,9 +30976,9 @@ function deriveBreakingChanges(response) {
|
|
|
30814
30976
|
}
|
|
30815
30977
|
function GenerateReviewStep(props) {
|
|
30816
30978
|
if (!props.extractSessionId) {
|
|
30817
|
-
return /* @__PURE__ */
|
|
30979
|
+
return /* @__PURE__ */ jsx49(Box39, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx49(Text41, { color: PALETTE.error, children: "Error: no session ID \u2014 cannot load generated definitions." }) });
|
|
30818
30980
|
}
|
|
30819
|
-
return /* @__PURE__ */
|
|
30981
|
+
return /* @__PURE__ */ jsx49(GenerateReviewStepView, { ...props, extractSessionId: props.extractSessionId });
|
|
30820
30982
|
}
|
|
30821
30983
|
function GenerateReviewStepView({
|
|
30822
30984
|
extractSessionId,
|
|
@@ -31678,13 +31840,13 @@ function GenerateReviewStepView({
|
|
|
31678
31840
|
}
|
|
31679
31841
|
});
|
|
31680
31842
|
if (loading) {
|
|
31681
|
-
return /* @__PURE__ */
|
|
31843
|
+
return /* @__PURE__ */ jsx49(ReviewLoadingState, {});
|
|
31682
31844
|
}
|
|
31683
31845
|
if (loadError) {
|
|
31684
|
-
return /* @__PURE__ */
|
|
31846
|
+
return /* @__PURE__ */ jsx49(ReviewLoadError, { message: loadError });
|
|
31685
31847
|
}
|
|
31686
31848
|
if (showHelp) {
|
|
31687
|
-
return /* @__PURE__ */
|
|
31849
|
+
return /* @__PURE__ */ jsx49(HelpOverlay, { sections: HELP_SECTIONS2, handleInput: false, onClose: () => setShowHelp(false) });
|
|
31688
31850
|
}
|
|
31689
31851
|
const { selected, selectedJson, visibleJsonPanelValue } = getReviewSelectionState(
|
|
31690
31852
|
components,
|
|
@@ -31724,9 +31886,9 @@ function GenerateReviewStepView({
|
|
|
31724
31886
|
for (const c2 of closures.values()) if (c2.nodes.length > 1) return true;
|
|
31725
31887
|
return false;
|
|
31726
31888
|
})();
|
|
31727
|
-
return /* @__PURE__ */
|
|
31728
|
-
/* @__PURE__ */
|
|
31729
|
-
/* @__PURE__ */
|
|
31889
|
+
return /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", children: [
|
|
31890
|
+
/* @__PURE__ */ jsx49(StepHeader, { step: "review" }),
|
|
31891
|
+
/* @__PURE__ */ jsx49(
|
|
31730
31892
|
ReviewStepDialogs,
|
|
31731
31893
|
{
|
|
31732
31894
|
surfaceState: reviewSurface,
|
|
@@ -31736,16 +31898,16 @@ function GenerateReviewStepView({
|
|
|
31736
31898
|
onQuit
|
|
31737
31899
|
}
|
|
31738
31900
|
),
|
|
31739
|
-
/* @__PURE__ */
|
|
31740
|
-
removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */
|
|
31741
|
-
/* @__PURE__ */
|
|
31742
|
-
!removedBannerCollapsed && /* @__PURE__ */
|
|
31743
|
-
/* @__PURE__ */
|
|
31744
|
-
removedComponents.map((rc) => /* @__PURE__ */
|
|
31901
|
+
/* @__PURE__ */ jsx49(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
|
|
31902
|
+
removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
|
|
31903
|
+
/* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
|
|
31904
|
+
!removedBannerCollapsed && /* @__PURE__ */ jsxs39(Fragment15, { children: [
|
|
31905
|
+
/* @__PURE__ */ jsx49(Text41, { children: " " }),
|
|
31906
|
+
removedComponents.map((rc) => /* @__PURE__ */ jsx49(Text41, { children: removedComponentLine(rc) }, rc.id))
|
|
31745
31907
|
] })
|
|
31746
31908
|
] }),
|
|
31747
|
-
breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */
|
|
31748
|
-
|
|
31909
|
+
breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx49(Box39, { paddingX: 1, children: /* @__PURE__ */ jsx49(
|
|
31910
|
+
Text41,
|
|
31749
31911
|
{
|
|
31750
31912
|
color: PALETTE.warning,
|
|
31751
31913
|
children: `[b] ${breakingChanges.length} breaking change${breakingChanges.length === 1 ? "" : "s"}`
|
|
@@ -31755,14 +31917,14 @@ function GenerateReviewStepView({
|
|
|
31755
31917
|
const row = breakingRows[breakingCursor];
|
|
31756
31918
|
const comp = row ? breakingChanges.find((b) => b.componentName === row.componentName) : void 0;
|
|
31757
31919
|
if (!comp) return null;
|
|
31758
|
-
return /* @__PURE__ */
|
|
31759
|
-
/* @__PURE__ */
|
|
31760
|
-
comp.impact && /* @__PURE__ */
|
|
31761
|
-
comp.changes.length === 0 ? /* @__PURE__ */
|
|
31762
|
-
/* @__PURE__ */
|
|
31920
|
+
return /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
31921
|
+
/* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
|
|
31922
|
+
comp.impact && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: ` affects ${comp.impact.affectedExperiences} experience${comp.impact.affectedExperiences === 1 ? "" : "s"}, ${comp.impact.affectedFragments} fragment${comp.impact.affectedFragments === 1 ? "" : "s"}` }),
|
|
31923
|
+
comp.changes.length === 0 ? /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: " (no enumerated changes)" }) : comp.changes.map((change, ci) => /* @__PURE__ */ jsx49(Text41, { children: ` \u2022 ${formatBreakingChange(change, comp.current)}` }, `bd-detail-${ci}`)),
|
|
31924
|
+
/* @__PURE__ */ jsx49(Text41, { children: "[D/Esc] close detail" })
|
|
31763
31925
|
] });
|
|
31764
31926
|
})(),
|
|
31765
|
-
!dialogOpen && /* @__PURE__ */
|
|
31927
|
+
!dialogOpen && /* @__PURE__ */ jsx49(
|
|
31766
31928
|
LivePreviewSummary,
|
|
31767
31929
|
{
|
|
31768
31930
|
enabled: livePreview,
|
|
@@ -31781,16 +31943,16 @@ function GenerateReviewStepView({
|
|
|
31781
31943
|
const participantSet = cycleView.structural;
|
|
31782
31944
|
const members = stillRejected.filter((n) => participantSet.has(n)).sort();
|
|
31783
31945
|
const ancestors = stillRejected.filter((n) => !participantSet.has(n)).sort();
|
|
31784
|
-
return /* @__PURE__ */
|
|
31785
|
-
/* @__PURE__ */
|
|
31786
|
-
members.length > 0 && /* @__PURE__ */
|
|
31787
|
-
ancestors.length > 0 && /* @__PURE__ */
|
|
31788
|
-
/* @__PURE__ */
|
|
31946
|
+
return /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
|
|
31947
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
|
|
31948
|
+
members.length > 0 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
|
|
31949
|
+
ancestors.length > 0 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
|
|
31950
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: undoSnapshot ? " [Ctrl+Z] undo \xB7 [r]/[a] manually toggle \xB7 [F] continue" : " [r]/[a] manually toggle \xB7 [F] continue" })
|
|
31789
31951
|
] });
|
|
31790
31952
|
})(),
|
|
31791
|
-
/* @__PURE__ */
|
|
31792
|
-
/* @__PURE__ */
|
|
31793
|
-
!dialogOpen && breakPanel.isOpen && /* @__PURE__ */
|
|
31953
|
+
/* @__PURE__ */ jsx49(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
|
|
31954
|
+
/* @__PURE__ */ jsx49(ReviewFinalizeError, { message: finalizeError, hidden: dialogOpen }),
|
|
31955
|
+
!dialogOpen && breakPanel.isOpen && /* @__PURE__ */ jsx49(
|
|
31794
31956
|
BreakCyclePanel,
|
|
31795
31957
|
{
|
|
31796
31958
|
cycle: cycleRows[cyclesCursor],
|
|
@@ -31801,7 +31963,7 @@ function GenerateReviewStepView({
|
|
|
31801
31963
|
height: panelHeight
|
|
31802
31964
|
}
|
|
31803
31965
|
),
|
|
31804
|
-
!dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */
|
|
31966
|
+
!dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsx49(
|
|
31805
31967
|
CycleDetailPanel,
|
|
31806
31968
|
{
|
|
31807
31969
|
cycles: cycleRows,
|
|
@@ -31811,8 +31973,8 @@ function GenerateReviewStepView({
|
|
|
31811
31973
|
height: panelHeight
|
|
31812
31974
|
}
|
|
31813
31975
|
),
|
|
31814
|
-
!dialogOpen && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */
|
|
31815
|
-
breakingPanel.isOpen ? /* @__PURE__ */
|
|
31976
|
+
!dialogOpen && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs39(Box39, { children: [
|
|
31977
|
+
breakingPanel.isOpen ? /* @__PURE__ */ jsx49(
|
|
31816
31978
|
GotoBanner,
|
|
31817
31979
|
{
|
|
31818
31980
|
title: `Breaking changes \u2014 ${breakingRows[breakingCursor]?.componentName ?? "unknown component"}`,
|
|
@@ -31825,7 +31987,7 @@ function GenerateReviewStepView({
|
|
|
31825
31987
|
width: sidebarWidth,
|
|
31826
31988
|
footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [D] detail \xB7 [Esc] close"
|
|
31827
31989
|
}
|
|
31828
|
-
) : /* @__PURE__ */
|
|
31990
|
+
) : /* @__PURE__ */ jsx49(
|
|
31829
31991
|
GroupedSidebar,
|
|
31830
31992
|
{
|
|
31831
31993
|
items: groupedItems,
|
|
@@ -31866,7 +32028,7 @@ function GenerateReviewStepView({
|
|
|
31866
32028
|
graph: sidebarGraph
|
|
31867
32029
|
}
|
|
31868
32030
|
),
|
|
31869
|
-
selected ? /* @__PURE__ */
|
|
32031
|
+
selected ? /* @__PURE__ */ jsx49(
|
|
31870
32032
|
ReviewComponentPanel,
|
|
31871
32033
|
{
|
|
31872
32034
|
selectedKey: selected.key,
|
|
@@ -31896,12 +32058,12 @@ function GenerateReviewStepView({
|
|
|
31896
32058
|
),
|
|
31897
32059
|
saveError: reviewEditor.saveError
|
|
31898
32060
|
}
|
|
31899
|
-
) : /* @__PURE__ */
|
|
32061
|
+
) : /* @__PURE__ */ jsx49(ReviewNoSelection, {})
|
|
31900
32062
|
] }),
|
|
31901
|
-
!dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */
|
|
31902
|
-
/* @__PURE__ */
|
|
32063
|
+
!dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", children: [
|
|
32064
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.warning, children: `\u26A0 ${cycleRows.length} slot dependency cycle${cycleRows.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
|
|
31903
32065
|
cycleRows.slice(0, 3).map((cycle, idx) => {
|
|
31904
|
-
return /* @__PURE__ */
|
|
32066
|
+
return /* @__PURE__ */ jsx49(
|
|
31905
32067
|
CyclePathLine,
|
|
31906
32068
|
{
|
|
31907
32069
|
segments: formatCyclePathSegments2(cycle),
|
|
@@ -31912,10 +32074,10 @@ function GenerateReviewStepView({
|
|
|
31912
32074
|
`cyc-banner-${idx}`
|
|
31913
32075
|
);
|
|
31914
32076
|
}),
|
|
31915
|
-
cycleRows.length > 3 && /* @__PURE__ */
|
|
31916
|
-
/* @__PURE__ */
|
|
32077
|
+
cycleRows.length > 3 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.warning, children: ` \u2026${cycleRows.length - 3} more` }),
|
|
32078
|
+
/* @__PURE__ */ jsx49(Text41, { children: " press [c] for detail" })
|
|
31917
32079
|
] }),
|
|
31918
|
-
/* @__PURE__ */
|
|
32080
|
+
/* @__PURE__ */ jsx49(
|
|
31919
32081
|
SearchMatchSummary,
|
|
31920
32082
|
{
|
|
31921
32083
|
open: searchOpen,
|
|
@@ -31926,7 +32088,7 @@ function GenerateReviewStepView({
|
|
|
31926
32088
|
hidden: dialogOpen
|
|
31927
32089
|
}
|
|
31928
32090
|
),
|
|
31929
|
-
!dialogOpen && sidebarFocused && reviewEditor.panelOpen !== "token-review" && /* @__PURE__ */
|
|
32091
|
+
!dialogOpen && sidebarFocused && reviewEditor.panelOpen !== "token-review" && /* @__PURE__ */ jsx49(CompactControlBar, { hasGroupRoots, searchActive: searchOpen || searchQuery.length > 0 })
|
|
31930
32092
|
] });
|
|
31931
32093
|
}
|
|
31932
32094
|
var HELP_SECTIONS2;
|
|
@@ -32043,17 +32205,17 @@ var init_generate_review_step = __esm({
|
|
|
32043
32205
|
});
|
|
32044
32206
|
|
|
32045
32207
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/CustomPromptBanner.tsx
|
|
32046
|
-
import { Box as
|
|
32047
|
-
import { jsx as
|
|
32208
|
+
import { Box as Box40, Text as Text42 } from "ink";
|
|
32209
|
+
import { jsx as jsx50, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
32048
32210
|
function CustomPromptBanner({ generatePromptPath }) {
|
|
32049
32211
|
if (!generatePromptPath) return null;
|
|
32050
|
-
return /* @__PURE__ */
|
|
32051
|
-
/* @__PURE__ */
|
|
32052
|
-
generatePromptPath ? /* @__PURE__ */
|
|
32212
|
+
return /* @__PURE__ */ jsxs40(Box40, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
32213
|
+
/* @__PURE__ */ jsx50(Text42, { color: PALETTE.warning, bold: true, children: "WARNING: Custom prompt active" }),
|
|
32214
|
+
generatePromptPath ? /* @__PURE__ */ jsxs40(Text42, { color: PALETTE.warning, children: [
|
|
32053
32215
|
"components: ",
|
|
32054
32216
|
generatePromptPath
|
|
32055
32217
|
] }) : null,
|
|
32056
|
-
/* @__PURE__ */
|
|
32218
|
+
/* @__PURE__ */ jsx50(Text42, { color: PALETTE.warning, children: "Bundled invariants (utility-wrapper rejection, description content rules) do NOT apply." })
|
|
32057
32219
|
] });
|
|
32058
32220
|
}
|
|
32059
32221
|
var init_CustomPromptBanner = __esm({
|
|
@@ -32082,15 +32244,15 @@ var init_contentful_urls2 = __esm({
|
|
|
32082
32244
|
});
|
|
32083
32245
|
|
|
32084
32246
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/SpaceEnvironment.tsx
|
|
32085
|
-
import { Box as
|
|
32086
|
-
import { jsx as
|
|
32247
|
+
import { Box as Box41, Text as Text43 } from "ink";
|
|
32248
|
+
import { jsx as jsx51, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
32087
32249
|
function SpaceEnvironment({ spaceId, environmentId }) {
|
|
32088
|
-
return /* @__PURE__ */
|
|
32089
|
-
/* @__PURE__ */
|
|
32090
|
-
/* @__PURE__ */
|
|
32091
|
-
/* @__PURE__ */
|
|
32092
|
-
/* @__PURE__ */
|
|
32093
|
-
/* @__PURE__ */
|
|
32250
|
+
return /* @__PURE__ */ jsxs41(Box41, { gap: 1, marginTop: 1, children: [
|
|
32251
|
+
/* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: "Space:" }),
|
|
32252
|
+
/* @__PURE__ */ jsx51(Text43, { children: spaceId }),
|
|
32253
|
+
/* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: "/" }),
|
|
32254
|
+
/* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: "Environment:" }),
|
|
32255
|
+
/* @__PURE__ */ jsx51(Text43, { children: environmentId })
|
|
32094
32256
|
] });
|
|
32095
32257
|
}
|
|
32096
32258
|
var init_SpaceEnvironment = __esm({
|
|
@@ -32101,19 +32263,19 @@ var init_SpaceEnvironment = __esm({
|
|
|
32101
32263
|
});
|
|
32102
32264
|
|
|
32103
32265
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/DoneStep.tsx
|
|
32104
|
-
import { Box as
|
|
32105
|
-
import { Fragment as
|
|
32266
|
+
import { Box as Box42, Text as Text44 } from "ink";
|
|
32267
|
+
import { Fragment as Fragment16, jsx as jsx52, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
32106
32268
|
function EntityRows({ entity, label }) {
|
|
32107
32269
|
const plural3 = (n) => `${n} ${label}${n !== 1 ? "s" : ""}`;
|
|
32108
|
-
return /* @__PURE__ */
|
|
32109
|
-
ACTIONS.filter((action) => entity[action] > 0).map((action) => /* @__PURE__ */
|
|
32110
|
-
/* @__PURE__ */
|
|
32270
|
+
return /* @__PURE__ */ jsxs42(Fragment16, { children: [
|
|
32271
|
+
ACTIONS.filter((action) => entity[action] > 0).map((action) => /* @__PURE__ */ jsxs42(Text44, { children: [
|
|
32272
|
+
/* @__PURE__ */ jsx52(Text44, { color: PALETTE.success, children: "\u2713" }),
|
|
32111
32273
|
" ",
|
|
32112
32274
|
plural3(entity[action]),
|
|
32113
32275
|
" ",
|
|
32114
32276
|
action
|
|
32115
32277
|
] }, action)),
|
|
32116
|
-
entity.failed > 0 && /* @__PURE__ */
|
|
32278
|
+
entity.failed > 0 && /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.error, children: [
|
|
32117
32279
|
"\u2717 ",
|
|
32118
32280
|
plural3(entity.failed),
|
|
32119
32281
|
" failed \u2014 check logs above"
|
|
@@ -32121,9 +32283,9 @@ function EntityRows({ entity, label }) {
|
|
|
32121
32283
|
] });
|
|
32122
32284
|
}
|
|
32123
32285
|
function LinkRow({ title, url }) {
|
|
32124
|
-
return /* @__PURE__ */
|
|
32125
|
-
/* @__PURE__ */
|
|
32126
|
-
/* @__PURE__ */
|
|
32286
|
+
return /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
|
|
32287
|
+
/* @__PURE__ */ jsx52(Text44, { color: PALETTE.muted, children: title }),
|
|
32288
|
+
/* @__PURE__ */ jsx52(Text44, { color: PALETTE.accent, children: url })
|
|
32127
32289
|
] });
|
|
32128
32290
|
}
|
|
32129
32291
|
function DoneStep({
|
|
@@ -32147,29 +32309,29 @@ function DoneStep({
|
|
|
32147
32309
|
const totalPushed = componentTypes.created + componentTypes.updated + componentTypes.removed + designTokens.created + designTokens.updated + designTokens.removed;
|
|
32148
32310
|
const success = totalFailed === 0;
|
|
32149
32311
|
const urlArgs = { host: host ?? "api.contentful.com", spaceId, environmentId };
|
|
32150
|
-
return /* @__PURE__ */
|
|
32151
|
-
/* @__PURE__ */
|
|
32152
|
-
/* @__PURE__ */
|
|
32153
|
-
success ? /* @__PURE__ */
|
|
32154
|
-
totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */
|
|
32155
|
-
/* @__PURE__ */
|
|
32156
|
-
/* @__PURE__ */
|
|
32157
|
-
summary && /* @__PURE__ */
|
|
32312
|
+
return /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
|
|
32313
|
+
/* @__PURE__ */ jsx52(StepHeader, { step: "done" }),
|
|
32314
|
+
/* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
32315
|
+
success ? /* @__PURE__ */ jsx52(Text44, { bold: true, color: PALETTE.success, children: "Done!" }) : /* @__PURE__ */ jsx52(Text44, { bold: true, color: PALETTE.warning, children: "\u26A0 Finished with errors" }),
|
|
32316
|
+
totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */ jsx52(Text44, { color: PALETTE.muted, children: credentialsSkipped ? "Nothing was pushed \u2014 you skipped the Contentful credentials, so the files were only saved locally." : "Nothing was pushed \u2014 everything was already up to date." }) : /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
|
|
32317
|
+
/* @__PURE__ */ jsx52(EntityRows, { entity: componentTypes, label: "Component" }),
|
|
32318
|
+
/* @__PURE__ */ jsx52(EntityRows, { entity: designTokens, label: "Design Token" }),
|
|
32319
|
+
summary && /* @__PURE__ */ jsx52(Box42, { marginTop: 1, children: /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.muted, children: [
|
|
32158
32320
|
"Push result: ",
|
|
32159
32321
|
summary.succeeded,
|
|
32160
32322
|
"/",
|
|
32161
32323
|
summary.total,
|
|
32162
32324
|
" succeeded",
|
|
32163
|
-
summary.failed > 0 && /* @__PURE__ */
|
|
32325
|
+
summary.failed > 0 && /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.error, children: [
|
|
32164
32326
|
", ",
|
|
32165
32327
|
summary.failed,
|
|
32166
32328
|
" failed"
|
|
32167
32329
|
] })
|
|
32168
32330
|
] }) })
|
|
32169
32331
|
] }),
|
|
32170
|
-
failures.length > 0 && /* @__PURE__ */
|
|
32171
|
-
/* @__PURE__ */
|
|
32172
|
-
failures.map((failure) => /* @__PURE__ */
|
|
32332
|
+
failures.length > 0 && /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
|
|
32333
|
+
/* @__PURE__ */ jsx52(Text44, { bold: true, color: PALETTE.error, children: "Failure details" }),
|
|
32334
|
+
failures.map((failure) => /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.error, children: [
|
|
32173
32335
|
failure.entityType,
|
|
32174
32336
|
" ",
|
|
32175
32337
|
failure.entityId,
|
|
@@ -32177,11 +32339,11 @@ function DoneStep({
|
|
|
32177
32339
|
failure.message
|
|
32178
32340
|
] }, `${failure.entityType}:${failure.entityId}`))
|
|
32179
32341
|
] }),
|
|
32180
|
-
/* @__PURE__ */
|
|
32181
|
-
success && totalPushed > 0 && /* @__PURE__ */
|
|
32182
|
-
/* @__PURE__ */
|
|
32183
|
-
produced.components && /* @__PURE__ */
|
|
32184
|
-
produced.tokens && /* @__PURE__ */
|
|
32342
|
+
/* @__PURE__ */ jsx52(SpaceEnvironment, { spaceId, environmentId }),
|
|
32343
|
+
success && totalPushed > 0 && /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", gap: 1, children: [
|
|
32344
|
+
/* @__PURE__ */ jsx52(Text44, { color: PALETTE.success, children: "Your design system is now in Contentful Experiences." }),
|
|
32345
|
+
produced.components && /* @__PURE__ */ jsx52(LinkRow, { title: "View your components here:", url: buildPostPushUrl2(urlArgs) }),
|
|
32346
|
+
produced.tokens && /* @__PURE__ */ jsx52(
|
|
32185
32347
|
LinkRow,
|
|
32186
32348
|
{
|
|
32187
32349
|
title: "View your design tokens here:",
|
|
@@ -32189,7 +32351,7 @@ function DoneStep({
|
|
|
32189
32351
|
}
|
|
32190
32352
|
)
|
|
32191
32353
|
] }),
|
|
32192
|
-
/* @__PURE__ */
|
|
32354
|
+
/* @__PURE__ */ jsx52(ControlHints, { hints: [{ keys: "Enter / q", label: "Exit" }] })
|
|
32193
32355
|
] })
|
|
32194
32356
|
] });
|
|
32195
32357
|
}
|
|
@@ -32248,10 +32410,10 @@ var init_use_blinking_cursor = __esm({
|
|
|
32248
32410
|
|
|
32249
32411
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PathPrompt.tsx
|
|
32250
32412
|
import { useState as useState28 } from "react";
|
|
32251
|
-
import { Box as
|
|
32413
|
+
import { Box as Box43, Text as Text45 } from "ink";
|
|
32252
32414
|
import { readdirSync as readdirSync4 } from "node:fs";
|
|
32253
32415
|
import { dirname as dirname17, basename as basename6, join as join23 } from "node:path";
|
|
32254
|
-
import { jsx as
|
|
32416
|
+
import { jsx as jsx53, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
32255
32417
|
function autocomplete(partial) {
|
|
32256
32418
|
if (!partial) return null;
|
|
32257
32419
|
const normalized = normalizePath(partial);
|
|
@@ -32309,20 +32471,20 @@ function PathPrompt({
|
|
|
32309
32471
|
const shown = input || defaultPath;
|
|
32310
32472
|
const isPlaceholder = input === "";
|
|
32311
32473
|
const cursor = cursorVisible ? "\u2588" : " ";
|
|
32312
|
-
return /* @__PURE__ */
|
|
32313
|
-
/* @__PURE__ */
|
|
32314
|
-
/* @__PURE__ */
|
|
32315
|
-
summary && /* @__PURE__ */
|
|
32316
|
-
/* @__PURE__ */
|
|
32317
|
-
/* @__PURE__ */
|
|
32318
|
-
/* @__PURE__ */
|
|
32474
|
+
return /* @__PURE__ */ jsxs43(Box43, { flexDirection: "column", children: [
|
|
32475
|
+
/* @__PURE__ */ jsx53(StepHeader, { step: "push" }),
|
|
32476
|
+
/* @__PURE__ */ jsxs43(Box43, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
32477
|
+
summary && /* @__PURE__ */ jsx53(Text45, { color: PALETTE.muted, children: summary }),
|
|
32478
|
+
/* @__PURE__ */ jsxs43(Box43, { gap: 1, children: [
|
|
32479
|
+
/* @__PURE__ */ jsx53(Text45, { color: PALETTE.accent, children: "?" }),
|
|
32480
|
+
/* @__PURE__ */ jsxs43(Text45, { bold: true, children: [
|
|
32319
32481
|
label,
|
|
32320
32482
|
":"
|
|
32321
32483
|
] }),
|
|
32322
|
-
/* @__PURE__ */
|
|
32323
|
-
/* @__PURE__ */
|
|
32484
|
+
/* @__PURE__ */ jsx53(Text45, { color: isPlaceholder ? PALETTE.muted : void 0, children: shown }),
|
|
32485
|
+
/* @__PURE__ */ jsx53(Text45, { children: cursor })
|
|
32324
32486
|
] }),
|
|
32325
|
-
/* @__PURE__ */
|
|
32487
|
+
/* @__PURE__ */ jsx53(
|
|
32326
32488
|
ControlHints,
|
|
32327
32489
|
{
|
|
32328
32490
|
hints: [
|
|
@@ -32372,8 +32534,8 @@ var init_produced = __esm({
|
|
|
32372
32534
|
|
|
32373
32535
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/use-timed-spinner.tsx
|
|
32374
32536
|
import { useEffect as useEffect26, useState as useState29 } from "react";
|
|
32375
|
-
import { Spinner as
|
|
32376
|
-
import { jsx as
|
|
32537
|
+
import { Spinner as Spinner3 } from "@inkjs/ui";
|
|
32538
|
+
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
32377
32539
|
function useTimedSpinner() {
|
|
32378
32540
|
const [elapsedSeconds, setElapsedSeconds] = useState29(0);
|
|
32379
32541
|
useEffect26(() => {
|
|
@@ -32385,7 +32547,7 @@ function useTimedSpinner() {
|
|
|
32385
32547
|
const mins = Math.floor(elapsedSeconds / 60);
|
|
32386
32548
|
const secs = elapsedSeconds % 60;
|
|
32387
32549
|
return {
|
|
32388
|
-
spinner: /* @__PURE__ */
|
|
32550
|
+
spinner: /* @__PURE__ */ jsx54(Spinner3, {}),
|
|
32389
32551
|
elapsed: mins > 0 ? `${mins}m ${secs}s` : `${secs}s`
|
|
32390
32552
|
};
|
|
32391
32553
|
}
|
|
@@ -32396,47 +32558,52 @@ var init_use_timed_spinner = __esm({
|
|
|
32396
32558
|
});
|
|
32397
32559
|
|
|
32398
32560
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PushingStep.tsx
|
|
32399
|
-
import { Box as
|
|
32561
|
+
import { Box as Box44, Text as Text46 } from "ink";
|
|
32400
32562
|
import { ProgressBar as ProgressBar2, ThemeProvider as ThemeProvider2 } from "@inkjs/ui";
|
|
32401
|
-
import { jsx as
|
|
32563
|
+
import { jsx as jsx55, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
32402
32564
|
function PushingStep({ progress, produced, counts }) {
|
|
32403
32565
|
const { spinner, elapsed } = useTimedSpinner();
|
|
32404
32566
|
const operationId = progress && progress.kind === "queued" ? progress.operationId : null;
|
|
32405
32567
|
const showGlobal = progress && progress.kind === "progress";
|
|
32406
32568
|
const showCurrent = progress && progress.kind === "progress" && progress.current ? progress.current : null;
|
|
32407
|
-
|
|
32408
|
-
|
|
32409
|
-
/* @__PURE__ */
|
|
32410
|
-
|
|
32569
|
+
const items = progress && progress.kind === "progress" ? progress.items : [];
|
|
32570
|
+
return /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", children: [
|
|
32571
|
+
/* @__PURE__ */ jsx55(StepHeader, { step: "push" }),
|
|
32572
|
+
/* @__PURE__ */ jsx55(AsideLayout, { aside: items.length > 0 ? /* @__PURE__ */ jsx55(ActivityPanel, { title: "Entities", items }) : void 0, children: /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
32573
|
+
/* @__PURE__ */ jsxs44(Box44, { gap: 1, children: [
|
|
32411
32574
|
spinner,
|
|
32412
|
-
/* @__PURE__ */
|
|
32575
|
+
/* @__PURE__ */ jsxs44(Text46, { children: [
|
|
32413
32576
|
"Writing ",
|
|
32414
32577
|
countedThings(produced, counts),
|
|
32415
32578
|
" to your Contentful space..."
|
|
32416
32579
|
] })
|
|
32417
32580
|
] }),
|
|
32418
|
-
operationId && /* @__PURE__ */
|
|
32419
|
-
/* @__PURE__ */
|
|
32420
|
-
/* @__PURE__ */
|
|
32581
|
+
operationId && /* @__PURE__ */ jsxs44(Box44, { gap: 1, children: [
|
|
32582
|
+
/* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: "Operation:" }),
|
|
32583
|
+
/* @__PURE__ */ jsx55(Text46, { children: operationId })
|
|
32421
32584
|
] }),
|
|
32422
|
-
showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */
|
|
32423
|
-
/* @__PURE__ */
|
|
32424
|
-
/* @__PURE__ */
|
|
32585
|
+
showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */ jsx55(Box44, { gap: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs44(Box44, { gap: 2, children: [
|
|
32586
|
+
/* @__PURE__ */ jsx55(Box44, { width: 40, children: /* @__PURE__ */ jsx55(ThemeProvider2, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx55(ProgressBar2, { value: Math.round(progress.processed / progress.total * 100) }) }) }),
|
|
32587
|
+
/* @__PURE__ */ jsxs44(Text46, { color: PALETTE.muted, children: [
|
|
32425
32588
|
progress.processed,
|
|
32426
32589
|
"/",
|
|
32427
32590
|
progress.total,
|
|
32428
32591
|
" entities"
|
|
32592
|
+
] }),
|
|
32593
|
+
progress.failed > 0 && /* @__PURE__ */ jsxs44(Text46, { color: PALETTE.error, children: [
|
|
32594
|
+
progress.failed,
|
|
32595
|
+
" failed"
|
|
32429
32596
|
] })
|
|
32430
32597
|
] }) }),
|
|
32431
|
-
showCurrent && /* @__PURE__ */
|
|
32432
|
-
/* @__PURE__ */
|
|
32433
|
-
/* @__PURE__ */
|
|
32598
|
+
showCurrent && /* @__PURE__ */ jsxs44(Box44, { gap: 1, children: [
|
|
32599
|
+
/* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: "Now processing:" }),
|
|
32600
|
+
/* @__PURE__ */ jsx55(Text46, { children: showCurrent })
|
|
32434
32601
|
] }),
|
|
32435
|
-
/* @__PURE__ */
|
|
32602
|
+
/* @__PURE__ */ jsx55(Box44, { marginTop: 1, children: /* @__PURE__ */ jsxs44(Text46, { color: PALETTE.muted, children: [
|
|
32436
32603
|
"Elapsed: ",
|
|
32437
32604
|
elapsed
|
|
32438
32605
|
] }) })
|
|
32439
|
-
] })
|
|
32606
|
+
] }) })
|
|
32440
32607
|
] });
|
|
32441
32608
|
}
|
|
32442
32609
|
var init_PushingStep = __esm({
|
|
@@ -32445,6 +32612,7 @@ var init_PushingStep = __esm({
|
|
|
32445
32612
|
init_StepHeader();
|
|
32446
32613
|
init_produced();
|
|
32447
32614
|
init_use_timed_spinner();
|
|
32615
|
+
init_activity_panel();
|
|
32448
32616
|
init_theme2();
|
|
32449
32617
|
init_theme();
|
|
32450
32618
|
}
|
|
@@ -32646,8 +32814,8 @@ var init_preview_confirmation_input = __esm({
|
|
|
32646
32814
|
|
|
32647
32815
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/WizardPreviewStep.tsx
|
|
32648
32816
|
import { useEffect as useEffect27, useState as useState30, useMemo as useMemo7 } from "react";
|
|
32649
|
-
import { Box as
|
|
32650
|
-
import { Fragment as
|
|
32817
|
+
import { Box as Box45, Text as Text47 } from "ink";
|
|
32818
|
+
import { Fragment as Fragment17, jsx as jsx56, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
32651
32819
|
function buildPreviewSummaryLines(preview) {
|
|
32652
32820
|
const lines = [];
|
|
32653
32821
|
const { components, tokens } = preview;
|
|
@@ -32899,12 +33067,12 @@ function WizardPreviewStep({
|
|
|
32899
33067
|
return;
|
|
32900
33068
|
}
|
|
32901
33069
|
});
|
|
32902
|
-
return /* @__PURE__ */
|
|
32903
|
-
/* @__PURE__ */
|
|
32904
|
-
/* @__PURE__ */
|
|
32905
|
-
hasAnything ? /* @__PURE__ */
|
|
32906
|
-
/* @__PURE__ */
|
|
32907
|
-
/* @__PURE__ */
|
|
33070
|
+
return /* @__PURE__ */ jsxs45(Box45, { flexDirection: "column", children: [
|
|
33071
|
+
/* @__PURE__ */ jsx56(StepHeader, { step: "push" }),
|
|
33072
|
+
/* @__PURE__ */ jsxs45(Box45, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 2, children: [
|
|
33073
|
+
hasAnything ? /* @__PURE__ */ jsxs45(Fragment17, { children: [
|
|
33074
|
+
/* @__PURE__ */ jsx56(Text47, { children: "Here's what will happen in your space:" }),
|
|
33075
|
+
/* @__PURE__ */ jsxs45(
|
|
32908
33076
|
WindowedPanel,
|
|
32909
33077
|
{
|
|
32910
33078
|
width: Math.max(20, terminalColumns - 4),
|
|
@@ -32912,15 +33080,15 @@ function WizardPreviewStep({
|
|
|
32912
33080
|
title: diffExpanded ? `Diff (${diffLines.length} lines)` : "",
|
|
32913
33081
|
focused: false,
|
|
32914
33082
|
children: [
|
|
32915
|
-
activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */
|
|
32916
|
-
/* @__PURE__ */
|
|
33083
|
+
activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */ jsx56(Text47, { color: line.color, wrap: "truncate-end", children: line.text }, line.key)),
|
|
33084
|
+
/* @__PURE__ */ jsx56(Text47, { color: PALETTE.muted, wrap: "truncate-end", children: formatPreviewScrollIndicator(activeLines.length, boundedScrollOffset, viewportHeight) })
|
|
32917
33085
|
]
|
|
32918
33086
|
}
|
|
32919
33087
|
)
|
|
32920
|
-
] }) : /* @__PURE__ */
|
|
32921
|
-
breakingWithImpact && /* @__PURE__ */
|
|
32922
|
-
/* @__PURE__ */
|
|
32923
|
-
/* @__PURE__ */
|
|
33088
|
+
] }) : /* @__PURE__ */ jsx56(Text47, { color: PALETTE.muted, children: "Nothing to push \u2014 everything is already up to date." }),
|
|
33089
|
+
breakingWithImpact && /* @__PURE__ */ jsx56(Box45, { marginTop: 1, children: /* @__PURE__ */ jsx56(Text47, { color: PALETTE.error, bold: true, children: "\u26A0 Breaking changes will affect downstream entities. Press Enter to acknowledge and apply." }) }),
|
|
33090
|
+
/* @__PURE__ */ jsx56(SpaceEnvironment, { spaceId, environmentId }),
|
|
33091
|
+
/* @__PURE__ */ jsx56(Box45, { marginTop: 1, children: /* @__PURE__ */ jsx56(
|
|
32924
33092
|
ControlHints,
|
|
32925
33093
|
{
|
|
32926
33094
|
hints: [
|
|
@@ -33167,8 +33335,8 @@ var init_use_flow_log = __esm({
|
|
|
33167
33335
|
});
|
|
33168
33336
|
|
|
33169
33337
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/screen.tsx
|
|
33170
|
-
import { Box as
|
|
33171
|
-
import { jsx as
|
|
33338
|
+
import { Box as Box46 } from "ink";
|
|
33339
|
+
import { jsx as jsx57, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
33172
33340
|
function canEditFromPreview(cdf) {
|
|
33173
33341
|
if (!cdf) return false;
|
|
33174
33342
|
return parseCDFComponents(cdf).components.length > 0;
|
|
@@ -33188,7 +33356,7 @@ function FlowScreen({
|
|
|
33188
33356
|
const content = (() => {
|
|
33189
33357
|
switch (state2.step) {
|
|
33190
33358
|
case "final-review":
|
|
33191
|
-
return /* @__PURE__ */
|
|
33359
|
+
return /* @__PURE__ */ jsx57(
|
|
33192
33360
|
GenerateReviewStep,
|
|
33193
33361
|
{
|
|
33194
33362
|
extractSessionId: state2.extractSessionId,
|
|
@@ -33205,10 +33373,10 @@ function FlowScreen({
|
|
|
33205
33373
|
}
|
|
33206
33374
|
);
|
|
33207
33375
|
case "previewing":
|
|
33208
|
-
return /* @__PURE__ */
|
|
33376
|
+
return /* @__PURE__ */ jsx57(RunningStep, { step: "push", description: `Computing diff for ${things} against your Contentful space...` });
|
|
33209
33377
|
case "preview-gate":
|
|
33210
33378
|
if (!state2.serverPreview) return null;
|
|
33211
|
-
return /* @__PURE__ */
|
|
33379
|
+
return /* @__PURE__ */ jsx57(
|
|
33212
33380
|
WizardPreviewStep,
|
|
33213
33381
|
{
|
|
33214
33382
|
preview: state2.serverPreview,
|
|
@@ -33220,9 +33388,9 @@ function FlowScreen({
|
|
|
33220
33388
|
}
|
|
33221
33389
|
);
|
|
33222
33390
|
case "pushing":
|
|
33223
|
-
return /* @__PURE__ */
|
|
33391
|
+
return /* @__PURE__ */ jsx57(PushingStep, { progress: state2.pushProgress, produced, counts });
|
|
33224
33392
|
case "path-prompt":
|
|
33225
|
-
return /* @__PURE__ */
|
|
33393
|
+
return /* @__PURE__ */ jsx57(
|
|
33226
33394
|
PathPrompt,
|
|
33227
33395
|
{
|
|
33228
33396
|
summary: `Saving ${things}${state2.credentialsSkipped ? "" : " and pushing them to your Contentful space"}.`,
|
|
@@ -33232,10 +33400,10 @@ function FlowScreen({
|
|
|
33232
33400
|
}
|
|
33233
33401
|
);
|
|
33234
33402
|
case "printing":
|
|
33235
|
-
return /* @__PURE__ */
|
|
33403
|
+
return /* @__PURE__ */ jsx57(RunningStep, { step: "push", description: "Writing output files to disk..." });
|
|
33236
33404
|
case "print-gate": {
|
|
33237
33405
|
const teaser = buildRunTeaserLine(state2.lastRunId);
|
|
33238
|
-
return /* @__PURE__ */
|
|
33406
|
+
return /* @__PURE__ */ jsx57(
|
|
33239
33407
|
GateStep,
|
|
33240
33408
|
{
|
|
33241
33409
|
step: "push",
|
|
@@ -33250,7 +33418,7 @@ function FlowScreen({
|
|
|
33250
33418
|
}
|
|
33251
33419
|
case "done": {
|
|
33252
33420
|
const totalFailed = state2.pushResult.componentTypes.failed + state2.pushResult.designTokens.failed;
|
|
33253
|
-
return /* @__PURE__ */
|
|
33421
|
+
return /* @__PURE__ */ jsx57(
|
|
33254
33422
|
DoneStep,
|
|
33255
33423
|
{
|
|
33256
33424
|
componentTypes: state2.pushResult.componentTypes,
|
|
@@ -33267,7 +33435,7 @@ function FlowScreen({
|
|
|
33267
33435
|
);
|
|
33268
33436
|
}
|
|
33269
33437
|
case "preview-validation-error":
|
|
33270
|
-
return /* @__PURE__ */
|
|
33438
|
+
return /* @__PURE__ */ jsx57(
|
|
33271
33439
|
PreviewValidationErrorScreen,
|
|
33272
33440
|
{
|
|
33273
33441
|
errors: state2.previewValidationErrors,
|
|
@@ -33278,7 +33446,7 @@ function FlowScreen({
|
|
|
33278
33446
|
}
|
|
33279
33447
|
);
|
|
33280
33448
|
case "error":
|
|
33281
|
-
return /* @__PURE__ */
|
|
33449
|
+
return /* @__PURE__ */ jsx57(
|
|
33282
33450
|
ErrorStep,
|
|
33283
33451
|
{
|
|
33284
33452
|
stepName: state2.errorStep,
|
|
@@ -33289,8 +33457,8 @@ function FlowScreen({
|
|
|
33289
33457
|
);
|
|
33290
33458
|
}
|
|
33291
33459
|
})();
|
|
33292
|
-
return /* @__PURE__ */
|
|
33293
|
-
/* @__PURE__ */
|
|
33460
|
+
return /* @__PURE__ */ jsxs46(Box46, { flexDirection: "column", children: [
|
|
33461
|
+
/* @__PURE__ */ jsx57(CustomPromptBanner, { generatePromptPath }),
|
|
33294
33462
|
content
|
|
33295
33463
|
] });
|
|
33296
33464
|
}
|
|
@@ -33502,6 +33670,21 @@ var init_preview2 = __esm({
|
|
|
33502
33670
|
}
|
|
33503
33671
|
});
|
|
33504
33672
|
|
|
33673
|
+
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/push-progress.ts
|
|
33674
|
+
function activityFromItems(items) {
|
|
33675
|
+
return items.filter((item) => item.status !== "queued").map((item) => ({
|
|
33676
|
+
name: item.id,
|
|
33677
|
+
state: item.status === "failed" ? "failed" : "done",
|
|
33678
|
+
detail: `${item.action} ${item.entityType === "DesignToken" ? "token" : "component"}`,
|
|
33679
|
+
...item.error ? { error: typeof item.error === "string" ? item.error : item.error.message } : {}
|
|
33680
|
+
}));
|
|
33681
|
+
}
|
|
33682
|
+
var init_push_progress = __esm({
|
|
33683
|
+
"packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/push-progress.ts"() {
|
|
33684
|
+
"use strict";
|
|
33685
|
+
}
|
|
33686
|
+
});
|
|
33687
|
+
|
|
33505
33688
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/push.ts
|
|
33506
33689
|
async function runPush(input, deps, onPatch) {
|
|
33507
33690
|
if (shouldRefusePush(input.state)) return buildSkippedPushTransition();
|
|
@@ -33554,7 +33737,16 @@ async function runPush(input, deps, onPatch) {
|
|
|
33554
33737
|
const items = op.items ?? [];
|
|
33555
33738
|
const lastDone = items.length > 0 ? items[items.length - 1] : null;
|
|
33556
33739
|
const current = lastDone && lastDone.status === "succeeded" ? lastDone.id : null;
|
|
33557
|
-
onPatch({
|
|
33740
|
+
onPatch({
|
|
33741
|
+
pushProgress: {
|
|
33742
|
+
kind: "progress",
|
|
33743
|
+
processed: done,
|
|
33744
|
+
total: summary.total,
|
|
33745
|
+
failed: summary.failed,
|
|
33746
|
+
current,
|
|
33747
|
+
items: activityFromItems(items)
|
|
33748
|
+
}
|
|
33749
|
+
});
|
|
33558
33750
|
}
|
|
33559
33751
|
safeLog(deps, { pollTick: { attempt: pollCount, status: op.sys.status, summary: op.summary } });
|
|
33560
33752
|
}
|
|
@@ -33665,6 +33857,7 @@ var init_push = __esm({
|
|
|
33665
33857
|
init_src3();
|
|
33666
33858
|
init_src4();
|
|
33667
33859
|
init_user_agent();
|
|
33860
|
+
init_push_progress();
|
|
33668
33861
|
init_wizard_state_transitions();
|
|
33669
33862
|
realPushDeps = (log) => ({
|
|
33670
33863
|
createClient: (options) => new ApiClient({ ...options, userAgent: cliUserAgent() }),
|
|
@@ -34210,14 +34403,14 @@ var init_help_info = __esm({
|
|
|
34210
34403
|
|
|
34211
34404
|
// packages/experience-design-system-cli/src/tui/help/PageContainer.tsx
|
|
34212
34405
|
import { useEffect as useEffect30, useState as useState31 } from "react";
|
|
34213
|
-
import { Box as
|
|
34214
|
-
import { Fragment as
|
|
34406
|
+
import { Box as Box47, Text as Text48, useInput as useInput13 } from "ink";
|
|
34407
|
+
import { Fragment as Fragment18, jsx as jsx58, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
34215
34408
|
function Section({ title, rows }) {
|
|
34216
|
-
return /* @__PURE__ */
|
|
34217
|
-
/* @__PURE__ */
|
|
34218
|
-
rows.map((row) => /* @__PURE__ */
|
|
34219
|
-
/* @__PURE__ */
|
|
34220
|
-
/* @__PURE__ */
|
|
34409
|
+
return /* @__PURE__ */ jsxs47(Box47, { flexDirection: "column", children: [
|
|
34410
|
+
/* @__PURE__ */ jsx58(Text48, { bold: true, color: PALETTE.accent, children: title }),
|
|
34411
|
+
rows.map((row) => /* @__PURE__ */ jsxs47(Box47, { gap: 1, children: [
|
|
34412
|
+
/* @__PURE__ */ jsx58(Box47, { width: 16, flexShrink: 0, children: /* @__PURE__ */ jsx58(Text48, { color: PALETTE.muted, children: row.label }) }),
|
|
34413
|
+
/* @__PURE__ */ jsx58(Text48, { children: row.value })
|
|
34221
34414
|
] }, row.label))
|
|
34222
34415
|
] });
|
|
34223
34416
|
}
|
|
@@ -34241,14 +34434,14 @@ function HelpScreen({ onDone }) {
|
|
|
34241
34434
|
return;
|
|
34242
34435
|
}
|
|
34243
34436
|
});
|
|
34244
|
-
return /* @__PURE__ */
|
|
34245
|
-
/* @__PURE__ */
|
|
34246
|
-
info ? /* @__PURE__ */
|
|
34247
|
-
/* @__PURE__ */
|
|
34248
|
-
/* @__PURE__ */
|
|
34249
|
-
/* @__PURE__ */
|
|
34250
|
-
] }) : /* @__PURE__ */
|
|
34251
|
-
/* @__PURE__ */
|
|
34437
|
+
return /* @__PURE__ */ jsxs47(Box47, { flexDirection: "column", paddingX: 2, paddingY: 1, gap: 1, children: [
|
|
34438
|
+
/* @__PURE__ */ jsx58(Text48, { bold: true, children: "Help" }),
|
|
34439
|
+
info ? /* @__PURE__ */ jsxs47(Fragment18, { children: [
|
|
34440
|
+
/* @__PURE__ */ jsx58(Section, { title: "Where things are stored", rows: info.storage }),
|
|
34441
|
+
/* @__PURE__ */ jsx58(Section, { title: "Troubleshooting", rows: info.troubleshooting }),
|
|
34442
|
+
/* @__PURE__ */ jsx58(Text48, { color: PALETTE.muted, children: "Hit a problem? Turn on Debug Mode in Settings, reproduce it, then share the session folder above. The CMA token is redacted from those logs." })
|
|
34443
|
+
] }) : /* @__PURE__ */ jsx58(Text48, { color: PALETTE.accent, children: "Loading..." }),
|
|
34444
|
+
/* @__PURE__ */ jsx58(
|
|
34252
34445
|
ControlHints,
|
|
34253
34446
|
{
|
|
34254
34447
|
hints: [
|
|
@@ -34271,8 +34464,8 @@ var init_PageContainer2 = __esm({
|
|
|
34271
34464
|
|
|
34272
34465
|
// packages/experience-design-system-cli/src/tui/settings/PageContainer.tsx
|
|
34273
34466
|
import { useState as useState32 } from "react";
|
|
34274
|
-
import { Box as
|
|
34275
|
-
import { jsx as
|
|
34467
|
+
import { Box as Box48, Text as Text49, useInput as useInput14 } from "ink";
|
|
34468
|
+
import { jsx as jsx59, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
34276
34469
|
function SettingsScreen({
|
|
34277
34470
|
onNavigate,
|
|
34278
34471
|
onBack
|
|
@@ -34303,15 +34496,15 @@ function SettingsScreen({
|
|
|
34303
34496
|
onBack();
|
|
34304
34497
|
}
|
|
34305
34498
|
});
|
|
34306
|
-
return /* @__PURE__ */
|
|
34307
|
-
/* @__PURE__ */
|
|
34308
|
-
/* @__PURE__ */
|
|
34309
|
-
items.map((item, i) => /* @__PURE__ */
|
|
34499
|
+
return /* @__PURE__ */ jsxs48(Box48, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
34500
|
+
/* @__PURE__ */ jsx59(Text49, { bold: true, children: "Settings" }),
|
|
34501
|
+
/* @__PURE__ */ jsx59(Text49, { color: PALETTE.muted, children: " " }),
|
|
34502
|
+
items.map((item, i) => /* @__PURE__ */ jsxs48(Text49, { color: i === focusIdx ? PALETTE.accent : void 0, children: [
|
|
34310
34503
|
i === focusIdx ? "> " : " ",
|
|
34311
34504
|
item.label
|
|
34312
34505
|
] }, item.label)),
|
|
34313
|
-
/* @__PURE__ */
|
|
34314
|
-
/* @__PURE__ */
|
|
34506
|
+
/* @__PURE__ */ jsx59(Text49, { children: " " }),
|
|
34507
|
+
/* @__PURE__ */ jsx59(
|
|
34315
34508
|
ControlHints,
|
|
34316
34509
|
{
|
|
34317
34510
|
hints: [
|
|
@@ -34580,15 +34773,15 @@ var init_agent_debug = __esm({
|
|
|
34580
34773
|
});
|
|
34581
34774
|
|
|
34582
34775
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentStatusBadge.tsx
|
|
34583
|
-
import { Text as
|
|
34584
|
-
import { jsx as
|
|
34776
|
+
import { Text as Text50 } from "ink";
|
|
34777
|
+
import { jsx as jsx60 } from "react/jsx-runtime";
|
|
34585
34778
|
function AgentStatusBadge({
|
|
34586
34779
|
name,
|
|
34587
34780
|
checks,
|
|
34588
34781
|
binary
|
|
34589
34782
|
}) {
|
|
34590
34783
|
const { symbol, text, tone } = LIST_STATUS[checks ? statusFromChecks(name, checks, binary) : "checking"];
|
|
34591
|
-
return /* @__PURE__ */
|
|
34784
|
+
return /* @__PURE__ */ jsx60(Text50, { color: TONE_COLOR[tone], children: `${symbol} ${text}` });
|
|
34592
34785
|
}
|
|
34593
34786
|
var TONE_COLOR;
|
|
34594
34787
|
var init_AgentStatusBadge = __esm({
|
|
@@ -34606,12 +34799,12 @@ var init_AgentStatusBadge = __esm({
|
|
|
34606
34799
|
|
|
34607
34800
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentDetail.tsx
|
|
34608
34801
|
import { useEffect as useEffect31, useState as useState33 } from "react";
|
|
34609
|
-
import { Box as
|
|
34610
|
-
import { jsx as
|
|
34802
|
+
import { Box as Box49, Text as Text51 } from "ink";
|
|
34803
|
+
import { jsx as jsx61, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
34611
34804
|
function StatusHeading() {
|
|
34612
|
-
return /* @__PURE__ */
|
|
34613
|
-
/* @__PURE__ */
|
|
34614
|
-
/* @__PURE__ */
|
|
34805
|
+
return /* @__PURE__ */ jsxs49(Box49, { gap: 1, children: [
|
|
34806
|
+
/* @__PURE__ */ jsx61(Text51, { bold: true, color: PALETTE.muted, children: "STATUS" }),
|
|
34807
|
+
/* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: "\xB7 read only" })
|
|
34615
34808
|
] });
|
|
34616
34809
|
}
|
|
34617
34810
|
function AgentDetail({
|
|
@@ -34674,7 +34867,7 @@ function AgentDetail({
|
|
|
34674
34867
|
};
|
|
34675
34868
|
const formFields = fields(name);
|
|
34676
34869
|
const labelWidth = formLabelWidth([...formFields, action]);
|
|
34677
|
-
return /* @__PURE__ */
|
|
34870
|
+
return /* @__PURE__ */ jsx61(
|
|
34678
34871
|
FieldForm,
|
|
34679
34872
|
{
|
|
34680
34873
|
title: `Settings \u203A Configuration \u203A Agents \u203A ${AGENT_LABELS[name]}`,
|
|
@@ -34691,9 +34884,9 @@ function AgentDetail({
|
|
|
34691
34884
|
actions: [action],
|
|
34692
34885
|
notice: testing ? null : notice,
|
|
34693
34886
|
busy: saving || testing,
|
|
34694
|
-
children: /* @__PURE__ */
|
|
34695
|
-
/* @__PURE__ */
|
|
34696
|
-
statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */
|
|
34887
|
+
children: /* @__PURE__ */ jsxs49(Box49, { flexDirection: "column", marginTop: 1, children: [
|
|
34888
|
+
/* @__PURE__ */ jsx61(StatusHeading, {}),
|
|
34889
|
+
statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */ jsx61(FormReadOnlyRow, { label: row.label, labelWidth, children: /* @__PURE__ */ jsx61(Text51, { color: TONE_COLOR[row.tone], children: row.value }) }, row.label))
|
|
34697
34890
|
] })
|
|
34698
34891
|
}
|
|
34699
34892
|
);
|
|
@@ -34719,8 +34912,8 @@ var init_AgentDetail = __esm({
|
|
|
34719
34912
|
|
|
34720
34913
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentsScreen.tsx
|
|
34721
34914
|
import { useEffect as useEffect32, useRef as useRef20, useState as useState34 } from "react";
|
|
34722
|
-
import { Box as
|
|
34723
|
-
import { Fragment as
|
|
34915
|
+
import { Box as Box50, Text as Text52, useInput as useInput15 } from "ink";
|
|
34916
|
+
import { Fragment as Fragment19, jsx as jsx62, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
34724
34917
|
function AgentsScreen({ onDone }) {
|
|
34725
34918
|
const [config, setConfig] = useState34(null);
|
|
34726
34919
|
const [focus, setFocus] = useState34(0);
|
|
@@ -34828,21 +35021,21 @@ function AgentsScreen({ onDone }) {
|
|
|
34828
35021
|
}
|
|
34829
35022
|
});
|
|
34830
35023
|
if (!config) {
|
|
34831
|
-
return /* @__PURE__ */
|
|
34832
|
-
/* @__PURE__ */
|
|
34833
|
-
/* @__PURE__ */
|
|
34834
|
-
loadError ? /* @__PURE__ */
|
|
34835
|
-
/* @__PURE__ */
|
|
35024
|
+
return /* @__PURE__ */ jsxs50(Box50, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
35025
|
+
/* @__PURE__ */ jsx62(Text52, { bold: true, children: "Settings \u203A Configuration \u203A Agents" }),
|
|
35026
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
35027
|
+
loadError ? /* @__PURE__ */ jsxs50(Fragment19, { children: [
|
|
35028
|
+
/* @__PURE__ */ jsxs50(Text52, { color: PALETTE.error, children: [
|
|
34836
35029
|
"\u2717 Could not read the settings: ",
|
|
34837
35030
|
loadError
|
|
34838
35031
|
] }),
|
|
34839
|
-
/* @__PURE__ */
|
|
34840
|
-
/* @__PURE__ */
|
|
34841
|
-
] }) : /* @__PURE__ */
|
|
35032
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
35033
|
+
/* @__PURE__ */ jsx62(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
|
|
35034
|
+
] }) : /* @__PURE__ */ jsx62(Text52, { color: PALETTE.accent, children: "Loading..." })
|
|
34842
35035
|
] });
|
|
34843
35036
|
}
|
|
34844
35037
|
if (open) {
|
|
34845
|
-
return /* @__PURE__ */
|
|
35038
|
+
return /* @__PURE__ */ jsx62(
|
|
34846
35039
|
AgentDetail,
|
|
34847
35040
|
{
|
|
34848
35041
|
name: open,
|
|
@@ -34863,48 +35056,48 @@ function AgentsScreen({ onDone }) {
|
|
|
34863
35056
|
);
|
|
34864
35057
|
}
|
|
34865
35058
|
const focusedAgent = AGENT_NAMES[focus];
|
|
34866
|
-
return /* @__PURE__ */
|
|
34867
|
-
/* @__PURE__ */
|
|
34868
|
-
/* @__PURE__ */
|
|
34869
|
-
/* @__PURE__ */
|
|
34870
|
-
/* @__PURE__ */
|
|
34871
|
-
/* @__PURE__ */
|
|
34872
|
-
/* @__PURE__ */
|
|
34873
|
-
/* @__PURE__ */
|
|
34874
|
-
saving && /* @__PURE__ */
|
|
35059
|
+
return /* @__PURE__ */ jsxs50(Box50, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
35060
|
+
/* @__PURE__ */ jsx62(Text52, { bold: true, children: "Settings \u203A Configuration \u203A Agents" }),
|
|
35061
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
35062
|
+
/* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "The coding agent the CLI runs, and what was found for each one." }),
|
|
35063
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
35064
|
+
/* @__PURE__ */ jsxs50(Box50, { gap: 1, children: [
|
|
35065
|
+
/* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "Default agent" }),
|
|
35066
|
+
/* @__PURE__ */ jsx62(Text52, { bold: true, children: AGENT_LABELS[config.defaultAgent] }),
|
|
35067
|
+
saving && /* @__PURE__ */ jsx62(Text52, { color: PALETTE.accent, children: "\u2026 saving" })
|
|
34875
35068
|
] }),
|
|
34876
|
-
/* @__PURE__ */
|
|
34877
|
-
/* @__PURE__ */
|
|
34878
|
-
/* @__PURE__ */
|
|
34879
|
-
/* @__PURE__ */
|
|
34880
|
-
/* @__PURE__ */
|
|
35069
|
+
/* @__PURE__ */ jsxs50(Box50, { marginTop: 1, gap: 1, children: [
|
|
35070
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
35071
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
35072
|
+
/* @__PURE__ */ jsx62(Box50, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "AGENT" }) }),
|
|
35073
|
+
/* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "STATUS" })
|
|
34881
35074
|
] }),
|
|
34882
35075
|
AGENT_NAMES.map((name) => {
|
|
34883
35076
|
const isFocused = focusedAgent === name;
|
|
34884
|
-
return /* @__PURE__ */
|
|
34885
|
-
/* @__PURE__ */
|
|
34886
|
-
/* @__PURE__ */
|
|
34887
|
-
/* @__PURE__ */
|
|
34888
|
-
/* @__PURE__ */
|
|
35077
|
+
return /* @__PURE__ */ jsxs50(Box50, { gap: 1, children: [
|
|
35078
|
+
/* @__PURE__ */ jsx62(Text52, { color: isFocused ? PALETTE.accent : void 0, children: isFocused ? "\u276F" : " " }),
|
|
35079
|
+
/* @__PURE__ */ jsx62(Text52, { color: PALETTE.success, children: name === config.defaultAgent ? "\u2605" : " " }),
|
|
35080
|
+
/* @__PURE__ */ jsx62(Box50, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text52, { bold: isFocused, color: isFocused ? PALETTE.accent : void 0, children: AGENT_LABELS[name] }) }),
|
|
35081
|
+
/* @__PURE__ */ jsx62(AgentStatusBadge, { name, checks: checks[name], binary: config.agents[name].binary })
|
|
34889
35082
|
] }, name);
|
|
34890
35083
|
}),
|
|
34891
|
-
/* @__PURE__ */
|
|
34892
|
-
/* @__PURE__ */
|
|
34893
|
-
panelRows(focusedAgent, checks[focusedAgent], config.agents[focusedAgent]).map((row) => /* @__PURE__ */
|
|
34894
|
-
/* @__PURE__ */
|
|
34895
|
-
/* @__PURE__ */
|
|
35084
|
+
/* @__PURE__ */ jsxs50(Box50, { flexDirection: "column", marginTop: 1, children: [
|
|
35085
|
+
/* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: `\u2500 ${AGENT_LABELS[focusedAgent]} ${"\u2500".repeat(30)}` }),
|
|
35086
|
+
panelRows(focusedAgent, checks[focusedAgent], config.agents[focusedAgent]).map((row) => /* @__PURE__ */ jsxs50(Box50, { gap: 1, paddingLeft: 1, children: [
|
|
35087
|
+
/* @__PURE__ */ jsx62(Box50, { width: PANEL_LABEL_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: row.label }) }),
|
|
35088
|
+
/* @__PURE__ */ jsx62(Text52, { color: TONE_COLOR[row.tone], children: row.value })
|
|
34896
35089
|
] }, row.label))
|
|
34897
35090
|
] }),
|
|
34898
|
-
notice && /* @__PURE__ */
|
|
34899
|
-
/* @__PURE__ */
|
|
34900
|
-
/* @__PURE__ */
|
|
35091
|
+
notice && /* @__PURE__ */ jsxs50(Fragment19, { children: [
|
|
35092
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
35093
|
+
/* @__PURE__ */ jsxs50(Text52, { bold: true, color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
34901
35094
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
34902
35095
|
" ",
|
|
34903
35096
|
notice.text
|
|
34904
35097
|
] })
|
|
34905
35098
|
] }),
|
|
34906
|
-
/* @__PURE__ */
|
|
34907
|
-
/* @__PURE__ */
|
|
35099
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
35100
|
+
/* @__PURE__ */ jsx62(
|
|
34908
35101
|
ControlHints,
|
|
34909
35102
|
{
|
|
34910
35103
|
hints: [
|
|
@@ -34969,8 +35162,8 @@ var init_project_store = __esm({
|
|
|
34969
35162
|
|
|
34970
35163
|
// packages/experience-design-system-cli/src/tui/settings/configuration/project/ProjectScreen.tsx
|
|
34971
35164
|
import { useEffect as useEffect33, useRef as useRef21, useState as useState35 } from "react";
|
|
34972
|
-
import { Box as
|
|
34973
|
-
import { Fragment as
|
|
35165
|
+
import { Box as Box51, Text as Text53, useInput as useInput16 } from "ink";
|
|
35166
|
+
import { Fragment as Fragment20, jsx as jsx63, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
34974
35167
|
function debugFields(config) {
|
|
34975
35168
|
return {
|
|
34976
35169
|
space_id: config?.spaceId ?? "",
|
|
@@ -35039,17 +35232,17 @@ function ProjectScreen({ onDone }) {
|
|
|
35039
35232
|
}
|
|
35040
35233
|
});
|
|
35041
35234
|
if (!config) {
|
|
35042
|
-
return /* @__PURE__ */
|
|
35043
|
-
/* @__PURE__ */
|
|
35044
|
-
/* @__PURE__ */
|
|
35045
|
-
loadError ? /* @__PURE__ */
|
|
35046
|
-
/* @__PURE__ */
|
|
35235
|
+
return /* @__PURE__ */ jsxs51(Box51, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
35236
|
+
/* @__PURE__ */ jsx63(Text53, { bold: true, children: "Settings \u203A Configuration \u203A Project" }),
|
|
35237
|
+
/* @__PURE__ */ jsx63(Text53, { children: " " }),
|
|
35238
|
+
loadError ? /* @__PURE__ */ jsxs51(Fragment20, { children: [
|
|
35239
|
+
/* @__PURE__ */ jsxs51(Text53, { color: PALETTE.error, children: [
|
|
35047
35240
|
"\u2717 Could not read the settings: ",
|
|
35048
35241
|
loadError
|
|
35049
35242
|
] }),
|
|
35050
|
-
/* @__PURE__ */
|
|
35051
|
-
/* @__PURE__ */
|
|
35052
|
-
] }) : /* @__PURE__ */
|
|
35243
|
+
/* @__PURE__ */ jsx63(Text53, { children: " " }),
|
|
35244
|
+
/* @__PURE__ */ jsx63(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
|
|
35245
|
+
] }) : /* @__PURE__ */ jsx63(Text53, { color: PALETTE.accent, children: "Loading..." })
|
|
35053
35246
|
] });
|
|
35054
35247
|
}
|
|
35055
35248
|
const save = () => {
|
|
@@ -35070,7 +35263,7 @@ function ProjectScreen({ onDone }) {
|
|
|
35070
35263
|
endVisit(config);
|
|
35071
35264
|
onDone();
|
|
35072
35265
|
};
|
|
35073
|
-
return /* @__PURE__ */
|
|
35266
|
+
return /* @__PURE__ */ jsx63(
|
|
35074
35267
|
FieldForm,
|
|
35075
35268
|
{
|
|
35076
35269
|
title: "Settings \u203A Configuration \u203A Project",
|
|
@@ -35116,8 +35309,8 @@ var init_ProjectScreen = __esm({
|
|
|
35116
35309
|
|
|
35117
35310
|
// packages/experience-design-system-cli/src/tui/settings/configuration/ConfigurationScreen.tsx
|
|
35118
35311
|
import { useState as useState36 } from "react";
|
|
35119
|
-
import { Box as
|
|
35120
|
-
import { jsx as
|
|
35312
|
+
import { Box as Box52, Text as Text54, useInput as useInput17 } from "ink";
|
|
35313
|
+
import { jsx as jsx64, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
35121
35314
|
function ConfigurationScreen({ onDone }) {
|
|
35122
35315
|
const [focus, setFocus] = useState36(0);
|
|
35123
35316
|
const [open, setOpen] = useState36(null);
|
|
@@ -35138,18 +35331,18 @@ function ConfigurationScreen({ onDone }) {
|
|
|
35138
35331
|
}
|
|
35139
35332
|
if (key.escape || input === "q") onDone();
|
|
35140
35333
|
});
|
|
35141
|
-
if (open === "project") return /* @__PURE__ */
|
|
35142
|
-
if (open === "agents") return /* @__PURE__ */
|
|
35143
|
-
return /* @__PURE__ */
|
|
35144
|
-
/* @__PURE__ */
|
|
35145
|
-
/* @__PURE__ */
|
|
35146
|
-
SECTIONS.map((section, index) => /* @__PURE__ */
|
|
35147
|
-
/* @__PURE__ */
|
|
35148
|
-
/* @__PURE__ */
|
|
35149
|
-
/* @__PURE__ */
|
|
35334
|
+
if (open === "project") return /* @__PURE__ */ jsx64(ProjectScreen, { onDone: close });
|
|
35335
|
+
if (open === "agents") return /* @__PURE__ */ jsx64(AgentsScreen, { onDone: close });
|
|
35336
|
+
return /* @__PURE__ */ jsxs52(Box52, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
35337
|
+
/* @__PURE__ */ jsx64(Text54, { bold: true, children: "Settings \u203A Configuration" }),
|
|
35338
|
+
/* @__PURE__ */ jsx64(Text54, { children: " " }),
|
|
35339
|
+
SECTIONS.map((section, index) => /* @__PURE__ */ jsxs52(Box52, { gap: 1, children: [
|
|
35340
|
+
/* @__PURE__ */ jsx64(Text54, { color: index === focus ? PALETTE.accent : void 0, children: index === focus ? "\u276F" : " " }),
|
|
35341
|
+
/* @__PURE__ */ jsx64(Box52, { width: 9, flexShrink: 0, children: /* @__PURE__ */ jsx64(Text54, { bold: index === focus, color: index === focus ? PALETTE.accent : void 0, children: section.label }) }),
|
|
35342
|
+
/* @__PURE__ */ jsx64(Text54, { color: PALETTE.muted, children: section.description })
|
|
35150
35343
|
] }, section.id)),
|
|
35151
|
-
/* @__PURE__ */
|
|
35152
|
-
/* @__PURE__ */
|
|
35344
|
+
/* @__PURE__ */ jsx64(Text54, { children: " " }),
|
|
35345
|
+
/* @__PURE__ */ jsx64(
|
|
35153
35346
|
ControlHints,
|
|
35154
35347
|
{
|
|
35155
35348
|
hints: [
|
|
@@ -35182,8 +35375,8 @@ var init_ConfigurationScreen = __esm({
|
|
|
35182
35375
|
|
|
35183
35376
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx
|
|
35184
35377
|
import { useEffect as useEffect34, useState as useState37 } from "react";
|
|
35185
|
-
import { Box as
|
|
35186
|
-
import { Fragment as
|
|
35378
|
+
import { Box as Box53, Text as Text55, useInput as useInput18 } from "ink";
|
|
35379
|
+
import { Fragment as Fragment21, jsx as jsx65, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
35187
35380
|
function OptInAnalyticsScreen({ onDone }) {
|
|
35188
35381
|
const [loading, setLoading] = useState37(true);
|
|
35189
35382
|
const [enabled, setEnabled] = useState37(true);
|
|
@@ -35214,21 +35407,21 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
35214
35407
|
onDone();
|
|
35215
35408
|
}
|
|
35216
35409
|
});
|
|
35217
|
-
return /* @__PURE__ */
|
|
35218
|
-
/* @__PURE__ */
|
|
35219
|
-
/* @__PURE__ */
|
|
35220
|
-
loading ? /* @__PURE__ */
|
|
35221
|
-
/* @__PURE__ */
|
|
35410
|
+
return /* @__PURE__ */ jsxs53(Box53, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
35411
|
+
/* @__PURE__ */ jsx65(Text55, { bold: true, children: "Settings \u203A Opt-in Analytics" }),
|
|
35412
|
+
/* @__PURE__ */ jsx65(Text55, { children: " " }),
|
|
35413
|
+
loading ? /* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "Loading\u2026" }) : /* @__PURE__ */ jsxs53(Fragment21, { children: [
|
|
35414
|
+
/* @__PURE__ */ jsxs53(Text55, { children: [
|
|
35222
35415
|
"Share anonymous usage data:",
|
|
35223
35416
|
" ",
|
|
35224
|
-
/* @__PURE__ */
|
|
35417
|
+
/* @__PURE__ */ jsx65(Text55, { bold: true, color: enabled ? PALETTE.success : PALETTE.muted, children: enabled ? "On" : "Off" })
|
|
35225
35418
|
] }),
|
|
35226
|
-
/* @__PURE__ */
|
|
35227
|
-
/* @__PURE__ */
|
|
35228
|
-
/* @__PURE__ */
|
|
35419
|
+
/* @__PURE__ */ jsx65(Text55, { children: " " }),
|
|
35420
|
+
/* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "Shares which CLI commands are used and where imports succeed or fail." }),
|
|
35421
|
+
/* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "Never includes source code, file paths, credentials, or authored content." })
|
|
35229
35422
|
] }),
|
|
35230
|
-
/* @__PURE__ */
|
|
35231
|
-
/* @__PURE__ */
|
|
35423
|
+
/* @__PURE__ */ jsx65(Text55, { children: " " }),
|
|
35424
|
+
/* @__PURE__ */ jsx65(
|
|
35232
35425
|
ControlHints,
|
|
35233
35426
|
{
|
|
35234
35427
|
hints: [
|
|
@@ -35251,8 +35444,8 @@ var init_screen12 = __esm({
|
|
|
35251
35444
|
|
|
35252
35445
|
// packages/experience-design-system-cli/src/tui/settings/debug-mode/screen.tsx
|
|
35253
35446
|
import { useEffect as useEffect35, useRef as useRef22, useState as useState38 } from "react";
|
|
35254
|
-
import { Box as
|
|
35255
|
-
import { Fragment as
|
|
35447
|
+
import { Box as Box54, Text as Text56, useInput as useInput19 } from "ink";
|
|
35448
|
+
import { Fragment as Fragment22, jsx as jsx66, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
35256
35449
|
function DebugModeScreen({ onDone }) {
|
|
35257
35450
|
const [setting, setSetting] = useState38(null);
|
|
35258
35451
|
const [focus, setFocus] = useState38("enabled");
|
|
@@ -35328,25 +35521,25 @@ function DebugModeScreen({ onDone }) {
|
|
|
35328
35521
|
onDone();
|
|
35329
35522
|
}
|
|
35330
35523
|
});
|
|
35331
|
-
const marker = (row) => /* @__PURE__ */
|
|
35332
|
-
const label = (row, text) => /* @__PURE__ */
|
|
35333
|
-
return /* @__PURE__ */
|
|
35334
|
-
/* @__PURE__ */
|
|
35335
|
-
/* @__PURE__ */
|
|
35336
|
-
setting ? /* @__PURE__ */
|
|
35337
|
-
/* @__PURE__ */
|
|
35524
|
+
const marker = (row) => /* @__PURE__ */ jsx66(Text56, { color: focus === row ? PALETTE.accent : void 0, children: focus === row ? "\u276F" : " " });
|
|
35525
|
+
const label = (row, text) => /* @__PURE__ */ jsx66(Text56, { bold: focus === row, color: focus === row ? PALETTE.accent : PALETTE.muted, children: text });
|
|
35526
|
+
return /* @__PURE__ */ jsxs54(Box54, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
35527
|
+
/* @__PURE__ */ jsx66(Text56, { bold: true, children: "Settings \u203A Debug Mode" }),
|
|
35528
|
+
/* @__PURE__ */ jsx66(Text56, { children: " " }),
|
|
35529
|
+
setting ? /* @__PURE__ */ jsxs54(Fragment22, { children: [
|
|
35530
|
+
/* @__PURE__ */ jsxs54(Box54, { gap: 1, children: [
|
|
35338
35531
|
marker("enabled"),
|
|
35339
35532
|
label("enabled", "Debug logging:"),
|
|
35340
|
-
/* @__PURE__ */
|
|
35533
|
+
/* @__PURE__ */ jsx66(Text56, { bold: true, color: setting.enabled ? PALETTE.success : PALETTE.muted, children: setting.enabled ? "On" : "Off" })
|
|
35341
35534
|
] }),
|
|
35342
|
-
/* @__PURE__ */
|
|
35535
|
+
/* @__PURE__ */ jsxs54(Box54, { gap: 1, children: [
|
|
35343
35536
|
marker("retentionDays"),
|
|
35344
35537
|
label("retentionDays", "Delete logs after:"),
|
|
35345
35538
|
RETENTION_CHOICES.map((days) => {
|
|
35346
35539
|
const highlighted = focus === "retentionDays" && days === pending;
|
|
35347
35540
|
const saved = days === setting.retentionDays;
|
|
35348
|
-
return /* @__PURE__ */
|
|
35349
|
-
|
|
35541
|
+
return /* @__PURE__ */ jsx66(
|
|
35542
|
+
Text56,
|
|
35350
35543
|
{
|
|
35351
35544
|
bold: highlighted || saved,
|
|
35352
35545
|
underline: highlighted,
|
|
@@ -35357,15 +35550,15 @@ function DebugModeScreen({ onDone }) {
|
|
|
35357
35550
|
);
|
|
35358
35551
|
})
|
|
35359
35552
|
] }),
|
|
35360
|
-
/* @__PURE__ */
|
|
35361
|
-
notice ? /* @__PURE__ */
|
|
35553
|
+
/* @__PURE__ */ jsx66(Text56, { children: " " }),
|
|
35554
|
+
notice ? /* @__PURE__ */ jsxs54(Text56, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
35362
35555
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
35363
35556
|
" ",
|
|
35364
35557
|
notice.text
|
|
35365
|
-
] }) : /* @__PURE__ */
|
|
35366
|
-
] }) : /* @__PURE__ */
|
|
35367
|
-
/* @__PURE__ */
|
|
35368
|
-
/* @__PURE__ */
|
|
35558
|
+
] }) : /* @__PURE__ */ jsx66(Text56, { color: PALETTE.muted, children: "\u2713 marks what is saved. Older logs are deleted the next time the CLI starts." })
|
|
35559
|
+
] }) : /* @__PURE__ */ jsx66(Text56, { color: PALETTE.muted, children: "Loading\u2026" }),
|
|
35560
|
+
/* @__PURE__ */ jsx66(Text56, { children: " " }),
|
|
35561
|
+
/* @__PURE__ */ jsx66(
|
|
35369
35562
|
ControlHints,
|
|
35370
35563
|
{
|
|
35371
35564
|
hints: [
|
|
@@ -35403,7 +35596,7 @@ __export(app_exports, {
|
|
|
35403
35596
|
runApp: () => runApp
|
|
35404
35597
|
});
|
|
35405
35598
|
import { useEffect as useEffect36, useState as useState39 } from "react";
|
|
35406
|
-
import { Fragment as
|
|
35599
|
+
import { Fragment as Fragment23, jsx as jsx67 } from "react/jsx-runtime";
|
|
35407
35600
|
function App({ importOptions, inkClear }) {
|
|
35408
35601
|
const [screen, setScreen] = useState39("start");
|
|
35409
35602
|
const [importExitCode, setImportExitCode] = useState39();
|
|
@@ -35604,9 +35797,9 @@ function App({ importOptions, inkClear }) {
|
|
|
35604
35797
|
const content = (() => {
|
|
35605
35798
|
switch (screen) {
|
|
35606
35799
|
case "import":
|
|
35607
|
-
if (showImportResult) return /* @__PURE__ */
|
|
35800
|
+
if (showImportResult) return /* @__PURE__ */ jsx67(ImportScreen, { exitCode: importExitCode, onDone: finishImportResult });
|
|
35608
35801
|
if (flow && flowStart) {
|
|
35609
|
-
return /* @__PURE__ */
|
|
35802
|
+
return /* @__PURE__ */ jsx67(
|
|
35610
35803
|
FlowScreen,
|
|
35611
35804
|
{
|
|
35612
35805
|
state: flow.state,
|
|
@@ -35617,7 +35810,7 @@ function App({ importOptions, inkClear }) {
|
|
|
35617
35810
|
);
|
|
35618
35811
|
}
|
|
35619
35812
|
if (tokenReview) {
|
|
35620
|
-
return /* @__PURE__ */
|
|
35813
|
+
return /* @__PURE__ */ jsx67(
|
|
35621
35814
|
TokenReviewScreen,
|
|
35622
35815
|
{
|
|
35623
35816
|
tokensPath: tokenReview.tokensPath,
|
|
@@ -35626,15 +35819,15 @@ function App({ importOptions, inkClear }) {
|
|
|
35626
35819
|
}
|
|
35627
35820
|
);
|
|
35628
35821
|
}
|
|
35629
|
-
if (importDefaults === void 0) return /* @__PURE__ */
|
|
35822
|
+
if (importDefaults === void 0) return /* @__PURE__ */ jsx67(Fragment23, {});
|
|
35630
35823
|
if (target === void 0) {
|
|
35631
|
-
return /* @__PURE__ */
|
|
35824
|
+
return /* @__PURE__ */ jsx67(PreflightScreen, { onChoose: setTarget, onQuit: leaveImport });
|
|
35632
35825
|
}
|
|
35633
35826
|
const inputStep = currentInputStep(target, answers);
|
|
35634
35827
|
if (!extractionRun && !tokensOnlyRun && inputStep !== "credentials") {
|
|
35635
35828
|
switch (inputStep) {
|
|
35636
35829
|
case "project":
|
|
35637
|
-
return /* @__PURE__ */
|
|
35830
|
+
return /* @__PURE__ */ jsx67(
|
|
35638
35831
|
WelcomeScreen,
|
|
35639
35832
|
{
|
|
35640
35833
|
mode: target,
|
|
@@ -35644,7 +35837,7 @@ function App({ importOptions, inkClear }) {
|
|
|
35644
35837
|
}
|
|
35645
35838
|
);
|
|
35646
35839
|
case "token-file":
|
|
35647
|
-
return /* @__PURE__ */
|
|
35840
|
+
return /* @__PURE__ */ jsx67(
|
|
35648
35841
|
TokenInputScreen,
|
|
35649
35842
|
{
|
|
35650
35843
|
mode: target,
|
|
@@ -35654,7 +35847,7 @@ function App({ importOptions, inkClear }) {
|
|
|
35654
35847
|
}
|
|
35655
35848
|
);
|
|
35656
35849
|
case "path-validation":
|
|
35657
|
-
return /* @__PURE__ */
|
|
35850
|
+
return /* @__PURE__ */ jsx67(
|
|
35658
35851
|
PathValidationScreen,
|
|
35659
35852
|
{
|
|
35660
35853
|
mode: target,
|
|
@@ -35669,9 +35862,9 @@ function App({ importOptions, inkClear }) {
|
|
|
35669
35862
|
}
|
|
35670
35863
|
if (tokensOnlyRun) {
|
|
35671
35864
|
if (tokensOnly?.status === "done" && !tokensOnly.result.ok) {
|
|
35672
|
-
return /* @__PURE__ */
|
|
35865
|
+
return /* @__PURE__ */ jsx67(ErrorStep, { stepName: tokensOnly.result.step, message: tokensOnly.result.message, onExit: leaveImport });
|
|
35673
35866
|
}
|
|
35674
|
-
return /* @__PURE__ */
|
|
35867
|
+
return /* @__PURE__ */ jsx67(
|
|
35675
35868
|
RunningStep,
|
|
35676
35869
|
{
|
|
35677
35870
|
step: "generation",
|
|
@@ -35682,19 +35875,26 @@ function App({ importOptions, inkClear }) {
|
|
|
35682
35875
|
}
|
|
35683
35876
|
if (extractionRun) {
|
|
35684
35877
|
if (extraction?.status === "done" && !extraction.result.ok) {
|
|
35685
|
-
return /* @__PURE__ */
|
|
35878
|
+
return /* @__PURE__ */ jsx67(ErrorStep, { stepName: extraction.result.step, message: extraction.result.message, onExit: leaveImport });
|
|
35686
35879
|
}
|
|
35687
35880
|
if (extraction?.status === "running") {
|
|
35688
|
-
return /* @__PURE__ */
|
|
35881
|
+
return /* @__PURE__ */ jsx67(
|
|
35882
|
+
ExtractionScreen,
|
|
35883
|
+
{
|
|
35884
|
+
progress: extraction.progress,
|
|
35885
|
+
agent: extractionRun.input.agent,
|
|
35886
|
+
rowMs: extraction.rowMs
|
|
35887
|
+
}
|
|
35888
|
+
);
|
|
35689
35889
|
}
|
|
35690
|
-
return /* @__PURE__ */
|
|
35890
|
+
return /* @__PURE__ */ jsx67(Fragment23, {});
|
|
35691
35891
|
}
|
|
35692
35892
|
if (scopeRun && scopeFlow) {
|
|
35693
35893
|
if (scopeFlow.status === "failed") {
|
|
35694
|
-
return /* @__PURE__ */
|
|
35894
|
+
return /* @__PURE__ */ jsx67(ErrorStep, { stepName: "scope gate", message: scopeFlow.message, onExit: leaveImport });
|
|
35695
35895
|
}
|
|
35696
35896
|
if (scopeFlow.status === "deciding") {
|
|
35697
|
-
return /* @__PURE__ */
|
|
35897
|
+
return /* @__PURE__ */ jsx67(
|
|
35698
35898
|
ScopeGateScreen,
|
|
35699
35899
|
{
|
|
35700
35900
|
components: scopeFlow.load.components,
|
|
@@ -35705,22 +35905,23 @@ function App({ importOptions, inkClear }) {
|
|
|
35705
35905
|
);
|
|
35706
35906
|
}
|
|
35707
35907
|
if (generation?.status === "done" && !generation.result.ok) {
|
|
35708
|
-
return /* @__PURE__ */
|
|
35908
|
+
return /* @__PURE__ */ jsx67(ErrorStep, { stepName: generation.result.step, message: generation.result.message, onExit: leaveImport });
|
|
35709
35909
|
}
|
|
35710
35910
|
if (generation?.status === "running") {
|
|
35711
|
-
return /* @__PURE__ */
|
|
35911
|
+
return /* @__PURE__ */ jsx67(
|
|
35712
35912
|
GenerationScreen,
|
|
35713
35913
|
{
|
|
35714
35914
|
progress: generation.progress,
|
|
35715
35915
|
agent: scopeRun.input.agent,
|
|
35716
35916
|
acceptedCount: scopeFlow.decisions.accepted.length,
|
|
35717
|
-
hasTokens: scopeRun.extraction.tokensPath !== ""
|
|
35917
|
+
hasTokens: scopeRun.extraction.tokensPath !== "",
|
|
35918
|
+
rowMs: generation.rowMs
|
|
35718
35919
|
}
|
|
35719
35920
|
);
|
|
35720
35921
|
}
|
|
35721
|
-
return /* @__PURE__ */
|
|
35922
|
+
return /* @__PURE__ */ jsx67(Fragment23, {});
|
|
35722
35923
|
}
|
|
35723
|
-
return /* @__PURE__ */
|
|
35924
|
+
return /* @__PURE__ */ jsx67(
|
|
35724
35925
|
CredentialsScreen,
|
|
35725
35926
|
{
|
|
35726
35927
|
mode: target,
|
|
@@ -35731,27 +35932,27 @@ function App({ importOptions, inkClear }) {
|
|
|
35731
35932
|
}
|
|
35732
35933
|
);
|
|
35733
35934
|
case "help":
|
|
35734
|
-
return /* @__PURE__ */
|
|
35935
|
+
return /* @__PURE__ */ jsx67(HelpScreen, { onDone: goToStart });
|
|
35735
35936
|
case "settings":
|
|
35736
|
-
return /* @__PURE__ */
|
|
35937
|
+
return /* @__PURE__ */ jsx67(SettingsScreen, { onNavigate: setScreen, onBack: goToStart });
|
|
35737
35938
|
case "settings-configuration":
|
|
35738
|
-
return /* @__PURE__ */
|
|
35939
|
+
return /* @__PURE__ */ jsx67(ConfigurationScreen, { onDone: goToSettings });
|
|
35739
35940
|
case "settings-opt-in-analytics":
|
|
35740
|
-
return /* @__PURE__ */
|
|
35941
|
+
return /* @__PURE__ */ jsx67(OptInAnalyticsScreen, { onDone: goToSettings });
|
|
35741
35942
|
case "settings-debug-mode":
|
|
35742
|
-
return /* @__PURE__ */
|
|
35943
|
+
return /* @__PURE__ */ jsx67(DebugModeScreen, { onDone: goToSettings });
|
|
35743
35944
|
case "start":
|
|
35744
|
-
return /* @__PURE__ */
|
|
35945
|
+
return /* @__PURE__ */ jsx67(HomeScreen, { onNavigate: setScreen });
|
|
35745
35946
|
}
|
|
35746
35947
|
})();
|
|
35747
|
-
return /* @__PURE__ */
|
|
35948
|
+
return /* @__PURE__ */ jsx67(HiddenStepsContext.Provider, { value: target === "tokens" ? TOKENS_ONLY_HIDDEN_STEPS : [], children: content });
|
|
35748
35949
|
}
|
|
35749
35950
|
async function runApp(renderApp, importOptions) {
|
|
35750
35951
|
const inkClear = () => {
|
|
35751
35952
|
instance.clear?.();
|
|
35752
35953
|
process.stdout.write("\x1B[H\x1B[0J");
|
|
35753
35954
|
};
|
|
35754
|
-
const instance = renderApp(/* @__PURE__ */
|
|
35955
|
+
const instance = renderApp(/* @__PURE__ */ jsx67(App, { importOptions, inkClear }));
|
|
35755
35956
|
await instance.waitUntilExit();
|
|
35756
35957
|
}
|
|
35757
35958
|
var TOKENS_ONLY_HIDDEN_STEPS;
|