@contentful/experience-design-system-cli 2.37.1-dev-build-c299dd61.0 → 2.37.1-dev-build-283166e5.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 +1270 -1225
- package/dist/index.js +1273 -1232
- package/dist/package.json +1 -1
- package/dist/src/tui/import/steps/01-welcome/logic.d.ts +0 -5
- package/dist/src/tui/import/steps/02-token-input/logic.d.ts +0 -5
- package/dist/src/tui/import/steps/03-path-validation/logic.d.ts +0 -6
- package/dist/src/tui/shared/components/MenuScreen.d.ts +33 -0
- package/dist/src/tui/shared/components/PathStepScreen.d.ts +28 -0
- package/package.json +3 -3
- package/dist/src/tui/import/steps/01-welcome/controls.d.ts +0 -11
- package/dist/src/tui/import/steps/02-token-input/controls.d.ts +0 -11
- package/dist/src/tui/import/steps/03-path-validation/controls.d.ts +0 -13
package/dist/app.js
CHANGED
|
@@ -3104,9 +3104,9 @@ function PreflightScreen({ onChoose, onQuit }) {
|
|
|
3104
3104
|
] });
|
|
3105
3105
|
}
|
|
3106
3106
|
|
|
3107
|
-
// packages/experience-design-system-cli/src/tui/
|
|
3108
|
-
import { useState as
|
|
3109
|
-
import { Box as
|
|
3107
|
+
// packages/experience-design-system-cli/src/tui/shared/components/PathStepScreen.tsx
|
|
3108
|
+
import { useState as useState7 } from "react";
|
|
3109
|
+
import { Box as Box12, Text as Text12, useInput as useInput9 } from "ink";
|
|
3110
3110
|
|
|
3111
3111
|
// packages/experience-design-system-cli/src/tui/shared/components/ClearableTextInput.tsx
|
|
3112
3112
|
import { useRef } from "react";
|
|
@@ -3137,83 +3137,396 @@ function ClearableTextInput({ onChange, ...props }) {
|
|
|
3137
3137
|
);
|
|
3138
3138
|
}
|
|
3139
3139
|
|
|
3140
|
-
// packages/experience-design-system-cli/src/tui/
|
|
3141
|
-
import {
|
|
3140
|
+
// packages/experience-design-system-cli/src/tui/shared/components/MenuScreen.tsx
|
|
3141
|
+
import { useState as useState6 } from "react";
|
|
3142
|
+
import { Box as Box11, Text as Text11, useInput as useInput8 } from "ink";
|
|
3142
3143
|
|
|
3143
|
-
// packages/experience-design-system-cli/src/tui/
|
|
3144
|
-
|
|
3145
|
-
|
|
3144
|
+
// packages/experience-design-system-cli/src/tui/shared/components/FieldForm.tsx
|
|
3145
|
+
import { useState as useState5 } from "react";
|
|
3146
|
+
import { Box as Box10, Text as Text10, useInput as useInput7 } from "ink";
|
|
3147
|
+
import { Fragment, jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
3148
|
+
function formLabelWidth(rows) {
|
|
3149
|
+
return Math.max(...rows.map((row) => row.label.length));
|
|
3146
3150
|
}
|
|
3147
|
-
function
|
|
3148
|
-
|
|
3149
|
-
|
|
3151
|
+
function FormReadOnlyRow({
|
|
3152
|
+
label,
|
|
3153
|
+
labelWidth,
|
|
3154
|
+
children
|
|
3155
|
+
}) {
|
|
3156
|
+
return /* @__PURE__ */ jsxs10(Box10, { gap: 1, children: [
|
|
3157
|
+
/* @__PURE__ */ jsx11(Text10, { children: " " }),
|
|
3158
|
+
/* @__PURE__ */ jsx11(Box10, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx11(Text10, { color: PALETTE.muted, children: label }) }),
|
|
3159
|
+
children
|
|
3160
|
+
] });
|
|
3161
|
+
}
|
|
3162
|
+
function FieldForm({
|
|
3163
|
+
header,
|
|
3164
|
+
title,
|
|
3165
|
+
subtitle,
|
|
3166
|
+
fields: fields2,
|
|
3167
|
+
values,
|
|
3168
|
+
onChange,
|
|
3169
|
+
onSave,
|
|
3170
|
+
saveLabel = "save",
|
|
3171
|
+
enterAdvances = false,
|
|
3172
|
+
onSkip,
|
|
3173
|
+
skipLabel: skipLabel2 = "skip",
|
|
3174
|
+
onQuit,
|
|
3175
|
+
quitLabel = "back without saving",
|
|
3176
|
+
actions = [],
|
|
3177
|
+
notice,
|
|
3178
|
+
busy = false,
|
|
3179
|
+
children
|
|
3180
|
+
}) {
|
|
3181
|
+
const [active, setActive] = useState5(0);
|
|
3182
|
+
const [editing, setEditing] = useState5(false);
|
|
3183
|
+
const [valueBeforeEdit, setValueBeforeEdit] = useState5("");
|
|
3184
|
+
const rowCount = fields2.length + actions.length;
|
|
3185
|
+
const labelWidth = formLabelWidth([...fields2, ...actions]);
|
|
3186
|
+
const currentField = active < fields2.length ? fields2[active] : void 0;
|
|
3187
|
+
const currentAction = currentField ? void 0 : actions[active - fields2.length];
|
|
3188
|
+
useInput7((input, key) => {
|
|
3189
|
+
if (busy) return;
|
|
3190
|
+
if (editing) {
|
|
3191
|
+
if (key.escape && currentField) {
|
|
3192
|
+
onChange(currentField.key, valueBeforeEdit);
|
|
3193
|
+
setEditing(false);
|
|
3194
|
+
}
|
|
3195
|
+
return;
|
|
3196
|
+
}
|
|
3197
|
+
if (key.escape || input === "q") {
|
|
3198
|
+
onQuit();
|
|
3199
|
+
return;
|
|
3200
|
+
}
|
|
3201
|
+
if (input === "s") {
|
|
3202
|
+
onSave();
|
|
3203
|
+
return;
|
|
3204
|
+
}
|
|
3205
|
+
if (input === "k" && onSkip) {
|
|
3206
|
+
onSkip();
|
|
3207
|
+
return;
|
|
3208
|
+
}
|
|
3209
|
+
if (isClearKey(input, key) && currentField) {
|
|
3210
|
+
onChange(currentField.key, "");
|
|
3211
|
+
return;
|
|
3212
|
+
}
|
|
3213
|
+
if (key.tab || key.downArrow) {
|
|
3214
|
+
setActive((i) => (i + 1) % rowCount);
|
|
3215
|
+
return;
|
|
3216
|
+
}
|
|
3217
|
+
if (key.upArrow) {
|
|
3218
|
+
setActive((i) => (i - 1 + rowCount) % rowCount);
|
|
3219
|
+
return;
|
|
3220
|
+
}
|
|
3221
|
+
if (key.return) {
|
|
3222
|
+
if (currentField) {
|
|
3223
|
+
setValueBeforeEdit(values[currentField.key]);
|
|
3224
|
+
setEditing(true);
|
|
3225
|
+
} else {
|
|
3226
|
+
currentAction?.onRun();
|
|
3227
|
+
}
|
|
3228
|
+
}
|
|
3229
|
+
});
|
|
3230
|
+
const isLastField = active === fields2.length - 1;
|
|
3231
|
+
const submitField = () => {
|
|
3232
|
+
if (!enterAdvances) {
|
|
3233
|
+
setEditing(false);
|
|
3234
|
+
return;
|
|
3235
|
+
}
|
|
3236
|
+
if (isLastField) {
|
|
3237
|
+
setEditing(false);
|
|
3238
|
+
onSave();
|
|
3239
|
+
return;
|
|
3240
|
+
}
|
|
3241
|
+
const next = fields2[active + 1];
|
|
3242
|
+
setValueBeforeEdit(values[next.key]);
|
|
3243
|
+
setActive(active + 1);
|
|
3244
|
+
};
|
|
3245
|
+
const pointer = (isActive) => /* @__PURE__ */ jsx11(Text10, { color: isActive ? PALETTE.accent : void 0, children: isActive ? "\u276F" : " " });
|
|
3246
|
+
return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
|
|
3247
|
+
header,
|
|
3248
|
+
/* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", paddingX: 2, paddingTop: header ? 0 : 1, paddingBottom: 1, children: [
|
|
3249
|
+
/* @__PURE__ */ jsx11(Text10, { bold: true, children: title }),
|
|
3250
|
+
/* @__PURE__ */ jsx11(Text10, { children: " " }),
|
|
3251
|
+
subtitle && /* @__PURE__ */ jsx11(Text10, { color: PALETTE.muted, children: subtitle }),
|
|
3252
|
+
/* @__PURE__ */ jsx11(Text10, { children: " " }),
|
|
3253
|
+
/* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
|
|
3254
|
+
fields2.map((field, index) => {
|
|
3255
|
+
const isActive = index === active;
|
|
3256
|
+
const value = values[field.key];
|
|
3257
|
+
const display = field.masked ? "\u2022".repeat(value.length) : value;
|
|
3258
|
+
return /* @__PURE__ */ jsxs10(Box10, { gap: 1, children: [
|
|
3259
|
+
pointer(isActive),
|
|
3260
|
+
/* @__PURE__ */ jsx11(Box10, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx11(Text10, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
|
|
3261
|
+
isActive && editing ? /* @__PURE__ */ jsx11(
|
|
3262
|
+
ClearableTextInput,
|
|
3263
|
+
{
|
|
3264
|
+
value,
|
|
3265
|
+
onChange: (next) => onChange(field.key, next),
|
|
3266
|
+
onSubmit: submitField,
|
|
3267
|
+
mask: field.masked ? "\u2022" : void 0
|
|
3268
|
+
}
|
|
3269
|
+
) : display ? /* @__PURE__ */ jsx11(Text10, { bold: true, children: display }) : (
|
|
3270
|
+
// An empty value shows its hint (or "(empty)") in the value's place, not after an empty element, so the
|
|
3271
|
+
// text starts in the same column as every other row's.
|
|
3272
|
+
/* @__PURE__ */ jsx11(Text10, { color: PALETTE.muted, children: field.hint ?? "(empty)" })
|
|
3273
|
+
),
|
|
3274
|
+
display && field.hint && /* @__PURE__ */ jsx11(Text10, { color: PALETTE.muted, children: field.hint })
|
|
3275
|
+
] }, field.key);
|
|
3276
|
+
}),
|
|
3277
|
+
actions.map((action, index) => {
|
|
3278
|
+
const isActive = fields2.length + index === active;
|
|
3279
|
+
return /* @__PURE__ */ jsxs10(Box10, { gap: 1, children: [
|
|
3280
|
+
pointer(isActive),
|
|
3281
|
+
/* @__PURE__ */ jsx11(Box10, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx11(Text10, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: action.label }) }),
|
|
3282
|
+
/* @__PURE__ */ jsx11(Text10, { color: action.running ? PALETTE.accent : PALETTE.muted, children: action.running ? action.runningText ?? "running..." : action.description })
|
|
3283
|
+
] }, action.label);
|
|
3284
|
+
})
|
|
3285
|
+
] }),
|
|
3286
|
+
notice && /* @__PURE__ */ jsxs10(Fragment, { children: [
|
|
3287
|
+
/* @__PURE__ */ jsx11(Text10, { children: " " }),
|
|
3288
|
+
/* @__PURE__ */ jsxs10(Text10, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
3289
|
+
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
3290
|
+
" ",
|
|
3291
|
+
notice.text
|
|
3292
|
+
] })
|
|
3293
|
+
] }),
|
|
3294
|
+
children,
|
|
3295
|
+
/* @__PURE__ */ jsx11(Text10, { children: " " }),
|
|
3296
|
+
/* @__PURE__ */ jsx11(
|
|
3297
|
+
ControlHints,
|
|
3298
|
+
{
|
|
3299
|
+
hints: editing ? [
|
|
3300
|
+
{ keys: "type", label: "edit" },
|
|
3301
|
+
{ keys: "\u2190/\u2192", label: "move cursor" },
|
|
3302
|
+
{ keys: "\u23CE", label: enterAdvances ? isLastField ? saveLabel : "next" : "done" },
|
|
3303
|
+
{ keys: "Ctrl+D", label: "clear" },
|
|
3304
|
+
{ keys: "Esc", label: "cancel edit" }
|
|
3305
|
+
] : [
|
|
3306
|
+
{ keys: "\u2191/\u2193", label: "move" },
|
|
3307
|
+
{ keys: "\u23CE", label: currentAction ? currentAction.hint : "edit" },
|
|
3308
|
+
...currentField ? [{ keys: "Ctrl+D", label: "clear" }] : [],
|
|
3309
|
+
{ keys: "s", label: saveLabel },
|
|
3310
|
+
...onSkip ? [{ keys: "k", label: skipLabel2 }] : [],
|
|
3311
|
+
{ keys: "Esc/q", label: quitLabel }
|
|
3312
|
+
]
|
|
3313
|
+
}
|
|
3314
|
+
)
|
|
3315
|
+
] })
|
|
3316
|
+
] });
|
|
3150
3317
|
}
|
|
3151
3318
|
|
|
3152
|
-
// packages/experience-design-system-cli/src/tui/
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
|
-
|
|
3319
|
+
// packages/experience-design-system-cli/src/tui/shared/components/MenuScreen.tsx
|
|
3320
|
+
import { Fragment as Fragment2, jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
3321
|
+
function MenuScreen({
|
|
3322
|
+
title,
|
|
3323
|
+
subtitle,
|
|
3324
|
+
menu,
|
|
3325
|
+
rows = [],
|
|
3326
|
+
onChoose,
|
|
3327
|
+
onEscape,
|
|
3328
|
+
escapeLabel = "back",
|
|
3329
|
+
busy = false,
|
|
3330
|
+
children
|
|
3331
|
+
}) {
|
|
3332
|
+
const [focus, setFocus] = useState6(0);
|
|
3333
|
+
useInput8((_input, key) => {
|
|
3334
|
+
if (busy) return;
|
|
3335
|
+
if (key.escape) onEscape();
|
|
3336
|
+
else if (key.return) onChoose(menu[focus].choice);
|
|
3337
|
+
else if (key.upArrow) setFocus((current) => (current - 1 + menu.length) % menu.length);
|
|
3338
|
+
else if (key.downArrow || key.tab) setFocus((current) => (current + 1) % menu.length);
|
|
3161
3339
|
});
|
|
3340
|
+
const labelWidth = formLabelWidth([...menu, ...rows]);
|
|
3341
|
+
return /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", children: [
|
|
3342
|
+
/* @__PURE__ */ jsx12(StepHeader, { step: "setup" }),
|
|
3343
|
+
/* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", paddingX: 2, paddingBottom: 1, children: [
|
|
3344
|
+
/* @__PURE__ */ jsx12(Text11, { bold: true, children: title }),
|
|
3345
|
+
/* @__PURE__ */ jsx12(Text11, { children: " " }),
|
|
3346
|
+
subtitle && /* @__PURE__ */ jsxs11(Fragment2, { children: [
|
|
3347
|
+
/* @__PURE__ */ jsx12(Text11, { color: PALETTE.muted, children: subtitle }),
|
|
3348
|
+
/* @__PURE__ */ jsx12(Text11, { children: " " })
|
|
3349
|
+
] }),
|
|
3350
|
+
menu.map((item, index) => {
|
|
3351
|
+
const focused = index === focus;
|
|
3352
|
+
return /* @__PURE__ */ jsxs11(Box11, { gap: 1, children: [
|
|
3353
|
+
/* @__PURE__ */ jsx12(Text11, { color: focused ? PALETTE.accent : void 0, children: focused ? "\u276F" : " " }),
|
|
3354
|
+
/* @__PURE__ */ jsx12(Box11, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx12(Text11, { bold: focused, color: focused ? PALETTE.accent : PALETTE.muted, children: item.label }) }),
|
|
3355
|
+
/* @__PURE__ */ jsx12(Text11, { color: PALETTE.muted, children: item.description })
|
|
3356
|
+
] }, item.choice);
|
|
3357
|
+
}),
|
|
3358
|
+
rows.length > 0 && /* @__PURE__ */ jsx12(Text11, { children: " " }),
|
|
3359
|
+
rows.map((row) => /* @__PURE__ */ jsx12(FormReadOnlyRow, { label: row.label, labelWidth, children: /* @__PURE__ */ jsx12(Text11, { bold: row.value !== "", children: row.value || "(empty)" }) }, row.label)),
|
|
3360
|
+
children,
|
|
3361
|
+
/* @__PURE__ */ jsx12(Text11, { children: " " }),
|
|
3362
|
+
/* @__PURE__ */ jsx12(
|
|
3363
|
+
ControlHints,
|
|
3364
|
+
{
|
|
3365
|
+
hints: [
|
|
3366
|
+
{ keys: "\u2191/\u2193", label: "move" },
|
|
3367
|
+
{ keys: "\u23CE", label: menu[focus].label.toLowerCase() },
|
|
3368
|
+
{ keys: "Esc", label: escapeLabel }
|
|
3369
|
+
]
|
|
3370
|
+
}
|
|
3371
|
+
)
|
|
3372
|
+
] })
|
|
3373
|
+
] });
|
|
3162
3374
|
}
|
|
3163
3375
|
|
|
3164
|
-
// packages/experience-design-system-cli/src/tui/
|
|
3165
|
-
import { jsx as
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
|
|
3171
|
-
|
|
3376
|
+
// packages/experience-design-system-cli/src/tui/shared/components/PathStepScreen.tsx
|
|
3377
|
+
import { Fragment as Fragment3, jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
3378
|
+
var MENU = [
|
|
3379
|
+
{ choice: "continue", label: "Continue", description: "Use this path and go on" },
|
|
3380
|
+
{ choice: "edit", label: "Edit", description: "Change the path" },
|
|
3381
|
+
{ choice: "back", label: "Back", description: "Go back" }
|
|
3382
|
+
];
|
|
3383
|
+
function PathStepScreen({
|
|
3384
|
+
title,
|
|
3385
|
+
subtitle,
|
|
3386
|
+
label,
|
|
3387
|
+
initialPath = "",
|
|
3388
|
+
toPath,
|
|
3389
|
+
check,
|
|
3390
|
+
onContinue,
|
|
3391
|
+
onBack
|
|
3392
|
+
}) {
|
|
3393
|
+
const [value, setValue] = useState7(initialPath);
|
|
3394
|
+
const [savedValue, setSavedValue] = useState7(toPath(initialPath) === null ? "" : initialPath);
|
|
3395
|
+
const [editing, setEditing] = useState7(toPath(initialPath) === null);
|
|
3396
|
+
const [failure, setFailure] = useState7(null);
|
|
3397
|
+
useInput9(
|
|
3398
|
+
(_input, key) => {
|
|
3399
|
+
if (!key.escape) return;
|
|
3400
|
+
if (savedValue === "") {
|
|
3401
|
+
onBack();
|
|
3402
|
+
return;
|
|
3403
|
+
}
|
|
3404
|
+
setValue(savedValue);
|
|
3405
|
+
setFailure(null);
|
|
3406
|
+
setEditing(false);
|
|
3407
|
+
},
|
|
3408
|
+
{ isActive: editing }
|
|
3409
|
+
);
|
|
3410
|
+
const choose = (choice) => {
|
|
3411
|
+
if (choice === "edit") {
|
|
3412
|
+
setFailure(null);
|
|
3413
|
+
setEditing(true);
|
|
3414
|
+
return;
|
|
3415
|
+
}
|
|
3416
|
+
if (choice === "back") {
|
|
3417
|
+
onBack();
|
|
3418
|
+
return;
|
|
3419
|
+
}
|
|
3420
|
+
const path5 = toPath(value);
|
|
3421
|
+
if (path5 === null) return;
|
|
3422
|
+
const result = check(path5);
|
|
3423
|
+
if (result.ok) onContinue(result.path);
|
|
3424
|
+
else setFailure({ error: result.error, resolvedPath: result.resolvedPath });
|
|
3172
3425
|
};
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3426
|
+
const submit = (typed) => {
|
|
3427
|
+
if (toPath(typed) === null) {
|
|
3428
|
+
setFailure({ error: `Enter the ${label.toLowerCase()}.` });
|
|
3429
|
+
return;
|
|
3430
|
+
}
|
|
3431
|
+
setSavedValue(typed);
|
|
3432
|
+
setEditing(false);
|
|
3433
|
+
};
|
|
3434
|
+
const failureLines = failure && /* @__PURE__ */ jsxs12(Fragment3, { children: [
|
|
3435
|
+
/* @__PURE__ */ jsx13(Text12, { children: " " }),
|
|
3436
|
+
/* @__PURE__ */ jsxs12(Text12, { color: PALETTE.error, children: [
|
|
3437
|
+
"\u2717 ",
|
|
3438
|
+
failure.error
|
|
3439
|
+
] }),
|
|
3440
|
+
failure.resolvedPath && /* @__PURE__ */ jsxs12(Text12, { color: PALETTE.muted, children: [
|
|
3441
|
+
" Resolved to: ",
|
|
3442
|
+
failure.resolvedPath
|
|
3443
|
+
] })
|
|
3444
|
+
] });
|
|
3445
|
+
if (!editing) {
|
|
3446
|
+
return /* @__PURE__ */ jsx13(
|
|
3447
|
+
MenuScreen,
|
|
3448
|
+
{
|
|
3449
|
+
title,
|
|
3450
|
+
subtitle,
|
|
3451
|
+
menu: MENU,
|
|
3452
|
+
rows: [{ label, value: savedValue }],
|
|
3453
|
+
onChoose: choose,
|
|
3454
|
+
onEscape: onBack,
|
|
3455
|
+
children: failureLines
|
|
3456
|
+
}
|
|
3457
|
+
);
|
|
3458
|
+
}
|
|
3459
|
+
return /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
|
|
3460
|
+
/* @__PURE__ */ jsx13(StepHeader, { step: "setup" }),
|
|
3461
|
+
/* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", paddingX: 2, paddingBottom: 1, children: [
|
|
3462
|
+
/* @__PURE__ */ jsx13(Text12, { bold: true, children: title }),
|
|
3463
|
+
/* @__PURE__ */ jsx13(Text12, { children: " " }),
|
|
3464
|
+
/* @__PURE__ */ jsx13(Text12, { color: PALETTE.muted, children: subtitle }),
|
|
3465
|
+
/* @__PURE__ */ jsx13(Text12, { children: " " }),
|
|
3466
|
+
/* @__PURE__ */ jsxs12(Box12, { gap: 1, children: [
|
|
3467
|
+
/* @__PURE__ */ jsx13(Text12, { color: PALETTE.accent, children: "?" }),
|
|
3468
|
+
/* @__PURE__ */ jsxs12(Text12, { children: [
|
|
3469
|
+
label,
|
|
3470
|
+
":"
|
|
3471
|
+
] }),
|
|
3472
|
+
/* @__PURE__ */ jsx13(
|
|
3473
|
+
ClearableTextInput,
|
|
3474
|
+
{
|
|
3475
|
+
value,
|
|
3476
|
+
onChange: (next) => {
|
|
3477
|
+
setValue(next);
|
|
3478
|
+
setFailure(null);
|
|
3479
|
+
},
|
|
3480
|
+
onSubmit: submit
|
|
3481
|
+
}
|
|
3482
|
+
)
|
|
3183
3483
|
] }),
|
|
3184
|
-
|
|
3484
|
+
failureLines,
|
|
3485
|
+
/* @__PURE__ */ jsx13(Text12, { children: " " }),
|
|
3486
|
+
/* @__PURE__ */ jsx13(
|
|
3487
|
+
ControlHints,
|
|
3488
|
+
{
|
|
3489
|
+
hints: [
|
|
3490
|
+
{ keys: "\u23CE", label: "done" },
|
|
3491
|
+
{ keys: "Ctrl+D", label: "clear" },
|
|
3492
|
+
{ keys: "Esc", label: savedValue === "" ? "back" : "cancel edit" }
|
|
3493
|
+
]
|
|
3494
|
+
}
|
|
3495
|
+
)
|
|
3185
3496
|
] })
|
|
3186
3497
|
] });
|
|
3187
3498
|
}
|
|
3188
3499
|
|
|
3189
|
-
// packages/experience-design-system-cli/src/tui/import/steps/
|
|
3190
|
-
|
|
3191
|
-
|
|
3500
|
+
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/logic.ts
|
|
3501
|
+
function toProjectPath(value) {
|
|
3502
|
+
const projectPath = value.trim();
|
|
3503
|
+
return projectPath === "" ? null : projectPath;
|
|
3504
|
+
}
|
|
3192
3505
|
|
|
3193
|
-
// packages/experience-design-system-cli/src/tui/import/steps/
|
|
3194
|
-
import {
|
|
3506
|
+
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx
|
|
3507
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
3508
|
+
function WelcomeScreen({ onContinue, onQuit, initialPath = "" }) {
|
|
3509
|
+
return /* @__PURE__ */ jsx14(
|
|
3510
|
+
PathStepScreen,
|
|
3511
|
+
{
|
|
3512
|
+
title: "Where is your component library?",
|
|
3513
|
+
subtitle: "The folder with your components. You can use ~, relative, or absolute paths.",
|
|
3514
|
+
label: "Project path",
|
|
3515
|
+
initialPath,
|
|
3516
|
+
toPath: toProjectPath,
|
|
3517
|
+
check: (path5) => ({ ok: true, path: path5 }),
|
|
3518
|
+
onContinue,
|
|
3519
|
+
onBack: onQuit
|
|
3520
|
+
}
|
|
3521
|
+
);
|
|
3522
|
+
}
|
|
3195
3523
|
|
|
3196
3524
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/logic.ts
|
|
3197
|
-
function shouldGoBack(key) {
|
|
3198
|
-
return key.escape;
|
|
3199
|
-
}
|
|
3200
3525
|
function toTokenPath(value) {
|
|
3201
3526
|
const tokenPath = value.trim();
|
|
3202
3527
|
return tokenPath === "" ? null : tokenPath;
|
|
3203
3528
|
}
|
|
3204
3529
|
|
|
3205
|
-
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/controls.ts
|
|
3206
|
-
var TOKEN_INPUT_CONTROLS = [
|
|
3207
|
-
{ keys: "Enter", label: "Continue" },
|
|
3208
|
-
{ keys: "Ctrl+D", label: "Clear" },
|
|
3209
|
-
{ keys: "Esc", label: "Back" }
|
|
3210
|
-
];
|
|
3211
|
-
function useTokenInputControls(onBack) {
|
|
3212
|
-
useInput8((_input, key) => {
|
|
3213
|
-
if (shouldGoBack(key)) onBack();
|
|
3214
|
-
});
|
|
3215
|
-
}
|
|
3216
|
-
|
|
3217
3530
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/validate-path.ts
|
|
3218
3531
|
import { statSync } from "node:fs";
|
|
3219
3532
|
|
|
@@ -3254,153 +3567,26 @@ function validateTokenPath(rawPath) {
|
|
|
3254
3567
|
}
|
|
3255
3568
|
|
|
3256
3569
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx
|
|
3257
|
-
import { jsx as
|
|
3570
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
3258
3571
|
function TokenInputScreen({ onConfirm, onBack, initialPath = "" }) {
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
return;
|
|
3572
|
+
return /* @__PURE__ */ jsx15(
|
|
3573
|
+
PathStepScreen,
|
|
3574
|
+
{
|
|
3575
|
+
title: "Design tokens",
|
|
3576
|
+
subtitle: "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).",
|
|
3577
|
+
label: "Token path",
|
|
3578
|
+
initialPath,
|
|
3579
|
+
toPath: toTokenPath,
|
|
3580
|
+
check: validateTokenPath,
|
|
3581
|
+
onContinue: onConfirm,
|
|
3582
|
+
onBack
|
|
3271
3583
|
}
|
|
3272
|
-
|
|
3273
|
-
if (check.ok) onConfirm(check.path);
|
|
3274
|
-
else setFailure({ error: check.error, resolvedPath: check.resolvedPath });
|
|
3275
|
-
};
|
|
3276
|
-
return /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", children: [
|
|
3277
|
-
/* @__PURE__ */ jsx12(StepHeader, { step: "setup" }),
|
|
3278
|
-
/* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
3279
|
-
/* @__PURE__ */ jsx12(Text11, { bold: true, children: "Design tokens" }),
|
|
3280
|
-
/* @__PURE__ */ jsx12(Text11, { 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)." }),
|
|
3281
|
-
/* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", children: [
|
|
3282
|
-
/* @__PURE__ */ jsxs11(Box11, { gap: 1, children: [
|
|
3283
|
-
/* @__PURE__ */ jsx12(Text11, { color: PALETTE.accent, children: "?" }),
|
|
3284
|
-
/* @__PURE__ */ jsx12(Text11, { children: "Token path:" }),
|
|
3285
|
-
/* @__PURE__ */ jsx12(ClearableTextInput, { value: tokenPath, onChange: change, onSubmit: submit })
|
|
3286
|
-
] }),
|
|
3287
|
-
failure && /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", children: [
|
|
3288
|
-
/* @__PURE__ */ jsxs11(Text11, { color: PALETTE.error, children: [
|
|
3289
|
-
"\u2717 ",
|
|
3290
|
-
failure.error
|
|
3291
|
-
] }),
|
|
3292
|
-
failure.resolvedPath && /* @__PURE__ */ jsxs11(Text11, { color: PALETTE.muted, children: [
|
|
3293
|
-
" Resolved to: ",
|
|
3294
|
-
failure.resolvedPath
|
|
3295
|
-
] })
|
|
3296
|
-
] })
|
|
3297
|
-
] }),
|
|
3298
|
-
/* @__PURE__ */ jsx12(Box11, { marginTop: 1, children: /* @__PURE__ */ jsx12(ControlHints, { hints: TOKEN_INPUT_CONTROLS }) })
|
|
3299
|
-
] })
|
|
3300
|
-
] });
|
|
3584
|
+
);
|
|
3301
3585
|
}
|
|
3302
3586
|
|
|
3303
3587
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/screen.tsx
|
|
3304
|
-
import { useEffect as useEffect4, useMemo, useState as
|
|
3305
|
-
import { Box as
|
|
3306
|
-
|
|
3307
|
-
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/controls.ts
|
|
3308
|
-
import { useInput as useInput9 } from "ink";
|
|
3309
|
-
|
|
3310
|
-
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/logic.ts
|
|
3311
|
-
var COMPONENT_CATEGORIES = ["tsx", "ts", "vue", "astro", "jsx", "js"];
|
|
3312
|
-
var ROW_LABELS = {
|
|
3313
|
-
tsx: ".tsx files",
|
|
3314
|
-
ts: ".ts files",
|
|
3315
|
-
vue: ".vue files",
|
|
3316
|
-
astro: ".astro files",
|
|
3317
|
-
jsx: ".jsx files",
|
|
3318
|
-
js: ".js files",
|
|
3319
|
-
json: ".json files (design tokens)",
|
|
3320
|
-
other: "other (ignored)"
|
|
3321
|
-
};
|
|
3322
|
-
var ROW_ORDER = ["tsx", "ts", "vue", "astro", "jsx", "js", "json", "other"];
|
|
3323
|
-
function describeFailure(failure, path5) {
|
|
3324
|
-
switch (failure) {
|
|
3325
|
-
case "is-file":
|
|
3326
|
-
return {
|
|
3327
|
-
headline: "That's a file, not a directory.",
|
|
3328
|
-
hints: [
|
|
3329
|
-
"Provide the path to your component library's root folder, not a specific file.",
|
|
3330
|
-
"Example: ~/projects/my-design-system"
|
|
3331
|
-
]
|
|
3332
|
-
};
|
|
3333
|
-
case "not-found":
|
|
3334
|
-
return {
|
|
3335
|
-
headline: `Directory not found: ${path5}`,
|
|
3336
|
-
hints: ["Double-check the path and try again. Tip: you can use ~, relative, or absolute paths."]
|
|
3337
|
-
};
|
|
3338
|
-
case "permission-denied":
|
|
3339
|
-
return {
|
|
3340
|
-
headline: `Permission denied: ${path5}`,
|
|
3341
|
-
hints: ["You don't have read access to this directory."]
|
|
3342
|
-
};
|
|
3343
|
-
case "not-directory":
|
|
3344
|
-
return { headline: `Not a directory: ${path5}`, hints: [] };
|
|
3345
|
-
case "unreadable":
|
|
3346
|
-
return { headline: `Cannot access: ${path5}`, hints: [] };
|
|
3347
|
-
}
|
|
3348
|
-
}
|
|
3349
|
-
function summarize(counts, { hasTokens = true } = {}) {
|
|
3350
|
-
const rows = ROW_ORDER.filter((category) => counts[category] > 0).map((category) => {
|
|
3351
|
-
if (category === "json" && !hasTokens) return { label: ".json files (ignored)", count: counts.json, tone: "muted" };
|
|
3352
|
-
const tone = category === "json" ? "accent" : category === "other" ? "muted" : "default";
|
|
3353
|
-
return { label: ROW_LABELS[category], count: counts[category], tone };
|
|
3354
|
-
});
|
|
3355
|
-
const componentFiles = COMPONENT_CATEGORIES.reduce((sum, category) => sum + counts[category], 0);
|
|
3356
|
-
if (componentFiles > 0) return { total: counts.total, rows };
|
|
3357
|
-
if (hasTokens && counts.json > 0) {
|
|
3358
|
-
return { total: counts.total, rows, warning: "No component files found \u2014 only token files detected." };
|
|
3359
|
-
}
|
|
3360
|
-
return {
|
|
3361
|
-
total: counts.total,
|
|
3362
|
-
rows,
|
|
3363
|
-
warning: hasTokens ? "No component or token files found. Try a different path." : "No component files found. Try a different path."
|
|
3364
|
-
};
|
|
3365
|
-
}
|
|
3366
|
-
function phaseOf(scan) {
|
|
3367
|
-
if (scan === void 0) return "scanning";
|
|
3368
|
-
return scan.ok ? "ready" : "failed";
|
|
3369
|
-
}
|
|
3370
|
-
function keyAction(phase, input, key) {
|
|
3371
|
-
if (key.escape) return "back";
|
|
3372
|
-
if (phase === "ready") {
|
|
3373
|
-
if (key.return) return "confirm";
|
|
3374
|
-
if (input === "e") return "change-path";
|
|
3375
|
-
}
|
|
3376
|
-
if (phase === "failed" && (key.return || input === "e")) return "change-path";
|
|
3377
|
-
return void 0;
|
|
3378
|
-
}
|
|
3379
|
-
|
|
3380
|
-
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/controls.ts
|
|
3381
|
-
var CONTROLS = {
|
|
3382
|
-
scanning: [{ keys: "Esc", label: "Back" }],
|
|
3383
|
-
ready: [
|
|
3384
|
-
{ keys: "Enter", label: "Yes, continue" },
|
|
3385
|
-
{ keys: "e", label: "Change path" },
|
|
3386
|
-
{ keys: "Esc", label: "Back" }
|
|
3387
|
-
],
|
|
3388
|
-
failed: [
|
|
3389
|
-
{ keys: "Enter/e", label: "Try a different path" },
|
|
3390
|
-
{ keys: "Esc", label: "Back" }
|
|
3391
|
-
]
|
|
3392
|
-
};
|
|
3393
|
-
function controlsFor(phase) {
|
|
3394
|
-
return CONTROLS[phase];
|
|
3395
|
-
}
|
|
3396
|
-
function usePathValidationControls(phase, handlers) {
|
|
3397
|
-
useInput9((input, key) => {
|
|
3398
|
-
const action = keyAction(phase, input, key);
|
|
3399
|
-
if (action === "confirm") handlers.onConfirm();
|
|
3400
|
-
else if (action === "change-path") handlers.onChangePath();
|
|
3401
|
-
else if (action === "back") handlers.onBack();
|
|
3402
|
-
});
|
|
3403
|
-
}
|
|
3588
|
+
import { useEffect as useEffect4, useMemo, useState as useState8 } from "react";
|
|
3589
|
+
import { Box as Box13, Text as Text13 } from "ink";
|
|
3404
3590
|
|
|
3405
3591
|
// packages/experience-design-system-backend-pipeline/dist/src/persistence/src/session/repositories/db.js
|
|
3406
3592
|
import { DatabaseSync } from "node:sqlite";
|
|
@@ -17884,29 +18070,100 @@ async function runGenerateComponentsSession(request) {
|
|
|
17884
18070
|
db.close();
|
|
17885
18071
|
}
|
|
17886
18072
|
}
|
|
17887
|
-
|
|
17888
|
-
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/helpers/scan-files.ts
|
|
17889
|
-
function scanFiles(directory) {
|
|
17890
|
-
return toScanResult(collectFiles(directory));
|
|
17891
|
-
}
|
|
17892
|
-
function toScanResult(outcome) {
|
|
17893
|
-
if (!outcome.ok) return { ok: false, failure: outcome.failure };
|
|
18073
|
+
|
|
18074
|
+
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/helpers/scan-files.ts
|
|
18075
|
+
function scanFiles(directory) {
|
|
18076
|
+
return toScanResult(collectFiles(directory));
|
|
18077
|
+
}
|
|
18078
|
+
function toScanResult(outcome) {
|
|
18079
|
+
if (!outcome.ok) return { ok: false, failure: outcome.failure };
|
|
18080
|
+
return {
|
|
18081
|
+
ok: true,
|
|
18082
|
+
counts: foldSvelteAndMdIntoOther(outcome.result.counts),
|
|
18083
|
+
filePaths: outcome.result.filePaths,
|
|
18084
|
+
warnings: outcome.result.warnings
|
|
18085
|
+
};
|
|
18086
|
+
}
|
|
18087
|
+
function foldSvelteAndMdIntoOther(counts) {
|
|
18088
|
+
const { svelte, md, ...rest } = counts;
|
|
18089
|
+
return { ...rest, other: rest.other + svelte + md };
|
|
18090
|
+
}
|
|
18091
|
+
|
|
18092
|
+
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/logic.ts
|
|
18093
|
+
var COMPONENT_CATEGORIES = ["tsx", "ts", "vue", "astro", "jsx", "js"];
|
|
18094
|
+
var ROW_LABELS = {
|
|
18095
|
+
tsx: ".tsx files",
|
|
18096
|
+
ts: ".ts files",
|
|
18097
|
+
vue: ".vue files",
|
|
18098
|
+
astro: ".astro files",
|
|
18099
|
+
jsx: ".jsx files",
|
|
18100
|
+
js: ".js files",
|
|
18101
|
+
json: ".json files (design tokens)",
|
|
18102
|
+
other: "other (ignored)"
|
|
18103
|
+
};
|
|
18104
|
+
var ROW_ORDER = ["tsx", "ts", "vue", "astro", "jsx", "js", "json", "other"];
|
|
18105
|
+
function describeFailure(failure, path5) {
|
|
18106
|
+
switch (failure) {
|
|
18107
|
+
case "is-file":
|
|
18108
|
+
return {
|
|
18109
|
+
headline: "That's a file, not a directory.",
|
|
18110
|
+
hints: [
|
|
18111
|
+
"Provide the path to your component library's root folder, not a specific file.",
|
|
18112
|
+
"Example: ~/projects/my-design-system"
|
|
18113
|
+
]
|
|
18114
|
+
};
|
|
18115
|
+
case "not-found":
|
|
18116
|
+
return {
|
|
18117
|
+
headline: `Directory not found: ${path5}`,
|
|
18118
|
+
hints: ["Double-check the path and try again. Tip: you can use ~, relative, or absolute paths."]
|
|
18119
|
+
};
|
|
18120
|
+
case "permission-denied":
|
|
18121
|
+
return {
|
|
18122
|
+
headline: `Permission denied: ${path5}`,
|
|
18123
|
+
hints: ["You don't have read access to this directory."]
|
|
18124
|
+
};
|
|
18125
|
+
case "not-directory":
|
|
18126
|
+
return { headline: `Not a directory: ${path5}`, hints: [] };
|
|
18127
|
+
case "unreadable":
|
|
18128
|
+
return { headline: `Cannot access: ${path5}`, hints: [] };
|
|
18129
|
+
}
|
|
18130
|
+
}
|
|
18131
|
+
function summarize(counts, { hasTokens = true } = {}) {
|
|
18132
|
+
const rows = ROW_ORDER.filter((category) => counts[category] > 0).map((category) => {
|
|
18133
|
+
if (category === "json" && !hasTokens) return { label: ".json files (ignored)", count: counts.json, tone: "muted" };
|
|
18134
|
+
const tone = category === "json" ? "accent" : category === "other" ? "muted" : "default";
|
|
18135
|
+
return { label: ROW_LABELS[category], count: counts[category], tone };
|
|
18136
|
+
});
|
|
18137
|
+
const componentFiles = COMPONENT_CATEGORIES.reduce((sum, category) => sum + counts[category], 0);
|
|
18138
|
+
if (componentFiles > 0) return { total: counts.total, rows };
|
|
18139
|
+
if (hasTokens && counts.json > 0) {
|
|
18140
|
+
return { total: counts.total, rows, warning: "No component files found \u2014 only token files detected." };
|
|
18141
|
+
}
|
|
17894
18142
|
return {
|
|
17895
|
-
|
|
17896
|
-
|
|
17897
|
-
|
|
17898
|
-
warnings: outcome.result.warnings
|
|
18143
|
+
total: counts.total,
|
|
18144
|
+
rows,
|
|
18145
|
+
warning: hasTokens ? "No component or token files found. Try a different path." : "No component files found. Try a different path."
|
|
17899
18146
|
};
|
|
17900
18147
|
}
|
|
17901
|
-
function
|
|
17902
|
-
|
|
17903
|
-
return
|
|
18148
|
+
function phaseOf(scan) {
|
|
18149
|
+
if (scan === void 0) return "scanning";
|
|
18150
|
+
return scan.ok ? "ready" : "failed";
|
|
17904
18151
|
}
|
|
17905
18152
|
|
|
17906
18153
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/screen.tsx
|
|
17907
|
-
import { jsx as
|
|
18154
|
+
import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
18155
|
+
var BACK = { choice: "back", label: "Back", description: "Go back" };
|
|
18156
|
+
var MENUS = {
|
|
18157
|
+
scanning: [BACK],
|
|
18158
|
+
ready: [
|
|
18159
|
+
{ choice: "continue", label: "Continue", description: "Use these files and go on" },
|
|
18160
|
+
{ choice: "change-path", label: "Change path", description: "Pick a different folder" },
|
|
18161
|
+
BACK
|
|
18162
|
+
],
|
|
18163
|
+
failed: [{ choice: "change-path", label: "Try a different path", description: "Pick a different folder" }, BACK]
|
|
18164
|
+
};
|
|
17908
18165
|
function Row({ row }) {
|
|
17909
|
-
return /* @__PURE__ */
|
|
18166
|
+
return /* @__PURE__ */ jsxs13(Text13, { color: row.tone === "accent" ? PALETTE.accent : row.tone === "muted" ? PALETTE.muted : void 0, children: [
|
|
17910
18167
|
" \u2022 ",
|
|
17911
18168
|
String(row.count).padStart(3),
|
|
17912
18169
|
" ",
|
|
@@ -17915,12 +18172,12 @@ function Row({ row }) {
|
|
|
17915
18172
|
}
|
|
17916
18173
|
function Failure({ scan, path: path5 }) {
|
|
17917
18174
|
const { headline, hints } = describeFailure(scan.failure, path5);
|
|
17918
|
-
return /* @__PURE__ */
|
|
17919
|
-
/* @__PURE__ */
|
|
18175
|
+
return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
|
|
18176
|
+
/* @__PURE__ */ jsxs13(Text13, { color: PALETTE.error, children: [
|
|
17920
18177
|
"\u2717 ",
|
|
17921
18178
|
headline
|
|
17922
18179
|
] }),
|
|
17923
|
-
hints.map((hint) => /* @__PURE__ */
|
|
18180
|
+
hints.map((hint) => /* @__PURE__ */ jsx16(Text13, { color: PALETTE.muted, children: hint }, hint))
|
|
17924
18181
|
] });
|
|
17925
18182
|
}
|
|
17926
18183
|
function Summary({
|
|
@@ -17929,24 +18186,23 @@ function Summary({
|
|
|
17929
18186
|
hasTokens
|
|
17930
18187
|
}) {
|
|
17931
18188
|
const { total, rows, warning } = summarize(scan.counts, { hasTokens });
|
|
17932
|
-
return /* @__PURE__ */
|
|
17933
|
-
/* @__PURE__ */
|
|
18189
|
+
return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", gap: 1, children: [
|
|
18190
|
+
/* @__PURE__ */ jsxs13(Text13, { children: [
|
|
17934
18191
|
"Scanned ",
|
|
17935
|
-
/* @__PURE__ */
|
|
18192
|
+
/* @__PURE__ */ jsx16(Text13, { bold: true, children: path5 })
|
|
17936
18193
|
] }),
|
|
17937
|
-
/* @__PURE__ */
|
|
17938
|
-
/* @__PURE__ */
|
|
18194
|
+
/* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
|
|
18195
|
+
/* @__PURE__ */ jsxs13(Text13, { color: PALETTE.success, children: [
|
|
17939
18196
|
"\u2713 Found ",
|
|
17940
18197
|
total,
|
|
17941
18198
|
" files:"
|
|
17942
18199
|
] }),
|
|
17943
|
-
rows.map((row) => /* @__PURE__ */
|
|
18200
|
+
rows.map((row) => /* @__PURE__ */ jsx16(Row, { row }, row.label))
|
|
17944
18201
|
] }),
|
|
17945
|
-
warning && /* @__PURE__ */
|
|
18202
|
+
warning && /* @__PURE__ */ jsxs13(Text13, { color: PALETTE.warning, children: [
|
|
17946
18203
|
"\u26A0 ",
|
|
17947
18204
|
warning
|
|
17948
|
-
] })
|
|
17949
|
-
/* @__PURE__ */ jsx13(Text12, { children: "Does this look right?" })
|
|
18205
|
+
] })
|
|
17950
18206
|
] });
|
|
17951
18207
|
}
|
|
17952
18208
|
function PathValidationScreen({
|
|
@@ -17957,211 +18213,35 @@ function PathValidationScreen({
|
|
|
17957
18213
|
hasTokens = true
|
|
17958
18214
|
}) {
|
|
17959
18215
|
const resolvedPath = useMemo(() => resolveUserPath(projectPath), [projectPath]);
|
|
17960
|
-
const [scan, setScan] =
|
|
18216
|
+
const [scan, setScan] = useState8();
|
|
17961
18217
|
useEffect4(() => {
|
|
17962
18218
|
setScan(scanFiles(resolvedPath));
|
|
17963
18219
|
}, [resolvedPath]);
|
|
17964
18220
|
const phase = phaseOf(scan);
|
|
17965
|
-
|
|
17966
|
-
|
|
18221
|
+
const choose = (choice) => {
|
|
18222
|
+
if (choice === "continue") {
|
|
17967
18223
|
if (scan?.ok) onConfirm({ projectPath: resolvedPath, filePaths: scan.filePaths });
|
|
17968
|
-
}
|
|
17969
|
-
|
|
17970
|
-
|
|
17971
|
-
|
|
17972
|
-
|
|
17973
|
-
/* @__PURE__ */
|
|
17974
|
-
|
|
17975
|
-
scan === void 0 && /* @__PURE__ */
|
|
18224
|
+
} else if (choice === "change-path") onChangePath();
|
|
18225
|
+
else onBack();
|
|
18226
|
+
};
|
|
18227
|
+
return (
|
|
18228
|
+
// keyed by phase: the menu changes length, so its focus starts over
|
|
18229
|
+
/* @__PURE__ */ jsxs13(MenuScreen, { title: "Scan", menu: MENUS[phase], onChoose: choose, onEscape: onBack, children: [
|
|
18230
|
+
/* @__PURE__ */ jsx16(Text13, { children: " " }),
|
|
18231
|
+
scan === void 0 && /* @__PURE__ */ jsxs13(Text13, { color: PALETTE.muted, children: [
|
|
17976
18232
|
"Scanning ",
|
|
17977
|
-
/* @__PURE__ */
|
|
18233
|
+
/* @__PURE__ */ jsx16(Text13, { bold: true, children: resolvedPath }),
|
|
17978
18234
|
"..."
|
|
17979
18235
|
] }),
|
|
17980
|
-
scan?.ok === false && /* @__PURE__ */
|
|
17981
|
-
scan?.ok === true && /* @__PURE__ */
|
|
17982
|
-
|
|
17983
|
-
|
|
17984
|
-
] });
|
|
18236
|
+
scan?.ok === false && /* @__PURE__ */ jsx16(Failure, { scan, path: resolvedPath }),
|
|
18237
|
+
scan?.ok === true && /* @__PURE__ */ jsx16(Summary, { scan, path: resolvedPath, hasTokens })
|
|
18238
|
+
] }, phase)
|
|
18239
|
+
);
|
|
17985
18240
|
}
|
|
17986
18241
|
|
|
17987
18242
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/screen.tsx
|
|
17988
18243
|
import { useRef as useRef2, useState as useState9 } from "react";
|
|
17989
|
-
import {
|
|
17990
|
-
|
|
17991
|
-
// packages/experience-design-system-cli/src/tui/shared/components/FieldForm.tsx
|
|
17992
|
-
import { useState as useState8 } from "react";
|
|
17993
|
-
import { Box as Box13, Text as Text13, useInput as useInput10 } from "ink";
|
|
17994
|
-
import { Fragment, jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
17995
|
-
function formLabelWidth(rows) {
|
|
17996
|
-
return Math.max(...rows.map((row) => row.label.length));
|
|
17997
|
-
}
|
|
17998
|
-
function FormReadOnlyRow({
|
|
17999
|
-
label,
|
|
18000
|
-
labelWidth,
|
|
18001
|
-
children
|
|
18002
|
-
}) {
|
|
18003
|
-
return /* @__PURE__ */ jsxs13(Box13, { gap: 1, children: [
|
|
18004
|
-
/* @__PURE__ */ jsx14(Text13, { children: " " }),
|
|
18005
|
-
/* @__PURE__ */ jsx14(Box13, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: label }) }),
|
|
18006
|
-
children
|
|
18007
|
-
] });
|
|
18008
|
-
}
|
|
18009
|
-
function FieldForm({
|
|
18010
|
-
header,
|
|
18011
|
-
title,
|
|
18012
|
-
subtitle,
|
|
18013
|
-
fields: fields2,
|
|
18014
|
-
values,
|
|
18015
|
-
onChange,
|
|
18016
|
-
onSave,
|
|
18017
|
-
saveLabel = "save",
|
|
18018
|
-
enterAdvances = false,
|
|
18019
|
-
onSkip,
|
|
18020
|
-
skipLabel: skipLabel2 = "skip",
|
|
18021
|
-
onQuit,
|
|
18022
|
-
quitLabel = "back without saving",
|
|
18023
|
-
actions = [],
|
|
18024
|
-
notice,
|
|
18025
|
-
busy = false,
|
|
18026
|
-
children
|
|
18027
|
-
}) {
|
|
18028
|
-
const [active, setActive] = useState8(0);
|
|
18029
|
-
const [editing, setEditing] = useState8(false);
|
|
18030
|
-
const [valueBeforeEdit, setValueBeforeEdit] = useState8("");
|
|
18031
|
-
const rowCount = fields2.length + actions.length;
|
|
18032
|
-
const labelWidth = formLabelWidth([...fields2, ...actions]);
|
|
18033
|
-
const currentField = active < fields2.length ? fields2[active] : void 0;
|
|
18034
|
-
const currentAction = currentField ? void 0 : actions[active - fields2.length];
|
|
18035
|
-
useInput10((input, key) => {
|
|
18036
|
-
if (busy) return;
|
|
18037
|
-
if (editing) {
|
|
18038
|
-
if (key.escape && currentField) {
|
|
18039
|
-
onChange(currentField.key, valueBeforeEdit);
|
|
18040
|
-
setEditing(false);
|
|
18041
|
-
}
|
|
18042
|
-
return;
|
|
18043
|
-
}
|
|
18044
|
-
if (key.escape || input === "q") {
|
|
18045
|
-
onQuit();
|
|
18046
|
-
return;
|
|
18047
|
-
}
|
|
18048
|
-
if (input === "s") {
|
|
18049
|
-
onSave();
|
|
18050
|
-
return;
|
|
18051
|
-
}
|
|
18052
|
-
if (input === "k" && onSkip) {
|
|
18053
|
-
onSkip();
|
|
18054
|
-
return;
|
|
18055
|
-
}
|
|
18056
|
-
if (isClearKey(input, key) && currentField) {
|
|
18057
|
-
onChange(currentField.key, "");
|
|
18058
|
-
return;
|
|
18059
|
-
}
|
|
18060
|
-
if (key.tab || key.downArrow) {
|
|
18061
|
-
setActive((i) => (i + 1) % rowCount);
|
|
18062
|
-
return;
|
|
18063
|
-
}
|
|
18064
|
-
if (key.upArrow) {
|
|
18065
|
-
setActive((i) => (i - 1 + rowCount) % rowCount);
|
|
18066
|
-
return;
|
|
18067
|
-
}
|
|
18068
|
-
if (key.return) {
|
|
18069
|
-
if (currentField) {
|
|
18070
|
-
setValueBeforeEdit(values[currentField.key]);
|
|
18071
|
-
setEditing(true);
|
|
18072
|
-
} else {
|
|
18073
|
-
currentAction?.onRun();
|
|
18074
|
-
}
|
|
18075
|
-
}
|
|
18076
|
-
});
|
|
18077
|
-
const isLastField = active === fields2.length - 1;
|
|
18078
|
-
const submitField = () => {
|
|
18079
|
-
if (!enterAdvances) {
|
|
18080
|
-
setEditing(false);
|
|
18081
|
-
return;
|
|
18082
|
-
}
|
|
18083
|
-
if (isLastField) {
|
|
18084
|
-
setEditing(false);
|
|
18085
|
-
onSave();
|
|
18086
|
-
return;
|
|
18087
|
-
}
|
|
18088
|
-
const next = fields2[active + 1];
|
|
18089
|
-
setValueBeforeEdit(values[next.key]);
|
|
18090
|
-
setActive(active + 1);
|
|
18091
|
-
};
|
|
18092
|
-
const pointer = (isActive) => /* @__PURE__ */ jsx14(Text13, { color: isActive ? PALETTE.accent : void 0, children: isActive ? "\u276F" : " " });
|
|
18093
|
-
return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
|
|
18094
|
-
header,
|
|
18095
|
-
/* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", paddingX: 2, paddingTop: header ? 0 : 1, paddingBottom: 1, children: [
|
|
18096
|
-
/* @__PURE__ */ jsx14(Text13, { bold: true, children: title }),
|
|
18097
|
-
/* @__PURE__ */ jsx14(Text13, { children: " " }),
|
|
18098
|
-
subtitle && /* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: subtitle }),
|
|
18099
|
-
/* @__PURE__ */ jsx14(Text13, { children: " " }),
|
|
18100
|
-
/* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", children: [
|
|
18101
|
-
fields2.map((field, index) => {
|
|
18102
|
-
const isActive = index === active;
|
|
18103
|
-
const value = values[field.key];
|
|
18104
|
-
const display = field.masked ? "\u2022".repeat(value.length) : value;
|
|
18105
|
-
return /* @__PURE__ */ jsxs13(Box13, { gap: 1, children: [
|
|
18106
|
-
pointer(isActive),
|
|
18107
|
-
/* @__PURE__ */ jsx14(Box13, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx14(Text13, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
|
|
18108
|
-
isActive && editing ? /* @__PURE__ */ jsx14(
|
|
18109
|
-
ClearableTextInput,
|
|
18110
|
-
{
|
|
18111
|
-
value,
|
|
18112
|
-
onChange: (next) => onChange(field.key, next),
|
|
18113
|
-
onSubmit: submitField,
|
|
18114
|
-
mask: field.masked ? "\u2022" : void 0
|
|
18115
|
-
}
|
|
18116
|
-
) : display ? /* @__PURE__ */ jsx14(Text13, { bold: true, children: display }) : (
|
|
18117
|
-
// An empty value shows its hint (or "(empty)") in the value's place, not after an empty element, so the
|
|
18118
|
-
// text starts in the same column as every other row's.
|
|
18119
|
-
/* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: field.hint ?? "(empty)" })
|
|
18120
|
-
),
|
|
18121
|
-
display && field.hint && /* @__PURE__ */ jsx14(Text13, { color: PALETTE.muted, children: field.hint })
|
|
18122
|
-
] }, field.key);
|
|
18123
|
-
}),
|
|
18124
|
-
actions.map((action, index) => {
|
|
18125
|
-
const isActive = fields2.length + index === active;
|
|
18126
|
-
return /* @__PURE__ */ jsxs13(Box13, { gap: 1, children: [
|
|
18127
|
-
pointer(isActive),
|
|
18128
|
-
/* @__PURE__ */ jsx14(Box13, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx14(Text13, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: action.label }) }),
|
|
18129
|
-
/* @__PURE__ */ jsx14(Text13, { color: action.running ? PALETTE.accent : PALETTE.muted, children: action.running ? action.runningText ?? "running..." : action.description })
|
|
18130
|
-
] }, action.label);
|
|
18131
|
-
})
|
|
18132
|
-
] }),
|
|
18133
|
-
notice && /* @__PURE__ */ jsxs13(Fragment, { children: [
|
|
18134
|
-
/* @__PURE__ */ jsx14(Text13, { children: " " }),
|
|
18135
|
-
/* @__PURE__ */ jsxs13(Text13, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
18136
|
-
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
18137
|
-
" ",
|
|
18138
|
-
notice.text
|
|
18139
|
-
] })
|
|
18140
|
-
] }),
|
|
18141
|
-
children,
|
|
18142
|
-
/* @__PURE__ */ jsx14(Text13, { children: " " }),
|
|
18143
|
-
/* @__PURE__ */ jsx14(
|
|
18144
|
-
ControlHints,
|
|
18145
|
-
{
|
|
18146
|
-
hints: editing ? [
|
|
18147
|
-
{ keys: "type", label: "edit" },
|
|
18148
|
-
{ keys: "\u2190/\u2192", label: "move cursor" },
|
|
18149
|
-
{ keys: "\u23CE", label: enterAdvances ? isLastField ? saveLabel : "next" : "done" },
|
|
18150
|
-
{ keys: "Ctrl+D", label: "clear" },
|
|
18151
|
-
{ keys: "Esc", label: "cancel edit" }
|
|
18152
|
-
] : [
|
|
18153
|
-
{ keys: "\u2191/\u2193", label: "move" },
|
|
18154
|
-
{ keys: "\u23CE", label: currentAction ? currentAction.hint : "edit" },
|
|
18155
|
-
...currentField ? [{ keys: "Ctrl+D", label: "clear" }] : [],
|
|
18156
|
-
{ keys: "s", label: saveLabel },
|
|
18157
|
-
...onSkip ? [{ keys: "k", label: skipLabel2 }] : [],
|
|
18158
|
-
{ keys: "Esc/q", label: quitLabel }
|
|
18159
|
-
]
|
|
18160
|
-
}
|
|
18161
|
-
)
|
|
18162
|
-
] })
|
|
18163
|
-
] });
|
|
18164
|
-
}
|
|
18244
|
+
import { Text as Text14 } from "ink";
|
|
18165
18245
|
|
|
18166
18246
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/logic.ts
|
|
18167
18247
|
var FIELDS = ["spaceId", "environmentId", "cmaToken", "host"];
|
|
@@ -18219,82 +18299,19 @@ function toUserError(error, host) {
|
|
|
18219
18299
|
}
|
|
18220
18300
|
|
|
18221
18301
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/screen.tsx
|
|
18222
|
-
import { Fragment as
|
|
18302
|
+
import { Fragment as Fragment4, jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
18223
18303
|
var FIELDS2 = [
|
|
18224
18304
|
{ key: "spaceId", label: "Space ID" },
|
|
18225
18305
|
{ key: "environmentId", label: "Environment ID" },
|
|
18226
18306
|
{ key: "cmaToken", label: "CMA Token", masked: true },
|
|
18227
18307
|
{ key: "host", label: "API Host", hint: "(default: api.contentful.com \xB7 EU spaces: api.eu.contentful.com)" }
|
|
18228
18308
|
];
|
|
18229
|
-
var
|
|
18309
|
+
var MENU2 = [
|
|
18230
18310
|
{ choice: "continue", label: "Continue", description: "Check the credentials and go on" },
|
|
18231
18311
|
{ choice: "edit", label: "Edit", description: "Change the credentials" },
|
|
18232
18312
|
{ choice: "skip", label: "Skip", description: "Save files only, nothing is pushed" },
|
|
18233
18313
|
{ choice: "quit", label: "Quit", description: "Go back" }
|
|
18234
18314
|
];
|
|
18235
|
-
function CredentialsReview({
|
|
18236
|
-
values,
|
|
18237
|
-
subtitle,
|
|
18238
|
-
notice,
|
|
18239
|
-
validating,
|
|
18240
|
-
onChoose,
|
|
18241
|
-
children
|
|
18242
|
-
}) {
|
|
18243
|
-
const [focus, setFocus] = useState9(0);
|
|
18244
|
-
useInput11((_input, key) => {
|
|
18245
|
-
if (validating) return;
|
|
18246
|
-
if (key.escape) onChoose("quit");
|
|
18247
|
-
else if (key.return) onChoose(MENU[focus].choice);
|
|
18248
|
-
else if (key.upArrow) setFocus((current) => (current - 1 + MENU.length) % MENU.length);
|
|
18249
|
-
else if (key.downArrow || key.tab) setFocus((current) => (current + 1) % MENU.length);
|
|
18250
|
-
});
|
|
18251
|
-
const labelWidth = formLabelWidth([...FIELDS2, ...MENU]);
|
|
18252
|
-
return /* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", children: [
|
|
18253
|
-
/* @__PURE__ */ jsx15(StepHeader, { step: "setup" }),
|
|
18254
|
-
/* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", paddingX: 2, paddingBottom: 1, children: [
|
|
18255
|
-
/* @__PURE__ */ jsx15(Text14, { bold: true, children: "Contentful Credentials" }),
|
|
18256
|
-
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
18257
|
-
/* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: subtitle }),
|
|
18258
|
-
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
18259
|
-
MENU.map((item, index) => {
|
|
18260
|
-
const focused = index === focus;
|
|
18261
|
-
return /* @__PURE__ */ jsxs14(Box14, { gap: 1, children: [
|
|
18262
|
-
/* @__PURE__ */ jsx15(Text14, { color: focused ? PALETTE.accent : void 0, children: focused ? "\u276F" : " " }),
|
|
18263
|
-
/* @__PURE__ */ jsx15(Box14, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx15(Text14, { bold: focused, color: focused ? PALETTE.accent : PALETTE.muted, children: item.label }) }),
|
|
18264
|
-
/* @__PURE__ */ jsx15(Text14, { color: PALETTE.muted, children: item.description })
|
|
18265
|
-
] }, item.choice);
|
|
18266
|
-
}),
|
|
18267
|
-
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
18268
|
-
FIELDS2.map((field) => {
|
|
18269
|
-
const value = values[field.key];
|
|
18270
|
-
return /* @__PURE__ */ jsx15(FormReadOnlyRow, { label: field.label, labelWidth, children: /* @__PURE__ */ jsx15(Text14, { bold: value !== "", children: field.masked ? "\u2022".repeat(value.length) : value || "(empty)" }) }, field.key);
|
|
18271
|
-
}),
|
|
18272
|
-
notice && /* @__PURE__ */ jsxs14(Fragment2, { children: [
|
|
18273
|
-
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
18274
|
-
/* @__PURE__ */ jsxs14(Text14, { color: PALETTE.error, children: [
|
|
18275
|
-
"\u2717 ",
|
|
18276
|
-
notice.text
|
|
18277
|
-
] })
|
|
18278
|
-
] }),
|
|
18279
|
-
validating && /* @__PURE__ */ jsxs14(Fragment2, { children: [
|
|
18280
|
-
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
18281
|
-
/* @__PURE__ */ jsx15(Text14, { color: PALETTE.accent, children: "Validating credentials..." })
|
|
18282
|
-
] }),
|
|
18283
|
-
children,
|
|
18284
|
-
/* @__PURE__ */ jsx15(Text14, { children: " " }),
|
|
18285
|
-
/* @__PURE__ */ jsx15(
|
|
18286
|
-
ControlHints,
|
|
18287
|
-
{
|
|
18288
|
-
hints: [
|
|
18289
|
-
{ keys: "\u2191/\u2193", label: "move" },
|
|
18290
|
-
{ keys: "\u23CE", label: MENU[focus].label.toLowerCase() },
|
|
18291
|
-
{ keys: "Esc", label: "back" }
|
|
18292
|
-
]
|
|
18293
|
-
}
|
|
18294
|
-
)
|
|
18295
|
-
] })
|
|
18296
|
-
] });
|
|
18297
|
-
}
|
|
18298
18315
|
function CredentialsScreen({
|
|
18299
18316
|
onDone,
|
|
18300
18317
|
onBack,
|
|
@@ -18337,15 +18354,43 @@ function CredentialsScreen({
|
|
|
18337
18354
|
else onBack();
|
|
18338
18355
|
};
|
|
18339
18356
|
if (!editing) {
|
|
18340
|
-
return /* @__PURE__ */
|
|
18341
|
-
|
|
18342
|
-
|
|
18343
|
-
|
|
18357
|
+
return /* @__PURE__ */ jsxs14(
|
|
18358
|
+
MenuScreen,
|
|
18359
|
+
{
|
|
18360
|
+
title: "Contentful Credentials",
|
|
18361
|
+
subtitle,
|
|
18362
|
+
menu: MENU2,
|
|
18363
|
+
rows: FIELDS2.map((field) => ({
|
|
18364
|
+
label: field.label,
|
|
18365
|
+
value: field.masked ? "\u2022".repeat(values[field.key].length) : values[field.key]
|
|
18366
|
+
})),
|
|
18367
|
+
onChoose: choose,
|
|
18368
|
+
onEscape: onBack,
|
|
18369
|
+
busy: validating,
|
|
18370
|
+
children: [
|
|
18371
|
+
notice && /* @__PURE__ */ jsxs14(Fragment4, { children: [
|
|
18372
|
+
/* @__PURE__ */ jsx17(Text14, { children: " " }),
|
|
18373
|
+
/* @__PURE__ */ jsxs14(Text14, { color: PALETTE.error, children: [
|
|
18374
|
+
"\u2717 ",
|
|
18375
|
+
notice.text
|
|
18376
|
+
] })
|
|
18377
|
+
] }),
|
|
18378
|
+
validating && /* @__PURE__ */ jsxs14(Fragment4, { children: [
|
|
18379
|
+
/* @__PURE__ */ jsx17(Text14, { children: " " }),
|
|
18380
|
+
/* @__PURE__ */ jsx17(Text14, { color: PALETTE.accent, children: "Validating credentials..." })
|
|
18381
|
+
] }),
|
|
18382
|
+
!isUnchanged(normalize(values), initialValues) && /* @__PURE__ */ jsxs14(Fragment4, { children: [
|
|
18383
|
+
/* @__PURE__ */ jsx17(Text14, { children: " " }),
|
|
18384
|
+
/* @__PURE__ */ jsx17(Text14, { color: PALETTE.muted, children: "Changed values are saved after they validate." })
|
|
18385
|
+
] })
|
|
18386
|
+
]
|
|
18387
|
+
}
|
|
18388
|
+
);
|
|
18344
18389
|
}
|
|
18345
18390
|
return /* @__PURE__ */ jsxs14(
|
|
18346
18391
|
FieldForm,
|
|
18347
18392
|
{
|
|
18348
|
-
header: /* @__PURE__ */
|
|
18393
|
+
header: /* @__PURE__ */ jsx17(StepHeader, { step: "setup" }),
|
|
18349
18394
|
title: "Contentful Credentials",
|
|
18350
18395
|
subtitle,
|
|
18351
18396
|
fields: FIELDS2,
|
|
@@ -18362,18 +18407,18 @@ function CredentialsScreen({
|
|
|
18362
18407
|
notice,
|
|
18363
18408
|
busy: validating,
|
|
18364
18409
|
children: [
|
|
18365
|
-
!prefilled && /* @__PURE__ */ jsxs14(
|
|
18366
|
-
/* @__PURE__ */
|
|
18367
|
-
/* @__PURE__ */
|
|
18368
|
-
/* @__PURE__ */
|
|
18410
|
+
!prefilled && /* @__PURE__ */ jsxs14(Fragment4, { children: [
|
|
18411
|
+
/* @__PURE__ */ jsx17(Text14, { children: " " }),
|
|
18412
|
+
/* @__PURE__ */ jsx17(Text14, { color: PALETTE.muted, children: credentialsPurpose(tokensOnly) }),
|
|
18413
|
+
/* @__PURE__ */ jsx17(Text14, { color: PALETTE.muted, children: "Tip: save these under Settings \u2192 Configuration so they pre-fill here." })
|
|
18369
18414
|
] }),
|
|
18370
|
-
validating && /* @__PURE__ */ jsxs14(
|
|
18371
|
-
/* @__PURE__ */
|
|
18372
|
-
/* @__PURE__ */
|
|
18415
|
+
validating && /* @__PURE__ */ jsxs14(Fragment4, { children: [
|
|
18416
|
+
/* @__PURE__ */ jsx17(Text14, { children: " " }),
|
|
18417
|
+
/* @__PURE__ */ jsx17(Text14, { color: PALETTE.accent, children: "Validating credentials..." })
|
|
18373
18418
|
] }),
|
|
18374
|
-
!validating && !notice && !isUnchanged(normalize(values), initialValues) && /* @__PURE__ */ jsxs14(
|
|
18375
|
-
/* @__PURE__ */
|
|
18376
|
-
/* @__PURE__ */
|
|
18419
|
+
!validating && !notice && !isUnchanged(normalize(values), initialValues) && /* @__PURE__ */ jsxs14(Fragment4, { children: [
|
|
18420
|
+
/* @__PURE__ */ jsx17(Text14, { children: " " }),
|
|
18421
|
+
/* @__PURE__ */ jsx17(Text14, { color: PALETTE.muted, children: "Changed values are saved after they validate." })
|
|
18377
18422
|
] })
|
|
18378
18423
|
]
|
|
18379
18424
|
}
|
|
@@ -18462,9 +18507,9 @@ function resolveAgentChoice(flag, stored) {
|
|
|
18462
18507
|
}
|
|
18463
18508
|
|
|
18464
18509
|
// packages/experience-design-system-cli/src/tui/import/steps/06-extraction/screen.tsx
|
|
18465
|
-
import { jsx as
|
|
18510
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
18466
18511
|
function ExtractionScreen({ progress, agent }) {
|
|
18467
|
-
return /* @__PURE__ */
|
|
18512
|
+
return /* @__PURE__ */ jsx18(
|
|
18468
18513
|
RunningStep,
|
|
18469
18514
|
{
|
|
18470
18515
|
step: "extraction",
|
|
@@ -18814,11 +18859,11 @@ function useTokensOnly(input) {
|
|
|
18814
18859
|
}
|
|
18815
18860
|
|
|
18816
18861
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/screen.tsx
|
|
18817
|
-
import { Box as
|
|
18862
|
+
import { Box as Box23, Text as Text25 } from "ink";
|
|
18818
18863
|
|
|
18819
18864
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/added-column.tsx
|
|
18820
18865
|
import React10 from "react";
|
|
18821
|
-
import { Box as
|
|
18866
|
+
import { Box as Box15, Text as Text16 } from "ink";
|
|
18822
18867
|
import figures2 from "figures";
|
|
18823
18868
|
|
|
18824
18869
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/columns.ts
|
|
@@ -18925,8 +18970,8 @@ function computeColumnWindow(total, cursor, visibleCount) {
|
|
|
18925
18970
|
}
|
|
18926
18971
|
|
|
18927
18972
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/windowed-panel.tsx
|
|
18928
|
-
import { Box as
|
|
18929
|
-
import { jsx as
|
|
18973
|
+
import { Box as Box14, Text as Text15 } from "ink";
|
|
18974
|
+
import { jsx as jsx19, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
18930
18975
|
var MIN_TERMINAL_PANEL_HEIGHT = 5;
|
|
18931
18976
|
function terminalPanelHeight(rows, reservedRows = 4) {
|
|
18932
18977
|
return Math.max(MIN_TERMINAL_PANEL_HEIGHT, rows - reservedRows);
|
|
@@ -18942,8 +18987,8 @@ function FixedPanel({
|
|
|
18942
18987
|
clipOverflow = true,
|
|
18943
18988
|
children
|
|
18944
18989
|
}) {
|
|
18945
|
-
return /* @__PURE__ */
|
|
18946
|
-
|
|
18990
|
+
return /* @__PURE__ */ jsx19(
|
|
18991
|
+
Box14,
|
|
18947
18992
|
{
|
|
18948
18993
|
flexDirection: "column",
|
|
18949
18994
|
width,
|
|
@@ -18968,7 +19013,7 @@ function WindowedPanel({ width, height, title, focused, children }) {
|
|
|
18968
19013
|
...height === void 0 ? {} : { height },
|
|
18969
19014
|
focused,
|
|
18970
19015
|
children: [
|
|
18971
|
-
title && /* @__PURE__ */
|
|
19016
|
+
title && /* @__PURE__ */ jsx19(WindowedPanelHeader, { title, width, focused }),
|
|
18972
19017
|
children
|
|
18973
19018
|
]
|
|
18974
19019
|
}
|
|
@@ -18979,9 +19024,9 @@ function WindowedPanelHeader({
|
|
|
18979
19024
|
width,
|
|
18980
19025
|
focused
|
|
18981
19026
|
}) {
|
|
18982
|
-
return /* @__PURE__ */ jsxs15(
|
|
18983
|
-
/* @__PURE__ */
|
|
18984
|
-
/* @__PURE__ */
|
|
19027
|
+
return /* @__PURE__ */ jsxs15(Box14, { flexDirection: "column", children: [
|
|
19028
|
+
/* @__PURE__ */ jsx19(Text15, { bold: true, color: PALETTE.accent, inverse: focused, children: title }),
|
|
19029
|
+
/* @__PURE__ */ jsx19(Text15, { color: PALETTE.muted, children: "\u2500".repeat(Math.max(0, width - 2)) })
|
|
18985
19030
|
] });
|
|
18986
19031
|
}
|
|
18987
19032
|
function formatWindowIndicator(direction, count) {
|
|
@@ -18990,22 +19035,22 @@ function formatWindowIndicator(direction, count) {
|
|
|
18990
19035
|
}
|
|
18991
19036
|
function WindowFooter({ above, below }) {
|
|
18992
19037
|
const parts = [above > 0 ? `\u2191 ${above}` : "", below > 0 ? `\u2193 ${below}` : ""].filter(Boolean);
|
|
18993
|
-
return /* @__PURE__ */
|
|
19038
|
+
return /* @__PURE__ */ jsx19(Text15, { color: PALETTE.muted, children: parts.length === 0 ? " " : `${parts.join(" \xB7 ")} more` });
|
|
18994
19039
|
}
|
|
18995
19040
|
function WindowIndicator({ direction, count }) {
|
|
18996
|
-
return /* @__PURE__ */
|
|
19041
|
+
return /* @__PURE__ */ jsx19(Text15, { color: PALETTE.muted, children: formatWindowIndicator(direction, count) });
|
|
18997
19042
|
}
|
|
18998
19043
|
|
|
18999
19044
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/added-column.tsx
|
|
19000
|
-
import { jsx as
|
|
19045
|
+
import { jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
19001
19046
|
function AddedColumn(props) {
|
|
19002
19047
|
const { title, width, height, entries, cursor, focused, aiFlaggedByKey, visibleCount } = props;
|
|
19003
19048
|
const reserveAiBadge = entries.some((e) => aiFlaggedByKey?.get(e.name) === true);
|
|
19004
19049
|
const firstNonCycleIdx = entries.findIndex((e) => !e.isCycle);
|
|
19005
19050
|
const window = computeColumnWindow(entries.length, cursor, Math.max(1, visibleCount));
|
|
19006
19051
|
return /* @__PURE__ */ jsxs16(WindowedPanel, { width, height, title, focused, children: [
|
|
19007
|
-
/* @__PURE__ */
|
|
19008
|
-
entries.length === 0 ? /* @__PURE__ */
|
|
19052
|
+
/* @__PURE__ */ jsx20(WindowIndicator, { direction: "up", count: window.above }),
|
|
19053
|
+
entries.length === 0 ? /* @__PURE__ */ jsx20(Text16, { color: PALETTE.muted, children: "(none)" }) : entries.slice(window.start, window.end).map((entry, vi) => {
|
|
19009
19054
|
const i = window.start + vi;
|
|
19010
19055
|
const isSelected = i === cursor;
|
|
19011
19056
|
const isCursor = focused && isSelected;
|
|
@@ -19013,12 +19058,12 @@ function AddedColumn(props) {
|
|
|
19013
19058
|
const showSeparator = firstNonCycleIdx > 0 && i === firstNonCycleIdx;
|
|
19014
19059
|
const style = sideColumnLabelStyle({ isCycle: entry.isCycle, isSelected, focused });
|
|
19015
19060
|
return /* @__PURE__ */ jsxs16(React10.Fragment, { children: [
|
|
19016
|
-
showSeparator && /* @__PURE__ */
|
|
19017
|
-
/* @__PURE__ */ jsxs16(
|
|
19018
|
-
isCursor ? /* @__PURE__ */
|
|
19019
|
-
reserveAiBadge && (aiFlagged ? /* @__PURE__ */
|
|
19020
|
-
entry.isCycle && /* @__PURE__ */
|
|
19021
|
-
/* @__PURE__ */
|
|
19061
|
+
showSeparator && /* @__PURE__ */ jsx20(Text16, { color: PALETTE.muted, children: "\u2500".repeat(Math.max(0, width - 2)) }),
|
|
19062
|
+
/* @__PURE__ */ jsxs16(Box15, { children: [
|
|
19063
|
+
isCursor ? /* @__PURE__ */ jsx20(Text16, { color: PALETTE.accent, bold: true, children: figures2.pointer }) : /* @__PURE__ */ jsx20(Text16, { children: " " }),
|
|
19064
|
+
reserveAiBadge && (aiFlagged ? /* @__PURE__ */ jsx20(Text16, { color: PALETTE.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx20(Text16, { children: " " })),
|
|
19065
|
+
entry.isCycle && /* @__PURE__ */ jsx20(Text16, { color: isCursor ? PALETTE.accent : PALETTE.warning, bold: true, underline: style.nameUnderline, children: " \u26A0" }),
|
|
19066
|
+
/* @__PURE__ */ jsx20(
|
|
19022
19067
|
Text16,
|
|
19023
19068
|
{
|
|
19024
19069
|
color: style.nameColor,
|
|
@@ -19032,14 +19077,14 @@ function AddedColumn(props) {
|
|
|
19032
19077
|
] })
|
|
19033
19078
|
] }, entry.name);
|
|
19034
19079
|
}),
|
|
19035
|
-
/* @__PURE__ */
|
|
19080
|
+
/* @__PURE__ */ jsx20(WindowIndicator, { direction: "down", count: window.below })
|
|
19036
19081
|
] });
|
|
19037
19082
|
}
|
|
19038
19083
|
|
|
19039
19084
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/cycles-panel.tsx
|
|
19040
|
-
import { Box as
|
|
19085
|
+
import { Box as Box16, Text as Text17 } from "ink";
|
|
19041
19086
|
import figures3 from "figures";
|
|
19042
|
-
import { jsx as
|
|
19087
|
+
import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
19043
19088
|
function cycleLabel(cycle, index) {
|
|
19044
19089
|
const parts = [];
|
|
19045
19090
|
for (let i = 0; i < cycle.edges.length; i++) {
|
|
@@ -19050,36 +19095,36 @@ function cycleLabel(cycle, index) {
|
|
|
19050
19095
|
return `Cycle ${index + 1}: ${parts.join(" \u2192 ")}`;
|
|
19051
19096
|
}
|
|
19052
19097
|
function CyclesPanel({ cycles, cursor }) {
|
|
19053
|
-
return /* @__PURE__ */ jsxs17(
|
|
19054
|
-
/* @__PURE__ */
|
|
19055
|
-
/* @__PURE__ */
|
|
19098
|
+
return /* @__PURE__ */ jsxs17(Box16, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.warning, paddingX: 1, marginTop: 1, children: [
|
|
19099
|
+
/* @__PURE__ */ jsx21(Text17, { bold: true, color: PALETTE.warning, children: `Cycles detected (${cycles.length}):` }),
|
|
19100
|
+
/* @__PURE__ */ jsx21(Text17, { children: " " }),
|
|
19056
19101
|
cycles.map((cycle, i) => {
|
|
19057
19102
|
const isCursor = i === cursor;
|
|
19058
19103
|
return /* @__PURE__ */ jsxs17(Text17, { children: [
|
|
19059
|
-
isCursor ? /* @__PURE__ */
|
|
19060
|
-
/* @__PURE__ */
|
|
19104
|
+
isCursor ? /* @__PURE__ */ jsx21(Text17, { color: PALETTE.accent, bold: true, children: figures3.pointer }) : /* @__PURE__ */ jsx21(Text17, { children: " " }),
|
|
19105
|
+
/* @__PURE__ */ jsx21(Text17, { color: PALETTE.warning, inverse: isCursor, children: " " + cycleLabel(cycle, i) })
|
|
19061
19106
|
] }, i);
|
|
19062
19107
|
}),
|
|
19063
|
-
/* @__PURE__ */
|
|
19108
|
+
/* @__PURE__ */ jsx21(Text17, { children: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [c/Esc] close" })
|
|
19064
19109
|
] });
|
|
19065
19110
|
}
|
|
19066
19111
|
|
|
19067
19112
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/reject-prompt.tsx
|
|
19068
|
-
import { Box as
|
|
19069
|
-
import { jsx as
|
|
19113
|
+
import { Box as Box17, Text as Text18 } from "ink";
|
|
19114
|
+
import { jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
19070
19115
|
function RejectPrompt({ pending }) {
|
|
19071
|
-
return /* @__PURE__ */ jsxs18(
|
|
19072
|
-
/* @__PURE__ */
|
|
19073
|
-
pending.ancestors.length > 0 && /* @__PURE__ */
|
|
19074
|
-
pending.descendants.length > 0 && /* @__PURE__ */
|
|
19075
|
-
/* @__PURE__ */
|
|
19116
|
+
return /* @__PURE__ */ jsxs18(Box17, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.warning, paddingX: 1, marginTop: 1, children: [
|
|
19117
|
+
/* @__PURE__ */ jsx22(Text18, { bold: true, color: PALETTE.warning, children: `Rejecting ${pending.target} will:` }),
|
|
19118
|
+
pending.ancestors.length > 0 && /* @__PURE__ */ jsx22(Text18, { children: `- Reject ancestors: ${pending.ancestors.join(", ")}` }),
|
|
19119
|
+
pending.descendants.length > 0 && /* @__PURE__ */ jsx22(Text18, { children: `- Deselect descendants: ${pending.descendants.join(", ")}` }),
|
|
19120
|
+
/* @__PURE__ */ jsx22(Text18, { children: "[y] confirm \xB7 [n]/[Esc] cancel" })
|
|
19076
19121
|
] });
|
|
19077
19122
|
}
|
|
19078
19123
|
|
|
19079
19124
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CompactControlBar.tsx
|
|
19080
|
-
import { jsx as
|
|
19125
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
19081
19126
|
function CompactControlBar({ hasGroupRoots, searchActive }) {
|
|
19082
|
-
return /* @__PURE__ */
|
|
19127
|
+
return /* @__PURE__ */ jsx23(
|
|
19083
19128
|
ControlHints,
|
|
19084
19129
|
{
|
|
19085
19130
|
hints: [
|
|
@@ -19096,8 +19141,8 @@ function CompactControlBar({ hasGroupRoots, searchActive }) {
|
|
|
19096
19141
|
}
|
|
19097
19142
|
|
|
19098
19143
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CounterStrip.tsx
|
|
19099
|
-
import { Box as
|
|
19100
|
-
import { jsx as
|
|
19144
|
+
import { Box as Box18, Text as Text19 } from "ink";
|
|
19145
|
+
import { jsx as jsx24, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
19101
19146
|
function CounterStrip(props) {
|
|
19102
19147
|
const { counters, totalWidth } = props;
|
|
19103
19148
|
const condensed = totalWidth < 60;
|
|
@@ -19105,32 +19150,32 @@ function CounterStrip(props) {
|
|
|
19105
19150
|
const labelRej = condensed ? "Rej" : "Rejected";
|
|
19106
19151
|
const labelUnd = condensed ? "Und" : "Undecided";
|
|
19107
19152
|
const sep = condensed ? " | " : " ";
|
|
19108
|
-
return /* @__PURE__ */
|
|
19153
|
+
return /* @__PURE__ */ jsx24(Box18, { children: /* @__PURE__ */ jsxs19(Text19, { children: [
|
|
19109
19154
|
/* @__PURE__ */ jsxs19(Text19, { color: PALETTE.muted, children: [
|
|
19110
19155
|
labelGrp,
|
|
19111
19156
|
" "
|
|
19112
19157
|
] }),
|
|
19113
|
-
/* @__PURE__ */
|
|
19114
|
-
/* @__PURE__ */
|
|
19158
|
+
/* @__PURE__ */ jsx24(Text19, { bold: true, children: counters.groups }),
|
|
19159
|
+
/* @__PURE__ */ jsx24(Text19, { color: PALETTE.muted, children: sep }),
|
|
19115
19160
|
/* @__PURE__ */ jsxs19(Text19, { color: PALETTE.muted, children: [
|
|
19116
19161
|
labelRej,
|
|
19117
19162
|
" "
|
|
19118
19163
|
] }),
|
|
19119
|
-
/* @__PURE__ */
|
|
19120
|
-
/* @__PURE__ */
|
|
19164
|
+
/* @__PURE__ */ jsx24(Text19, { bold: true, children: counters.rejected }),
|
|
19165
|
+
/* @__PURE__ */ jsx24(Text19, { color: PALETTE.muted, children: sep }),
|
|
19121
19166
|
/* @__PURE__ */ jsxs19(Text19, { color: PALETTE.muted, children: [
|
|
19122
19167
|
labelUnd,
|
|
19123
19168
|
" "
|
|
19124
19169
|
] }),
|
|
19125
|
-
/* @__PURE__ */
|
|
19126
|
-
/* @__PURE__ */
|
|
19170
|
+
/* @__PURE__ */ jsx24(Text19, { bold: true, children: counters.undecided }),
|
|
19171
|
+
/* @__PURE__ */ jsx24(Text19, { color: PALETTE.muted, children: sep })
|
|
19127
19172
|
] }) });
|
|
19128
19173
|
}
|
|
19129
19174
|
|
|
19130
19175
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GotoBanner.tsx
|
|
19131
19176
|
import figures4 from "figures";
|
|
19132
|
-
import { Box as
|
|
19133
|
-
import { jsx as
|
|
19177
|
+
import { Box as Box19, Text as Text20 } from "ink";
|
|
19178
|
+
import { jsx as jsx25, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
19134
19179
|
var DEFAULT_MAX_ROWS = 15;
|
|
19135
19180
|
function windowStart(rowCount, highlightIndex, maxRows) {
|
|
19136
19181
|
if (rowCount <= maxRows) return 0;
|
|
@@ -19142,8 +19187,8 @@ function windowStart(rowCount, highlightIndex, maxRows) {
|
|
|
19142
19187
|
}
|
|
19143
19188
|
function defaultRenderRow(row, index, isCursor) {
|
|
19144
19189
|
return /* @__PURE__ */ jsxs20(Text20, { children: [
|
|
19145
|
-
isCursor ? /* @__PURE__ */
|
|
19146
|
-
/* @__PURE__ */
|
|
19190
|
+
isCursor ? /* @__PURE__ */ jsx25(Text20, { color: PALETTE.accent, bold: true, children: figures4.pointer }) : /* @__PURE__ */ jsx25(Text20, { children: " " }),
|
|
19191
|
+
/* @__PURE__ */ jsx25(Text20, { inverse: isCursor, children: " " + row.label })
|
|
19147
19192
|
] }, index);
|
|
19148
19193
|
}
|
|
19149
19194
|
function GotoBanner({
|
|
@@ -19163,7 +19208,7 @@ function GotoBanner({
|
|
|
19163
19208
|
const moreAbove = start;
|
|
19164
19209
|
const moreBelow = rows.length - end;
|
|
19165
19210
|
return /* @__PURE__ */ jsxs20(
|
|
19166
|
-
|
|
19211
|
+
Box19,
|
|
19167
19212
|
{
|
|
19168
19213
|
flexDirection: "column",
|
|
19169
19214
|
borderStyle: "single",
|
|
@@ -19173,14 +19218,14 @@ function GotoBanner({
|
|
|
19173
19218
|
width,
|
|
19174
19219
|
flexShrink: 0,
|
|
19175
19220
|
children: [
|
|
19176
|
-
/* @__PURE__ */
|
|
19177
|
-
moreAbove > 0 && /* @__PURE__ */
|
|
19221
|
+
/* @__PURE__ */ jsx25(Text20, { bold: true, children: title }),
|
|
19222
|
+
moreAbove > 0 && /* @__PURE__ */ jsx25(Text20, { color: PALETTE.muted, children: ` \u25B2 ${moreAbove} more` }),
|
|
19178
19223
|
visible.map((row, vi) => {
|
|
19179
19224
|
const i = start + vi;
|
|
19180
19225
|
return renderRow(row, i, i === highlightIndex);
|
|
19181
19226
|
}),
|
|
19182
|
-
moreBelow > 0 && /* @__PURE__ */
|
|
19183
|
-
footerHint !== void 0 && /* @__PURE__ */
|
|
19227
|
+
moreBelow > 0 && /* @__PURE__ */ jsx25(Text20, { color: PALETTE.muted, children: ` \u25BC ${moreBelow} more` }),
|
|
19228
|
+
footerHint !== void 0 && /* @__PURE__ */ jsx25(Text20, { color: PALETTE.muted, children: footerHint })
|
|
19184
19229
|
]
|
|
19185
19230
|
}
|
|
19186
19231
|
);
|
|
@@ -19188,7 +19233,7 @@ function GotoBanner({
|
|
|
19188
19233
|
|
|
19189
19234
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GroupedSidebar.tsx
|
|
19190
19235
|
import figures5 from "figures";
|
|
19191
|
-
import { Box as
|
|
19236
|
+
import { Box as Box20, Text as Text22 } from "ink";
|
|
19192
19237
|
|
|
19193
19238
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/graph/cycle-detection.ts
|
|
19194
19239
|
function buildGraph(components) {
|
|
@@ -19529,7 +19574,7 @@ function findSharedDeps(closures) {
|
|
|
19529
19574
|
|
|
19530
19575
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/badge.tsx
|
|
19531
19576
|
import { Text as Text21 } from "ink";
|
|
19532
|
-
import { jsx as
|
|
19577
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
19533
19578
|
function previewBadge(annotation) {
|
|
19534
19579
|
switch (annotation) {
|
|
19535
19580
|
case "new":
|
|
@@ -19548,11 +19593,11 @@ function PreviewBadge({
|
|
|
19548
19593
|
badge,
|
|
19549
19594
|
highlighted = false
|
|
19550
19595
|
}) {
|
|
19551
|
-
return badge ? /* @__PURE__ */
|
|
19596
|
+
return badge ? /* @__PURE__ */ jsx26(Text21, { color: !highlighted && badge.dim ? PALETTE.muted : badge.color, bold: badge.bold, children: badge.char }) : /* @__PURE__ */ jsx26(Text21, { children: " " });
|
|
19552
19597
|
}
|
|
19553
19598
|
|
|
19554
19599
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GroupedSidebar.tsx
|
|
19555
|
-
import { jsx as
|
|
19600
|
+
import { jsx as jsx27, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
19556
19601
|
var GLYPH_EXPAND_COLLAPSED = "\u25B8";
|
|
19557
19602
|
var GLYPH_EXPAND_EXPANDED = "\u25BE";
|
|
19558
19603
|
var GLYPH_TREE_MID = "\u251C\u2500";
|
|
@@ -20008,11 +20053,11 @@ function GroupedSidebar(props) {
|
|
|
20008
20053
|
isOwn: rs?.isOwn ?? false,
|
|
20009
20054
|
isCursor
|
|
20010
20055
|
});
|
|
20011
|
-
return /* @__PURE__ */ jsxs21(
|
|
20012
|
-
isCursor ? /* @__PURE__ */
|
|
20013
|
-
/* @__PURE__ */
|
|
20014
|
-
selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */
|
|
20015
|
-
aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */
|
|
20056
|
+
return /* @__PURE__ */ jsxs21(Box20, { children: [
|
|
20057
|
+
isCursor ? /* @__PURE__ */ jsx27(Text22, { color: PALETTE.accent, bold: true, children: figures5.pointer }) : /* @__PURE__ */ jsx27(Text22, { children: " " }),
|
|
20058
|
+
/* @__PURE__ */ jsx27(PreviewBadge, { badge, highlighted: isSelected }),
|
|
20059
|
+
selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */ jsx27(Text22, { color: !isSelected && selDim ? PALETTE.muted : selColor, bold: selBold, children: " " + selGlyph }) : /* @__PURE__ */ jsx27(Text22, { children: " " })),
|
|
20060
|
+
aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */ jsx27(Text22, { color: PALETTE.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx27(Text22, { children: " " })),
|
|
20016
20061
|
/* @__PURE__ */ jsxs21(
|
|
20017
20062
|
Text22,
|
|
20018
20063
|
{
|
|
@@ -20027,16 +20072,16 @@ function GroupedSidebar(props) {
|
|
|
20027
20072
|
]
|
|
20028
20073
|
}
|
|
20029
20074
|
),
|
|
20030
|
-
inheritanceStyle.glyph && /* @__PURE__ */
|
|
20075
|
+
inheritanceStyle.glyph && /* @__PURE__ */ jsx27(Text22, { color: inheritanceStyle.dim ? PALETTE.muted : inheritanceStyle.color, bold: inheritanceStyle.bold, children: " " + inheritanceStyle.glyph })
|
|
20031
20076
|
] }, row.key);
|
|
20032
20077
|
}),
|
|
20033
|
-
windowed && /* @__PURE__ */
|
|
20078
|
+
windowed && /* @__PURE__ */ jsx27(WindowFooter, { above: start, below: Math.max(0, allRows.length - end) })
|
|
20034
20079
|
] });
|
|
20035
20080
|
}
|
|
20036
20081
|
|
|
20037
20082
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/HelpOverlay.tsx
|
|
20038
20083
|
import React11 from "react";
|
|
20039
|
-
import { Box as
|
|
20084
|
+
import { Box as Box21, Text as Text23 } from "ink";
|
|
20040
20085
|
|
|
20041
20086
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/hooks/useImmediateInput.ts
|
|
20042
20087
|
import { useLayoutEffect, useRef as useRef5 } from "react";
|
|
@@ -20135,7 +20180,7 @@ function useTerminalSize() {
|
|
|
20135
20180
|
}
|
|
20136
20181
|
|
|
20137
20182
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/HelpOverlay.tsx
|
|
20138
|
-
import { Fragment as
|
|
20183
|
+
import { Fragment as Fragment5, jsx as jsx28, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
20139
20184
|
function HelpOverlay(props) {
|
|
20140
20185
|
const { onClose } = props;
|
|
20141
20186
|
const { columns: terminalColumns, rows: terminalRows } = useTerminalSize();
|
|
@@ -20147,7 +20192,7 @@ function HelpOverlay(props) {
|
|
|
20147
20192
|
}, props.handleInput !== false);
|
|
20148
20193
|
if (props.sections) {
|
|
20149
20194
|
return /* @__PURE__ */ jsxs22(
|
|
20150
|
-
|
|
20195
|
+
Box21,
|
|
20151
20196
|
{
|
|
20152
20197
|
flexDirection: "column",
|
|
20153
20198
|
borderStyle: "round",
|
|
@@ -20156,11 +20201,11 @@ function HelpOverlay(props) {
|
|
|
20156
20201
|
height: panelHeight,
|
|
20157
20202
|
overflowY: "hidden",
|
|
20158
20203
|
children: [
|
|
20159
|
-
/* @__PURE__ */
|
|
20204
|
+
/* @__PURE__ */ jsx28(Text23, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
|
|
20160
20205
|
props.sections.map((section) => /* @__PURE__ */ jsxs22(React11.Fragment, { children: [
|
|
20161
|
-
/* @__PURE__ */
|
|
20162
|
-
/* @__PURE__ */
|
|
20163
|
-
section.entries.map((entry) => /* @__PURE__ */
|
|
20206
|
+
/* @__PURE__ */ jsx28(Text23, { children: " " }),
|
|
20207
|
+
/* @__PURE__ */ jsx28(Text23, { bold: true, children: section.title }),
|
|
20208
|
+
section.entries.map((entry) => /* @__PURE__ */ jsx28(Text23, { children: entry.keys ? " " + entry.keys.padEnd(16) + " " + entry.label : " " + entry.label }, entry.keys + entry.label))
|
|
20164
20209
|
] }, section.title))
|
|
20165
20210
|
]
|
|
20166
20211
|
}
|
|
@@ -20168,7 +20213,7 @@ function HelpOverlay(props) {
|
|
|
20168
20213
|
}
|
|
20169
20214
|
const mode = props.mode;
|
|
20170
20215
|
return /* @__PURE__ */ jsxs22(
|
|
20171
|
-
|
|
20216
|
+
Box21,
|
|
20172
20217
|
{
|
|
20173
20218
|
flexDirection: "column",
|
|
20174
20219
|
borderStyle: "round",
|
|
@@ -20177,38 +20222,38 @@ function HelpOverlay(props) {
|
|
|
20177
20222
|
height: panelHeight,
|
|
20178
20223
|
overflowY: "hidden",
|
|
20179
20224
|
children: [
|
|
20180
|
-
/* @__PURE__ */
|
|
20181
|
-
/* @__PURE__ */
|
|
20182
|
-
/* @__PURE__ */
|
|
20183
|
-
/* @__PURE__ */
|
|
20184
|
-
/* @__PURE__ */
|
|
20185
|
-
/* @__PURE__ */
|
|
20186
|
-
/* @__PURE__ */
|
|
20187
|
-
mode === "review" && /* @__PURE__ */ jsxs22(
|
|
20188
|
-
/* @__PURE__ */
|
|
20189
|
-
/* @__PURE__ */
|
|
20190
|
-
/* @__PURE__ */
|
|
20191
|
-
/* @__PURE__ */
|
|
20192
|
-
/* @__PURE__ */
|
|
20193
|
-
/* @__PURE__ */
|
|
20194
|
-
/* @__PURE__ */
|
|
20195
|
-
/* @__PURE__ */
|
|
20196
|
-
/* @__PURE__ */
|
|
20197
|
-
/* @__PURE__ */
|
|
20198
|
-
/* @__PURE__ */
|
|
20199
|
-
/* @__PURE__ */
|
|
20200
|
-
/* @__PURE__ */
|
|
20225
|
+
/* @__PURE__ */ jsx28(Text23, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
|
|
20226
|
+
/* @__PURE__ */ jsx28(Text23, { children: " " }),
|
|
20227
|
+
/* @__PURE__ */ jsx28(Text23, { bold: true, children: "Navigation" }),
|
|
20228
|
+
/* @__PURE__ */ jsx28(Text23, { children: " \u2191 / k / PgUp Scroll up" }),
|
|
20229
|
+
/* @__PURE__ */ jsx28(Text23, { children: " \u2193 / j / PgDn Scroll down" }),
|
|
20230
|
+
/* @__PURE__ */ jsx28(Text23, { children: " g / Home Jump to top" }),
|
|
20231
|
+
/* @__PURE__ */ jsx28(Text23, { children: " G / End Jump to bottom" }),
|
|
20232
|
+
mode === "review" && /* @__PURE__ */ jsxs22(Fragment5, { children: [
|
|
20233
|
+
/* @__PURE__ */ jsx28(Text23, { children: " " }),
|
|
20234
|
+
/* @__PURE__ */ jsx28(Text23, { bold: true, children: "[Review mode only]" }),
|
|
20235
|
+
/* @__PURE__ */ jsx28(Text23, { children: " Tab Toggle sidebar/detail" }),
|
|
20236
|
+
/* @__PURE__ */ jsx28(Text23, { children: " a Accept component" }),
|
|
20237
|
+
/* @__PURE__ */ jsx28(Text23, { children: " r Reject component" }),
|
|
20238
|
+
/* @__PURE__ */ jsx28(Text23, { children: " e Edit proposal" }),
|
|
20239
|
+
/* @__PURE__ */ jsx28(Text23, { children: " s Toggle source code" }),
|
|
20240
|
+
/* @__PURE__ */ jsx28(Text23, { children: " A Approve all" }),
|
|
20241
|
+
/* @__PURE__ */ jsx28(Text23, { children: " F Open finalize dialog" }),
|
|
20242
|
+
/* @__PURE__ */ jsx28(Text23, { children: " Ctrl+S Save draft" }),
|
|
20243
|
+
/* @__PURE__ */ jsx28(Text23, { children: " Ctrl+Z Undo" }),
|
|
20244
|
+
/* @__PURE__ */ jsx28(Text23, { children: " Ctrl+Y Redo" }),
|
|
20245
|
+
/* @__PURE__ */ jsx28(Text23, { children: " Esc Exit edit / close" })
|
|
20201
20246
|
] }),
|
|
20202
|
-
/* @__PURE__ */
|
|
20203
|
-
/* @__PURE__ */
|
|
20204
|
-
/* @__PURE__ */
|
|
20247
|
+
/* @__PURE__ */ jsx28(Text23, { children: " " }),
|
|
20248
|
+
/* @__PURE__ */ jsx28(Text23, { children: " h Close help" }),
|
|
20249
|
+
/* @__PURE__ */ jsx28(Text23, { children: " q Quit" })
|
|
20205
20250
|
]
|
|
20206
20251
|
}
|
|
20207
20252
|
);
|
|
20208
20253
|
}
|
|
20209
20254
|
|
|
20210
20255
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/SearchMatchSummary.tsx
|
|
20211
|
-
import { Box as
|
|
20256
|
+
import { Box as Box22, Text as Text24 } from "ink";
|
|
20212
20257
|
|
|
20213
20258
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/autocomplete.ts
|
|
20214
20259
|
function longestCommonPrefix(names) {
|
|
@@ -20265,7 +20310,7 @@ function formatSearchMatchSummary(matches, total) {
|
|
|
20265
20310
|
}
|
|
20266
20311
|
|
|
20267
20312
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/SearchMatchSummary.tsx
|
|
20268
|
-
import { Fragment as
|
|
20313
|
+
import { Fragment as Fragment6, jsx as jsx29, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
20269
20314
|
function SearchMatchSummary({
|
|
20270
20315
|
open,
|
|
20271
20316
|
query,
|
|
@@ -20276,17 +20321,17 @@ function SearchMatchSummary({
|
|
|
20276
20321
|
marginTop
|
|
20277
20322
|
}) {
|
|
20278
20323
|
if (hidden) return null;
|
|
20279
|
-
return /* @__PURE__ */ jsxs23(
|
|
20280
|
-
open && /* @__PURE__ */ jsxs23(
|
|
20324
|
+
return /* @__PURE__ */ jsxs23(Fragment6, { children: [
|
|
20325
|
+
open && /* @__PURE__ */ jsxs23(Box22, { marginTop, flexDirection: "column", children: [
|
|
20281
20326
|
/* @__PURE__ */ jsxs23(Text24, { children: [
|
|
20282
20327
|
`/${query}`,
|
|
20283
|
-
/* @__PURE__ */
|
|
20284
|
-
query && /* @__PURE__ */
|
|
20285
|
-
/* @__PURE__ */
|
|
20328
|
+
/* @__PURE__ */ jsx29(Text24, { color: PALETTE.accent, children: "\u258E" }),
|
|
20329
|
+
query && /* @__PURE__ */ jsx29(Text24, { color: PALETTE.muted, children: formatSearchMatchSummary(matches, total) }),
|
|
20330
|
+
/* @__PURE__ */ jsx29(Text24, { children: " \xB7 [Esc] leave" })
|
|
20286
20331
|
] }),
|
|
20287
|
-
autocompleteCandidates.length > 1 && /* @__PURE__ */
|
|
20332
|
+
autocompleteCandidates.length > 1 && /* @__PURE__ */ jsx29(Text24, { color: PALETTE.muted, children: ` possibilities: ${autocompleteCandidates.join(" \xB7 ").slice(0, 120)}` })
|
|
20288
20333
|
] }),
|
|
20289
|
-
!open && query && /* @__PURE__ */
|
|
20334
|
+
!open && query && /* @__PURE__ */ jsx29(Box22, { marginTop, children: /* @__PURE__ */ jsx29(Text24, { children: `/${query}${formatSearchMatchSummary(matches, total)} \xB7 [Esc] clear` }) })
|
|
20290
20335
|
] });
|
|
20291
20336
|
}
|
|
20292
20337
|
|
|
@@ -21424,7 +21469,7 @@ function useScopeGate({ components, onConfirm, onQuit }) {
|
|
|
21424
21469
|
}
|
|
21425
21470
|
|
|
21426
21471
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/screen.tsx
|
|
21427
|
-
import { Fragment as
|
|
21472
|
+
import { Fragment as Fragment7, jsx as jsx30, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
21428
21473
|
var HELP_SECTIONS = [
|
|
21429
21474
|
{
|
|
21430
21475
|
title: "Navigation",
|
|
@@ -21464,29 +21509,29 @@ var HELP_SECTIONS = [
|
|
|
21464
21509
|
];
|
|
21465
21510
|
function ScopeGateScreen(props) {
|
|
21466
21511
|
if (props.components.length === 0) {
|
|
21467
|
-
return /* @__PURE__ */
|
|
21512
|
+
return /* @__PURE__ */ jsx30(Box23, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx30(Text25, { color: PALETTE.error, children: "Error: no components found for this session \u2014 please re-run analyze extract." }) });
|
|
21468
21513
|
}
|
|
21469
|
-
return /* @__PURE__ */
|
|
21514
|
+
return /* @__PURE__ */ jsx30(ScopeGateView, { ...props });
|
|
21470
21515
|
}
|
|
21471
21516
|
function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
21472
21517
|
const gate = useScopeGate({ components, onConfirm, onQuit });
|
|
21473
21518
|
const { search, graph, columnPlan, panelLayout, counters } = gate;
|
|
21474
21519
|
if (gate.showHelp) {
|
|
21475
|
-
return /* @__PURE__ */
|
|
21520
|
+
return /* @__PURE__ */ jsx30(HelpOverlay, { sections: HELP_SECTIONS, handleInput: false, onClose: gate.closeHelp });
|
|
21476
21521
|
}
|
|
21477
|
-
return /* @__PURE__ */ jsxs24(
|
|
21478
|
-
/* @__PURE__ */
|
|
21479
|
-
/* @__PURE__ */ jsxs24(
|
|
21480
|
-
/* @__PURE__ */ jsxs24(
|
|
21481
|
-
/* @__PURE__ */
|
|
21522
|
+
return /* @__PURE__ */ jsxs24(Box23, { flexDirection: "column", children: [
|
|
21523
|
+
/* @__PURE__ */ jsx30(StepHeader, { step: "scope-gate" }),
|
|
21524
|
+
/* @__PURE__ */ jsxs24(Box23, { flexDirection: "column", paddingX: 2, children: [
|
|
21525
|
+
/* @__PURE__ */ jsxs24(Box23, { flexDirection: "row", flexWrap: "wrap", children: [
|
|
21526
|
+
/* @__PURE__ */ jsx30(CounterStrip, { counters, totalWidth: gate.totalWidth }),
|
|
21482
21527
|
gate.aiExcludedCount > 0 && /* @__PURE__ */ jsxs24(Text25, { color: PALETTE.muted, children: [
|
|
21483
21528
|
`${gate.aiExcludedCount} component${gate.aiExcludedCount === 1 ? "" : "s"} flagged by AI`,
|
|
21484
|
-
gate.aiRows.length > 0 && /* @__PURE__ */
|
|
21529
|
+
gate.aiRows.length > 0 && /* @__PURE__ */ jsx30(Text25, { color: PALETTE.accent, children: " \u2014 press [x] to see why" })
|
|
21485
21530
|
] })
|
|
21486
21531
|
] }),
|
|
21487
|
-
graph.cycles.length > 0 && /* @__PURE__ */
|
|
21488
|
-
/* @__PURE__ */ jsxs24(
|
|
21489
|
-
gate.aiRationalePanelOpen ? /* @__PURE__ */
|
|
21532
|
+
graph.cycles.length > 0 && /* @__PURE__ */ jsx30(Box23, { marginTop: 1, children: /* @__PURE__ */ jsx30(Text25, { 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." }) }),
|
|
21533
|
+
/* @__PURE__ */ jsxs24(Box23, { flexDirection: "row", alignItems: "stretch", children: [
|
|
21534
|
+
gate.aiRationalePanelOpen ? /* @__PURE__ */ jsx30(
|
|
21490
21535
|
GotoBanner,
|
|
21491
21536
|
{
|
|
21492
21537
|
title: `Review flags (${gate.aiExcludedCount})`,
|
|
@@ -21496,7 +21541,7 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
21496
21541
|
width: columnPlan.main,
|
|
21497
21542
|
footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [x/Esc] close"
|
|
21498
21543
|
}
|
|
21499
|
-
) : /* @__PURE__ */
|
|
21544
|
+
) : /* @__PURE__ */ jsx30(
|
|
21500
21545
|
GroupedSidebar,
|
|
21501
21546
|
{
|
|
21502
21547
|
items: gate.groupedItems,
|
|
@@ -21524,9 +21569,9 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
21524
21569
|
graph: graph.nodes
|
|
21525
21570
|
}
|
|
21526
21571
|
),
|
|
21527
|
-
columnPlan.layout === "two-column" && /* @__PURE__ */ jsxs24(
|
|
21528
|
-
/* @__PURE__ */
|
|
21529
|
-
/* @__PURE__ */
|
|
21572
|
+
columnPlan.layout === "two-column" && /* @__PURE__ */ jsxs24(Fragment7, { children: [
|
|
21573
|
+
/* @__PURE__ */ jsx30(Box23, { width: 2, flexShrink: 0 }),
|
|
21574
|
+
/* @__PURE__ */ jsx30(
|
|
21530
21575
|
AddedColumn,
|
|
21531
21576
|
{
|
|
21532
21577
|
width: columnPlan.added,
|
|
@@ -21541,9 +21586,9 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
21541
21586
|
)
|
|
21542
21587
|
] })
|
|
21543
21588
|
] }),
|
|
21544
|
-
gate.cyclesPanelOpen && /* @__PURE__ */
|
|
21545
|
-
gate.pendingRejectCascade && /* @__PURE__ */
|
|
21546
|
-
/* @__PURE__ */
|
|
21589
|
+
gate.cyclesPanelOpen && /* @__PURE__ */ jsx30(CyclesPanel, { cycles: gate.slotCycles, cursor: gate.cyclesCursor }),
|
|
21590
|
+
gate.pendingRejectCascade && /* @__PURE__ */ jsx30(RejectPrompt, { pending: gate.pendingRejectCascade }),
|
|
21591
|
+
/* @__PURE__ */ jsx30(
|
|
21547
21592
|
SearchMatchSummary,
|
|
21548
21593
|
{
|
|
21549
21594
|
open: search.searchOpen,
|
|
@@ -21554,7 +21599,7 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
21554
21599
|
marginTop: 1
|
|
21555
21600
|
}
|
|
21556
21601
|
),
|
|
21557
|
-
/* @__PURE__ */
|
|
21602
|
+
/* @__PURE__ */ jsx30(
|
|
21558
21603
|
CompactControlBar,
|
|
21559
21604
|
{
|
|
21560
21605
|
hasGroupRoots: gate.hasGroupRoots,
|
|
@@ -21664,14 +21709,14 @@ function progressRows2(progress, agent) {
|
|
|
21664
21709
|
}
|
|
21665
21710
|
|
|
21666
21711
|
// packages/experience-design-system-cli/src/tui/import/steps/08-generation/screen.tsx
|
|
21667
|
-
import { jsx as
|
|
21712
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
21668
21713
|
function GenerationScreen({
|
|
21669
21714
|
progress,
|
|
21670
21715
|
agent,
|
|
21671
21716
|
acceptedCount,
|
|
21672
21717
|
hasTokens
|
|
21673
21718
|
}) {
|
|
21674
|
-
return /* @__PURE__ */
|
|
21719
|
+
return /* @__PURE__ */ jsx31(
|
|
21675
21720
|
RunningStep,
|
|
21676
21721
|
{
|
|
21677
21722
|
step: "generation",
|
|
@@ -21895,7 +21940,7 @@ function buildFlowStart(input) {
|
|
|
21895
21940
|
}
|
|
21896
21941
|
|
|
21897
21942
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/screen.tsx
|
|
21898
|
-
import { Box as
|
|
21943
|
+
import { Box as Box43 } from "ink";
|
|
21899
21944
|
|
|
21900
21945
|
// packages/experience-design-system-types/dist/src/cdf/validate.js
|
|
21901
21946
|
import { Ajv as Ajv2 } from "ajv";
|
|
@@ -22215,7 +22260,7 @@ function skipLabel(matchedNames) {
|
|
|
22215
22260
|
}
|
|
22216
22261
|
|
|
22217
22262
|
// packages/experience-design-system-cli/src/tui/import/steps/preview-validation-error/screen.tsx
|
|
22218
|
-
import { jsx as
|
|
22263
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
22219
22264
|
function PreviewValidationErrorScreen({
|
|
22220
22265
|
errors,
|
|
22221
22266
|
missingNames,
|
|
@@ -22224,7 +22269,7 @@ function PreviewValidationErrorScreen({
|
|
|
22224
22269
|
onQuit
|
|
22225
22270
|
}) {
|
|
22226
22271
|
const matchedNames = matchedComponentNames(errors, missingNames);
|
|
22227
|
-
return /* @__PURE__ */
|
|
22272
|
+
return /* @__PURE__ */ jsx32(
|
|
22228
22273
|
GateStep,
|
|
22229
22274
|
{
|
|
22230
22275
|
intent: "error",
|
|
@@ -22260,7 +22305,7 @@ function getReviewJsonPanelValue(selected, showHiddenProps) {
|
|
|
22260
22305
|
}
|
|
22261
22306
|
|
|
22262
22307
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx
|
|
22263
|
-
import { Box as
|
|
22308
|
+
import { Box as Box36, Text as Text39 } from "ink";
|
|
22264
22309
|
|
|
22265
22310
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/graph/cycle-view.ts
|
|
22266
22311
|
function computeCycleView(components) {
|
|
@@ -22499,12 +22544,12 @@ function enumerateCycleBreaks(cycle, components) {
|
|
|
22499
22544
|
}
|
|
22500
22545
|
|
|
22501
22546
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewComponentPanel.tsx
|
|
22502
|
-
import { Box as
|
|
22547
|
+
import { Box as Box30, Text as Text33 } from "ink";
|
|
22503
22548
|
|
|
22504
22549
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx
|
|
22505
22550
|
import React12, { useEffect as useEffect11, useLayoutEffect as useLayoutEffect2, useState as useState18 } from "react";
|
|
22506
22551
|
import figures6 from "figures";
|
|
22507
|
-
import { Box as
|
|
22552
|
+
import { Box as Box24, measureElement, Text as Text26 } from "ink";
|
|
22508
22553
|
|
|
22509
22554
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/scroll-offset.ts
|
|
22510
22555
|
function computeNextScrollOffset(current, input, key, totalLines, panelHeight) {
|
|
@@ -22535,7 +22580,7 @@ function computeNextScrollOffset(current, input, key, totalLines, panelHeight) {
|
|
|
22535
22580
|
}
|
|
22536
22581
|
|
|
22537
22582
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx
|
|
22538
|
-
import { Fragment as
|
|
22583
|
+
import { Fragment as Fragment8, jsx as jsx33, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
22539
22584
|
function createCommonRowProps(selected, focusLevel, editingField, textCursor, valueCursor, cursorVisible, editingValue, valueText, width) {
|
|
22540
22585
|
return {
|
|
22541
22586
|
selected,
|
|
@@ -22673,14 +22718,14 @@ function serializeState(state2, originalJson) {
|
|
|
22673
22718
|
return JSON.stringify(entry, null, 2);
|
|
22674
22719
|
}
|
|
22675
22720
|
function Picker({ value, active }) {
|
|
22676
|
-
return /* @__PURE__ */ jsxs25(
|
|
22677
|
-
active && /* @__PURE__ */
|
|
22678
|
-
/* @__PURE__ */
|
|
22679
|
-
active && /* @__PURE__ */
|
|
22721
|
+
return /* @__PURE__ */ jsxs25(Box24, { children: [
|
|
22722
|
+
active && /* @__PURE__ */ jsx33(Text26, { color: PALETTE.warning, children: "\u2039" }),
|
|
22723
|
+
/* @__PURE__ */ jsx33(Text26, { color: active ? PALETTE.warning : void 0, bold: active, children: value }),
|
|
22724
|
+
active && /* @__PURE__ */ jsx33(Text26, { color: PALETTE.warning, children: "\u203A" })
|
|
22680
22725
|
] });
|
|
22681
22726
|
}
|
|
22682
22727
|
function Toggle({ value, active }) {
|
|
22683
|
-
return /* @__PURE__ */
|
|
22728
|
+
return /* @__PURE__ */ jsx33(Box24, { children: /* @__PURE__ */ jsx33(Text26, { color: active ? PALETTE.warning : value ? PALETTE.success : PALETTE.border, children: value ? "[\u2713]" : "[ ]" }) });
|
|
22684
22729
|
}
|
|
22685
22730
|
function InlinePropField({
|
|
22686
22731
|
label,
|
|
@@ -22689,7 +22734,7 @@ function InlinePropField({
|
|
|
22689
22734
|
flexible = false,
|
|
22690
22735
|
width
|
|
22691
22736
|
}) {
|
|
22692
|
-
return /* @__PURE__ */ jsxs25(
|
|
22737
|
+
return /* @__PURE__ */ jsxs25(Box24, { width, gap: 1, flexShrink: flexible ? 1 : 0, flexGrow: flexible ? 1 : 0, flexWrap: "wrap", children: [
|
|
22693
22738
|
/* @__PURE__ */ jsxs25(Text26, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, wrap: "truncate-end", children: [
|
|
22694
22739
|
focused ? "\u203A " : " ",
|
|
22695
22740
|
label
|
|
@@ -22703,19 +22748,19 @@ function RequiredField({
|
|
|
22703
22748
|
editingField,
|
|
22704
22749
|
activeField
|
|
22705
22750
|
}) {
|
|
22706
|
-
return /* @__PURE__ */
|
|
22751
|
+
return /* @__PURE__ */ jsx33(InlinePropField, { label: "req:", focused, children: /* @__PURE__ */ jsx33(Toggle, { value, active: editingField && activeField === "required" }) });
|
|
22707
22752
|
}
|
|
22708
22753
|
function DefaultValueRow({
|
|
22709
22754
|
display,
|
|
22710
22755
|
active,
|
|
22711
22756
|
focused
|
|
22712
22757
|
}) {
|
|
22713
|
-
return /* @__PURE__ */ jsxs25(
|
|
22758
|
+
return /* @__PURE__ */ jsxs25(Box24, { gap: 1, flexWrap: "wrap", flexShrink: 0, children: [
|
|
22714
22759
|
/* @__PURE__ */ jsxs25(Text26, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
22715
22760
|
focused ? "\u203A " : " ",
|
|
22716
22761
|
"default:"
|
|
22717
22762
|
] }),
|
|
22718
|
-
active ? /* @__PURE__ */
|
|
22763
|
+
active ? /* @__PURE__ */ jsx33(Picker, { value: display, active: true }) : /* @__PURE__ */ jsx33(Text26, { wrap: "wrap", children: display })
|
|
22719
22764
|
] });
|
|
22720
22765
|
}
|
|
22721
22766
|
function RowLabel({
|
|
@@ -22743,10 +22788,10 @@ function ValueInputRow({
|
|
|
22743
22788
|
valueText,
|
|
22744
22789
|
cursorVisible
|
|
22745
22790
|
}) {
|
|
22746
|
-
return /* @__PURE__ */ jsxs25(
|
|
22747
|
-
/* @__PURE__ */
|
|
22748
|
-
/* @__PURE__ */
|
|
22749
|
-
/* @__PURE__ */
|
|
22791
|
+
return /* @__PURE__ */ jsxs25(Box24, { paddingLeft: 2, children: [
|
|
22792
|
+
/* @__PURE__ */ jsx33(Text26, { color: PALETTE.accent, children: mode === "edit" ? "\u270E " : "+ " }),
|
|
22793
|
+
/* @__PURE__ */ jsx33(Text26, { children: valueText }),
|
|
22794
|
+
/* @__PURE__ */ jsx33(Text26, { inverse: cursorVisible, children: " " })
|
|
22750
22795
|
] });
|
|
22751
22796
|
}
|
|
22752
22797
|
function EditableListItem({
|
|
@@ -22759,9 +22804,9 @@ function EditableListItem({
|
|
|
22759
22804
|
}) {
|
|
22760
22805
|
const isBeingEdited = editingValue?.mode === "edit" && editingValue.index === index;
|
|
22761
22806
|
if (isBeingEdited) {
|
|
22762
|
-
return /* @__PURE__ */
|
|
22807
|
+
return /* @__PURE__ */ jsx33(ValueInputRow, { mode: "edit", valueText, cursorVisible });
|
|
22763
22808
|
}
|
|
22764
|
-
return /* @__PURE__ */
|
|
22809
|
+
return /* @__PURE__ */ jsx33(Box24, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx33(Text26, { color: active ? PALETTE.accent : void 0, children: active ? `${figures6.pointer} ${value}` : ` ${value}` }) });
|
|
22765
22810
|
}
|
|
22766
22811
|
function EditableValueList({
|
|
22767
22812
|
values,
|
|
@@ -22774,9 +22819,9 @@ function EditableValueList({
|
|
|
22774
22819
|
emptyPaddingLeft,
|
|
22775
22820
|
showAddInput
|
|
22776
22821
|
}) {
|
|
22777
|
-
return /* @__PURE__ */ jsxs25(
|
|
22778
|
-
values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */
|
|
22779
|
-
values.map((value, index) => /* @__PURE__ */
|
|
22822
|
+
return /* @__PURE__ */ jsxs25(Fragment8, { children: [
|
|
22823
|
+
values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, children: emptyMessage }) : /* @__PURE__ */ jsx33(Box24, { paddingLeft: emptyPaddingLeft, children: /* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, children: emptyMessage }) })),
|
|
22824
|
+
values.map((value, index) => /* @__PURE__ */ jsx33(
|
|
22780
22825
|
EditableListItem,
|
|
22781
22826
|
{
|
|
22782
22827
|
value,
|
|
@@ -22788,7 +22833,7 @@ function EditableValueList({
|
|
|
22788
22833
|
},
|
|
22789
22834
|
index
|
|
22790
22835
|
)),
|
|
22791
|
-
showAddInput && editingValue?.mode === "add" && /* @__PURE__ */
|
|
22836
|
+
showAddInput && editingValue?.mode === "add" && /* @__PURE__ */ jsx33(ValueInputRow, { mode: "add", valueText, cursorVisible })
|
|
22792
22837
|
] });
|
|
22793
22838
|
}
|
|
22794
22839
|
function DefaultSubRow({
|
|
@@ -22800,51 +22845,51 @@ function DefaultSubRow({
|
|
|
22800
22845
|
}) {
|
|
22801
22846
|
const cursor = cursorVisible ? "\u2588" : " ";
|
|
22802
22847
|
if (prop.type === "richtext" || prop.type === "media" || prop.type === "link") {
|
|
22803
|
-
return /* @__PURE__ */ jsxs25(
|
|
22848
|
+
return /* @__PURE__ */ jsxs25(Box24, { gap: 1, flexShrink: 0, children: [
|
|
22804
22849
|
/* @__PURE__ */ jsxs25(Text26, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
22805
22850
|
focused ? "\u203A " : " ",
|
|
22806
22851
|
"default:"
|
|
22807
22852
|
] }),
|
|
22808
|
-
/* @__PURE__ */
|
|
22853
|
+
/* @__PURE__ */ jsx33(Text26, { color: focused ? void 0 : PALETTE.muted, children: "(not applicable)" })
|
|
22809
22854
|
] });
|
|
22810
22855
|
}
|
|
22811
22856
|
if (prop.type === "boolean") {
|
|
22812
22857
|
const display = prop.default === true ? "true" : prop.default === false ? "false" : "(unset)";
|
|
22813
|
-
return /* @__PURE__ */
|
|
22858
|
+
return /* @__PURE__ */ jsx33(DefaultValueRow, { display, active, focused });
|
|
22814
22859
|
}
|
|
22815
22860
|
if (prop.type === "enum") {
|
|
22816
22861
|
if (prop.values.length === 0) {
|
|
22817
|
-
return /* @__PURE__ */ jsxs25(
|
|
22862
|
+
return /* @__PURE__ */ jsxs25(Box24, { gap: 1, flexShrink: 0, children: [
|
|
22818
22863
|
/* @__PURE__ */ jsxs25(Text26, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
22819
22864
|
focused ? "\u203A " : " ",
|
|
22820
22865
|
"default:"
|
|
22821
22866
|
] }),
|
|
22822
|
-
/* @__PURE__ */
|
|
22867
|
+
/* @__PURE__ */ jsx33(Text26, { color: focused ? void 0 : PALETTE.muted, children: "(no values defined)" })
|
|
22823
22868
|
] });
|
|
22824
22869
|
}
|
|
22825
22870
|
const display = typeof prop.default === "string" && prop.default !== "" ? prop.default : "(unset)";
|
|
22826
|
-
return /* @__PURE__ */
|
|
22871
|
+
return /* @__PURE__ */ jsx33(DefaultValueRow, { display, active, focused });
|
|
22827
22872
|
}
|
|
22828
22873
|
const value = typeof prop.default === "string" ? prop.default : "";
|
|
22829
22874
|
if (active) {
|
|
22830
|
-
return /* @__PURE__ */ jsxs25(
|
|
22875
|
+
return /* @__PURE__ */ jsxs25(Box24, { flexDirection: "row", flexShrink: 0, children: [
|
|
22831
22876
|
/* @__PURE__ */ jsxs25(Text26, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
22832
22877
|
focused ? "\u203A " : " ",
|
|
22833
22878
|
"default:"
|
|
22834
22879
|
] }),
|
|
22835
|
-
/* @__PURE__ */ jsxs25(
|
|
22836
|
-
/* @__PURE__ */
|
|
22837
|
-
/* @__PURE__ */
|
|
22838
|
-
/* @__PURE__ */
|
|
22880
|
+
/* @__PURE__ */ jsxs25(Box24, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
22881
|
+
/* @__PURE__ */ jsx33(Text26, { children: value.slice(0, textCursor) }),
|
|
22882
|
+
/* @__PURE__ */ jsx33(Text26, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
|
|
22883
|
+
/* @__PURE__ */ jsx33(Text26, { children: value.slice(textCursor + 1) })
|
|
22839
22884
|
] })
|
|
22840
22885
|
] });
|
|
22841
22886
|
}
|
|
22842
|
-
return /* @__PURE__ */ jsxs25(
|
|
22887
|
+
return /* @__PURE__ */ jsxs25(Box24, { gap: 1, flexShrink: 0, children: [
|
|
22843
22888
|
/* @__PURE__ */ jsxs25(Text26, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
22844
22889
|
focused ? "\u203A " : " ",
|
|
22845
22890
|
"default:"
|
|
22846
22891
|
] }),
|
|
22847
|
-
/* @__PURE__ */
|
|
22892
|
+
/* @__PURE__ */ jsx33(Text26, { color: focused || value ? void 0 : PALETTE.muted, children: value || "(none)" })
|
|
22848
22893
|
] });
|
|
22849
22894
|
}
|
|
22850
22895
|
function DescriptionField({
|
|
@@ -22859,20 +22904,20 @@ function DescriptionField({
|
|
|
22859
22904
|
paddingLeft = 2
|
|
22860
22905
|
}) {
|
|
22861
22906
|
if (compact) {
|
|
22862
|
-
return /* @__PURE__ */ jsxs25(
|
|
22907
|
+
return /* @__PURE__ */ jsxs25(Box24, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
22863
22908
|
/* @__PURE__ */ jsxs25(Text26, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
22864
22909
|
focused ? "\u203A " : " ",
|
|
22865
22910
|
label
|
|
22866
22911
|
] }),
|
|
22867
|
-
/* @__PURE__ */
|
|
22912
|
+
/* @__PURE__ */ jsx33(Text26, { wrap: "truncate-end", color: value ? void 0 : PALETTE.muted, children: value || "\u2014" })
|
|
22868
22913
|
] });
|
|
22869
22914
|
}
|
|
22870
|
-
return /* @__PURE__ */ jsxs25(
|
|
22915
|
+
return /* @__PURE__ */ jsxs25(Box24, { paddingLeft, flexDirection: "column", width, flexShrink: 0, children: [
|
|
22871
22916
|
/* @__PURE__ */ jsxs25(Text26, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
22872
22917
|
focused ? "\u203A " : " ",
|
|
22873
22918
|
label
|
|
22874
22919
|
] }),
|
|
22875
|
-
editing ? /* @__PURE__ */
|
|
22920
|
+
editing ? /* @__PURE__ */ jsx33(EditableDescription, { cursorVisible, value, textCursor }) : /* @__PURE__ */ jsx33(Text26, { wrap: "wrap", children: value || "\u2014" })
|
|
22876
22921
|
] });
|
|
22877
22922
|
}
|
|
22878
22923
|
function EditableDescription({
|
|
@@ -22882,7 +22927,7 @@ function EditableDescription({
|
|
|
22882
22927
|
}) {
|
|
22883
22928
|
return /* @__PURE__ */ jsxs25(Text26, { wrap: "wrap", children: [
|
|
22884
22929
|
value.slice(0, textCursor),
|
|
22885
|
-
/* @__PURE__ */
|
|
22930
|
+
/* @__PURE__ */ jsx33(Text26, { inverse: cursorVisible, children: value[textCursor] ?? " " }),
|
|
22886
22931
|
value.slice(textCursor + 1)
|
|
22887
22932
|
] });
|
|
22888
22933
|
}
|
|
@@ -22903,9 +22948,9 @@ function PropRow({
|
|
|
22903
22948
|
}) {
|
|
22904
22949
|
const descFocused = activeField === "description";
|
|
22905
22950
|
const descActive = editingField && descFocused;
|
|
22906
|
-
return /* @__PURE__ */ jsxs25(
|
|
22907
|
-
/* @__PURE__ */
|
|
22908
|
-
/* @__PURE__ */
|
|
22951
|
+
return /* @__PURE__ */ jsxs25(Box24, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
22952
|
+
/* @__PURE__ */ jsx33(Box24, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx33(RowLabel, { name: prop.name, selected }) }),
|
|
22953
|
+
/* @__PURE__ */ jsx33(
|
|
22909
22954
|
DescriptionField,
|
|
22910
22955
|
{
|
|
22911
22956
|
value: prop.description,
|
|
@@ -22918,8 +22963,8 @@ function PropRow({
|
|
|
22918
22963
|
paddingLeft: 0
|
|
22919
22964
|
}
|
|
22920
22965
|
),
|
|
22921
|
-
/* @__PURE__ */ jsxs25(
|
|
22922
|
-
/* @__PURE__ */
|
|
22966
|
+
/* @__PURE__ */ jsxs25(Box24, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
22967
|
+
/* @__PURE__ */ jsx33(
|
|
22923
22968
|
RequiredField,
|
|
22924
22969
|
{
|
|
22925
22970
|
value: prop.required,
|
|
@@ -22928,10 +22973,10 @@ function PropRow({
|
|
|
22928
22973
|
activeField
|
|
22929
22974
|
}
|
|
22930
22975
|
),
|
|
22931
|
-
/* @__PURE__ */
|
|
22976
|
+
/* @__PURE__ */ jsx33(InlinePropField, { label: "type:", focused: activeField === "type", children: editingField && activeField === "type" ? /* @__PURE__ */ jsx33(Picker, { value: prop.type, active: true }) : /* @__PURE__ */ jsx33(Text26, { children: prop.type }) })
|
|
22932
22977
|
] }),
|
|
22933
|
-
prop.type === "token" && /* @__PURE__ */
|
|
22934
|
-
prop.type === "enum" && /* @__PURE__ */ jsxs25(
|
|
22978
|
+
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(Text26, { wrap: "wrap", children: prop.tokenKind || "\u2014" }) }),
|
|
22979
|
+
prop.type === "enum" && /* @__PURE__ */ jsxs25(Box24, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
22935
22980
|
/* @__PURE__ */ jsxs25(Text26, { color: activeField === "values" ? PALETTE.warning : PALETTE.muted, bold: activeField === "values", children: [
|
|
22936
22981
|
activeField === "values" ? "\u203A " : " ",
|
|
22937
22982
|
"values:"
|
|
@@ -22942,7 +22987,7 @@ function PropRow({
|
|
|
22942
22987
|
"]"
|
|
22943
22988
|
] })
|
|
22944
22989
|
] }),
|
|
22945
|
-
/* @__PURE__ */
|
|
22990
|
+
/* @__PURE__ */ jsx33(
|
|
22946
22991
|
DefaultSubRow,
|
|
22947
22992
|
{
|
|
22948
22993
|
prop,
|
|
@@ -22952,12 +22997,12 @@ function PropRow({
|
|
|
22952
22997
|
cursorVisible
|
|
22953
22998
|
}
|
|
22954
22999
|
),
|
|
22955
|
-
prop.type === "token" && prop.category === "design" && /* @__PURE__ */ jsxs25(
|
|
23000
|
+
prop.type === "token" && prop.category === "design" && /* @__PURE__ */ jsxs25(Box24, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
22956
23001
|
/* @__PURE__ */ jsxs25(Text26, { color: activeField === "allowed" ? PALETTE.warning : PALETTE.muted, bold: activeField === "allowed", children: [
|
|
22957
23002
|
activeField === "allowed" ? "\u203A " : " ",
|
|
22958
23003
|
"allowed:"
|
|
22959
23004
|
] }),
|
|
22960
|
-
editingField && activeField === "allowed" ? /* @__PURE__ */
|
|
23005
|
+
editingField && activeField === "allowed" ? /* @__PURE__ */ jsx33(Box24, { width: Math.max(1, width - 4), borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: /* @__PURE__ */ jsx33(Text26, { children: "press [t] to edit allowed tokens" }) }) : /* @__PURE__ */ jsx33(
|
|
22961
23006
|
Text26,
|
|
22962
23007
|
{
|
|
22963
23008
|
color: activeField !== "allowed" && prop.allowed.length === 0 ? PALETTE.muted : void 0,
|
|
@@ -22966,17 +23011,17 @@ function PropRow({
|
|
|
22966
23011
|
}
|
|
22967
23012
|
)
|
|
22968
23013
|
] }),
|
|
22969
|
-
selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */
|
|
23014
|
+
selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx33(Box24, { paddingLeft: 2, children: /* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, children: (() => {
|
|
22970
23015
|
const max = Math.max(8, width - 8);
|
|
22971
23016
|
const text = `~ ${rationale}`;
|
|
22972
23017
|
return text.length > max ? text.slice(0, max - 1) + "\u2026" : text;
|
|
22973
23018
|
})() }) }, rowKey ? `rationale-${rowKey}` : void 0),
|
|
22974
|
-
selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs25(
|
|
22975
|
-
/* @__PURE__ */ jsxs25(
|
|
22976
|
-
/* @__PURE__ */
|
|
22977
|
-
activeField === "values" && /* @__PURE__ */
|
|
23019
|
+
selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs25(Box24, { paddingLeft: 2, flexDirection: "column", children: [
|
|
23020
|
+
/* @__PURE__ */ jsxs25(Box24, { children: [
|
|
23021
|
+
/* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, children: "values:" }),
|
|
23022
|
+
activeField === "values" && /* @__PURE__ */ jsx33(Text26, { children: " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
|
|
22978
23023
|
] }),
|
|
22979
|
-
/* @__PURE__ */
|
|
23024
|
+
/* @__PURE__ */ jsx33(
|
|
22980
23025
|
EditableValueList,
|
|
22981
23026
|
{
|
|
22982
23027
|
values: prop.values,
|
|
@@ -23006,9 +23051,9 @@ function SlotRow({
|
|
|
23006
23051
|
pickerCandidates,
|
|
23007
23052
|
pickerCursor
|
|
23008
23053
|
}) {
|
|
23009
|
-
return /* @__PURE__ */ jsxs25(
|
|
23010
|
-
/* @__PURE__ */
|
|
23011
|
-
/* @__PURE__ */
|
|
23054
|
+
return /* @__PURE__ */ jsxs25(Box24, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
23055
|
+
/* @__PURE__ */ jsx33(Box24, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx33(RowLabel, { name: slot.name, selected, trailing: false }) }),
|
|
23056
|
+
/* @__PURE__ */ jsx33(
|
|
23012
23057
|
DescriptionField,
|
|
23013
23058
|
{
|
|
23014
23059
|
value: slot.description,
|
|
@@ -23021,7 +23066,7 @@ function SlotRow({
|
|
|
23021
23066
|
paddingLeft: 0
|
|
23022
23067
|
}
|
|
23023
23068
|
),
|
|
23024
|
-
/* @__PURE__ */
|
|
23069
|
+
/* @__PURE__ */ jsx33(Box24, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx33(
|
|
23025
23070
|
RequiredField,
|
|
23026
23071
|
{
|
|
23027
23072
|
value: slot.required,
|
|
@@ -23030,7 +23075,7 @@ function SlotRow({
|
|
|
23030
23075
|
activeField
|
|
23031
23076
|
}
|
|
23032
23077
|
) }),
|
|
23033
|
-
!(selected && editingField && activeField === "allowedComponents") && /* @__PURE__ */ jsxs25(
|
|
23078
|
+
!(selected && editingField && activeField === "allowedComponents") && /* @__PURE__ */ jsxs25(Box24, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
23034
23079
|
/* @__PURE__ */ jsxs25(
|
|
23035
23080
|
Text26,
|
|
23036
23081
|
{
|
|
@@ -23042,10 +23087,10 @@ function SlotRow({
|
|
|
23042
23087
|
]
|
|
23043
23088
|
}
|
|
23044
23089
|
),
|
|
23045
|
-
slot.allowedComponents.length === 0 ? /* @__PURE__ */
|
|
23090
|
+
slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, children: "(any)" }) : /* @__PURE__ */ jsx33(Text26, { wrap: "wrap", children: slot.allowedComponents.join(", ") })
|
|
23046
23091
|
] }),
|
|
23047
|
-
selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsxs25(
|
|
23048
|
-
/* @__PURE__ */ jsxs25(
|
|
23092
|
+
selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsxs25(Box24, { flexDirection: "column", children: [
|
|
23093
|
+
/* @__PURE__ */ jsxs25(Box24, { children: [
|
|
23049
23094
|
/* @__PURE__ */ jsxs25(
|
|
23050
23095
|
Text26,
|
|
23051
23096
|
{
|
|
@@ -23057,9 +23102,9 @@ function SlotRow({
|
|
|
23057
23102
|
]
|
|
23058
23103
|
}
|
|
23059
23104
|
),
|
|
23060
|
-
editingField && activeField === "allowedComponents" && /* @__PURE__ */
|
|
23105
|
+
editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsx33(Text26, { 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" })
|
|
23061
23106
|
] }),
|
|
23062
|
-
/* @__PURE__ */
|
|
23107
|
+
/* @__PURE__ */ jsx33(
|
|
23063
23108
|
EditableValueList,
|
|
23064
23109
|
{
|
|
23065
23110
|
values: slot.allowedComponents,
|
|
@@ -23073,21 +23118,21 @@ function SlotRow({
|
|
|
23073
23118
|
showAddInput: editingField && activeField === "allowedComponents"
|
|
23074
23119
|
}
|
|
23075
23120
|
),
|
|
23076
|
-
editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */
|
|
23121
|
+
editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */ jsx33(Box24, { paddingLeft: 2, flexDirection: "column", children: pickerCandidates.length === 0 ? /* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, children: "(no valid components to add \u2014 all remaining candidates would create cycles)" }) : (() => {
|
|
23077
23122
|
const filtered = valueText.length === 0 ? pickerCandidates : pickerCandidates.filter((n) => n.toLowerCase().includes(valueText.toLowerCase()));
|
|
23078
23123
|
if (filtered.length === 0) {
|
|
23079
|
-
return /* @__PURE__ */
|
|
23124
|
+
return /* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, children: "(no candidates match \u2014 Enter to add as free text)" });
|
|
23080
23125
|
}
|
|
23081
23126
|
const cursor = pickerCursor % filtered.length;
|
|
23082
23127
|
const MAX_VISIBLE = 5;
|
|
23083
23128
|
const start = Math.max(0, Math.min(filtered.length - MAX_VISIBLE, cursor - 2));
|
|
23084
23129
|
const slice = filtered.slice(start, start + MAX_VISIBLE);
|
|
23085
|
-
return /* @__PURE__ */ jsxs25(
|
|
23086
|
-
/* @__PURE__ */
|
|
23130
|
+
return /* @__PURE__ */ jsxs25(Box24, { flexDirection: "column", children: [
|
|
23131
|
+
/* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
|
|
23087
23132
|
slice.map((name, i) => {
|
|
23088
23133
|
const absIdx = start + i;
|
|
23089
23134
|
const isCursor = absIdx === cursor;
|
|
23090
|
-
return /* @__PURE__ */
|
|
23135
|
+
return /* @__PURE__ */ jsx33(Text26, { color: isCursor ? PALETTE.accent : PALETTE.muted, children: isCursor ? ` ${figures6.pointer} ${name}` : ` ${name}` }, name);
|
|
23091
23136
|
})
|
|
23092
23137
|
] });
|
|
23093
23138
|
})() })
|
|
@@ -23916,18 +23961,18 @@ function FieldEditor({
|
|
|
23916
23961
|
});
|
|
23917
23962
|
const innerWidth = Math.max(1, width - 2);
|
|
23918
23963
|
if (parseErr) {
|
|
23919
|
-
return /* @__PURE__ */ jsxs25(
|
|
23920
|
-
/* @__PURE__ */
|
|
23921
|
-
/* @__PURE__ */
|
|
23922
|
-
/* @__PURE__ */
|
|
23964
|
+
return /* @__PURE__ */ jsxs25(Box24, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
|
|
23965
|
+
/* @__PURE__ */ jsx33(Text26, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
|
|
23966
|
+
/* @__PURE__ */ jsx33(Text26, { color: PALETTE.error, children: parseErr }),
|
|
23967
|
+
/* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, children: "Cannot display structured editor. Fix the JSON first." })
|
|
23923
23968
|
] });
|
|
23924
23969
|
}
|
|
23925
23970
|
if (props.length === 0 && slots.length === 0) {
|
|
23926
|
-
return /* @__PURE__ */ jsxs25(
|
|
23927
|
-
/* @__PURE__ */
|
|
23928
|
-
/* @__PURE__ */
|
|
23929
|
-
/* @__PURE__ */
|
|
23930
|
-
/* @__PURE__ */
|
|
23971
|
+
return /* @__PURE__ */ jsxs25(Box24, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
|
|
23972
|
+
/* @__PURE__ */ jsx33(Text26, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
|
|
23973
|
+
/* @__PURE__ */ jsx33(Text26, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
|
|
23974
|
+
/* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, children: "You can add fields manually below or reject this component." }),
|
|
23975
|
+
/* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, children: "Enter to save \xB7 Esc to discard" })
|
|
23931
23976
|
] });
|
|
23932
23977
|
}
|
|
23933
23978
|
const hasEmptyProperties = props.length === 0 && slots.length === 0;
|
|
@@ -24056,12 +24101,12 @@ function FieldEditor({
|
|
|
24056
24101
|
const renderRow = (row, index) => {
|
|
24057
24102
|
const key = rowKey(row, index);
|
|
24058
24103
|
if (row.kind === "header") {
|
|
24059
|
-
return /* @__PURE__ */
|
|
24104
|
+
return /* @__PURE__ */ jsx33(Box24, { flexDirection: "column", paddingTop: 1, children: /* @__PURE__ */ jsx33(Text26, { bold: true, color: PALETTE.success, children: row.label }) }, key);
|
|
24060
24105
|
}
|
|
24061
24106
|
if (row.kind === "component-description") {
|
|
24062
24107
|
const isSelected2 = inComponentDesc && active;
|
|
24063
24108
|
const isEditing = isSelected2 && focusLevel === "field" && editingField && activeField === "description";
|
|
24064
|
-
return /* @__PURE__ */
|
|
24109
|
+
return /* @__PURE__ */ jsx33(
|
|
24065
24110
|
DescriptionField,
|
|
24066
24111
|
{
|
|
24067
24112
|
value: editorState.componentDescription,
|
|
@@ -24092,7 +24137,7 @@ function FieldEditor({
|
|
|
24092
24137
|
valueText,
|
|
24093
24138
|
innerWidth
|
|
24094
24139
|
);
|
|
24095
|
-
return /* @__PURE__ */
|
|
24140
|
+
return /* @__PURE__ */ jsx33(
|
|
24096
24141
|
PropRow,
|
|
24097
24142
|
{
|
|
24098
24143
|
prop: p,
|
|
@@ -24119,7 +24164,7 @@ function FieldEditor({
|
|
|
24119
24164
|
valueText,
|
|
24120
24165
|
innerWidth
|
|
24121
24166
|
);
|
|
24122
|
-
return /* @__PURE__ */
|
|
24167
|
+
return /* @__PURE__ */ jsx33(
|
|
24123
24168
|
SlotRow,
|
|
24124
24169
|
{
|
|
24125
24170
|
slot: s,
|
|
@@ -24140,9 +24185,9 @@ function FieldEditor({
|
|
|
24140
24185
|
borderStyle: "single",
|
|
24141
24186
|
borderColor: hasEmptyProperties ? PALETTE.warning : active ? PALETTE.accent : PALETTE.border,
|
|
24142
24187
|
children: [
|
|
24143
|
-
hasEmptyProperties && /* @__PURE__ */
|
|
24188
|
+
hasEmptyProperties && /* @__PURE__ */ jsx33(Text26, { 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." }),
|
|
24144
24189
|
header,
|
|
24145
|
-
/* @__PURE__ */
|
|
24190
|
+
/* @__PURE__ */ jsx33(Box24, { flexDirection: "column", width: innerWidth, flexShrink: 0, children: focusLevel === "field" && !inComponentDesc && currentProp ? /* @__PURE__ */ jsx33(
|
|
24146
24191
|
PropRow,
|
|
24147
24192
|
{
|
|
24148
24193
|
prop: currentProp,
|
|
@@ -24158,7 +24203,7 @@ function FieldEditor({
|
|
|
24158
24203
|
rationale: metadata?.props?.[currentProp.name]?.rationale ?? null,
|
|
24159
24204
|
showRationale: showInlineRationales
|
|
24160
24205
|
}
|
|
24161
|
-
) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */
|
|
24206
|
+
) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */ jsx33(
|
|
24162
24207
|
SlotRow,
|
|
24163
24208
|
{
|
|
24164
24209
|
slot: currentSlot,
|
|
@@ -24177,8 +24222,8 @@ function FieldEditor({
|
|
|
24177
24222
|
) : visibleRowSlice.map((row, index) => {
|
|
24178
24223
|
const absoluteIndex = scrollStart + index;
|
|
24179
24224
|
const key = rowKey(row, absoluteIndex);
|
|
24180
|
-
return /* @__PURE__ */
|
|
24181
|
-
|
|
24225
|
+
return /* @__PURE__ */ jsx33(
|
|
24226
|
+
Box24,
|
|
24182
24227
|
{
|
|
24183
24228
|
ref: (node) => {
|
|
24184
24229
|
if (node) rowMeasureRefs.current.set(key, node);
|
|
@@ -24191,7 +24236,7 @@ function FieldEditor({
|
|
|
24191
24236
|
`visible-${key}`
|
|
24192
24237
|
);
|
|
24193
24238
|
}) }),
|
|
24194
|
-
categoryBelow && /* @__PURE__ */
|
|
24239
|
+
categoryBelow && /* @__PURE__ */ jsx33(Text26, { color: PALETTE.success, bold: true, children: `(${categoryBelow} below)` }),
|
|
24195
24240
|
sourceOpen && !onToggleSourceExternal && (() => {
|
|
24196
24241
|
const propMeta = !inSlots && !inComponentDesc && currentProp ? metadata?.props?.[currentProp.name] : void 0;
|
|
24197
24242
|
const start = propMeta?.sourceStartLine ?? null;
|
|
@@ -24200,49 +24245,49 @@ function FieldEditor({
|
|
|
24200
24245
|
const src = metadata?.componentSource ?? null;
|
|
24201
24246
|
const headerPath = path5 ?? "<unknown source path>";
|
|
24202
24247
|
if (!start || !end2 || !src) {
|
|
24203
|
-
return /* @__PURE__ */ jsxs25(
|
|
24204
|
-
/* @__PURE__ */
|
|
24205
|
-
/* @__PURE__ */
|
|
24206
|
-
/* @__PURE__ */
|
|
24248
|
+
return /* @__PURE__ */ jsxs25(Box24, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
|
|
24249
|
+
/* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, bold: true, children: `source: ${headerPath}` }),
|
|
24250
|
+
/* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, children: "(no source location captured for this prop)" }),
|
|
24251
|
+
/* @__PURE__ */ jsx33(Text26, { children: "[s] close" })
|
|
24207
24252
|
] });
|
|
24208
24253
|
}
|
|
24209
24254
|
const lines = src.split("\n").slice(Math.max(0, start - 1), end2);
|
|
24210
|
-
return /* @__PURE__ */ jsxs25(
|
|
24211
|
-
/* @__PURE__ */
|
|
24212
|
-
lines.map((ln, i) => /* @__PURE__ */
|
|
24213
|
-
/* @__PURE__ */
|
|
24255
|
+
return /* @__PURE__ */ jsxs25(Box24, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
|
|
24256
|
+
/* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, bold: true, children: `${headerPath}: lines ${start}\u2013${end2}` }),
|
|
24257
|
+
lines.map((ln, i) => /* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, children: ln }, `source-line-${i}`)),
|
|
24258
|
+
/* @__PURE__ */ jsx33(Text26, { children: "[s] close \xB7 [Esc] close" })
|
|
24214
24259
|
] });
|
|
24215
24260
|
})(),
|
|
24216
|
-
showHelp && /* @__PURE__ */ jsxs25(
|
|
24217
|
-
/* @__PURE__ */
|
|
24218
|
-
/* @__PURE__ */
|
|
24219
|
-
/* @__PURE__ */
|
|
24220
|
-
/* @__PURE__ */
|
|
24221
|
-
/* @__PURE__ */
|
|
24222
|
-
/* @__PURE__ */
|
|
24223
|
-
/* @__PURE__ */
|
|
24224
|
-
/* @__PURE__ */
|
|
24225
|
-
/* @__PURE__ */
|
|
24226
|
-
/* @__PURE__ */
|
|
24227
|
-
/* @__PURE__ */
|
|
24228
|
-
/* @__PURE__ */
|
|
24229
|
-
/* @__PURE__ */
|
|
24230
|
-
/* @__PURE__ */
|
|
24231
|
-
/* @__PURE__ */
|
|
24232
|
-
/* @__PURE__ */
|
|
24233
|
-
/* @__PURE__ */
|
|
24234
|
-
/* @__PURE__ */
|
|
24235
|
-
/* @__PURE__ */
|
|
24236
|
-
/* @__PURE__ */
|
|
24237
|
-
/* @__PURE__ */
|
|
24238
|
-
/* @__PURE__ */
|
|
24239
|
-
/* @__PURE__ */
|
|
24240
|
-
/* @__PURE__ */
|
|
24241
|
-
/* @__PURE__ */
|
|
24242
|
-
/* @__PURE__ */
|
|
24261
|
+
showHelp && /* @__PURE__ */ jsxs25(Box24, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.accent, paddingX: 1, children: [
|
|
24262
|
+
/* @__PURE__ */ jsx33(Text26, { bold: true, color: PALETTE.accent, children: "Keybindings" }),
|
|
24263
|
+
/* @__PURE__ */ jsx33(Text26, { children: " " }),
|
|
24264
|
+
/* @__PURE__ */ jsx33(Text26, { bold: true, children: "Row navigation" }),
|
|
24265
|
+
/* @__PURE__ */ jsx33(Text26, { children: " \u2191/\u2193 move between rows" }),
|
|
24266
|
+
/* @__PURE__ */ jsx33(Text26, { children: " Enter edit fields on the current row" }),
|
|
24267
|
+
/* @__PURE__ */ jsx33(Text26, { children: " Esc exit the panel" }),
|
|
24268
|
+
/* @__PURE__ */ jsx33(Text26, { children: " " }),
|
|
24269
|
+
/* @__PURE__ */ jsx33(Text26, { bold: true, children: "Field editing" }),
|
|
24270
|
+
/* @__PURE__ */ jsx33(Text26, { children: " \u2191/\u2193/\u2190\u2192 cycle through fields" }),
|
|
24271
|
+
/* @__PURE__ */ jsx33(Text26, { children: " \u2190/\u2192 cycle picker values \xB7 move cursor in text inputs" }),
|
|
24272
|
+
/* @__PURE__ */ jsx33(Text26, { children: " Space/Enter toggle required" }),
|
|
24273
|
+
/* @__PURE__ */ jsx33(Text26, { children: " Type edit description / string default" }),
|
|
24274
|
+
/* @__PURE__ */ jsx33(Text26, { children: " Esc exit field-edit back to the row" }),
|
|
24275
|
+
/* @__PURE__ */ jsx33(Text26, { children: " " }),
|
|
24276
|
+
/* @__PURE__ */ jsx33(Text26, { bold: true, children: "Values / allowedComponents" }),
|
|
24277
|
+
/* @__PURE__ */ jsx33(Text26, { children: " a / e / r add \xB7 edit \xB7 remove" }),
|
|
24278
|
+
/* @__PURE__ */ jsx33(Text26, { children: " \u2191\u2193 navigate the list" }),
|
|
24279
|
+
/* @__PURE__ */ jsx33(Text26, { children: " K / J reorder up \xB7 down" }),
|
|
24280
|
+
/* @__PURE__ */ jsx33(Text26, { children: " " }),
|
|
24281
|
+
/* @__PURE__ */ jsx33(Text26, { bold: true, children: "Panels" }),
|
|
24282
|
+
/* @__PURE__ */ jsx33(Text26, { children: " s toggle source-view for the current prop" }),
|
|
24283
|
+
/* @__PURE__ */ jsx33(Text26, { children: " " + propRationaleKey.padEnd(16) + " toggle prop rationale panel" }),
|
|
24284
|
+
/* @__PURE__ */ jsx33(Text26, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
|
|
24285
|
+
/* @__PURE__ */ jsx33(Text26, { children: " ? toggle this overlay" }),
|
|
24286
|
+
/* @__PURE__ */ jsx33(Text26, { children: " " }),
|
|
24287
|
+
/* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, children: "press ? or Esc to close" })
|
|
24243
24288
|
] }),
|
|
24244
|
-
validationError && /* @__PURE__ */
|
|
24245
|
-
/* @__PURE__ */
|
|
24289
|
+
validationError && /* @__PURE__ */ jsx33(Text26, { color: PALETTE.error, children: "\u2717 " + validationError }),
|
|
24290
|
+
/* @__PURE__ */ jsx33(Box24, { paddingTop: 1, children: /* @__PURE__ */ jsx33(Text26, { color: PALETTE.muted, children: modeLabel }) })
|
|
24246
24291
|
]
|
|
24247
24292
|
}
|
|
24248
24293
|
);
|
|
@@ -24252,7 +24297,7 @@ function FieldEditor({
|
|
|
24252
24297
|
import { Text as Text32 } from "ink";
|
|
24253
24298
|
|
|
24254
24299
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ComponentRationalePanel.tsx
|
|
24255
|
-
import { Box as
|
|
24300
|
+
import { Box as Box26, Text as Text28 } from "ink";
|
|
24256
24301
|
|
|
24257
24302
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/wrap-text.ts
|
|
24258
24303
|
function appendLongWordChunks(word, width, lines) {
|
|
@@ -24287,27 +24332,27 @@ function wrapText(text, innerWidth) {
|
|
|
24287
24332
|
}
|
|
24288
24333
|
|
|
24289
24334
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationaleLine.tsx
|
|
24290
|
-
import { Box as
|
|
24291
|
-
import { jsx as
|
|
24335
|
+
import { Box as Box25, Text as Text27 } from "ink";
|
|
24336
|
+
import { jsx as jsx34, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
24292
24337
|
function RationaleLine({ line, active }) {
|
|
24293
24338
|
if (line.kind === "blank") {
|
|
24294
|
-
return /* @__PURE__ */
|
|
24339
|
+
return /* @__PURE__ */ jsx34(Box25, { children: /* @__PURE__ */ jsx34(Text27, { children: " " }) });
|
|
24295
24340
|
}
|
|
24296
24341
|
if (line.kind === "heading") {
|
|
24297
|
-
return /* @__PURE__ */
|
|
24342
|
+
return /* @__PURE__ */ jsx34(Box25, { children: /* @__PURE__ */ jsx34(Text27, { bold: true, color: active ? PALETTE.accent : PALETTE.muted, children: line.text }) });
|
|
24298
24343
|
}
|
|
24299
24344
|
if (line.kind === "label") {
|
|
24300
|
-
return /* @__PURE__ */ jsxs26(
|
|
24301
|
-
line.prefix && /* @__PURE__ */
|
|
24302
|
-
/* @__PURE__ */
|
|
24303
|
-
line.suffix && /* @__PURE__ */
|
|
24345
|
+
return /* @__PURE__ */ jsxs26(Box25, { children: [
|
|
24346
|
+
line.prefix && /* @__PURE__ */ jsx34(Text27, { children: line.prefix }),
|
|
24347
|
+
/* @__PURE__ */ jsx34(Text27, { bold: true, color: active ? line.color : PALETTE.muted, children: line.text }),
|
|
24348
|
+
line.suffix && /* @__PURE__ */ jsx34(Text27, { color: PALETTE.muted, children: line.suffix })
|
|
24304
24349
|
] });
|
|
24305
24350
|
}
|
|
24306
|
-
return /* @__PURE__ */
|
|
24351
|
+
return /* @__PURE__ */ jsx34(Box25, { children: /* @__PURE__ */ jsx34(Text27, { color: !active || line.dim ? PALETTE.muted : void 0, children: line.text }) });
|
|
24307
24352
|
}
|
|
24308
24353
|
|
|
24309
24354
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ComponentRationalePanel.tsx
|
|
24310
|
-
import { jsx as
|
|
24355
|
+
import { jsx as jsx35, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
24311
24356
|
var PLACEHOLDER = "(no rationale captured)";
|
|
24312
24357
|
function renderComponentRationaleLines(data, innerWidth) {
|
|
24313
24358
|
const out = [];
|
|
@@ -24376,7 +24421,7 @@ function ComponentRationalePanel({
|
|
|
24376
24421
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
24377
24422
|
const visibleEnd = Math.min(totalLines, scrollOffset + contentHeight);
|
|
24378
24423
|
return /* @__PURE__ */ jsxs27(
|
|
24379
|
-
|
|
24424
|
+
Box26,
|
|
24380
24425
|
{
|
|
24381
24426
|
flexDirection: "column",
|
|
24382
24427
|
width,
|
|
@@ -24384,27 +24429,27 @@ function ComponentRationalePanel({
|
|
|
24384
24429
|
borderStyle: "single",
|
|
24385
24430
|
borderColor: active ? PALETTE.text : void 0,
|
|
24386
24431
|
children: [
|
|
24387
|
-
/* @__PURE__ */
|
|
24388
|
-
visible.map((line, i) => /* @__PURE__ */
|
|
24389
|
-
/* @__PURE__ */
|
|
24432
|
+
/* @__PURE__ */ jsx35(Box26, { children: /* @__PURE__ */ jsx35(Text28, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Component rationale: ${data.name}` }) }),
|
|
24433
|
+
visible.map((line, i) => /* @__PURE__ */ jsx35(RationaleLine, { line, active }, i)),
|
|
24434
|
+
/* @__PURE__ */ jsx35(Box26, { children: overflowed ? /* @__PURE__ */ jsx35(Text28, { children: `${visibleStart}-${visibleEnd}/${totalLines} [\u2191\u2193] scroll [I/Esc] close` }) : /* @__PURE__ */ jsx35(Text28, { children: "[I/Esc] close" }) })
|
|
24390
24435
|
]
|
|
24391
24436
|
}
|
|
24392
24437
|
);
|
|
24393
24438
|
}
|
|
24394
24439
|
|
|
24395
24440
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/JsonPanel.tsx
|
|
24396
|
-
import { Box as
|
|
24441
|
+
import { Box as Box28 } from "ink";
|
|
24397
24442
|
|
|
24398
24443
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/HighlightedLine.tsx
|
|
24399
24444
|
import { Text as Text29 } from "ink";
|
|
24400
|
-
import { Fragment as
|
|
24445
|
+
import { Fragment as Fragment9, jsx as jsx36 } from "react/jsx-runtime";
|
|
24401
24446
|
function HighlightedLine({ parts }) {
|
|
24402
|
-
return /* @__PURE__ */
|
|
24447
|
+
return /* @__PURE__ */ jsx36(Fragment9, { children: parts.map((part, i) => /* @__PURE__ */ jsx36(Text29, { color: part.dim ? PALETTE.muted : part.color, children: part.text }, i)) });
|
|
24403
24448
|
}
|
|
24404
24449
|
|
|
24405
24450
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ScrollablePanel.tsx
|
|
24406
|
-
import { Box as
|
|
24407
|
-
import { Fragment as
|
|
24451
|
+
import { Box as Box27, Text as Text30 } from "ink";
|
|
24452
|
+
import { Fragment as Fragment10, jsx as jsx37, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
24408
24453
|
function ScrollablePanel({
|
|
24409
24454
|
title,
|
|
24410
24455
|
width,
|
|
@@ -24417,12 +24462,12 @@ function ScrollablePanel({
|
|
|
24417
24462
|
children
|
|
24418
24463
|
}) {
|
|
24419
24464
|
const overflowed = totalLines > height;
|
|
24420
|
-
return /* @__PURE__ */ jsxs28(
|
|
24421
|
-
/* @__PURE__ */ jsxs28(
|
|
24422
|
-
/* @__PURE__ */
|
|
24423
|
-
overflowed && /* @__PURE__ */ jsxs28(
|
|
24424
|
-
/* @__PURE__ */
|
|
24425
|
-
/* @__PURE__ */
|
|
24465
|
+
return /* @__PURE__ */ jsxs28(Box27, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
|
|
24466
|
+
/* @__PURE__ */ jsxs28(Box27, { children: [
|
|
24467
|
+
/* @__PURE__ */ jsx37(Text30, { bold: true, color: active ? void 0 : PALETTE.muted, children: title }),
|
|
24468
|
+
overflowed && /* @__PURE__ */ jsxs28(Fragment10, { children: [
|
|
24469
|
+
/* @__PURE__ */ jsx37(Box27, { flexGrow: 1 }),
|
|
24470
|
+
/* @__PURE__ */ jsx37(Text30, { color: active ? void 0 : PALETTE.muted, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
|
|
24426
24471
|
] })
|
|
24427
24472
|
] }),
|
|
24428
24473
|
children
|
|
@@ -24430,7 +24475,7 @@ function ScrollablePanel({
|
|
|
24430
24475
|
}
|
|
24431
24476
|
|
|
24432
24477
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/JsonPanel.tsx
|
|
24433
|
-
import { jsx as
|
|
24478
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
24434
24479
|
function highlightJson(line) {
|
|
24435
24480
|
const parts = [];
|
|
24436
24481
|
let remaining = line;
|
|
@@ -24468,7 +24513,7 @@ function highlightJson(line) {
|
|
|
24468
24513
|
parts.push({ text: remaining[0] });
|
|
24469
24514
|
remaining = remaining.slice(1);
|
|
24470
24515
|
}
|
|
24471
|
-
return /* @__PURE__ */
|
|
24516
|
+
return /* @__PURE__ */ jsx38(HighlightedLine, { parts });
|
|
24472
24517
|
}
|
|
24473
24518
|
function truncateLine(line, maxWidth) {
|
|
24474
24519
|
if (line.length <= maxWidth) return line;
|
|
@@ -24481,7 +24526,7 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
|
|
|
24481
24526
|
const totalLines = allLines.length;
|
|
24482
24527
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
24483
24528
|
const visibleEnd = Math.min(totalLines, scrollOffset + height);
|
|
24484
|
-
return /* @__PURE__ */
|
|
24529
|
+
return /* @__PURE__ */ jsx38(
|
|
24485
24530
|
ScrollablePanel,
|
|
24486
24531
|
{
|
|
24487
24532
|
title: label,
|
|
@@ -24494,14 +24539,14 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
|
|
|
24494
24539
|
borderColor: active ? "white" : void 0,
|
|
24495
24540
|
children: visibleLines.map((line, i) => {
|
|
24496
24541
|
const truncated = truncateLine(line, innerWidth);
|
|
24497
|
-
return /* @__PURE__ */
|
|
24542
|
+
return /* @__PURE__ */ jsx38(Box28, { children: highlightJson(truncated) }, i);
|
|
24498
24543
|
})
|
|
24499
24544
|
}
|
|
24500
24545
|
);
|
|
24501
24546
|
}
|
|
24502
24547
|
|
|
24503
24548
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationalePanel.tsx
|
|
24504
|
-
import { jsx as
|
|
24549
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
24505
24550
|
function renderRationaleLines(rows, innerWidth) {
|
|
24506
24551
|
const out = [];
|
|
24507
24552
|
rows.forEach((row, idx) => {
|
|
@@ -24534,7 +24579,7 @@ function RationalePanel({
|
|
|
24534
24579
|
const visible = allLines.slice(scrollOffset, scrollOffset + height);
|
|
24535
24580
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
24536
24581
|
const visibleEnd = Math.min(totalLines, scrollOffset + height);
|
|
24537
|
-
return /* @__PURE__ */
|
|
24582
|
+
return /* @__PURE__ */ jsx39(
|
|
24538
24583
|
ScrollablePanel,
|
|
24539
24584
|
{
|
|
24540
24585
|
title: `RATIONALE \u2014 ${componentName}`,
|
|
@@ -24545,15 +24590,15 @@ function RationalePanel({
|
|
|
24545
24590
|
visibleStart,
|
|
24546
24591
|
visibleEnd,
|
|
24547
24592
|
borderColor: active ? PALETTE.text : void 0,
|
|
24548
|
-
children: visible.map((line, i) => /* @__PURE__ */
|
|
24593
|
+
children: visible.map((line, i) => /* @__PURE__ */ jsx39(RationaleLine, { line, active }, i))
|
|
24549
24594
|
}
|
|
24550
24595
|
);
|
|
24551
24596
|
}
|
|
24552
24597
|
|
|
24553
24598
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/TokenReviewPanel.tsx
|
|
24554
24599
|
import figures7 from "figures";
|
|
24555
|
-
import { Box as
|
|
24556
|
-
import { jsx as
|
|
24600
|
+
import { Box as Box29, Text as Text31 } from "ink";
|
|
24601
|
+
import { jsx as jsx40, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
24557
24602
|
function TokenReviewPanel({
|
|
24558
24603
|
componentName,
|
|
24559
24604
|
suggestions,
|
|
@@ -24573,7 +24618,7 @@ function TokenReviewPanel({
|
|
|
24573
24618
|
const visiblePaths = current.paths.slice(scrollStart, scrollStart + visibleCount);
|
|
24574
24619
|
const rangeLabel = current.paths.length === 0 ? "no compatible tokens" : `${scrollStart + 1}-${scrollStart + visiblePaths.length} of ${current.paths.length}`;
|
|
24575
24620
|
return /* @__PURE__ */ jsxs29(
|
|
24576
|
-
|
|
24621
|
+
Box29,
|
|
24577
24622
|
{
|
|
24578
24623
|
flexDirection: "column",
|
|
24579
24624
|
width,
|
|
@@ -24581,15 +24626,15 @@ function TokenReviewPanel({
|
|
|
24581
24626
|
borderStyle: "single",
|
|
24582
24627
|
borderColor: active ? PALETTE.text : void 0,
|
|
24583
24628
|
children: [
|
|
24584
|
-
/* @__PURE__ */
|
|
24585
|
-
/* @__PURE__ */
|
|
24586
|
-
/* @__PURE__ */
|
|
24587
|
-
current.paths.length === 0 && /* @__PURE__ */
|
|
24629
|
+
/* @__PURE__ */ jsx40(Text31, { bold: true, color: active ? void 0 : PALETTE.muted, wrap: "truncate", children: `TOKEN REVIEW \u2014 ${componentName} \xB7 ${current.propName} (edit allowed)` }),
|
|
24630
|
+
/* @__PURE__ */ jsx40(Text31, { color: PALETTE.muted, wrap: "truncate", children: `select which tokens are allowed (${rangeLabel})` }),
|
|
24631
|
+
/* @__PURE__ */ jsx40(Text31, { children: " " }),
|
|
24632
|
+
current.paths.length === 0 && /* @__PURE__ */ jsx40(Text31, { color: PALETTE.muted, children: "(no compatible tokens found for this token kind)" }),
|
|
24588
24633
|
visiblePaths.map((path5, i) => {
|
|
24589
24634
|
const pathIndex = scrollStart + i;
|
|
24590
24635
|
const checked = editSelection.has(path5);
|
|
24591
24636
|
const focused = pathIndex === editCursor;
|
|
24592
|
-
return /* @__PURE__ */
|
|
24637
|
+
return /* @__PURE__ */ jsx40(Box29, { children: /* @__PURE__ */ jsx40(
|
|
24593
24638
|
Text31,
|
|
24594
24639
|
{
|
|
24595
24640
|
color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted,
|
|
@@ -24599,15 +24644,15 @@ function TokenReviewPanel({
|
|
|
24599
24644
|
}
|
|
24600
24645
|
) }, path5);
|
|
24601
24646
|
}),
|
|
24602
|
-
/* @__PURE__ */
|
|
24603
|
-
/* @__PURE__ */
|
|
24604
|
-
/* @__PURE__ */
|
|
24647
|
+
/* @__PURE__ */ jsx40(Text31, { children: " " }),
|
|
24648
|
+
/* @__PURE__ */ jsx40(Text31, { color: PALETTE.muted, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
|
|
24649
|
+
/* @__PURE__ */ jsx40(Text31, { color: PALETTE.muted, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
|
|
24605
24650
|
]
|
|
24606
24651
|
}
|
|
24607
24652
|
);
|
|
24608
24653
|
}
|
|
24609
24654
|
return /* @__PURE__ */ jsxs29(
|
|
24610
|
-
|
|
24655
|
+
Box29,
|
|
24611
24656
|
{
|
|
24612
24657
|
flexDirection: "column",
|
|
24613
24658
|
width,
|
|
@@ -24615,25 +24660,25 @@ function TokenReviewPanel({
|
|
|
24615
24660
|
borderStyle: "single",
|
|
24616
24661
|
borderColor: active ? PALETTE.text : void 0,
|
|
24617
24662
|
children: [
|
|
24618
|
-
/* @__PURE__ */
|
|
24619
|
-
suggestions.length === 0 && /* @__PURE__ */
|
|
24663
|
+
/* @__PURE__ */ jsx40(Text31, { bold: true, color: active ? void 0 : PALETTE.muted, children: `TOKEN REVIEW \u2014 ${componentName}` }),
|
|
24664
|
+
suggestions.length === 0 && /* @__PURE__ */ jsx40(Text31, { color: PALETTE.muted, children: "(no token suggestions for this component)" }),
|
|
24620
24665
|
suggestions.map((s, i) => {
|
|
24621
24666
|
const focused = i === selectedRow;
|
|
24622
|
-
return /* @__PURE__ */ jsxs29(
|
|
24623
|
-
/* @__PURE__ */
|
|
24624
|
-
/* @__PURE__ */
|
|
24625
|
-
/* @__PURE__ */
|
|
24667
|
+
return /* @__PURE__ */ jsxs29(Box29, { flexDirection: "column", children: [
|
|
24668
|
+
/* @__PURE__ */ jsx40(Box29, { children: /* @__PURE__ */ jsx40(Text31, { color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted, bold: focused, children: `${focused ? figures7.pointer : " "} ${s.propName}` }) }),
|
|
24669
|
+
/* @__PURE__ */ jsx40(Text31, { color: PALETTE.muted, children: ` suggested: ${s.suggested.join(", ")}` }),
|
|
24670
|
+
/* @__PURE__ */ jsx40(Text31, { color: PALETTE.muted, children: ` allowed: ${s.allowed.join(", ")}` })
|
|
24626
24671
|
] }, s.propName);
|
|
24627
24672
|
}),
|
|
24628
|
-
/* @__PURE__ */
|
|
24629
|
-
/* @__PURE__ */
|
|
24673
|
+
/* @__PURE__ */ jsx40(Text31, { children: " " }),
|
|
24674
|
+
/* @__PURE__ */ jsx40(Text31, { children: "[\u2191/\u2193] move [Enter] edit allowed [Esc] close" })
|
|
24630
24675
|
]
|
|
24631
24676
|
}
|
|
24632
24677
|
);
|
|
24633
24678
|
}
|
|
24634
24679
|
|
|
24635
24680
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx
|
|
24636
|
-
import { Fragment as
|
|
24681
|
+
import { Fragment as Fragment11, jsx as jsx41, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
24637
24682
|
function ReviewDetailsPanel({
|
|
24638
24683
|
selectedKey,
|
|
24639
24684
|
panelOpen,
|
|
@@ -24668,7 +24713,7 @@ function ReviewDetailsPanel({
|
|
|
24668
24713
|
rationale: s.rationale ?? ""
|
|
24669
24714
|
}))
|
|
24670
24715
|
];
|
|
24671
|
-
return /* @__PURE__ */
|
|
24716
|
+
return /* @__PURE__ */ jsx41(
|
|
24672
24717
|
RationalePanel,
|
|
24673
24718
|
{
|
|
24674
24719
|
componentName: componentRationale?.name ?? selectedKey,
|
|
@@ -24681,7 +24726,7 @@ function ReviewDetailsPanel({
|
|
|
24681
24726
|
);
|
|
24682
24727
|
}
|
|
24683
24728
|
if (panelOpen === "component-rationale") {
|
|
24684
|
-
return /* @__PURE__ */
|
|
24729
|
+
return /* @__PURE__ */ jsx41(
|
|
24685
24730
|
ComponentRationalePanel,
|
|
24686
24731
|
{
|
|
24687
24732
|
data: componentRationale ?? {
|
|
@@ -24707,13 +24752,13 @@ function ReviewDetailsPanel({
|
|
|
24707
24752
|
const sourceLineCount = Math.max(1, height - 4);
|
|
24708
24753
|
const lines = source ? source.split("\n").slice(panelScrollOffset, panelScrollOffset + sourceLineCount) : [];
|
|
24709
24754
|
return /* @__PURE__ */ jsxs30(FixedPanel, { width, height, borderStyle: "single", borderColor: sourceBorderColor, paddingLeft: 1, children: [
|
|
24710
|
-
/* @__PURE__ */
|
|
24711
|
-
source ? lines.map((line, index) => /* @__PURE__ */
|
|
24712
|
-
/* @__PURE__ */
|
|
24755
|
+
/* @__PURE__ */ jsx41(Text32, { color: PALETTE.muted, bold: true, wrap: "truncate-end", children: `source: ${headerPath}` }),
|
|
24756
|
+
source ? lines.map((line, index) => /* @__PURE__ */ jsx41(Text32, { color: PALETTE.muted, wrap: "truncate-end", children: line }, `source-line-${index}`)) : /* @__PURE__ */ jsx41(Text32, { color: PALETTE.muted, children: "(no source captured)" }),
|
|
24757
|
+
/* @__PURE__ */ jsx41(Text32, { color: PALETTE.muted, wrap: "truncate-end", children: "[s/Esc] close" })
|
|
24713
24758
|
] });
|
|
24714
24759
|
}
|
|
24715
24760
|
if (panelOpen === "token-review") {
|
|
24716
|
-
return /* @__PURE__ */
|
|
24761
|
+
return /* @__PURE__ */ jsx41(
|
|
24717
24762
|
TokenReviewPanel,
|
|
24718
24763
|
{
|
|
24719
24764
|
componentName: selectedKey,
|
|
@@ -24729,7 +24774,7 @@ function ReviewDetailsPanel({
|
|
|
24729
24774
|
);
|
|
24730
24775
|
}
|
|
24731
24776
|
if (showJson) {
|
|
24732
|
-
return /* @__PURE__ */
|
|
24777
|
+
return /* @__PURE__ */ jsx41(
|
|
24733
24778
|
JsonPanel,
|
|
24734
24779
|
{
|
|
24735
24780
|
label: "GENERATED DEFINITION (read-only)",
|
|
@@ -24741,11 +24786,11 @@ function ReviewDetailsPanel({
|
|
|
24741
24786
|
}
|
|
24742
24787
|
);
|
|
24743
24788
|
}
|
|
24744
|
-
return /* @__PURE__ */
|
|
24789
|
+
return /* @__PURE__ */ jsx41(Fragment11, { children: editor });
|
|
24745
24790
|
}
|
|
24746
24791
|
|
|
24747
24792
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDetailsEditor.tsx
|
|
24748
|
-
import { jsx as
|
|
24793
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
24749
24794
|
import { createElement } from "react";
|
|
24750
24795
|
function toFieldEditorMetadata(reviewMetadata) {
|
|
24751
24796
|
if (!reviewMetadata) return void 0;
|
|
@@ -24779,7 +24824,7 @@ function ReviewDetailsEditor({
|
|
|
24779
24824
|
jsonScrollOffset,
|
|
24780
24825
|
currentTokenSuggestions
|
|
24781
24826
|
} = reviewEditor;
|
|
24782
|
-
return /* @__PURE__ */
|
|
24827
|
+
return /* @__PURE__ */ jsx42(
|
|
24783
24828
|
ReviewDetailsPanel,
|
|
24784
24829
|
{
|
|
24785
24830
|
selectedKey,
|
|
@@ -24819,7 +24864,7 @@ function ReviewDetailsEditor({
|
|
|
24819
24864
|
}
|
|
24820
24865
|
|
|
24821
24866
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewComponentPanel.tsx
|
|
24822
|
-
import { Fragment as
|
|
24867
|
+
import { Fragment as Fragment12, jsx as jsx43, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
24823
24868
|
function buildReviewFieldEditor(reviewEditor, selectedJson, onExit, overrides = {}) {
|
|
24824
24869
|
return {
|
|
24825
24870
|
value: reviewEditor.draftValue || selectedJson,
|
|
@@ -24859,17 +24904,17 @@ function ReviewEmptyComponentsWarning({
|
|
|
24859
24904
|
hidden
|
|
24860
24905
|
}) {
|
|
24861
24906
|
if (hidden || count === 0) return null;
|
|
24862
|
-
return /* @__PURE__ */
|
|
24907
|
+
return /* @__PURE__ */ jsx43(Text33, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
|
|
24863
24908
|
}
|
|
24864
24909
|
function ReviewNoSelection() {
|
|
24865
|
-
return /* @__PURE__ */
|
|
24910
|
+
return /* @__PURE__ */ jsx43(Box30, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx43(Text33, { color: PALETTE.muted, children: "No component selected" }) });
|
|
24866
24911
|
}
|
|
24867
24912
|
function ReviewFinalizeError({
|
|
24868
24913
|
message,
|
|
24869
24914
|
hidden
|
|
24870
24915
|
}) {
|
|
24871
24916
|
if (hidden || !message) return null;
|
|
24872
|
-
return /* @__PURE__ */
|
|
24917
|
+
return /* @__PURE__ */ jsx43(Text33, { color: PALETTE.error, children: `\u26A0 ${message}` });
|
|
24873
24918
|
}
|
|
24874
24919
|
function ReviewPanelFooter({
|
|
24875
24920
|
reviewEditor,
|
|
@@ -24878,10 +24923,10 @@ function ReviewPanelFooter({
|
|
|
24878
24923
|
livePreview,
|
|
24879
24924
|
livePreviewSpinner
|
|
24880
24925
|
}) {
|
|
24881
|
-
return /* @__PURE__ */ jsxs31(
|
|
24926
|
+
return /* @__PURE__ */ jsxs31(Fragment12, { children: [
|
|
24882
24927
|
reviewEditor.panelOpen === "token-review" ? " [\u2191/\u2193] move [Enter] edit allowed [Esc] close" : sidebarFocused ? sidebarFooter : reviewEditor.showJson ? " [\u2191\u2193] scroll [Ctrl+u/d] half-page [gg/G] top/bottom [Tab] focus list" : " [Tab] focus list (edit fields)" + (reviewEditor.currentTokenSuggestions().length > 0 ? " [t] token review" : ""),
|
|
24883
|
-
livePreview.status === "running" && /* @__PURE__ */
|
|
24884
|
-
livePreview.disabled && /* @__PURE__ */
|
|
24928
|
+
livePreview.status === "running" && /* @__PURE__ */ jsx43(Text33, { children: ` ${livePreviewSpinner} live preview` }),
|
|
24929
|
+
livePreview.disabled && /* @__PURE__ */ jsx43(Text33, { children: " \xB7 live preview disabled" })
|
|
24885
24930
|
] });
|
|
24886
24931
|
}
|
|
24887
24932
|
function ReviewComponentTitle({
|
|
@@ -24890,9 +24935,9 @@ function ReviewComponentTitle({
|
|
|
24890
24935
|
slotCount,
|
|
24891
24936
|
sidebarFocused
|
|
24892
24937
|
}) {
|
|
24893
|
-
return /* @__PURE__ */ jsxs31(
|
|
24894
|
-
/* @__PURE__ */
|
|
24895
|
-
/* @__PURE__ */
|
|
24938
|
+
return /* @__PURE__ */ jsxs31(Box30, { paddingLeft: 2, paddingBottom: 1, children: [
|
|
24939
|
+
/* @__PURE__ */ jsx43(Text33, { bold: true, wrap: "truncate-end", children: selectedKey }),
|
|
24940
|
+
/* @__PURE__ */ jsx43(Box30, { flexGrow: 1 }),
|
|
24896
24941
|
/* @__PURE__ */ jsxs31(Text33, { color: PALETTE.muted, wrap: "truncate-end", children: [
|
|
24897
24942
|
propCount,
|
|
24898
24943
|
" prop",
|
|
@@ -24924,8 +24969,8 @@ function ReviewComponentPanel({
|
|
|
24924
24969
|
const slotCount = selectedEntry.$slots ? Object.keys(selectedEntry.$slots).length : 0;
|
|
24925
24970
|
const contentHeight = Math.max(1, height - 2);
|
|
24926
24971
|
const contentWidth = Math.max(1, width - 1);
|
|
24927
|
-
return /* @__PURE__ */
|
|
24928
|
-
/* @__PURE__ */
|
|
24972
|
+
return /* @__PURE__ */ jsx43(FixedPanel, { width, height, borderStyle: void 0, paddingLeft: 1, children: /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", width: contentWidth, height, flexShrink: 0, overflowY: "hidden", children: [
|
|
24973
|
+
/* @__PURE__ */ jsx43(Box30, { width: contentWidth, height: contentHeight, flexShrink: 0, overflowY: "hidden", children: /* @__PURE__ */ jsx43(
|
|
24929
24974
|
ReviewDetailsEditor,
|
|
24930
24975
|
{
|
|
24931
24976
|
selectedKey,
|
|
@@ -24938,7 +24983,7 @@ function ReviewComponentPanel({
|
|
|
24938
24983
|
jsonValue,
|
|
24939
24984
|
sidebarFocused,
|
|
24940
24985
|
fieldEditor,
|
|
24941
|
-
header: /* @__PURE__ */
|
|
24986
|
+
header: /* @__PURE__ */ jsx43(
|
|
24942
24987
|
ReviewComponentTitle,
|
|
24943
24988
|
{
|
|
24944
24989
|
selectedKey,
|
|
@@ -24949,8 +24994,8 @@ function ReviewComponentPanel({
|
|
|
24949
24994
|
)
|
|
24950
24995
|
}
|
|
24951
24996
|
) }),
|
|
24952
|
-
/* @__PURE__ */
|
|
24953
|
-
/* @__PURE__ */
|
|
24997
|
+
/* @__PURE__ */ jsx43(Box30, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx43(Text33, { color: saveError ? PALETTE.error : void 0, wrap: "truncate-end", children: saveError ? "\u2717 " + saveError : " " }) }),
|
|
24998
|
+
/* @__PURE__ */ jsx43(Box30, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx43(Text33, { color: PALETTE.muted, wrap: "truncate-end", children: /* @__PURE__ */ jsx43(
|
|
24954
24999
|
ReviewPanelFooter,
|
|
24955
25000
|
{
|
|
24956
25001
|
reviewEditor,
|
|
@@ -24964,8 +25009,8 @@ function ReviewComponentPanel({
|
|
|
24964
25009
|
}
|
|
24965
25010
|
|
|
24966
25011
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewStatus.tsx
|
|
24967
|
-
import { Box as
|
|
24968
|
-
import { jsx as
|
|
25012
|
+
import { Box as Box31, Text as Text34 } from "ink";
|
|
25013
|
+
import { jsx as jsx44, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
24969
25014
|
function countReviewStatuses(entries) {
|
|
24970
25015
|
return entries.reduce(
|
|
24971
25016
|
(counts, entry) => {
|
|
@@ -24978,13 +25023,13 @@ function countReviewStatuses(entries) {
|
|
|
24978
25023
|
);
|
|
24979
25024
|
}
|
|
24980
25025
|
function ReviewLoadingState() {
|
|
24981
|
-
return /* @__PURE__ */
|
|
25026
|
+
return /* @__PURE__ */ jsx44(Box31, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx44(Text34, { color: PALETTE.muted, children: "Loading generated definitions..." }) });
|
|
24982
25027
|
}
|
|
24983
25028
|
function ReviewLoadError({ message }) {
|
|
24984
|
-
return /* @__PURE__ */ jsxs32(
|
|
24985
|
-
/* @__PURE__ */
|
|
24986
|
-
/* @__PURE__ */
|
|
24987
|
-
/* @__PURE__ */
|
|
25029
|
+
return /* @__PURE__ */ jsxs32(Box31, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
25030
|
+
/* @__PURE__ */ jsx44(Text34, { color: PALETTE.error, children: message }),
|
|
25031
|
+
/* @__PURE__ */ jsx44(Text34, { children: " " }),
|
|
25032
|
+
/* @__PURE__ */ jsx44(ControlHints, { hints: [{ keys: "q / Enter / Esc", label: "Quit" }] })
|
|
24988
25033
|
] });
|
|
24989
25034
|
}
|
|
24990
25035
|
|
|
@@ -25184,8 +25229,8 @@ async function runLivePreview(opts) {
|
|
|
25184
25229
|
}
|
|
25185
25230
|
|
|
25186
25231
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FinalizeDialog.tsx
|
|
25187
|
-
import { Box as
|
|
25188
|
-
import { Fragment as
|
|
25232
|
+
import { Box as Box32, Text as Text35 } from "ink";
|
|
25233
|
+
import { Fragment as Fragment13, jsx as jsx45, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
25189
25234
|
var FINALIZE_REMOVED_WINDOW = 6;
|
|
25190
25235
|
function FinalizeDialog({
|
|
25191
25236
|
accepted,
|
|
@@ -25214,51 +25259,51 @@ function FinalizeDialog({
|
|
|
25214
25259
|
const windowed = removed.slice(offset, offset + FINALIZE_REMOVED_WINDOW);
|
|
25215
25260
|
const hasMoreBelow = offset + FINALIZE_REMOVED_WINDOW < removed.length;
|
|
25216
25261
|
const hasMoreAbove = offset > 0;
|
|
25217
|
-
return /* @__PURE__ */
|
|
25218
|
-
/* @__PURE__ */
|
|
25219
|
-
/* @__PURE__ */
|
|
25262
|
+
return /* @__PURE__ */ jsx45(Box32, { width: "100%", paddingX: 2, children: /* @__PURE__ */ jsxs33(Box32, { flexDirection: "column", alignItems: "flex-start", children: [
|
|
25263
|
+
/* @__PURE__ */ jsx45(Text35, { bold: true, children: "Finalize" }),
|
|
25264
|
+
/* @__PURE__ */ jsx45(Text35, { children: " " }),
|
|
25220
25265
|
/* @__PURE__ */ jsxs33(Text35, { children: [
|
|
25221
25266
|
/* @__PURE__ */ jsxs33(Text35, { color: PALETTE.success, children: [
|
|
25222
25267
|
accepted,
|
|
25223
25268
|
" accepted"
|
|
25224
25269
|
] }),
|
|
25225
|
-
/* @__PURE__ */
|
|
25270
|
+
/* @__PURE__ */ jsx45(Text35, { children: " \xB7 " }),
|
|
25226
25271
|
/* @__PURE__ */ jsxs33(Text35, { color: PALETTE.error, children: [
|
|
25227
25272
|
rejected,
|
|
25228
25273
|
" rejected"
|
|
25229
25274
|
] }),
|
|
25230
|
-
/* @__PURE__ */
|
|
25275
|
+
/* @__PURE__ */ jsx45(Text35, { children: " \xB7 " }),
|
|
25231
25276
|
/* @__PURE__ */ jsxs33(Text35, { color: PALETTE.muted, children: [
|
|
25232
25277
|
needsReview,
|
|
25233
25278
|
" unresolved"
|
|
25234
25279
|
] })
|
|
25235
25280
|
] }),
|
|
25236
|
-
/* @__PURE__ */
|
|
25237
|
-
noneAccepted && /* @__PURE__ */ jsxs33(
|
|
25238
|
-
/* @__PURE__ */
|
|
25239
|
-
/* @__PURE__ */
|
|
25240
|
-
/* @__PURE__ */
|
|
25281
|
+
/* @__PURE__ */ jsx45(Text35, { children: " " }),
|
|
25282
|
+
noneAccepted && /* @__PURE__ */ jsxs33(Fragment13, { children: [
|
|
25283
|
+
/* @__PURE__ */ jsx45(Text35, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
|
|
25284
|
+
/* @__PURE__ */ jsx45(Text35, { color: PALETTE.warning, children: "Accept at least one component ([a] a row, [A] accept all) to push." }),
|
|
25285
|
+
/* @__PURE__ */ jsx45(Text35, { children: " " })
|
|
25241
25286
|
] }),
|
|
25242
|
-
!allResolved && /* @__PURE__ */ jsxs33(
|
|
25243
|
-
/* @__PURE__ */
|
|
25244
|
-
/* @__PURE__ */
|
|
25245
|
-
/* @__PURE__ */
|
|
25287
|
+
!allResolved && /* @__PURE__ */ jsxs33(Fragment13, { children: [
|
|
25288
|
+
/* @__PURE__ */ jsx45(Text35, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
|
|
25289
|
+
/* @__PURE__ */ jsx45(Text35, { color: PALETTE.warning, children: "Only explicitly accepted components ship." }),
|
|
25290
|
+
/* @__PURE__ */ jsx45(Text35, { children: " " })
|
|
25246
25291
|
] }),
|
|
25247
|
-
/* @__PURE__ */ jsxs33(
|
|
25248
|
-
previewStatus === "running" ? /* @__PURE__ */
|
|
25249
|
-
/* @__PURE__ */
|
|
25292
|
+
/* @__PURE__ */ jsxs33(Box32, { flexDirection: "column", height: 2, children: [
|
|
25293
|
+
previewStatus === "running" ? /* @__PURE__ */ jsx45(Text35, { color: PALETTE.muted, children: "Previewing deletions against the target space\u2026" }) : previewStatus === "error" ? /* @__PURE__ */ jsx45(Text35, { color: PALETTE.warning, children: "\u26A0 Could not preview deletions (the push will still proceed)." }) : /* @__PURE__ */ jsx45(Text35, { children: " " }),
|
|
25294
|
+
/* @__PURE__ */ jsx45(Text35, { children: " " })
|
|
25250
25295
|
] }),
|
|
25251
|
-
previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs33(
|
|
25252
|
-
/* @__PURE__ */
|
|
25253
|
-
hasMoreAbove && /* @__PURE__ */
|
|
25254
|
-
windowed.map((rc) => /* @__PURE__ */
|
|
25255
|
-
hasMoreBelow && /* @__PURE__ */
|
|
25256
|
-
removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */
|
|
25257
|
-
/* @__PURE__ */
|
|
25296
|
+
previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs33(Fragment13, { children: [
|
|
25297
|
+
/* @__PURE__ */ jsx45(Text35, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
|
|
25298
|
+
hasMoreAbove && /* @__PURE__ */ jsx45(Text35, { color: PALETTE.muted, children: "\u2191 more above" }),
|
|
25299
|
+
windowed.map((rc) => /* @__PURE__ */ jsx45(Text35, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
|
|
25300
|
+
hasMoreBelow && /* @__PURE__ */ jsx45(Text35, { color: PALETTE.muted, children: "\u2193 more below" }),
|
|
25301
|
+
removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx45(Text35, { children: "[\u2191\u2193] scroll deletions" }),
|
|
25302
|
+
/* @__PURE__ */ jsx45(Text35, { children: " " })
|
|
25258
25303
|
] }),
|
|
25259
|
-
/* @__PURE__ */
|
|
25260
|
-
/* @__PURE__ */
|
|
25261
|
-
/* @__PURE__ */
|
|
25304
|
+
/* @__PURE__ */ jsx45(Text35, { children: noneAccepted ? "Confirm exit with nothing accepted?" : allResolved ? "Save decisions and exit? All components resolved." : "Save decisions and exit?" }),
|
|
25305
|
+
/* @__PURE__ */ jsx45(Text35, { children: " " }),
|
|
25306
|
+
/* @__PURE__ */ jsx45(
|
|
25262
25307
|
ControlHints,
|
|
25263
25308
|
{
|
|
25264
25309
|
hints: [
|
|
@@ -25671,11 +25716,11 @@ function useReviewSurfaceState(initialFinalizeError = null) {
|
|
|
25671
25716
|
}
|
|
25672
25717
|
|
|
25673
25718
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDialogs.tsx
|
|
25674
|
-
import { Box as
|
|
25719
|
+
import { Box as Box34, Text as Text37 } from "ink";
|
|
25675
25720
|
|
|
25676
25721
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/QuitDialog.tsx
|
|
25677
|
-
import { Box as
|
|
25678
|
-
import { Fragment as
|
|
25722
|
+
import { Box as Box33, Text as Text36 } from "ink";
|
|
25723
|
+
import { Fragment as Fragment14, jsx as jsx46, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
25679
25724
|
function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
25680
25725
|
useImmediateInput((input, key) => {
|
|
25681
25726
|
if (input === "y" || key.return) {
|
|
@@ -25684,16 +25729,16 @@ function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
|
25684
25729
|
onCancel();
|
|
25685
25730
|
}
|
|
25686
25731
|
});
|
|
25687
|
-
return /* @__PURE__ */ jsxs34(
|
|
25688
|
-
/* @__PURE__ */
|
|
25689
|
-
/* @__PURE__ */
|
|
25690
|
-
hasUnsavedDrafts ? /* @__PURE__ */ jsxs34(
|
|
25691
|
-
/* @__PURE__ */
|
|
25692
|
-
/* @__PURE__ */
|
|
25693
|
-
/* @__PURE__ */
|
|
25694
|
-
] }) : /* @__PURE__ */
|
|
25695
|
-
/* @__PURE__ */
|
|
25696
|
-
/* @__PURE__ */
|
|
25732
|
+
return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "round", padding: 1, width: 50, children: [
|
|
25733
|
+
/* @__PURE__ */ jsx46(Text36, { bold: true, children: "\u2500".repeat(19) + " Quit " + "\u2500".repeat(19) }),
|
|
25734
|
+
/* @__PURE__ */ jsx46(Text36, { children: " " }),
|
|
25735
|
+
hasUnsavedDrafts ? /* @__PURE__ */ jsxs34(Fragment14, { children: [
|
|
25736
|
+
/* @__PURE__ */ jsx46(Text36, { children: "You have unsaved draft edits." }),
|
|
25737
|
+
/* @__PURE__ */ jsx46(Text36, { children: "Session state is preserved \u2014 you can resume" }),
|
|
25738
|
+
/* @__PURE__ */ jsx46(Text36, { children: "by running the same review command again." })
|
|
25739
|
+
] }) : /* @__PURE__ */ jsx46(Text36, { children: "Session is saved. Quit without finalizing?" }),
|
|
25740
|
+
/* @__PURE__ */ jsx46(Text36, { children: " " }),
|
|
25741
|
+
/* @__PURE__ */ jsx46(
|
|
25697
25742
|
ControlHints,
|
|
25698
25743
|
{
|
|
25699
25744
|
hints: [
|
|
@@ -25706,7 +25751,7 @@ function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
|
25706
25751
|
}
|
|
25707
25752
|
|
|
25708
25753
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDialogs.tsx
|
|
25709
|
-
import { Fragment as
|
|
25754
|
+
import { Fragment as Fragment15, jsx as jsx47, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
25710
25755
|
function ReviewFinalizeDialogs({
|
|
25711
25756
|
showFinalize,
|
|
25712
25757
|
showQuit,
|
|
@@ -25720,8 +25765,8 @@ function ReviewFinalizeDialogs({
|
|
|
25720
25765
|
onQuitCancel
|
|
25721
25766
|
}) {
|
|
25722
25767
|
const { accepted, rejected, needsReview } = countReviewStatuses(components);
|
|
25723
|
-
return /* @__PURE__ */ jsxs35(
|
|
25724
|
-
showFinalize && /* @__PURE__ */
|
|
25768
|
+
return /* @__PURE__ */ jsxs35(Fragment15, { children: [
|
|
25769
|
+
showFinalize && /* @__PURE__ */ jsx47(
|
|
25725
25770
|
FinalizeDialog,
|
|
25726
25771
|
{
|
|
25727
25772
|
accepted,
|
|
@@ -25734,7 +25779,7 @@ function ReviewFinalizeDialogs({
|
|
|
25734
25779
|
onCancel: onFinalizeCancel
|
|
25735
25780
|
}
|
|
25736
25781
|
),
|
|
25737
|
-
showQuit && /* @__PURE__ */
|
|
25782
|
+
showQuit && /* @__PURE__ */ jsx47(QuitDialog, { hasUnsavedDrafts: false, onConfirm: onQuitConfirm, onCancel: onQuitCancel })
|
|
25738
25783
|
] });
|
|
25739
25784
|
}
|
|
25740
25785
|
function ReviewStepDialogs({
|
|
@@ -25744,7 +25789,7 @@ function ReviewStepDialogs({
|
|
|
25744
25789
|
onFinalize,
|
|
25745
25790
|
onQuit
|
|
25746
25791
|
}) {
|
|
25747
|
-
return /* @__PURE__ */
|
|
25792
|
+
return /* @__PURE__ */ jsx47(
|
|
25748
25793
|
ReviewFinalizeDialogs,
|
|
25749
25794
|
{
|
|
25750
25795
|
showFinalize: surfaceState.showFinalize,
|
|
@@ -25762,12 +25807,12 @@ function ReviewStepDialogs({
|
|
|
25762
25807
|
}
|
|
25763
25808
|
function ReviewReloadDialog({ open }) {
|
|
25764
25809
|
if (!open) return null;
|
|
25765
|
-
return /* @__PURE__ */ jsxs35(
|
|
25766
|
-
/* @__PURE__ */
|
|
25767
|
-
/* @__PURE__ */
|
|
25768
|
-
/* @__PURE__ */
|
|
25769
|
-
/* @__PURE__ */
|
|
25770
|
-
/* @__PURE__ */
|
|
25810
|
+
return /* @__PURE__ */ jsxs35(Box34, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
25811
|
+
/* @__PURE__ */ jsx47(Text37, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
|
|
25812
|
+
/* @__PURE__ */ jsx47(Text37, { children: "Unsaved in-memory changes will be lost." }),
|
|
25813
|
+
/* @__PURE__ */ jsx47(Text37, { children: " " }),
|
|
25814
|
+
/* @__PURE__ */ jsx47(Text37, { children: " [Enter] Confirm" }),
|
|
25815
|
+
/* @__PURE__ */ jsx47(Text37, { children: " [Esc] Cancel" })
|
|
25771
25816
|
] });
|
|
25772
25817
|
}
|
|
25773
25818
|
|
|
@@ -26134,8 +26179,8 @@ function useReviewPreview({
|
|
|
26134
26179
|
}
|
|
26135
26180
|
|
|
26136
26181
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/LivePreviewSummary.tsx
|
|
26137
|
-
import { Box as
|
|
26138
|
-
import { jsx as
|
|
26182
|
+
import { Box as Box35, Text as Text38 } from "ink";
|
|
26183
|
+
import { jsx as jsx48, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
26139
26184
|
function LivePreviewSummary({
|
|
26140
26185
|
enabled,
|
|
26141
26186
|
previewAnnotations,
|
|
@@ -26149,24 +26194,24 @@ function LivePreviewSummary({
|
|
|
26149
26194
|
const counts = { new: 0, changed: 0, removed: 0, breaking: 0 };
|
|
26150
26195
|
for (const annotation of previewAnnotations.values()) counts[annotation] += 1;
|
|
26151
26196
|
const hasCounts = counts.new + counts.changed + counts.removed + counts.breaking > 0;
|
|
26152
|
-
if (disabled) return /* @__PURE__ */
|
|
26153
|
-
if (status === "running" && !hasCounts) return /* @__PURE__ */
|
|
26197
|
+
if (disabled) return /* @__PURE__ */ jsx48(Text38, { color: PALETTE.muted, children: "Preview: disabled (creds rejected)" });
|
|
26198
|
+
if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx48(Text38, { color: PALETTE.muted, children: `Preview: ${spinner} running...` });
|
|
26154
26199
|
if (!hasCounts) return null;
|
|
26155
|
-
return /* @__PURE__ */ jsxs36(
|
|
26156
|
-
/* @__PURE__ */
|
|
26157
|
-
/* @__PURE__ */
|
|
26158
|
-
/* @__PURE__ */
|
|
26159
|
-
/* @__PURE__ */
|
|
26160
|
-
/* @__PURE__ */
|
|
26161
|
-
/* @__PURE__ */
|
|
26162
|
-
showRemovedListHint && removedCount > 0 && /* @__PURE__ */
|
|
26163
|
-
/* @__PURE__ */
|
|
26164
|
-
/* @__PURE__ */
|
|
26200
|
+
return /* @__PURE__ */ jsxs36(Box35, { children: [
|
|
26201
|
+
/* @__PURE__ */ jsx48(Text38, { children: "Preview: " }),
|
|
26202
|
+
/* @__PURE__ */ jsx48(Text38, { color: PALETTE.success, children: `${counts.new} new` }),
|
|
26203
|
+
/* @__PURE__ */ jsx48(Text38, { children: " \xB7 " }),
|
|
26204
|
+
/* @__PURE__ */ jsx48(Text38, { color: PALETTE.warning, children: `${counts.changed} changed` }),
|
|
26205
|
+
/* @__PURE__ */ jsx48(Text38, { children: " \xB7 " }),
|
|
26206
|
+
/* @__PURE__ */ jsx48(Text38, { color: PALETTE.muted, children: `${counts.removed} removed` }),
|
|
26207
|
+
showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx48(Text38, { children: " ([d] removed list)" }),
|
|
26208
|
+
/* @__PURE__ */ jsx48(Text38, { children: " \xB7 " }),
|
|
26209
|
+
/* @__PURE__ */ jsx48(Text38, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
|
|
26165
26210
|
] });
|
|
26166
26211
|
}
|
|
26167
26212
|
|
|
26168
26213
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx
|
|
26169
|
-
import { Fragment as
|
|
26214
|
+
import { Fragment as Fragment16, jsx as jsx49, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
26170
26215
|
function sortComponentsForSidebar(components, cycleParticipants) {
|
|
26171
26216
|
const isEmpty2 = (entry) => Object.keys(entry.$properties ?? {}).length === 0 && Object.keys(entry.$slots ?? {}).length === 0;
|
|
26172
26217
|
const tier = (c2) => {
|
|
@@ -26210,7 +26255,7 @@ function CyclePathLine({
|
|
|
26210
26255
|
return /* @__PURE__ */ jsxs37(Text39, { color: highlightLine ? PALETTE.warning : void 0, children: [
|
|
26211
26256
|
prefix,
|
|
26212
26257
|
segments.map(
|
|
26213
|
-
(segment, index) => segment.kind === "slot" ? /* @__PURE__ */
|
|
26258
|
+
(segment, index) => segment.kind === "slot" ? /* @__PURE__ */ jsx49(Text39, { color: PALETTE.accent, children: segment.text }, index) : segment.kind === "arrow" ? /* @__PURE__ */ jsx49(Text39, { color: PALETTE.muted, children: segment.text }, index) : /* @__PURE__ */ jsx49(Text39, { color: highlightComponents ? PALETTE.warning : void 0, children: segment.text }, index)
|
|
26214
26259
|
)
|
|
26215
26260
|
] });
|
|
26216
26261
|
}
|
|
@@ -26222,31 +26267,31 @@ function CycleDetailPanel({
|
|
|
26222
26267
|
height
|
|
26223
26268
|
}) {
|
|
26224
26269
|
const lines = [
|
|
26225
|
-
/* @__PURE__ */
|
|
26226
|
-
/* @__PURE__ */
|
|
26227
|
-
/* @__PURE__ */
|
|
26228
|
-
/* @__PURE__ */
|
|
26270
|
+
/* @__PURE__ */ jsx49(Text39, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${cycles.length})` }, "cyc-title"),
|
|
26271
|
+
/* @__PURE__ */ jsx49(Text39, { color: PALETTE.muted, children: "push will fail until these are resolved" }, "cyc-sub"),
|
|
26272
|
+
/* @__PURE__ */ jsx49(Text39, { color: PALETTE.muted, children: "Reject a cycle member or remove a slot edge to break the cycle." }, "cyc-guidance"),
|
|
26273
|
+
/* @__PURE__ */ jsx49(Text39, { children: " " }, "cyc-space")
|
|
26229
26274
|
];
|
|
26230
26275
|
cycles.forEach((cycle, index) => {
|
|
26231
26276
|
const nodeCount = new Set(cycle.path).size;
|
|
26232
26277
|
const isCursor = index === cursor;
|
|
26233
26278
|
lines.push(
|
|
26234
|
-
/* @__PURE__ */
|
|
26235
|
-
/* @__PURE__ */
|
|
26279
|
+
/* @__PURE__ */ jsx49(Text39, { bold: true, inverse: isCursor, children: `${isCursor ? figures8.pointer : " "} Cycle ${index + 1} (${nodeCount} component${nodeCount === 1 ? "" : "s"}):` }, `cyc-h-${index}`),
|
|
26280
|
+
/* @__PURE__ */ jsx49(CyclePathLine, { segments: formatCyclePathSegments2(cycle, 16), prefix: " " }, `cyc-p-${index}`)
|
|
26236
26281
|
);
|
|
26237
26282
|
if (cycle.suggestedBreak) {
|
|
26238
26283
|
lines.push(
|
|
26239
|
-
/* @__PURE__ */
|
|
26284
|
+
/* @__PURE__ */ jsx49(Text39, { color: PALETTE.muted, children: ` Suggested fix: remove [${cycle.suggestedBreak.slotName}] from ${cycle.suggestedBreak.fromComponent}` }, `cyc-fix-${index}`)
|
|
26240
26285
|
);
|
|
26241
26286
|
}
|
|
26242
|
-
lines.push(/* @__PURE__ */
|
|
26287
|
+
lines.push(/* @__PURE__ */ jsx49(Text39, { children: " " }, `cyc-s-${index}`));
|
|
26243
26288
|
});
|
|
26244
26289
|
const footer = "[\u2191\u2193] move [Enter] fix cycle [c/q/Esc] close";
|
|
26245
26290
|
const viewportHeight = Math.max(1, height - 3);
|
|
26246
26291
|
const visible = lines.slice(scrollOffset, scrollOffset + viewportHeight - 1);
|
|
26247
26292
|
return /* @__PURE__ */ jsxs37(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
|
|
26248
26293
|
visible,
|
|
26249
|
-
/* @__PURE__ */
|
|
26294
|
+
/* @__PURE__ */ jsx49(Text39, { color: PALETTE.muted, children: footer })
|
|
26250
26295
|
] });
|
|
26251
26296
|
}
|
|
26252
26297
|
function BreakCyclePanel({
|
|
@@ -26258,13 +26303,13 @@ function BreakCyclePanel({
|
|
|
26258
26303
|
height
|
|
26259
26304
|
}) {
|
|
26260
26305
|
return /* @__PURE__ */ jsxs37(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
|
|
26261
|
-
/* @__PURE__ */
|
|
26262
|
-
cycle && /* @__PURE__ */
|
|
26263
|
-
/* @__PURE__ */
|
|
26264
|
-
/* @__PURE__ */
|
|
26265
|
-
edges.length > 0 && /* @__PURE__ */
|
|
26266
|
-
edges.map((edge, index) => /* @__PURE__ */
|
|
26267
|
-
confirming ? /* @__PURE__ */
|
|
26306
|
+
/* @__PURE__ */ jsx49(Text39, { bold: true, color: PALETTE.warning, children: "BREAK CYCLE \u2014 remove a slot edge" }),
|
|
26307
|
+
cycle && /* @__PURE__ */ jsx49(CyclePathLine, { segments: formatCyclePathSegments2(cycle), prefix: " ", highlightComponents: true }),
|
|
26308
|
+
/* @__PURE__ */ jsx49(Text39, { color: PALETTE.muted, children: cycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
|
|
26309
|
+
/* @__PURE__ */ jsx49(Text39, { children: " " }),
|
|
26310
|
+
edges.length > 0 && /* @__PURE__ */ jsx49(Text39, { color: PALETTE.muted, children: "remove slot edge:" }),
|
|
26311
|
+
edges.map((edge, index) => /* @__PURE__ */ jsx49(Text39, { inverse: index === cursor, children: `${index === cursor ? figures8.pointer : " "} remove '${edge.toComponent}' from ${edge.fromComponent}.$slots.${edge.slotName}.$allowedComponents` }, `${edge.fromComponent}-${edge.slotName}-${edge.toComponent}`)),
|
|
26312
|
+
confirming ? /* @__PURE__ */ jsx49(Text39, { bold: true, color: PALETTE.warning, children: "Delete this slot edge? [y] confirm [n] cancel" }) : /* @__PURE__ */ jsx49(Text39, { children: "[\u2191\u2193] move [Enter] delete [x/Esc] close" })
|
|
26268
26313
|
] });
|
|
26269
26314
|
}
|
|
26270
26315
|
var HELP_SECTIONS2 = [
|
|
@@ -26370,9 +26415,9 @@ function deriveBreakingChanges(response) {
|
|
|
26370
26415
|
}
|
|
26371
26416
|
function GenerateReviewStep(props) {
|
|
26372
26417
|
if (!props.extractSessionId) {
|
|
26373
|
-
return /* @__PURE__ */
|
|
26418
|
+
return /* @__PURE__ */ jsx49(Box36, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx49(Text39, { color: PALETTE.error, children: "Error: no session ID \u2014 cannot load generated definitions." }) });
|
|
26374
26419
|
}
|
|
26375
|
-
return /* @__PURE__ */
|
|
26420
|
+
return /* @__PURE__ */ jsx49(GenerateReviewStepView, { ...props, extractSessionId: props.extractSessionId });
|
|
26376
26421
|
}
|
|
26377
26422
|
function GenerateReviewStepView({
|
|
26378
26423
|
extractSessionId,
|
|
@@ -27229,13 +27274,13 @@ function GenerateReviewStepView({
|
|
|
27229
27274
|
}
|
|
27230
27275
|
});
|
|
27231
27276
|
if (loading) {
|
|
27232
|
-
return /* @__PURE__ */
|
|
27277
|
+
return /* @__PURE__ */ jsx49(ReviewLoadingState, {});
|
|
27233
27278
|
}
|
|
27234
27279
|
if (loadError) {
|
|
27235
|
-
return /* @__PURE__ */
|
|
27280
|
+
return /* @__PURE__ */ jsx49(ReviewLoadError, { message: loadError });
|
|
27236
27281
|
}
|
|
27237
27282
|
if (showHelp) {
|
|
27238
|
-
return /* @__PURE__ */
|
|
27283
|
+
return /* @__PURE__ */ jsx49(HelpOverlay, { sections: HELP_SECTIONS2, handleInput: false, onClose: () => setShowHelp(false) });
|
|
27239
27284
|
}
|
|
27240
27285
|
const { selected, selectedJson, visibleJsonPanelValue } = getReviewSelectionState(
|
|
27241
27286
|
components,
|
|
@@ -27275,9 +27320,9 @@ function GenerateReviewStepView({
|
|
|
27275
27320
|
for (const c2 of closures.values()) if (c2.nodes.length > 1) return true;
|
|
27276
27321
|
return false;
|
|
27277
27322
|
})();
|
|
27278
|
-
return /* @__PURE__ */ jsxs37(
|
|
27279
|
-
/* @__PURE__ */
|
|
27280
|
-
/* @__PURE__ */
|
|
27323
|
+
return /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", children: [
|
|
27324
|
+
/* @__PURE__ */ jsx49(StepHeader, { step: "review" }),
|
|
27325
|
+
/* @__PURE__ */ jsx49(
|
|
27281
27326
|
ReviewStepDialogs,
|
|
27282
27327
|
{
|
|
27283
27328
|
surfaceState: reviewSurface,
|
|
@@ -27287,15 +27332,15 @@ function GenerateReviewStepView({
|
|
|
27287
27332
|
onQuit
|
|
27288
27333
|
}
|
|
27289
27334
|
),
|
|
27290
|
-
/* @__PURE__ */
|
|
27291
|
-
removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs37(
|
|
27292
|
-
/* @__PURE__ */
|
|
27293
|
-
!removedBannerCollapsed && /* @__PURE__ */ jsxs37(
|
|
27294
|
-
/* @__PURE__ */
|
|
27295
|
-
removedComponents.map((rc) => /* @__PURE__ */
|
|
27335
|
+
/* @__PURE__ */ jsx49(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
|
|
27336
|
+
removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
|
|
27337
|
+
/* @__PURE__ */ jsx49(Text39, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
|
|
27338
|
+
!removedBannerCollapsed && /* @__PURE__ */ jsxs37(Fragment16, { children: [
|
|
27339
|
+
/* @__PURE__ */ jsx49(Text39, { children: " " }),
|
|
27340
|
+
removedComponents.map((rc) => /* @__PURE__ */ jsx49(Text39, { children: removedComponentLine(rc) }, rc.id))
|
|
27296
27341
|
] })
|
|
27297
27342
|
] }),
|
|
27298
|
-
breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */
|
|
27343
|
+
breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx49(Box36, { paddingX: 1, children: /* @__PURE__ */ jsx49(
|
|
27299
27344
|
Text39,
|
|
27300
27345
|
{
|
|
27301
27346
|
color: PALETTE.warning,
|
|
@@ -27306,14 +27351,14 @@ function GenerateReviewStepView({
|
|
|
27306
27351
|
const row = breakingRows[breakingCursor];
|
|
27307
27352
|
const comp = row ? breakingChanges.find((b) => b.componentName === row.componentName) : void 0;
|
|
27308
27353
|
if (!comp) return null;
|
|
27309
|
-
return /* @__PURE__ */ jsxs37(
|
|
27310
|
-
/* @__PURE__ */
|
|
27311
|
-
comp.impact && /* @__PURE__ */
|
|
27312
|
-
comp.changes.length === 0 ? /* @__PURE__ */
|
|
27313
|
-
/* @__PURE__ */
|
|
27354
|
+
return /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
27355
|
+
/* @__PURE__ */ jsx49(Text39, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
|
|
27356
|
+
comp.impact && /* @__PURE__ */ jsx49(Text39, { color: PALETTE.muted, children: ` affects ${comp.impact.affectedExperiences} experience${comp.impact.affectedExperiences === 1 ? "" : "s"}, ${comp.impact.affectedFragments} fragment${comp.impact.affectedFragments === 1 ? "" : "s"}` }),
|
|
27357
|
+
comp.changes.length === 0 ? /* @__PURE__ */ jsx49(Text39, { color: PALETTE.muted, children: " (no enumerated changes)" }) : comp.changes.map((change, ci) => /* @__PURE__ */ jsx49(Text39, { children: ` \u2022 ${formatBreakingChange(change, comp.current)}` }, `bd-detail-${ci}`)),
|
|
27358
|
+
/* @__PURE__ */ jsx49(Text39, { children: "[D/Esc] close detail" })
|
|
27314
27359
|
] });
|
|
27315
27360
|
})(),
|
|
27316
|
-
!dialogOpen && /* @__PURE__ */
|
|
27361
|
+
!dialogOpen && /* @__PURE__ */ jsx49(
|
|
27317
27362
|
LivePreviewSummary,
|
|
27318
27363
|
{
|
|
27319
27364
|
enabled: livePreview,
|
|
@@ -27332,16 +27377,16 @@ function GenerateReviewStepView({
|
|
|
27332
27377
|
const participantSet = cycleView.structural;
|
|
27333
27378
|
const members = stillRejected.filter((n) => participantSet.has(n)).sort();
|
|
27334
27379
|
const ancestors = stillRejected.filter((n) => !participantSet.has(n)).sort();
|
|
27335
|
-
return /* @__PURE__ */ jsxs37(
|
|
27336
|
-
/* @__PURE__ */
|
|
27337
|
-
members.length > 0 && /* @__PURE__ */
|
|
27338
|
-
ancestors.length > 0 && /* @__PURE__ */
|
|
27339
|
-
/* @__PURE__ */
|
|
27380
|
+
return /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
|
|
27381
|
+
/* @__PURE__ */ jsx49(Text39, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
|
|
27382
|
+
members.length > 0 && /* @__PURE__ */ jsx49(Text39, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
|
|
27383
|
+
ancestors.length > 0 && /* @__PURE__ */ jsx49(Text39, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
|
|
27384
|
+
/* @__PURE__ */ jsx49(Text39, { color: PALETTE.muted, children: undoSnapshot ? " [Ctrl+Z] undo \xB7 [r]/[a] manually toggle \xB7 [F] continue" : " [r]/[a] manually toggle \xB7 [F] continue" })
|
|
27340
27385
|
] });
|
|
27341
27386
|
})(),
|
|
27342
|
-
/* @__PURE__ */
|
|
27343
|
-
/* @__PURE__ */
|
|
27344
|
-
!dialogOpen && breakPanel.isOpen && /* @__PURE__ */
|
|
27387
|
+
/* @__PURE__ */ jsx49(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
|
|
27388
|
+
/* @__PURE__ */ jsx49(ReviewFinalizeError, { message: finalizeError, hidden: dialogOpen }),
|
|
27389
|
+
!dialogOpen && breakPanel.isOpen && /* @__PURE__ */ jsx49(
|
|
27345
27390
|
BreakCyclePanel,
|
|
27346
27391
|
{
|
|
27347
27392
|
cycle: cycleRows[cyclesCursor],
|
|
@@ -27352,7 +27397,7 @@ function GenerateReviewStepView({
|
|
|
27352
27397
|
height: panelHeight
|
|
27353
27398
|
}
|
|
27354
27399
|
),
|
|
27355
|
-
!dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */
|
|
27400
|
+
!dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsx49(
|
|
27356
27401
|
CycleDetailPanel,
|
|
27357
27402
|
{
|
|
27358
27403
|
cycles: cycleRows,
|
|
@@ -27362,8 +27407,8 @@ function GenerateReviewStepView({
|
|
|
27362
27407
|
height: panelHeight
|
|
27363
27408
|
}
|
|
27364
27409
|
),
|
|
27365
|
-
!dialogOpen && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs37(
|
|
27366
|
-
breakingPanel.isOpen ? /* @__PURE__ */
|
|
27410
|
+
!dialogOpen && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs37(Box36, { children: [
|
|
27411
|
+
breakingPanel.isOpen ? /* @__PURE__ */ jsx49(
|
|
27367
27412
|
GotoBanner,
|
|
27368
27413
|
{
|
|
27369
27414
|
title: `Breaking changes \u2014 ${breakingRows[breakingCursor]?.componentName ?? "unknown component"}`,
|
|
@@ -27376,7 +27421,7 @@ function GenerateReviewStepView({
|
|
|
27376
27421
|
width: sidebarWidth,
|
|
27377
27422
|
footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [D] detail \xB7 [Esc] close"
|
|
27378
27423
|
}
|
|
27379
|
-
) : /* @__PURE__ */
|
|
27424
|
+
) : /* @__PURE__ */ jsx49(
|
|
27380
27425
|
GroupedSidebar,
|
|
27381
27426
|
{
|
|
27382
27427
|
items: groupedItems,
|
|
@@ -27417,7 +27462,7 @@ function GenerateReviewStepView({
|
|
|
27417
27462
|
graph: sidebarGraph
|
|
27418
27463
|
}
|
|
27419
27464
|
),
|
|
27420
|
-
selected ? /* @__PURE__ */
|
|
27465
|
+
selected ? /* @__PURE__ */ jsx49(
|
|
27421
27466
|
ReviewComponentPanel,
|
|
27422
27467
|
{
|
|
27423
27468
|
selectedKey: selected.key,
|
|
@@ -27449,12 +27494,12 @@ function GenerateReviewStepView({
|
|
|
27449
27494
|
livePreview: livePreviewHook,
|
|
27450
27495
|
livePreviewSpinner
|
|
27451
27496
|
}
|
|
27452
|
-
) : /* @__PURE__ */
|
|
27497
|
+
) : /* @__PURE__ */ jsx49(ReviewNoSelection, {})
|
|
27453
27498
|
] }),
|
|
27454
|
-
!dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs37(
|
|
27455
|
-
/* @__PURE__ */
|
|
27499
|
+
!dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", children: [
|
|
27500
|
+
/* @__PURE__ */ jsx49(Text39, { color: PALETTE.warning, children: `\u26A0 ${cycleRows.length} slot dependency cycle${cycleRows.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
|
|
27456
27501
|
cycleRows.slice(0, 3).map((cycle, idx) => {
|
|
27457
|
-
return /* @__PURE__ */
|
|
27502
|
+
return /* @__PURE__ */ jsx49(
|
|
27458
27503
|
CyclePathLine,
|
|
27459
27504
|
{
|
|
27460
27505
|
segments: formatCyclePathSegments2(cycle),
|
|
@@ -27465,10 +27510,10 @@ function GenerateReviewStepView({
|
|
|
27465
27510
|
`cyc-banner-${idx}`
|
|
27466
27511
|
);
|
|
27467
27512
|
}),
|
|
27468
|
-
cycleRows.length > 3 && /* @__PURE__ */
|
|
27469
|
-
/* @__PURE__ */
|
|
27513
|
+
cycleRows.length > 3 && /* @__PURE__ */ jsx49(Text39, { color: PALETTE.warning, children: ` \u2026${cycleRows.length - 3} more` }),
|
|
27514
|
+
/* @__PURE__ */ jsx49(Text39, { children: " press [c] for detail" })
|
|
27470
27515
|
] }),
|
|
27471
|
-
/* @__PURE__ */
|
|
27516
|
+
/* @__PURE__ */ jsx49(
|
|
27472
27517
|
SearchMatchSummary,
|
|
27473
27518
|
{
|
|
27474
27519
|
open: searchOpen,
|
|
@@ -27479,27 +27524,27 @@ function GenerateReviewStepView({
|
|
|
27479
27524
|
hidden: dialogOpen
|
|
27480
27525
|
}
|
|
27481
27526
|
),
|
|
27482
|
-
!dialogOpen && sidebarFocused && /* @__PURE__ */
|
|
27527
|
+
!dialogOpen && sidebarFocused && /* @__PURE__ */ jsx49(CompactControlBar, { hasGroupRoots, searchActive: searchOpen || searchQuery.length > 0 })
|
|
27483
27528
|
] });
|
|
27484
27529
|
}
|
|
27485
27530
|
|
|
27486
27531
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/CustomPromptBanner.tsx
|
|
27487
|
-
import { Box as
|
|
27488
|
-
import { jsx as
|
|
27532
|
+
import { Box as Box37, Text as Text40 } from "ink";
|
|
27533
|
+
import { jsx as jsx50, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
27489
27534
|
function CustomPromptBanner({ generatePromptPath }) {
|
|
27490
27535
|
if (!generatePromptPath) return null;
|
|
27491
|
-
return /* @__PURE__ */ jsxs38(
|
|
27492
|
-
/* @__PURE__ */
|
|
27536
|
+
return /* @__PURE__ */ jsxs38(Box37, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
27537
|
+
/* @__PURE__ */ jsx50(Text40, { color: PALETTE.warning, bold: true, children: "WARNING: Custom prompt active" }),
|
|
27493
27538
|
generatePromptPath ? /* @__PURE__ */ jsxs38(Text40, { color: PALETTE.warning, children: [
|
|
27494
27539
|
"components: ",
|
|
27495
27540
|
generatePromptPath
|
|
27496
27541
|
] }) : null,
|
|
27497
|
-
/* @__PURE__ */
|
|
27542
|
+
/* @__PURE__ */ jsx50(Text40, { color: PALETTE.warning, children: "Bundled invariants (utility-wrapper rejection, description content rules) do NOT apply." })
|
|
27498
27543
|
] });
|
|
27499
27544
|
}
|
|
27500
27545
|
|
|
27501
27546
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/DoneStep.tsx
|
|
27502
|
-
import { Box as
|
|
27547
|
+
import { Box as Box39, Text as Text42 } from "ink";
|
|
27503
27548
|
|
|
27504
27549
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/contentful-urls.ts
|
|
27505
27550
|
function normalizeHost(host) {
|
|
@@ -27515,26 +27560,26 @@ function buildPostPushUrl2({ host, spaceId, environmentId, view = "components" }
|
|
|
27515
27560
|
}
|
|
27516
27561
|
|
|
27517
27562
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/SpaceEnvironment.tsx
|
|
27518
|
-
import { Box as
|
|
27519
|
-
import { jsx as
|
|
27563
|
+
import { Box as Box38, Text as Text41 } from "ink";
|
|
27564
|
+
import { jsx as jsx51, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
27520
27565
|
function SpaceEnvironment({ spaceId, environmentId }) {
|
|
27521
|
-
return /* @__PURE__ */ jsxs39(
|
|
27522
|
-
/* @__PURE__ */
|
|
27523
|
-
/* @__PURE__ */
|
|
27524
|
-
/* @__PURE__ */
|
|
27525
|
-
/* @__PURE__ */
|
|
27526
|
-
/* @__PURE__ */
|
|
27566
|
+
return /* @__PURE__ */ jsxs39(Box38, { gap: 1, marginTop: 1, children: [
|
|
27567
|
+
/* @__PURE__ */ jsx51(Text41, { color: PALETTE.muted, children: "Space:" }),
|
|
27568
|
+
/* @__PURE__ */ jsx51(Text41, { children: spaceId }),
|
|
27569
|
+
/* @__PURE__ */ jsx51(Text41, { color: PALETTE.muted, children: "/" }),
|
|
27570
|
+
/* @__PURE__ */ jsx51(Text41, { color: PALETTE.muted, children: "Environment:" }),
|
|
27571
|
+
/* @__PURE__ */ jsx51(Text41, { children: environmentId })
|
|
27527
27572
|
] });
|
|
27528
27573
|
}
|
|
27529
27574
|
|
|
27530
27575
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/DoneStep.tsx
|
|
27531
|
-
import { Fragment as
|
|
27576
|
+
import { Fragment as Fragment17, jsx as jsx52, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
27532
27577
|
var ACTIONS = ["created", "updated", "removed"];
|
|
27533
27578
|
function EntityRows({ entity, label }) {
|
|
27534
27579
|
const plural3 = (n) => `${n} ${label}${n !== 1 ? "s" : ""}`;
|
|
27535
|
-
return /* @__PURE__ */ jsxs40(
|
|
27580
|
+
return /* @__PURE__ */ jsxs40(Fragment17, { children: [
|
|
27536
27581
|
ACTIONS.filter((action) => entity[action] > 0).map((action) => /* @__PURE__ */ jsxs40(Text42, { children: [
|
|
27537
|
-
/* @__PURE__ */
|
|
27582
|
+
/* @__PURE__ */ jsx52(Text42, { color: PALETTE.success, children: "\u2713" }),
|
|
27538
27583
|
" ",
|
|
27539
27584
|
plural3(entity[action]),
|
|
27540
27585
|
" ",
|
|
@@ -27548,9 +27593,9 @@ function EntityRows({ entity, label }) {
|
|
|
27548
27593
|
] });
|
|
27549
27594
|
}
|
|
27550
27595
|
function LinkRow({ title, url }) {
|
|
27551
|
-
return /* @__PURE__ */ jsxs40(
|
|
27552
|
-
/* @__PURE__ */
|
|
27553
|
-
/* @__PURE__ */
|
|
27596
|
+
return /* @__PURE__ */ jsxs40(Box39, { flexDirection: "column", children: [
|
|
27597
|
+
/* @__PURE__ */ jsx52(Text42, { color: PALETTE.muted, children: title }),
|
|
27598
|
+
/* @__PURE__ */ jsx52(Text42, { color: PALETTE.accent, children: url })
|
|
27554
27599
|
] });
|
|
27555
27600
|
}
|
|
27556
27601
|
function DoneStep({
|
|
@@ -27574,14 +27619,14 @@ function DoneStep({
|
|
|
27574
27619
|
const totalPushed = componentTypes.created + componentTypes.updated + componentTypes.removed + designTokens.created + designTokens.updated + designTokens.removed;
|
|
27575
27620
|
const success = totalFailed === 0;
|
|
27576
27621
|
const urlArgs = { host: host ?? "api.contentful.com", spaceId, environmentId };
|
|
27577
|
-
return /* @__PURE__ */ jsxs40(
|
|
27578
|
-
/* @__PURE__ */
|
|
27579
|
-
/* @__PURE__ */ jsxs40(
|
|
27580
|
-
success ? /* @__PURE__ */
|
|
27581
|
-
totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */
|
|
27582
|
-
/* @__PURE__ */
|
|
27583
|
-
/* @__PURE__ */
|
|
27584
|
-
summary && /* @__PURE__ */
|
|
27622
|
+
return /* @__PURE__ */ jsxs40(Box39, { flexDirection: "column", children: [
|
|
27623
|
+
/* @__PURE__ */ jsx52(StepHeader, { step: "done" }),
|
|
27624
|
+
/* @__PURE__ */ jsxs40(Box39, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
27625
|
+
success ? /* @__PURE__ */ jsx52(Text42, { bold: true, color: PALETTE.success, children: "Done!" }) : /* @__PURE__ */ jsx52(Text42, { bold: true, color: PALETTE.warning, children: "\u26A0 Finished with errors" }),
|
|
27626
|
+
totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */ jsx52(Text42, { 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__ */ jsxs40(Box39, { flexDirection: "column", children: [
|
|
27627
|
+
/* @__PURE__ */ jsx52(EntityRows, { entity: componentTypes, label: "Component" }),
|
|
27628
|
+
/* @__PURE__ */ jsx52(EntityRows, { entity: designTokens, label: "Design Token" }),
|
|
27629
|
+
summary && /* @__PURE__ */ jsx52(Box39, { marginTop: 1, children: /* @__PURE__ */ jsxs40(Text42, { color: PALETTE.muted, children: [
|
|
27585
27630
|
"Push result: ",
|
|
27586
27631
|
summary.succeeded,
|
|
27587
27632
|
"/",
|
|
@@ -27594,8 +27639,8 @@ function DoneStep({
|
|
|
27594
27639
|
] })
|
|
27595
27640
|
] }) })
|
|
27596
27641
|
] }),
|
|
27597
|
-
failures.length > 0 && /* @__PURE__ */ jsxs40(
|
|
27598
|
-
/* @__PURE__ */
|
|
27642
|
+
failures.length > 0 && /* @__PURE__ */ jsxs40(Box39, { flexDirection: "column", children: [
|
|
27643
|
+
/* @__PURE__ */ jsx52(Text42, { bold: true, color: PALETTE.error, children: "Failure details" }),
|
|
27599
27644
|
failures.map((failure) => /* @__PURE__ */ jsxs40(Text42, { color: PALETTE.error, children: [
|
|
27600
27645
|
failure.entityType,
|
|
27601
27646
|
" ",
|
|
@@ -27604,11 +27649,11 @@ function DoneStep({
|
|
|
27604
27649
|
failure.message
|
|
27605
27650
|
] }, `${failure.entityType}:${failure.entityId}`))
|
|
27606
27651
|
] }),
|
|
27607
|
-
/* @__PURE__ */
|
|
27608
|
-
success && totalPushed > 0 && /* @__PURE__ */ jsxs40(
|
|
27609
|
-
/* @__PURE__ */
|
|
27610
|
-
produced.components && /* @__PURE__ */
|
|
27611
|
-
produced.tokens && /* @__PURE__ */
|
|
27652
|
+
/* @__PURE__ */ jsx52(SpaceEnvironment, { spaceId, environmentId }),
|
|
27653
|
+
success && totalPushed > 0 && /* @__PURE__ */ jsxs40(Box39, { flexDirection: "column", gap: 1, children: [
|
|
27654
|
+
/* @__PURE__ */ jsx52(Text42, { color: PALETTE.success, children: "Your design system is now in Contentful Experiences." }),
|
|
27655
|
+
produced.components && /* @__PURE__ */ jsx52(LinkRow, { title: "View your components here:", url: buildPostPushUrl2(urlArgs) }),
|
|
27656
|
+
produced.tokens && /* @__PURE__ */ jsx52(
|
|
27612
27657
|
LinkRow,
|
|
27613
27658
|
{
|
|
27614
27659
|
title: "View your design tokens here:",
|
|
@@ -27616,14 +27661,14 @@ function DoneStep({
|
|
|
27616
27661
|
}
|
|
27617
27662
|
)
|
|
27618
27663
|
] }),
|
|
27619
|
-
/* @__PURE__ */
|
|
27664
|
+
/* @__PURE__ */ jsx52(ControlHints, { hints: [{ keys: "Enter / q", label: "Exit" }] })
|
|
27620
27665
|
] })
|
|
27621
27666
|
] });
|
|
27622
27667
|
}
|
|
27623
27668
|
|
|
27624
27669
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PathPrompt.tsx
|
|
27625
27670
|
import { useState as useState27 } from "react";
|
|
27626
|
-
import { Box as
|
|
27671
|
+
import { Box as Box40, Text as Text43 } from "ink";
|
|
27627
27672
|
import { readdirSync as readdirSync3 } from "node:fs";
|
|
27628
27673
|
import { dirname as dirname16, basename as basename6, join as join20 } from "node:path";
|
|
27629
27674
|
|
|
@@ -27657,7 +27702,7 @@ function useBlinkingCursor() {
|
|
|
27657
27702
|
}
|
|
27658
27703
|
|
|
27659
27704
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PathPrompt.tsx
|
|
27660
|
-
import { jsx as
|
|
27705
|
+
import { jsx as jsx53, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
27661
27706
|
function autocomplete(partial) {
|
|
27662
27707
|
if (!partial) return null;
|
|
27663
27708
|
const normalized = normalizePath(partial);
|
|
@@ -27714,19 +27759,19 @@ function PathPrompt({
|
|
|
27714
27759
|
const shown = input || defaultPath;
|
|
27715
27760
|
const isPlaceholder = input === "";
|
|
27716
27761
|
const cursor = cursorVisible ? "\u2588" : " ";
|
|
27717
|
-
return /* @__PURE__ */ jsxs41(
|
|
27718
|
-
/* @__PURE__ */
|
|
27719
|
-
/* @__PURE__ */ jsxs41(
|
|
27720
|
-
/* @__PURE__ */ jsxs41(
|
|
27721
|
-
/* @__PURE__ */
|
|
27762
|
+
return /* @__PURE__ */ jsxs41(Box40, { flexDirection: "column", children: [
|
|
27763
|
+
/* @__PURE__ */ jsx53(StepHeader, { step: "push" }),
|
|
27764
|
+
/* @__PURE__ */ jsxs41(Box40, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
27765
|
+
/* @__PURE__ */ jsxs41(Box40, { gap: 1, children: [
|
|
27766
|
+
/* @__PURE__ */ jsx53(Text43, { color: PALETTE.accent, children: "?" }),
|
|
27722
27767
|
/* @__PURE__ */ jsxs41(Text43, { bold: true, children: [
|
|
27723
27768
|
label,
|
|
27724
27769
|
":"
|
|
27725
27770
|
] }),
|
|
27726
|
-
/* @__PURE__ */
|
|
27727
|
-
/* @__PURE__ */
|
|
27771
|
+
/* @__PURE__ */ jsx53(Text43, { color: isPlaceholder ? PALETTE.muted : void 0, children: shown }),
|
|
27772
|
+
/* @__PURE__ */ jsx53(Text43, { children: cursor })
|
|
27728
27773
|
] }),
|
|
27729
|
-
/* @__PURE__ */
|
|
27774
|
+
/* @__PURE__ */ jsx53(
|
|
27730
27775
|
ControlHints,
|
|
27731
27776
|
{
|
|
27732
27777
|
hints: [
|
|
@@ -27741,7 +27786,7 @@ function PathPrompt({
|
|
|
27741
27786
|
}
|
|
27742
27787
|
|
|
27743
27788
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PushingStep.tsx
|
|
27744
|
-
import { Box as
|
|
27789
|
+
import { Box as Box41, Text as Text44 } from "ink";
|
|
27745
27790
|
import { ProgressBar as ProgressBar2, ThemeProvider as ThemeProvider2 } from "@inkjs/ui";
|
|
27746
27791
|
|
|
27747
27792
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/produced.ts
|
|
@@ -27759,7 +27804,7 @@ function writtenThings({ components, tokens }) {
|
|
|
27759
27804
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/use-timed-spinner.tsx
|
|
27760
27805
|
import { useEffect as useEffect19, useState as useState28 } from "react";
|
|
27761
27806
|
import { Spinner as Spinner2 } from "@inkjs/ui";
|
|
27762
|
-
import { jsx as
|
|
27807
|
+
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
27763
27808
|
function useTimedSpinner() {
|
|
27764
27809
|
const [elapsedSeconds, setElapsedSeconds] = useState28(0);
|
|
27765
27810
|
useEffect19(() => {
|
|
@@ -27771,32 +27816,32 @@ function useTimedSpinner() {
|
|
|
27771
27816
|
const mins = Math.floor(elapsedSeconds / 60);
|
|
27772
27817
|
const secs = elapsedSeconds % 60;
|
|
27773
27818
|
return {
|
|
27774
|
-
spinner: /* @__PURE__ */
|
|
27819
|
+
spinner: /* @__PURE__ */ jsx54(Spinner2, {}),
|
|
27775
27820
|
elapsed: mins > 0 ? `${mins}m ${secs}s` : `${secs}s`
|
|
27776
27821
|
};
|
|
27777
27822
|
}
|
|
27778
27823
|
|
|
27779
27824
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PushingStep.tsx
|
|
27780
|
-
import { jsx as
|
|
27825
|
+
import { jsx as jsx55, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
27781
27826
|
function PushingStep({ progress, produced }) {
|
|
27782
27827
|
const { elapsed } = useTimedSpinner();
|
|
27783
27828
|
const operationId = progress && progress.kind === "queued" ? progress.operationId : null;
|
|
27784
27829
|
const showGlobal = progress && progress.kind === "progress";
|
|
27785
27830
|
const showCurrent = progress && progress.kind === "progress" && progress.current ? progress.current : null;
|
|
27786
|
-
return /* @__PURE__ */ jsxs42(
|
|
27787
|
-
/* @__PURE__ */
|
|
27788
|
-
/* @__PURE__ */ jsxs42(
|
|
27831
|
+
return /* @__PURE__ */ jsxs42(Box41, { flexDirection: "column", children: [
|
|
27832
|
+
/* @__PURE__ */ jsx55(StepHeader, { step: "push" }),
|
|
27833
|
+
/* @__PURE__ */ jsxs42(Box41, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 1, children: [
|
|
27789
27834
|
/* @__PURE__ */ jsxs42(Text44, { children: [
|
|
27790
27835
|
"Writing ",
|
|
27791
27836
|
writtenThings(produced),
|
|
27792
27837
|
" to your Contentful space..."
|
|
27793
27838
|
] }),
|
|
27794
|
-
operationId && /* @__PURE__ */ jsxs42(
|
|
27795
|
-
/* @__PURE__ */
|
|
27796
|
-
/* @__PURE__ */
|
|
27839
|
+
operationId && /* @__PURE__ */ jsxs42(Box41, { gap: 1, children: [
|
|
27840
|
+
/* @__PURE__ */ jsx55(Text44, { color: PALETTE.muted, children: "Operation:" }),
|
|
27841
|
+
/* @__PURE__ */ jsx55(Text44, { children: operationId })
|
|
27797
27842
|
] }),
|
|
27798
|
-
showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */
|
|
27799
|
-
/* @__PURE__ */
|
|
27843
|
+
showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */ jsx55(Box41, { gap: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs42(Box41, { gap: 2, children: [
|
|
27844
|
+
/* @__PURE__ */ jsx55(Box41, { width: 40, children: /* @__PURE__ */ jsx55(ThemeProvider2, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx55(ProgressBar2, { value: Math.round(progress.processed / progress.total * 100) }) }) }),
|
|
27800
27845
|
/* @__PURE__ */ jsxs42(Text44, { color: PALETTE.muted, children: [
|
|
27801
27846
|
progress.processed,
|
|
27802
27847
|
"/",
|
|
@@ -27804,11 +27849,11 @@ function PushingStep({ progress, produced }) {
|
|
|
27804
27849
|
" entities"
|
|
27805
27850
|
] })
|
|
27806
27851
|
] }) }),
|
|
27807
|
-
showCurrent && /* @__PURE__ */ jsxs42(
|
|
27808
|
-
/* @__PURE__ */
|
|
27809
|
-
/* @__PURE__ */
|
|
27852
|
+
showCurrent && /* @__PURE__ */ jsxs42(Box41, { gap: 1, children: [
|
|
27853
|
+
/* @__PURE__ */ jsx55(Text44, { color: PALETTE.muted, children: "Now processing:" }),
|
|
27854
|
+
/* @__PURE__ */ jsx55(Text44, { children: showCurrent })
|
|
27810
27855
|
] }),
|
|
27811
|
-
/* @__PURE__ */
|
|
27856
|
+
/* @__PURE__ */ jsx55(Box41, { marginTop: 1, children: /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.muted, children: [
|
|
27812
27857
|
"Elapsed: ",
|
|
27813
27858
|
elapsed
|
|
27814
27859
|
] }) })
|
|
@@ -27818,7 +27863,7 @@ function PushingStep({ progress, produced }) {
|
|
|
27818
27863
|
|
|
27819
27864
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/WizardPreviewStep.tsx
|
|
27820
27865
|
import { useEffect as useEffect20, useState as useState29, useMemo as useMemo5 } from "react";
|
|
27821
|
-
import { Box as
|
|
27866
|
+
import { Box as Box42, Text as Text45 } from "ink";
|
|
27822
27867
|
|
|
27823
27868
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/preview-diff.ts
|
|
27824
27869
|
function computeComponentDiffLines(current, proposed, changeClassification) {
|
|
@@ -27996,7 +28041,7 @@ function usePreviewConfirmationInput(breakingWithImpact, onConfirm) {
|
|
|
27996
28041
|
}
|
|
27997
28042
|
|
|
27998
28043
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/WizardPreviewStep.tsx
|
|
27999
|
-
import { Fragment as
|
|
28044
|
+
import { Fragment as Fragment18, jsx as jsx56, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
28000
28045
|
function buildPreviewSummaryLines(preview) {
|
|
28001
28046
|
const lines = [];
|
|
28002
28047
|
const { components, tokens } = preview;
|
|
@@ -28248,11 +28293,11 @@ function WizardPreviewStep({
|
|
|
28248
28293
|
return;
|
|
28249
28294
|
}
|
|
28250
28295
|
});
|
|
28251
|
-
return /* @__PURE__ */ jsxs43(
|
|
28252
|
-
/* @__PURE__ */
|
|
28253
|
-
/* @__PURE__ */ jsxs43(
|
|
28254
|
-
hasAnything ? /* @__PURE__ */ jsxs43(
|
|
28255
|
-
/* @__PURE__ */
|
|
28296
|
+
return /* @__PURE__ */ jsxs43(Box42, { flexDirection: "column", children: [
|
|
28297
|
+
/* @__PURE__ */ jsx56(StepHeader, { step: "push" }),
|
|
28298
|
+
/* @__PURE__ */ jsxs43(Box42, { flexDirection: "column", gap: 1, paddingX: 2, paddingBottom: 2, children: [
|
|
28299
|
+
hasAnything ? /* @__PURE__ */ jsxs43(Fragment18, { children: [
|
|
28300
|
+
/* @__PURE__ */ jsx56(Text45, { children: "Here's what will happen in your space:" }),
|
|
28256
28301
|
/* @__PURE__ */ jsxs43(
|
|
28257
28302
|
WindowedPanel,
|
|
28258
28303
|
{
|
|
@@ -28261,15 +28306,15 @@ function WizardPreviewStep({
|
|
|
28261
28306
|
title: diffExpanded ? `Diff (${diffLines.length} lines)` : "",
|
|
28262
28307
|
focused: false,
|
|
28263
28308
|
children: [
|
|
28264
|
-
activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */
|
|
28265
|
-
/* @__PURE__ */
|
|
28309
|
+
activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */ jsx56(Text45, { color: line.color, wrap: "truncate-end", children: line.text }, line.key)),
|
|
28310
|
+
/* @__PURE__ */ jsx56(Text45, { color: PALETTE.muted, wrap: "truncate-end", children: formatPreviewScrollIndicator(activeLines.length, boundedScrollOffset, viewportHeight) })
|
|
28266
28311
|
]
|
|
28267
28312
|
}
|
|
28268
28313
|
)
|
|
28269
|
-
] }) : /* @__PURE__ */
|
|
28270
|
-
breakingWithImpact && /* @__PURE__ */
|
|
28271
|
-
/* @__PURE__ */
|
|
28272
|
-
/* @__PURE__ */
|
|
28314
|
+
] }) : /* @__PURE__ */ jsx56(Text45, { color: PALETTE.muted, children: "Nothing to push \u2014 everything is already up to date." }),
|
|
28315
|
+
breakingWithImpact && /* @__PURE__ */ jsx56(Box42, { marginTop: 1, children: /* @__PURE__ */ jsx56(Text45, { color: PALETTE.error, bold: true, children: "\u26A0 Breaking changes will affect downstream entities. Press Enter to acknowledge and apply." }) }),
|
|
28316
|
+
/* @__PURE__ */ jsx56(SpaceEnvironment, { spaceId, environmentId }),
|
|
28317
|
+
/* @__PURE__ */ jsx56(Box42, { marginTop: 1, children: /* @__PURE__ */ jsx56(
|
|
28273
28318
|
ControlHints,
|
|
28274
28319
|
{
|
|
28275
28320
|
hints: [
|
|
@@ -28295,7 +28340,7 @@ function buildRunTeaserLine(runId) {
|
|
|
28295
28340
|
}
|
|
28296
28341
|
|
|
28297
28342
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/screen.tsx
|
|
28298
|
-
import { jsx as
|
|
28343
|
+
import { jsx as jsx57, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
28299
28344
|
function canEditFromPreview(cdf) {
|
|
28300
28345
|
if (!cdf) return false;
|
|
28301
28346
|
return parseCDFComponents(cdf).components.length > 0;
|
|
@@ -28312,7 +28357,7 @@ function FlowScreen({
|
|
|
28312
28357
|
const content = (() => {
|
|
28313
28358
|
switch (state2.step) {
|
|
28314
28359
|
case "final-review":
|
|
28315
|
-
return /* @__PURE__ */
|
|
28360
|
+
return /* @__PURE__ */ jsx57(
|
|
28316
28361
|
GenerateReviewStep,
|
|
28317
28362
|
{
|
|
28318
28363
|
extractSessionId: state2.extractSessionId,
|
|
@@ -28329,10 +28374,10 @@ function FlowScreen({
|
|
|
28329
28374
|
}
|
|
28330
28375
|
);
|
|
28331
28376
|
case "previewing":
|
|
28332
|
-
return /* @__PURE__ */
|
|
28377
|
+
return /* @__PURE__ */ jsx57(RunningStep, { step: "push", description: "Computing diff against your Contentful space..." });
|
|
28333
28378
|
case "preview-gate":
|
|
28334
28379
|
if (!state2.serverPreview) return null;
|
|
28335
|
-
return /* @__PURE__ */
|
|
28380
|
+
return /* @__PURE__ */ jsx57(
|
|
28336
28381
|
WizardPreviewStep,
|
|
28337
28382
|
{
|
|
28338
28383
|
preview: state2.serverPreview,
|
|
@@ -28344,9 +28389,9 @@ function FlowScreen({
|
|
|
28344
28389
|
}
|
|
28345
28390
|
);
|
|
28346
28391
|
case "pushing":
|
|
28347
|
-
return /* @__PURE__ */
|
|
28392
|
+
return /* @__PURE__ */ jsx57(PushingStep, { progress: state2.pushProgress, produced });
|
|
28348
28393
|
case "path-prompt":
|
|
28349
|
-
return /* @__PURE__ */
|
|
28394
|
+
return /* @__PURE__ */ jsx57(
|
|
28350
28395
|
PathPrompt,
|
|
28351
28396
|
{
|
|
28352
28397
|
defaultPath: state2.outDir,
|
|
@@ -28355,10 +28400,10 @@ function FlowScreen({
|
|
|
28355
28400
|
}
|
|
28356
28401
|
);
|
|
28357
28402
|
case "printing":
|
|
28358
|
-
return /* @__PURE__ */
|
|
28403
|
+
return /* @__PURE__ */ jsx57(RunningStep, { step: "push", description: "Writing output files to disk..." });
|
|
28359
28404
|
case "print-gate": {
|
|
28360
28405
|
const teaser = buildRunTeaserLine(state2.lastRunId);
|
|
28361
|
-
return /* @__PURE__ */
|
|
28406
|
+
return /* @__PURE__ */ jsx57(
|
|
28362
28407
|
GateStep,
|
|
28363
28408
|
{
|
|
28364
28409
|
step: "push",
|
|
@@ -28373,7 +28418,7 @@ function FlowScreen({
|
|
|
28373
28418
|
}
|
|
28374
28419
|
case "done": {
|
|
28375
28420
|
const totalFailed = state2.pushResult.componentTypes.failed + state2.pushResult.designTokens.failed;
|
|
28376
|
-
return /* @__PURE__ */
|
|
28421
|
+
return /* @__PURE__ */ jsx57(
|
|
28377
28422
|
DoneStep,
|
|
28378
28423
|
{
|
|
28379
28424
|
componentTypes: state2.pushResult.componentTypes,
|
|
@@ -28390,7 +28435,7 @@ function FlowScreen({
|
|
|
28390
28435
|
);
|
|
28391
28436
|
}
|
|
28392
28437
|
case "preview-validation-error":
|
|
28393
|
-
return /* @__PURE__ */
|
|
28438
|
+
return /* @__PURE__ */ jsx57(
|
|
28394
28439
|
PreviewValidationErrorScreen,
|
|
28395
28440
|
{
|
|
28396
28441
|
errors: state2.previewValidationErrors,
|
|
@@ -28401,7 +28446,7 @@ function FlowScreen({
|
|
|
28401
28446
|
}
|
|
28402
28447
|
);
|
|
28403
28448
|
case "error":
|
|
28404
|
-
return /* @__PURE__ */
|
|
28449
|
+
return /* @__PURE__ */ jsx57(
|
|
28405
28450
|
ErrorStep,
|
|
28406
28451
|
{
|
|
28407
28452
|
stepName: state2.errorStep,
|
|
@@ -28412,8 +28457,8 @@ function FlowScreen({
|
|
|
28412
28457
|
);
|
|
28413
28458
|
}
|
|
28414
28459
|
})();
|
|
28415
|
-
return /* @__PURE__ */ jsxs44(
|
|
28416
|
-
/* @__PURE__ */
|
|
28460
|
+
return /* @__PURE__ */ jsxs44(Box43, { flexDirection: "column", children: [
|
|
28461
|
+
/* @__PURE__ */ jsx57(CustomPromptBanner, { generatePromptPath }),
|
|
28417
28462
|
content
|
|
28418
28463
|
] });
|
|
28419
28464
|
}
|
|
@@ -29186,7 +29231,7 @@ function useFlow(start, options = {}) {
|
|
|
29186
29231
|
|
|
29187
29232
|
// packages/experience-design-system-cli/src/tui/help/PageContainer.tsx
|
|
29188
29233
|
import { useEffect as useEffect22, useState as useState30 } from "react";
|
|
29189
|
-
import { Box as
|
|
29234
|
+
import { Box as Box44, Text as Text46, useInput as useInput10 } from "ink";
|
|
29190
29235
|
init_debug_store();
|
|
29191
29236
|
|
|
29192
29237
|
// packages/experience-design-system-cli/src/tui/help/help-info.ts
|
|
@@ -29247,13 +29292,13 @@ async function readHelpInfo() {
|
|
|
29247
29292
|
}
|
|
29248
29293
|
|
|
29249
29294
|
// packages/experience-design-system-cli/src/tui/help/PageContainer.tsx
|
|
29250
|
-
import { Fragment as
|
|
29295
|
+
import { Fragment as Fragment19, jsx as jsx58, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
29251
29296
|
function Section({ title, rows }) {
|
|
29252
|
-
return /* @__PURE__ */ jsxs45(
|
|
29253
|
-
/* @__PURE__ */
|
|
29254
|
-
rows.map((row) => /* @__PURE__ */ jsxs45(
|
|
29255
|
-
/* @__PURE__ */
|
|
29256
|
-
/* @__PURE__ */
|
|
29297
|
+
return /* @__PURE__ */ jsxs45(Box44, { flexDirection: "column", children: [
|
|
29298
|
+
/* @__PURE__ */ jsx58(Text46, { bold: true, color: PALETTE.accent, children: title }),
|
|
29299
|
+
rows.map((row) => /* @__PURE__ */ jsxs45(Box44, { gap: 1, children: [
|
|
29300
|
+
/* @__PURE__ */ jsx58(Box44, { width: 16, flexShrink: 0, children: /* @__PURE__ */ jsx58(Text46, { color: PALETTE.muted, children: row.label }) }),
|
|
29301
|
+
/* @__PURE__ */ jsx58(Text46, { children: row.value })
|
|
29257
29302
|
] }, row.label))
|
|
29258
29303
|
] });
|
|
29259
29304
|
}
|
|
@@ -29267,7 +29312,7 @@ function HelpScreen({ onDone }) {
|
|
|
29267
29312
|
void finishDebugRun({ outputs: {}, status: "success", exitMethod });
|
|
29268
29313
|
onDone();
|
|
29269
29314
|
};
|
|
29270
|
-
|
|
29315
|
+
useInput10((input, key) => {
|
|
29271
29316
|
if (key.return) {
|
|
29272
29317
|
leave("saved");
|
|
29273
29318
|
return;
|
|
@@ -29277,14 +29322,14 @@ function HelpScreen({ onDone }) {
|
|
|
29277
29322
|
return;
|
|
29278
29323
|
}
|
|
29279
29324
|
});
|
|
29280
|
-
return /* @__PURE__ */ jsxs45(
|
|
29281
|
-
/* @__PURE__ */
|
|
29282
|
-
info ? /* @__PURE__ */ jsxs45(
|
|
29283
|
-
/* @__PURE__ */
|
|
29284
|
-
/* @__PURE__ */
|
|
29285
|
-
/* @__PURE__ */
|
|
29286
|
-
] }) : /* @__PURE__ */
|
|
29287
|
-
/* @__PURE__ */
|
|
29325
|
+
return /* @__PURE__ */ jsxs45(Box44, { flexDirection: "column", paddingX: 2, paddingY: 1, gap: 1, children: [
|
|
29326
|
+
/* @__PURE__ */ jsx58(Text46, { bold: true, children: "Help" }),
|
|
29327
|
+
info ? /* @__PURE__ */ jsxs45(Fragment19, { children: [
|
|
29328
|
+
/* @__PURE__ */ jsx58(Section, { title: "Where things are stored", rows: info.storage }),
|
|
29329
|
+
/* @__PURE__ */ jsx58(Section, { title: "Troubleshooting", rows: info.troubleshooting }),
|
|
29330
|
+
/* @__PURE__ */ jsx58(Text46, { 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." })
|
|
29331
|
+
] }) : /* @__PURE__ */ jsx58(Text46, { color: PALETTE.accent, children: "Loading..." }),
|
|
29332
|
+
/* @__PURE__ */ jsx58(
|
|
29288
29333
|
ControlHints,
|
|
29289
29334
|
{
|
|
29290
29335
|
hints: [
|
|
@@ -29298,8 +29343,8 @@ function HelpScreen({ onDone }) {
|
|
|
29298
29343
|
|
|
29299
29344
|
// packages/experience-design-system-cli/src/tui/settings/PageContainer.tsx
|
|
29300
29345
|
import { useState as useState31 } from "react";
|
|
29301
|
-
import { Box as
|
|
29302
|
-
import { jsx as
|
|
29346
|
+
import { Box as Box45, Text as Text47, useInput as useInput11 } from "ink";
|
|
29347
|
+
import { jsx as jsx59, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
29303
29348
|
function SettingsScreen({
|
|
29304
29349
|
onNavigate,
|
|
29305
29350
|
onBack
|
|
@@ -29310,7 +29355,7 @@ function SettingsScreen({
|
|
|
29310
29355
|
{ label: "Opt-in Analytics", screen: "settings-opt-in-analytics" },
|
|
29311
29356
|
{ label: "Debug Mode", screen: "settings-debug-mode" }
|
|
29312
29357
|
];
|
|
29313
|
-
|
|
29358
|
+
useInput11((input, key) => {
|
|
29314
29359
|
if (key.upArrow) {
|
|
29315
29360
|
setFocusIdx((i) => (i - 1 + items.length) % items.length);
|
|
29316
29361
|
return;
|
|
@@ -29330,15 +29375,15 @@ function SettingsScreen({
|
|
|
29330
29375
|
onBack();
|
|
29331
29376
|
}
|
|
29332
29377
|
});
|
|
29333
|
-
return /* @__PURE__ */ jsxs46(
|
|
29334
|
-
/* @__PURE__ */
|
|
29335
|
-
/* @__PURE__ */
|
|
29378
|
+
return /* @__PURE__ */ jsxs46(Box45, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
29379
|
+
/* @__PURE__ */ jsx59(Text47, { bold: true, children: "Settings" }),
|
|
29380
|
+
/* @__PURE__ */ jsx59(Text47, { color: PALETTE.muted, children: " " }),
|
|
29336
29381
|
items.map((item, i) => /* @__PURE__ */ jsxs46(Text47, { color: i === focusIdx ? PALETTE.accent : void 0, children: [
|
|
29337
29382
|
i === focusIdx ? "> " : " ",
|
|
29338
29383
|
item.label
|
|
29339
29384
|
] }, item.label)),
|
|
29340
|
-
/* @__PURE__ */
|
|
29341
|
-
/* @__PURE__ */
|
|
29385
|
+
/* @__PURE__ */ jsx59(Text47, { children: " " }),
|
|
29386
|
+
/* @__PURE__ */ jsx59(
|
|
29342
29387
|
ControlHints,
|
|
29343
29388
|
{
|
|
29344
29389
|
hints: [
|
|
@@ -29353,11 +29398,11 @@ function SettingsScreen({
|
|
|
29353
29398
|
|
|
29354
29399
|
// packages/experience-design-system-cli/src/tui/settings/configuration/ConfigurationScreen.tsx
|
|
29355
29400
|
import { useState as useState35 } from "react";
|
|
29356
|
-
import { Box as
|
|
29401
|
+
import { Box as Box49, Text as Text52, useInput as useInput14 } from "ink";
|
|
29357
29402
|
|
|
29358
29403
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentsScreen.tsx
|
|
29359
29404
|
import { useEffect as useEffect24, useRef as useRef15, useState as useState33 } from "react";
|
|
29360
|
-
import { Box as
|
|
29405
|
+
import { Box as Box47, Text as Text50, useInput as useInput12 } from "ink";
|
|
29361
29406
|
init_debug_store();
|
|
29362
29407
|
|
|
29363
29408
|
// packages/experience-design-system-cli/src/tui/settings/shared/debug-trail.ts
|
|
@@ -29686,11 +29731,11 @@ async function writeAgentConfig(config) {
|
|
|
29686
29731
|
|
|
29687
29732
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentDetail.tsx
|
|
29688
29733
|
import { useEffect as useEffect23, useState as useState32 } from "react";
|
|
29689
|
-
import { Box as
|
|
29734
|
+
import { Box as Box46, Text as Text49 } from "ink";
|
|
29690
29735
|
|
|
29691
29736
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentStatusBadge.tsx
|
|
29692
29737
|
import { Text as Text48 } from "ink";
|
|
29693
|
-
import { jsx as
|
|
29738
|
+
import { jsx as jsx60 } from "react/jsx-runtime";
|
|
29694
29739
|
var TONE_COLOR = {
|
|
29695
29740
|
ok: PALETTE.success,
|
|
29696
29741
|
bad: PALETTE.error,
|
|
@@ -29702,7 +29747,7 @@ function AgentStatusBadge({
|
|
|
29702
29747
|
binary
|
|
29703
29748
|
}) {
|
|
29704
29749
|
const { symbol, text, tone } = LIST_STATUS[checks ? statusFromChecks(name, checks, binary) : "checking"];
|
|
29705
|
-
return /* @__PURE__ */
|
|
29750
|
+
return /* @__PURE__ */ jsx60(Text48, { color: TONE_COLOR[tone], children: `${symbol} ${text}` });
|
|
29706
29751
|
}
|
|
29707
29752
|
|
|
29708
29753
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/apply-binary-overrides.ts
|
|
@@ -29724,16 +29769,16 @@ function applyBinaryOverrides(config) {
|
|
|
29724
29769
|
}
|
|
29725
29770
|
|
|
29726
29771
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentDetail.tsx
|
|
29727
|
-
import { jsx as
|
|
29772
|
+
import { jsx as jsx61, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
29728
29773
|
var fields = (name) => [
|
|
29729
29774
|
{ key: "binary", label: "Command path", hint: `(empty: \`${AGENT_BINARIES[name]}\` from the PATH)` },
|
|
29730
29775
|
{ key: "model", label: "Model", hint: `(empty: ${defaultModelLabel(name)})` }
|
|
29731
29776
|
];
|
|
29732
29777
|
var INSPECT_DELAY_MS = 400;
|
|
29733
29778
|
function StatusHeading() {
|
|
29734
|
-
return /* @__PURE__ */ jsxs47(
|
|
29735
|
-
/* @__PURE__ */
|
|
29736
|
-
/* @__PURE__ */
|
|
29779
|
+
return /* @__PURE__ */ jsxs47(Box46, { gap: 1, children: [
|
|
29780
|
+
/* @__PURE__ */ jsx61(Text49, { bold: true, color: PALETTE.muted, children: "STATUS" }),
|
|
29781
|
+
/* @__PURE__ */ jsx61(Text49, { color: PALETTE.muted, children: "\xB7 read only" })
|
|
29737
29782
|
] });
|
|
29738
29783
|
}
|
|
29739
29784
|
function AgentDetail({
|
|
@@ -29796,7 +29841,7 @@ function AgentDetail({
|
|
|
29796
29841
|
};
|
|
29797
29842
|
const formFields = fields(name);
|
|
29798
29843
|
const labelWidth = formLabelWidth([...formFields, action]);
|
|
29799
|
-
return /* @__PURE__ */
|
|
29844
|
+
return /* @__PURE__ */ jsx61(
|
|
29800
29845
|
FieldForm,
|
|
29801
29846
|
{
|
|
29802
29847
|
title: `Settings \u203A Configuration \u203A Agents \u203A ${AGENT_LABELS[name]}`,
|
|
@@ -29813,16 +29858,16 @@ function AgentDetail({
|
|
|
29813
29858
|
actions: [action],
|
|
29814
29859
|
notice: testing ? null : notice,
|
|
29815
29860
|
busy: saving || testing,
|
|
29816
|
-
children: /* @__PURE__ */ jsxs47(
|
|
29817
|
-
/* @__PURE__ */
|
|
29818
|
-
statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */
|
|
29861
|
+
children: /* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", marginTop: 1, children: [
|
|
29862
|
+
/* @__PURE__ */ jsx61(StatusHeading, {}),
|
|
29863
|
+
statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */ jsx61(FormReadOnlyRow, { label: row.label, labelWidth, children: /* @__PURE__ */ jsx61(Text49, { color: TONE_COLOR[row.tone], children: row.value }) }, row.label))
|
|
29819
29864
|
] })
|
|
29820
29865
|
}
|
|
29821
29866
|
);
|
|
29822
29867
|
}
|
|
29823
29868
|
|
|
29824
29869
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentsScreen.tsx
|
|
29825
|
-
import { Fragment as
|
|
29870
|
+
import { Fragment as Fragment20, jsx as jsx62, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
29826
29871
|
var NAME_WIDTH = 16;
|
|
29827
29872
|
var PANEL_LABEL_WIDTH = "Command".length;
|
|
29828
29873
|
function AgentsScreen({ onDone }) {
|
|
@@ -29900,7 +29945,7 @@ function AgentsScreen({ onDone }) {
|
|
|
29900
29945
|
setNotice({ kind: "error", text: `Default agent not changed: ${visit.error}` });
|
|
29901
29946
|
}).finally(() => setSaving(false));
|
|
29902
29947
|
};
|
|
29903
|
-
|
|
29948
|
+
useInput12((input, key) => {
|
|
29904
29949
|
if (loadError && (key.escape || input === "q")) {
|
|
29905
29950
|
endVisit(null);
|
|
29906
29951
|
onDone();
|
|
@@ -29932,21 +29977,21 @@ function AgentsScreen({ onDone }) {
|
|
|
29932
29977
|
}
|
|
29933
29978
|
});
|
|
29934
29979
|
if (!config) {
|
|
29935
|
-
return /* @__PURE__ */ jsxs48(
|
|
29936
|
-
/* @__PURE__ */
|
|
29937
|
-
/* @__PURE__ */
|
|
29938
|
-
loadError ? /* @__PURE__ */ jsxs48(
|
|
29980
|
+
return /* @__PURE__ */ jsxs48(Box47, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
29981
|
+
/* @__PURE__ */ jsx62(Text50, { bold: true, children: "Settings \u203A Configuration \u203A Agents" }),
|
|
29982
|
+
/* @__PURE__ */ jsx62(Text50, { children: " " }),
|
|
29983
|
+
loadError ? /* @__PURE__ */ jsxs48(Fragment20, { children: [
|
|
29939
29984
|
/* @__PURE__ */ jsxs48(Text50, { color: PALETTE.error, children: [
|
|
29940
29985
|
"\u2717 Could not read the settings: ",
|
|
29941
29986
|
loadError
|
|
29942
29987
|
] }),
|
|
29943
|
-
/* @__PURE__ */
|
|
29944
|
-
/* @__PURE__ */
|
|
29945
|
-
] }) : /* @__PURE__ */
|
|
29988
|
+
/* @__PURE__ */ jsx62(Text50, { children: " " }),
|
|
29989
|
+
/* @__PURE__ */ jsx62(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
|
|
29990
|
+
] }) : /* @__PURE__ */ jsx62(Text50, { color: PALETTE.accent, children: "Loading..." })
|
|
29946
29991
|
] });
|
|
29947
29992
|
}
|
|
29948
29993
|
if (open) {
|
|
29949
|
-
return /* @__PURE__ */
|
|
29994
|
+
return /* @__PURE__ */ jsx62(
|
|
29950
29995
|
AgentDetail,
|
|
29951
29996
|
{
|
|
29952
29997
|
name: open,
|
|
@@ -29967,48 +30012,48 @@ function AgentsScreen({ onDone }) {
|
|
|
29967
30012
|
);
|
|
29968
30013
|
}
|
|
29969
30014
|
const focusedAgent = AGENT_NAMES[focus];
|
|
29970
|
-
return /* @__PURE__ */ jsxs48(
|
|
29971
|
-
/* @__PURE__ */
|
|
29972
|
-
/* @__PURE__ */
|
|
29973
|
-
/* @__PURE__ */
|
|
29974
|
-
/* @__PURE__ */
|
|
29975
|
-
/* @__PURE__ */ jsxs48(
|
|
29976
|
-
/* @__PURE__ */
|
|
29977
|
-
/* @__PURE__ */
|
|
29978
|
-
saving && /* @__PURE__ */
|
|
30015
|
+
return /* @__PURE__ */ jsxs48(Box47, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
30016
|
+
/* @__PURE__ */ jsx62(Text50, { bold: true, children: "Settings \u203A Configuration \u203A Agents" }),
|
|
30017
|
+
/* @__PURE__ */ jsx62(Text50, { children: " " }),
|
|
30018
|
+
/* @__PURE__ */ jsx62(Text50, { color: PALETTE.muted, children: "The coding agent the CLI runs, and what was found for each one." }),
|
|
30019
|
+
/* @__PURE__ */ jsx62(Text50, { children: " " }),
|
|
30020
|
+
/* @__PURE__ */ jsxs48(Box47, { gap: 1, children: [
|
|
30021
|
+
/* @__PURE__ */ jsx62(Text50, { color: PALETTE.muted, children: "Default agent" }),
|
|
30022
|
+
/* @__PURE__ */ jsx62(Text50, { bold: true, children: AGENT_LABELS[config.defaultAgent] }),
|
|
30023
|
+
saving && /* @__PURE__ */ jsx62(Text50, { color: PALETTE.accent, children: "\u2026 saving" })
|
|
29979
30024
|
] }),
|
|
29980
|
-
/* @__PURE__ */ jsxs48(
|
|
29981
|
-
/* @__PURE__ */
|
|
29982
|
-
/* @__PURE__ */
|
|
29983
|
-
/* @__PURE__ */
|
|
29984
|
-
/* @__PURE__ */
|
|
30025
|
+
/* @__PURE__ */ jsxs48(Box47, { marginTop: 1, gap: 1, children: [
|
|
30026
|
+
/* @__PURE__ */ jsx62(Text50, { children: " " }),
|
|
30027
|
+
/* @__PURE__ */ jsx62(Text50, { children: " " }),
|
|
30028
|
+
/* @__PURE__ */ jsx62(Box47, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text50, { color: PALETTE.muted, children: "AGENT" }) }),
|
|
30029
|
+
/* @__PURE__ */ jsx62(Text50, { color: PALETTE.muted, children: "STATUS" })
|
|
29985
30030
|
] }),
|
|
29986
30031
|
AGENT_NAMES.map((name) => {
|
|
29987
30032
|
const isFocused = focusedAgent === name;
|
|
29988
|
-
return /* @__PURE__ */ jsxs48(
|
|
29989
|
-
/* @__PURE__ */
|
|
29990
|
-
/* @__PURE__ */
|
|
29991
|
-
/* @__PURE__ */
|
|
29992
|
-
/* @__PURE__ */
|
|
30033
|
+
return /* @__PURE__ */ jsxs48(Box47, { gap: 1, children: [
|
|
30034
|
+
/* @__PURE__ */ jsx62(Text50, { color: isFocused ? PALETTE.accent : void 0, children: isFocused ? "\u276F" : " " }),
|
|
30035
|
+
/* @__PURE__ */ jsx62(Text50, { color: PALETTE.success, children: name === config.defaultAgent ? "\u2605" : " " }),
|
|
30036
|
+
/* @__PURE__ */ jsx62(Box47, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text50, { bold: isFocused, color: isFocused ? PALETTE.accent : void 0, children: AGENT_LABELS[name] }) }),
|
|
30037
|
+
/* @__PURE__ */ jsx62(AgentStatusBadge, { name, checks: checks[name], binary: config.agents[name].binary })
|
|
29993
30038
|
] }, name);
|
|
29994
30039
|
}),
|
|
29995
|
-
/* @__PURE__ */ jsxs48(
|
|
29996
|
-
/* @__PURE__ */
|
|
29997
|
-
panelRows(focusedAgent, checks[focusedAgent], config.agents[focusedAgent]).map((row) => /* @__PURE__ */ jsxs48(
|
|
29998
|
-
/* @__PURE__ */
|
|
29999
|
-
/* @__PURE__ */
|
|
30040
|
+
/* @__PURE__ */ jsxs48(Box47, { flexDirection: "column", marginTop: 1, children: [
|
|
30041
|
+
/* @__PURE__ */ jsx62(Text50, { color: PALETTE.muted, children: `\u2500 ${AGENT_LABELS[focusedAgent]} ${"\u2500".repeat(30)}` }),
|
|
30042
|
+
panelRows(focusedAgent, checks[focusedAgent], config.agents[focusedAgent]).map((row) => /* @__PURE__ */ jsxs48(Box47, { gap: 1, paddingLeft: 1, children: [
|
|
30043
|
+
/* @__PURE__ */ jsx62(Box47, { width: PANEL_LABEL_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text50, { color: PALETTE.muted, children: row.label }) }),
|
|
30044
|
+
/* @__PURE__ */ jsx62(Text50, { color: TONE_COLOR[row.tone], children: row.value })
|
|
30000
30045
|
] }, row.label))
|
|
30001
30046
|
] }),
|
|
30002
|
-
notice && /* @__PURE__ */ jsxs48(
|
|
30003
|
-
/* @__PURE__ */
|
|
30047
|
+
notice && /* @__PURE__ */ jsxs48(Fragment20, { children: [
|
|
30048
|
+
/* @__PURE__ */ jsx62(Text50, { children: " " }),
|
|
30004
30049
|
/* @__PURE__ */ jsxs48(Text50, { bold: true, color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
30005
30050
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
30006
30051
|
" ",
|
|
30007
30052
|
notice.text
|
|
30008
30053
|
] })
|
|
30009
30054
|
] }),
|
|
30010
|
-
/* @__PURE__ */
|
|
30011
|
-
/* @__PURE__ */
|
|
30055
|
+
/* @__PURE__ */ jsx62(Text50, { children: " " }),
|
|
30056
|
+
/* @__PURE__ */ jsx62(
|
|
30012
30057
|
ControlHints,
|
|
30013
30058
|
{
|
|
30014
30059
|
hints: [
|
|
@@ -30024,7 +30069,7 @@ function AgentsScreen({ onDone }) {
|
|
|
30024
30069
|
|
|
30025
30070
|
// packages/experience-design-system-cli/src/tui/settings/configuration/project/ProjectScreen.tsx
|
|
30026
30071
|
import { useEffect as useEffect25, useRef as useRef16, useState as useState34 } from "react";
|
|
30027
|
-
import { Box as
|
|
30072
|
+
import { Box as Box48, Text as Text51, useInput as useInput13 } from "ink";
|
|
30028
30073
|
init_debug_store();
|
|
30029
30074
|
|
|
30030
30075
|
// packages/experience-design-system-cli/src/tui/settings/configuration/project/project-store.ts
|
|
@@ -30053,7 +30098,7 @@ async function writeCredentials(config) {
|
|
|
30053
30098
|
}
|
|
30054
30099
|
|
|
30055
30100
|
// packages/experience-design-system-cli/src/tui/settings/configuration/project/ProjectScreen.tsx
|
|
30056
|
-
import { Fragment as
|
|
30101
|
+
import { Fragment as Fragment21, jsx as jsx63, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
30057
30102
|
var FIELDS3 = [
|
|
30058
30103
|
{ key: "spaceId", label: "Space ID" },
|
|
30059
30104
|
{ key: "environmentId", label: "Environment ID" },
|
|
@@ -30126,24 +30171,24 @@ function ProjectScreen({ onDone }) {
|
|
|
30126
30171
|
exitMethod: change.changed ? "saved" : "discarded"
|
|
30127
30172
|
});
|
|
30128
30173
|
};
|
|
30129
|
-
|
|
30174
|
+
useInput13((input, key) => {
|
|
30130
30175
|
if (!config && loadError && (key.escape || input === "q")) {
|
|
30131
30176
|
endVisit(null);
|
|
30132
30177
|
onDone();
|
|
30133
30178
|
}
|
|
30134
30179
|
});
|
|
30135
30180
|
if (!config) {
|
|
30136
|
-
return /* @__PURE__ */ jsxs49(
|
|
30137
|
-
/* @__PURE__ */
|
|
30138
|
-
/* @__PURE__ */
|
|
30139
|
-
loadError ? /* @__PURE__ */ jsxs49(
|
|
30181
|
+
return /* @__PURE__ */ jsxs49(Box48, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
30182
|
+
/* @__PURE__ */ jsx63(Text51, { bold: true, children: "Settings \u203A Configuration \u203A Project" }),
|
|
30183
|
+
/* @__PURE__ */ jsx63(Text51, { children: " " }),
|
|
30184
|
+
loadError ? /* @__PURE__ */ jsxs49(Fragment21, { children: [
|
|
30140
30185
|
/* @__PURE__ */ jsxs49(Text51, { color: PALETTE.error, children: [
|
|
30141
30186
|
"\u2717 Could not read the settings: ",
|
|
30142
30187
|
loadError
|
|
30143
30188
|
] }),
|
|
30144
|
-
/* @__PURE__ */
|
|
30145
|
-
/* @__PURE__ */
|
|
30146
|
-
] }) : /* @__PURE__ */
|
|
30189
|
+
/* @__PURE__ */ jsx63(Text51, { children: " " }),
|
|
30190
|
+
/* @__PURE__ */ jsx63(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
|
|
30191
|
+
] }) : /* @__PURE__ */ jsx63(Text51, { color: PALETTE.accent, children: "Loading..." })
|
|
30147
30192
|
] });
|
|
30148
30193
|
}
|
|
30149
30194
|
const save = () => {
|
|
@@ -30164,7 +30209,7 @@ function ProjectScreen({ onDone }) {
|
|
|
30164
30209
|
endVisit(config);
|
|
30165
30210
|
onDone();
|
|
30166
30211
|
};
|
|
30167
|
-
return /* @__PURE__ */
|
|
30212
|
+
return /* @__PURE__ */ jsx63(
|
|
30168
30213
|
FieldForm,
|
|
30169
30214
|
{
|
|
30170
30215
|
title: "Settings \u203A Configuration \u203A Project",
|
|
@@ -30186,7 +30231,7 @@ function ProjectScreen({ onDone }) {
|
|
|
30186
30231
|
}
|
|
30187
30232
|
|
|
30188
30233
|
// packages/experience-design-system-cli/src/tui/settings/configuration/ConfigurationScreen.tsx
|
|
30189
|
-
import { jsx as
|
|
30234
|
+
import { jsx as jsx64, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
30190
30235
|
var SECTIONS = [
|
|
30191
30236
|
{
|
|
30192
30237
|
id: "project",
|
|
@@ -30199,7 +30244,7 @@ function ConfigurationScreen({ onDone }) {
|
|
|
30199
30244
|
const [focus, setFocus] = useState35(0);
|
|
30200
30245
|
const [open, setOpen] = useState35(null);
|
|
30201
30246
|
const close = () => setOpen(null);
|
|
30202
|
-
|
|
30247
|
+
useInput14((input, key) => {
|
|
30203
30248
|
if (open) return;
|
|
30204
30249
|
if (key.upArrow) {
|
|
30205
30250
|
setFocus((i) => (i - 1 + SECTIONS.length) % SECTIONS.length);
|
|
@@ -30215,18 +30260,18 @@ function ConfigurationScreen({ onDone }) {
|
|
|
30215
30260
|
}
|
|
30216
30261
|
if (key.escape || input === "q") onDone();
|
|
30217
30262
|
});
|
|
30218
|
-
if (open === "project") return /* @__PURE__ */
|
|
30219
|
-
if (open === "agents") return /* @__PURE__ */
|
|
30220
|
-
return /* @__PURE__ */ jsxs50(
|
|
30221
|
-
/* @__PURE__ */
|
|
30222
|
-
/* @__PURE__ */
|
|
30223
|
-
SECTIONS.map((section, index) => /* @__PURE__ */ jsxs50(
|
|
30224
|
-
/* @__PURE__ */
|
|
30225
|
-
/* @__PURE__ */
|
|
30226
|
-
/* @__PURE__ */
|
|
30263
|
+
if (open === "project") return /* @__PURE__ */ jsx64(ProjectScreen, { onDone: close });
|
|
30264
|
+
if (open === "agents") return /* @__PURE__ */ jsx64(AgentsScreen, { onDone: close });
|
|
30265
|
+
return /* @__PURE__ */ jsxs50(Box49, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
30266
|
+
/* @__PURE__ */ jsx64(Text52, { bold: true, children: "Settings \u203A Configuration" }),
|
|
30267
|
+
/* @__PURE__ */ jsx64(Text52, { children: " " }),
|
|
30268
|
+
SECTIONS.map((section, index) => /* @__PURE__ */ jsxs50(Box49, { gap: 1, children: [
|
|
30269
|
+
/* @__PURE__ */ jsx64(Text52, { color: index === focus ? PALETTE.accent : void 0, children: index === focus ? "\u276F" : " " }),
|
|
30270
|
+
/* @__PURE__ */ jsx64(Box49, { width: 9, flexShrink: 0, children: /* @__PURE__ */ jsx64(Text52, { bold: index === focus, color: index === focus ? PALETTE.accent : void 0, children: section.label }) }),
|
|
30271
|
+
/* @__PURE__ */ jsx64(Text52, { color: PALETTE.muted, children: section.description })
|
|
30227
30272
|
] }, section.id)),
|
|
30228
|
-
/* @__PURE__ */
|
|
30229
|
-
/* @__PURE__ */
|
|
30273
|
+
/* @__PURE__ */ jsx64(Text52, { children: " " }),
|
|
30274
|
+
/* @__PURE__ */ jsx64(
|
|
30230
30275
|
ControlHints,
|
|
30231
30276
|
{
|
|
30232
30277
|
hints: [
|
|
@@ -30241,7 +30286,7 @@ function ConfigurationScreen({ onDone }) {
|
|
|
30241
30286
|
|
|
30242
30287
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx
|
|
30243
30288
|
import { useEffect as useEffect26, useState as useState36 } from "react";
|
|
30244
|
-
import { Box as
|
|
30289
|
+
import { Box as Box50, Text as Text53, useInput as useInput15 } from "ink";
|
|
30245
30290
|
|
|
30246
30291
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/analytics-store.ts
|
|
30247
30292
|
async function readAnalyticsSetting() {
|
|
@@ -30260,7 +30305,7 @@ async function writeAnalyticsSetting(setting) {
|
|
|
30260
30305
|
|
|
30261
30306
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx
|
|
30262
30307
|
init_debug_store();
|
|
30263
|
-
import { Fragment as
|
|
30308
|
+
import { Fragment as Fragment22, jsx as jsx65, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
30264
30309
|
function OptInAnalyticsScreen({ onDone }) {
|
|
30265
30310
|
const [loading, setLoading] = useState36(true);
|
|
30266
30311
|
const [enabled, setEnabled] = useState36(true);
|
|
@@ -30276,7 +30321,7 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
30276
30321
|
});
|
|
30277
30322
|
});
|
|
30278
30323
|
}, []);
|
|
30279
|
-
|
|
30324
|
+
useInput15((input, key) => {
|
|
30280
30325
|
if (loading) return;
|
|
30281
30326
|
if (key.return || input === " ") {
|
|
30282
30327
|
setEnabled((current) => {
|
|
@@ -30291,21 +30336,21 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
30291
30336
|
onDone();
|
|
30292
30337
|
}
|
|
30293
30338
|
});
|
|
30294
|
-
return /* @__PURE__ */ jsxs51(
|
|
30295
|
-
/* @__PURE__ */
|
|
30296
|
-
/* @__PURE__ */
|
|
30297
|
-
loading ? /* @__PURE__ */
|
|
30339
|
+
return /* @__PURE__ */ jsxs51(Box50, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
30340
|
+
/* @__PURE__ */ jsx65(Text53, { bold: true, children: "Settings \u203A Opt-in Analytics" }),
|
|
30341
|
+
/* @__PURE__ */ jsx65(Text53, { children: " " }),
|
|
30342
|
+
loading ? /* @__PURE__ */ jsx65(Text53, { color: PALETTE.muted, children: "Loading\u2026" }) : /* @__PURE__ */ jsxs51(Fragment22, { children: [
|
|
30298
30343
|
/* @__PURE__ */ jsxs51(Text53, { children: [
|
|
30299
30344
|
"Share anonymous usage data:",
|
|
30300
30345
|
" ",
|
|
30301
|
-
/* @__PURE__ */
|
|
30346
|
+
/* @__PURE__ */ jsx65(Text53, { bold: true, color: enabled ? PALETTE.success : PALETTE.muted, children: enabled ? "On" : "Off" })
|
|
30302
30347
|
] }),
|
|
30303
|
-
/* @__PURE__ */
|
|
30304
|
-
/* @__PURE__ */
|
|
30305
|
-
/* @__PURE__ */
|
|
30348
|
+
/* @__PURE__ */ jsx65(Text53, { children: " " }),
|
|
30349
|
+
/* @__PURE__ */ jsx65(Text53, { color: PALETTE.muted, children: "Shares which CLI commands are used and where imports succeed or fail." }),
|
|
30350
|
+
/* @__PURE__ */ jsx65(Text53, { color: PALETTE.muted, children: "Never includes source code, file paths, credentials, or authored content." })
|
|
30306
30351
|
] }),
|
|
30307
|
-
/* @__PURE__ */
|
|
30308
|
-
/* @__PURE__ */
|
|
30352
|
+
/* @__PURE__ */ jsx65(Text53, { children: " " }),
|
|
30353
|
+
/* @__PURE__ */ jsx65(
|
|
30309
30354
|
ControlHints,
|
|
30310
30355
|
{
|
|
30311
30356
|
hints: [
|
|
@@ -30319,10 +30364,10 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
30319
30364
|
|
|
30320
30365
|
// packages/experience-design-system-cli/src/tui/settings/debug-mode/screen.tsx
|
|
30321
30366
|
import { useEffect as useEffect27, useRef as useRef17, useState as useState37 } from "react";
|
|
30322
|
-
import { Box as
|
|
30367
|
+
import { Box as Box51, Text as Text54, useInput as useInput16 } from "ink";
|
|
30323
30368
|
init_debug_mode_store();
|
|
30324
30369
|
init_debug_store();
|
|
30325
|
-
import { Fragment as
|
|
30370
|
+
import { Fragment as Fragment23, jsx as jsx66, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
30326
30371
|
var ROWS = ["enabled", "retentionDays"];
|
|
30327
30372
|
var snapshotOf2 = (setting) => ({
|
|
30328
30373
|
enabled: String(setting.enabled),
|
|
@@ -30376,7 +30421,7 @@ function DebugModeScreen({ onDone }) {
|
|
|
30376
30421
|
exitMethod: change.changed ? "saved" : "discarded"
|
|
30377
30422
|
});
|
|
30378
30423
|
};
|
|
30379
|
-
|
|
30424
|
+
useInput16((input, key) => {
|
|
30380
30425
|
if (!setting) return;
|
|
30381
30426
|
if (key.upArrow || key.downArrow) {
|
|
30382
30427
|
setFocus((current) => ROWS[(ROWS.indexOf(current) + (key.downArrow ? 1 : ROWS.length - 1)) % ROWS.length]);
|
|
@@ -30403,24 +30448,24 @@ function DebugModeScreen({ onDone }) {
|
|
|
30403
30448
|
onDone();
|
|
30404
30449
|
}
|
|
30405
30450
|
});
|
|
30406
|
-
const marker = (row) => /* @__PURE__ */
|
|
30407
|
-
const label = (row, text) => /* @__PURE__ */
|
|
30408
|
-
return /* @__PURE__ */ jsxs52(
|
|
30409
|
-
/* @__PURE__ */
|
|
30410
|
-
/* @__PURE__ */
|
|
30411
|
-
setting ? /* @__PURE__ */ jsxs52(
|
|
30412
|
-
/* @__PURE__ */ jsxs52(
|
|
30451
|
+
const marker = (row) => /* @__PURE__ */ jsx66(Text54, { color: focus === row ? PALETTE.accent : void 0, children: focus === row ? "\u276F" : " " });
|
|
30452
|
+
const label = (row, text) => /* @__PURE__ */ jsx66(Text54, { bold: focus === row, color: focus === row ? PALETTE.accent : PALETTE.muted, children: text });
|
|
30453
|
+
return /* @__PURE__ */ jsxs52(Box51, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
30454
|
+
/* @__PURE__ */ jsx66(Text54, { bold: true, children: "Settings \u203A Debug Mode" }),
|
|
30455
|
+
/* @__PURE__ */ jsx66(Text54, { children: " " }),
|
|
30456
|
+
setting ? /* @__PURE__ */ jsxs52(Fragment23, { children: [
|
|
30457
|
+
/* @__PURE__ */ jsxs52(Box51, { gap: 1, children: [
|
|
30413
30458
|
marker("enabled"),
|
|
30414
30459
|
label("enabled", "Debug logging:"),
|
|
30415
|
-
/* @__PURE__ */
|
|
30460
|
+
/* @__PURE__ */ jsx66(Text54, { bold: true, color: setting.enabled ? PALETTE.success : PALETTE.muted, children: setting.enabled ? "On" : "Off" })
|
|
30416
30461
|
] }),
|
|
30417
|
-
/* @__PURE__ */ jsxs52(
|
|
30462
|
+
/* @__PURE__ */ jsxs52(Box51, { gap: 1, children: [
|
|
30418
30463
|
marker("retentionDays"),
|
|
30419
30464
|
label("retentionDays", "Delete logs after:"),
|
|
30420
30465
|
RETENTION_CHOICES.map((days) => {
|
|
30421
30466
|
const highlighted = focus === "retentionDays" && days === pending;
|
|
30422
30467
|
const saved = days === setting.retentionDays;
|
|
30423
|
-
return /* @__PURE__ */
|
|
30468
|
+
return /* @__PURE__ */ jsx66(
|
|
30424
30469
|
Text54,
|
|
30425
30470
|
{
|
|
30426
30471
|
bold: highlighted || saved,
|
|
@@ -30432,15 +30477,15 @@ function DebugModeScreen({ onDone }) {
|
|
|
30432
30477
|
);
|
|
30433
30478
|
})
|
|
30434
30479
|
] }),
|
|
30435
|
-
/* @__PURE__ */
|
|
30480
|
+
/* @__PURE__ */ jsx66(Text54, { children: " " }),
|
|
30436
30481
|
notice ? /* @__PURE__ */ jsxs52(Text54, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
30437
30482
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
30438
30483
|
" ",
|
|
30439
30484
|
notice.text
|
|
30440
|
-
] }) : /* @__PURE__ */
|
|
30441
|
-
] }) : /* @__PURE__ */
|
|
30442
|
-
/* @__PURE__ */
|
|
30443
|
-
/* @__PURE__ */
|
|
30485
|
+
] }) : /* @__PURE__ */ jsx66(Text54, { color: PALETTE.muted, children: "\u2713 marks what is saved. Older logs are deleted the next time the CLI starts." })
|
|
30486
|
+
] }) : /* @__PURE__ */ jsx66(Text54, { color: PALETTE.muted, children: "Loading\u2026" }),
|
|
30487
|
+
/* @__PURE__ */ jsx66(Text54, { children: " " }),
|
|
30488
|
+
/* @__PURE__ */ jsx66(
|
|
30444
30489
|
ControlHints,
|
|
30445
30490
|
{
|
|
30446
30491
|
hints: [
|
|
@@ -30457,7 +30502,7 @@ function DebugModeScreen({ onDone }) {
|
|
|
30457
30502
|
}
|
|
30458
30503
|
|
|
30459
30504
|
// packages/experience-design-system-cli/app.tsx
|
|
30460
|
-
import { Fragment as
|
|
30505
|
+
import { Fragment as Fragment24, jsx as jsx67 } from "react/jsx-runtime";
|
|
30461
30506
|
function App({ importOptions, inkClear }) {
|
|
30462
30507
|
const [screen, setScreen] = useState38("start");
|
|
30463
30508
|
const [importExitCode, setImportExitCode] = useState38();
|
|
@@ -30648,9 +30693,9 @@ function App({ importOptions, inkClear }) {
|
|
|
30648
30693
|
};
|
|
30649
30694
|
switch (screen) {
|
|
30650
30695
|
case "import":
|
|
30651
|
-
if (showImportResult) return /* @__PURE__ */
|
|
30696
|
+
if (showImportResult) return /* @__PURE__ */ jsx67(ImportScreen, { exitCode: importExitCode, onDone: finishImportResult });
|
|
30652
30697
|
if (flow && flowStart) {
|
|
30653
|
-
return /* @__PURE__ */
|
|
30698
|
+
return /* @__PURE__ */ jsx67(
|
|
30654
30699
|
FlowScreen,
|
|
30655
30700
|
{
|
|
30656
30701
|
state: flow.state,
|
|
@@ -30660,15 +30705,15 @@ function App({ importOptions, inkClear }) {
|
|
|
30660
30705
|
}
|
|
30661
30706
|
);
|
|
30662
30707
|
}
|
|
30663
|
-
if (importDefaults === void 0) return /* @__PURE__ */
|
|
30708
|
+
if (importDefaults === void 0) return /* @__PURE__ */ jsx67(Fragment24, {});
|
|
30664
30709
|
if (target === void 0) {
|
|
30665
|
-
return /* @__PURE__ */
|
|
30710
|
+
return /* @__PURE__ */ jsx67(PreflightScreen, { onChoose: setTarget, onQuit: leaveImport });
|
|
30666
30711
|
}
|
|
30667
30712
|
const inputStep = currentInputStep(target, answers);
|
|
30668
30713
|
if (!extractionRun && !tokensOnlyRun && inputStep !== "credentials") {
|
|
30669
30714
|
switch (inputStep) {
|
|
30670
30715
|
case "project":
|
|
30671
|
-
return /* @__PURE__ */
|
|
30716
|
+
return /* @__PURE__ */ jsx67(
|
|
30672
30717
|
WelcomeScreen,
|
|
30673
30718
|
{
|
|
30674
30719
|
onContinue: (projectPath) => answer({ projectPath }),
|
|
@@ -30677,7 +30722,7 @@ function App({ importOptions, inkClear }) {
|
|
|
30677
30722
|
}
|
|
30678
30723
|
);
|
|
30679
30724
|
case "token-file":
|
|
30680
|
-
return /* @__PURE__ */
|
|
30725
|
+
return /* @__PURE__ */ jsx67(
|
|
30681
30726
|
TokenInputScreen,
|
|
30682
30727
|
{
|
|
30683
30728
|
initialPath: importDefaults.tokenFile,
|
|
@@ -30686,7 +30731,7 @@ function App({ importOptions, inkClear }) {
|
|
|
30686
30731
|
}
|
|
30687
30732
|
);
|
|
30688
30733
|
case "path-validation":
|
|
30689
|
-
return /* @__PURE__ */
|
|
30734
|
+
return /* @__PURE__ */ jsx67(
|
|
30690
30735
|
PathValidationScreen,
|
|
30691
30736
|
{
|
|
30692
30737
|
projectPath: answers.projectPath ?? "",
|
|
@@ -30700,9 +30745,9 @@ function App({ importOptions, inkClear }) {
|
|
|
30700
30745
|
}
|
|
30701
30746
|
if (tokensOnlyRun) {
|
|
30702
30747
|
if (tokensOnly?.status === "done" && !tokensOnly.result.ok) {
|
|
30703
|
-
return /* @__PURE__ */
|
|
30748
|
+
return /* @__PURE__ */ jsx67(ErrorStep, { stepName: tokensOnly.result.step, message: tokensOnly.result.message, onExit: leaveImport });
|
|
30704
30749
|
}
|
|
30705
|
-
return /* @__PURE__ */
|
|
30750
|
+
return /* @__PURE__ */ jsx67(
|
|
30706
30751
|
RunningStep,
|
|
30707
30752
|
{
|
|
30708
30753
|
step: "generation",
|
|
@@ -30713,19 +30758,19 @@ function App({ importOptions, inkClear }) {
|
|
|
30713
30758
|
}
|
|
30714
30759
|
if (extractionRun) {
|
|
30715
30760
|
if (extraction?.status === "done" && !extraction.result.ok) {
|
|
30716
|
-
return /* @__PURE__ */
|
|
30761
|
+
return /* @__PURE__ */ jsx67(ErrorStep, { stepName: extraction.result.step, message: extraction.result.message, onExit: leaveImport });
|
|
30717
30762
|
}
|
|
30718
30763
|
if (extraction?.status === "running") {
|
|
30719
|
-
return /* @__PURE__ */
|
|
30764
|
+
return /* @__PURE__ */ jsx67(ExtractionScreen, { progress: extraction.progress, agent: extractionRun.input.agent });
|
|
30720
30765
|
}
|
|
30721
|
-
return /* @__PURE__ */
|
|
30766
|
+
return /* @__PURE__ */ jsx67(Fragment24, {});
|
|
30722
30767
|
}
|
|
30723
30768
|
if (scopeRun && scopeFlow) {
|
|
30724
30769
|
if (scopeFlow.status === "failed") {
|
|
30725
|
-
return /* @__PURE__ */
|
|
30770
|
+
return /* @__PURE__ */ jsx67(ErrorStep, { stepName: "scope gate", message: scopeFlow.message, onExit: leaveImport });
|
|
30726
30771
|
}
|
|
30727
30772
|
if (scopeFlow.status === "deciding") {
|
|
30728
|
-
return /* @__PURE__ */
|
|
30773
|
+
return /* @__PURE__ */ jsx67(
|
|
30729
30774
|
ScopeGateScreen,
|
|
30730
30775
|
{
|
|
30731
30776
|
components: scopeFlow.load.components,
|
|
@@ -30735,10 +30780,10 @@ function App({ importOptions, inkClear }) {
|
|
|
30735
30780
|
);
|
|
30736
30781
|
}
|
|
30737
30782
|
if (generation?.status === "done" && !generation.result.ok) {
|
|
30738
|
-
return /* @__PURE__ */
|
|
30783
|
+
return /* @__PURE__ */ jsx67(ErrorStep, { stepName: generation.result.step, message: generation.result.message, onExit: leaveImport });
|
|
30739
30784
|
}
|
|
30740
30785
|
if (generation?.status === "running") {
|
|
30741
|
-
return /* @__PURE__ */
|
|
30786
|
+
return /* @__PURE__ */ jsx67(
|
|
30742
30787
|
GenerationScreen,
|
|
30743
30788
|
{
|
|
30744
30789
|
progress: generation.progress,
|
|
@@ -30748,9 +30793,9 @@ function App({ importOptions, inkClear }) {
|
|
|
30748
30793
|
}
|
|
30749
30794
|
);
|
|
30750
30795
|
}
|
|
30751
|
-
return /* @__PURE__ */
|
|
30796
|
+
return /* @__PURE__ */ jsx67(Fragment24, {});
|
|
30752
30797
|
}
|
|
30753
|
-
return /* @__PURE__ */
|
|
30798
|
+
return /* @__PURE__ */ jsx67(
|
|
30754
30799
|
CredentialsScreen,
|
|
30755
30800
|
{
|
|
30756
30801
|
initial: importDefaults.credentials,
|
|
@@ -30760,17 +30805,17 @@ function App({ importOptions, inkClear }) {
|
|
|
30760
30805
|
}
|
|
30761
30806
|
);
|
|
30762
30807
|
case "help":
|
|
30763
|
-
return /* @__PURE__ */
|
|
30808
|
+
return /* @__PURE__ */ jsx67(HelpScreen, { onDone: goToStart });
|
|
30764
30809
|
case "settings":
|
|
30765
|
-
return /* @__PURE__ */
|
|
30810
|
+
return /* @__PURE__ */ jsx67(SettingsScreen, { onNavigate: setScreen, onBack: goToStart });
|
|
30766
30811
|
case "settings-configuration":
|
|
30767
|
-
return /* @__PURE__ */
|
|
30812
|
+
return /* @__PURE__ */ jsx67(ConfigurationScreen, { onDone: goToSettings });
|
|
30768
30813
|
case "settings-opt-in-analytics":
|
|
30769
|
-
return /* @__PURE__ */
|
|
30814
|
+
return /* @__PURE__ */ jsx67(OptInAnalyticsScreen, { onDone: goToSettings });
|
|
30770
30815
|
case "settings-debug-mode":
|
|
30771
|
-
return /* @__PURE__ */
|
|
30816
|
+
return /* @__PURE__ */ jsx67(DebugModeScreen, { onDone: goToSettings });
|
|
30772
30817
|
case "start":
|
|
30773
|
-
return /* @__PURE__ */
|
|
30818
|
+
return /* @__PURE__ */ jsx67(HomeScreen, { onNavigate: setScreen });
|
|
30774
30819
|
}
|
|
30775
30820
|
}
|
|
30776
30821
|
async function runApp(renderApp, importOptions) {
|
|
@@ -30778,7 +30823,7 @@ async function runApp(renderApp, importOptions) {
|
|
|
30778
30823
|
instance.clear?.();
|
|
30779
30824
|
process.stdout.write("\x1B[H\x1B[0J");
|
|
30780
30825
|
};
|
|
30781
|
-
const instance = renderApp(/* @__PURE__ */
|
|
30826
|
+
const instance = renderApp(/* @__PURE__ */ jsx67(App, { importOptions, inkClear }));
|
|
30782
30827
|
await instance.waitUntilExit();
|
|
30783
30828
|
}
|
|
30784
30829
|
export {
|