@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/app.js
CHANGED
|
@@ -2711,7 +2711,7 @@ function ImportScreen({ exitCode, onDone }) {
|
|
|
2711
2711
|
|
|
2712
2712
|
// packages/experience-design-system-cli/src/tui/import/steps/00-preflight/screen.tsx
|
|
2713
2713
|
import { useEffect as useEffect4, useRef, useState as useState4 } from "react";
|
|
2714
|
-
import { Box as
|
|
2714
|
+
import { Box as Box10, Text as Text10 } from "ink";
|
|
2715
2715
|
init_debug_store();
|
|
2716
2716
|
|
|
2717
2717
|
// packages/experience-design-system-cli/src/tui/import/steps/00-preflight/controls.ts
|
|
@@ -3050,10 +3050,23 @@ function OverviewBox({ steps }) {
|
|
|
3050
3050
|
}
|
|
3051
3051
|
|
|
3052
3052
|
// packages/experience-design-system-cli/src/tui/import/shared/running-step/running-step.tsx
|
|
3053
|
-
import { Box as
|
|
3054
|
-
import { ProgressBar, Spinner, ThemeProvider } from "@inkjs/ui";
|
|
3053
|
+
import { Box as Box9, Text as Text9 } from "ink";
|
|
3054
|
+
import { ProgressBar, Spinner as Spinner2, ThemeProvider } from "@inkjs/ui";
|
|
3055
3055
|
|
|
3056
3056
|
// packages/experience-design-system-cli/src/tui/import/shared/running-step/logic.ts
|
|
3057
|
+
function lineState(line) {
|
|
3058
|
+
if (line.state) return line.state;
|
|
3059
|
+
return line.complete ? "done" : "running";
|
|
3060
|
+
}
|
|
3061
|
+
function formatDuration(ms) {
|
|
3062
|
+
return ms < 1e3 ? "<1s" : formatElapsed(Math.round(ms / 1e3));
|
|
3063
|
+
}
|
|
3064
|
+
function trackFinished(previous, rows, elapsedMs) {
|
|
3065
|
+
return rows.map((row, index) => previous[index] ?? (lineState(row) === "running" ? void 0 : elapsedMs));
|
|
3066
|
+
}
|
|
3067
|
+
function withTimes(rows, rowMs) {
|
|
3068
|
+
return rows.map((row, index) => rowMs[index] === void 0 ? row : { ...row, ms: rowMs[index] });
|
|
3069
|
+
}
|
|
3057
3070
|
function progressPercent(progress) {
|
|
3058
3071
|
if (progress.total <= 0) return 0;
|
|
3059
3072
|
return Math.min(100, Math.max(0, Math.round(progress.done / progress.total * 100)));
|
|
@@ -3087,48 +3100,115 @@ function useElapsed() {
|
|
|
3087
3100
|
return formatElapsed(seconds2);
|
|
3088
3101
|
}
|
|
3089
3102
|
|
|
3103
|
+
// packages/experience-design-system-cli/src/tui/import/shared/running-step/activity-panel.tsx
|
|
3104
|
+
import { Box as Box8, Text as Text8 } from "ink";
|
|
3105
|
+
import { Spinner } from "@inkjs/ui";
|
|
3106
|
+
|
|
3107
|
+
// packages/experience-design-system-cli/src/tui/import/shared/running-step/activity.ts
|
|
3108
|
+
var BESIDE_MIN_COLUMNS = 110;
|
|
3109
|
+
var PANEL_COLUMNS = 46;
|
|
3110
|
+
function panelLayout(columns) {
|
|
3111
|
+
return columns >= BESIDE_MIN_COLUMNS ? "beside" : "below";
|
|
3112
|
+
}
|
|
3113
|
+
var PRIORITY = { failed: 0, running: 1, done: 2 };
|
|
3114
|
+
function visibleActivity(items, max) {
|
|
3115
|
+
if (items.length <= max) return { shown: [...items], hidden: 0 };
|
|
3116
|
+
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);
|
|
3117
|
+
return { shown: chosen.map((index) => items[index]), hidden: items.length - chosen.length };
|
|
3118
|
+
}
|
|
3119
|
+
function truncate(text, max) {
|
|
3120
|
+
return text.length <= max ? text : `${text.slice(0, Math.max(0, max - 1))}\u2026`;
|
|
3121
|
+
}
|
|
3122
|
+
|
|
3123
|
+
// packages/experience-design-system-cli/src/tui/import/shared/running-step/activity-panel.tsx
|
|
3124
|
+
import { Fragment, jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
3125
|
+
var MAX_ROWS = 8;
|
|
3126
|
+
var ICON = { done: "\u2713", failed: "\u2717" };
|
|
3127
|
+
var COLOR = { done: PALETTE.success, failed: PALETTE.error };
|
|
3128
|
+
function Row({ item, width }) {
|
|
3129
|
+
const time = item.ms !== void 0 ? formatDuration(item.ms) : "";
|
|
3130
|
+
const note = item.detail ? ` ${item.detail}` : "";
|
|
3131
|
+
const name = truncate(`${item.name}${note}`, Math.max(8, width - 12));
|
|
3132
|
+
return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
|
|
3133
|
+
/* @__PURE__ */ jsxs8(Box8, { gap: 1, children: [
|
|
3134
|
+
item.state === "running" ? /* @__PURE__ */ jsx8(Spinner, {}) : /* @__PURE__ */ jsx8(Text8, { color: COLOR[item.state], children: ICON[item.state] }),
|
|
3135
|
+
/* @__PURE__ */ jsx8(Text8, { color: item.state === "failed" ? PALETTE.error : PALETTE.muted, children: name }),
|
|
3136
|
+
time && /* @__PURE__ */ jsx8(Text8, { color: PALETTE.muted, children: time })
|
|
3137
|
+
] }),
|
|
3138
|
+
item.state === "failed" && item.error && /* @__PURE__ */ jsx8(Text8, { color: PALETTE.error, children: ` ${truncate(item.error, Math.max(12, width - 6))}` })
|
|
3139
|
+
] });
|
|
3140
|
+
}
|
|
3141
|
+
function ActivityPanel({ title, items }) {
|
|
3142
|
+
const columns = useTerminalWidth();
|
|
3143
|
+
const width = panelLayout(columns) === "beside" ? PANEL_COLUMNS : Math.max(30, columns - 4);
|
|
3144
|
+
const { shown, hidden } = visibleActivity(items, MAX_ROWS);
|
|
3145
|
+
return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.muted, paddingX: 1, width, children: [
|
|
3146
|
+
/* @__PURE__ */ jsx8(Text8, { bold: true, children: title }),
|
|
3147
|
+
shown.map((item, index) => /* @__PURE__ */ jsx8(Row, { item, width }, `${index}-${item.name}`)),
|
|
3148
|
+
hidden > 0 && /* @__PURE__ */ jsx8(Text8, { color: PALETTE.muted, children: `+ ${hidden} more` })
|
|
3149
|
+
] });
|
|
3150
|
+
}
|
|
3151
|
+
function AsideLayout({
|
|
3152
|
+
aside,
|
|
3153
|
+
children
|
|
3154
|
+
}) {
|
|
3155
|
+
const columns = useTerminalWidth();
|
|
3156
|
+
if (!aside) return /* @__PURE__ */ jsx8(Fragment, { children });
|
|
3157
|
+
const beside = panelLayout(columns) === "beside";
|
|
3158
|
+
return /* @__PURE__ */ jsxs8(Box8, { flexDirection: beside ? "row" : "column", alignItems: "flex-start", children: [
|
|
3159
|
+
children,
|
|
3160
|
+
/* @__PURE__ */ jsx8(Box8, { paddingX: beside ? 0 : 2, paddingBottom: 1, children: aside })
|
|
3161
|
+
] });
|
|
3162
|
+
}
|
|
3163
|
+
|
|
3090
3164
|
// packages/experience-design-system-cli/src/tui/import/shared/running-step/running-step.tsx
|
|
3091
|
-
import { jsx as
|
|
3165
|
+
import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
3166
|
+
var STATE_ICON = { done: "\u2713", warning: "!", failed: "\u2717" };
|
|
3167
|
+
var STATE_COLOR = { done: PALETTE.success, warning: PALETTE.warning, failed: PALETTE.error };
|
|
3168
|
+
var textColor = (state2) => state2 === "warning" || state2 === "failed" ? STATE_COLOR[state2] : PALETTE.muted;
|
|
3092
3169
|
function Line({ line }) {
|
|
3093
3170
|
if (line.progress) {
|
|
3094
|
-
return /* @__PURE__ */
|
|
3095
|
-
/* @__PURE__ */
|
|
3096
|
-
/* @__PURE__ */
|
|
3097
|
-
/* @__PURE__ */
|
|
3171
|
+
return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, children: [
|
|
3172
|
+
/* @__PURE__ */ jsxs9(Box9, { gap: 2, children: [
|
|
3173
|
+
/* @__PURE__ */ jsx9(Box9, { width: 40, children: /* @__PURE__ */ jsx9(ThemeProvider, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx9(ProgressBar, { value: progressPercent(line.progress) }) }) }),
|
|
3174
|
+
/* @__PURE__ */ jsxs9(Text9, { color: PALETTE.muted, children: [
|
|
3098
3175
|
line.progress.done,
|
|
3099
3176
|
"/",
|
|
3100
3177
|
line.progress.total
|
|
3101
3178
|
] })
|
|
3102
3179
|
] }),
|
|
3103
|
-
/* @__PURE__ */
|
|
3180
|
+
/* @__PURE__ */ jsx9(Text9, { color: textColor(lineState(line)), children: line.text })
|
|
3104
3181
|
] });
|
|
3105
3182
|
}
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
/* @__PURE__ */
|
|
3183
|
+
const state2 = lineState(line);
|
|
3184
|
+
return /* @__PURE__ */ jsxs9(Box9, { gap: 1, children: [
|
|
3185
|
+
state2 === "running" ? /* @__PURE__ */ jsx9(Spinner2, {}) : /* @__PURE__ */ jsx9(Text9, { color: STATE_COLOR[state2], children: STATE_ICON[state2] }),
|
|
3186
|
+
/* @__PURE__ */ jsx9(Text9, { color: textColor(state2), children: line.text }),
|
|
3187
|
+
line.ms !== void 0 && /* @__PURE__ */ jsx9(Text9, { color: PALETTE.muted, children: formatDuration(line.ms) })
|
|
3109
3188
|
] });
|
|
3110
3189
|
}
|
|
3111
3190
|
function RunningStep({
|
|
3112
3191
|
step,
|
|
3113
3192
|
description,
|
|
3114
|
-
lines = [{ text: "Running..." }]
|
|
3193
|
+
lines = [{ text: "Running..." }],
|
|
3194
|
+
aside
|
|
3115
3195
|
}) {
|
|
3116
3196
|
const elapsed = useElapsed();
|
|
3117
|
-
return /* @__PURE__ */
|
|
3118
|
-
/* @__PURE__ */
|
|
3119
|
-
/* @__PURE__ */
|
|
3120
|
-
/* @__PURE__ */
|
|
3121
|
-
/* @__PURE__ */
|
|
3122
|
-
/* @__PURE__ */
|
|
3197
|
+
return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
|
|
3198
|
+
/* @__PURE__ */ jsx9(StepHeader, { step }),
|
|
3199
|
+
/* @__PURE__ */ jsx9(AsideLayout, { aside, children: /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
3200
|
+
/* @__PURE__ */ jsx9(Text9, { children: description }),
|
|
3201
|
+
/* @__PURE__ */ jsx9(Box9, { marginTop: 1, flexDirection: "column", gap: 1, children: lines.map((line, index) => /* @__PURE__ */ jsx9(Line, { line }, index)) }),
|
|
3202
|
+
/* @__PURE__ */ jsx9(Box9, { marginTop: 1, children: /* @__PURE__ */ jsxs9(Text9, { color: PALETTE.muted, children: [
|
|
3123
3203
|
"Elapsed: ",
|
|
3124
3204
|
elapsed
|
|
3125
3205
|
] }) })
|
|
3126
|
-
] })
|
|
3206
|
+
] }) })
|
|
3127
3207
|
] });
|
|
3128
3208
|
}
|
|
3129
3209
|
|
|
3130
3210
|
// packages/experience-design-system-cli/src/tui/import/steps/00-preflight/screen.tsx
|
|
3131
|
-
import { jsx as
|
|
3211
|
+
import { jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
3132
3212
|
var optionAt = (index) => IMPORT_TARGET_OPTIONS[index].target;
|
|
3133
3213
|
function PreflightScreen({ onChoose, onQuit }) {
|
|
3134
3214
|
const [focus, setFocus] = useState4(0);
|
|
@@ -3158,33 +3238,33 @@ function PreflightScreen({ onChoose, onQuit }) {
|
|
|
3158
3238
|
onQuit();
|
|
3159
3239
|
};
|
|
3160
3240
|
usePreflightControls({ focus, onFocus: moveTo, onChoose: choose, onQuit: quit });
|
|
3161
|
-
return /* @__PURE__ */
|
|
3162
|
-
/* @__PURE__ */
|
|
3163
|
-
/* @__PURE__ */
|
|
3164
|
-
/* @__PURE__ */
|
|
3165
|
-
/* @__PURE__ */
|
|
3241
|
+
return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
|
|
3242
|
+
/* @__PURE__ */ jsx10(StepHeader, { step: "setup" }),
|
|
3243
|
+
/* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
3244
|
+
/* @__PURE__ */ jsx10(Text10, { bold: true, color: PALETTE.text, children: "What do you want to import?" }),
|
|
3245
|
+
/* @__PURE__ */ jsx10(Box10, { flexDirection: "column", children: IMPORT_TARGET_OPTIONS.map((option, index) => {
|
|
3166
3246
|
const focused = index === focus;
|
|
3167
|
-
return /* @__PURE__ */
|
|
3168
|
-
/* @__PURE__ */
|
|
3169
|
-
/* @__PURE__ */
|
|
3247
|
+
return /* @__PURE__ */ jsxs10(Box10, { gap: 1, children: [
|
|
3248
|
+
/* @__PURE__ */ jsx10(Text10, { color: PALETTE.accent, children: focused ? "\u276F" : " " }),
|
|
3249
|
+
/* @__PURE__ */ jsx10(Text10, { bold: focused, color: focused ? PALETTE.accent : void 0, children: option.label })
|
|
3170
3250
|
] }, option.target);
|
|
3171
3251
|
}) }),
|
|
3172
|
-
/* @__PURE__ */
|
|
3173
|
-
/* @__PURE__ */
|
|
3252
|
+
/* @__PURE__ */ jsx10(OverviewBox, { steps: overviewFor(optionAt(focus)) }),
|
|
3253
|
+
/* @__PURE__ */ jsx10(ControlHints, { hints: PREFLIGHT_CONTROLS })
|
|
3174
3254
|
] })
|
|
3175
3255
|
] });
|
|
3176
3256
|
}
|
|
3177
3257
|
|
|
3178
3258
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx
|
|
3179
3259
|
import { useEffect as useEffect5, useRef as useRef3, useState as useState5 } from "react";
|
|
3180
|
-
import { Box as
|
|
3260
|
+
import { Box as Box11, Text as Text11 } from "ink";
|
|
3181
3261
|
init_debug_store();
|
|
3182
3262
|
|
|
3183
3263
|
// packages/experience-design-system-cli/src/tui/shared/components/ClearableTextInput.tsx
|
|
3184
3264
|
import { useRef as useRef2 } from "react";
|
|
3185
3265
|
import { useInput as useInput6 } from "ink";
|
|
3186
3266
|
import TextInput from "ink-text-input";
|
|
3187
|
-
import { jsx as
|
|
3267
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
3188
3268
|
function isClearKey(input, key) {
|
|
3189
3269
|
return key.ctrl && input === "d";
|
|
3190
3270
|
}
|
|
@@ -3198,7 +3278,7 @@ function ClearableTextInput({ onChange, ...props }) {
|
|
|
3198
3278
|
}, 0);
|
|
3199
3279
|
onChange("");
|
|
3200
3280
|
});
|
|
3201
|
-
return /* @__PURE__ */
|
|
3281
|
+
return /* @__PURE__ */ jsx11(
|
|
3202
3282
|
TextInput,
|
|
3203
3283
|
{
|
|
3204
3284
|
...props,
|
|
@@ -3234,7 +3314,7 @@ function useWelcomeControls(onQuit) {
|
|
|
3234
3314
|
}
|
|
3235
3315
|
|
|
3236
3316
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx
|
|
3237
|
-
import { jsx as
|
|
3317
|
+
import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
3238
3318
|
function WelcomeScreen({ mode, onContinue, onQuit, initialPath = "" }) {
|
|
3239
3319
|
const [projectPath, setProjectPath] = useState5(initialPath);
|
|
3240
3320
|
const visit = useRef3({ emptySubmits: 0 }).current;
|
|
@@ -3276,25 +3356,25 @@ function WelcomeScreen({ mode, onContinue, onQuit, initialPath = "" }) {
|
|
|
3276
3356
|
});
|
|
3277
3357
|
onContinue(path5);
|
|
3278
3358
|
};
|
|
3279
|
-
return /* @__PURE__ */
|
|
3280
|
-
/* @__PURE__ */
|
|
3281
|
-
/* @__PURE__ */
|
|
3282
|
-
/* @__PURE__ */
|
|
3283
|
-
/* @__PURE__ */
|
|
3284
|
-
/* @__PURE__ */
|
|
3285
|
-
/* @__PURE__ */
|
|
3286
|
-
/* @__PURE__ */
|
|
3287
|
-
/* @__PURE__ */
|
|
3359
|
+
return /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", children: [
|
|
3360
|
+
/* @__PURE__ */ jsx12(StepHeader, { step: "setup" }),
|
|
3361
|
+
/* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
3362
|
+
/* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", gap: 1, children: [
|
|
3363
|
+
/* @__PURE__ */ jsx12(Text11, { color: PALETTE.text, children: "Where is your component library?" }),
|
|
3364
|
+
/* @__PURE__ */ jsxs11(Box11, { children: [
|
|
3365
|
+
/* @__PURE__ */ jsx12(Text11, { color: PALETTE.accent, children: "? " }),
|
|
3366
|
+
/* @__PURE__ */ jsx12(Text11, { children: "Project path: " }),
|
|
3367
|
+
/* @__PURE__ */ jsx12(ClearableTextInput, { value: projectPath, onChange: setProjectPath, onSubmit: submit })
|
|
3288
3368
|
] })
|
|
3289
3369
|
] }),
|
|
3290
|
-
/* @__PURE__ */
|
|
3370
|
+
/* @__PURE__ */ jsx12(Box11, { children: /* @__PURE__ */ jsx12(ControlHints, { hints: WELCOME_CONTROLS }) })
|
|
3291
3371
|
] })
|
|
3292
3372
|
] });
|
|
3293
3373
|
}
|
|
3294
3374
|
|
|
3295
3375
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx
|
|
3296
3376
|
import { useEffect as useEffect6, useRef as useRef4, useState as useState6 } from "react";
|
|
3297
|
-
import { Box as
|
|
3377
|
+
import { Box as Box12, Text as Text12 } from "ink";
|
|
3298
3378
|
init_debug_store();
|
|
3299
3379
|
|
|
3300
3380
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/controls.ts
|
|
@@ -3361,7 +3441,7 @@ function validateTokenPath(rawPath) {
|
|
|
3361
3441
|
}
|
|
3362
3442
|
|
|
3363
3443
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx
|
|
3364
|
-
import { jsx as
|
|
3444
|
+
import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
3365
3445
|
var MAX_LOGGED_ATTEMPTS = 10;
|
|
3366
3446
|
function TokenInputScreen({
|
|
3367
3447
|
mode,
|
|
@@ -3425,36 +3505,36 @@ function TokenInputScreen({
|
|
|
3425
3505
|
});
|
|
3426
3506
|
onConfirm(check.path);
|
|
3427
3507
|
};
|
|
3428
|
-
return /* @__PURE__ */
|
|
3429
|
-
/* @__PURE__ */
|
|
3430
|
-
/* @__PURE__ */
|
|
3431
|
-
/* @__PURE__ */
|
|
3432
|
-
/* @__PURE__ */
|
|
3433
|
-
/* @__PURE__ */
|
|
3434
|
-
/* @__PURE__ */
|
|
3435
|
-
/* @__PURE__ */
|
|
3436
|
-
/* @__PURE__ */
|
|
3437
|
-
/* @__PURE__ */
|
|
3508
|
+
return /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
|
|
3509
|
+
/* @__PURE__ */ jsx13(StepHeader, { step: "setup" }),
|
|
3510
|
+
/* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
3511
|
+
/* @__PURE__ */ jsx13(Text12, { bold: true, children: "Design tokens" }),
|
|
3512
|
+
/* @__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)." }),
|
|
3513
|
+
/* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
|
|
3514
|
+
/* @__PURE__ */ jsxs12(Box12, { gap: 1, children: [
|
|
3515
|
+
/* @__PURE__ */ jsx13(Text12, { color: PALETTE.accent, children: "?" }),
|
|
3516
|
+
/* @__PURE__ */ jsx13(Text12, { children: "Token path:" }),
|
|
3517
|
+
/* @__PURE__ */ jsx13(ClearableTextInput, { value: tokenPath, onChange: change, onSubmit: submit })
|
|
3438
3518
|
] }),
|
|
3439
|
-
failure && /* @__PURE__ */
|
|
3440
|
-
/* @__PURE__ */
|
|
3519
|
+
failure && /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
|
|
3520
|
+
/* @__PURE__ */ jsxs12(Text12, { color: PALETTE.error, children: [
|
|
3441
3521
|
"\u2717 ",
|
|
3442
3522
|
failure.error
|
|
3443
3523
|
] }),
|
|
3444
|
-
failure.resolvedPath && /* @__PURE__ */
|
|
3524
|
+
failure.resolvedPath && /* @__PURE__ */ jsxs12(Text12, { color: PALETTE.muted, children: [
|
|
3445
3525
|
" Resolved to: ",
|
|
3446
3526
|
failure.resolvedPath
|
|
3447
3527
|
] })
|
|
3448
3528
|
] })
|
|
3449
3529
|
] }),
|
|
3450
|
-
/* @__PURE__ */
|
|
3530
|
+
/* @__PURE__ */ jsx13(Box12, { marginTop: 1, children: /* @__PURE__ */ jsx13(ControlHints, { hints: TOKEN_INPUT_CONTROLS }) })
|
|
3451
3531
|
] })
|
|
3452
3532
|
] });
|
|
3453
3533
|
}
|
|
3454
3534
|
|
|
3455
3535
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/screen.tsx
|
|
3456
3536
|
import { useEffect as useEffect7, useMemo, useState as useState7 } from "react";
|
|
3457
|
-
import { Box as
|
|
3537
|
+
import { Box as Box13, Text as Text13 } from "ink";
|
|
3458
3538
|
init_debug_store();
|
|
3459
3539
|
|
|
3460
3540
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/controls.ts
|
|
@@ -18070,9 +18150,9 @@ function foldSvelteAndMdIntoOther(counts) {
|
|
|
18070
18150
|
}
|
|
18071
18151
|
|
|
18072
18152
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/screen.tsx
|
|
18073
|
-
import { jsx as
|
|
18074
|
-
function
|
|
18075
|
-
return /* @__PURE__ */
|
|
18153
|
+
import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
18154
|
+
function Row2({ row }) {
|
|
18155
|
+
return /* @__PURE__ */ jsxs13(Text13, { color: row.tone === "accent" ? PALETTE.accent : row.tone === "muted" ? PALETTE.muted : void 0, children: [
|
|
18076
18156
|
" \u2022 ",
|
|
18077
18157
|
String(row.count).padStart(3),
|
|
18078
18158
|
" ",
|
|
@@ -18081,12 +18161,12 @@ function Row({ row }) {
|
|
|
18081
18161
|
}
|
|
18082
18162
|
function Failure({ scan, path: path5 }) {
|
|
18083
18163
|
const { headline, hints } = describeFailure(scan.failure, path5);
|
|
18084
|
-
return /* @__PURE__ */
|
|
18085
|
-
/* @__PURE__ */
|
|
18164
|
+
return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
|
|
18165
|
+
/* @__PURE__ */ jsxs13(Text13, { color: PALETTE.error, children: [
|
|
18086
18166
|
"\u2717 ",
|
|
18087
18167
|
headline
|
|
18088
18168
|
] }),
|
|
18089
|
-
hints.map((hint) => /* @__PURE__ */
|
|
18169
|
+
hints.map((hint) => /* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: hint }, hint))
|
|
18090
18170
|
] });
|
|
18091
18171
|
}
|
|
18092
18172
|
function Summary({
|
|
@@ -18095,24 +18175,24 @@ function Summary({
|
|
|
18095
18175
|
hasTokens
|
|
18096
18176
|
}) {
|
|
18097
18177
|
const { total, rows, warning } = summarize(scan.counts, { hasTokens });
|
|
18098
|
-
return /* @__PURE__ */
|
|
18099
|
-
/* @__PURE__ */
|
|
18178
|
+
return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", gap: 1, children: [
|
|
18179
|
+
/* @__PURE__ */ jsxs13(Text13, { children: [
|
|
18100
18180
|
"Scanned ",
|
|
18101
|
-
/* @__PURE__ */
|
|
18181
|
+
/* @__PURE__ */ jsx14(Text13, { bold: true, children: path5 })
|
|
18102
18182
|
] }),
|
|
18103
|
-
/* @__PURE__ */
|
|
18104
|
-
/* @__PURE__ */
|
|
18183
|
+
/* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
|
|
18184
|
+
/* @__PURE__ */ jsxs13(Text13, { color: PALETTE.success, children: [
|
|
18105
18185
|
"\u2713 Found ",
|
|
18106
18186
|
total,
|
|
18107
18187
|
" files:"
|
|
18108
18188
|
] }),
|
|
18109
|
-
rows.map((row) => /* @__PURE__ */
|
|
18189
|
+
rows.map((row) => /* @__PURE__ */ jsx14(Row2, { row }, row.label))
|
|
18110
18190
|
] }),
|
|
18111
|
-
warning && /* @__PURE__ */
|
|
18191
|
+
warning && /* @__PURE__ */ jsxs13(Text13, { color: PALETTE.warning, children: [
|
|
18112
18192
|
"\u26A0 ",
|
|
18113
18193
|
warning
|
|
18114
18194
|
] }),
|
|
18115
|
-
/* @__PURE__ */
|
|
18195
|
+
/* @__PURE__ */ jsx14(Text13, { children: "Does this look right?" })
|
|
18116
18196
|
] });
|
|
18117
18197
|
}
|
|
18118
18198
|
function PathValidationScreen({
|
|
@@ -18159,30 +18239,30 @@ function PathValidationScreen({
|
|
|
18159
18239
|
onBack();
|
|
18160
18240
|
}
|
|
18161
18241
|
});
|
|
18162
|
-
return /* @__PURE__ */
|
|
18163
|
-
/* @__PURE__ */
|
|
18164
|
-
/* @__PURE__ */
|
|
18165
|
-
scan === void 0 && /* @__PURE__ */
|
|
18242
|
+
return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
|
|
18243
|
+
/* @__PURE__ */ jsx14(StepHeader, { step: "setup" }),
|
|
18244
|
+
/* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
18245
|
+
scan === void 0 && /* @__PURE__ */ jsxs13(Text13, { color: PALETTE.muted, children: [
|
|
18166
18246
|
"Scanning ",
|
|
18167
|
-
/* @__PURE__ */
|
|
18247
|
+
/* @__PURE__ */ jsx14(Text13, { bold: true, children: resolvedPath }),
|
|
18168
18248
|
"..."
|
|
18169
18249
|
] }),
|
|
18170
|
-
scan?.ok === false && /* @__PURE__ */
|
|
18171
|
-
scan?.ok === true && /* @__PURE__ */
|
|
18172
|
-
/* @__PURE__ */
|
|
18250
|
+
scan?.ok === false && /* @__PURE__ */ jsx14(Failure, { scan, path: resolvedPath }),
|
|
18251
|
+
scan?.ok === true && /* @__PURE__ */ jsx14(Summary, { scan, path: resolvedPath, hasTokens }),
|
|
18252
|
+
/* @__PURE__ */ jsx14(Box13, { marginTop: 1, children: /* @__PURE__ */ jsx14(ControlHints, { hints: controlsFor(phase) }) })
|
|
18173
18253
|
] })
|
|
18174
18254
|
] });
|
|
18175
18255
|
}
|
|
18176
18256
|
|
|
18177
18257
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/screen.tsx
|
|
18178
18258
|
import { useEffect as useEffect8, useRef as useRef5, useState as useState9 } from "react";
|
|
18179
|
-
import { Box as
|
|
18259
|
+
import { Box as Box15, Text as Text15, useInput as useInput11 } from "ink";
|
|
18180
18260
|
init_debug_store();
|
|
18181
18261
|
|
|
18182
18262
|
// packages/experience-design-system-cli/src/tui/shared/components/FieldForm.tsx
|
|
18183
18263
|
import { useState as useState8 } from "react";
|
|
18184
|
-
import { Box as
|
|
18185
|
-
import { Fragment, jsx as
|
|
18264
|
+
import { Box as Box14, Text as Text14, useInput as useInput10 } from "ink";
|
|
18265
|
+
import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
18186
18266
|
function formLabelWidth(rows) {
|
|
18187
18267
|
return Math.max(...rows.map((row) => row.label.length));
|
|
18188
18268
|
}
|
|
@@ -18191,9 +18271,9 @@ function FormReadOnlyRow({
|
|
|
18191
18271
|
labelWidth,
|
|
18192
18272
|
children
|
|
18193
18273
|
}) {
|
|
18194
|
-
return /* @__PURE__ */
|
|
18195
|
-
/* @__PURE__ */
|
|
18196
|
-
/* @__PURE__ */
|
|
18274
|
+
return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
|
|
18275
|
+
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
18276
|
+
/* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: label }) }),
|
|
18197
18277
|
children
|
|
18198
18278
|
] });
|
|
18199
18279
|
}
|
|
@@ -18280,23 +18360,23 @@ function FieldForm({
|
|
|
18280
18360
|
setValueBeforeEdit(values[next.key]);
|
|
18281
18361
|
setActive(active + 1);
|
|
18282
18362
|
};
|
|
18283
|
-
const pointer = (isActive) => /* @__PURE__ */
|
|
18284
|
-
return /* @__PURE__ */
|
|
18363
|
+
const pointer = (isActive) => /* @__PURE__ */ jsx15(Text14, { color: isActive ? PALETTE.accent : void 0, children: isActive ? "\u276F" : " " });
|
|
18364
|
+
return /* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", children: [
|
|
18285
18365
|
header,
|
|
18286
|
-
/* @__PURE__ */
|
|
18287
|
-
/* @__PURE__ */
|
|
18288
|
-
/* @__PURE__ */
|
|
18289
|
-
subtitle && /* @__PURE__ */
|
|
18290
|
-
/* @__PURE__ */
|
|
18291
|
-
/* @__PURE__ */
|
|
18366
|
+
/* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", paddingX: 2, paddingTop: header ? 0 : 1, paddingBottom: 1, children: [
|
|
18367
|
+
/* @__PURE__ */ jsx15(Text14, { bold: true, children: title }),
|
|
18368
|
+
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
18369
|
+
subtitle && /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: subtitle }),
|
|
18370
|
+
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
18371
|
+
/* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", children: [
|
|
18292
18372
|
fields2.map((field, index) => {
|
|
18293
18373
|
const isActive = index === active;
|
|
18294
18374
|
const value = values[field.key];
|
|
18295
18375
|
const display = field.masked ? "\u2022".repeat(value.length) : value;
|
|
18296
|
-
return /* @__PURE__ */
|
|
18376
|
+
return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
|
|
18297
18377
|
pointer(isActive),
|
|
18298
|
-
/* @__PURE__ */
|
|
18299
|
-
isActive && editing ? /* @__PURE__ */
|
|
18378
|
+
/* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
|
|
18379
|
+
isActive && editing ? /* @__PURE__ */ jsx15(
|
|
18300
18380
|
ClearableTextInput,
|
|
18301
18381
|
{
|
|
18302
18382
|
value,
|
|
@@ -18304,34 +18384,34 @@ function FieldForm({
|
|
|
18304
18384
|
onSubmit: submitField,
|
|
18305
18385
|
mask: field.masked ? "\u2022" : void 0
|
|
18306
18386
|
}
|
|
18307
|
-
) : display ? /* @__PURE__ */
|
|
18387
|
+
) : display ? /* @__PURE__ */ jsx15(Text14, { bold: true, children: display }) : (
|
|
18308
18388
|
// An empty value shows its hint (or "(empty)") in the value's place, not after an empty element, so the
|
|
18309
18389
|
// text starts in the same column as every other row's.
|
|
18310
|
-
/* @__PURE__ */
|
|
18390
|
+
/* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: field.hint ?? "(empty)" })
|
|
18311
18391
|
),
|
|
18312
|
-
display && field.hint && /* @__PURE__ */
|
|
18392
|
+
display && field.hint && /* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: field.hint })
|
|
18313
18393
|
] }, field.key);
|
|
18314
18394
|
}),
|
|
18315
18395
|
actions.map((action, index) => {
|
|
18316
18396
|
const isActive = fields2.length + index === active;
|
|
18317
|
-
return /* @__PURE__ */
|
|
18397
|
+
return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
|
|
18318
18398
|
pointer(isActive),
|
|
18319
|
-
/* @__PURE__ */
|
|
18320
|
-
/* @__PURE__ */
|
|
18399
|
+
/* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: action.label }) }),
|
|
18400
|
+
/* @__PURE__ */ jsx15(Text14, { color: action.running ? PALETTE.accent : PALETTE.muted, children: action.running ? action.runningText ?? "running..." : action.description })
|
|
18321
18401
|
] }, action.label);
|
|
18322
18402
|
})
|
|
18323
18403
|
] }),
|
|
18324
|
-
notice && /* @__PURE__ */
|
|
18325
|
-
/* @__PURE__ */
|
|
18326
|
-
/* @__PURE__ */
|
|
18404
|
+
notice && /* @__PURE__ */ jsxs14(Fragment2, { children: [
|
|
18405
|
+
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
18406
|
+
/* @__PURE__ */ jsxs14(Text14, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
18327
18407
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
18328
18408
|
" ",
|
|
18329
18409
|
notice.text
|
|
18330
18410
|
] })
|
|
18331
18411
|
] }),
|
|
18332
18412
|
children,
|
|
18333
|
-
/* @__PURE__ */
|
|
18334
|
-
/* @__PURE__ */
|
|
18413
|
+
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
18414
|
+
/* @__PURE__ */ jsx15(
|
|
18335
18415
|
ControlHints,
|
|
18336
18416
|
{
|
|
18337
18417
|
hints: editing ? [
|
|
@@ -18467,7 +18547,7 @@ function toUserError(error, host) {
|
|
|
18467
18547
|
}
|
|
18468
18548
|
|
|
18469
18549
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/screen.tsx
|
|
18470
|
-
import { Fragment as
|
|
18550
|
+
import { Fragment as Fragment3, jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
18471
18551
|
var FIELDS2 = [
|
|
18472
18552
|
{ key: "spaceId", label: "Space ID" },
|
|
18473
18553
|
{ key: "environmentId", label: "Environment ID" },
|
|
@@ -18596,24 +18676,24 @@ function CredentialsScreen({
|
|
|
18596
18676
|
});
|
|
18597
18677
|
const labelWidth = formLabelWidth([...FIELDS2, ...MENU]);
|
|
18598
18678
|
const changed = !isUnchanged(normalize(values), initialValues);
|
|
18599
|
-
return /* @__PURE__ */
|
|
18600
|
-
/* @__PURE__ */
|
|
18601
|
-
/* @__PURE__ */
|
|
18602
|
-
/* @__PURE__ */
|
|
18603
|
-
/* @__PURE__ */
|
|
18604
|
-
/* @__PURE__ */
|
|
18605
|
-
/* @__PURE__ */
|
|
18606
|
-
/* @__PURE__ */
|
|
18679
|
+
return /* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", children: [
|
|
18680
|
+
/* @__PURE__ */ jsx16(StepHeader, { step: "setup" }),
|
|
18681
|
+
/* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", paddingX: 2, paddingBottom: 1, children: [
|
|
18682
|
+
/* @__PURE__ */ jsx16(Text15, { bold: true, color: PALETTE.accent, children: "Contentful Credentials" }),
|
|
18683
|
+
/* @__PURE__ */ jsx16(Text15, { children: " " }),
|
|
18684
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: prefilled ? "Credentials pre-filled from the configuration settings." : "Enter the Contentful space you want to import into." }),
|
|
18685
|
+
/* @__PURE__ */ jsx16(Text15, { children: " " }),
|
|
18686
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Actions" }),
|
|
18607
18687
|
MENU.map((item, index) => {
|
|
18608
18688
|
const focused = !editing && index === focus;
|
|
18609
|
-
return /* @__PURE__ */
|
|
18610
|
-
/* @__PURE__ */
|
|
18611
|
-
/* @__PURE__ */
|
|
18612
|
-
/* @__PURE__ */
|
|
18689
|
+
return /* @__PURE__ */ jsxs15(Box15, { gap: 1, children: [
|
|
18690
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.accent, children: focused ? "\u276F" : " " }),
|
|
18691
|
+
/* @__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 }) }),
|
|
18692
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: item.description })
|
|
18613
18693
|
] }, item.choice);
|
|
18614
18694
|
}),
|
|
18615
|
-
/* @__PURE__ */
|
|
18616
|
-
|
|
18695
|
+
/* @__PURE__ */ jsxs15(
|
|
18696
|
+
Box15,
|
|
18617
18697
|
{
|
|
18618
18698
|
flexDirection: "column",
|
|
18619
18699
|
marginTop: 1,
|
|
@@ -18623,15 +18703,15 @@ function CredentialsScreen({
|
|
|
18623
18703
|
borderLeft: false,
|
|
18624
18704
|
borderRight: false,
|
|
18625
18705
|
children: [
|
|
18626
|
-
/* @__PURE__ */
|
|
18706
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Space" }),
|
|
18627
18707
|
FIELDS2.map((field, index) => {
|
|
18628
18708
|
const open = editing && index === active;
|
|
18629
18709
|
const value = values[field.key];
|
|
18630
18710
|
const display = field.masked ? "\u2022".repeat(value.length) : value;
|
|
18631
|
-
return /* @__PURE__ */
|
|
18632
|
-
/* @__PURE__ */
|
|
18633
|
-
/* @__PURE__ */
|
|
18634
|
-
open ? /* @__PURE__ */
|
|
18711
|
+
return /* @__PURE__ */ jsxs15(Box15, { gap: 1, children: [
|
|
18712
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.accent, children: open ? "\u276F" : " " }),
|
|
18713
|
+
/* @__PURE__ */ jsx16(Box15, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx16(Text15, { bold: open, color: open ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
|
|
18714
|
+
open ? /* @__PURE__ */ jsx16(
|
|
18635
18715
|
ClearableTextInput,
|
|
18636
18716
|
{
|
|
18637
18717
|
value,
|
|
@@ -18642,35 +18722,35 @@ function CredentialsScreen({
|
|
|
18642
18722
|
onSubmit: stopEditing,
|
|
18643
18723
|
mask: field.masked ? "\u2022" : void 0
|
|
18644
18724
|
}
|
|
18645
|
-
) : /* @__PURE__ */
|
|
18725
|
+
) : /* @__PURE__ */ jsx16(Text15, { color: display ? PALETTE.text : PALETTE.muted, children: display || (field.hint ?? "(empty)") })
|
|
18646
18726
|
] }, field.key);
|
|
18647
18727
|
})
|
|
18648
18728
|
]
|
|
18649
18729
|
}
|
|
18650
18730
|
),
|
|
18651
|
-
notice && /* @__PURE__ */
|
|
18652
|
-
/* @__PURE__ */
|
|
18653
|
-
/* @__PURE__ */
|
|
18731
|
+
notice && /* @__PURE__ */ jsxs15(Fragment3, { children: [
|
|
18732
|
+
/* @__PURE__ */ jsx16(Text15, { children: " " }),
|
|
18733
|
+
/* @__PURE__ */ jsxs15(Text15, { color: PALETTE.error, children: [
|
|
18654
18734
|
"\u2717 ",
|
|
18655
18735
|
notice.text
|
|
18656
18736
|
] })
|
|
18657
18737
|
] }),
|
|
18658
|
-
validating && /* @__PURE__ */
|
|
18659
|
-
/* @__PURE__ */
|
|
18660
|
-
/* @__PURE__ */
|
|
18738
|
+
validating && /* @__PURE__ */ jsxs15(Fragment3, { children: [
|
|
18739
|
+
/* @__PURE__ */ jsx16(Text15, { children: " " }),
|
|
18740
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.accent, children: "Validating credentials..." })
|
|
18661
18741
|
] }),
|
|
18662
|
-
!prefilled && !validating && !notice && /* @__PURE__ */
|
|
18663
|
-
/* @__PURE__ */
|
|
18664
|
-
/* @__PURE__ */
|
|
18665
|
-
/* @__PURE__ */
|
|
18742
|
+
!prefilled && !validating && !notice && /* @__PURE__ */ jsxs15(Fragment3, { children: [
|
|
18743
|
+
/* @__PURE__ */ jsx16(Text15, { children: " " }),
|
|
18744
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: credentialsPurpose(tokensOnly) }),
|
|
18745
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Tip: save these under Settings \u2192 Configuration so they pre-fill here." })
|
|
18666
18746
|
] }),
|
|
18667
|
-
changed && !validating && !notice && /* @__PURE__ */
|
|
18668
|
-
/* @__PURE__ */
|
|
18669
|
-
/* @__PURE__ */
|
|
18747
|
+
changed && !validating && !notice && /* @__PURE__ */ jsxs15(Fragment3, { children: [
|
|
18748
|
+
/* @__PURE__ */ jsx16(Text15, { children: " " }),
|
|
18749
|
+
/* @__PURE__ */ jsx16(Text15, { color: PALETTE.muted, children: "Changed values are saved after they validate." })
|
|
18670
18750
|
] }),
|
|
18671
|
-
editing && /* @__PURE__ */
|
|
18672
|
-
/* @__PURE__ */
|
|
18673
|
-
/* @__PURE__ */
|
|
18751
|
+
editing && /* @__PURE__ */ jsxs15(Fragment3, { children: [
|
|
18752
|
+
/* @__PURE__ */ jsx16(Text15, { children: " " }),
|
|
18753
|
+
/* @__PURE__ */ jsx16(
|
|
18674
18754
|
ControlHints,
|
|
18675
18755
|
{
|
|
18676
18756
|
hints: [
|
|
@@ -18751,7 +18831,7 @@ function plural(count, noun) {
|
|
|
18751
18831
|
function compositionDone(progress) {
|
|
18752
18832
|
return progress.composition === "done" || progress.composition === "cache-hit";
|
|
18753
18833
|
}
|
|
18754
|
-
function progressRows(progress, agent) {
|
|
18834
|
+
function progressRows(progress, agent, rowMs = []) {
|
|
18755
18835
|
const { scan, composition, selection, existingEntities, tokens } = progress;
|
|
18756
18836
|
const scanned = scan?.scanned ?? 0;
|
|
18757
18837
|
const scanComplete = (scan?.total ?? 0) > 0;
|
|
@@ -18772,16 +18852,20 @@ function progressRows(progress, agent) {
|
|
|
18772
18852
|
if (existingEntities !== "idle") {
|
|
18773
18853
|
rows.push({
|
|
18774
18854
|
text: existingEntities === "running" ? "Fetching existing components and tokens..." : existingEntities === "complete" ? "Existing components and tokens ready" : "Existing entities unavailable; continuing without them",
|
|
18775
|
-
complete: existingEntities !== "running"
|
|
18855
|
+
complete: existingEntities !== "running",
|
|
18856
|
+
// The import carries on without them, so this is not shown as a success.
|
|
18857
|
+
...existingEntities === "failed" ? { state: "warning" } : {}
|
|
18776
18858
|
});
|
|
18777
18859
|
}
|
|
18778
18860
|
if (tokens !== "idle") {
|
|
18779
18861
|
rows.push({
|
|
18780
18862
|
text: tokens === "complete" ? "Token definitions ready" : tokens === "failed" ? "Token definition generation failed" : `Generating token definitions via ${agent}...`,
|
|
18781
|
-
complete: tokens === "complete"
|
|
18863
|
+
complete: tokens === "complete",
|
|
18864
|
+
// A failed job is not still running.
|
|
18865
|
+
...tokens === "failed" ? { state: "failed" } : {}
|
|
18782
18866
|
});
|
|
18783
18867
|
}
|
|
18784
|
-
return rows;
|
|
18868
|
+
return withTimes(rows, rowMs);
|
|
18785
18869
|
}
|
|
18786
18870
|
function noComponentsMessage(projectPath) {
|
|
18787
18871
|
return `No components found in ${projectPath}.
|
|
@@ -18809,21 +18893,21 @@ function resolveAgentChoice(flag, stored) {
|
|
|
18809
18893
|
}
|
|
18810
18894
|
|
|
18811
18895
|
// packages/experience-design-system-cli/src/tui/import/steps/06-extraction/screen.tsx
|
|
18812
|
-
import { jsx as
|
|
18813
|
-
function ExtractionScreen({ progress, agent }) {
|
|
18814
|
-
return /* @__PURE__ */
|
|
18896
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
18897
|
+
function ExtractionScreen({ progress, agent, rowMs }) {
|
|
18898
|
+
return /* @__PURE__ */ jsx17(
|
|
18815
18899
|
RunningStep,
|
|
18816
18900
|
{
|
|
18817
18901
|
step: "extraction",
|
|
18818
18902
|
description: "Extracting context from your source files.",
|
|
18819
|
-
lines: progressRows(progress, agent)
|
|
18903
|
+
lines: progressRows(progress, agent, rowMs)
|
|
18820
18904
|
}
|
|
18821
18905
|
);
|
|
18822
18906
|
}
|
|
18823
18907
|
|
|
18824
18908
|
// packages/experience-design-system-cli/src/tui/import/steps/05-token-review/screen.tsx
|
|
18825
18909
|
import { useEffect as useEffect9, useMemo as useMemo2, useState as useState10 } from "react";
|
|
18826
|
-
import { Box as
|
|
18910
|
+
import { Box as Box16, Text as Text16, useInput as useInput12 } from "ink";
|
|
18827
18911
|
init_debug_store();
|
|
18828
18912
|
|
|
18829
18913
|
// packages/experience-design-system-cli/src/tui/import/steps/05-token-review/load.ts
|
|
@@ -18880,7 +18964,7 @@ function loadTokenRows(tokensPath) {
|
|
|
18880
18964
|
}
|
|
18881
18965
|
|
|
18882
18966
|
// packages/experience-design-system-cli/src/tui/import/steps/05-token-review/screen.tsx
|
|
18883
|
-
import { jsx as
|
|
18967
|
+
import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
18884
18968
|
var VISIBLE_ROWS = 15;
|
|
18885
18969
|
var COLUMN_GAP = 3;
|
|
18886
18970
|
function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
|
|
@@ -18925,22 +19009,22 @@ function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
|
|
|
18925
19009
|
const typeWidth = Math.max(4, ...rows.map((row) => row.type.length)) + COLUMN_GAP;
|
|
18926
19010
|
const valueWidth = Math.max(10, innerWidth - pathWidth - typeWidth - 2);
|
|
18927
19011
|
const clip = (text, width) => text.length > width ? `${text.slice(0, Math.max(0, width - 1))}\u2026` : text.padEnd(width);
|
|
18928
|
-
return /* @__PURE__ */
|
|
18929
|
-
/* @__PURE__ */
|
|
18930
|
-
/* @__PURE__ */
|
|
18931
|
-
/* @__PURE__ */
|
|
18932
|
-
/* @__PURE__ */
|
|
19012
|
+
return /* @__PURE__ */ jsxs16(Box16, { flexDirection: "column", children: [
|
|
19013
|
+
/* @__PURE__ */ jsx18(StepHeader, { step: "review" }),
|
|
19014
|
+
/* @__PURE__ */ jsxs16(Box16, { flexDirection: "column", paddingX: 2, paddingBottom: 1, children: [
|
|
19015
|
+
/* @__PURE__ */ jsx18(Text16, { bold: true, children: "Review design tokens" }),
|
|
19016
|
+
/* @__PURE__ */ jsx18(Box16, { marginTop: 1, children: loaded.ok ? /* @__PURE__ */ jsxs16(Text16, { color: PALETTE.muted, children: [
|
|
18933
19017
|
rows.length,
|
|
18934
19018
|
" ",
|
|
18935
19019
|
rows.length === 1 ? "token" : "tokens",
|
|
18936
19020
|
" generated from ",
|
|
18937
19021
|
tokensPath
|
|
18938
|
-
] }) : /* @__PURE__ */
|
|
19022
|
+
] }) : /* @__PURE__ */ jsxs16(Text16, { color: PALETTE.error, children: [
|
|
18939
19023
|
"Could not read the generated tokens: ",
|
|
18940
19024
|
loaded.message
|
|
18941
19025
|
] }) }),
|
|
18942
|
-
/* @__PURE__ */
|
|
18943
|
-
/* @__PURE__ */
|
|
19026
|
+
/* @__PURE__ */ jsxs16(Box16, { flexDirection: "column", marginTop: 1, children: [
|
|
19027
|
+
/* @__PURE__ */ jsxs16(Text16, { bold: true, color: PALETTE.muted, wrap: "truncate-end", children: [
|
|
18944
19028
|
" ",
|
|
18945
19029
|
clip("Token name", pathWidth),
|
|
18946
19030
|
" ",
|
|
@@ -18950,7 +19034,7 @@ function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
|
|
|
18950
19034
|
] }),
|
|
18951
19035
|
rows.slice(start, end).map((row, offset) => {
|
|
18952
19036
|
const active = start + offset === selected;
|
|
18953
|
-
return /* @__PURE__ */
|
|
19037
|
+
return /* @__PURE__ */ jsxs16(Text16, { color: active ? PALETTE.accent : void 0, bold: active, wrap: "truncate-end", children: [
|
|
18954
19038
|
active ? "\u203A " : " ",
|
|
18955
19039
|
clip(row.path, pathWidth),
|
|
18956
19040
|
" ",
|
|
@@ -18960,14 +19044,14 @@ function TokenReviewScreen({ tokensPath, onContinue, onQuit }) {
|
|
|
18960
19044
|
] }, row.path);
|
|
18961
19045
|
})
|
|
18962
19046
|
] }),
|
|
18963
|
-
rows.length > VISIBLE_ROWS && /* @__PURE__ */
|
|
19047
|
+
rows.length > VISIBLE_ROWS && /* @__PURE__ */ jsx18(Box16, { marginTop: 1, children: /* @__PURE__ */ jsxs16(Text16, { color: PALETTE.muted, children: [
|
|
18964
19048
|
start + 1,
|
|
18965
19049
|
"-",
|
|
18966
19050
|
end,
|
|
18967
19051
|
" of ",
|
|
18968
19052
|
rows.length
|
|
18969
19053
|
] }) }),
|
|
18970
|
-
/* @__PURE__ */
|
|
19054
|
+
/* @__PURE__ */ jsx18(Box16, { marginTop: 1, children: /* @__PURE__ */ jsx18(ControlHints, { hints: TOKEN_REVIEW_CONTROLS }) })
|
|
18971
19055
|
] })
|
|
18972
19056
|
] });
|
|
18973
19057
|
}
|
|
@@ -19245,9 +19329,12 @@ function useExtraction(input) {
|
|
|
19245
19329
|
progress: initialProgress({
|
|
19246
19330
|
hasCredentials: input.credentials !== null,
|
|
19247
19331
|
hasRawTokens: input.rawTokensPath !== ""
|
|
19248
|
-
})
|
|
19332
|
+
}),
|
|
19333
|
+
rowMs: []
|
|
19249
19334
|
});
|
|
19250
|
-
let
|
|
19335
|
+
let lastProgress2;
|
|
19336
|
+
const startedAt = Date.now();
|
|
19337
|
+
let rowMs = [];
|
|
19251
19338
|
startDebugRun({
|
|
19252
19339
|
flow: "import/extraction",
|
|
19253
19340
|
step: "06-extraction",
|
|
@@ -19255,12 +19342,13 @@ function useExtraction(input) {
|
|
|
19255
19342
|
inputs: extractionLogInputs(input)
|
|
19256
19343
|
});
|
|
19257
19344
|
void runExtraction(input, (progress) => {
|
|
19258
|
-
|
|
19259
|
-
|
|
19345
|
+
lastProgress2 = progress;
|
|
19346
|
+
rowMs = trackFinished(rowMs, progressRows(progress, input.agent), Date.now() - startedAt);
|
|
19347
|
+
if (current.current === input) setState({ status: "running", progress, rowMs });
|
|
19260
19348
|
}).then((result) => {
|
|
19261
19349
|
if (current.current !== input) return;
|
|
19262
19350
|
void finishDebugRun({
|
|
19263
|
-
...extractionLogOutputs(result,
|
|
19351
|
+
...extractionLogOutputs(result, lastProgress2, input.credentials?.cmaToken ?? ""),
|
|
19264
19352
|
exitMethod: result.ok ? "saved" : "discarded"
|
|
19265
19353
|
});
|
|
19266
19354
|
setState({ status: "done", result });
|
|
@@ -19328,7 +19416,7 @@ function useTokensOnly(input) {
|
|
|
19328
19416
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/screen.tsx
|
|
19329
19417
|
init_debug_store();
|
|
19330
19418
|
import { useEffect as useEffect14, useMemo as useMemo4 } from "react";
|
|
19331
|
-
import { Box as
|
|
19419
|
+
import { Box as Box26, Text as Text27 } from "ink";
|
|
19332
19420
|
|
|
19333
19421
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/log.ts
|
|
19334
19422
|
var MAX_NAMES = 20;
|
|
@@ -19358,12 +19446,12 @@ function scopeGateLogOutputs(components, decisions) {
|
|
|
19358
19446
|
}
|
|
19359
19447
|
|
|
19360
19448
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/tokens-column.tsx
|
|
19361
|
-
import { Box as
|
|
19449
|
+
import { Box as Box18, Text as Text18 } from "ink";
|
|
19362
19450
|
import figures2 from "figures";
|
|
19363
19451
|
|
|
19364
19452
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/windowed-panel.tsx
|
|
19365
|
-
import { Box as
|
|
19366
|
-
import { jsx as
|
|
19453
|
+
import { Box as Box17, Text as Text17 } from "ink";
|
|
19454
|
+
import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
19367
19455
|
var MIN_TERMINAL_PANEL_HEIGHT = 5;
|
|
19368
19456
|
function terminalPanelHeight(rows, reservedRows = 4) {
|
|
19369
19457
|
return Math.max(MIN_TERMINAL_PANEL_HEIGHT, rows - reservedRows);
|
|
@@ -19379,8 +19467,8 @@ function FixedPanel({
|
|
|
19379
19467
|
clipOverflow = true,
|
|
19380
19468
|
children
|
|
19381
19469
|
}) {
|
|
19382
|
-
return /* @__PURE__ */
|
|
19383
|
-
|
|
19470
|
+
return /* @__PURE__ */ jsx19(
|
|
19471
|
+
Box17,
|
|
19384
19472
|
{
|
|
19385
19473
|
flexDirection: "column",
|
|
19386
19474
|
width,
|
|
@@ -19396,7 +19484,7 @@ function FixedPanel({
|
|
|
19396
19484
|
);
|
|
19397
19485
|
}
|
|
19398
19486
|
function WindowedPanel({ width, height, title, focused, children }) {
|
|
19399
|
-
return /* @__PURE__ */
|
|
19487
|
+
return /* @__PURE__ */ jsxs17(
|
|
19400
19488
|
FixedPanel,
|
|
19401
19489
|
{
|
|
19402
19490
|
width,
|
|
@@ -19405,7 +19493,7 @@ function WindowedPanel({ width, height, title, focused, children }) {
|
|
|
19405
19493
|
...height === void 0 ? {} : { height },
|
|
19406
19494
|
focused,
|
|
19407
19495
|
children: [
|
|
19408
|
-
title && /* @__PURE__ */
|
|
19496
|
+
title && /* @__PURE__ */ jsx19(WindowedPanelHeader, { title, width, focused }),
|
|
19409
19497
|
children
|
|
19410
19498
|
]
|
|
19411
19499
|
}
|
|
@@ -19416,9 +19504,9 @@ function WindowedPanelHeader({
|
|
|
19416
19504
|
width,
|
|
19417
19505
|
focused
|
|
19418
19506
|
}) {
|
|
19419
|
-
return /* @__PURE__ */
|
|
19420
|
-
/* @__PURE__ */
|
|
19421
|
-
/* @__PURE__ */
|
|
19507
|
+
return /* @__PURE__ */ jsxs17(Box17, { flexDirection: "column", children: [
|
|
19508
|
+
/* @__PURE__ */ jsx19(Text17, { bold: true, color: PALETTE.accent, inverse: focused, children: title }),
|
|
19509
|
+
/* @__PURE__ */ jsx19(Text17, { color: PALETTE.muted, children: "\u2500".repeat(Math.max(0, width - 2)) })
|
|
19422
19510
|
] });
|
|
19423
19511
|
}
|
|
19424
19512
|
function formatWindowIndicator(direction, count) {
|
|
@@ -19427,38 +19515,38 @@ function formatWindowIndicator(direction, count) {
|
|
|
19427
19515
|
}
|
|
19428
19516
|
function WindowFooter({ above, below }) {
|
|
19429
19517
|
const parts = [above > 0 ? `\u2191 ${above}` : "", below > 0 ? `\u2193 ${below}` : ""].filter(Boolean);
|
|
19430
|
-
return /* @__PURE__ */
|
|
19518
|
+
return /* @__PURE__ */ jsx19(Text17, { color: PALETTE.muted, children: parts.length === 0 ? " " : `${parts.join(" \xB7 ")} more` });
|
|
19431
19519
|
}
|
|
19432
19520
|
function WindowIndicator({ direction, count }) {
|
|
19433
|
-
return /* @__PURE__ */
|
|
19521
|
+
return /* @__PURE__ */ jsx19(Text17, { color: PALETTE.muted, children: formatWindowIndicator(direction, count) });
|
|
19434
19522
|
}
|
|
19435
19523
|
|
|
19436
19524
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/tokens-column.tsx
|
|
19437
|
-
import { jsx as
|
|
19525
|
+
import { jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
19438
19526
|
function TokensColumn(props) {
|
|
19439
19527
|
const { title, width, height, tokens, cursor, focused, visibleCount } = props;
|
|
19440
19528
|
const nameWidth = Math.min(longestEntries(tokens).path + 2, Math.floor((width - 8) / 2));
|
|
19441
19529
|
const window = computeColumnWindow(tokens.length, cursor, Math.max(1, visibleCount));
|
|
19442
|
-
return /* @__PURE__ */
|
|
19443
|
-
/* @__PURE__ */
|
|
19530
|
+
return /* @__PURE__ */ jsxs18(WindowedPanel, { width, height, title, focused, children: [
|
|
19531
|
+
/* @__PURE__ */ jsx20(WindowIndicator, { direction: "up", count: window.above }),
|
|
19444
19532
|
tokens.slice(window.start, window.end).map((token, offset) => {
|
|
19445
19533
|
const isCursor = focused && window.start + offset === cursor;
|
|
19446
|
-
return /* @__PURE__ */
|
|
19447
|
-
/* @__PURE__ */
|
|
19448
|
-
/* @__PURE__ */
|
|
19534
|
+
return /* @__PURE__ */ jsxs18(Box18, { children: [
|
|
19535
|
+
/* @__PURE__ */ jsx20(Text18, { color: PALETTE.accent, bold: true, children: isCursor ? figures2.pointer : " " }),
|
|
19536
|
+
/* @__PURE__ */ jsxs18(Text18, { wrap: "truncate-end", color: isCursor ? PALETTE.accent : void 0, bold: isCursor, children: [
|
|
19449
19537
|
` ${token.path.padEnd(nameWidth)}`,
|
|
19450
|
-
/* @__PURE__ */
|
|
19538
|
+
/* @__PURE__ */ jsx20(Text18, { color: PALETTE.muted, children: token.value })
|
|
19451
19539
|
] })
|
|
19452
19540
|
] }, token.path);
|
|
19453
19541
|
}),
|
|
19454
|
-
/* @__PURE__ */
|
|
19542
|
+
/* @__PURE__ */ jsx20(WindowIndicator, { direction: "down", count: window.below })
|
|
19455
19543
|
] });
|
|
19456
19544
|
}
|
|
19457
19545
|
|
|
19458
19546
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/cycles-panel.tsx
|
|
19459
|
-
import { Box as
|
|
19547
|
+
import { Box as Box19, Text as Text19 } from "ink";
|
|
19460
19548
|
import figures3 from "figures";
|
|
19461
|
-
import { jsx as
|
|
19549
|
+
import { jsx as jsx21, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
19462
19550
|
function cycleLabel(cycle, index) {
|
|
19463
19551
|
const parts = [];
|
|
19464
19552
|
for (let i = 0; i < cycle.edges.length; i++) {
|
|
@@ -19469,36 +19557,36 @@ function cycleLabel(cycle, index) {
|
|
|
19469
19557
|
return `Cycle ${index + 1}: ${parts.join(" \u2192 ")}`;
|
|
19470
19558
|
}
|
|
19471
19559
|
function CyclesPanel({ cycles, cursor }) {
|
|
19472
|
-
return /* @__PURE__ */
|
|
19473
|
-
/* @__PURE__ */
|
|
19474
|
-
/* @__PURE__ */
|
|
19560
|
+
return /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.warning, paddingX: 1, marginTop: 1, children: [
|
|
19561
|
+
/* @__PURE__ */ jsx21(Text19, { bold: true, color: PALETTE.warning, children: `Cycles detected (${cycles.length}):` }),
|
|
19562
|
+
/* @__PURE__ */ jsx21(Text19, { children: " " }),
|
|
19475
19563
|
cycles.map((cycle, i) => {
|
|
19476
19564
|
const isCursor = i === cursor;
|
|
19477
|
-
return /* @__PURE__ */
|
|
19478
|
-
isCursor ? /* @__PURE__ */
|
|
19479
|
-
/* @__PURE__ */
|
|
19565
|
+
return /* @__PURE__ */ jsxs19(Text19, { children: [
|
|
19566
|
+
isCursor ? /* @__PURE__ */ jsx21(Text19, { color: PALETTE.accent, bold: true, children: figures3.pointer }) : /* @__PURE__ */ jsx21(Text19, { children: " " }),
|
|
19567
|
+
/* @__PURE__ */ jsx21(Text19, { color: PALETTE.warning, inverse: isCursor, children: " " + cycleLabel(cycle, i) })
|
|
19480
19568
|
] }, i);
|
|
19481
19569
|
}),
|
|
19482
|
-
/* @__PURE__ */
|
|
19570
|
+
/* @__PURE__ */ jsx21(Text19, { children: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [c/Esc] close" })
|
|
19483
19571
|
] });
|
|
19484
19572
|
}
|
|
19485
19573
|
|
|
19486
19574
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/reject-prompt.tsx
|
|
19487
|
-
import { Box as
|
|
19488
|
-
import { jsx as
|
|
19575
|
+
import { Box as Box20, Text as Text20 } from "ink";
|
|
19576
|
+
import { jsx as jsx22, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
19489
19577
|
function RejectPrompt({ pending }) {
|
|
19490
|
-
return /* @__PURE__ */
|
|
19491
|
-
/* @__PURE__ */
|
|
19492
|
-
pending.ancestors.length > 0 && /* @__PURE__ */
|
|
19493
|
-
pending.descendants.length > 0 && /* @__PURE__ */
|
|
19494
|
-
/* @__PURE__ */
|
|
19578
|
+
return /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.warning, paddingX: 1, marginTop: 1, children: [
|
|
19579
|
+
/* @__PURE__ */ jsx22(Text20, { bold: true, color: PALETTE.warning, children: `Rejecting ${pending.target} will:` }),
|
|
19580
|
+
pending.ancestors.length > 0 && /* @__PURE__ */ jsx22(Text20, { children: `- Reject ancestors: ${pending.ancestors.join(", ")}` }),
|
|
19581
|
+
pending.descendants.length > 0 && /* @__PURE__ */ jsx22(Text20, { children: `- Deselect descendants: ${pending.descendants.join(", ")}` }),
|
|
19582
|
+
/* @__PURE__ */ jsx22(Text20, { children: "[y] confirm \xB7 [n]/[Esc] cancel" })
|
|
19495
19583
|
] });
|
|
19496
19584
|
}
|
|
19497
19585
|
|
|
19498
19586
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CompactControlBar.tsx
|
|
19499
|
-
import { jsx as
|
|
19587
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
19500
19588
|
function CompactControlBar({ hasGroupRoots, searchActive }) {
|
|
19501
|
-
return /* @__PURE__ */
|
|
19589
|
+
return /* @__PURE__ */ jsx23(
|
|
19502
19590
|
ControlHints,
|
|
19503
19591
|
{
|
|
19504
19592
|
hints: [
|
|
@@ -19515,8 +19603,8 @@ function CompactControlBar({ hasGroupRoots, searchActive }) {
|
|
|
19515
19603
|
}
|
|
19516
19604
|
|
|
19517
19605
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CounterStrip.tsx
|
|
19518
|
-
import { Box as
|
|
19519
|
-
import { jsx as
|
|
19606
|
+
import { Box as Box21, Text as Text21 } from "ink";
|
|
19607
|
+
import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
19520
19608
|
function CounterStrip(props) {
|
|
19521
19609
|
const { counters, totalWidth } = props;
|
|
19522
19610
|
const condensed = totalWidth < 60;
|
|
@@ -19525,38 +19613,38 @@ function CounterStrip(props) {
|
|
|
19525
19613
|
const labelRej = condensed ? "Rej" : "Rejected";
|
|
19526
19614
|
const labelUnd = condensed ? "Und" : "Undecided";
|
|
19527
19615
|
const sep = condensed ? " | " : " ";
|
|
19528
|
-
return /* @__PURE__ */
|
|
19529
|
-
/* @__PURE__ */
|
|
19616
|
+
return /* @__PURE__ */ jsx24(Box21, { children: /* @__PURE__ */ jsxs21(Text21, { children: [
|
|
19617
|
+
/* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
|
|
19530
19618
|
labelGrp,
|
|
19531
19619
|
" "
|
|
19532
19620
|
] }),
|
|
19533
|
-
/* @__PURE__ */
|
|
19534
|
-
/* @__PURE__ */
|
|
19535
|
-
/* @__PURE__ */
|
|
19621
|
+
/* @__PURE__ */ jsx24(Text21, { bold: true, children: counters.groups }),
|
|
19622
|
+
/* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep }),
|
|
19623
|
+
/* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
|
|
19536
19624
|
labelAcc,
|
|
19537
19625
|
" "
|
|
19538
19626
|
] }),
|
|
19539
|
-
/* @__PURE__ */
|
|
19540
|
-
/* @__PURE__ */
|
|
19541
|
-
/* @__PURE__ */
|
|
19627
|
+
/* @__PURE__ */ jsx24(Text21, { bold: true, children: `${counters.accepted}/${counters.total}` }),
|
|
19628
|
+
/* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep }),
|
|
19629
|
+
/* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
|
|
19542
19630
|
labelRej,
|
|
19543
19631
|
" "
|
|
19544
19632
|
] }),
|
|
19545
|
-
/* @__PURE__ */
|
|
19546
|
-
/* @__PURE__ */
|
|
19547
|
-
/* @__PURE__ */
|
|
19633
|
+
/* @__PURE__ */ jsx24(Text21, { bold: true, children: counters.rejected }),
|
|
19634
|
+
/* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep }),
|
|
19635
|
+
/* @__PURE__ */ jsxs21(Text21, { color: PALETTE.muted, children: [
|
|
19548
19636
|
labelUnd,
|
|
19549
19637
|
" "
|
|
19550
19638
|
] }),
|
|
19551
|
-
/* @__PURE__ */
|
|
19552
|
-
/* @__PURE__ */
|
|
19639
|
+
/* @__PURE__ */ jsx24(Text21, { bold: true, children: counters.undecided }),
|
|
19640
|
+
/* @__PURE__ */ jsx24(Text21, { color: PALETTE.muted, children: sep })
|
|
19553
19641
|
] }) });
|
|
19554
19642
|
}
|
|
19555
19643
|
|
|
19556
19644
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GotoBanner.tsx
|
|
19557
19645
|
import figures4 from "figures";
|
|
19558
|
-
import { Box as
|
|
19559
|
-
import { jsx as
|
|
19646
|
+
import { Box as Box22, Text as Text22 } from "ink";
|
|
19647
|
+
import { jsx as jsx25, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
19560
19648
|
var DEFAULT_MAX_ROWS = 15;
|
|
19561
19649
|
function windowStart(rowCount, highlightIndex, maxRows) {
|
|
19562
19650
|
if (rowCount <= maxRows) return 0;
|
|
@@ -19567,9 +19655,9 @@ function windowStart(rowCount, highlightIndex, maxRows) {
|
|
|
19567
19655
|
return start;
|
|
19568
19656
|
}
|
|
19569
19657
|
function defaultRenderRow(row, index, isCursor) {
|
|
19570
|
-
return /* @__PURE__ */
|
|
19571
|
-
isCursor ? /* @__PURE__ */
|
|
19572
|
-
/* @__PURE__ */
|
|
19658
|
+
return /* @__PURE__ */ jsxs22(Text22, { children: [
|
|
19659
|
+
isCursor ? /* @__PURE__ */ jsx25(Text22, { color: PALETTE.accent, bold: true, children: figures4.pointer }) : /* @__PURE__ */ jsx25(Text22, { children: " " }),
|
|
19660
|
+
/* @__PURE__ */ jsx25(Text22, { inverse: isCursor, children: " " + row.label })
|
|
19573
19661
|
] }, index);
|
|
19574
19662
|
}
|
|
19575
19663
|
function GotoBanner({
|
|
@@ -19588,8 +19676,8 @@ function GotoBanner({
|
|
|
19588
19676
|
const visible = rows.slice(start, end);
|
|
19589
19677
|
const moreAbove = start;
|
|
19590
19678
|
const moreBelow = rows.length - end;
|
|
19591
|
-
return /* @__PURE__ */
|
|
19592
|
-
|
|
19679
|
+
return /* @__PURE__ */ jsxs22(
|
|
19680
|
+
Box22,
|
|
19593
19681
|
{
|
|
19594
19682
|
flexDirection: "column",
|
|
19595
19683
|
borderStyle: "single",
|
|
@@ -19600,14 +19688,14 @@ function GotoBanner({
|
|
|
19600
19688
|
width,
|
|
19601
19689
|
flexShrink: 0,
|
|
19602
19690
|
children: [
|
|
19603
|
-
/* @__PURE__ */
|
|
19604
|
-
moreAbove > 0 && /* @__PURE__ */
|
|
19691
|
+
/* @__PURE__ */ jsx25(Text22, { bold: true, children: title }),
|
|
19692
|
+
moreAbove > 0 && /* @__PURE__ */ jsx25(Text22, { color: PALETTE.muted, children: ` \u25B2 ${moreAbove} more` }),
|
|
19605
19693
|
visible.map((row, vi) => {
|
|
19606
19694
|
const i = start + vi;
|
|
19607
19695
|
return renderRow(row, i, i === highlightIndex);
|
|
19608
19696
|
}),
|
|
19609
|
-
moreBelow > 0 && /* @__PURE__ */
|
|
19610
|
-
footerHint !== void 0 && /* @__PURE__ */
|
|
19697
|
+
moreBelow > 0 && /* @__PURE__ */ jsx25(Text22, { color: PALETTE.muted, children: ` \u25BC ${moreBelow} more` }),
|
|
19698
|
+
footerHint !== void 0 && /* @__PURE__ */ jsx25(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text22, { color: PALETTE.muted, children: footerHint }) })
|
|
19611
19699
|
]
|
|
19612
19700
|
}
|
|
19613
19701
|
);
|
|
@@ -19615,7 +19703,7 @@ function GotoBanner({
|
|
|
19615
19703
|
|
|
19616
19704
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GroupedSidebar.tsx
|
|
19617
19705
|
import figures5 from "figures";
|
|
19618
|
-
import { Box as
|
|
19706
|
+
import { Box as Box23, Text as Text24 } from "ink";
|
|
19619
19707
|
|
|
19620
19708
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/graph/cycle-detection.ts
|
|
19621
19709
|
function buildGraph(components) {
|
|
@@ -19955,8 +20043,8 @@ function findSharedDeps(closures) {
|
|
|
19955
20043
|
}
|
|
19956
20044
|
|
|
19957
20045
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/badge.tsx
|
|
19958
|
-
import { Text as
|
|
19959
|
-
import { jsx as
|
|
20046
|
+
import { Text as Text23 } from "ink";
|
|
20047
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
19960
20048
|
function previewBadge(annotation) {
|
|
19961
20049
|
switch (annotation) {
|
|
19962
20050
|
case "new":
|
|
@@ -19975,11 +20063,11 @@ function PreviewBadge({
|
|
|
19975
20063
|
badge,
|
|
19976
20064
|
highlighted = false
|
|
19977
20065
|
}) {
|
|
19978
|
-
return badge ? /* @__PURE__ */
|
|
20066
|
+
return badge ? /* @__PURE__ */ jsx26(Text23, { color: !highlighted && badge.dim ? PALETTE.muted : badge.color, bold: badge.bold, children: badge.char }) : /* @__PURE__ */ jsx26(Text23, { children: " " });
|
|
19979
20067
|
}
|
|
19980
20068
|
|
|
19981
20069
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GroupedSidebar.tsx
|
|
19982
|
-
import { jsx as
|
|
20070
|
+
import { jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
19983
20071
|
var GLYPH_EXPAND_COLLAPSED = "\u25B8";
|
|
19984
20072
|
var GLYPH_EXPAND_EXPANDED = "\u25BE";
|
|
19985
20073
|
var GLYPH_TREE_MID = "\u251C\u2500";
|
|
@@ -20404,8 +20492,8 @@ function GroupedSidebar(props) {
|
|
|
20404
20492
|
const start = windowed ? Math.max(0, scrollOffset ?? 0) : 0;
|
|
20405
20493
|
const end = windowed ? start + (visibleCount ?? allRows.length) + 1 : allRows.length;
|
|
20406
20494
|
const rows = windowed ? allRows.slice(start, end) : allRows;
|
|
20407
|
-
return /* @__PURE__ */
|
|
20408
|
-
allRows.length === 0 && emptyMessage !== void 0 && /* @__PURE__ */
|
|
20495
|
+
return /* @__PURE__ */ jsxs23(WindowedPanel, { width, height: props.height, title, focused, children: [
|
|
20496
|
+
allRows.length === 0 && emptyMessage !== void 0 && /* @__PURE__ */ jsxs23(Text24, { color: PALETTE.warning, children: [
|
|
20409
20497
|
" ",
|
|
20410
20498
|
emptyMessage
|
|
20411
20499
|
] }),
|
|
@@ -20435,13 +20523,13 @@ function GroupedSidebar(props) {
|
|
|
20435
20523
|
isOwn: rs?.isOwn ?? false,
|
|
20436
20524
|
isCursor
|
|
20437
20525
|
});
|
|
20438
|
-
return /* @__PURE__ */
|
|
20439
|
-
isCursor ? /* @__PURE__ */
|
|
20440
|
-
/* @__PURE__ */
|
|
20441
|
-
selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */
|
|
20442
|
-
aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */
|
|
20443
|
-
/* @__PURE__ */
|
|
20444
|
-
|
|
20526
|
+
return /* @__PURE__ */ jsxs23(Box23, { children: [
|
|
20527
|
+
isCursor ? /* @__PURE__ */ jsx27(Text24, { color: PALETTE.accent, bold: true, children: figures5.pointer }) : /* @__PURE__ */ jsx27(Text24, { children: " " }),
|
|
20528
|
+
/* @__PURE__ */ jsx27(PreviewBadge, { badge, highlighted: isSelected }),
|
|
20529
|
+
selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */ jsx27(Text24, { color: !isSelected && selDim ? PALETTE.muted : selColor, bold: selBold, children: " " + selGlyph }) : /* @__PURE__ */ jsx27(Text24, { children: " " })),
|
|
20530
|
+
aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */ jsx27(Text24, { color: PALETTE.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx27(Text24, { children: " " })),
|
|
20531
|
+
/* @__PURE__ */ jsxs23(
|
|
20532
|
+
Text24,
|
|
20445
20533
|
{
|
|
20446
20534
|
color: isSelected ? PALETTE.accent : labelStyle.dim ? PALETTE.muted : labelStyle.color,
|
|
20447
20535
|
bold: isSelected || labelStyle.bold,
|
|
@@ -20454,16 +20542,16 @@ function GroupedSidebar(props) {
|
|
|
20454
20542
|
]
|
|
20455
20543
|
}
|
|
20456
20544
|
),
|
|
20457
|
-
inheritanceStyle.glyph && /* @__PURE__ */
|
|
20545
|
+
inheritanceStyle.glyph && /* @__PURE__ */ jsx27(Text24, { color: inheritanceStyle.dim ? PALETTE.muted : inheritanceStyle.color, bold: inheritanceStyle.bold, children: " " + inheritanceStyle.glyph })
|
|
20458
20546
|
] }, row.key);
|
|
20459
20547
|
}),
|
|
20460
|
-
windowed && /* @__PURE__ */
|
|
20548
|
+
windowed && /* @__PURE__ */ jsx27(WindowFooter, { above: start, below: Math.max(0, allRows.length - end) })
|
|
20461
20549
|
] });
|
|
20462
20550
|
}
|
|
20463
20551
|
|
|
20464
20552
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/HelpOverlay.tsx
|
|
20465
20553
|
import React11 from "react";
|
|
20466
|
-
import { Box as
|
|
20554
|
+
import { Box as Box24, Text as Text25 } from "ink";
|
|
20467
20555
|
|
|
20468
20556
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/hooks/useImmediateInput.ts
|
|
20469
20557
|
import { useLayoutEffect, useRef as useRef8 } from "react";
|
|
@@ -20562,7 +20650,7 @@ function useTerminalSize() {
|
|
|
20562
20650
|
}
|
|
20563
20651
|
|
|
20564
20652
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/HelpOverlay.tsx
|
|
20565
|
-
import { Fragment as
|
|
20653
|
+
import { Fragment as Fragment4, jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
20566
20654
|
function HelpOverlay(props) {
|
|
20567
20655
|
const { onClose } = props;
|
|
20568
20656
|
const { columns: terminalColumns, rows: terminalRows } = useTerminalSize();
|
|
@@ -20573,8 +20661,8 @@ function HelpOverlay(props) {
|
|
|
20573
20661
|
if (input === "h" || key.escape) onClose();
|
|
20574
20662
|
}, props.handleInput !== false);
|
|
20575
20663
|
if (props.sections) {
|
|
20576
|
-
return /* @__PURE__ */
|
|
20577
|
-
|
|
20664
|
+
return /* @__PURE__ */ jsxs24(
|
|
20665
|
+
Box24,
|
|
20578
20666
|
{
|
|
20579
20667
|
flexDirection: "column",
|
|
20580
20668
|
borderStyle: "round",
|
|
@@ -20583,19 +20671,19 @@ function HelpOverlay(props) {
|
|
|
20583
20671
|
height: panelHeight,
|
|
20584
20672
|
overflowY: "hidden",
|
|
20585
20673
|
children: [
|
|
20586
|
-
/* @__PURE__ */
|
|
20587
|
-
props.sections.map((section) => /* @__PURE__ */
|
|
20588
|
-
/* @__PURE__ */
|
|
20589
|
-
/* @__PURE__ */
|
|
20590
|
-
section.entries.map((entry) => /* @__PURE__ */
|
|
20674
|
+
/* @__PURE__ */ jsx28(Text25, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
|
|
20675
|
+
props.sections.map((section) => /* @__PURE__ */ jsxs24(React11.Fragment, { children: [
|
|
20676
|
+
/* @__PURE__ */ jsx28(Text25, { children: " " }),
|
|
20677
|
+
/* @__PURE__ */ jsx28(Text25, { bold: true, children: section.title }),
|
|
20678
|
+
section.entries.map((entry) => /* @__PURE__ */ jsx28(Text25, { children: entry.keys ? " " + entry.keys.padEnd(16) + " " + entry.label : " " + entry.label }, entry.keys + entry.label))
|
|
20591
20679
|
] }, section.title))
|
|
20592
20680
|
]
|
|
20593
20681
|
}
|
|
20594
20682
|
);
|
|
20595
20683
|
}
|
|
20596
20684
|
const mode = props.mode;
|
|
20597
|
-
return /* @__PURE__ */
|
|
20598
|
-
|
|
20685
|
+
return /* @__PURE__ */ jsxs24(
|
|
20686
|
+
Box24,
|
|
20599
20687
|
{
|
|
20600
20688
|
flexDirection: "column",
|
|
20601
20689
|
borderStyle: "round",
|
|
@@ -20604,38 +20692,38 @@ function HelpOverlay(props) {
|
|
|
20604
20692
|
height: panelHeight,
|
|
20605
20693
|
overflowY: "hidden",
|
|
20606
20694
|
children: [
|
|
20607
|
-
/* @__PURE__ */
|
|
20608
|
-
/* @__PURE__ */
|
|
20609
|
-
/* @__PURE__ */
|
|
20610
|
-
/* @__PURE__ */
|
|
20611
|
-
/* @__PURE__ */
|
|
20612
|
-
/* @__PURE__ */
|
|
20613
|
-
/* @__PURE__ */
|
|
20614
|
-
mode === "review" && /* @__PURE__ */
|
|
20615
|
-
/* @__PURE__ */
|
|
20616
|
-
/* @__PURE__ */
|
|
20617
|
-
/* @__PURE__ */
|
|
20618
|
-
/* @__PURE__ */
|
|
20619
|
-
/* @__PURE__ */
|
|
20620
|
-
/* @__PURE__ */
|
|
20621
|
-
/* @__PURE__ */
|
|
20622
|
-
/* @__PURE__ */
|
|
20623
|
-
/* @__PURE__ */
|
|
20624
|
-
/* @__PURE__ */
|
|
20625
|
-
/* @__PURE__ */
|
|
20626
|
-
/* @__PURE__ */
|
|
20627
|
-
/* @__PURE__ */
|
|
20695
|
+
/* @__PURE__ */ jsx28(Text25, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
|
|
20696
|
+
/* @__PURE__ */ jsx28(Text25, { children: " " }),
|
|
20697
|
+
/* @__PURE__ */ jsx28(Text25, { bold: true, children: "Navigation" }),
|
|
20698
|
+
/* @__PURE__ */ jsx28(Text25, { children: " \u2191 / k / PgUp Scroll up" }),
|
|
20699
|
+
/* @__PURE__ */ jsx28(Text25, { children: " \u2193 / j / PgDn Scroll down" }),
|
|
20700
|
+
/* @__PURE__ */ jsx28(Text25, { children: " g / Home Jump to top" }),
|
|
20701
|
+
/* @__PURE__ */ jsx28(Text25, { children: " G / End Jump to bottom" }),
|
|
20702
|
+
mode === "review" && /* @__PURE__ */ jsxs24(Fragment4, { children: [
|
|
20703
|
+
/* @__PURE__ */ jsx28(Text25, { children: " " }),
|
|
20704
|
+
/* @__PURE__ */ jsx28(Text25, { bold: true, children: "[Review mode only]" }),
|
|
20705
|
+
/* @__PURE__ */ jsx28(Text25, { children: " Tab Toggle sidebar/detail" }),
|
|
20706
|
+
/* @__PURE__ */ jsx28(Text25, { children: " a Accept component" }),
|
|
20707
|
+
/* @__PURE__ */ jsx28(Text25, { children: " r Reject component" }),
|
|
20708
|
+
/* @__PURE__ */ jsx28(Text25, { children: " e Edit proposal" }),
|
|
20709
|
+
/* @__PURE__ */ jsx28(Text25, { children: " s Toggle source code" }),
|
|
20710
|
+
/* @__PURE__ */ jsx28(Text25, { children: " A Approve all" }),
|
|
20711
|
+
/* @__PURE__ */ jsx28(Text25, { children: " F Open finalize dialog" }),
|
|
20712
|
+
/* @__PURE__ */ jsx28(Text25, { children: " Ctrl+S Save draft" }),
|
|
20713
|
+
/* @__PURE__ */ jsx28(Text25, { children: " Ctrl+Z Undo" }),
|
|
20714
|
+
/* @__PURE__ */ jsx28(Text25, { children: " Ctrl+Y Redo" }),
|
|
20715
|
+
/* @__PURE__ */ jsx28(Text25, { children: " Esc Exit edit / close" })
|
|
20628
20716
|
] }),
|
|
20629
|
-
/* @__PURE__ */
|
|
20630
|
-
/* @__PURE__ */
|
|
20631
|
-
/* @__PURE__ */
|
|
20717
|
+
/* @__PURE__ */ jsx28(Text25, { children: " " }),
|
|
20718
|
+
/* @__PURE__ */ jsx28(Text25, { children: " h Close help" }),
|
|
20719
|
+
/* @__PURE__ */ jsx28(Text25, { children: " q Quit" })
|
|
20632
20720
|
]
|
|
20633
20721
|
}
|
|
20634
20722
|
);
|
|
20635
20723
|
}
|
|
20636
20724
|
|
|
20637
20725
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/SearchMatchSummary.tsx
|
|
20638
|
-
import { Box as
|
|
20726
|
+
import { Box as Box25, Text as Text26 } from "ink";
|
|
20639
20727
|
|
|
20640
20728
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/autocomplete.ts
|
|
20641
20729
|
function longestCommonPrefix(names) {
|
|
@@ -20692,7 +20780,7 @@ function formatSearchMatchSummary(matches, total) {
|
|
|
20692
20780
|
}
|
|
20693
20781
|
|
|
20694
20782
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/SearchMatchSummary.tsx
|
|
20695
|
-
import { Fragment as
|
|
20783
|
+
import { Fragment as Fragment5, jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
20696
20784
|
function SearchMatchSummary({
|
|
20697
20785
|
open,
|
|
20698
20786
|
query,
|
|
@@ -20703,17 +20791,17 @@ function SearchMatchSummary({
|
|
|
20703
20791
|
marginTop
|
|
20704
20792
|
}) {
|
|
20705
20793
|
if (hidden) return null;
|
|
20706
|
-
return /* @__PURE__ */
|
|
20707
|
-
open && /* @__PURE__ */
|
|
20708
|
-
/* @__PURE__ */
|
|
20794
|
+
return /* @__PURE__ */ jsxs25(Fragment5, { children: [
|
|
20795
|
+
open && /* @__PURE__ */ jsxs25(Box25, { marginTop, flexDirection: "column", children: [
|
|
20796
|
+
/* @__PURE__ */ jsxs25(Text26, { children: [
|
|
20709
20797
|
`/${query}`,
|
|
20710
|
-
/* @__PURE__ */
|
|
20711
|
-
query && /* @__PURE__ */
|
|
20712
|
-
/* @__PURE__ */
|
|
20798
|
+
/* @__PURE__ */ jsx29(Text26, { color: PALETTE.accent, children: "\u258E" }),
|
|
20799
|
+
query && /* @__PURE__ */ jsx29(Text26, { color: PALETTE.muted, children: formatSearchMatchSummary(matches, total) }),
|
|
20800
|
+
/* @__PURE__ */ jsx29(Text26, { children: " \xB7 [Esc] leave" })
|
|
20713
20801
|
] }),
|
|
20714
|
-
autocompleteCandidates.length > 1 && /* @__PURE__ */
|
|
20802
|
+
autocompleteCandidates.length > 1 && /* @__PURE__ */ jsx29(Text26, { color: PALETTE.muted, children: ` possibilities: ${autocompleteCandidates.join(" \xB7 ").slice(0, 120)}` })
|
|
20715
20803
|
] }),
|
|
20716
|
-
!open && query && /* @__PURE__ */
|
|
20804
|
+
!open && query && /* @__PURE__ */ jsx29(Box25, { marginTop, children: /* @__PURE__ */ jsx29(Text26, { children: `/${query}${formatSearchMatchSummary(matches, total)} \xB7 [Esc] clear` }) })
|
|
20717
20805
|
] });
|
|
20718
20806
|
}
|
|
20719
20807
|
|
|
@@ -21560,7 +21648,7 @@ function useScopeGate({ components, tokenCount, tokensWidth, onConfirm, onQuit }
|
|
|
21560
21648
|
panelOpen: false,
|
|
21561
21649
|
entryCount: 0
|
|
21562
21650
|
});
|
|
21563
|
-
const
|
|
21651
|
+
const panelLayout2 = useMemo3(() => computePanelLayout(visibleCount), [visibleCount]);
|
|
21564
21652
|
useEffect13(() => {
|
|
21565
21653
|
setNav((prev) => {
|
|
21566
21654
|
const maxIdx = Math.max(0, visibleRows.length - 1);
|
|
@@ -21844,7 +21932,7 @@ function useScopeGate({ components, tokenCount, tokensWidth, onConfirm, onQuit }
|
|
|
21844
21932
|
// layout
|
|
21845
21933
|
totalWidth,
|
|
21846
21934
|
columnPlan,
|
|
21847
|
-
panelLayout,
|
|
21935
|
+
panelLayout: panelLayout2,
|
|
21848
21936
|
visibleCount,
|
|
21849
21937
|
panelMaxRows,
|
|
21850
21938
|
// sidebar
|
|
@@ -21883,7 +21971,7 @@ function useScopeGate({ components, tokenCount, tokensWidth, onConfirm, onQuit }
|
|
|
21883
21971
|
}
|
|
21884
21972
|
|
|
21885
21973
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/screen.tsx
|
|
21886
|
-
import { Fragment as
|
|
21974
|
+
import { Fragment as Fragment6, jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
21887
21975
|
var HELP_SECTIONS = [
|
|
21888
21976
|
{
|
|
21889
21977
|
title: "Navigation",
|
|
@@ -21957,24 +22045,24 @@ function ScopeGateScreen({
|
|
|
21957
22045
|
onQuit();
|
|
21958
22046
|
}
|
|
21959
22047
|
});
|
|
21960
|
-
const { search, graph, columnPlan, panelLayout, counters } = gate;
|
|
22048
|
+
const { search, graph, columnPlan, panelLayout: panelLayout2, counters } = gate;
|
|
21961
22049
|
if (gate.showHelp) {
|
|
21962
|
-
return /* @__PURE__ */
|
|
21963
|
-
}
|
|
21964
|
-
return /* @__PURE__ */
|
|
21965
|
-
/* @__PURE__ */
|
|
21966
|
-
/* @__PURE__ */
|
|
21967
|
-
/* @__PURE__ */
|
|
21968
|
-
/* @__PURE__ */
|
|
21969
|
-
gate.aiExcludedCount > 0 && /* @__PURE__ */
|
|
22050
|
+
return /* @__PURE__ */ jsx30(HelpOverlay, { sections: HELP_SECTIONS, handleInput: false, onClose: gate.closeHelp });
|
|
22051
|
+
}
|
|
22052
|
+
return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", children: [
|
|
22053
|
+
/* @__PURE__ */ jsx30(StepHeader, { step: "scope-gate" }),
|
|
22054
|
+
/* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", paddingX: 2, children: [
|
|
22055
|
+
/* @__PURE__ */ jsxs26(Box26, { flexDirection: "row", flexWrap: "wrap", children: [
|
|
22056
|
+
/* @__PURE__ */ jsx30(CounterStrip, { counters, totalWidth: gate.totalWidth }),
|
|
22057
|
+
gate.aiExcludedCount > 0 && /* @__PURE__ */ jsxs26(Text27, { color: PALETTE.muted, children: [
|
|
21970
22058
|
`${gate.aiExcludedCount} component${gate.aiExcludedCount === 1 ? "" : "s"} flagged by AI`,
|
|
21971
|
-
gate.aiRows.length > 0 && /* @__PURE__ */
|
|
22059
|
+
gate.aiRows.length > 0 && /* @__PURE__ */ jsx30(Text27, { color: PALETTE.accent, children: " \u2014 press [x] to see why" })
|
|
21972
22060
|
] })
|
|
21973
22061
|
] }),
|
|
21974
|
-
tokens.length > 0 && columnPlan.layout === "single" && /* @__PURE__ */
|
|
21975
|
-
graph.cycles.length > 0 && /* @__PURE__ */
|
|
21976
|
-
/* @__PURE__ */
|
|
21977
|
-
gate.aiRationalePanelOpen ? /* @__PURE__ */
|
|
22062
|
+
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.` }),
|
|
22063
|
+
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." }) }),
|
|
22064
|
+
/* @__PURE__ */ jsxs26(Box26, { flexDirection: "row", alignItems: "stretch", children: [
|
|
22065
|
+
gate.aiRationalePanelOpen ? /* @__PURE__ */ jsx30(
|
|
21978
22066
|
GotoBanner,
|
|
21979
22067
|
{
|
|
21980
22068
|
title: `Review flags (${gate.aiExcludedCount})`,
|
|
@@ -21984,7 +22072,7 @@ function ScopeGateScreen({
|
|
|
21984
22072
|
width: columnPlan.main,
|
|
21985
22073
|
footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [x/Esc] close"
|
|
21986
22074
|
}
|
|
21987
|
-
) : /* @__PURE__ */
|
|
22075
|
+
) : /* @__PURE__ */ jsx30(
|
|
21988
22076
|
GroupedSidebar,
|
|
21989
22077
|
{
|
|
21990
22078
|
items: gate.groupedItems,
|
|
@@ -21996,7 +22084,7 @@ function ScopeGateScreen({
|
|
|
21996
22084
|
expandedGroups: gate.expandedGroups,
|
|
21997
22085
|
onToggleExpanded: gate.toggleExpanded,
|
|
21998
22086
|
width: columnPlan.main,
|
|
21999
|
-
height:
|
|
22087
|
+
height: panelLayout2.height,
|
|
22000
22088
|
title: "Components",
|
|
22001
22089
|
wrapLabels: true,
|
|
22002
22090
|
focused: gate.focusedColumn === "main",
|
|
@@ -22012,25 +22100,25 @@ function ScopeGateScreen({
|
|
|
22012
22100
|
graph: graph.nodes
|
|
22013
22101
|
}
|
|
22014
22102
|
),
|
|
22015
|
-
columnPlan.layout === "two-column" && /* @__PURE__ */
|
|
22016
|
-
/* @__PURE__ */
|
|
22017
|
-
/* @__PURE__ */
|
|
22103
|
+
columnPlan.layout === "two-column" && /* @__PURE__ */ jsxs26(Fragment6, { children: [
|
|
22104
|
+
/* @__PURE__ */ jsx30(Box26, { width: 2, flexShrink: 0 }),
|
|
22105
|
+
/* @__PURE__ */ jsx30(
|
|
22018
22106
|
TokensColumn,
|
|
22019
22107
|
{
|
|
22020
22108
|
width: columnPlan.tokens,
|
|
22021
22109
|
tokens,
|
|
22022
22110
|
cursor: gate.safeTokensCursor,
|
|
22023
22111
|
focused: gate.focusedColumn === "tokens",
|
|
22024
|
-
height:
|
|
22112
|
+
height: panelLayout2.height,
|
|
22025
22113
|
title: `Design tokens (${tokens.length}) \xB7 read only`,
|
|
22026
|
-
visibleCount:
|
|
22114
|
+
visibleCount: panelLayout2.sideVisibleCount
|
|
22027
22115
|
}
|
|
22028
22116
|
)
|
|
22029
22117
|
] })
|
|
22030
22118
|
] }),
|
|
22031
|
-
gate.cyclesPanelOpen && /* @__PURE__ */
|
|
22032
|
-
gate.pendingRejectCascade && /* @__PURE__ */
|
|
22033
|
-
/* @__PURE__ */
|
|
22119
|
+
gate.cyclesPanelOpen && /* @__PURE__ */ jsx30(CyclesPanel, { cycles: gate.slotCycles, cursor: gate.cyclesCursor }),
|
|
22120
|
+
gate.pendingRejectCascade && /* @__PURE__ */ jsx30(RejectPrompt, { pending: gate.pendingRejectCascade }),
|
|
22121
|
+
/* @__PURE__ */ jsx30(
|
|
22034
22122
|
SearchMatchSummary,
|
|
22035
22123
|
{
|
|
22036
22124
|
open: search.searchOpen,
|
|
@@ -22041,7 +22129,7 @@ function ScopeGateScreen({
|
|
|
22041
22129
|
marginTop: 1
|
|
22042
22130
|
}
|
|
22043
22131
|
),
|
|
22044
|
-
/* @__PURE__ */
|
|
22132
|
+
/* @__PURE__ */ jsx30(
|
|
22045
22133
|
CompactControlBar,
|
|
22046
22134
|
{
|
|
22047
22135
|
hasGroupRoots: gate.hasGroupRoots,
|
|
@@ -22145,8 +22233,20 @@ function generationLogInputs(input) {
|
|
|
22145
22233
|
has_tokens: input.hasTokens
|
|
22146
22234
|
};
|
|
22147
22235
|
}
|
|
22236
|
+
var MAX_LOGGED_FAILURES = 10;
|
|
22237
|
+
var MAX_LOGGED_ERROR = 300;
|
|
22238
|
+
function lastProgress(progress) {
|
|
22239
|
+
const { activity, ...rest } = progress;
|
|
22240
|
+
const failed = activity.filter((item) => item.state === "failed");
|
|
22241
|
+
return {
|
|
22242
|
+
final_progress: rest,
|
|
22243
|
+
...failed.length > 0 ? {
|
|
22244
|
+
failed_components: failed.slice(0, MAX_LOGGED_FAILURES).map((item) => ({ name: item.name, error: truncate(item.error ?? "", MAX_LOGGED_ERROR) }))
|
|
22245
|
+
} : {}
|
|
22246
|
+
};
|
|
22247
|
+
}
|
|
22148
22248
|
function generationLogOutputs(result, progress) {
|
|
22149
|
-
const last = progress ?
|
|
22249
|
+
const last = progress ? lastProgress(progress) : {};
|
|
22150
22250
|
if (!result.ok) {
|
|
22151
22251
|
return { outputs: { result: "failed", failed_step: result.step, error: result.message, ...last }, status: "error" };
|
|
22152
22252
|
}
|
|
@@ -22165,7 +22265,21 @@ function generationLogOutputs(result, progress) {
|
|
|
22165
22265
|
};
|
|
22166
22266
|
}
|
|
22167
22267
|
function initialProgress2() {
|
|
22168
|
-
return { components: null, mapTokens: "idle", mapTokensEligible: null };
|
|
22268
|
+
return { components: null, activity: [], mapTokens: "idle", mapTokensEligible: null };
|
|
22269
|
+
}
|
|
22270
|
+
function applyActivityEvent(event, previous, now) {
|
|
22271
|
+
if (event.kind !== "component:started" && event.kind !== "component:completed" && event.kind !== "component:cached" && event.kind !== "component:failed") {
|
|
22272
|
+
return [...previous];
|
|
22273
|
+
}
|
|
22274
|
+
const index = previous.findIndex((item2) => item2.name === event.name);
|
|
22275
|
+
const startedAt = previous[index]?.startedAt ?? now;
|
|
22276
|
+
const item = event.kind === "component:started" ? {
|
|
22277
|
+
name: event.name,
|
|
22278
|
+
state: "running",
|
|
22279
|
+
startedAt,
|
|
22280
|
+
...event.attempt > 1 ? { detail: `attempt ${event.attempt}` } : {}
|
|
22281
|
+
} : 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 };
|
|
22282
|
+
return index >= 0 ? previous.map((existing, i) => i === index ? item : existing) : [...previous, item];
|
|
22169
22283
|
}
|
|
22170
22284
|
function shouldRunMapTokens(counts) {
|
|
22171
22285
|
return counts.mappablePropCount > 0 && counts.rawTokenCount > 0;
|
|
@@ -22181,39 +22295,52 @@ function describeGeneration(input) {
|
|
|
22181
22295
|
return `${formatAcceptanceSummary({ accepted: input.acceptedCount, autoRejected: 0 })}
|
|
22182
22296
|
${agent} is reading each selected component and writing a Contentful component definition for it.${input.hasTokens ? "\nUsing your design tokens for prop resolution." : ""}`;
|
|
22183
22297
|
}
|
|
22184
|
-
function
|
|
22298
|
+
function componentsRow(components, name) {
|
|
22299
|
+
if (!components) return { text: `Starting up ${name}...`, complete: false };
|
|
22300
|
+
const { done, total, current, failed } = components;
|
|
22301
|
+
if (total > 0 && done >= total) {
|
|
22302
|
+
return failed > 0 ? {
|
|
22303
|
+
text: `Generated ${total - failed} of ${total} components, ${failed} failed`,
|
|
22304
|
+
complete: false,
|
|
22305
|
+
state: "failed"
|
|
22306
|
+
} : { text: `Generated ${total} component${total === 1 ? "" : "s"}`, complete: true };
|
|
22307
|
+
}
|
|
22308
|
+
return {
|
|
22309
|
+
text: failed > 0 ? `${current} (${failed} failed so far)` : current,
|
|
22310
|
+
complete: false,
|
|
22311
|
+
progress: { done, total },
|
|
22312
|
+
...failed > 0 ? { state: "warning" } : {}
|
|
22313
|
+
};
|
|
22314
|
+
}
|
|
22315
|
+
function progressRows2(progress, agent, rowMs = []) {
|
|
22185
22316
|
const name = capitalize(agent);
|
|
22186
22317
|
const { components, mapTokens } = progress;
|
|
22187
|
-
const rows = [
|
|
22188
|
-
{
|
|
22189
|
-
text: components ? components.current : `Starting up ${name}...`,
|
|
22190
|
-
complete: false,
|
|
22191
|
-
...components ? { progress: { done: components.done, total: components.total } } : {}
|
|
22192
|
-
}
|
|
22193
|
-
];
|
|
22318
|
+
const rows = [componentsRow(components, name)];
|
|
22194
22319
|
if (mapTokens !== "idle") {
|
|
22195
22320
|
rows.push({
|
|
22196
22321
|
text: mapTokens === "running" ? `Mapping token restrictions via ${name}...` : "Token restrictions ready",
|
|
22197
22322
|
complete: mapTokens === "complete"
|
|
22198
22323
|
});
|
|
22199
22324
|
}
|
|
22200
|
-
return rows;
|
|
22325
|
+
return withTimes(rows, rowMs);
|
|
22201
22326
|
}
|
|
22202
22327
|
|
|
22203
22328
|
// packages/experience-design-system-cli/src/tui/import/steps/08-generation/screen.tsx
|
|
22204
|
-
import { jsx as
|
|
22329
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
22205
22330
|
function GenerationScreen({
|
|
22206
22331
|
progress,
|
|
22207
22332
|
agent,
|
|
22208
22333
|
acceptedCount,
|
|
22209
|
-
hasTokens
|
|
22334
|
+
hasTokens,
|
|
22335
|
+
rowMs
|
|
22210
22336
|
}) {
|
|
22211
|
-
return /* @__PURE__ */
|
|
22337
|
+
return /* @__PURE__ */ jsx31(
|
|
22212
22338
|
RunningStep,
|
|
22213
22339
|
{
|
|
22214
22340
|
step: "generation",
|
|
22215
22341
|
description: describeGeneration({ acceptedCount, agent, hasTokens }),
|
|
22216
|
-
lines: progressRows2(progress, agent)
|
|
22342
|
+
lines: progressRows2(progress, agent, rowMs),
|
|
22343
|
+
aside: progress.activity.length > 0 ? /* @__PURE__ */ jsx31(ActivityPanel, { title: "Components", items: progress.activity }) : void 0
|
|
22217
22344
|
}
|
|
22218
22345
|
);
|
|
22219
22346
|
}
|
|
@@ -22274,7 +22401,7 @@ var realDeps4 = {
|
|
|
22274
22401
|
var fail2 = (step, message) => ({ ok: false, step, message });
|
|
22275
22402
|
var errorMessage3 = (error) => error instanceof Error ? error.message : String(error);
|
|
22276
22403
|
async function runGeneration(input, onProgress, deps = realDeps4) {
|
|
22277
|
-
let progress = { components: null, mapTokens: "idle", mapTokensEligible: null };
|
|
22404
|
+
let progress = { components: null, activity: [], mapTokens: "idle", mapTokensEligible: null };
|
|
22278
22405
|
const update = (change) => {
|
|
22279
22406
|
progress = { ...progress, ...change };
|
|
22280
22407
|
onProgress(progress);
|
|
@@ -22302,7 +22429,10 @@ async function runGeneration(input, onProgress, deps = realDeps4) {
|
|
|
22302
22429
|
noCache: input.noCache,
|
|
22303
22430
|
existingEntitiesPath: input.existingEntitiesPath,
|
|
22304
22431
|
precomputedCachedNames: new Set(handedOverNames),
|
|
22305
|
-
onProgress: (event) => update({
|
|
22432
|
+
onProgress: (event) => update({
|
|
22433
|
+
components: applyProgressEvent2(event, progress.components, accepted.length),
|
|
22434
|
+
activity: applyActivityEvent(event, progress.activity, Date.now())
|
|
22435
|
+
})
|
|
22306
22436
|
});
|
|
22307
22437
|
} catch (error) {
|
|
22308
22438
|
return fail2("generate components", errorMessage3(error));
|
|
@@ -22373,11 +22503,17 @@ function appendGeneratePromptOverride(input) {
|
|
|
22373
22503
|
return [...input.promptOverrides, `generate=${input.generatePromptPath}`];
|
|
22374
22504
|
}
|
|
22375
22505
|
function applyProgressEvent2(event, previous, total) {
|
|
22506
|
+
const failed = previous?.failed ?? 0;
|
|
22376
22507
|
if (event.kind === "component:started") {
|
|
22377
|
-
return { done: previous?.done ?? 0, total: event.total || total, current: event.name };
|
|
22508
|
+
return { done: previous?.done ?? 0, total: event.total || total, current: event.name, failed };
|
|
22378
22509
|
}
|
|
22379
22510
|
if (event.kind === "component:completed" || event.kind === "component:failed" || event.kind === "component:cached") {
|
|
22380
|
-
return {
|
|
22511
|
+
return {
|
|
22512
|
+
done: (previous?.done ?? 0) + 1,
|
|
22513
|
+
total: event.total || total,
|
|
22514
|
+
current: event.name,
|
|
22515
|
+
failed: failed + (event.kind === "component:failed" ? 1 : 0)
|
|
22516
|
+
};
|
|
22381
22517
|
}
|
|
22382
22518
|
return previous;
|
|
22383
22519
|
}
|
|
@@ -22392,8 +22528,10 @@ function useGeneration(input) {
|
|
|
22392
22528
|
setState(void 0);
|
|
22393
22529
|
return;
|
|
22394
22530
|
}
|
|
22395
|
-
setState({ status: "running", progress: initialProgress2() });
|
|
22396
|
-
let
|
|
22531
|
+
setState({ status: "running", progress: initialProgress2(), rowMs: [] });
|
|
22532
|
+
let lastProgress2;
|
|
22533
|
+
const startedAt = Date.now();
|
|
22534
|
+
let rowMs = [];
|
|
22397
22535
|
startDebugRun({
|
|
22398
22536
|
flow: "import/generation",
|
|
22399
22537
|
step: "08-generation",
|
|
@@ -22401,12 +22539,13 @@ function useGeneration(input) {
|
|
|
22401
22539
|
inputs: generationLogInputs(input)
|
|
22402
22540
|
});
|
|
22403
22541
|
void runGeneration(input, (progress) => {
|
|
22404
|
-
|
|
22405
|
-
|
|
22542
|
+
lastProgress2 = progress;
|
|
22543
|
+
rowMs = trackFinished(rowMs, progressRows2(progress, input.agent), Date.now() - startedAt);
|
|
22544
|
+
if (current.current === input) setState({ status: "running", progress, rowMs });
|
|
22406
22545
|
}).then((result) => {
|
|
22407
22546
|
if (current.current !== input) return;
|
|
22408
22547
|
void finishDebugRun({
|
|
22409
|
-
...generationLogOutputs(result,
|
|
22548
|
+
...generationLogOutputs(result, lastProgress2),
|
|
22410
22549
|
exitMethod: result.ok ? "saved" : "discarded"
|
|
22411
22550
|
});
|
|
22412
22551
|
setState({ status: "done", result });
|
|
@@ -22446,7 +22585,7 @@ function buildFlowStart(input) {
|
|
|
22446
22585
|
}
|
|
22447
22586
|
|
|
22448
22587
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/screen.tsx
|
|
22449
|
-
import { Box as
|
|
22588
|
+
import { Box as Box46 } from "ink";
|
|
22450
22589
|
|
|
22451
22590
|
// packages/experience-design-system-types/dist/src/cdf/validate.js
|
|
22452
22591
|
import { Ajv as Ajv2 } from "ajv";
|
|
@@ -22932,7 +23071,7 @@ function skipLabel(matchedNames) {
|
|
|
22932
23071
|
}
|
|
22933
23072
|
|
|
22934
23073
|
// packages/experience-design-system-cli/src/tui/import/steps/preview-validation-error/screen.tsx
|
|
22935
|
-
import { jsx as
|
|
23074
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
22936
23075
|
function PreviewValidationErrorScreen({
|
|
22937
23076
|
errors,
|
|
22938
23077
|
missingNames,
|
|
@@ -22941,7 +23080,7 @@ function PreviewValidationErrorScreen({
|
|
|
22941
23080
|
onQuit
|
|
22942
23081
|
}) {
|
|
22943
23082
|
const matchedNames = matchedComponentNames(errors, missingNames);
|
|
22944
|
-
return /* @__PURE__ */
|
|
23083
|
+
return /* @__PURE__ */ jsx32(
|
|
22945
23084
|
GateStep,
|
|
22946
23085
|
{
|
|
22947
23086
|
intent: "error",
|
|
@@ -22977,7 +23116,7 @@ function getReviewJsonPanelValue(selected, showHiddenProps) {
|
|
|
22977
23116
|
}
|
|
22978
23117
|
|
|
22979
23118
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx
|
|
22980
|
-
import { Box as
|
|
23119
|
+
import { Box as Box39, Text as Text41 } from "ink";
|
|
22981
23120
|
|
|
22982
23121
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/graph/cycle-view.ts
|
|
22983
23122
|
function computeCycleView(components) {
|
|
@@ -23216,12 +23355,12 @@ function enumerateCycleBreaks(cycle, components) {
|
|
|
23216
23355
|
}
|
|
23217
23356
|
|
|
23218
23357
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewComponentPanel.tsx
|
|
23219
|
-
import { Box as
|
|
23358
|
+
import { Box as Box33, Text as Text35 } from "ink";
|
|
23220
23359
|
|
|
23221
23360
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx
|
|
23222
23361
|
import React13, { useEffect as useEffect17, useLayoutEffect as useLayoutEffect2, useState as useState19 } from "react";
|
|
23223
23362
|
import figures6 from "figures";
|
|
23224
|
-
import { Box as
|
|
23363
|
+
import { Box as Box27, measureElement, Text as Text28 } from "ink";
|
|
23225
23364
|
|
|
23226
23365
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/scroll-offset.ts
|
|
23227
23366
|
function computeNextScrollOffset(current, input, key, totalLines, panelHeight) {
|
|
@@ -23252,7 +23391,7 @@ function computeNextScrollOffset(current, input, key, totalLines, panelHeight) {
|
|
|
23252
23391
|
}
|
|
23253
23392
|
|
|
23254
23393
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx
|
|
23255
|
-
import { Fragment as
|
|
23394
|
+
import { Fragment as Fragment7, jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
23256
23395
|
function createCommonRowProps(selected, focusLevel, editingField, textCursor, valueCursor, cursorVisible, editingValue, valueText, width) {
|
|
23257
23396
|
return {
|
|
23258
23397
|
selected,
|
|
@@ -23390,14 +23529,14 @@ function serializeState(state2, originalJson) {
|
|
|
23390
23529
|
return JSON.stringify(entry, null, 2);
|
|
23391
23530
|
}
|
|
23392
23531
|
function Picker({ value, active }) {
|
|
23393
|
-
return /* @__PURE__ */
|
|
23394
|
-
active && /* @__PURE__ */
|
|
23395
|
-
/* @__PURE__ */
|
|
23396
|
-
active && /* @__PURE__ */
|
|
23532
|
+
return /* @__PURE__ */ jsxs27(Box27, { children: [
|
|
23533
|
+
active && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.warning, children: "\u2039" }),
|
|
23534
|
+
/* @__PURE__ */ jsx33(Text28, { color: active ? PALETTE.warning : void 0, bold: active, children: value }),
|
|
23535
|
+
active && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.warning, children: "\u203A" })
|
|
23397
23536
|
] });
|
|
23398
23537
|
}
|
|
23399
23538
|
function Toggle({ value, active }) {
|
|
23400
|
-
return /* @__PURE__ */
|
|
23539
|
+
return /* @__PURE__ */ jsx33(Box27, { children: /* @__PURE__ */ jsx33(Text28, { color: active ? PALETTE.warning : value ? PALETTE.success : PALETTE.border, children: value ? "[\u2713]" : "[ ]" }) });
|
|
23401
23540
|
}
|
|
23402
23541
|
function InlinePropField({
|
|
23403
23542
|
label,
|
|
@@ -23406,8 +23545,8 @@ function InlinePropField({
|
|
|
23406
23545
|
flexible = false,
|
|
23407
23546
|
width
|
|
23408
23547
|
}) {
|
|
23409
|
-
return /* @__PURE__ */
|
|
23410
|
-
/* @__PURE__ */
|
|
23548
|
+
return /* @__PURE__ */ jsxs27(Box27, { width, gap: 1, flexShrink: flexible ? 1 : 0, flexGrow: flexible ? 1 : 0, flexWrap: "wrap", children: [
|
|
23549
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, wrap: "truncate-end", children: [
|
|
23411
23550
|
focused ? "\u203A " : " ",
|
|
23412
23551
|
label
|
|
23413
23552
|
] }),
|
|
@@ -23420,19 +23559,19 @@ function RequiredField({
|
|
|
23420
23559
|
editingField,
|
|
23421
23560
|
activeField
|
|
23422
23561
|
}) {
|
|
23423
|
-
return /* @__PURE__ */
|
|
23562
|
+
return /* @__PURE__ */ jsx33(InlinePropField, { label: "req:", focused, children: /* @__PURE__ */ jsx33(Toggle, { value, active: editingField && activeField === "required" }) });
|
|
23424
23563
|
}
|
|
23425
23564
|
function DefaultValueRow({
|
|
23426
23565
|
display,
|
|
23427
23566
|
active,
|
|
23428
23567
|
focused
|
|
23429
23568
|
}) {
|
|
23430
|
-
return /* @__PURE__ */
|
|
23431
|
-
/* @__PURE__ */
|
|
23569
|
+
return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", flexShrink: 0, children: [
|
|
23570
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
23432
23571
|
focused ? "\u203A " : " ",
|
|
23433
23572
|
"default:"
|
|
23434
23573
|
] }),
|
|
23435
|
-
active ? /* @__PURE__ */
|
|
23574
|
+
active ? /* @__PURE__ */ jsx33(Picker, { value: display, active: true }) : /* @__PURE__ */ jsx33(Text28, { wrap: "wrap", children: display })
|
|
23436
23575
|
] });
|
|
23437
23576
|
}
|
|
23438
23577
|
function RowLabel({
|
|
@@ -23440,8 +23579,8 @@ function RowLabel({
|
|
|
23440
23579
|
selected,
|
|
23441
23580
|
trailing = true
|
|
23442
23581
|
}) {
|
|
23443
|
-
return /* @__PURE__ */
|
|
23444
|
-
|
|
23582
|
+
return /* @__PURE__ */ jsxs27(
|
|
23583
|
+
Text28,
|
|
23445
23584
|
{
|
|
23446
23585
|
color: selected ? PALETTE.onAccent : PALETTE.accent,
|
|
23447
23586
|
bold: selected,
|
|
@@ -23460,10 +23599,10 @@ function ValueInputRow({
|
|
|
23460
23599
|
valueText,
|
|
23461
23600
|
cursorVisible
|
|
23462
23601
|
}) {
|
|
23463
|
-
return /* @__PURE__ */
|
|
23464
|
-
/* @__PURE__ */
|
|
23465
|
-
/* @__PURE__ */
|
|
23466
|
-
/* @__PURE__ */
|
|
23602
|
+
return /* @__PURE__ */ jsxs27(Box27, { paddingLeft: 2, children: [
|
|
23603
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.accent, children: mode === "edit" ? "\u270E " : "+ " }),
|
|
23604
|
+
/* @__PURE__ */ jsx33(Text28, { children: valueText }),
|
|
23605
|
+
/* @__PURE__ */ jsx33(Text28, { inverse: cursorVisible, children: " " })
|
|
23467
23606
|
] });
|
|
23468
23607
|
}
|
|
23469
23608
|
function EditableListItem({
|
|
@@ -23476,9 +23615,9 @@ function EditableListItem({
|
|
|
23476
23615
|
}) {
|
|
23477
23616
|
const isBeingEdited = editingValue?.mode === "edit" && editingValue.index === index;
|
|
23478
23617
|
if (isBeingEdited) {
|
|
23479
|
-
return /* @__PURE__ */
|
|
23618
|
+
return /* @__PURE__ */ jsx33(ValueInputRow, { mode: "edit", valueText, cursorVisible });
|
|
23480
23619
|
}
|
|
23481
|
-
return /* @__PURE__ */
|
|
23620
|
+
return /* @__PURE__ */ jsx33(Box27, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx33(Text28, { color: active ? PALETTE.accent : void 0, children: active ? `${figures6.pointer} ${value}` : ` ${value}` }) });
|
|
23482
23621
|
}
|
|
23483
23622
|
function EditableValueList({
|
|
23484
23623
|
values,
|
|
@@ -23491,9 +23630,9 @@ function EditableValueList({
|
|
|
23491
23630
|
emptyPaddingLeft,
|
|
23492
23631
|
showAddInput
|
|
23493
23632
|
}) {
|
|
23494
|
-
return /* @__PURE__ */
|
|
23495
|
-
values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */
|
|
23496
|
-
values.map((value, index) => /* @__PURE__ */
|
|
23633
|
+
return /* @__PURE__ */ jsxs27(Fragment7, { children: [
|
|
23634
|
+
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 }) })),
|
|
23635
|
+
values.map((value, index) => /* @__PURE__ */ jsx33(
|
|
23497
23636
|
EditableListItem,
|
|
23498
23637
|
{
|
|
23499
23638
|
value,
|
|
@@ -23505,7 +23644,7 @@ function EditableValueList({
|
|
|
23505
23644
|
},
|
|
23506
23645
|
index
|
|
23507
23646
|
)),
|
|
23508
|
-
showAddInput && editingValue?.mode === "add" && /* @__PURE__ */
|
|
23647
|
+
showAddInput && editingValue?.mode === "add" && /* @__PURE__ */ jsx33(ValueInputRow, { mode: "add", valueText, cursorVisible })
|
|
23509
23648
|
] });
|
|
23510
23649
|
}
|
|
23511
23650
|
function DefaultSubRow({
|
|
@@ -23517,51 +23656,51 @@ function DefaultSubRow({
|
|
|
23517
23656
|
}) {
|
|
23518
23657
|
const cursor = cursorVisible ? "\u2588" : " ";
|
|
23519
23658
|
if (prop.type === "richtext" || prop.type === "media" || prop.type === "link") {
|
|
23520
|
-
return /* @__PURE__ */
|
|
23521
|
-
/* @__PURE__ */
|
|
23659
|
+
return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexShrink: 0, children: [
|
|
23660
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
23522
23661
|
focused ? "\u203A " : " ",
|
|
23523
23662
|
"default:"
|
|
23524
23663
|
] }),
|
|
23525
|
-
/* @__PURE__ */
|
|
23664
|
+
/* @__PURE__ */ jsx33(Text28, { color: focused ? void 0 : PALETTE.muted, children: "(not applicable)" })
|
|
23526
23665
|
] });
|
|
23527
23666
|
}
|
|
23528
23667
|
if (prop.type === "boolean") {
|
|
23529
23668
|
const display = prop.default === true ? "true" : prop.default === false ? "false" : "(unset)";
|
|
23530
|
-
return /* @__PURE__ */
|
|
23669
|
+
return /* @__PURE__ */ jsx33(DefaultValueRow, { display, active, focused });
|
|
23531
23670
|
}
|
|
23532
23671
|
if (prop.type === "enum") {
|
|
23533
23672
|
if (prop.values.length === 0) {
|
|
23534
|
-
return /* @__PURE__ */
|
|
23535
|
-
/* @__PURE__ */
|
|
23673
|
+
return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexShrink: 0, children: [
|
|
23674
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
23536
23675
|
focused ? "\u203A " : " ",
|
|
23537
23676
|
"default:"
|
|
23538
23677
|
] }),
|
|
23539
|
-
/* @__PURE__ */
|
|
23678
|
+
/* @__PURE__ */ jsx33(Text28, { color: focused ? void 0 : PALETTE.muted, children: "(no values defined)" })
|
|
23540
23679
|
] });
|
|
23541
23680
|
}
|
|
23542
23681
|
const display = typeof prop.default === "string" && prop.default !== "" ? prop.default : "(unset)";
|
|
23543
|
-
return /* @__PURE__ */
|
|
23682
|
+
return /* @__PURE__ */ jsx33(DefaultValueRow, { display, active, focused });
|
|
23544
23683
|
}
|
|
23545
23684
|
const value = typeof prop.default === "string" ? prop.default : "";
|
|
23546
23685
|
if (active) {
|
|
23547
|
-
return /* @__PURE__ */
|
|
23548
|
-
/* @__PURE__ */
|
|
23686
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "row", flexShrink: 0, children: [
|
|
23687
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
23549
23688
|
focused ? "\u203A " : " ",
|
|
23550
23689
|
"default:"
|
|
23551
23690
|
] }),
|
|
23552
|
-
/* @__PURE__ */
|
|
23553
|
-
/* @__PURE__ */
|
|
23554
|
-
/* @__PURE__ */
|
|
23555
|
-
/* @__PURE__ */
|
|
23691
|
+
/* @__PURE__ */ jsxs27(Box27, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
23692
|
+
/* @__PURE__ */ jsx33(Text28, { children: value.slice(0, textCursor) }),
|
|
23693
|
+
/* @__PURE__ */ jsx33(Text28, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
|
|
23694
|
+
/* @__PURE__ */ jsx33(Text28, { children: value.slice(textCursor + 1) })
|
|
23556
23695
|
] })
|
|
23557
23696
|
] });
|
|
23558
23697
|
}
|
|
23559
|
-
return /* @__PURE__ */
|
|
23560
|
-
/* @__PURE__ */
|
|
23698
|
+
return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexShrink: 0, children: [
|
|
23699
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
23561
23700
|
focused ? "\u203A " : " ",
|
|
23562
23701
|
"default:"
|
|
23563
23702
|
] }),
|
|
23564
|
-
/* @__PURE__ */
|
|
23703
|
+
/* @__PURE__ */ jsx33(Text28, { color: focused || value ? void 0 : PALETTE.muted, children: value || "(none)" })
|
|
23565
23704
|
] });
|
|
23566
23705
|
}
|
|
23567
23706
|
function DescriptionField({
|
|
@@ -23576,20 +23715,20 @@ function DescriptionField({
|
|
|
23576
23715
|
paddingLeft = 2
|
|
23577
23716
|
}) {
|
|
23578
23717
|
if (compact) {
|
|
23579
|
-
return /* @__PURE__ */
|
|
23580
|
-
/* @__PURE__ */
|
|
23718
|
+
return /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
23719
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
23581
23720
|
focused ? "\u203A " : " ",
|
|
23582
23721
|
label
|
|
23583
23722
|
] }),
|
|
23584
|
-
/* @__PURE__ */
|
|
23723
|
+
/* @__PURE__ */ jsx33(Text28, { wrap: "truncate-end", color: value ? void 0 : PALETTE.muted, children: value || "\u2014" })
|
|
23585
23724
|
] });
|
|
23586
23725
|
}
|
|
23587
|
-
return /* @__PURE__ */
|
|
23588
|
-
/* @__PURE__ */
|
|
23726
|
+
return /* @__PURE__ */ jsxs27(Box27, { paddingLeft, flexDirection: "column", width, flexShrink: 0, children: [
|
|
23727
|
+
/* @__PURE__ */ jsxs27(Text28, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
23589
23728
|
focused ? "\u203A " : " ",
|
|
23590
23729
|
label
|
|
23591
23730
|
] }),
|
|
23592
|
-
editing ? /* @__PURE__ */
|
|
23731
|
+
editing ? /* @__PURE__ */ jsx33(EditableDescription, { cursorVisible, value, textCursor }) : /* @__PURE__ */ jsx33(Text28, { wrap: "wrap", children: value || "\u2014" })
|
|
23593
23732
|
] });
|
|
23594
23733
|
}
|
|
23595
23734
|
function EditableDescription({
|
|
@@ -23597,9 +23736,9 @@ function EditableDescription({
|
|
|
23597
23736
|
value,
|
|
23598
23737
|
textCursor
|
|
23599
23738
|
}) {
|
|
23600
|
-
return /* @__PURE__ */
|
|
23739
|
+
return /* @__PURE__ */ jsxs27(Text28, { wrap: "wrap", children: [
|
|
23601
23740
|
value.slice(0, textCursor),
|
|
23602
|
-
/* @__PURE__ */
|
|
23741
|
+
/* @__PURE__ */ jsx33(Text28, { inverse: cursorVisible, children: value[textCursor] ?? " " }),
|
|
23603
23742
|
value.slice(textCursor + 1)
|
|
23604
23743
|
] });
|
|
23605
23744
|
}
|
|
@@ -23620,9 +23759,9 @@ function PropRow({
|
|
|
23620
23759
|
}) {
|
|
23621
23760
|
const descFocused = activeField === "description";
|
|
23622
23761
|
const descActive = editingField && descFocused;
|
|
23623
|
-
return /* @__PURE__ */
|
|
23624
|
-
/* @__PURE__ */
|
|
23625
|
-
/* @__PURE__ */
|
|
23762
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
23763
|
+
/* @__PURE__ */ jsx33(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx33(RowLabel, { name: prop.name, selected }) }),
|
|
23764
|
+
/* @__PURE__ */ jsx33(
|
|
23626
23765
|
DescriptionField,
|
|
23627
23766
|
{
|
|
23628
23767
|
value: prop.description,
|
|
@@ -23635,8 +23774,8 @@ function PropRow({
|
|
|
23635
23774
|
paddingLeft: 0
|
|
23636
23775
|
}
|
|
23637
23776
|
),
|
|
23638
|
-
/* @__PURE__ */
|
|
23639
|
-
/* @__PURE__ */
|
|
23777
|
+
/* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
23778
|
+
/* @__PURE__ */ jsx33(
|
|
23640
23779
|
RequiredField,
|
|
23641
23780
|
{
|
|
23642
23781
|
value: prop.required,
|
|
@@ -23645,21 +23784,21 @@ function PropRow({
|
|
|
23645
23784
|
activeField
|
|
23646
23785
|
}
|
|
23647
23786
|
),
|
|
23648
|
-
/* @__PURE__ */
|
|
23787
|
+
/* @__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 }) })
|
|
23649
23788
|
] }),
|
|
23650
|
-
prop.type === "token" && /* @__PURE__ */
|
|
23651
|
-
prop.type === "enum" && /* @__PURE__ */
|
|
23652
|
-
/* @__PURE__ */
|
|
23789
|
+
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" }) }),
|
|
23790
|
+
prop.type === "enum" && /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
23791
|
+
/* @__PURE__ */ jsxs27(Text28, { color: activeField === "values" ? PALETTE.warning : PALETTE.muted, bold: activeField === "values", children: [
|
|
23653
23792
|
activeField === "values" ? "\u203A " : " ",
|
|
23654
23793
|
"values:"
|
|
23655
23794
|
] }),
|
|
23656
|
-
/* @__PURE__ */
|
|
23795
|
+
/* @__PURE__ */ jsxs27(Text28, { wrap: "wrap", children: [
|
|
23657
23796
|
"[",
|
|
23658
23797
|
prop.values.join(", "),
|
|
23659
23798
|
"]"
|
|
23660
23799
|
] })
|
|
23661
23800
|
] }),
|
|
23662
|
-
/* @__PURE__ */
|
|
23801
|
+
/* @__PURE__ */ jsx33(
|
|
23663
23802
|
DefaultSubRow,
|
|
23664
23803
|
{
|
|
23665
23804
|
prop,
|
|
@@ -23669,13 +23808,13 @@ function PropRow({
|
|
|
23669
23808
|
cursorVisible
|
|
23670
23809
|
}
|
|
23671
23810
|
),
|
|
23672
|
-
prop.type === "token" && prop.category === "design" && /* @__PURE__ */
|
|
23673
|
-
/* @__PURE__ */
|
|
23811
|
+
prop.type === "token" && prop.category === "design" && /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
23812
|
+
/* @__PURE__ */ jsxs27(Text28, { color: activeField === "allowed" ? PALETTE.warning : PALETTE.muted, bold: activeField === "allowed", children: [
|
|
23674
23813
|
activeField === "allowed" ? "\u203A " : " ",
|
|
23675
23814
|
"allowed:"
|
|
23676
23815
|
] }),
|
|
23677
|
-
editingField && activeField === "allowed" ? /* @__PURE__ */
|
|
23678
|
-
|
|
23816
|
+
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(
|
|
23817
|
+
Text28,
|
|
23679
23818
|
{
|
|
23680
23819
|
color: activeField !== "allowed" && prop.allowed.length === 0 ? PALETTE.muted : void 0,
|
|
23681
23820
|
wrap: "wrap",
|
|
@@ -23683,17 +23822,17 @@ function PropRow({
|
|
|
23683
23822
|
}
|
|
23684
23823
|
)
|
|
23685
23824
|
] }),
|
|
23686
|
-
selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */
|
|
23825
|
+
selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx33(Box27, { paddingLeft: 2, children: /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: (() => {
|
|
23687
23826
|
const max = Math.max(8, width - 8);
|
|
23688
23827
|
const text = `~ ${rationale}`;
|
|
23689
23828
|
return text.length > max ? text.slice(0, max - 1) + "\u2026" : text;
|
|
23690
23829
|
})() }) }, rowKey ? `rationale-${rowKey}` : void 0),
|
|
23691
|
-
selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */
|
|
23692
|
-
/* @__PURE__ */
|
|
23693
|
-
/* @__PURE__ */
|
|
23694
|
-
activeField === "values" && /* @__PURE__ */
|
|
23830
|
+
selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs27(Box27, { paddingLeft: 2, flexDirection: "column", children: [
|
|
23831
|
+
/* @__PURE__ */ jsxs27(Box27, { children: [
|
|
23832
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "values:" }),
|
|
23833
|
+
activeField === "values" && /* @__PURE__ */ jsx33(Text28, { children: " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
|
|
23695
23834
|
] }),
|
|
23696
|
-
/* @__PURE__ */
|
|
23835
|
+
/* @__PURE__ */ jsx33(
|
|
23697
23836
|
EditableValueList,
|
|
23698
23837
|
{
|
|
23699
23838
|
values: prop.values,
|
|
@@ -23723,9 +23862,9 @@ function SlotRow({
|
|
|
23723
23862
|
pickerCandidates,
|
|
23724
23863
|
pickerCursor
|
|
23725
23864
|
}) {
|
|
23726
|
-
return /* @__PURE__ */
|
|
23727
|
-
/* @__PURE__ */
|
|
23728
|
-
/* @__PURE__ */
|
|
23865
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
23866
|
+
/* @__PURE__ */ jsx33(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx33(RowLabel, { name: slot.name, selected, trailing: false }) }),
|
|
23867
|
+
/* @__PURE__ */ jsx33(
|
|
23729
23868
|
DescriptionField,
|
|
23730
23869
|
{
|
|
23731
23870
|
value: slot.description,
|
|
@@ -23738,7 +23877,7 @@ function SlotRow({
|
|
|
23738
23877
|
paddingLeft: 0
|
|
23739
23878
|
}
|
|
23740
23879
|
),
|
|
23741
|
-
/* @__PURE__ */
|
|
23880
|
+
/* @__PURE__ */ jsx33(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx33(
|
|
23742
23881
|
RequiredField,
|
|
23743
23882
|
{
|
|
23744
23883
|
value: slot.required,
|
|
@@ -23747,9 +23886,9 @@ function SlotRow({
|
|
|
23747
23886
|
activeField
|
|
23748
23887
|
}
|
|
23749
23888
|
) }),
|
|
23750
|
-
!(selected && editingField && activeField === "allowedComponents") && /* @__PURE__ */
|
|
23751
|
-
/* @__PURE__ */
|
|
23752
|
-
|
|
23889
|
+
!(selected && editingField && activeField === "allowedComponents") && /* @__PURE__ */ jsxs27(Box27, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
23890
|
+
/* @__PURE__ */ jsxs27(
|
|
23891
|
+
Text28,
|
|
23753
23892
|
{
|
|
23754
23893
|
color: activeField === "allowedComponents" ? PALETTE.warning : PALETTE.muted,
|
|
23755
23894
|
bold: activeField === "allowedComponents",
|
|
@@ -23759,12 +23898,12 @@ function SlotRow({
|
|
|
23759
23898
|
]
|
|
23760
23899
|
}
|
|
23761
23900
|
),
|
|
23762
|
-
slot.allowedComponents.length === 0 ? /* @__PURE__ */
|
|
23901
|
+
slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "(any)" }) : /* @__PURE__ */ jsx33(Text28, { wrap: "wrap", children: slot.allowedComponents.join(", ") })
|
|
23763
23902
|
] }),
|
|
23764
|
-
selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */
|
|
23765
|
-
/* @__PURE__ */
|
|
23766
|
-
/* @__PURE__ */
|
|
23767
|
-
|
|
23903
|
+
selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", children: [
|
|
23904
|
+
/* @__PURE__ */ jsxs27(Box27, { children: [
|
|
23905
|
+
/* @__PURE__ */ jsxs27(
|
|
23906
|
+
Text28,
|
|
23768
23907
|
{
|
|
23769
23908
|
color: activeField === "allowedComponents" ? PALETTE.warning : PALETTE.muted,
|
|
23770
23909
|
bold: activeField === "allowedComponents",
|
|
@@ -23774,9 +23913,9 @@ function SlotRow({
|
|
|
23774
23913
|
]
|
|
23775
23914
|
}
|
|
23776
23915
|
),
|
|
23777
|
-
editingField && activeField === "allowedComponents" && /* @__PURE__ */
|
|
23916
|
+
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" })
|
|
23778
23917
|
] }),
|
|
23779
|
-
/* @__PURE__ */
|
|
23918
|
+
/* @__PURE__ */ jsx33(
|
|
23780
23919
|
EditableValueList,
|
|
23781
23920
|
{
|
|
23782
23921
|
values: slot.allowedComponents,
|
|
@@ -23790,21 +23929,21 @@ function SlotRow({
|
|
|
23790
23929
|
showAddInput: editingField && activeField === "allowedComponents"
|
|
23791
23930
|
}
|
|
23792
23931
|
),
|
|
23793
|
-
editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */
|
|
23932
|
+
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)" }) : (() => {
|
|
23794
23933
|
const filtered = valueText.length === 0 ? pickerCandidates : pickerCandidates.filter((n) => n.toLowerCase().includes(valueText.toLowerCase()));
|
|
23795
23934
|
if (filtered.length === 0) {
|
|
23796
|
-
return /* @__PURE__ */
|
|
23935
|
+
return /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "(no candidates match \u2014 Enter to add as free text)" });
|
|
23797
23936
|
}
|
|
23798
23937
|
const cursor = pickerCursor % filtered.length;
|
|
23799
23938
|
const MAX_VISIBLE = 5;
|
|
23800
23939
|
const start = Math.max(0, Math.min(filtered.length - MAX_VISIBLE, cursor - 2));
|
|
23801
23940
|
const slice = filtered.slice(start, start + MAX_VISIBLE);
|
|
23802
|
-
return /* @__PURE__ */
|
|
23803
|
-
/* @__PURE__ */
|
|
23941
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", children: [
|
|
23942
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
|
|
23804
23943
|
slice.map((name, i) => {
|
|
23805
23944
|
const absIdx = start + i;
|
|
23806
23945
|
const isCursor = absIdx === cursor;
|
|
23807
|
-
return /* @__PURE__ */
|
|
23946
|
+
return /* @__PURE__ */ jsx33(Text28, { color: isCursor ? PALETTE.accent : PALETTE.muted, children: isCursor ? ` ${figures6.pointer} ${name}` : ` ${name}` }, name);
|
|
23808
23947
|
})
|
|
23809
23948
|
] });
|
|
23810
23949
|
})() })
|
|
@@ -24684,18 +24823,18 @@ function FieldEditor({
|
|
|
24684
24823
|
});
|
|
24685
24824
|
const innerWidth = Math.max(1, width - 2);
|
|
24686
24825
|
if (parseErr) {
|
|
24687
|
-
return /* @__PURE__ */
|
|
24688
|
-
/* @__PURE__ */
|
|
24689
|
-
/* @__PURE__ */
|
|
24690
|
-
/* @__PURE__ */
|
|
24826
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
|
|
24827
|
+
/* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
|
|
24828
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.error, children: parseErr }),
|
|
24829
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "Cannot display structured editor. Fix the JSON first." })
|
|
24691
24830
|
] });
|
|
24692
24831
|
}
|
|
24693
24832
|
if (props.length === 0 && slots.length === 0) {
|
|
24694
|
-
return /* @__PURE__ */
|
|
24695
|
-
/* @__PURE__ */
|
|
24696
|
-
/* @__PURE__ */
|
|
24697
|
-
/* @__PURE__ */
|
|
24698
|
-
/* @__PURE__ */
|
|
24833
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
|
|
24834
|
+
/* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
|
|
24835
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
|
|
24836
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "You can add fields manually below or reject this component." }),
|
|
24837
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "Enter to save \xB7 Esc to discard" })
|
|
24699
24838
|
] });
|
|
24700
24839
|
}
|
|
24701
24840
|
const hasEmptyProperties = props.length === 0 && slots.length === 0;
|
|
@@ -24828,12 +24967,12 @@ function FieldEditor({
|
|
|
24828
24967
|
const renderRow = (row, index) => {
|
|
24829
24968
|
const key = rowKey(row, index);
|
|
24830
24969
|
if (row.kind === "header") {
|
|
24831
|
-
return /* @__PURE__ */
|
|
24970
|
+
return /* @__PURE__ */ jsx33(Box27, { flexDirection: "column", paddingTop: 1, children: /* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.success, children: row.label }) }, key);
|
|
24832
24971
|
}
|
|
24833
24972
|
if (row.kind === "component-description") {
|
|
24834
24973
|
const isSelected2 = inComponentDesc && active;
|
|
24835
24974
|
const isEditing = isSelected2 && focusLevel === "field" && editingField && activeField === "description";
|
|
24836
|
-
return /* @__PURE__ */
|
|
24975
|
+
return /* @__PURE__ */ jsx33(
|
|
24837
24976
|
DescriptionField,
|
|
24838
24977
|
{
|
|
24839
24978
|
value: editorState.componentDescription,
|
|
@@ -24864,7 +25003,7 @@ function FieldEditor({
|
|
|
24864
25003
|
valueText,
|
|
24865
25004
|
innerWidth
|
|
24866
25005
|
);
|
|
24867
|
-
return /* @__PURE__ */
|
|
25006
|
+
return /* @__PURE__ */ jsx33(
|
|
24868
25007
|
PropRow,
|
|
24869
25008
|
{
|
|
24870
25009
|
prop: p,
|
|
@@ -24891,7 +25030,7 @@ function FieldEditor({
|
|
|
24891
25030
|
valueText,
|
|
24892
25031
|
innerWidth
|
|
24893
25032
|
);
|
|
24894
|
-
return /* @__PURE__ */
|
|
25033
|
+
return /* @__PURE__ */ jsx33(
|
|
24895
25034
|
SlotRow,
|
|
24896
25035
|
{
|
|
24897
25036
|
slot: s,
|
|
@@ -24903,7 +25042,7 @@ function FieldEditor({
|
|
|
24903
25042
|
key
|
|
24904
25043
|
);
|
|
24905
25044
|
};
|
|
24906
|
-
return /* @__PURE__ */
|
|
25045
|
+
return /* @__PURE__ */ jsxs27(
|
|
24907
25046
|
FixedPanel,
|
|
24908
25047
|
{
|
|
24909
25048
|
width,
|
|
@@ -24912,9 +25051,9 @@ function FieldEditor({
|
|
|
24912
25051
|
borderStyle: "single",
|
|
24913
25052
|
borderColor: hasEmptyProperties ? PALETTE.warning : active ? PALETTE.accent : PALETTE.border,
|
|
24914
25053
|
children: [
|
|
24915
|
-
hasEmptyProperties && /* @__PURE__ */
|
|
25054
|
+
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." }),
|
|
24916
25055
|
header,
|
|
24917
|
-
/* @__PURE__ */
|
|
25056
|
+
/* @__PURE__ */ jsx33(Box27, { flexDirection: "column", width: innerWidth, flexShrink: 0, children: focusLevel === "field" && !inComponentDesc && currentProp ? /* @__PURE__ */ jsx33(
|
|
24918
25057
|
PropRow,
|
|
24919
25058
|
{
|
|
24920
25059
|
prop: currentProp,
|
|
@@ -24930,7 +25069,7 @@ function FieldEditor({
|
|
|
24930
25069
|
rationale: metadata?.props?.[currentProp.name]?.rationale ?? null,
|
|
24931
25070
|
showRationale: showInlineRationales
|
|
24932
25071
|
}
|
|
24933
|
-
) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */
|
|
25072
|
+
) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */ jsx33(
|
|
24934
25073
|
SlotRow,
|
|
24935
25074
|
{
|
|
24936
25075
|
slot: currentSlot,
|
|
@@ -24949,8 +25088,8 @@ function FieldEditor({
|
|
|
24949
25088
|
) : visibleRowSlice.map((row, index) => {
|
|
24950
25089
|
const absoluteIndex = scrollStart + index;
|
|
24951
25090
|
const key = rowKey(row, absoluteIndex);
|
|
24952
|
-
return /* @__PURE__ */
|
|
24953
|
-
|
|
25091
|
+
return /* @__PURE__ */ jsx33(
|
|
25092
|
+
Box27,
|
|
24954
25093
|
{
|
|
24955
25094
|
ref: (node) => {
|
|
24956
25095
|
if (node) rowMeasureRefs.current.set(key, node);
|
|
@@ -24963,7 +25102,7 @@ function FieldEditor({
|
|
|
24963
25102
|
`visible-${key}`
|
|
24964
25103
|
);
|
|
24965
25104
|
}) }),
|
|
24966
|
-
categoryBelow && /* @__PURE__ */
|
|
25105
|
+
categoryBelow && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.success, bold: true, children: `(${categoryBelow} below)` }),
|
|
24967
25106
|
sourceOpen && !onToggleSourceExternal && (() => {
|
|
24968
25107
|
const propMeta = !inSlots && !inComponentDesc && currentProp ? metadata?.props?.[currentProp.name] : void 0;
|
|
24969
25108
|
const start = propMeta?.sourceStartLine ?? null;
|
|
@@ -24972,60 +25111,60 @@ function FieldEditor({
|
|
|
24972
25111
|
const src = metadata?.componentSource ?? null;
|
|
24973
25112
|
const headerPath = path5 ?? "<unknown source path>";
|
|
24974
25113
|
if (!start || !end2 || !src) {
|
|
24975
|
-
return /* @__PURE__ */
|
|
24976
|
-
/* @__PURE__ */
|
|
24977
|
-
/* @__PURE__ */
|
|
24978
|
-
/* @__PURE__ */
|
|
25114
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
|
|
25115
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, bold: true, children: `source: ${headerPath}` }),
|
|
25116
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "(no source location captured for this prop)" }),
|
|
25117
|
+
/* @__PURE__ */ jsx33(Text28, { children: "[s] close" })
|
|
24979
25118
|
] });
|
|
24980
25119
|
}
|
|
24981
25120
|
const lines = src.split("\n").slice(Math.max(0, start - 1), end2);
|
|
24982
|
-
return /* @__PURE__ */
|
|
24983
|
-
/* @__PURE__ */
|
|
24984
|
-
lines.map((ln, i) => /* @__PURE__ */
|
|
24985
|
-
/* @__PURE__ */
|
|
25121
|
+
return /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
|
|
25122
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, bold: true, children: `${headerPath}: lines ${start}\u2013${end2}` }),
|
|
25123
|
+
lines.map((ln, i) => /* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: ln }, `source-line-${i}`)),
|
|
25124
|
+
/* @__PURE__ */ jsx33(Text28, { children: "[s] close \xB7 [Esc] close" })
|
|
24986
25125
|
] });
|
|
24987
25126
|
})(),
|
|
24988
|
-
showHelp && /* @__PURE__ */
|
|
24989
|
-
/* @__PURE__ */
|
|
24990
|
-
/* @__PURE__ */
|
|
24991
|
-
/* @__PURE__ */
|
|
24992
|
-
/* @__PURE__ */
|
|
24993
|
-
/* @__PURE__ */
|
|
24994
|
-
/* @__PURE__ */
|
|
24995
|
-
/* @__PURE__ */
|
|
24996
|
-
/* @__PURE__ */
|
|
24997
|
-
/* @__PURE__ */
|
|
24998
|
-
/* @__PURE__ */
|
|
24999
|
-
/* @__PURE__ */
|
|
25000
|
-
/* @__PURE__ */
|
|
25001
|
-
/* @__PURE__ */
|
|
25002
|
-
/* @__PURE__ */
|
|
25003
|
-
/* @__PURE__ */
|
|
25004
|
-
/* @__PURE__ */
|
|
25005
|
-
/* @__PURE__ */
|
|
25006
|
-
/* @__PURE__ */
|
|
25007
|
-
/* @__PURE__ */
|
|
25008
|
-
/* @__PURE__ */
|
|
25009
|
-
/* @__PURE__ */
|
|
25010
|
-
/* @__PURE__ */
|
|
25011
|
-
/* @__PURE__ */
|
|
25012
|
-
/* @__PURE__ */
|
|
25013
|
-
/* @__PURE__ */
|
|
25014
|
-
/* @__PURE__ */
|
|
25015
|
-
/* @__PURE__ */
|
|
25127
|
+
showHelp && /* @__PURE__ */ jsxs27(Box27, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.accent, paddingX: 1, children: [
|
|
25128
|
+
/* @__PURE__ */ jsx33(Text28, { bold: true, color: PALETTE.accent, children: "Keybindings" }),
|
|
25129
|
+
/* @__PURE__ */ jsx33(Text28, { children: " " }),
|
|
25130
|
+
/* @__PURE__ */ jsx33(Text28, { bold: true, children: "Row navigation" }),
|
|
25131
|
+
/* @__PURE__ */ jsx33(Text28, { children: " \u2191/\u2193 move between rows" }),
|
|
25132
|
+
/* @__PURE__ */ jsx33(Text28, { children: " Enter edit fields on the current row" }),
|
|
25133
|
+
/* @__PURE__ */ jsx33(Text28, { children: " d delete the current prop or slot (asks to confirm)" }),
|
|
25134
|
+
/* @__PURE__ */ jsx33(Text28, { children: " Esc exit the panel" }),
|
|
25135
|
+
/* @__PURE__ */ jsx33(Text28, { children: " " }),
|
|
25136
|
+
/* @__PURE__ */ jsx33(Text28, { bold: true, children: "Field editing" }),
|
|
25137
|
+
/* @__PURE__ */ jsx33(Text28, { children: " \u2191/\u2193/\u2190\u2192 cycle through fields" }),
|
|
25138
|
+
/* @__PURE__ */ jsx33(Text28, { children: " \u2190/\u2192 cycle picker values \xB7 move cursor in text inputs" }),
|
|
25139
|
+
/* @__PURE__ */ jsx33(Text28, { children: " Space/Enter toggle required" }),
|
|
25140
|
+
/* @__PURE__ */ jsx33(Text28, { children: " Type edit description / string default" }),
|
|
25141
|
+
/* @__PURE__ */ jsx33(Text28, { children: " Esc exit field-edit back to the row" }),
|
|
25142
|
+
/* @__PURE__ */ jsx33(Text28, { children: " " }),
|
|
25143
|
+
/* @__PURE__ */ jsx33(Text28, { bold: true, children: "Values / allowedComponents" }),
|
|
25144
|
+
/* @__PURE__ */ jsx33(Text28, { children: " a / e / r add \xB7 edit \xB7 remove" }),
|
|
25145
|
+
/* @__PURE__ */ jsx33(Text28, { children: " \u2191\u2193 navigate the list" }),
|
|
25146
|
+
/* @__PURE__ */ jsx33(Text28, { children: " K / J reorder up \xB7 down" }),
|
|
25147
|
+
/* @__PURE__ */ jsx33(Text28, { children: " " }),
|
|
25148
|
+
/* @__PURE__ */ jsx33(Text28, { bold: true, children: "Panels" }),
|
|
25149
|
+
/* @__PURE__ */ jsx33(Text28, { children: " s toggle source-view for the current prop" }),
|
|
25150
|
+
/* @__PURE__ */ jsx33(Text28, { children: " " + propRationaleKey.padEnd(16) + " toggle prop rationale panel" }),
|
|
25151
|
+
/* @__PURE__ */ jsx33(Text28, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
|
|
25152
|
+
/* @__PURE__ */ jsx33(Text28, { children: " ? toggle this overlay" }),
|
|
25153
|
+
/* @__PURE__ */ jsx33(Text28, { children: " " }),
|
|
25154
|
+
/* @__PURE__ */ jsx33(Text28, { color: PALETTE.muted, children: "press ? or Esc to close" })
|
|
25016
25155
|
] }),
|
|
25017
|
-
validationError && /* @__PURE__ */
|
|
25018
|
-
/* @__PURE__ */
|
|
25156
|
+
validationError && /* @__PURE__ */ jsx33(Text28, { color: PALETTE.error, children: "\u2717 " + validationError }),
|
|
25157
|
+
/* @__PURE__ */ jsx33(Box27, { paddingTop: 1, children: /* @__PURE__ */ jsx33(Text28, { color: pendingDelete ? PALETTE.text : PALETTE.muted, children: modeLabel }) })
|
|
25019
25158
|
]
|
|
25020
25159
|
}
|
|
25021
25160
|
);
|
|
25022
25161
|
}
|
|
25023
25162
|
|
|
25024
25163
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx
|
|
25025
|
-
import { Text as
|
|
25164
|
+
import { Text as Text34 } from "ink";
|
|
25026
25165
|
|
|
25027
25166
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ComponentRationalePanel.tsx
|
|
25028
|
-
import { Box as
|
|
25167
|
+
import { Box as Box29, Text as Text30 } from "ink";
|
|
25029
25168
|
|
|
25030
25169
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/wrap-text.ts
|
|
25031
25170
|
function appendLongWordChunks(word, width, lines) {
|
|
@@ -25060,27 +25199,27 @@ function wrapText(text, innerWidth) {
|
|
|
25060
25199
|
}
|
|
25061
25200
|
|
|
25062
25201
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationaleLine.tsx
|
|
25063
|
-
import { Box as
|
|
25064
|
-
import { jsx as
|
|
25202
|
+
import { Box as Box28, Text as Text29 } from "ink";
|
|
25203
|
+
import { jsx as jsx34, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
25065
25204
|
function RationaleLine({ line, active }) {
|
|
25066
25205
|
if (line.kind === "blank") {
|
|
25067
|
-
return /* @__PURE__ */
|
|
25206
|
+
return /* @__PURE__ */ jsx34(Box28, { children: /* @__PURE__ */ jsx34(Text29, { children: " " }) });
|
|
25068
25207
|
}
|
|
25069
25208
|
if (line.kind === "heading") {
|
|
25070
|
-
return /* @__PURE__ */
|
|
25209
|
+
return /* @__PURE__ */ jsx34(Box28, { children: /* @__PURE__ */ jsx34(Text29, { bold: true, color: active ? PALETTE.accent : PALETTE.muted, children: line.text }) });
|
|
25071
25210
|
}
|
|
25072
25211
|
if (line.kind === "label") {
|
|
25073
|
-
return /* @__PURE__ */
|
|
25074
|
-
line.prefix && /* @__PURE__ */
|
|
25075
|
-
/* @__PURE__ */
|
|
25076
|
-
line.suffix && /* @__PURE__ */
|
|
25212
|
+
return /* @__PURE__ */ jsxs28(Box28, { children: [
|
|
25213
|
+
line.prefix && /* @__PURE__ */ jsx34(Text29, { children: line.prefix }),
|
|
25214
|
+
/* @__PURE__ */ jsx34(Text29, { bold: true, color: active ? line.color : PALETTE.muted, children: line.text }),
|
|
25215
|
+
line.suffix && /* @__PURE__ */ jsx34(Text29, { color: PALETTE.muted, children: line.suffix })
|
|
25077
25216
|
] });
|
|
25078
25217
|
}
|
|
25079
|
-
return /* @__PURE__ */
|
|
25218
|
+
return /* @__PURE__ */ jsx34(Box28, { children: /* @__PURE__ */ jsx34(Text29, { color: !active || line.dim ? PALETTE.muted : void 0, children: line.text }) });
|
|
25080
25219
|
}
|
|
25081
25220
|
|
|
25082
25221
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ComponentRationalePanel.tsx
|
|
25083
|
-
import { jsx as
|
|
25222
|
+
import { jsx as jsx35, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
25084
25223
|
var PLACEHOLDER = "(no rationale captured)";
|
|
25085
25224
|
function renderComponentRationaleLines(data, innerWidth) {
|
|
25086
25225
|
const out = [];
|
|
@@ -25148,8 +25287,8 @@ function ComponentRationalePanel({
|
|
|
25148
25287
|
const overflowed = totalLines > contentHeight;
|
|
25149
25288
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
25150
25289
|
const visibleEnd = Math.min(totalLines, scrollOffset + contentHeight);
|
|
25151
|
-
return /* @__PURE__ */
|
|
25152
|
-
|
|
25290
|
+
return /* @__PURE__ */ jsxs29(
|
|
25291
|
+
Box29,
|
|
25153
25292
|
{
|
|
25154
25293
|
flexDirection: "column",
|
|
25155
25294
|
width,
|
|
@@ -25157,27 +25296,27 @@ function ComponentRationalePanel({
|
|
|
25157
25296
|
borderStyle: "single",
|
|
25158
25297
|
borderColor: active ? PALETTE.text : void 0,
|
|
25159
25298
|
children: [
|
|
25160
|
-
/* @__PURE__ */
|
|
25161
|
-
visible.map((line, i) => /* @__PURE__ */
|
|
25162
|
-
/* @__PURE__ */
|
|
25299
|
+
/* @__PURE__ */ jsx35(Box29, { children: /* @__PURE__ */ jsx35(Text30, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Component rationale: ${data.name}` }) }),
|
|
25300
|
+
visible.map((line, i) => /* @__PURE__ */ jsx35(RationaleLine, { line, active }, i)),
|
|
25301
|
+
/* @__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" }) })
|
|
25163
25302
|
]
|
|
25164
25303
|
}
|
|
25165
25304
|
);
|
|
25166
25305
|
}
|
|
25167
25306
|
|
|
25168
25307
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/JsonPanel.tsx
|
|
25169
|
-
import { Box as
|
|
25308
|
+
import { Box as Box31 } from "ink";
|
|
25170
25309
|
|
|
25171
25310
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/HighlightedLine.tsx
|
|
25172
|
-
import { Text as
|
|
25173
|
-
import { Fragment as
|
|
25311
|
+
import { Text as Text31 } from "ink";
|
|
25312
|
+
import { Fragment as Fragment8, jsx as jsx36 } from "react/jsx-runtime";
|
|
25174
25313
|
function HighlightedLine({ parts }) {
|
|
25175
|
-
return /* @__PURE__ */
|
|
25314
|
+
return /* @__PURE__ */ jsx36(Fragment8, { children: parts.map((part, i) => /* @__PURE__ */ jsx36(Text31, { color: part.dim ? PALETTE.muted : part.color, children: part.text }, i)) });
|
|
25176
25315
|
}
|
|
25177
25316
|
|
|
25178
25317
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ScrollablePanel.tsx
|
|
25179
|
-
import { Box as
|
|
25180
|
-
import { Fragment as
|
|
25318
|
+
import { Box as Box30, Text as Text32 } from "ink";
|
|
25319
|
+
import { Fragment as Fragment9, jsx as jsx37, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
25181
25320
|
function ScrollablePanel({
|
|
25182
25321
|
title,
|
|
25183
25322
|
width,
|
|
@@ -25190,12 +25329,12 @@ function ScrollablePanel({
|
|
|
25190
25329
|
children
|
|
25191
25330
|
}) {
|
|
25192
25331
|
const overflowed = totalLines > height;
|
|
25193
|
-
return /* @__PURE__ */
|
|
25194
|
-
/* @__PURE__ */
|
|
25195
|
-
/* @__PURE__ */
|
|
25196
|
-
overflowed && /* @__PURE__ */
|
|
25197
|
-
/* @__PURE__ */
|
|
25198
|
-
/* @__PURE__ */
|
|
25332
|
+
return /* @__PURE__ */ jsxs30(Box30, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
|
|
25333
|
+
/* @__PURE__ */ jsxs30(Box30, { children: [
|
|
25334
|
+
/* @__PURE__ */ jsx37(Text32, { bold: true, color: active ? void 0 : PALETTE.muted, children: title }),
|
|
25335
|
+
overflowed && /* @__PURE__ */ jsxs30(Fragment9, { children: [
|
|
25336
|
+
/* @__PURE__ */ jsx37(Box30, { flexGrow: 1 }),
|
|
25337
|
+
/* @__PURE__ */ jsx37(Text32, { color: active ? void 0 : PALETTE.muted, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
|
|
25199
25338
|
] })
|
|
25200
25339
|
] }),
|
|
25201
25340
|
children
|
|
@@ -25203,7 +25342,7 @@ function ScrollablePanel({
|
|
|
25203
25342
|
}
|
|
25204
25343
|
|
|
25205
25344
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/JsonPanel.tsx
|
|
25206
|
-
import { jsx as
|
|
25345
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
25207
25346
|
function highlightJson(line) {
|
|
25208
25347
|
const parts = [];
|
|
25209
25348
|
let remaining = line;
|
|
@@ -25241,7 +25380,7 @@ function highlightJson(line) {
|
|
|
25241
25380
|
parts.push({ text: remaining[0] });
|
|
25242
25381
|
remaining = remaining.slice(1);
|
|
25243
25382
|
}
|
|
25244
|
-
return /* @__PURE__ */
|
|
25383
|
+
return /* @__PURE__ */ jsx38(HighlightedLine, { parts });
|
|
25245
25384
|
}
|
|
25246
25385
|
function truncateLine(line, maxWidth) {
|
|
25247
25386
|
if (line.length <= maxWidth) return line;
|
|
@@ -25254,7 +25393,7 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
|
|
|
25254
25393
|
const totalLines = allLines.length;
|
|
25255
25394
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
25256
25395
|
const visibleEnd = Math.min(totalLines, scrollOffset + height);
|
|
25257
|
-
return /* @__PURE__ */
|
|
25396
|
+
return /* @__PURE__ */ jsx38(
|
|
25258
25397
|
ScrollablePanel,
|
|
25259
25398
|
{
|
|
25260
25399
|
title: label,
|
|
@@ -25267,14 +25406,14 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
|
|
|
25267
25406
|
borderColor: active ? "white" : void 0,
|
|
25268
25407
|
children: visibleLines.map((line, i) => {
|
|
25269
25408
|
const truncated = truncateLine(line, innerWidth);
|
|
25270
|
-
return /* @__PURE__ */
|
|
25409
|
+
return /* @__PURE__ */ jsx38(Box31, { children: highlightJson(truncated) }, i);
|
|
25271
25410
|
})
|
|
25272
25411
|
}
|
|
25273
25412
|
);
|
|
25274
25413
|
}
|
|
25275
25414
|
|
|
25276
25415
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationalePanel.tsx
|
|
25277
|
-
import { jsx as
|
|
25416
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
25278
25417
|
function renderRationaleLines(rows, innerWidth) {
|
|
25279
25418
|
const out = [];
|
|
25280
25419
|
rows.forEach((row, idx) => {
|
|
@@ -25307,7 +25446,7 @@ function RationalePanel({
|
|
|
25307
25446
|
const visible = allLines.slice(scrollOffset, scrollOffset + height);
|
|
25308
25447
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
25309
25448
|
const visibleEnd = Math.min(totalLines, scrollOffset + height);
|
|
25310
|
-
return /* @__PURE__ */
|
|
25449
|
+
return /* @__PURE__ */ jsx39(
|
|
25311
25450
|
ScrollablePanel,
|
|
25312
25451
|
{
|
|
25313
25452
|
title: `RATIONALE \u2014 ${componentName}`,
|
|
@@ -25318,15 +25457,15 @@ function RationalePanel({
|
|
|
25318
25457
|
visibleStart,
|
|
25319
25458
|
visibleEnd,
|
|
25320
25459
|
borderColor: active ? PALETTE.text : void 0,
|
|
25321
|
-
children: visible.map((line, i) => /* @__PURE__ */
|
|
25460
|
+
children: visible.map((line, i) => /* @__PURE__ */ jsx39(RationaleLine, { line, active }, i))
|
|
25322
25461
|
}
|
|
25323
25462
|
);
|
|
25324
25463
|
}
|
|
25325
25464
|
|
|
25326
25465
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/TokenReviewPanel.tsx
|
|
25327
25466
|
import figures7 from "figures";
|
|
25328
|
-
import { Box as
|
|
25329
|
-
import { jsx as
|
|
25467
|
+
import { Box as Box32, Text as Text33 } from "ink";
|
|
25468
|
+
import { jsx as jsx40, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
25330
25469
|
function TokenReviewPanel({
|
|
25331
25470
|
componentName,
|
|
25332
25471
|
suggestions,
|
|
@@ -25345,8 +25484,8 @@ function TokenReviewPanel({
|
|
|
25345
25484
|
const scrollStart = Math.max(0, Math.min(editCursor - Math.floor(visibleCount / 2), maxStart));
|
|
25346
25485
|
const visiblePaths = current.paths.slice(scrollStart, scrollStart + visibleCount);
|
|
25347
25486
|
const rangeLabel = current.paths.length === 0 ? "no compatible tokens" : `${scrollStart + 1}-${scrollStart + visiblePaths.length} of ${current.paths.length}`;
|
|
25348
|
-
return /* @__PURE__ */
|
|
25349
|
-
|
|
25487
|
+
return /* @__PURE__ */ jsxs31(
|
|
25488
|
+
Box32,
|
|
25350
25489
|
{
|
|
25351
25490
|
flexDirection: "column",
|
|
25352
25491
|
width,
|
|
@@ -25354,16 +25493,16 @@ function TokenReviewPanel({
|
|
|
25354
25493
|
borderStyle: "single",
|
|
25355
25494
|
borderColor: active ? PALETTE.text : void 0,
|
|
25356
25495
|
children: [
|
|
25357
|
-
/* @__PURE__ */
|
|
25358
|
-
/* @__PURE__ */
|
|
25359
|
-
/* @__PURE__ */
|
|
25360
|
-
current.paths.length === 0 && /* @__PURE__ */
|
|
25496
|
+
/* @__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(", ")})` : ""}` }),
|
|
25497
|
+
/* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: `Tick the tokens this property may use (${rangeLabel}).` }),
|
|
25498
|
+
/* @__PURE__ */ jsx40(Text33, { children: " " }),
|
|
25499
|
+
current.paths.length === 0 && /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, children: "(no compatible tokens found for this token kind)" }),
|
|
25361
25500
|
visiblePaths.map((path5, i) => {
|
|
25362
25501
|
const pathIndex = scrollStart + i;
|
|
25363
25502
|
const checked = editSelection.has(path5);
|
|
25364
25503
|
const focused = pathIndex === editCursor;
|
|
25365
|
-
return /* @__PURE__ */
|
|
25366
|
-
|
|
25504
|
+
return /* @__PURE__ */ jsx40(Box32, { children: /* @__PURE__ */ jsx40(
|
|
25505
|
+
Text33,
|
|
25367
25506
|
{
|
|
25368
25507
|
color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted,
|
|
25369
25508
|
bold: focused,
|
|
@@ -25372,15 +25511,15 @@ function TokenReviewPanel({
|
|
|
25372
25511
|
}
|
|
25373
25512
|
) }, path5);
|
|
25374
25513
|
}),
|
|
25375
|
-
/* @__PURE__ */
|
|
25376
|
-
/* @__PURE__ */
|
|
25377
|
-
/* @__PURE__ */
|
|
25514
|
+
/* @__PURE__ */ jsx40(Text33, { children: " " }),
|
|
25515
|
+
/* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
|
|
25516
|
+
/* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
|
|
25378
25517
|
]
|
|
25379
25518
|
}
|
|
25380
25519
|
);
|
|
25381
25520
|
}
|
|
25382
|
-
return /* @__PURE__ */
|
|
25383
|
-
|
|
25521
|
+
return /* @__PURE__ */ jsxs31(
|
|
25522
|
+
Box32,
|
|
25384
25523
|
{
|
|
25385
25524
|
flexDirection: "column",
|
|
25386
25525
|
width,
|
|
@@ -25388,40 +25527,40 @@ function TokenReviewPanel({
|
|
|
25388
25527
|
borderStyle: "single",
|
|
25389
25528
|
borderColor: active ? PALETTE.text : void 0,
|
|
25390
25529
|
children: [
|
|
25391
|
-
/* @__PURE__ */
|
|
25392
|
-
/* @__PURE__ */
|
|
25393
|
-
/* @__PURE__ */
|
|
25394
|
-
/* @__PURE__ */
|
|
25395
|
-
suggestions.length === 0 && /* @__PURE__ */
|
|
25530
|
+
/* @__PURE__ */ jsx40(Text33, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Review mapped tokens \u2014 ${componentName}` }),
|
|
25531
|
+
/* @__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.` }),
|
|
25532
|
+
/* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, wrap: "truncate", children: "Suggested tokens come from the agent. Allowed tokens are what editors can pick in Contentful." }),
|
|
25533
|
+
/* @__PURE__ */ jsx40(Text33, { children: " " }),
|
|
25534
|
+
suggestions.length === 0 && /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, children: "(no token suggestions for this component)" }),
|
|
25396
25535
|
suggestions.map((s, i) => {
|
|
25397
25536
|
const focused = i === selectedRow;
|
|
25398
|
-
return /* @__PURE__ */
|
|
25399
|
-
/* @__PURE__ */
|
|
25400
|
-
/* @__PURE__ */
|
|
25401
|
-
|
|
25537
|
+
return /* @__PURE__ */ jsxs31(Box32, { flexDirection: "column", children: [
|
|
25538
|
+
/* @__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(", ")})` : ""}` }) }),
|
|
25539
|
+
/* @__PURE__ */ jsx40(
|
|
25540
|
+
Text33,
|
|
25402
25541
|
{
|
|
25403
25542
|
color: PALETTE.muted,
|
|
25404
25543
|
children: ` suggested: ${s.suggested.length > 0 ? s.suggested.join(", ") : "none"}`
|
|
25405
25544
|
}
|
|
25406
25545
|
),
|
|
25407
|
-
/* @__PURE__ */
|
|
25408
|
-
|
|
25546
|
+
/* @__PURE__ */ jsx40(
|
|
25547
|
+
Text33,
|
|
25409
25548
|
{
|
|
25410
25549
|
color: PALETTE.muted,
|
|
25411
25550
|
children: ` allowed: ${s.allowed.length > 0 ? s.allowed.join(", ") : "none (any token)"}`
|
|
25412
25551
|
}
|
|
25413
25552
|
),
|
|
25414
|
-
/* @__PURE__ */
|
|
25553
|
+
/* @__PURE__ */ jsx40(Text33, { children: " " })
|
|
25415
25554
|
] }, s.propName);
|
|
25416
25555
|
}),
|
|
25417
|
-
/* @__PURE__ */
|
|
25556
|
+
/* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, children: "[\u2191/\u2193] move [Enter] edit allowed tokens [Esc] close" })
|
|
25418
25557
|
]
|
|
25419
25558
|
}
|
|
25420
25559
|
);
|
|
25421
25560
|
}
|
|
25422
25561
|
|
|
25423
25562
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx
|
|
25424
|
-
import { Fragment as
|
|
25563
|
+
import { Fragment as Fragment10, jsx as jsx41, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
25425
25564
|
function ReviewDetailsPanel({
|
|
25426
25565
|
selectedKey,
|
|
25427
25566
|
panelOpen,
|
|
@@ -25456,7 +25595,7 @@ function ReviewDetailsPanel({
|
|
|
25456
25595
|
rationale: s.rationale ?? ""
|
|
25457
25596
|
}))
|
|
25458
25597
|
];
|
|
25459
|
-
return /* @__PURE__ */
|
|
25598
|
+
return /* @__PURE__ */ jsx41(
|
|
25460
25599
|
RationalePanel,
|
|
25461
25600
|
{
|
|
25462
25601
|
componentName: componentRationale?.name ?? selectedKey,
|
|
@@ -25469,7 +25608,7 @@ function ReviewDetailsPanel({
|
|
|
25469
25608
|
);
|
|
25470
25609
|
}
|
|
25471
25610
|
if (panelOpen === "component-rationale") {
|
|
25472
|
-
return /* @__PURE__ */
|
|
25611
|
+
return /* @__PURE__ */ jsx41(
|
|
25473
25612
|
ComponentRationalePanel,
|
|
25474
25613
|
{
|
|
25475
25614
|
data: componentRationale ?? {
|
|
@@ -25494,14 +25633,14 @@ function ReviewDetailsPanel({
|
|
|
25494
25633
|
const headerPath = path5 ?? "<unknown source path>";
|
|
25495
25634
|
const sourceLineCount = Math.max(1, height - 4);
|
|
25496
25635
|
const lines = source ? source.split("\n").slice(panelScrollOffset, panelScrollOffset + sourceLineCount) : [];
|
|
25497
|
-
return /* @__PURE__ */
|
|
25498
|
-
/* @__PURE__ */
|
|
25499
|
-
source ? lines.map((line, index) => /* @__PURE__ */
|
|
25500
|
-
/* @__PURE__ */
|
|
25636
|
+
return /* @__PURE__ */ jsxs32(FixedPanel, { width, height, borderStyle: "single", borderColor: sourceBorderColor, paddingLeft: 1, children: [
|
|
25637
|
+
/* @__PURE__ */ jsx41(Text34, { color: PALETTE.muted, bold: true, wrap: "truncate-end", children: `source: ${headerPath}` }),
|
|
25638
|
+
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)" }),
|
|
25639
|
+
/* @__PURE__ */ jsx41(Text34, { color: PALETTE.muted, wrap: "truncate-end", children: "[s/Esc] close" })
|
|
25501
25640
|
] });
|
|
25502
25641
|
}
|
|
25503
25642
|
if (panelOpen === "token-review") {
|
|
25504
|
-
return /* @__PURE__ */
|
|
25643
|
+
return /* @__PURE__ */ jsx41(
|
|
25505
25644
|
TokenReviewPanel,
|
|
25506
25645
|
{
|
|
25507
25646
|
componentName: selectedKey,
|
|
@@ -25517,7 +25656,7 @@ function ReviewDetailsPanel({
|
|
|
25517
25656
|
);
|
|
25518
25657
|
}
|
|
25519
25658
|
if (showJson) {
|
|
25520
|
-
return /* @__PURE__ */
|
|
25659
|
+
return /* @__PURE__ */ jsx41(
|
|
25521
25660
|
JsonPanel,
|
|
25522
25661
|
{
|
|
25523
25662
|
label: "GENERATED DEFINITION (read-only)",
|
|
@@ -25529,11 +25668,11 @@ function ReviewDetailsPanel({
|
|
|
25529
25668
|
}
|
|
25530
25669
|
);
|
|
25531
25670
|
}
|
|
25532
|
-
return /* @__PURE__ */
|
|
25671
|
+
return /* @__PURE__ */ jsx41(Fragment10, { children: editor });
|
|
25533
25672
|
}
|
|
25534
25673
|
|
|
25535
25674
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDetailsEditor.tsx
|
|
25536
|
-
import { jsx as
|
|
25675
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
25537
25676
|
import { createElement } from "react";
|
|
25538
25677
|
function toFieldEditorMetadata(reviewMetadata) {
|
|
25539
25678
|
if (!reviewMetadata) return void 0;
|
|
@@ -25567,7 +25706,7 @@ function ReviewDetailsEditor({
|
|
|
25567
25706
|
jsonScrollOffset,
|
|
25568
25707
|
currentTokenSuggestions
|
|
25569
25708
|
} = reviewEditor;
|
|
25570
|
-
return /* @__PURE__ */
|
|
25709
|
+
return /* @__PURE__ */ jsx42(
|
|
25571
25710
|
ReviewDetailsPanel,
|
|
25572
25711
|
{
|
|
25573
25712
|
selectedKey,
|
|
@@ -25607,7 +25746,7 @@ function ReviewDetailsEditor({
|
|
|
25607
25746
|
}
|
|
25608
25747
|
|
|
25609
25748
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewComponentPanel.tsx
|
|
25610
|
-
import { Fragment as
|
|
25749
|
+
import { Fragment as Fragment11, jsx as jsx43, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
25611
25750
|
function buildReviewFieldEditor(reviewEditor, selectedJson, onExit, overrides = {}) {
|
|
25612
25751
|
return {
|
|
25613
25752
|
value: reviewEditor.draftValue || selectedJson,
|
|
@@ -25647,24 +25786,24 @@ function ReviewEmptyComponentsWarning({
|
|
|
25647
25786
|
hidden
|
|
25648
25787
|
}) {
|
|
25649
25788
|
if (hidden || count === 0) return null;
|
|
25650
|
-
return /* @__PURE__ */
|
|
25789
|
+
return /* @__PURE__ */ jsx43(Text35, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
|
|
25651
25790
|
}
|
|
25652
25791
|
function ReviewNoSelection() {
|
|
25653
|
-
return /* @__PURE__ */
|
|
25792
|
+
return /* @__PURE__ */ jsx43(Box33, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx43(Text35, { color: PALETTE.muted, children: "No component selected" }) });
|
|
25654
25793
|
}
|
|
25655
25794
|
function ReviewFinalizeError({
|
|
25656
25795
|
message,
|
|
25657
25796
|
hidden
|
|
25658
25797
|
}) {
|
|
25659
25798
|
if (hidden || !message) return null;
|
|
25660
|
-
return /* @__PURE__ */
|
|
25799
|
+
return /* @__PURE__ */ jsx43(Text35, { color: PALETTE.error, children: `\u26A0 ${message}` });
|
|
25661
25800
|
}
|
|
25662
25801
|
function ReviewPanelFooter({
|
|
25663
25802
|
reviewEditor,
|
|
25664
25803
|
sidebarFocused,
|
|
25665
25804
|
sidebarFooter
|
|
25666
25805
|
}) {
|
|
25667
|
-
return /* @__PURE__ */
|
|
25806
|
+
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" : "") });
|
|
25668
25807
|
}
|
|
25669
25808
|
function ReviewComponentTitle({
|
|
25670
25809
|
selectedKey,
|
|
@@ -25672,10 +25811,10 @@ function ReviewComponentTitle({
|
|
|
25672
25811
|
slotCount,
|
|
25673
25812
|
sidebarFocused
|
|
25674
25813
|
}) {
|
|
25675
|
-
return /* @__PURE__ */
|
|
25676
|
-
/* @__PURE__ */
|
|
25677
|
-
/* @__PURE__ */
|
|
25678
|
-
/* @__PURE__ */
|
|
25814
|
+
return /* @__PURE__ */ jsxs33(Box33, { paddingLeft: 2, paddingBottom: 1, children: [
|
|
25815
|
+
/* @__PURE__ */ jsx43(Text35, { bold: true, wrap: "truncate-end", children: selectedKey }),
|
|
25816
|
+
/* @__PURE__ */ jsx43(Box33, { flexGrow: 1 }),
|
|
25817
|
+
/* @__PURE__ */ jsxs33(Text35, { color: PALETTE.muted, wrap: "truncate-end", children: [
|
|
25679
25818
|
propCount,
|
|
25680
25819
|
" prop",
|
|
25681
25820
|
propCount !== 1 ? "s" : "",
|
|
@@ -25704,8 +25843,8 @@ function ReviewComponentPanel({
|
|
|
25704
25843
|
const slotCount = selectedEntry.$slots ? Object.keys(selectedEntry.$slots).length : 0;
|
|
25705
25844
|
const contentHeight = Math.max(1, height - 2);
|
|
25706
25845
|
const contentWidth = Math.max(1, width - 1);
|
|
25707
|
-
return /* @__PURE__ */
|
|
25708
|
-
/* @__PURE__ */
|
|
25846
|
+
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: [
|
|
25847
|
+
/* @__PURE__ */ jsx43(Box33, { width: contentWidth, height: contentHeight, flexShrink: 0, overflowY: "hidden", children: /* @__PURE__ */ jsx43(
|
|
25709
25848
|
ReviewDetailsEditor,
|
|
25710
25849
|
{
|
|
25711
25850
|
selectedKey,
|
|
@@ -25718,7 +25857,7 @@ function ReviewComponentPanel({
|
|
|
25718
25857
|
jsonValue,
|
|
25719
25858
|
sidebarFocused,
|
|
25720
25859
|
fieldEditor,
|
|
25721
|
-
header: /* @__PURE__ */
|
|
25860
|
+
header: /* @__PURE__ */ jsx43(
|
|
25722
25861
|
ReviewComponentTitle,
|
|
25723
25862
|
{
|
|
25724
25863
|
selectedKey,
|
|
@@ -25729,8 +25868,8 @@ function ReviewComponentPanel({
|
|
|
25729
25868
|
)
|
|
25730
25869
|
}
|
|
25731
25870
|
) }),
|
|
25732
|
-
/* @__PURE__ */
|
|
25733
|
-
/* @__PURE__ */
|
|
25871
|
+
/* @__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 : " " }) }),
|
|
25872
|
+
/* @__PURE__ */ jsx43(Box33, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx43(Text35, { color: PALETTE.muted, wrap: "truncate-end", children: /* @__PURE__ */ jsx43(
|
|
25734
25873
|
ReviewPanelFooter,
|
|
25735
25874
|
{
|
|
25736
25875
|
reviewEditor,
|
|
@@ -25742,8 +25881,8 @@ function ReviewComponentPanel({
|
|
|
25742
25881
|
}
|
|
25743
25882
|
|
|
25744
25883
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewStatus.tsx
|
|
25745
|
-
import { Box as
|
|
25746
|
-
import { jsx as
|
|
25884
|
+
import { Box as Box34, Text as Text36 } from "ink";
|
|
25885
|
+
import { jsx as jsx44, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
25747
25886
|
function countReviewStatuses(entries) {
|
|
25748
25887
|
return entries.reduce(
|
|
25749
25888
|
(counts, entry) => {
|
|
@@ -25756,13 +25895,13 @@ function countReviewStatuses(entries) {
|
|
|
25756
25895
|
);
|
|
25757
25896
|
}
|
|
25758
25897
|
function ReviewLoadingState() {
|
|
25759
|
-
return /* @__PURE__ */
|
|
25898
|
+
return /* @__PURE__ */ jsx44(Box34, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: "Loading generated definitions..." }) });
|
|
25760
25899
|
}
|
|
25761
25900
|
function ReviewLoadError({ message }) {
|
|
25762
|
-
return /* @__PURE__ */
|
|
25763
|
-
/* @__PURE__ */
|
|
25764
|
-
/* @__PURE__ */
|
|
25765
|
-
/* @__PURE__ */
|
|
25901
|
+
return /* @__PURE__ */ jsxs34(Box34, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
25902
|
+
/* @__PURE__ */ jsx44(Text36, { color: PALETTE.error, children: message }),
|
|
25903
|
+
/* @__PURE__ */ jsx44(Text36, { children: " " }),
|
|
25904
|
+
/* @__PURE__ */ jsx44(ControlHints, { hints: [{ keys: "q / Enter / Esc", label: "Quit" }] })
|
|
25766
25905
|
] });
|
|
25767
25906
|
}
|
|
25768
25907
|
|
|
@@ -25962,8 +26101,8 @@ async function runLivePreview(opts) {
|
|
|
25962
26101
|
}
|
|
25963
26102
|
|
|
25964
26103
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FinalizeDialog.tsx
|
|
25965
|
-
import { Box as
|
|
25966
|
-
import { Fragment as
|
|
26104
|
+
import { Box as Box35, Text as Text37 } from "ink";
|
|
26105
|
+
import { Fragment as Fragment12, jsx as jsx45, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
25967
26106
|
var FINALIZE_REMOVED_WINDOW = 6;
|
|
25968
26107
|
function FinalizeDialog({
|
|
25969
26108
|
accepted,
|
|
@@ -25992,51 +26131,51 @@ function FinalizeDialog({
|
|
|
25992
26131
|
const windowed = removed.slice(offset, offset + FINALIZE_REMOVED_WINDOW);
|
|
25993
26132
|
const hasMoreBelow = offset + FINALIZE_REMOVED_WINDOW < removed.length;
|
|
25994
26133
|
const hasMoreAbove = offset > 0;
|
|
25995
|
-
return /* @__PURE__ */
|
|
25996
|
-
/* @__PURE__ */
|
|
25997
|
-
/* @__PURE__ */
|
|
25998
|
-
/* @__PURE__ */
|
|
25999
|
-
/* @__PURE__ */
|
|
26134
|
+
return /* @__PURE__ */ jsx45(Box35, { width: "100%", paddingX: 2, children: /* @__PURE__ */ jsxs35(Box35, { flexDirection: "column", alignItems: "flex-start", children: [
|
|
26135
|
+
/* @__PURE__ */ jsx45(Text37, { bold: true, children: "Finalize" }),
|
|
26136
|
+
/* @__PURE__ */ jsx45(Text37, { children: " " }),
|
|
26137
|
+
/* @__PURE__ */ jsxs35(Text37, { children: [
|
|
26138
|
+
/* @__PURE__ */ jsxs35(Text37, { color: PALETTE.success, children: [
|
|
26000
26139
|
accepted,
|
|
26001
26140
|
" accepted"
|
|
26002
26141
|
] }),
|
|
26003
|
-
/* @__PURE__ */
|
|
26004
|
-
/* @__PURE__ */
|
|
26142
|
+
/* @__PURE__ */ jsx45(Text37, { children: " \xB7 " }),
|
|
26143
|
+
/* @__PURE__ */ jsxs35(Text37, { color: PALETTE.error, children: [
|
|
26005
26144
|
rejected,
|
|
26006
26145
|
" rejected"
|
|
26007
26146
|
] }),
|
|
26008
|
-
/* @__PURE__ */
|
|
26009
|
-
/* @__PURE__ */
|
|
26147
|
+
/* @__PURE__ */ jsx45(Text37, { children: " \xB7 " }),
|
|
26148
|
+
/* @__PURE__ */ jsxs35(Text37, { color: PALETTE.muted, children: [
|
|
26010
26149
|
needsReview,
|
|
26011
26150
|
" unresolved"
|
|
26012
26151
|
] })
|
|
26013
26152
|
] }),
|
|
26014
|
-
/* @__PURE__ */
|
|
26015
|
-
noneAccepted && /* @__PURE__ */
|
|
26016
|
-
/* @__PURE__ */
|
|
26017
|
-
/* @__PURE__ */
|
|
26018
|
-
/* @__PURE__ */
|
|
26153
|
+
/* @__PURE__ */ jsx45(Text37, { children: " " }),
|
|
26154
|
+
noneAccepted && /* @__PURE__ */ jsxs35(Fragment12, { children: [
|
|
26155
|
+
/* @__PURE__ */ jsx45(Text37, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
|
|
26156
|
+
/* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, children: "Accept at least one component ([a] a row, [A] accept all) to push." }),
|
|
26157
|
+
/* @__PURE__ */ jsx45(Text37, { children: " " })
|
|
26019
26158
|
] }),
|
|
26020
|
-
!allResolved && /* @__PURE__ */
|
|
26021
|
-
/* @__PURE__ */
|
|
26022
|
-
/* @__PURE__ */
|
|
26023
|
-
/* @__PURE__ */
|
|
26159
|
+
!allResolved && /* @__PURE__ */ jsxs35(Fragment12, { children: [
|
|
26160
|
+
/* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
|
|
26161
|
+
/* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, children: "Only explicitly accepted components ship." }),
|
|
26162
|
+
/* @__PURE__ */ jsx45(Text37, { children: " " })
|
|
26024
26163
|
] }),
|
|
26025
|
-
/* @__PURE__ */
|
|
26026
|
-
previewStatus === "running" ? /* @__PURE__ */
|
|
26027
|
-
/* @__PURE__ */
|
|
26164
|
+
/* @__PURE__ */ jsxs35(Box35, { flexDirection: "column", height: 2, children: [
|
|
26165
|
+
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: " " }),
|
|
26166
|
+
/* @__PURE__ */ jsx45(Text37, { children: " " })
|
|
26028
26167
|
] }),
|
|
26029
|
-
previewStatus === "done" && removed.length > 0 && /* @__PURE__ */
|
|
26030
|
-
/* @__PURE__ */
|
|
26031
|
-
hasMoreAbove && /* @__PURE__ */
|
|
26032
|
-
windowed.map((rc) => /* @__PURE__ */
|
|
26033
|
-
hasMoreBelow && /* @__PURE__ */
|
|
26034
|
-
removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */
|
|
26035
|
-
/* @__PURE__ */
|
|
26168
|
+
previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs35(Fragment12, { children: [
|
|
26169
|
+
/* @__PURE__ */ jsx45(Text37, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
|
|
26170
|
+
hasMoreAbove && /* @__PURE__ */ jsx45(Text37, { color: PALETTE.muted, children: "\u2191 more above" }),
|
|
26171
|
+
windowed.map((rc) => /* @__PURE__ */ jsx45(Text37, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
|
|
26172
|
+
hasMoreBelow && /* @__PURE__ */ jsx45(Text37, { color: PALETTE.muted, children: "\u2193 more below" }),
|
|
26173
|
+
removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx45(Text37, { children: "[\u2191\u2193] scroll deletions" }),
|
|
26174
|
+
/* @__PURE__ */ jsx45(Text37, { children: " " })
|
|
26036
26175
|
] }),
|
|
26037
|
-
/* @__PURE__ */
|
|
26038
|
-
/* @__PURE__ */
|
|
26039
|
-
/* @__PURE__ */
|
|
26176
|
+
/* @__PURE__ */ jsx45(Text37, { children: noneAccepted ? "Confirm exit with nothing accepted?" : allResolved ? "Save decisions and exit? All components resolved." : "Save decisions and exit?" }),
|
|
26177
|
+
/* @__PURE__ */ jsx45(Text37, { children: " " }),
|
|
26178
|
+
/* @__PURE__ */ jsx45(
|
|
26040
26179
|
ControlHints,
|
|
26041
26180
|
{
|
|
26042
26181
|
hints: [
|
|
@@ -26460,11 +26599,11 @@ function useReviewSurfaceState(initialFinalizeError = null) {
|
|
|
26460
26599
|
}
|
|
26461
26600
|
|
|
26462
26601
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDialogs.tsx
|
|
26463
|
-
import { Box as
|
|
26602
|
+
import { Box as Box37, Text as Text39 } from "ink";
|
|
26464
26603
|
|
|
26465
26604
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/QuitDialog.tsx
|
|
26466
|
-
import { Box as
|
|
26467
|
-
import { Fragment as
|
|
26605
|
+
import { Box as Box36, Text as Text38 } from "ink";
|
|
26606
|
+
import { Fragment as Fragment13, jsx as jsx46, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
26468
26607
|
function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
26469
26608
|
useImmediateInput((input, key) => {
|
|
26470
26609
|
if (input === "y" || key.return) {
|
|
@@ -26473,16 +26612,16 @@ function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
|
26473
26612
|
onCancel();
|
|
26474
26613
|
}
|
|
26475
26614
|
});
|
|
26476
|
-
return /* @__PURE__ */
|
|
26477
|
-
/* @__PURE__ */
|
|
26478
|
-
/* @__PURE__ */
|
|
26479
|
-
hasUnsavedDrafts ? /* @__PURE__ */
|
|
26480
|
-
/* @__PURE__ */
|
|
26481
|
-
/* @__PURE__ */
|
|
26482
|
-
/* @__PURE__ */
|
|
26483
|
-
] }) : /* @__PURE__ */
|
|
26484
|
-
/* @__PURE__ */
|
|
26485
|
-
/* @__PURE__ */
|
|
26615
|
+
return /* @__PURE__ */ jsxs36(Box36, { flexDirection: "column", borderStyle: "round", padding: 1, width: 50, children: [
|
|
26616
|
+
/* @__PURE__ */ jsx46(Text38, { bold: true, children: "\u2500".repeat(19) + " Quit " + "\u2500".repeat(19) }),
|
|
26617
|
+
/* @__PURE__ */ jsx46(Text38, { children: " " }),
|
|
26618
|
+
hasUnsavedDrafts ? /* @__PURE__ */ jsxs36(Fragment13, { children: [
|
|
26619
|
+
/* @__PURE__ */ jsx46(Text38, { children: "You have unsaved draft edits." }),
|
|
26620
|
+
/* @__PURE__ */ jsx46(Text38, { children: "Session state is preserved \u2014 you can resume" }),
|
|
26621
|
+
/* @__PURE__ */ jsx46(Text38, { children: "by running the same review command again." })
|
|
26622
|
+
] }) : /* @__PURE__ */ jsx46(Text38, { children: "Session is saved. Quit without finalizing?" }),
|
|
26623
|
+
/* @__PURE__ */ jsx46(Text38, { children: " " }),
|
|
26624
|
+
/* @__PURE__ */ jsx46(
|
|
26486
26625
|
ControlHints,
|
|
26487
26626
|
{
|
|
26488
26627
|
hints: [
|
|
@@ -26495,7 +26634,7 @@ function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
|
26495
26634
|
}
|
|
26496
26635
|
|
|
26497
26636
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDialogs.tsx
|
|
26498
|
-
import { Fragment as
|
|
26637
|
+
import { Fragment as Fragment14, jsx as jsx47, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
26499
26638
|
function ReviewFinalizeDialogs({
|
|
26500
26639
|
showFinalize,
|
|
26501
26640
|
showQuit,
|
|
@@ -26509,8 +26648,8 @@ function ReviewFinalizeDialogs({
|
|
|
26509
26648
|
onQuitCancel
|
|
26510
26649
|
}) {
|
|
26511
26650
|
const { accepted, rejected, needsReview } = countReviewStatuses(components);
|
|
26512
|
-
return /* @__PURE__ */
|
|
26513
|
-
showFinalize && /* @__PURE__ */
|
|
26651
|
+
return /* @__PURE__ */ jsxs37(Fragment14, { children: [
|
|
26652
|
+
showFinalize && /* @__PURE__ */ jsx47(
|
|
26514
26653
|
FinalizeDialog,
|
|
26515
26654
|
{
|
|
26516
26655
|
accepted,
|
|
@@ -26523,7 +26662,7 @@ function ReviewFinalizeDialogs({
|
|
|
26523
26662
|
onCancel: onFinalizeCancel
|
|
26524
26663
|
}
|
|
26525
26664
|
),
|
|
26526
|
-
showQuit && /* @__PURE__ */
|
|
26665
|
+
showQuit && /* @__PURE__ */ jsx47(QuitDialog, { hasUnsavedDrafts: false, onConfirm: onQuitConfirm, onCancel: onQuitCancel })
|
|
26527
26666
|
] });
|
|
26528
26667
|
}
|
|
26529
26668
|
function ReviewStepDialogs({
|
|
@@ -26533,7 +26672,7 @@ function ReviewStepDialogs({
|
|
|
26533
26672
|
onFinalize,
|
|
26534
26673
|
onQuit
|
|
26535
26674
|
}) {
|
|
26536
|
-
return /* @__PURE__ */
|
|
26675
|
+
return /* @__PURE__ */ jsx47(
|
|
26537
26676
|
ReviewFinalizeDialogs,
|
|
26538
26677
|
{
|
|
26539
26678
|
showFinalize: surfaceState.showFinalize,
|
|
@@ -26551,12 +26690,12 @@ function ReviewStepDialogs({
|
|
|
26551
26690
|
}
|
|
26552
26691
|
function ReviewReloadDialog({ open }) {
|
|
26553
26692
|
if (!open) return null;
|
|
26554
|
-
return /* @__PURE__ */
|
|
26555
|
-
/* @__PURE__ */
|
|
26556
|
-
/* @__PURE__ */
|
|
26557
|
-
/* @__PURE__ */
|
|
26558
|
-
/* @__PURE__ */
|
|
26559
|
-
/* @__PURE__ */
|
|
26693
|
+
return /* @__PURE__ */ jsxs37(Box37, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
26694
|
+
/* @__PURE__ */ jsx47(Text39, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
|
|
26695
|
+
/* @__PURE__ */ jsx47(Text39, { children: "Unsaved in-memory changes will be lost." }),
|
|
26696
|
+
/* @__PURE__ */ jsx47(Text39, { children: " " }),
|
|
26697
|
+
/* @__PURE__ */ jsx47(Text39, { children: " [Enter] Confirm" }),
|
|
26698
|
+
/* @__PURE__ */ jsx47(Text39, { children: " [Esc] Cancel" })
|
|
26560
26699
|
] });
|
|
26561
26700
|
}
|
|
26562
26701
|
|
|
@@ -27034,8 +27173,8 @@ function useReviewLog({
|
|
|
27034
27173
|
}
|
|
27035
27174
|
|
|
27036
27175
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/LivePreviewSummary.tsx
|
|
27037
|
-
import { Box as
|
|
27038
|
-
import { jsx as
|
|
27176
|
+
import { Box as Box38, Text as Text40 } from "ink";
|
|
27177
|
+
import { jsx as jsx48, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
27039
27178
|
function LivePreviewSummary({
|
|
27040
27179
|
enabled,
|
|
27041
27180
|
previewAnnotations,
|
|
@@ -27049,24 +27188,24 @@ function LivePreviewSummary({
|
|
|
27049
27188
|
const counts = { new: 0, changed: 0, removed: 0, breaking: 0 };
|
|
27050
27189
|
for (const annotation of previewAnnotations.values()) counts[annotation] += 1;
|
|
27051
27190
|
const hasCounts = counts.new + counts.changed + counts.removed + counts.breaking > 0;
|
|
27052
|
-
if (disabled) return /* @__PURE__ */
|
|
27053
|
-
if (status === "running" && !hasCounts) return /* @__PURE__ */
|
|
27191
|
+
if (disabled) return /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: "Preview: disabled (creds rejected)" });
|
|
27192
|
+
if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: `Preview: ${spinner} running...` });
|
|
27054
27193
|
if (!hasCounts) return null;
|
|
27055
|
-
return /* @__PURE__ */
|
|
27056
|
-
/* @__PURE__ */
|
|
27057
|
-
/* @__PURE__ */
|
|
27058
|
-
/* @__PURE__ */
|
|
27059
|
-
/* @__PURE__ */
|
|
27060
|
-
/* @__PURE__ */
|
|
27061
|
-
/* @__PURE__ */
|
|
27062
|
-
showRemovedListHint && removedCount > 0 && /* @__PURE__ */
|
|
27063
|
-
/* @__PURE__ */
|
|
27064
|
-
/* @__PURE__ */
|
|
27194
|
+
return /* @__PURE__ */ jsxs38(Box38, { children: [
|
|
27195
|
+
/* @__PURE__ */ jsx48(Text40, { children: "Preview: " }),
|
|
27196
|
+
/* @__PURE__ */ jsx48(Text40, { color: PALETTE.success, children: `${counts.new} new` }),
|
|
27197
|
+
/* @__PURE__ */ jsx48(Text40, { children: " \xB7 " }),
|
|
27198
|
+
/* @__PURE__ */ jsx48(Text40, { color: PALETTE.warning, children: `${counts.changed} changed` }),
|
|
27199
|
+
/* @__PURE__ */ jsx48(Text40, { children: " \xB7 " }),
|
|
27200
|
+
/* @__PURE__ */ jsx48(Text40, { color: PALETTE.muted, children: `${counts.removed} removed` }),
|
|
27201
|
+
showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx48(Text40, { children: " ([d] removed list)" }),
|
|
27202
|
+
/* @__PURE__ */ jsx48(Text40, { children: " \xB7 " }),
|
|
27203
|
+
/* @__PURE__ */ jsx48(Text40, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
|
|
27065
27204
|
] });
|
|
27066
27205
|
}
|
|
27067
27206
|
|
|
27068
27207
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx
|
|
27069
|
-
import { Fragment as
|
|
27208
|
+
import { Fragment as Fragment15, jsx as jsx49, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
27070
27209
|
function sortComponentsForSidebar(components, cycleParticipants) {
|
|
27071
27210
|
const isEmpty2 = (entry) => Object.keys(entry.$properties ?? {}).length === 0 && Object.keys(entry.$slots ?? {}).length === 0;
|
|
27072
27211
|
const tier = (c2) => {
|
|
@@ -27107,10 +27246,10 @@ function CyclePathLine({
|
|
|
27107
27246
|
highlightComponents = false,
|
|
27108
27247
|
highlightLine = false
|
|
27109
27248
|
}) {
|
|
27110
|
-
return /* @__PURE__ */
|
|
27249
|
+
return /* @__PURE__ */ jsxs39(Text41, { color: highlightLine ? PALETTE.warning : void 0, children: [
|
|
27111
27250
|
prefix,
|
|
27112
27251
|
segments.map(
|
|
27113
|
-
(segment, index) => segment.kind === "slot" ? /* @__PURE__ */
|
|
27252
|
+
(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)
|
|
27114
27253
|
)
|
|
27115
27254
|
] });
|
|
27116
27255
|
}
|
|
@@ -27122,31 +27261,31 @@ function CycleDetailPanel({
|
|
|
27122
27261
|
height
|
|
27123
27262
|
}) {
|
|
27124
27263
|
const lines = [
|
|
27125
|
-
/* @__PURE__ */
|
|
27126
|
-
/* @__PURE__ */
|
|
27127
|
-
/* @__PURE__ */
|
|
27128
|
-
/* @__PURE__ */
|
|
27264
|
+
/* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${cycles.length})` }, "cyc-title"),
|
|
27265
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: "push will fail until these are resolved" }, "cyc-sub"),
|
|
27266
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: "Reject a cycle member or remove a slot edge to break the cycle." }, "cyc-guidance"),
|
|
27267
|
+
/* @__PURE__ */ jsx49(Text41, { children: " " }, "cyc-space")
|
|
27129
27268
|
];
|
|
27130
27269
|
cycles.forEach((cycle, index) => {
|
|
27131
27270
|
const nodeCount = new Set(cycle.path).size;
|
|
27132
27271
|
const isCursor = index === cursor;
|
|
27133
27272
|
lines.push(
|
|
27134
|
-
/* @__PURE__ */
|
|
27135
|
-
/* @__PURE__ */
|
|
27273
|
+
/* @__PURE__ */ jsx49(Text41, { bold: true, inverse: isCursor, children: `${isCursor ? figures8.pointer : " "} Cycle ${index + 1} (${nodeCount} component${nodeCount === 1 ? "" : "s"}):` }, `cyc-h-${index}`),
|
|
27274
|
+
/* @__PURE__ */ jsx49(CyclePathLine, { segments: formatCyclePathSegments2(cycle, 16), prefix: " " }, `cyc-p-${index}`)
|
|
27136
27275
|
);
|
|
27137
27276
|
if (cycle.suggestedBreak) {
|
|
27138
27277
|
lines.push(
|
|
27139
|
-
/* @__PURE__ */
|
|
27278
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: ` Suggested fix: remove [${cycle.suggestedBreak.slotName}] from ${cycle.suggestedBreak.fromComponent}` }, `cyc-fix-${index}`)
|
|
27140
27279
|
);
|
|
27141
27280
|
}
|
|
27142
|
-
lines.push(/* @__PURE__ */
|
|
27281
|
+
lines.push(/* @__PURE__ */ jsx49(Text41, { children: " " }, `cyc-s-${index}`));
|
|
27143
27282
|
});
|
|
27144
27283
|
const footer = "[\u2191\u2193] move [Enter] fix cycle [c/q/Esc] close";
|
|
27145
27284
|
const viewportHeight = Math.max(1, height - 3);
|
|
27146
27285
|
const visible = lines.slice(scrollOffset, scrollOffset + viewportHeight - 1);
|
|
27147
|
-
return /* @__PURE__ */
|
|
27286
|
+
return /* @__PURE__ */ jsxs39(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
|
|
27148
27287
|
visible,
|
|
27149
|
-
/* @__PURE__ */
|
|
27288
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: footer })
|
|
27150
27289
|
] });
|
|
27151
27290
|
}
|
|
27152
27291
|
function BreakCyclePanel({
|
|
@@ -27157,14 +27296,14 @@ function BreakCyclePanel({
|
|
|
27157
27296
|
width,
|
|
27158
27297
|
height
|
|
27159
27298
|
}) {
|
|
27160
|
-
return /* @__PURE__ */
|
|
27161
|
-
/* @__PURE__ */
|
|
27162
|
-
cycle && /* @__PURE__ */
|
|
27163
|
-
/* @__PURE__ */
|
|
27164
|
-
/* @__PURE__ */
|
|
27165
|
-
edges.length > 0 && /* @__PURE__ */
|
|
27166
|
-
edges.map((edge, index) => /* @__PURE__ */
|
|
27167
|
-
confirming ? /* @__PURE__ */
|
|
27299
|
+
return /* @__PURE__ */ jsxs39(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
|
|
27300
|
+
/* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.warning, children: "BREAK CYCLE \u2014 remove a slot edge" }),
|
|
27301
|
+
cycle && /* @__PURE__ */ jsx49(CyclePathLine, { segments: formatCyclePathSegments2(cycle), prefix: " ", highlightComponents: true }),
|
|
27302
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: cycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
|
|
27303
|
+
/* @__PURE__ */ jsx49(Text41, { children: " " }),
|
|
27304
|
+
edges.length > 0 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: "remove slot edge:" }),
|
|
27305
|
+
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}`)),
|
|
27306
|
+
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" })
|
|
27168
27307
|
] });
|
|
27169
27308
|
}
|
|
27170
27309
|
var HELP_SECTIONS2 = [
|
|
@@ -27270,9 +27409,9 @@ function deriveBreakingChanges(response) {
|
|
|
27270
27409
|
}
|
|
27271
27410
|
function GenerateReviewStep(props) {
|
|
27272
27411
|
if (!props.extractSessionId) {
|
|
27273
|
-
return /* @__PURE__ */
|
|
27412
|
+
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." }) });
|
|
27274
27413
|
}
|
|
27275
|
-
return /* @__PURE__ */
|
|
27414
|
+
return /* @__PURE__ */ jsx49(GenerateReviewStepView, { ...props, extractSessionId: props.extractSessionId });
|
|
27276
27415
|
}
|
|
27277
27416
|
function GenerateReviewStepView({
|
|
27278
27417
|
extractSessionId,
|
|
@@ -28134,13 +28273,13 @@ function GenerateReviewStepView({
|
|
|
28134
28273
|
}
|
|
28135
28274
|
});
|
|
28136
28275
|
if (loading) {
|
|
28137
|
-
return /* @__PURE__ */
|
|
28276
|
+
return /* @__PURE__ */ jsx49(ReviewLoadingState, {});
|
|
28138
28277
|
}
|
|
28139
28278
|
if (loadError) {
|
|
28140
|
-
return /* @__PURE__ */
|
|
28279
|
+
return /* @__PURE__ */ jsx49(ReviewLoadError, { message: loadError });
|
|
28141
28280
|
}
|
|
28142
28281
|
if (showHelp) {
|
|
28143
|
-
return /* @__PURE__ */
|
|
28282
|
+
return /* @__PURE__ */ jsx49(HelpOverlay, { sections: HELP_SECTIONS2, handleInput: false, onClose: () => setShowHelp(false) });
|
|
28144
28283
|
}
|
|
28145
28284
|
const { selected, selectedJson, visibleJsonPanelValue } = getReviewSelectionState(
|
|
28146
28285
|
components,
|
|
@@ -28180,9 +28319,9 @@ function GenerateReviewStepView({
|
|
|
28180
28319
|
for (const c2 of closures.values()) if (c2.nodes.length > 1) return true;
|
|
28181
28320
|
return false;
|
|
28182
28321
|
})();
|
|
28183
|
-
return /* @__PURE__ */
|
|
28184
|
-
/* @__PURE__ */
|
|
28185
|
-
/* @__PURE__ */
|
|
28322
|
+
return /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", children: [
|
|
28323
|
+
/* @__PURE__ */ jsx49(StepHeader, { step: "review" }),
|
|
28324
|
+
/* @__PURE__ */ jsx49(
|
|
28186
28325
|
ReviewStepDialogs,
|
|
28187
28326
|
{
|
|
28188
28327
|
surfaceState: reviewSurface,
|
|
@@ -28192,16 +28331,16 @@ function GenerateReviewStepView({
|
|
|
28192
28331
|
onQuit
|
|
28193
28332
|
}
|
|
28194
28333
|
),
|
|
28195
|
-
/* @__PURE__ */
|
|
28196
|
-
removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */
|
|
28197
|
-
/* @__PURE__ */
|
|
28198
|
-
!removedBannerCollapsed && /* @__PURE__ */
|
|
28199
|
-
/* @__PURE__ */
|
|
28200
|
-
removedComponents.map((rc) => /* @__PURE__ */
|
|
28334
|
+
/* @__PURE__ */ jsx49(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
|
|
28335
|
+
removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
|
|
28336
|
+
/* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
|
|
28337
|
+
!removedBannerCollapsed && /* @__PURE__ */ jsxs39(Fragment15, { children: [
|
|
28338
|
+
/* @__PURE__ */ jsx49(Text41, { children: " " }),
|
|
28339
|
+
removedComponents.map((rc) => /* @__PURE__ */ jsx49(Text41, { children: removedComponentLine(rc) }, rc.id))
|
|
28201
28340
|
] })
|
|
28202
28341
|
] }),
|
|
28203
|
-
breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */
|
|
28204
|
-
|
|
28342
|
+
breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx49(Box39, { paddingX: 1, children: /* @__PURE__ */ jsx49(
|
|
28343
|
+
Text41,
|
|
28205
28344
|
{
|
|
28206
28345
|
color: PALETTE.warning,
|
|
28207
28346
|
children: `[b] ${breakingChanges.length} breaking change${breakingChanges.length === 1 ? "" : "s"}`
|
|
@@ -28211,14 +28350,14 @@ function GenerateReviewStepView({
|
|
|
28211
28350
|
const row = breakingRows[breakingCursor];
|
|
28212
28351
|
const comp = row ? breakingChanges.find((b) => b.componentName === row.componentName) : void 0;
|
|
28213
28352
|
if (!comp) return null;
|
|
28214
|
-
return /* @__PURE__ */
|
|
28215
|
-
/* @__PURE__ */
|
|
28216
|
-
comp.impact && /* @__PURE__ */
|
|
28217
|
-
comp.changes.length === 0 ? /* @__PURE__ */
|
|
28218
|
-
/* @__PURE__ */
|
|
28353
|
+
return /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
28354
|
+
/* @__PURE__ */ jsx49(Text41, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
|
|
28355
|
+
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"}` }),
|
|
28356
|
+
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}`)),
|
|
28357
|
+
/* @__PURE__ */ jsx49(Text41, { children: "[D/Esc] close detail" })
|
|
28219
28358
|
] });
|
|
28220
28359
|
})(),
|
|
28221
|
-
!dialogOpen && /* @__PURE__ */
|
|
28360
|
+
!dialogOpen && /* @__PURE__ */ jsx49(
|
|
28222
28361
|
LivePreviewSummary,
|
|
28223
28362
|
{
|
|
28224
28363
|
enabled: livePreview,
|
|
@@ -28237,16 +28376,16 @@ function GenerateReviewStepView({
|
|
|
28237
28376
|
const participantSet = cycleView.structural;
|
|
28238
28377
|
const members = stillRejected.filter((n) => participantSet.has(n)).sort();
|
|
28239
28378
|
const ancestors = stillRejected.filter((n) => !participantSet.has(n)).sort();
|
|
28240
|
-
return /* @__PURE__ */
|
|
28241
|
-
/* @__PURE__ */
|
|
28242
|
-
members.length > 0 && /* @__PURE__ */
|
|
28243
|
-
ancestors.length > 0 && /* @__PURE__ */
|
|
28244
|
-
/* @__PURE__ */
|
|
28379
|
+
return /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
|
|
28380
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
|
|
28381
|
+
members.length > 0 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
|
|
28382
|
+
ancestors.length > 0 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
|
|
28383
|
+
/* @__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" })
|
|
28245
28384
|
] });
|
|
28246
28385
|
})(),
|
|
28247
|
-
/* @__PURE__ */
|
|
28248
|
-
/* @__PURE__ */
|
|
28249
|
-
!dialogOpen && breakPanel.isOpen && /* @__PURE__ */
|
|
28386
|
+
/* @__PURE__ */ jsx49(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
|
|
28387
|
+
/* @__PURE__ */ jsx49(ReviewFinalizeError, { message: finalizeError, hidden: dialogOpen }),
|
|
28388
|
+
!dialogOpen && breakPanel.isOpen && /* @__PURE__ */ jsx49(
|
|
28250
28389
|
BreakCyclePanel,
|
|
28251
28390
|
{
|
|
28252
28391
|
cycle: cycleRows[cyclesCursor],
|
|
@@ -28257,7 +28396,7 @@ function GenerateReviewStepView({
|
|
|
28257
28396
|
height: panelHeight
|
|
28258
28397
|
}
|
|
28259
28398
|
),
|
|
28260
|
-
!dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */
|
|
28399
|
+
!dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsx49(
|
|
28261
28400
|
CycleDetailPanel,
|
|
28262
28401
|
{
|
|
28263
28402
|
cycles: cycleRows,
|
|
@@ -28267,8 +28406,8 @@ function GenerateReviewStepView({
|
|
|
28267
28406
|
height: panelHeight
|
|
28268
28407
|
}
|
|
28269
28408
|
),
|
|
28270
|
-
!dialogOpen && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */
|
|
28271
|
-
breakingPanel.isOpen ? /* @__PURE__ */
|
|
28409
|
+
!dialogOpen && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs39(Box39, { children: [
|
|
28410
|
+
breakingPanel.isOpen ? /* @__PURE__ */ jsx49(
|
|
28272
28411
|
GotoBanner,
|
|
28273
28412
|
{
|
|
28274
28413
|
title: `Breaking changes \u2014 ${breakingRows[breakingCursor]?.componentName ?? "unknown component"}`,
|
|
@@ -28281,7 +28420,7 @@ function GenerateReviewStepView({
|
|
|
28281
28420
|
width: sidebarWidth,
|
|
28282
28421
|
footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [D] detail \xB7 [Esc] close"
|
|
28283
28422
|
}
|
|
28284
|
-
) : /* @__PURE__ */
|
|
28423
|
+
) : /* @__PURE__ */ jsx49(
|
|
28285
28424
|
GroupedSidebar,
|
|
28286
28425
|
{
|
|
28287
28426
|
items: groupedItems,
|
|
@@ -28322,7 +28461,7 @@ function GenerateReviewStepView({
|
|
|
28322
28461
|
graph: sidebarGraph
|
|
28323
28462
|
}
|
|
28324
28463
|
),
|
|
28325
|
-
selected ? /* @__PURE__ */
|
|
28464
|
+
selected ? /* @__PURE__ */ jsx49(
|
|
28326
28465
|
ReviewComponentPanel,
|
|
28327
28466
|
{
|
|
28328
28467
|
selectedKey: selected.key,
|
|
@@ -28352,12 +28491,12 @@ function GenerateReviewStepView({
|
|
|
28352
28491
|
),
|
|
28353
28492
|
saveError: reviewEditor.saveError
|
|
28354
28493
|
}
|
|
28355
|
-
) : /* @__PURE__ */
|
|
28494
|
+
) : /* @__PURE__ */ jsx49(ReviewNoSelection, {})
|
|
28356
28495
|
] }),
|
|
28357
|
-
!dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */
|
|
28358
|
-
/* @__PURE__ */
|
|
28496
|
+
!dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs39(Box39, { flexDirection: "column", children: [
|
|
28497
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.warning, children: `\u26A0 ${cycleRows.length} slot dependency cycle${cycleRows.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
|
|
28359
28498
|
cycleRows.slice(0, 3).map((cycle, idx) => {
|
|
28360
|
-
return /* @__PURE__ */
|
|
28499
|
+
return /* @__PURE__ */ jsx49(
|
|
28361
28500
|
CyclePathLine,
|
|
28362
28501
|
{
|
|
28363
28502
|
segments: formatCyclePathSegments2(cycle),
|
|
@@ -28368,10 +28507,10 @@ function GenerateReviewStepView({
|
|
|
28368
28507
|
`cyc-banner-${idx}`
|
|
28369
28508
|
);
|
|
28370
28509
|
}),
|
|
28371
|
-
cycleRows.length > 3 && /* @__PURE__ */
|
|
28372
|
-
/* @__PURE__ */
|
|
28510
|
+
cycleRows.length > 3 && /* @__PURE__ */ jsx49(Text41, { color: PALETTE.warning, children: ` \u2026${cycleRows.length - 3} more` }),
|
|
28511
|
+
/* @__PURE__ */ jsx49(Text41, { children: " press [c] for detail" })
|
|
28373
28512
|
] }),
|
|
28374
|
-
/* @__PURE__ */
|
|
28513
|
+
/* @__PURE__ */ jsx49(
|
|
28375
28514
|
SearchMatchSummary,
|
|
28376
28515
|
{
|
|
28377
28516
|
open: searchOpen,
|
|
@@ -28382,27 +28521,27 @@ function GenerateReviewStepView({
|
|
|
28382
28521
|
hidden: dialogOpen
|
|
28383
28522
|
}
|
|
28384
28523
|
),
|
|
28385
|
-
!dialogOpen && sidebarFocused && reviewEditor.panelOpen !== "token-review" && /* @__PURE__ */
|
|
28524
|
+
!dialogOpen && sidebarFocused && reviewEditor.panelOpen !== "token-review" && /* @__PURE__ */ jsx49(CompactControlBar, { hasGroupRoots, searchActive: searchOpen || searchQuery.length > 0 })
|
|
28386
28525
|
] });
|
|
28387
28526
|
}
|
|
28388
28527
|
|
|
28389
28528
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/CustomPromptBanner.tsx
|
|
28390
|
-
import { Box as
|
|
28391
|
-
import { jsx as
|
|
28529
|
+
import { Box as Box40, Text as Text42 } from "ink";
|
|
28530
|
+
import { jsx as jsx50, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
28392
28531
|
function CustomPromptBanner({ generatePromptPath }) {
|
|
28393
28532
|
if (!generatePromptPath) return null;
|
|
28394
|
-
return /* @__PURE__ */
|
|
28395
|
-
/* @__PURE__ */
|
|
28396
|
-
generatePromptPath ? /* @__PURE__ */
|
|
28533
|
+
return /* @__PURE__ */ jsxs40(Box40, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
28534
|
+
/* @__PURE__ */ jsx50(Text42, { color: PALETTE.warning, bold: true, children: "WARNING: Custom prompt active" }),
|
|
28535
|
+
generatePromptPath ? /* @__PURE__ */ jsxs40(Text42, { color: PALETTE.warning, children: [
|
|
28397
28536
|
"components: ",
|
|
28398
28537
|
generatePromptPath
|
|
28399
28538
|
] }) : null,
|
|
28400
|
-
/* @__PURE__ */
|
|
28539
|
+
/* @__PURE__ */ jsx50(Text42, { color: PALETTE.warning, children: "Bundled invariants (utility-wrapper rejection, description content rules) do NOT apply." })
|
|
28401
28540
|
] });
|
|
28402
28541
|
}
|
|
28403
28542
|
|
|
28404
28543
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/DoneStep.tsx
|
|
28405
|
-
import { Box as
|
|
28544
|
+
import { Box as Box42, Text as Text44 } from "ink";
|
|
28406
28545
|
|
|
28407
28546
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/contentful-urls.ts
|
|
28408
28547
|
function normalizeHost(host) {
|
|
@@ -28418,32 +28557,32 @@ function buildPostPushUrl2({ host, spaceId, environmentId, view = "components" }
|
|
|
28418
28557
|
}
|
|
28419
28558
|
|
|
28420
28559
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/SpaceEnvironment.tsx
|
|
28421
|
-
import { Box as
|
|
28422
|
-
import { jsx as
|
|
28560
|
+
import { Box as Box41, Text as Text43 } from "ink";
|
|
28561
|
+
import { jsx as jsx51, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
28423
28562
|
function SpaceEnvironment({ spaceId, environmentId }) {
|
|
28424
|
-
return /* @__PURE__ */
|
|
28425
|
-
/* @__PURE__ */
|
|
28426
|
-
/* @__PURE__ */
|
|
28427
|
-
/* @__PURE__ */
|
|
28428
|
-
/* @__PURE__ */
|
|
28429
|
-
/* @__PURE__ */
|
|
28563
|
+
return /* @__PURE__ */ jsxs41(Box41, { gap: 1, marginTop: 1, children: [
|
|
28564
|
+
/* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: "Space:" }),
|
|
28565
|
+
/* @__PURE__ */ jsx51(Text43, { children: spaceId }),
|
|
28566
|
+
/* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: "/" }),
|
|
28567
|
+
/* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: "Environment:" }),
|
|
28568
|
+
/* @__PURE__ */ jsx51(Text43, { children: environmentId })
|
|
28430
28569
|
] });
|
|
28431
28570
|
}
|
|
28432
28571
|
|
|
28433
28572
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/DoneStep.tsx
|
|
28434
|
-
import { Fragment as
|
|
28573
|
+
import { Fragment as Fragment16, jsx as jsx52, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
28435
28574
|
var ACTIONS = ["created", "updated", "removed"];
|
|
28436
28575
|
function EntityRows({ entity, label }) {
|
|
28437
28576
|
const plural3 = (n) => `${n} ${label}${n !== 1 ? "s" : ""}`;
|
|
28438
|
-
return /* @__PURE__ */
|
|
28439
|
-
ACTIONS.filter((action) => entity[action] > 0).map((action) => /* @__PURE__ */
|
|
28440
|
-
/* @__PURE__ */
|
|
28577
|
+
return /* @__PURE__ */ jsxs42(Fragment16, { children: [
|
|
28578
|
+
ACTIONS.filter((action) => entity[action] > 0).map((action) => /* @__PURE__ */ jsxs42(Text44, { children: [
|
|
28579
|
+
/* @__PURE__ */ jsx52(Text44, { color: PALETTE.success, children: "\u2713" }),
|
|
28441
28580
|
" ",
|
|
28442
28581
|
plural3(entity[action]),
|
|
28443
28582
|
" ",
|
|
28444
28583
|
action
|
|
28445
28584
|
] }, action)),
|
|
28446
|
-
entity.failed > 0 && /* @__PURE__ */
|
|
28585
|
+
entity.failed > 0 && /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.error, children: [
|
|
28447
28586
|
"\u2717 ",
|
|
28448
28587
|
plural3(entity.failed),
|
|
28449
28588
|
" failed \u2014 check logs above"
|
|
@@ -28451,9 +28590,9 @@ function EntityRows({ entity, label }) {
|
|
|
28451
28590
|
] });
|
|
28452
28591
|
}
|
|
28453
28592
|
function LinkRow({ title, url }) {
|
|
28454
|
-
return /* @__PURE__ */
|
|
28455
|
-
/* @__PURE__ */
|
|
28456
|
-
/* @__PURE__ */
|
|
28593
|
+
return /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
|
|
28594
|
+
/* @__PURE__ */ jsx52(Text44, { color: PALETTE.muted, children: title }),
|
|
28595
|
+
/* @__PURE__ */ jsx52(Text44, { color: PALETTE.accent, children: url })
|
|
28457
28596
|
] });
|
|
28458
28597
|
}
|
|
28459
28598
|
function DoneStep({
|
|
@@ -28477,29 +28616,29 @@ function DoneStep({
|
|
|
28477
28616
|
const totalPushed = componentTypes.created + componentTypes.updated + componentTypes.removed + designTokens.created + designTokens.updated + designTokens.removed;
|
|
28478
28617
|
const success = totalFailed === 0;
|
|
28479
28618
|
const urlArgs = { host: host ?? "api.contentful.com", spaceId, environmentId };
|
|
28480
|
-
return /* @__PURE__ */
|
|
28481
|
-
/* @__PURE__ */
|
|
28482
|
-
/* @__PURE__ */
|
|
28483
|
-
success ? /* @__PURE__ */
|
|
28484
|
-
totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */
|
|
28485
|
-
/* @__PURE__ */
|
|
28486
|
-
/* @__PURE__ */
|
|
28487
|
-
summary && /* @__PURE__ */
|
|
28619
|
+
return /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
|
|
28620
|
+
/* @__PURE__ */ jsx52(StepHeader, { step: "done" }),
|
|
28621
|
+
/* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
28622
|
+
success ? /* @__PURE__ */ jsx52(Text44, { bold: true, color: PALETTE.success, children: "Done!" }) : /* @__PURE__ */ jsx52(Text44, { bold: true, color: PALETTE.warning, children: "\u26A0 Finished with errors" }),
|
|
28623
|
+
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: [
|
|
28624
|
+
/* @__PURE__ */ jsx52(EntityRows, { entity: componentTypes, label: "Component" }),
|
|
28625
|
+
/* @__PURE__ */ jsx52(EntityRows, { entity: designTokens, label: "Design Token" }),
|
|
28626
|
+
summary && /* @__PURE__ */ jsx52(Box42, { marginTop: 1, children: /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.muted, children: [
|
|
28488
28627
|
"Push result: ",
|
|
28489
28628
|
summary.succeeded,
|
|
28490
28629
|
"/",
|
|
28491
28630
|
summary.total,
|
|
28492
28631
|
" succeeded",
|
|
28493
|
-
summary.failed > 0 && /* @__PURE__ */
|
|
28632
|
+
summary.failed > 0 && /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.error, children: [
|
|
28494
28633
|
", ",
|
|
28495
28634
|
summary.failed,
|
|
28496
28635
|
" failed"
|
|
28497
28636
|
] })
|
|
28498
28637
|
] }) })
|
|
28499
28638
|
] }),
|
|
28500
|
-
failures.length > 0 && /* @__PURE__ */
|
|
28501
|
-
/* @__PURE__ */
|
|
28502
|
-
failures.map((failure) => /* @__PURE__ */
|
|
28639
|
+
failures.length > 0 && /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", children: [
|
|
28640
|
+
/* @__PURE__ */ jsx52(Text44, { bold: true, color: PALETTE.error, children: "Failure details" }),
|
|
28641
|
+
failures.map((failure) => /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.error, children: [
|
|
28503
28642
|
failure.entityType,
|
|
28504
28643
|
" ",
|
|
28505
28644
|
failure.entityId,
|
|
@@ -28507,11 +28646,11 @@ function DoneStep({
|
|
|
28507
28646
|
failure.message
|
|
28508
28647
|
] }, `${failure.entityType}:${failure.entityId}`))
|
|
28509
28648
|
] }),
|
|
28510
|
-
/* @__PURE__ */
|
|
28511
|
-
success && totalPushed > 0 && /* @__PURE__ */
|
|
28512
|
-
/* @__PURE__ */
|
|
28513
|
-
produced.components && /* @__PURE__ */
|
|
28514
|
-
produced.tokens && /* @__PURE__ */
|
|
28649
|
+
/* @__PURE__ */ jsx52(SpaceEnvironment, { spaceId, environmentId }),
|
|
28650
|
+
success && totalPushed > 0 && /* @__PURE__ */ jsxs42(Box42, { flexDirection: "column", gap: 1, children: [
|
|
28651
|
+
/* @__PURE__ */ jsx52(Text44, { color: PALETTE.success, children: "Your design system is now in Contentful Experiences." }),
|
|
28652
|
+
produced.components && /* @__PURE__ */ jsx52(LinkRow, { title: "View your components here:", url: buildPostPushUrl2(urlArgs) }),
|
|
28653
|
+
produced.tokens && /* @__PURE__ */ jsx52(
|
|
28515
28654
|
LinkRow,
|
|
28516
28655
|
{
|
|
28517
28656
|
title: "View your design tokens here:",
|
|
@@ -28519,14 +28658,14 @@ function DoneStep({
|
|
|
28519
28658
|
}
|
|
28520
28659
|
)
|
|
28521
28660
|
] }),
|
|
28522
|
-
/* @__PURE__ */
|
|
28661
|
+
/* @__PURE__ */ jsx52(ControlHints, { hints: [{ keys: "Enter / q", label: "Exit" }] })
|
|
28523
28662
|
] })
|
|
28524
28663
|
] });
|
|
28525
28664
|
}
|
|
28526
28665
|
|
|
28527
28666
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PathPrompt.tsx
|
|
28528
28667
|
import { useState as useState28 } from "react";
|
|
28529
|
-
import { Box as
|
|
28668
|
+
import { Box as Box43, Text as Text45 } from "ink";
|
|
28530
28669
|
import { readdirSync as readdirSync4 } from "node:fs";
|
|
28531
28670
|
import { dirname as dirname17, basename as basename6, join as join22 } from "node:path";
|
|
28532
28671
|
|
|
@@ -28560,7 +28699,7 @@ function useBlinkingCursor() {
|
|
|
28560
28699
|
}
|
|
28561
28700
|
|
|
28562
28701
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PathPrompt.tsx
|
|
28563
|
-
import { jsx as
|
|
28702
|
+
import { jsx as jsx53, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
28564
28703
|
function autocomplete(partial) {
|
|
28565
28704
|
if (!partial) return null;
|
|
28566
28705
|
const normalized = normalizePath(partial);
|
|
@@ -28618,20 +28757,20 @@ function PathPrompt({
|
|
|
28618
28757
|
const shown = input || defaultPath;
|
|
28619
28758
|
const isPlaceholder = input === "";
|
|
28620
28759
|
const cursor = cursorVisible ? "\u2588" : " ";
|
|
28621
|
-
return /* @__PURE__ */
|
|
28622
|
-
/* @__PURE__ */
|
|
28623
|
-
/* @__PURE__ */
|
|
28624
|
-
summary && /* @__PURE__ */
|
|
28625
|
-
/* @__PURE__ */
|
|
28626
|
-
/* @__PURE__ */
|
|
28627
|
-
/* @__PURE__ */
|
|
28760
|
+
return /* @__PURE__ */ jsxs43(Box43, { flexDirection: "column", children: [
|
|
28761
|
+
/* @__PURE__ */ jsx53(StepHeader, { step: "push" }),
|
|
28762
|
+
/* @__PURE__ */ jsxs43(Box43, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
28763
|
+
summary && /* @__PURE__ */ jsx53(Text45, { color: PALETTE.muted, children: summary }),
|
|
28764
|
+
/* @__PURE__ */ jsxs43(Box43, { gap: 1, children: [
|
|
28765
|
+
/* @__PURE__ */ jsx53(Text45, { color: PALETTE.accent, children: "?" }),
|
|
28766
|
+
/* @__PURE__ */ jsxs43(Text45, { bold: true, children: [
|
|
28628
28767
|
label,
|
|
28629
28768
|
":"
|
|
28630
28769
|
] }),
|
|
28631
|
-
/* @__PURE__ */
|
|
28632
|
-
/* @__PURE__ */
|
|
28770
|
+
/* @__PURE__ */ jsx53(Text45, { color: isPlaceholder ? PALETTE.muted : void 0, children: shown }),
|
|
28771
|
+
/* @__PURE__ */ jsx53(Text45, { children: cursor })
|
|
28633
28772
|
] }),
|
|
28634
|
-
/* @__PURE__ */
|
|
28773
|
+
/* @__PURE__ */ jsx53(
|
|
28635
28774
|
ControlHints,
|
|
28636
28775
|
{
|
|
28637
28776
|
hints: [
|
|
@@ -28646,7 +28785,7 @@ function PathPrompt({
|
|
|
28646
28785
|
}
|
|
28647
28786
|
|
|
28648
28787
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PushingStep.tsx
|
|
28649
|
-
import { Box as
|
|
28788
|
+
import { Box as Box44, Text as Text46 } from "ink";
|
|
28650
28789
|
import { ProgressBar as ProgressBar2, ThemeProvider as ThemeProvider2 } from "@inkjs/ui";
|
|
28651
28790
|
|
|
28652
28791
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/produced.ts
|
|
@@ -28669,8 +28808,8 @@ function countedThings({ components, tokens }, counts = {}) {
|
|
|
28669
28808
|
|
|
28670
28809
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/use-timed-spinner.tsx
|
|
28671
28810
|
import { useEffect as useEffect26, useState as useState29 } from "react";
|
|
28672
|
-
import { Spinner as
|
|
28673
|
-
import { jsx as
|
|
28811
|
+
import { Spinner as Spinner3 } from "@inkjs/ui";
|
|
28812
|
+
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
28674
28813
|
function useTimedSpinner() {
|
|
28675
28814
|
const [elapsedSeconds, setElapsedSeconds] = useState29(0);
|
|
28676
28815
|
useEffect26(() => {
|
|
@@ -28682,57 +28821,62 @@ function useTimedSpinner() {
|
|
|
28682
28821
|
const mins = Math.floor(elapsedSeconds / 60);
|
|
28683
28822
|
const secs = elapsedSeconds % 60;
|
|
28684
28823
|
return {
|
|
28685
|
-
spinner: /* @__PURE__ */
|
|
28824
|
+
spinner: /* @__PURE__ */ jsx54(Spinner3, {}),
|
|
28686
28825
|
elapsed: mins > 0 ? `${mins}m ${secs}s` : `${secs}s`
|
|
28687
28826
|
};
|
|
28688
28827
|
}
|
|
28689
28828
|
|
|
28690
28829
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PushingStep.tsx
|
|
28691
|
-
import { jsx as
|
|
28830
|
+
import { jsx as jsx55, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
28692
28831
|
function PushingStep({ progress, produced, counts }) {
|
|
28693
28832
|
const { spinner, elapsed } = useTimedSpinner();
|
|
28694
28833
|
const operationId = progress && progress.kind === "queued" ? progress.operationId : null;
|
|
28695
28834
|
const showGlobal = progress && progress.kind === "progress";
|
|
28696
28835
|
const showCurrent = progress && progress.kind === "progress" && progress.current ? progress.current : null;
|
|
28697
|
-
|
|
28698
|
-
|
|
28699
|
-
/* @__PURE__ */
|
|
28700
|
-
|
|
28836
|
+
const items = progress && progress.kind === "progress" ? progress.items : [];
|
|
28837
|
+
return /* @__PURE__ */ jsxs44(Box44, { flexDirection: "column", children: [
|
|
28838
|
+
/* @__PURE__ */ jsx55(StepHeader, { step: "push" }),
|
|
28839
|
+
/* @__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: [
|
|
28840
|
+
/* @__PURE__ */ jsxs44(Box44, { gap: 1, children: [
|
|
28701
28841
|
spinner,
|
|
28702
|
-
/* @__PURE__ */
|
|
28842
|
+
/* @__PURE__ */ jsxs44(Text46, { children: [
|
|
28703
28843
|
"Writing ",
|
|
28704
28844
|
countedThings(produced, counts),
|
|
28705
28845
|
" to your Contentful space..."
|
|
28706
28846
|
] })
|
|
28707
28847
|
] }),
|
|
28708
|
-
operationId && /* @__PURE__ */
|
|
28709
|
-
/* @__PURE__ */
|
|
28710
|
-
/* @__PURE__ */
|
|
28848
|
+
operationId && /* @__PURE__ */ jsxs44(Box44, { gap: 1, children: [
|
|
28849
|
+
/* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: "Operation:" }),
|
|
28850
|
+
/* @__PURE__ */ jsx55(Text46, { children: operationId })
|
|
28711
28851
|
] }),
|
|
28712
|
-
showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */
|
|
28713
|
-
/* @__PURE__ */
|
|
28714
|
-
/* @__PURE__ */
|
|
28852
|
+
showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */ jsx55(Box44, { gap: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs44(Box44, { gap: 2, children: [
|
|
28853
|
+
/* @__PURE__ */ jsx55(Box44, { width: 40, children: /* @__PURE__ */ jsx55(ThemeProvider2, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx55(ProgressBar2, { value: Math.round(progress.processed / progress.total * 100) }) }) }),
|
|
28854
|
+
/* @__PURE__ */ jsxs44(Text46, { color: PALETTE.muted, children: [
|
|
28715
28855
|
progress.processed,
|
|
28716
28856
|
"/",
|
|
28717
28857
|
progress.total,
|
|
28718
28858
|
" entities"
|
|
28859
|
+
] }),
|
|
28860
|
+
progress.failed > 0 && /* @__PURE__ */ jsxs44(Text46, { color: PALETTE.error, children: [
|
|
28861
|
+
progress.failed,
|
|
28862
|
+
" failed"
|
|
28719
28863
|
] })
|
|
28720
28864
|
] }) }),
|
|
28721
|
-
showCurrent && /* @__PURE__ */
|
|
28722
|
-
/* @__PURE__ */
|
|
28723
|
-
/* @__PURE__ */
|
|
28865
|
+
showCurrent && /* @__PURE__ */ jsxs44(Box44, { gap: 1, children: [
|
|
28866
|
+
/* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: "Now processing:" }),
|
|
28867
|
+
/* @__PURE__ */ jsx55(Text46, { children: showCurrent })
|
|
28724
28868
|
] }),
|
|
28725
|
-
/* @__PURE__ */
|
|
28869
|
+
/* @__PURE__ */ jsx55(Box44, { marginTop: 1, children: /* @__PURE__ */ jsxs44(Text46, { color: PALETTE.muted, children: [
|
|
28726
28870
|
"Elapsed: ",
|
|
28727
28871
|
elapsed
|
|
28728
28872
|
] }) })
|
|
28729
|
-
] })
|
|
28873
|
+
] }) })
|
|
28730
28874
|
] });
|
|
28731
28875
|
}
|
|
28732
28876
|
|
|
28733
28877
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/WizardPreviewStep.tsx
|
|
28734
28878
|
import { useEffect as useEffect27, useState as useState30, useMemo as useMemo7 } from "react";
|
|
28735
|
-
import { Box as
|
|
28879
|
+
import { Box as Box45, Text as Text47 } from "ink";
|
|
28736
28880
|
|
|
28737
28881
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/preview-diff.ts
|
|
28738
28882
|
function computeComponentDiffLines(current, proposed, changeClassification) {
|
|
@@ -28918,7 +29062,7 @@ function usePreviewConfirmationInput(breakingWithImpact, onConfirm) {
|
|
|
28918
29062
|
}
|
|
28919
29063
|
|
|
28920
29064
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/WizardPreviewStep.tsx
|
|
28921
|
-
import { Fragment as
|
|
29065
|
+
import { Fragment as Fragment17, jsx as jsx56, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
28922
29066
|
function buildPreviewSummaryLines(preview) {
|
|
28923
29067
|
const lines = [];
|
|
28924
29068
|
const { components, tokens } = preview;
|
|
@@ -29170,12 +29314,12 @@ function WizardPreviewStep({
|
|
|
29170
29314
|
return;
|
|
29171
29315
|
}
|
|
29172
29316
|
});
|
|
29173
|
-
return /* @__PURE__ */
|
|
29174
|
-
/* @__PURE__ */
|
|
29175
|
-
/* @__PURE__ */
|
|
29176
|
-
hasAnything ? /* @__PURE__ */
|
|
29177
|
-
/* @__PURE__ */
|
|
29178
|
-
/* @__PURE__ */
|
|
29317
|
+
return /* @__PURE__ */ jsxs45(Box45, { flexDirection: "column", children: [
|
|
29318
|
+
/* @__PURE__ */ jsx56(StepHeader, { step: "push" }),
|
|
29319
|
+
/* @__PURE__ */ jsxs45(Box45, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 2, children: [
|
|
29320
|
+
hasAnything ? /* @__PURE__ */ jsxs45(Fragment17, { children: [
|
|
29321
|
+
/* @__PURE__ */ jsx56(Text47, { children: "Here's what will happen in your space:" }),
|
|
29322
|
+
/* @__PURE__ */ jsxs45(
|
|
29179
29323
|
WindowedPanel,
|
|
29180
29324
|
{
|
|
29181
29325
|
width: Math.max(20, terminalColumns - 4),
|
|
@@ -29183,15 +29327,15 @@ function WizardPreviewStep({
|
|
|
29183
29327
|
title: diffExpanded ? `Diff (${diffLines.length} lines)` : "",
|
|
29184
29328
|
focused: false,
|
|
29185
29329
|
children: [
|
|
29186
|
-
activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */
|
|
29187
|
-
/* @__PURE__ */
|
|
29330
|
+
activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */ jsx56(Text47, { color: line.color, wrap: "truncate-end", children: line.text }, line.key)),
|
|
29331
|
+
/* @__PURE__ */ jsx56(Text47, { color: PALETTE.muted, wrap: "truncate-end", children: formatPreviewScrollIndicator(activeLines.length, boundedScrollOffset, viewportHeight) })
|
|
29188
29332
|
]
|
|
29189
29333
|
}
|
|
29190
29334
|
)
|
|
29191
|
-
] }) : /* @__PURE__ */
|
|
29192
|
-
breakingWithImpact && /* @__PURE__ */
|
|
29193
|
-
/* @__PURE__ */
|
|
29194
|
-
/* @__PURE__ */
|
|
29335
|
+
] }) : /* @__PURE__ */ jsx56(Text47, { color: PALETTE.muted, children: "Nothing to push \u2014 everything is already up to date." }),
|
|
29336
|
+
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." }) }),
|
|
29337
|
+
/* @__PURE__ */ jsx56(SpaceEnvironment, { spaceId, environmentId }),
|
|
29338
|
+
/* @__PURE__ */ jsx56(Box45, { marginTop: 1, children: /* @__PURE__ */ jsx56(
|
|
29195
29339
|
ControlHints,
|
|
29196
29340
|
{
|
|
29197
29341
|
hints: [
|
|
@@ -29407,7 +29551,7 @@ function useFlowLog(state2) {
|
|
|
29407
29551
|
}
|
|
29408
29552
|
|
|
29409
29553
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/screen.tsx
|
|
29410
|
-
import { jsx as
|
|
29554
|
+
import { jsx as jsx57, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
29411
29555
|
function canEditFromPreview(cdf) {
|
|
29412
29556
|
if (!cdf) return false;
|
|
29413
29557
|
return parseCDFComponents(cdf).components.length > 0;
|
|
@@ -29427,7 +29571,7 @@ function FlowScreen({
|
|
|
29427
29571
|
const content = (() => {
|
|
29428
29572
|
switch (state2.step) {
|
|
29429
29573
|
case "final-review":
|
|
29430
|
-
return /* @__PURE__ */
|
|
29574
|
+
return /* @__PURE__ */ jsx57(
|
|
29431
29575
|
GenerateReviewStep,
|
|
29432
29576
|
{
|
|
29433
29577
|
extractSessionId: state2.extractSessionId,
|
|
@@ -29444,10 +29588,10 @@ function FlowScreen({
|
|
|
29444
29588
|
}
|
|
29445
29589
|
);
|
|
29446
29590
|
case "previewing":
|
|
29447
|
-
return /* @__PURE__ */
|
|
29591
|
+
return /* @__PURE__ */ jsx57(RunningStep, { step: "push", description: `Computing diff for ${things} against your Contentful space...` });
|
|
29448
29592
|
case "preview-gate":
|
|
29449
29593
|
if (!state2.serverPreview) return null;
|
|
29450
|
-
return /* @__PURE__ */
|
|
29594
|
+
return /* @__PURE__ */ jsx57(
|
|
29451
29595
|
WizardPreviewStep,
|
|
29452
29596
|
{
|
|
29453
29597
|
preview: state2.serverPreview,
|
|
@@ -29459,9 +29603,9 @@ function FlowScreen({
|
|
|
29459
29603
|
}
|
|
29460
29604
|
);
|
|
29461
29605
|
case "pushing":
|
|
29462
|
-
return /* @__PURE__ */
|
|
29606
|
+
return /* @__PURE__ */ jsx57(PushingStep, { progress: state2.pushProgress, produced, counts });
|
|
29463
29607
|
case "path-prompt":
|
|
29464
|
-
return /* @__PURE__ */
|
|
29608
|
+
return /* @__PURE__ */ jsx57(
|
|
29465
29609
|
PathPrompt,
|
|
29466
29610
|
{
|
|
29467
29611
|
summary: `Saving ${things}${state2.credentialsSkipped ? "" : " and pushing them to your Contentful space"}.`,
|
|
@@ -29471,10 +29615,10 @@ function FlowScreen({
|
|
|
29471
29615
|
}
|
|
29472
29616
|
);
|
|
29473
29617
|
case "printing":
|
|
29474
|
-
return /* @__PURE__ */
|
|
29618
|
+
return /* @__PURE__ */ jsx57(RunningStep, { step: "push", description: "Writing output files to disk..." });
|
|
29475
29619
|
case "print-gate": {
|
|
29476
29620
|
const teaser = buildRunTeaserLine(state2.lastRunId);
|
|
29477
|
-
return /* @__PURE__ */
|
|
29621
|
+
return /* @__PURE__ */ jsx57(
|
|
29478
29622
|
GateStep,
|
|
29479
29623
|
{
|
|
29480
29624
|
step: "push",
|
|
@@ -29489,7 +29633,7 @@ function FlowScreen({
|
|
|
29489
29633
|
}
|
|
29490
29634
|
case "done": {
|
|
29491
29635
|
const totalFailed = state2.pushResult.componentTypes.failed + state2.pushResult.designTokens.failed;
|
|
29492
|
-
return /* @__PURE__ */
|
|
29636
|
+
return /* @__PURE__ */ jsx57(
|
|
29493
29637
|
DoneStep,
|
|
29494
29638
|
{
|
|
29495
29639
|
componentTypes: state2.pushResult.componentTypes,
|
|
@@ -29506,7 +29650,7 @@ function FlowScreen({
|
|
|
29506
29650
|
);
|
|
29507
29651
|
}
|
|
29508
29652
|
case "preview-validation-error":
|
|
29509
|
-
return /* @__PURE__ */
|
|
29653
|
+
return /* @__PURE__ */ jsx57(
|
|
29510
29654
|
PreviewValidationErrorScreen,
|
|
29511
29655
|
{
|
|
29512
29656
|
errors: state2.previewValidationErrors,
|
|
@@ -29517,7 +29661,7 @@ function FlowScreen({
|
|
|
29517
29661
|
}
|
|
29518
29662
|
);
|
|
29519
29663
|
case "error":
|
|
29520
|
-
return /* @__PURE__ */
|
|
29664
|
+
return /* @__PURE__ */ jsx57(
|
|
29521
29665
|
ErrorStep,
|
|
29522
29666
|
{
|
|
29523
29667
|
stepName: state2.errorStep,
|
|
@@ -29528,8 +29672,8 @@ function FlowScreen({
|
|
|
29528
29672
|
);
|
|
29529
29673
|
}
|
|
29530
29674
|
})();
|
|
29531
|
-
return /* @__PURE__ */
|
|
29532
|
-
/* @__PURE__ */
|
|
29675
|
+
return /* @__PURE__ */ jsxs46(Box46, { flexDirection: "column", children: [
|
|
29676
|
+
/* @__PURE__ */ jsx57(CustomPromptBanner, { generatePromptPath }),
|
|
29533
29677
|
content
|
|
29534
29678
|
] });
|
|
29535
29679
|
}
|
|
@@ -29718,6 +29862,16 @@ If using a custom host configuration, make sure the space exists on that host.`
|
|
|
29718
29862
|
};
|
|
29719
29863
|
}
|
|
29720
29864
|
|
|
29865
|
+
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/push-progress.ts
|
|
29866
|
+
function activityFromItems(items) {
|
|
29867
|
+
return items.filter((item) => item.status !== "queued").map((item) => ({
|
|
29868
|
+
name: item.id,
|
|
29869
|
+
state: item.status === "failed" ? "failed" : "done",
|
|
29870
|
+
detail: `${item.action} ${item.entityType === "DesignToken" ? "token" : "component"}`,
|
|
29871
|
+
...item.error ? { error: typeof item.error === "string" ? item.error : item.error.message } : {}
|
|
29872
|
+
}));
|
|
29873
|
+
}
|
|
29874
|
+
|
|
29721
29875
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/push.ts
|
|
29722
29876
|
var realPushDeps = (log) => ({
|
|
29723
29877
|
createClient: (options) => new ApiClient({ ...options, userAgent: cliUserAgent() }),
|
|
@@ -29782,7 +29936,16 @@ async function runPush(input, deps, onPatch) {
|
|
|
29782
29936
|
const items = op.items ?? [];
|
|
29783
29937
|
const lastDone = items.length > 0 ? items[items.length - 1] : null;
|
|
29784
29938
|
const current = lastDone && lastDone.status === "succeeded" ? lastDone.id : null;
|
|
29785
|
-
onPatch({
|
|
29939
|
+
onPatch({
|
|
29940
|
+
pushProgress: {
|
|
29941
|
+
kind: "progress",
|
|
29942
|
+
processed: done,
|
|
29943
|
+
total: summary.total,
|
|
29944
|
+
failed: summary.failed,
|
|
29945
|
+
current,
|
|
29946
|
+
items: activityFromItems(items)
|
|
29947
|
+
}
|
|
29948
|
+
});
|
|
29786
29949
|
}
|
|
29787
29950
|
safeLog(deps, { pollTick: { attempt: pollCount, status: op.sys.status, summary: op.summary } });
|
|
29788
29951
|
}
|
|
@@ -30307,7 +30470,7 @@ function useFlow(start, options = {}) {
|
|
|
30307
30470
|
|
|
30308
30471
|
// packages/experience-design-system-cli/src/tui/help/PageContainer.tsx
|
|
30309
30472
|
import { useEffect as useEffect30, useState as useState31 } from "react";
|
|
30310
|
-
import { Box as
|
|
30473
|
+
import { Box as Box47, Text as Text48, useInput as useInput13 } from "ink";
|
|
30311
30474
|
init_debug_store();
|
|
30312
30475
|
|
|
30313
30476
|
// packages/experience-design-system-cli/src/tui/help/help-info.ts
|
|
@@ -30368,13 +30531,13 @@ async function readHelpInfo() {
|
|
|
30368
30531
|
}
|
|
30369
30532
|
|
|
30370
30533
|
// packages/experience-design-system-cli/src/tui/help/PageContainer.tsx
|
|
30371
|
-
import { Fragment as
|
|
30534
|
+
import { Fragment as Fragment18, jsx as jsx58, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
30372
30535
|
function Section({ title, rows }) {
|
|
30373
|
-
return /* @__PURE__ */
|
|
30374
|
-
/* @__PURE__ */
|
|
30375
|
-
rows.map((row) => /* @__PURE__ */
|
|
30376
|
-
/* @__PURE__ */
|
|
30377
|
-
/* @__PURE__ */
|
|
30536
|
+
return /* @__PURE__ */ jsxs47(Box47, { flexDirection: "column", children: [
|
|
30537
|
+
/* @__PURE__ */ jsx58(Text48, { bold: true, color: PALETTE.accent, children: title }),
|
|
30538
|
+
rows.map((row) => /* @__PURE__ */ jsxs47(Box47, { gap: 1, children: [
|
|
30539
|
+
/* @__PURE__ */ jsx58(Box47, { width: 16, flexShrink: 0, children: /* @__PURE__ */ jsx58(Text48, { color: PALETTE.muted, children: row.label }) }),
|
|
30540
|
+
/* @__PURE__ */ jsx58(Text48, { children: row.value })
|
|
30378
30541
|
] }, row.label))
|
|
30379
30542
|
] });
|
|
30380
30543
|
}
|
|
@@ -30398,14 +30561,14 @@ function HelpScreen({ onDone }) {
|
|
|
30398
30561
|
return;
|
|
30399
30562
|
}
|
|
30400
30563
|
});
|
|
30401
|
-
return /* @__PURE__ */
|
|
30402
|
-
/* @__PURE__ */
|
|
30403
|
-
info ? /* @__PURE__ */
|
|
30404
|
-
/* @__PURE__ */
|
|
30405
|
-
/* @__PURE__ */
|
|
30406
|
-
/* @__PURE__ */
|
|
30407
|
-
] }) : /* @__PURE__ */
|
|
30408
|
-
/* @__PURE__ */
|
|
30564
|
+
return /* @__PURE__ */ jsxs47(Box47, { flexDirection: "column", paddingX: 2, paddingY: 1, gap: 1, children: [
|
|
30565
|
+
/* @__PURE__ */ jsx58(Text48, { bold: true, children: "Help" }),
|
|
30566
|
+
info ? /* @__PURE__ */ jsxs47(Fragment18, { children: [
|
|
30567
|
+
/* @__PURE__ */ jsx58(Section, { title: "Where things are stored", rows: info.storage }),
|
|
30568
|
+
/* @__PURE__ */ jsx58(Section, { title: "Troubleshooting", rows: info.troubleshooting }),
|
|
30569
|
+
/* @__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." })
|
|
30570
|
+
] }) : /* @__PURE__ */ jsx58(Text48, { color: PALETTE.accent, children: "Loading..." }),
|
|
30571
|
+
/* @__PURE__ */ jsx58(
|
|
30409
30572
|
ControlHints,
|
|
30410
30573
|
{
|
|
30411
30574
|
hints: [
|
|
@@ -30419,8 +30582,8 @@ function HelpScreen({ onDone }) {
|
|
|
30419
30582
|
|
|
30420
30583
|
// packages/experience-design-system-cli/src/tui/settings/PageContainer.tsx
|
|
30421
30584
|
import { useState as useState32 } from "react";
|
|
30422
|
-
import { Box as
|
|
30423
|
-
import { jsx as
|
|
30585
|
+
import { Box as Box48, Text as Text49, useInput as useInput14 } from "ink";
|
|
30586
|
+
import { jsx as jsx59, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
30424
30587
|
function SettingsScreen({
|
|
30425
30588
|
onNavigate,
|
|
30426
30589
|
onBack
|
|
@@ -30451,15 +30614,15 @@ function SettingsScreen({
|
|
|
30451
30614
|
onBack();
|
|
30452
30615
|
}
|
|
30453
30616
|
});
|
|
30454
|
-
return /* @__PURE__ */
|
|
30455
|
-
/* @__PURE__ */
|
|
30456
|
-
/* @__PURE__ */
|
|
30457
|
-
items.map((item, i) => /* @__PURE__ */
|
|
30617
|
+
return /* @__PURE__ */ jsxs48(Box48, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
30618
|
+
/* @__PURE__ */ jsx59(Text49, { bold: true, children: "Settings" }),
|
|
30619
|
+
/* @__PURE__ */ jsx59(Text49, { color: PALETTE.muted, children: " " }),
|
|
30620
|
+
items.map((item, i) => /* @__PURE__ */ jsxs48(Text49, { color: i === focusIdx ? PALETTE.accent : void 0, children: [
|
|
30458
30621
|
i === focusIdx ? "> " : " ",
|
|
30459
30622
|
item.label
|
|
30460
30623
|
] }, item.label)),
|
|
30461
|
-
/* @__PURE__ */
|
|
30462
|
-
/* @__PURE__ */
|
|
30624
|
+
/* @__PURE__ */ jsx59(Text49, { children: " " }),
|
|
30625
|
+
/* @__PURE__ */ jsx59(
|
|
30463
30626
|
ControlHints,
|
|
30464
30627
|
{
|
|
30465
30628
|
hints: [
|
|
@@ -30474,11 +30637,11 @@ function SettingsScreen({
|
|
|
30474
30637
|
|
|
30475
30638
|
// packages/experience-design-system-cli/src/tui/settings/configuration/ConfigurationScreen.tsx
|
|
30476
30639
|
import { useState as useState36 } from "react";
|
|
30477
|
-
import { Box as
|
|
30640
|
+
import { Box as Box52, Text as Text54, useInput as useInput17 } from "ink";
|
|
30478
30641
|
|
|
30479
30642
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentsScreen.tsx
|
|
30480
30643
|
import { useEffect as useEffect32, useRef as useRef20, useState as useState34 } from "react";
|
|
30481
|
-
import { Box as
|
|
30644
|
+
import { Box as Box50, Text as Text52, useInput as useInput15 } from "ink";
|
|
30482
30645
|
init_debug_store();
|
|
30483
30646
|
|
|
30484
30647
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/agent-status.ts
|
|
@@ -30774,11 +30937,11 @@ async function writeAgentConfig(config) {
|
|
|
30774
30937
|
|
|
30775
30938
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentDetail.tsx
|
|
30776
30939
|
import { useEffect as useEffect31, useState as useState33 } from "react";
|
|
30777
|
-
import { Box as
|
|
30940
|
+
import { Box as Box49, Text as Text51 } from "ink";
|
|
30778
30941
|
|
|
30779
30942
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentStatusBadge.tsx
|
|
30780
|
-
import { Text as
|
|
30781
|
-
import { jsx as
|
|
30943
|
+
import { Text as Text50 } from "ink";
|
|
30944
|
+
import { jsx as jsx60 } from "react/jsx-runtime";
|
|
30782
30945
|
var TONE_COLOR = {
|
|
30783
30946
|
ok: PALETTE.success,
|
|
30784
30947
|
bad: PALETTE.error,
|
|
@@ -30790,7 +30953,7 @@ function AgentStatusBadge({
|
|
|
30790
30953
|
binary
|
|
30791
30954
|
}) {
|
|
30792
30955
|
const { symbol, text, tone } = LIST_STATUS[checks ? statusFromChecks(name, checks, binary) : "checking"];
|
|
30793
|
-
return /* @__PURE__ */
|
|
30956
|
+
return /* @__PURE__ */ jsx60(Text50, { color: TONE_COLOR[tone], children: `${symbol} ${text}` });
|
|
30794
30957
|
}
|
|
30795
30958
|
|
|
30796
30959
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/apply-binary-overrides.ts
|
|
@@ -30812,16 +30975,16 @@ function applyBinaryOverrides(config) {
|
|
|
30812
30975
|
}
|
|
30813
30976
|
|
|
30814
30977
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentDetail.tsx
|
|
30815
|
-
import { jsx as
|
|
30978
|
+
import { jsx as jsx61, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
30816
30979
|
var fields = (name) => [
|
|
30817
30980
|
{ key: "binary", label: "Command path", hint: `(empty: \`${AGENT_BINARIES[name]}\` from the PATH)` },
|
|
30818
30981
|
{ key: "model", label: "Model", hint: `(empty: ${defaultModelLabel(name)})` }
|
|
30819
30982
|
];
|
|
30820
30983
|
var INSPECT_DELAY_MS = 400;
|
|
30821
30984
|
function StatusHeading() {
|
|
30822
|
-
return /* @__PURE__ */
|
|
30823
|
-
/* @__PURE__ */
|
|
30824
|
-
/* @__PURE__ */
|
|
30985
|
+
return /* @__PURE__ */ jsxs49(Box49, { gap: 1, children: [
|
|
30986
|
+
/* @__PURE__ */ jsx61(Text51, { bold: true, color: PALETTE.muted, children: "STATUS" }),
|
|
30987
|
+
/* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: "\xB7 read only" })
|
|
30825
30988
|
] });
|
|
30826
30989
|
}
|
|
30827
30990
|
function AgentDetail({
|
|
@@ -30884,7 +31047,7 @@ function AgentDetail({
|
|
|
30884
31047
|
};
|
|
30885
31048
|
const formFields = fields(name);
|
|
30886
31049
|
const labelWidth = formLabelWidth([...formFields, action]);
|
|
30887
|
-
return /* @__PURE__ */
|
|
31050
|
+
return /* @__PURE__ */ jsx61(
|
|
30888
31051
|
FieldForm,
|
|
30889
31052
|
{
|
|
30890
31053
|
title: `Settings \u203A Configuration \u203A Agents \u203A ${AGENT_LABELS[name]}`,
|
|
@@ -30901,16 +31064,16 @@ function AgentDetail({
|
|
|
30901
31064
|
actions: [action],
|
|
30902
31065
|
notice: testing ? null : notice,
|
|
30903
31066
|
busy: saving || testing,
|
|
30904
|
-
children: /* @__PURE__ */
|
|
30905
|
-
/* @__PURE__ */
|
|
30906
|
-
statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */
|
|
31067
|
+
children: /* @__PURE__ */ jsxs49(Box49, { flexDirection: "column", marginTop: 1, children: [
|
|
31068
|
+
/* @__PURE__ */ jsx61(StatusHeading, {}),
|
|
31069
|
+
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))
|
|
30907
31070
|
] })
|
|
30908
31071
|
}
|
|
30909
31072
|
);
|
|
30910
31073
|
}
|
|
30911
31074
|
|
|
30912
31075
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentsScreen.tsx
|
|
30913
|
-
import { Fragment as
|
|
31076
|
+
import { Fragment as Fragment19, jsx as jsx62, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
30914
31077
|
var NAME_WIDTH = 16;
|
|
30915
31078
|
var PANEL_LABEL_WIDTH = "Command".length;
|
|
30916
31079
|
function AgentsScreen({ onDone }) {
|
|
@@ -31020,21 +31183,21 @@ function AgentsScreen({ onDone }) {
|
|
|
31020
31183
|
}
|
|
31021
31184
|
});
|
|
31022
31185
|
if (!config) {
|
|
31023
|
-
return /* @__PURE__ */
|
|
31024
|
-
/* @__PURE__ */
|
|
31025
|
-
/* @__PURE__ */
|
|
31026
|
-
loadError ? /* @__PURE__ */
|
|
31027
|
-
/* @__PURE__ */
|
|
31186
|
+
return /* @__PURE__ */ jsxs50(Box50, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
31187
|
+
/* @__PURE__ */ jsx62(Text52, { bold: true, children: "Settings \u203A Configuration \u203A Agents" }),
|
|
31188
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
31189
|
+
loadError ? /* @__PURE__ */ jsxs50(Fragment19, { children: [
|
|
31190
|
+
/* @__PURE__ */ jsxs50(Text52, { color: PALETTE.error, children: [
|
|
31028
31191
|
"\u2717 Could not read the settings: ",
|
|
31029
31192
|
loadError
|
|
31030
31193
|
] }),
|
|
31031
|
-
/* @__PURE__ */
|
|
31032
|
-
/* @__PURE__ */
|
|
31033
|
-
] }) : /* @__PURE__ */
|
|
31194
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
31195
|
+
/* @__PURE__ */ jsx62(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
|
|
31196
|
+
] }) : /* @__PURE__ */ jsx62(Text52, { color: PALETTE.accent, children: "Loading..." })
|
|
31034
31197
|
] });
|
|
31035
31198
|
}
|
|
31036
31199
|
if (open) {
|
|
31037
|
-
return /* @__PURE__ */
|
|
31200
|
+
return /* @__PURE__ */ jsx62(
|
|
31038
31201
|
AgentDetail,
|
|
31039
31202
|
{
|
|
31040
31203
|
name: open,
|
|
@@ -31055,48 +31218,48 @@ function AgentsScreen({ onDone }) {
|
|
|
31055
31218
|
);
|
|
31056
31219
|
}
|
|
31057
31220
|
const focusedAgent = AGENT_NAMES[focus];
|
|
31058
|
-
return /* @__PURE__ */
|
|
31059
|
-
/* @__PURE__ */
|
|
31060
|
-
/* @__PURE__ */
|
|
31061
|
-
/* @__PURE__ */
|
|
31062
|
-
/* @__PURE__ */
|
|
31063
|
-
/* @__PURE__ */
|
|
31064
|
-
/* @__PURE__ */
|
|
31065
|
-
/* @__PURE__ */
|
|
31066
|
-
saving && /* @__PURE__ */
|
|
31221
|
+
return /* @__PURE__ */ jsxs50(Box50, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
31222
|
+
/* @__PURE__ */ jsx62(Text52, { bold: true, children: "Settings \u203A Configuration \u203A Agents" }),
|
|
31223
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
31224
|
+
/* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "The coding agent the CLI runs, and what was found for each one." }),
|
|
31225
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
31226
|
+
/* @__PURE__ */ jsxs50(Box50, { gap: 1, children: [
|
|
31227
|
+
/* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "Default agent" }),
|
|
31228
|
+
/* @__PURE__ */ jsx62(Text52, { bold: true, children: AGENT_LABELS[config.defaultAgent] }),
|
|
31229
|
+
saving && /* @__PURE__ */ jsx62(Text52, { color: PALETTE.accent, children: "\u2026 saving" })
|
|
31067
31230
|
] }),
|
|
31068
|
-
/* @__PURE__ */
|
|
31069
|
-
/* @__PURE__ */
|
|
31070
|
-
/* @__PURE__ */
|
|
31071
|
-
/* @__PURE__ */
|
|
31072
|
-
/* @__PURE__ */
|
|
31231
|
+
/* @__PURE__ */ jsxs50(Box50, { marginTop: 1, gap: 1, children: [
|
|
31232
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
31233
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
31234
|
+
/* @__PURE__ */ jsx62(Box50, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "AGENT" }) }),
|
|
31235
|
+
/* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "STATUS" })
|
|
31073
31236
|
] }),
|
|
31074
31237
|
AGENT_NAMES.map((name) => {
|
|
31075
31238
|
const isFocused = focusedAgent === name;
|
|
31076
|
-
return /* @__PURE__ */
|
|
31077
|
-
/* @__PURE__ */
|
|
31078
|
-
/* @__PURE__ */
|
|
31079
|
-
/* @__PURE__ */
|
|
31080
|
-
/* @__PURE__ */
|
|
31239
|
+
return /* @__PURE__ */ jsxs50(Box50, { gap: 1, children: [
|
|
31240
|
+
/* @__PURE__ */ jsx62(Text52, { color: isFocused ? PALETTE.accent : void 0, children: isFocused ? "\u276F" : " " }),
|
|
31241
|
+
/* @__PURE__ */ jsx62(Text52, { color: PALETTE.success, children: name === config.defaultAgent ? "\u2605" : " " }),
|
|
31242
|
+
/* @__PURE__ */ jsx62(Box50, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text52, { bold: isFocused, color: isFocused ? PALETTE.accent : void 0, children: AGENT_LABELS[name] }) }),
|
|
31243
|
+
/* @__PURE__ */ jsx62(AgentStatusBadge, { name, checks: checks[name], binary: config.agents[name].binary })
|
|
31081
31244
|
] }, name);
|
|
31082
31245
|
}),
|
|
31083
|
-
/* @__PURE__ */
|
|
31084
|
-
/* @__PURE__ */
|
|
31085
|
-
panelRows(focusedAgent, checks[focusedAgent], config.agents[focusedAgent]).map((row) => /* @__PURE__ */
|
|
31086
|
-
/* @__PURE__ */
|
|
31087
|
-
/* @__PURE__ */
|
|
31246
|
+
/* @__PURE__ */ jsxs50(Box50, { flexDirection: "column", marginTop: 1, children: [
|
|
31247
|
+
/* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: `\u2500 ${AGENT_LABELS[focusedAgent]} ${"\u2500".repeat(30)}` }),
|
|
31248
|
+
panelRows(focusedAgent, checks[focusedAgent], config.agents[focusedAgent]).map((row) => /* @__PURE__ */ jsxs50(Box50, { gap: 1, paddingLeft: 1, children: [
|
|
31249
|
+
/* @__PURE__ */ jsx62(Box50, { width: PANEL_LABEL_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: row.label }) }),
|
|
31250
|
+
/* @__PURE__ */ jsx62(Text52, { color: TONE_COLOR[row.tone], children: row.value })
|
|
31088
31251
|
] }, row.label))
|
|
31089
31252
|
] }),
|
|
31090
|
-
notice && /* @__PURE__ */
|
|
31091
|
-
/* @__PURE__ */
|
|
31092
|
-
/* @__PURE__ */
|
|
31253
|
+
notice && /* @__PURE__ */ jsxs50(Fragment19, { children: [
|
|
31254
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
31255
|
+
/* @__PURE__ */ jsxs50(Text52, { bold: true, color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
31093
31256
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
31094
31257
|
" ",
|
|
31095
31258
|
notice.text
|
|
31096
31259
|
] })
|
|
31097
31260
|
] }),
|
|
31098
|
-
/* @__PURE__ */
|
|
31099
|
-
/* @__PURE__ */
|
|
31261
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
31262
|
+
/* @__PURE__ */ jsx62(
|
|
31100
31263
|
ControlHints,
|
|
31101
31264
|
{
|
|
31102
31265
|
hints: [
|
|
@@ -31112,7 +31275,7 @@ function AgentsScreen({ onDone }) {
|
|
|
31112
31275
|
|
|
31113
31276
|
// packages/experience-design-system-cli/src/tui/settings/configuration/project/ProjectScreen.tsx
|
|
31114
31277
|
import { useEffect as useEffect33, useRef as useRef21, useState as useState35 } from "react";
|
|
31115
|
-
import { Box as
|
|
31278
|
+
import { Box as Box51, Text as Text53, useInput as useInput16 } from "ink";
|
|
31116
31279
|
init_debug_store();
|
|
31117
31280
|
|
|
31118
31281
|
// packages/experience-design-system-cli/src/tui/settings/configuration/project/project-store.ts
|
|
@@ -31141,7 +31304,7 @@ async function writeCredentials(config) {
|
|
|
31141
31304
|
}
|
|
31142
31305
|
|
|
31143
31306
|
// packages/experience-design-system-cli/src/tui/settings/configuration/project/ProjectScreen.tsx
|
|
31144
|
-
import { Fragment as
|
|
31307
|
+
import { Fragment as Fragment20, jsx as jsx63, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
31145
31308
|
var FIELDS3 = [
|
|
31146
31309
|
{ key: "spaceId", label: "Space ID" },
|
|
31147
31310
|
{ key: "environmentId", label: "Environment ID" },
|
|
@@ -31221,17 +31384,17 @@ function ProjectScreen({ onDone }) {
|
|
|
31221
31384
|
}
|
|
31222
31385
|
});
|
|
31223
31386
|
if (!config) {
|
|
31224
|
-
return /* @__PURE__ */
|
|
31225
|
-
/* @__PURE__ */
|
|
31226
|
-
/* @__PURE__ */
|
|
31227
|
-
loadError ? /* @__PURE__ */
|
|
31228
|
-
/* @__PURE__ */
|
|
31387
|
+
return /* @__PURE__ */ jsxs51(Box51, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
31388
|
+
/* @__PURE__ */ jsx63(Text53, { bold: true, children: "Settings \u203A Configuration \u203A Project" }),
|
|
31389
|
+
/* @__PURE__ */ jsx63(Text53, { children: " " }),
|
|
31390
|
+
loadError ? /* @__PURE__ */ jsxs51(Fragment20, { children: [
|
|
31391
|
+
/* @__PURE__ */ jsxs51(Text53, { color: PALETTE.error, children: [
|
|
31229
31392
|
"\u2717 Could not read the settings: ",
|
|
31230
31393
|
loadError
|
|
31231
31394
|
] }),
|
|
31232
|
-
/* @__PURE__ */
|
|
31233
|
-
/* @__PURE__ */
|
|
31234
|
-
] }) : /* @__PURE__ */
|
|
31395
|
+
/* @__PURE__ */ jsx63(Text53, { children: " " }),
|
|
31396
|
+
/* @__PURE__ */ jsx63(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
|
|
31397
|
+
] }) : /* @__PURE__ */ jsx63(Text53, { color: PALETTE.accent, children: "Loading..." })
|
|
31235
31398
|
] });
|
|
31236
31399
|
}
|
|
31237
31400
|
const save = () => {
|
|
@@ -31252,7 +31415,7 @@ function ProjectScreen({ onDone }) {
|
|
|
31252
31415
|
endVisit(config);
|
|
31253
31416
|
onDone();
|
|
31254
31417
|
};
|
|
31255
|
-
return /* @__PURE__ */
|
|
31418
|
+
return /* @__PURE__ */ jsx63(
|
|
31256
31419
|
FieldForm,
|
|
31257
31420
|
{
|
|
31258
31421
|
title: "Settings \u203A Configuration \u203A Project",
|
|
@@ -31274,7 +31437,7 @@ function ProjectScreen({ onDone }) {
|
|
|
31274
31437
|
}
|
|
31275
31438
|
|
|
31276
31439
|
// packages/experience-design-system-cli/src/tui/settings/configuration/ConfigurationScreen.tsx
|
|
31277
|
-
import { jsx as
|
|
31440
|
+
import { jsx as jsx64, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
31278
31441
|
var SECTIONS = [
|
|
31279
31442
|
{
|
|
31280
31443
|
id: "project",
|
|
@@ -31303,18 +31466,18 @@ function ConfigurationScreen({ onDone }) {
|
|
|
31303
31466
|
}
|
|
31304
31467
|
if (key.escape || input === "q") onDone();
|
|
31305
31468
|
});
|
|
31306
|
-
if (open === "project") return /* @__PURE__ */
|
|
31307
|
-
if (open === "agents") return /* @__PURE__ */
|
|
31308
|
-
return /* @__PURE__ */
|
|
31309
|
-
/* @__PURE__ */
|
|
31310
|
-
/* @__PURE__ */
|
|
31311
|
-
SECTIONS.map((section, index) => /* @__PURE__ */
|
|
31312
|
-
/* @__PURE__ */
|
|
31313
|
-
/* @__PURE__ */
|
|
31314
|
-
/* @__PURE__ */
|
|
31469
|
+
if (open === "project") return /* @__PURE__ */ jsx64(ProjectScreen, { onDone: close });
|
|
31470
|
+
if (open === "agents") return /* @__PURE__ */ jsx64(AgentsScreen, { onDone: close });
|
|
31471
|
+
return /* @__PURE__ */ jsxs52(Box52, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
31472
|
+
/* @__PURE__ */ jsx64(Text54, { bold: true, children: "Settings \u203A Configuration" }),
|
|
31473
|
+
/* @__PURE__ */ jsx64(Text54, { children: " " }),
|
|
31474
|
+
SECTIONS.map((section, index) => /* @__PURE__ */ jsxs52(Box52, { gap: 1, children: [
|
|
31475
|
+
/* @__PURE__ */ jsx64(Text54, { color: index === focus ? PALETTE.accent : void 0, children: index === focus ? "\u276F" : " " }),
|
|
31476
|
+
/* @__PURE__ */ jsx64(Box52, { width: 9, flexShrink: 0, children: /* @__PURE__ */ jsx64(Text54, { bold: index === focus, color: index === focus ? PALETTE.accent : void 0, children: section.label }) }),
|
|
31477
|
+
/* @__PURE__ */ jsx64(Text54, { color: PALETTE.muted, children: section.description })
|
|
31315
31478
|
] }, section.id)),
|
|
31316
|
-
/* @__PURE__ */
|
|
31317
|
-
/* @__PURE__ */
|
|
31479
|
+
/* @__PURE__ */ jsx64(Text54, { children: " " }),
|
|
31480
|
+
/* @__PURE__ */ jsx64(
|
|
31318
31481
|
ControlHints,
|
|
31319
31482
|
{
|
|
31320
31483
|
hints: [
|
|
@@ -31329,7 +31492,7 @@ function ConfigurationScreen({ onDone }) {
|
|
|
31329
31492
|
|
|
31330
31493
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx
|
|
31331
31494
|
import { useEffect as useEffect34, useState as useState37 } from "react";
|
|
31332
|
-
import { Box as
|
|
31495
|
+
import { Box as Box53, Text as Text55, useInput as useInput18 } from "ink";
|
|
31333
31496
|
|
|
31334
31497
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/analytics-store.ts
|
|
31335
31498
|
async function readAnalyticsSetting() {
|
|
@@ -31348,7 +31511,7 @@ async function writeAnalyticsSetting(setting) {
|
|
|
31348
31511
|
|
|
31349
31512
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx
|
|
31350
31513
|
init_debug_store();
|
|
31351
|
-
import { Fragment as
|
|
31514
|
+
import { Fragment as Fragment21, jsx as jsx65, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
31352
31515
|
function OptInAnalyticsScreen({ onDone }) {
|
|
31353
31516
|
const [loading, setLoading] = useState37(true);
|
|
31354
31517
|
const [enabled, setEnabled] = useState37(true);
|
|
@@ -31379,21 +31542,21 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
31379
31542
|
onDone();
|
|
31380
31543
|
}
|
|
31381
31544
|
});
|
|
31382
|
-
return /* @__PURE__ */
|
|
31383
|
-
/* @__PURE__ */
|
|
31384
|
-
/* @__PURE__ */
|
|
31385
|
-
loading ? /* @__PURE__ */
|
|
31386
|
-
/* @__PURE__ */
|
|
31545
|
+
return /* @__PURE__ */ jsxs53(Box53, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
31546
|
+
/* @__PURE__ */ jsx65(Text55, { bold: true, children: "Settings \u203A Opt-in Analytics" }),
|
|
31547
|
+
/* @__PURE__ */ jsx65(Text55, { children: " " }),
|
|
31548
|
+
loading ? /* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "Loading\u2026" }) : /* @__PURE__ */ jsxs53(Fragment21, { children: [
|
|
31549
|
+
/* @__PURE__ */ jsxs53(Text55, { children: [
|
|
31387
31550
|
"Share anonymous usage data:",
|
|
31388
31551
|
" ",
|
|
31389
|
-
/* @__PURE__ */
|
|
31552
|
+
/* @__PURE__ */ jsx65(Text55, { bold: true, color: enabled ? PALETTE.success : PALETTE.muted, children: enabled ? "On" : "Off" })
|
|
31390
31553
|
] }),
|
|
31391
|
-
/* @__PURE__ */
|
|
31392
|
-
/* @__PURE__ */
|
|
31393
|
-
/* @__PURE__ */
|
|
31554
|
+
/* @__PURE__ */ jsx65(Text55, { children: " " }),
|
|
31555
|
+
/* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "Shares which CLI commands are used and where imports succeed or fail." }),
|
|
31556
|
+
/* @__PURE__ */ jsx65(Text55, { color: PALETTE.muted, children: "Never includes source code, file paths, credentials, or authored content." })
|
|
31394
31557
|
] }),
|
|
31395
|
-
/* @__PURE__ */
|
|
31396
|
-
/* @__PURE__ */
|
|
31558
|
+
/* @__PURE__ */ jsx65(Text55, { children: " " }),
|
|
31559
|
+
/* @__PURE__ */ jsx65(
|
|
31397
31560
|
ControlHints,
|
|
31398
31561
|
{
|
|
31399
31562
|
hints: [
|
|
@@ -31407,10 +31570,10 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
31407
31570
|
|
|
31408
31571
|
// packages/experience-design-system-cli/src/tui/settings/debug-mode/screen.tsx
|
|
31409
31572
|
import { useEffect as useEffect35, useRef as useRef22, useState as useState38 } from "react";
|
|
31410
|
-
import { Box as
|
|
31573
|
+
import { Box as Box54, Text as Text56, useInput as useInput19 } from "ink";
|
|
31411
31574
|
init_debug_mode_store();
|
|
31412
31575
|
init_debug_store();
|
|
31413
|
-
import { Fragment as
|
|
31576
|
+
import { Fragment as Fragment22, jsx as jsx66, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
31414
31577
|
var ROWS = ["enabled", "retentionDays"];
|
|
31415
31578
|
var snapshotOf2 = (setting) => ({
|
|
31416
31579
|
enabled: String(setting.enabled),
|
|
@@ -31491,25 +31654,25 @@ function DebugModeScreen({ onDone }) {
|
|
|
31491
31654
|
onDone();
|
|
31492
31655
|
}
|
|
31493
31656
|
});
|
|
31494
|
-
const marker = (row) => /* @__PURE__ */
|
|
31495
|
-
const label = (row, text) => /* @__PURE__ */
|
|
31496
|
-
return /* @__PURE__ */
|
|
31497
|
-
/* @__PURE__ */
|
|
31498
|
-
/* @__PURE__ */
|
|
31499
|
-
setting ? /* @__PURE__ */
|
|
31500
|
-
/* @__PURE__ */
|
|
31657
|
+
const marker = (row) => /* @__PURE__ */ jsx66(Text56, { color: focus === row ? PALETTE.accent : void 0, children: focus === row ? "\u276F" : " " });
|
|
31658
|
+
const label = (row, text) => /* @__PURE__ */ jsx66(Text56, { bold: focus === row, color: focus === row ? PALETTE.accent : PALETTE.muted, children: text });
|
|
31659
|
+
return /* @__PURE__ */ jsxs54(Box54, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
31660
|
+
/* @__PURE__ */ jsx66(Text56, { bold: true, children: "Settings \u203A Debug Mode" }),
|
|
31661
|
+
/* @__PURE__ */ jsx66(Text56, { children: " " }),
|
|
31662
|
+
setting ? /* @__PURE__ */ jsxs54(Fragment22, { children: [
|
|
31663
|
+
/* @__PURE__ */ jsxs54(Box54, { gap: 1, children: [
|
|
31501
31664
|
marker("enabled"),
|
|
31502
31665
|
label("enabled", "Debug logging:"),
|
|
31503
|
-
/* @__PURE__ */
|
|
31666
|
+
/* @__PURE__ */ jsx66(Text56, { bold: true, color: setting.enabled ? PALETTE.success : PALETTE.muted, children: setting.enabled ? "On" : "Off" })
|
|
31504
31667
|
] }),
|
|
31505
|
-
/* @__PURE__ */
|
|
31668
|
+
/* @__PURE__ */ jsxs54(Box54, { gap: 1, children: [
|
|
31506
31669
|
marker("retentionDays"),
|
|
31507
31670
|
label("retentionDays", "Delete logs after:"),
|
|
31508
31671
|
RETENTION_CHOICES.map((days) => {
|
|
31509
31672
|
const highlighted = focus === "retentionDays" && days === pending;
|
|
31510
31673
|
const saved = days === setting.retentionDays;
|
|
31511
|
-
return /* @__PURE__ */
|
|
31512
|
-
|
|
31674
|
+
return /* @__PURE__ */ jsx66(
|
|
31675
|
+
Text56,
|
|
31513
31676
|
{
|
|
31514
31677
|
bold: highlighted || saved,
|
|
31515
31678
|
underline: highlighted,
|
|
@@ -31520,15 +31683,15 @@ function DebugModeScreen({ onDone }) {
|
|
|
31520
31683
|
);
|
|
31521
31684
|
})
|
|
31522
31685
|
] }),
|
|
31523
|
-
/* @__PURE__ */
|
|
31524
|
-
notice ? /* @__PURE__ */
|
|
31686
|
+
/* @__PURE__ */ jsx66(Text56, { children: " " }),
|
|
31687
|
+
notice ? /* @__PURE__ */ jsxs54(Text56, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
31525
31688
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
31526
31689
|
" ",
|
|
31527
31690
|
notice.text
|
|
31528
|
-
] }) : /* @__PURE__ */
|
|
31529
|
-
] }) : /* @__PURE__ */
|
|
31530
|
-
/* @__PURE__ */
|
|
31531
|
-
/* @__PURE__ */
|
|
31691
|
+
] }) : /* @__PURE__ */ jsx66(Text56, { color: PALETTE.muted, children: "\u2713 marks what is saved. Older logs are deleted the next time the CLI starts." })
|
|
31692
|
+
] }) : /* @__PURE__ */ jsx66(Text56, { color: PALETTE.muted, children: "Loading\u2026" }),
|
|
31693
|
+
/* @__PURE__ */ jsx66(Text56, { children: " " }),
|
|
31694
|
+
/* @__PURE__ */ jsx66(
|
|
31532
31695
|
ControlHints,
|
|
31533
31696
|
{
|
|
31534
31697
|
hints: [
|
|
@@ -31545,7 +31708,7 @@ function DebugModeScreen({ onDone }) {
|
|
|
31545
31708
|
}
|
|
31546
31709
|
|
|
31547
31710
|
// packages/experience-design-system-cli/app.tsx
|
|
31548
|
-
import { Fragment as
|
|
31711
|
+
import { Fragment as Fragment23, jsx as jsx67 } from "react/jsx-runtime";
|
|
31549
31712
|
var TOKENS_ONLY_HIDDEN_STEPS = ["extraction", "scope-gate"];
|
|
31550
31713
|
function App({ importOptions, inkClear }) {
|
|
31551
31714
|
const [screen, setScreen] = useState39("start");
|
|
@@ -31747,9 +31910,9 @@ function App({ importOptions, inkClear }) {
|
|
|
31747
31910
|
const content = (() => {
|
|
31748
31911
|
switch (screen) {
|
|
31749
31912
|
case "import":
|
|
31750
|
-
if (showImportResult) return /* @__PURE__ */
|
|
31913
|
+
if (showImportResult) return /* @__PURE__ */ jsx67(ImportScreen, { exitCode: importExitCode, onDone: finishImportResult });
|
|
31751
31914
|
if (flow && flowStart) {
|
|
31752
|
-
return /* @__PURE__ */
|
|
31915
|
+
return /* @__PURE__ */ jsx67(
|
|
31753
31916
|
FlowScreen,
|
|
31754
31917
|
{
|
|
31755
31918
|
state: flow.state,
|
|
@@ -31760,7 +31923,7 @@ function App({ importOptions, inkClear }) {
|
|
|
31760
31923
|
);
|
|
31761
31924
|
}
|
|
31762
31925
|
if (tokenReview) {
|
|
31763
|
-
return /* @__PURE__ */
|
|
31926
|
+
return /* @__PURE__ */ jsx67(
|
|
31764
31927
|
TokenReviewScreen,
|
|
31765
31928
|
{
|
|
31766
31929
|
tokensPath: tokenReview.tokensPath,
|
|
@@ -31769,15 +31932,15 @@ function App({ importOptions, inkClear }) {
|
|
|
31769
31932
|
}
|
|
31770
31933
|
);
|
|
31771
31934
|
}
|
|
31772
|
-
if (importDefaults === void 0) return /* @__PURE__ */
|
|
31935
|
+
if (importDefaults === void 0) return /* @__PURE__ */ jsx67(Fragment23, {});
|
|
31773
31936
|
if (target === void 0) {
|
|
31774
|
-
return /* @__PURE__ */
|
|
31937
|
+
return /* @__PURE__ */ jsx67(PreflightScreen, { onChoose: setTarget, onQuit: leaveImport });
|
|
31775
31938
|
}
|
|
31776
31939
|
const inputStep = currentInputStep(target, answers);
|
|
31777
31940
|
if (!extractionRun && !tokensOnlyRun && inputStep !== "credentials") {
|
|
31778
31941
|
switch (inputStep) {
|
|
31779
31942
|
case "project":
|
|
31780
|
-
return /* @__PURE__ */
|
|
31943
|
+
return /* @__PURE__ */ jsx67(
|
|
31781
31944
|
WelcomeScreen,
|
|
31782
31945
|
{
|
|
31783
31946
|
mode: target,
|
|
@@ -31787,7 +31950,7 @@ function App({ importOptions, inkClear }) {
|
|
|
31787
31950
|
}
|
|
31788
31951
|
);
|
|
31789
31952
|
case "token-file":
|
|
31790
|
-
return /* @__PURE__ */
|
|
31953
|
+
return /* @__PURE__ */ jsx67(
|
|
31791
31954
|
TokenInputScreen,
|
|
31792
31955
|
{
|
|
31793
31956
|
mode: target,
|
|
@@ -31797,7 +31960,7 @@ function App({ importOptions, inkClear }) {
|
|
|
31797
31960
|
}
|
|
31798
31961
|
);
|
|
31799
31962
|
case "path-validation":
|
|
31800
|
-
return /* @__PURE__ */
|
|
31963
|
+
return /* @__PURE__ */ jsx67(
|
|
31801
31964
|
PathValidationScreen,
|
|
31802
31965
|
{
|
|
31803
31966
|
mode: target,
|
|
@@ -31812,9 +31975,9 @@ function App({ importOptions, inkClear }) {
|
|
|
31812
31975
|
}
|
|
31813
31976
|
if (tokensOnlyRun) {
|
|
31814
31977
|
if (tokensOnly?.status === "done" && !tokensOnly.result.ok) {
|
|
31815
|
-
return /* @__PURE__ */
|
|
31978
|
+
return /* @__PURE__ */ jsx67(ErrorStep, { stepName: tokensOnly.result.step, message: tokensOnly.result.message, onExit: leaveImport });
|
|
31816
31979
|
}
|
|
31817
|
-
return /* @__PURE__ */
|
|
31980
|
+
return /* @__PURE__ */ jsx67(
|
|
31818
31981
|
RunningStep,
|
|
31819
31982
|
{
|
|
31820
31983
|
step: "generation",
|
|
@@ -31825,19 +31988,26 @@ function App({ importOptions, inkClear }) {
|
|
|
31825
31988
|
}
|
|
31826
31989
|
if (extractionRun) {
|
|
31827
31990
|
if (extraction?.status === "done" && !extraction.result.ok) {
|
|
31828
|
-
return /* @__PURE__ */
|
|
31991
|
+
return /* @__PURE__ */ jsx67(ErrorStep, { stepName: extraction.result.step, message: extraction.result.message, onExit: leaveImport });
|
|
31829
31992
|
}
|
|
31830
31993
|
if (extraction?.status === "running") {
|
|
31831
|
-
return /* @__PURE__ */
|
|
31994
|
+
return /* @__PURE__ */ jsx67(
|
|
31995
|
+
ExtractionScreen,
|
|
31996
|
+
{
|
|
31997
|
+
progress: extraction.progress,
|
|
31998
|
+
agent: extractionRun.input.agent,
|
|
31999
|
+
rowMs: extraction.rowMs
|
|
32000
|
+
}
|
|
32001
|
+
);
|
|
31832
32002
|
}
|
|
31833
|
-
return /* @__PURE__ */
|
|
32003
|
+
return /* @__PURE__ */ jsx67(Fragment23, {});
|
|
31834
32004
|
}
|
|
31835
32005
|
if (scopeRun && scopeFlow) {
|
|
31836
32006
|
if (scopeFlow.status === "failed") {
|
|
31837
|
-
return /* @__PURE__ */
|
|
32007
|
+
return /* @__PURE__ */ jsx67(ErrorStep, { stepName: "scope gate", message: scopeFlow.message, onExit: leaveImport });
|
|
31838
32008
|
}
|
|
31839
32009
|
if (scopeFlow.status === "deciding") {
|
|
31840
|
-
return /* @__PURE__ */
|
|
32010
|
+
return /* @__PURE__ */ jsx67(
|
|
31841
32011
|
ScopeGateScreen,
|
|
31842
32012
|
{
|
|
31843
32013
|
components: scopeFlow.load.components,
|
|
@@ -31848,22 +32018,23 @@ function App({ importOptions, inkClear }) {
|
|
|
31848
32018
|
);
|
|
31849
32019
|
}
|
|
31850
32020
|
if (generation?.status === "done" && !generation.result.ok) {
|
|
31851
|
-
return /* @__PURE__ */
|
|
32021
|
+
return /* @__PURE__ */ jsx67(ErrorStep, { stepName: generation.result.step, message: generation.result.message, onExit: leaveImport });
|
|
31852
32022
|
}
|
|
31853
32023
|
if (generation?.status === "running") {
|
|
31854
|
-
return /* @__PURE__ */
|
|
32024
|
+
return /* @__PURE__ */ jsx67(
|
|
31855
32025
|
GenerationScreen,
|
|
31856
32026
|
{
|
|
31857
32027
|
progress: generation.progress,
|
|
31858
32028
|
agent: scopeRun.input.agent,
|
|
31859
32029
|
acceptedCount: scopeFlow.decisions.accepted.length,
|
|
31860
|
-
hasTokens: scopeRun.extraction.tokensPath !== ""
|
|
32030
|
+
hasTokens: scopeRun.extraction.tokensPath !== "",
|
|
32031
|
+
rowMs: generation.rowMs
|
|
31861
32032
|
}
|
|
31862
32033
|
);
|
|
31863
32034
|
}
|
|
31864
|
-
return /* @__PURE__ */
|
|
32035
|
+
return /* @__PURE__ */ jsx67(Fragment23, {});
|
|
31865
32036
|
}
|
|
31866
|
-
return /* @__PURE__ */
|
|
32037
|
+
return /* @__PURE__ */ jsx67(
|
|
31867
32038
|
CredentialsScreen,
|
|
31868
32039
|
{
|
|
31869
32040
|
mode: target,
|
|
@@ -31874,27 +32045,27 @@ function App({ importOptions, inkClear }) {
|
|
|
31874
32045
|
}
|
|
31875
32046
|
);
|
|
31876
32047
|
case "help":
|
|
31877
|
-
return /* @__PURE__ */
|
|
32048
|
+
return /* @__PURE__ */ jsx67(HelpScreen, { onDone: goToStart });
|
|
31878
32049
|
case "settings":
|
|
31879
|
-
return /* @__PURE__ */
|
|
32050
|
+
return /* @__PURE__ */ jsx67(SettingsScreen, { onNavigate: setScreen, onBack: goToStart });
|
|
31880
32051
|
case "settings-configuration":
|
|
31881
|
-
return /* @__PURE__ */
|
|
32052
|
+
return /* @__PURE__ */ jsx67(ConfigurationScreen, { onDone: goToSettings });
|
|
31882
32053
|
case "settings-opt-in-analytics":
|
|
31883
|
-
return /* @__PURE__ */
|
|
32054
|
+
return /* @__PURE__ */ jsx67(OptInAnalyticsScreen, { onDone: goToSettings });
|
|
31884
32055
|
case "settings-debug-mode":
|
|
31885
|
-
return /* @__PURE__ */
|
|
32056
|
+
return /* @__PURE__ */ jsx67(DebugModeScreen, { onDone: goToSettings });
|
|
31886
32057
|
case "start":
|
|
31887
|
-
return /* @__PURE__ */
|
|
32058
|
+
return /* @__PURE__ */ jsx67(HomeScreen, { onNavigate: setScreen });
|
|
31888
32059
|
}
|
|
31889
32060
|
})();
|
|
31890
|
-
return /* @__PURE__ */
|
|
32061
|
+
return /* @__PURE__ */ jsx67(HiddenStepsContext.Provider, { value: target === "tokens" ? TOKENS_ONLY_HIDDEN_STEPS : [], children: content });
|
|
31891
32062
|
}
|
|
31892
32063
|
async function runApp(renderApp, importOptions) {
|
|
31893
32064
|
const inkClear = () => {
|
|
31894
32065
|
instance.clear?.();
|
|
31895
32066
|
process.stdout.write("\x1B[H\x1B[0J");
|
|
31896
32067
|
};
|
|
31897
|
-
const instance = renderApp(/* @__PURE__ */
|
|
32068
|
+
const instance = renderApp(/* @__PURE__ */ jsx67(App, { importOptions, inkClear }));
|
|
31898
32069
|
await instance.waitUntilExit();
|
|
31899
32070
|
}
|
|
31900
32071
|
export {
|