@contentful/experience-design-system-cli 2.37.1-dev-build-81dbe125.0 → 2.37.1-dev-build-182ecd7e.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 +769 -740
- package/dist/index.js +778 -741
- package/dist/package.json +1 -1
- package/dist/src/tui/ClearableTextInput.d.ts +6 -0
- package/dist/src/tui/import/steps/01-welcome/controls.d.ts +3 -0
- package/dist/src/tui/import/steps/02-token-input/controls.d.ts +3 -0
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -18515,6 +18515,40 @@ var init_PageContainer = __esm({
|
|
|
18515
18515
|
}
|
|
18516
18516
|
});
|
|
18517
18517
|
|
|
18518
|
+
// packages/experience-design-system-cli/src/tui/ClearableTextInput.tsx
|
|
18519
|
+
import { useRef } from "react";
|
|
18520
|
+
import { useInput as useInput3 } from "ink";
|
|
18521
|
+
import TextInput from "ink-text-input";
|
|
18522
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
18523
|
+
function isClearKey(input, key) {
|
|
18524
|
+
return key.ctrl && input === "d";
|
|
18525
|
+
}
|
|
18526
|
+
function ClearableTextInput({ onChange, ...props }) {
|
|
18527
|
+
const justCleared = useRef(false);
|
|
18528
|
+
useInput3((input, key) => {
|
|
18529
|
+
if (!isClearKey(input, key)) return;
|
|
18530
|
+
justCleared.current = true;
|
|
18531
|
+
setTimeout(() => {
|
|
18532
|
+
justCleared.current = false;
|
|
18533
|
+
}, 0);
|
|
18534
|
+
onChange("");
|
|
18535
|
+
});
|
|
18536
|
+
return /* @__PURE__ */ jsx4(
|
|
18537
|
+
TextInput,
|
|
18538
|
+
{
|
|
18539
|
+
...props,
|
|
18540
|
+
onChange: (value) => {
|
|
18541
|
+
if (!justCleared.current) onChange(value);
|
|
18542
|
+
}
|
|
18543
|
+
}
|
|
18544
|
+
);
|
|
18545
|
+
}
|
|
18546
|
+
var init_ClearableTextInput = __esm({
|
|
18547
|
+
"packages/experience-design-system-cli/src/tui/ClearableTextInput.tsx"() {
|
|
18548
|
+
"use strict";
|
|
18549
|
+
}
|
|
18550
|
+
});
|
|
18551
|
+
|
|
18518
18552
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/logic.ts
|
|
18519
18553
|
function shouldQuit(key) {
|
|
18520
18554
|
return key.escape;
|
|
@@ -18530,9 +18564,9 @@ var init_logic = __esm({
|
|
|
18530
18564
|
});
|
|
18531
18565
|
|
|
18532
18566
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/controls.ts
|
|
18533
|
-
import { useInput as
|
|
18567
|
+
import { useInput as useInput4 } from "ink";
|
|
18534
18568
|
function useWelcomeControls(onQuit) {
|
|
18535
|
-
|
|
18569
|
+
useInput4((_input, key) => {
|
|
18536
18570
|
if (shouldQuit(key)) onQuit();
|
|
18537
18571
|
});
|
|
18538
18572
|
}
|
|
@@ -18543,6 +18577,7 @@ var init_controls = __esm({
|
|
|
18543
18577
|
init_logic();
|
|
18544
18578
|
WELCOME_CONTROLS = [
|
|
18545
18579
|
{ keys: "Enter", label: "Continue" },
|
|
18580
|
+
{ keys: "Ctrl+D", label: "Clear" },
|
|
18546
18581
|
{ keys: "Esc", label: "Back to menu" }
|
|
18547
18582
|
];
|
|
18548
18583
|
}
|
|
@@ -18551,8 +18586,7 @@ var init_controls = __esm({
|
|
|
18551
18586
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx
|
|
18552
18587
|
import { useState as useState3 } from "react";
|
|
18553
18588
|
import { Box as Box3, Text as Text4 } from "ink";
|
|
18554
|
-
import
|
|
18555
|
-
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
18589
|
+
import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
18556
18590
|
function WelcomeScreen({ onContinue, onQuit, initialPath = "" }) {
|
|
18557
18591
|
const [projectPath, setProjectPath] = useState3(initialPath);
|
|
18558
18592
|
useWelcomeControls(onQuit);
|
|
@@ -18561,8 +18595,8 @@ function WelcomeScreen({ onContinue, onQuit, initialPath = "" }) {
|
|
|
18561
18595
|
if (path5) onContinue(path5);
|
|
18562
18596
|
};
|
|
18563
18597
|
return /* @__PURE__ */ jsxs3(Box3, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
18564
|
-
/* @__PURE__ */
|
|
18565
|
-
/* @__PURE__ */
|
|
18598
|
+
/* @__PURE__ */ jsx5(Text4, { bold: true, color: PALETTE.accent, children: "Let's import your design system into Contentful." }),
|
|
18599
|
+
/* @__PURE__ */ jsx5(Box3, { flexDirection: "row", children: /* @__PURE__ */ jsxs3(
|
|
18566
18600
|
Box3,
|
|
18567
18601
|
{
|
|
18568
18602
|
flexDirection: "column",
|
|
@@ -18574,29 +18608,29 @@ function WelcomeScreen({ onContinue, onQuit, initialPath = "" }) {
|
|
|
18574
18608
|
flexShrink: 1,
|
|
18575
18609
|
children: [
|
|
18576
18610
|
OVERVIEW.map((item) => /* @__PURE__ */ jsxs3(Box3, { gap: 1, children: [
|
|
18577
|
-
/* @__PURE__ */
|
|
18578
|
-
/* @__PURE__ */
|
|
18579
|
-
item.ai && /* @__PURE__ */
|
|
18611
|
+
/* @__PURE__ */ jsx5(Box3, { flexShrink: 0, children: /* @__PURE__ */ jsx5(Text4, { bold: true, children: item.label }) }),
|
|
18612
|
+
/* @__PURE__ */ jsx5(Text4, { color: PALETTE.muted, wrap: "truncate-end", children: item.description }),
|
|
18613
|
+
item.ai && /* @__PURE__ */ jsx5(Text4, { bold: true, color: PALETTE.accent, children: AI_MARKER })
|
|
18580
18614
|
] }, item.label)),
|
|
18581
18615
|
/* @__PURE__ */ jsxs3(Box3, { flexDirection: "column", marginTop: 1, children: [
|
|
18582
18616
|
/* @__PURE__ */ jsxs3(Text4, { bold: true, children: [
|
|
18583
|
-
/* @__PURE__ */
|
|
18617
|
+
/* @__PURE__ */ jsx5(Text4, { color: PALETTE.accent, children: AI_MARKER }),
|
|
18584
18618
|
" AI disclosure"
|
|
18585
18619
|
] }),
|
|
18586
|
-
AI_DISCLOSURE.map((paragraph) => /* @__PURE__ */
|
|
18620
|
+
AI_DISCLOSURE.map((paragraph) => /* @__PURE__ */ jsx5(Text4, { color: PALETTE.muted, children: paragraph }, paragraph))
|
|
18587
18621
|
] })
|
|
18588
18622
|
]
|
|
18589
18623
|
}
|
|
18590
18624
|
) }),
|
|
18591
18625
|
/* @__PURE__ */ jsxs3(Box3, { flexDirection: "column", gap: 1, children: [
|
|
18592
|
-
/* @__PURE__ */
|
|
18626
|
+
/* @__PURE__ */ jsx5(Text4, { children: "Where is your component library?" }),
|
|
18593
18627
|
/* @__PURE__ */ jsxs3(Box3, { children: [
|
|
18594
|
-
/* @__PURE__ */
|
|
18595
|
-
/* @__PURE__ */
|
|
18596
|
-
/* @__PURE__ */
|
|
18628
|
+
/* @__PURE__ */ jsx5(Text4, { color: PALETTE.accent, children: "? " }),
|
|
18629
|
+
/* @__PURE__ */ jsx5(Text4, { children: "Project path: " }),
|
|
18630
|
+
/* @__PURE__ */ jsx5(ClearableTextInput, { value: projectPath, onChange: setProjectPath, onSubmit: submit })
|
|
18597
18631
|
] })
|
|
18598
18632
|
] }),
|
|
18599
|
-
/* @__PURE__ */
|
|
18633
|
+
/* @__PURE__ */ jsx5(Box3, { gap: 3, children: WELCOME_CONTROLS.map((control) => /* @__PURE__ */ jsxs3(Text4, { children: [
|
|
18600
18634
|
"[",
|
|
18601
18635
|
control.keys,
|
|
18602
18636
|
"] ",
|
|
@@ -18609,6 +18643,7 @@ var init_screen = __esm({
|
|
|
18609
18643
|
"packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx"() {
|
|
18610
18644
|
"use strict";
|
|
18611
18645
|
init_theme();
|
|
18646
|
+
init_ClearableTextInput();
|
|
18612
18647
|
init_controls();
|
|
18613
18648
|
init_logic();
|
|
18614
18649
|
OVERVIEW_BOX_MAX_WIDTH = 90;
|
|
@@ -18649,9 +18684,9 @@ var init_logic2 = __esm({
|
|
|
18649
18684
|
});
|
|
18650
18685
|
|
|
18651
18686
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/controls.ts
|
|
18652
|
-
import { useInput as
|
|
18687
|
+
import { useInput as useInput5 } from "ink";
|
|
18653
18688
|
function useTokenInputControls(onBack) {
|
|
18654
|
-
|
|
18689
|
+
useInput5((_input, key) => {
|
|
18655
18690
|
if (shouldGoBack(key)) onBack();
|
|
18656
18691
|
});
|
|
18657
18692
|
}
|
|
@@ -18662,6 +18697,7 @@ var init_controls2 = __esm({
|
|
|
18662
18697
|
init_logic2();
|
|
18663
18698
|
TOKEN_INPUT_CONTROLS = [
|
|
18664
18699
|
{ keys: "Enter", label: "Continue" },
|
|
18700
|
+
{ keys: "Ctrl+D", label: "Clear" },
|
|
18665
18701
|
{ keys: "Esc", label: "Back" }
|
|
18666
18702
|
];
|
|
18667
18703
|
}
|
|
@@ -18718,8 +18754,7 @@ var init_validate_path = __esm({
|
|
|
18718
18754
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx
|
|
18719
18755
|
import { useState as useState4 } from "react";
|
|
18720
18756
|
import { Box as Box4, Text as Text5 } from "ink";
|
|
18721
|
-
import
|
|
18722
|
-
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
18757
|
+
import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
18723
18758
|
function TokenInputScreen({ onConfirm, onBack, initialPath = "" }) {
|
|
18724
18759
|
const [tokenPath, setTokenPath] = useState4(initialPath);
|
|
18725
18760
|
const [failure, setFailure] = useState4(null);
|
|
@@ -18739,13 +18774,13 @@ function TokenInputScreen({ onConfirm, onBack, initialPath = "" }) {
|
|
|
18739
18774
|
else setFailure({ error: check.error, resolvedPath: check.resolvedPath });
|
|
18740
18775
|
};
|
|
18741
18776
|
return /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
18742
|
-
/* @__PURE__ */
|
|
18743
|
-
/* @__PURE__ */
|
|
18777
|
+
/* @__PURE__ */ jsx6(Text5, { bold: true, children: "Design tokens" }),
|
|
18778
|
+
/* @__PURE__ */ jsx6(Text5, { 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)." }),
|
|
18744
18779
|
/* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", children: [
|
|
18745
18780
|
/* @__PURE__ */ jsxs4(Box4, { gap: 1, children: [
|
|
18746
|
-
/* @__PURE__ */
|
|
18747
|
-
/* @__PURE__ */
|
|
18748
|
-
/* @__PURE__ */
|
|
18781
|
+
/* @__PURE__ */ jsx6(Text5, { color: PALETTE.accent, children: "?" }),
|
|
18782
|
+
/* @__PURE__ */ jsx6(Text5, { children: "Token path:" }),
|
|
18783
|
+
/* @__PURE__ */ jsx6(ClearableTextInput, { value: tokenPath, onChange: change, onSubmit: submit })
|
|
18749
18784
|
] }),
|
|
18750
18785
|
failure && /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", children: [
|
|
18751
18786
|
/* @__PURE__ */ jsxs4(Text5, { color: PALETTE.error, children: [
|
|
@@ -18758,7 +18793,7 @@ function TokenInputScreen({ onConfirm, onBack, initialPath = "" }) {
|
|
|
18758
18793
|
] })
|
|
18759
18794
|
] })
|
|
18760
18795
|
] }),
|
|
18761
|
-
/* @__PURE__ */
|
|
18796
|
+
/* @__PURE__ */ jsx6(Box4, { marginTop: 1, gap: 3, children: TOKEN_INPUT_CONTROLS.map((control) => /* @__PURE__ */ jsxs4(Text5, { children: [
|
|
18762
18797
|
"[",
|
|
18763
18798
|
control.keys,
|
|
18764
18799
|
"] ",
|
|
@@ -18770,6 +18805,7 @@ var init_screen2 = __esm({
|
|
|
18770
18805
|
"packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx"() {
|
|
18771
18806
|
"use strict";
|
|
18772
18807
|
init_theme();
|
|
18808
|
+
init_ClearableTextInput();
|
|
18773
18809
|
init_controls2();
|
|
18774
18810
|
init_logic2();
|
|
18775
18811
|
init_validate_path();
|
|
@@ -18852,12 +18888,12 @@ var init_logic3 = __esm({
|
|
|
18852
18888
|
});
|
|
18853
18889
|
|
|
18854
18890
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/controls.ts
|
|
18855
|
-
import { useInput as
|
|
18891
|
+
import { useInput as useInput6 } from "ink";
|
|
18856
18892
|
function controlsFor(phase) {
|
|
18857
18893
|
return CONTROLS[phase];
|
|
18858
18894
|
}
|
|
18859
18895
|
function usePathValidationControls(phase, handlers) {
|
|
18860
|
-
|
|
18896
|
+
useInput6((input, key) => {
|
|
18861
18897
|
const action = keyAction(phase, input, key);
|
|
18862
18898
|
if (action === "confirm") handlers.onConfirm();
|
|
18863
18899
|
else if (action === "change-path") handlers.onChangePath();
|
|
@@ -18911,7 +18947,7 @@ var init_scan_files = __esm({
|
|
|
18911
18947
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/screen.tsx
|
|
18912
18948
|
import { useEffect as useEffect3, useMemo, useState as useState5 } from "react";
|
|
18913
18949
|
import { Box as Box5, Text as Text6 } from "ink";
|
|
18914
|
-
import { jsx as
|
|
18950
|
+
import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
18915
18951
|
function Row({ row }) {
|
|
18916
18952
|
return /* @__PURE__ */ jsxs5(Text6, { color: row.tone === "accent" ? PALETTE.accent : row.tone === "muted" ? PALETTE.muted : void 0, children: [
|
|
18917
18953
|
" \u2022 ",
|
|
@@ -18927,7 +18963,7 @@ function Failure({ scan, path: path5 }) {
|
|
|
18927
18963
|
"\u2717 ",
|
|
18928
18964
|
headline
|
|
18929
18965
|
] }),
|
|
18930
|
-
hints.map((hint) => /* @__PURE__ */
|
|
18966
|
+
hints.map((hint) => /* @__PURE__ */ jsx7(Text6, { color: PALETTE.muted, children: hint }, hint))
|
|
18931
18967
|
] });
|
|
18932
18968
|
}
|
|
18933
18969
|
function Summary({ scan, path: path5 }) {
|
|
@@ -18935,7 +18971,7 @@ function Summary({ scan, path: path5 }) {
|
|
|
18935
18971
|
return /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", gap: 1, children: [
|
|
18936
18972
|
/* @__PURE__ */ jsxs5(Text6, { children: [
|
|
18937
18973
|
"Scanned ",
|
|
18938
|
-
/* @__PURE__ */
|
|
18974
|
+
/* @__PURE__ */ jsx7(Text6, { bold: true, children: path5 })
|
|
18939
18975
|
] }),
|
|
18940
18976
|
/* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", children: [
|
|
18941
18977
|
/* @__PURE__ */ jsxs5(Text6, { color: PALETTE.success, children: [
|
|
@@ -18943,13 +18979,13 @@ function Summary({ scan, path: path5 }) {
|
|
|
18943
18979
|
total,
|
|
18944
18980
|
" files:"
|
|
18945
18981
|
] }),
|
|
18946
|
-
rows.map((row) => /* @__PURE__ */
|
|
18982
|
+
rows.map((row) => /* @__PURE__ */ jsx7(Row, { row }, row.label))
|
|
18947
18983
|
] }),
|
|
18948
18984
|
warning && /* @__PURE__ */ jsxs5(Text6, { color: PALETTE.warning, children: [
|
|
18949
18985
|
"\u26A0 ",
|
|
18950
18986
|
warning
|
|
18951
18987
|
] }),
|
|
18952
|
-
/* @__PURE__ */
|
|
18988
|
+
/* @__PURE__ */ jsx7(Text6, { children: "Does this look right?" })
|
|
18953
18989
|
] });
|
|
18954
18990
|
}
|
|
18955
18991
|
function PathValidationScreen({
|
|
@@ -18974,12 +19010,12 @@ function PathValidationScreen({
|
|
|
18974
19010
|
return /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
18975
19011
|
scan === void 0 && /* @__PURE__ */ jsxs5(Text6, { color: PALETTE.muted, children: [
|
|
18976
19012
|
"Scanning ",
|
|
18977
|
-
/* @__PURE__ */
|
|
19013
|
+
/* @__PURE__ */ jsx7(Text6, { bold: true, children: resolvedPath }),
|
|
18978
19014
|
"..."
|
|
18979
19015
|
] }),
|
|
18980
|
-
scan?.ok === false && /* @__PURE__ */
|
|
18981
|
-
scan?.ok === true && /* @__PURE__ */
|
|
18982
|
-
/* @__PURE__ */
|
|
19016
|
+
scan?.ok === false && /* @__PURE__ */ jsx7(Failure, { scan, path: resolvedPath }),
|
|
19017
|
+
scan?.ok === true && /* @__PURE__ */ jsx7(Summary, { scan, path: resolvedPath }),
|
|
19018
|
+
/* @__PURE__ */ jsx7(Box5, { marginTop: 1, gap: 3, children: controlsFor(phase).map((control) => /* @__PURE__ */ jsxs5(Text6, { color: PALETTE.muted, children: [
|
|
18983
19019
|
"[",
|
|
18984
19020
|
control.keys,
|
|
18985
19021
|
"] ",
|
|
@@ -19032,9 +19068,9 @@ var init_logic4 = __esm({
|
|
|
19032
19068
|
});
|
|
19033
19069
|
|
|
19034
19070
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/controls.ts
|
|
19035
|
-
import { useInput as
|
|
19071
|
+
import { useInput as useInput7 } from "ink";
|
|
19036
19072
|
function useCredentialsControls(handlers) {
|
|
19037
|
-
|
|
19073
|
+
useInput7((input, key) => {
|
|
19038
19074
|
if (handlers.disabled) return;
|
|
19039
19075
|
const action = keyAction2(input, key);
|
|
19040
19076
|
if (action === "back") handlers.onBack();
|
|
@@ -19104,17 +19140,17 @@ var init_validate4 = __esm({
|
|
|
19104
19140
|
});
|
|
19105
19141
|
|
|
19106
19142
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/screen.tsx
|
|
19107
|
-
import { useRef, useState as useState6 } from "react";
|
|
19143
|
+
import { useRef as useRef2, useState as useState6 } from "react";
|
|
19108
19144
|
import { Box as Box6, Text as Text7 } from "ink";
|
|
19109
|
-
import
|
|
19110
|
-
import { Fragment, jsx as
|
|
19145
|
+
import TextInput2 from "ink-text-input";
|
|
19146
|
+
import { Fragment, jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
19111
19147
|
function CredentialsScreen({
|
|
19112
19148
|
onDone,
|
|
19113
19149
|
onBack,
|
|
19114
19150
|
initial = {},
|
|
19115
19151
|
validate: validate3 = validateCredentials
|
|
19116
19152
|
}) {
|
|
19117
|
-
const initialValues =
|
|
19153
|
+
const initialValues = useRef2(
|
|
19118
19154
|
normalize({
|
|
19119
19155
|
spaceId: initial.spaceId ?? "",
|
|
19120
19156
|
environmentId: initial.environmentId || "master",
|
|
@@ -19155,21 +19191,21 @@ function CredentialsScreen({
|
|
|
19155
19191
|
};
|
|
19156
19192
|
return /* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
19157
19193
|
/* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", children: [
|
|
19158
|
-
/* @__PURE__ */
|
|
19159
|
-
/* @__PURE__ */
|
|
19194
|
+
/* @__PURE__ */ jsx8(Text7, { bold: true, children: "Contentful credentials" }),
|
|
19195
|
+
/* @__PURE__ */ jsx8(Text7, { children: prefilled ? "Credentials pre-filled from the configuration settings." : "Enter the Contentful space you want to import into." }),
|
|
19160
19196
|
!prefilled && /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
19161
|
-
/* @__PURE__ */
|
|
19162
|
-
/* @__PURE__ */
|
|
19197
|
+
/* @__PURE__ */ jsx8(Text7, { color: PALETTE.muted, children: "We use it to check what components already exist and to push your import. If you skip, files are saved locally and nothing is pushed." }),
|
|
19198
|
+
/* @__PURE__ */ jsx8(Text7, { color: PALETTE.muted, children: "Tip: save these under Settings \u2192 Configuration so they pre-fill here." })
|
|
19163
19199
|
] })
|
|
19164
19200
|
] }),
|
|
19165
|
-
/* @__PURE__ */
|
|
19166
|
-
/* @__PURE__ */
|
|
19201
|
+
/* @__PURE__ */ jsx8(Box6, { flexDirection: "column", children: FIELDS.map((field) => /* @__PURE__ */ jsxs6(Box6, { gap: 1, children: [
|
|
19202
|
+
/* @__PURE__ */ jsx8(Text7, { color: active === field ? PALETTE.accent : void 0, children: "?" }),
|
|
19167
19203
|
/* @__PURE__ */ jsxs6(Text7, { bold: active === field, children: [
|
|
19168
19204
|
LABELS[field],
|
|
19169
19205
|
":"
|
|
19170
19206
|
] }),
|
|
19171
|
-
/* @__PURE__ */
|
|
19172
|
-
|
|
19207
|
+
/* @__PURE__ */ jsx8(
|
|
19208
|
+
TextInput2,
|
|
19173
19209
|
{
|
|
19174
19210
|
value: values[field],
|
|
19175
19211
|
focus: active === field && !validating,
|
|
@@ -19180,14 +19216,14 @@ function CredentialsScreen({
|
|
|
19180
19216
|
}
|
|
19181
19217
|
)
|
|
19182
19218
|
] }, field)) }),
|
|
19183
|
-
active === "host" && /* @__PURE__ */
|
|
19219
|
+
active === "host" && /* @__PURE__ */ jsx8(Text7, { color: PALETTE.muted, children: "Default: api.contentful.com \xB7 EU spaces: api.eu.contentful.com" }),
|
|
19184
19220
|
error && /* @__PURE__ */ jsxs6(Text7, { color: PALETTE.error, children: [
|
|
19185
19221
|
"\u2717 ",
|
|
19186
19222
|
error
|
|
19187
19223
|
] }),
|
|
19188
|
-
validating && /* @__PURE__ */
|
|
19189
|
-
!validating && !error && !isUnchanged(normalize(values), initialValues) && /* @__PURE__ */
|
|
19190
|
-
/* @__PURE__ */
|
|
19224
|
+
validating && /* @__PURE__ */ jsx8(Text7, { color: PALETTE.accent, children: "Validating credentials..." }),
|
|
19225
|
+
!validating && !error && !isUnchanged(normalize(values), initialValues) && /* @__PURE__ */ jsx8(Text7, { color: PALETTE.muted, children: "Changed values are saved after they validate." }),
|
|
19226
|
+
/* @__PURE__ */ jsx8(Box6, { marginTop: 1, gap: 3, children: CREDENTIALS_CONTROLS.map((control) => /* @__PURE__ */ jsxs6(Text7, { color: PALETTE.muted, children: [
|
|
19191
19227
|
"[",
|
|
19192
19228
|
control.keys,
|
|
19193
19229
|
"] ",
|
|
@@ -19234,9 +19270,9 @@ var init_logic5 = __esm({
|
|
|
19234
19270
|
});
|
|
19235
19271
|
|
|
19236
19272
|
// packages/experience-design-system-cli/src/tui/import/shared/error-step/controls.ts
|
|
19237
|
-
import { useInput as
|
|
19273
|
+
import { useInput as useInput8 } from "ink";
|
|
19238
19274
|
function useErrorControls(handlers) {
|
|
19239
|
-
|
|
19275
|
+
useInput8((input, key) => {
|
|
19240
19276
|
const action = errorAction(input, key, {
|
|
19241
19277
|
canRetry: handlers.onRetry !== void 0,
|
|
19242
19278
|
canAcknowledge: handlers.onAcknowledge !== void 0
|
|
@@ -19255,7 +19291,7 @@ var init_controls5 = __esm({
|
|
|
19255
19291
|
|
|
19256
19292
|
// packages/experience-design-system-cli/src/tui/import/shared/error-step/error-step.tsx
|
|
19257
19293
|
import { Box as Box7, Text as Text8 } from "ink";
|
|
19258
|
-
import { jsx as
|
|
19294
|
+
import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
19259
19295
|
function ErrorStep({
|
|
19260
19296
|
stepName,
|
|
19261
19297
|
message,
|
|
@@ -19274,8 +19310,8 @@ function ErrorStep({
|
|
|
19274
19310
|
stepName,
|
|
19275
19311
|
" failed"
|
|
19276
19312
|
] }),
|
|
19277
|
-
/* @__PURE__ */
|
|
19278
|
-
/* @__PURE__ */
|
|
19313
|
+
/* @__PURE__ */ jsx9(Text8, { color: PALETTE.error, children: message }),
|
|
19314
|
+
/* @__PURE__ */ jsx9(Box7, { marginTop: 1, gap: 3, children: controls.map((control) => /* @__PURE__ */ jsxs7(Text8, { color: PALETTE.muted, children: [
|
|
19279
19315
|
"[",
|
|
19280
19316
|
control.keys,
|
|
19281
19317
|
"] ",
|
|
@@ -19313,9 +19349,9 @@ var init_logic6 = __esm({
|
|
|
19313
19349
|
});
|
|
19314
19350
|
|
|
19315
19351
|
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/controls.ts
|
|
19316
|
-
import { useInput as
|
|
19352
|
+
import { useInput as useInput9 } from "ink";
|
|
19317
19353
|
function useGateControls(handlers) {
|
|
19318
|
-
|
|
19354
|
+
useInput9((input, key) => {
|
|
19319
19355
|
const action = gateAction(input, key, handlers.canSkip);
|
|
19320
19356
|
if (action === "continue") handlers.onContinue();
|
|
19321
19357
|
else if (action === "skip") handlers.onSkip();
|
|
@@ -19331,7 +19367,7 @@ var init_controls6 = __esm({
|
|
|
19331
19367
|
|
|
19332
19368
|
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/gate-step.tsx
|
|
19333
19369
|
import { Box as Box8, Text as Text9 } from "ink";
|
|
19334
|
-
import { jsx as
|
|
19370
|
+
import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
19335
19371
|
function GateStep({
|
|
19336
19372
|
message,
|
|
19337
19373
|
onContinue,
|
|
@@ -19353,9 +19389,9 @@ function GateStep({
|
|
|
19353
19389
|
" ",
|
|
19354
19390
|
message
|
|
19355
19391
|
] }),
|
|
19356
|
-
summary && /* @__PURE__ */
|
|
19357
|
-
context && /* @__PURE__ */
|
|
19358
|
-
/* @__PURE__ */
|
|
19392
|
+
summary && /* @__PURE__ */ jsx10(Text9, { color: PALETTE.muted, children: summary }),
|
|
19393
|
+
context && /* @__PURE__ */ jsx10(Box8, { marginTop: 1, children: /* @__PURE__ */ jsx10(Text9, { children: context }) }),
|
|
19394
|
+
/* @__PURE__ */ jsx10(Box8, { marginTop: 1, gap: 3, children: gateControls(continueLabel, skipLabel2, onSkip !== void 0).map((control) => /* @__PURE__ */ jsxs8(Text9, { color: PALETTE.muted, children: [
|
|
19359
19395
|
"[",
|
|
19360
19396
|
control.keys,
|
|
19361
19397
|
"] ",
|
|
@@ -19430,24 +19466,24 @@ var init_use_elapsed = __esm({
|
|
|
19430
19466
|
// packages/experience-design-system-cli/src/tui/import/shared/running-step/running-step.tsx
|
|
19431
19467
|
import { Box as Box9, Text as Text10 } from "ink";
|
|
19432
19468
|
import { ProgressBar, Spinner, ThemeProvider } from "@inkjs/ui";
|
|
19433
|
-
import { jsx as
|
|
19469
|
+
import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
19434
19470
|
function Line({ line }) {
|
|
19435
19471
|
if (line.progress) {
|
|
19436
19472
|
return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, children: [
|
|
19437
19473
|
/* @__PURE__ */ jsxs9(Box9, { gap: 2, children: [
|
|
19438
|
-
/* @__PURE__ */
|
|
19474
|
+
/* @__PURE__ */ jsx11(Box9, { width: 40, children: /* @__PURE__ */ jsx11(ThemeProvider, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx11(ProgressBar, { value: progressPercent(line.progress) }) }) }),
|
|
19439
19475
|
/* @__PURE__ */ jsxs9(Text10, { color: PALETTE.muted, children: [
|
|
19440
19476
|
line.progress.done,
|
|
19441
19477
|
"/",
|
|
19442
19478
|
line.progress.total
|
|
19443
19479
|
] })
|
|
19444
19480
|
] }),
|
|
19445
|
-
/* @__PURE__ */
|
|
19481
|
+
/* @__PURE__ */ jsx11(Text10, { color: PALETTE.muted, children: line.text })
|
|
19446
19482
|
] });
|
|
19447
19483
|
}
|
|
19448
19484
|
return /* @__PURE__ */ jsxs9(Box9, { gap: 1, children: [
|
|
19449
|
-
line.complete ? /* @__PURE__ */
|
|
19450
|
-
/* @__PURE__ */
|
|
19485
|
+
line.complete ? /* @__PURE__ */ jsx11(Text10, { color: PALETTE.success, children: "\u2713" }) : /* @__PURE__ */ jsx11(Spinner, {}),
|
|
19486
|
+
/* @__PURE__ */ jsx11(Text10, { color: PALETTE.muted, children: line.text })
|
|
19451
19487
|
] });
|
|
19452
19488
|
}
|
|
19453
19489
|
function RunningStep({
|
|
@@ -19460,13 +19496,13 @@ function RunningStep({
|
|
|
19460
19496
|
const elapsed = useElapsed();
|
|
19461
19497
|
return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
19462
19498
|
/* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
|
|
19463
|
-
/* @__PURE__ */
|
|
19464
|
-
/* @__PURE__ */
|
|
19465
|
-
/* @__PURE__ */
|
|
19499
|
+
/* @__PURE__ */ jsx11(Text10, { color: PALETTE.muted, children: RULE }),
|
|
19500
|
+
/* @__PURE__ */ jsx11(Text10, { bold: true, children: stepLabel(stepNumber, totalSteps, title) }),
|
|
19501
|
+
/* @__PURE__ */ jsx11(Text10, { color: PALETTE.muted, children: RULE })
|
|
19466
19502
|
] }),
|
|
19467
|
-
/* @__PURE__ */
|
|
19468
|
-
/* @__PURE__ */
|
|
19469
|
-
/* @__PURE__ */
|
|
19503
|
+
/* @__PURE__ */ jsx11(Text10, { children: description }),
|
|
19504
|
+
/* @__PURE__ */ jsx11(Box9, { marginTop: 1, flexDirection: "column", gap: 1, children: lines.map((line, index) => /* @__PURE__ */ jsx11(Line, { line }, index)) }),
|
|
19505
|
+
/* @__PURE__ */ jsx11(Box9, { marginTop: 1, children: /* @__PURE__ */ jsxs9(Text10, { color: PALETTE.muted, children: [
|
|
19470
19506
|
"Elapsed: ",
|
|
19471
19507
|
elapsed
|
|
19472
19508
|
] }) })
|
|
@@ -19546,7 +19582,7 @@ var init_logic8 = __esm({
|
|
|
19546
19582
|
});
|
|
19547
19583
|
|
|
19548
19584
|
// packages/experience-design-system-cli/src/tui/import/steps/05-token-reuse/screen.tsx
|
|
19549
|
-
import { jsx as
|
|
19585
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
19550
19586
|
function TokenReuseScreen({
|
|
19551
19587
|
tokensPath,
|
|
19552
19588
|
sourceChanged,
|
|
@@ -19555,7 +19591,7 @@ function TokenReuseScreen({
|
|
|
19555
19591
|
onQuit
|
|
19556
19592
|
}) {
|
|
19557
19593
|
const { summary, context } = gateText({ tokensPath, sourceChanged });
|
|
19558
|
-
return /* @__PURE__ */
|
|
19594
|
+
return /* @__PURE__ */ jsx12(
|
|
19559
19595
|
GateStep,
|
|
19560
19596
|
{
|
|
19561
19597
|
message: "Existing tokens.json found",
|
|
@@ -19672,14 +19708,14 @@ var init_logic9 = __esm({
|
|
|
19672
19708
|
});
|
|
19673
19709
|
|
|
19674
19710
|
// packages/experience-design-system-cli/src/tui/import/steps/06-extraction/screen.tsx
|
|
19675
|
-
import { jsx as
|
|
19711
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
19676
19712
|
function ExtractionScreen({
|
|
19677
19713
|
progress,
|
|
19678
19714
|
agent,
|
|
19679
19715
|
stepNumber,
|
|
19680
19716
|
totalSteps
|
|
19681
19717
|
}) {
|
|
19682
|
-
return /* @__PURE__ */
|
|
19718
|
+
return /* @__PURE__ */ jsx13(
|
|
19683
19719
|
RunningStep,
|
|
19684
19720
|
{
|
|
19685
19721
|
stepNumber,
|
|
@@ -19986,10 +20022,10 @@ var init_run = __esm({
|
|
|
19986
20022
|
});
|
|
19987
20023
|
|
|
19988
20024
|
// packages/experience-design-system-cli/src/tui/import/steps/06-extraction/use-extraction.ts
|
|
19989
|
-
import { useEffect as useEffect5, useRef as
|
|
20025
|
+
import { useEffect as useEffect5, useRef as useRef3, useState as useState8 } from "react";
|
|
19990
20026
|
function useExtraction(input) {
|
|
19991
20027
|
const [state2, setState] = useState8();
|
|
19992
|
-
const current =
|
|
20028
|
+
const current = useRef3();
|
|
19993
20029
|
useEffect5(() => {
|
|
19994
20030
|
current.current = input;
|
|
19995
20031
|
if (!input) {
|
|
@@ -20152,7 +20188,7 @@ var init_columns = __esm({
|
|
|
20152
20188
|
|
|
20153
20189
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/windowed-panel.tsx
|
|
20154
20190
|
import { Box as Box10, Text as Text11 } from "ink";
|
|
20155
|
-
import { jsx as
|
|
20191
|
+
import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
20156
20192
|
function terminalPanelHeight(rows, reservedRows = 4) {
|
|
20157
20193
|
return Math.max(MIN_TERMINAL_PANEL_HEIGHT, rows - reservedRows);
|
|
20158
20194
|
}
|
|
@@ -20167,7 +20203,7 @@ function FixedPanel({
|
|
|
20167
20203
|
clipOverflow = true,
|
|
20168
20204
|
children
|
|
20169
20205
|
}) {
|
|
20170
|
-
return /* @__PURE__ */
|
|
20206
|
+
return /* @__PURE__ */ jsx14(
|
|
20171
20207
|
Box10,
|
|
20172
20208
|
{
|
|
20173
20209
|
flexDirection: "column",
|
|
@@ -20193,7 +20229,7 @@ function WindowedPanel({ width, height, title, focused, children }) {
|
|
|
20193
20229
|
...height === void 0 ? {} : { height },
|
|
20194
20230
|
focused,
|
|
20195
20231
|
children: [
|
|
20196
|
-
title && /* @__PURE__ */
|
|
20232
|
+
title && /* @__PURE__ */ jsx14(WindowedPanelHeader, { title, width, focused }),
|
|
20197
20233
|
children
|
|
20198
20234
|
]
|
|
20199
20235
|
}
|
|
@@ -20205,8 +20241,8 @@ function WindowedPanelHeader({
|
|
|
20205
20241
|
focused
|
|
20206
20242
|
}) {
|
|
20207
20243
|
return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
|
|
20208
|
-
/* @__PURE__ */
|
|
20209
|
-
/* @__PURE__ */
|
|
20244
|
+
/* @__PURE__ */ jsx14(Text11, { bold: true, color: PALETTE2.info, inverse: focused, children: title }),
|
|
20245
|
+
/* @__PURE__ */ jsx14(Text11, { color: PALETTE2.muted, children: "\u2500".repeat(Math.max(0, width - 2)) })
|
|
20210
20246
|
] });
|
|
20211
20247
|
}
|
|
20212
20248
|
function formatWindowIndicator(direction, count) {
|
|
@@ -20214,7 +20250,7 @@ function formatWindowIndicator(direction, count) {
|
|
|
20214
20250
|
return `${direction === "up" ? "\u2191" : "\u2193"} ${count} more`;
|
|
20215
20251
|
}
|
|
20216
20252
|
function WindowIndicator({ direction, count }) {
|
|
20217
|
-
return /* @__PURE__ */
|
|
20253
|
+
return /* @__PURE__ */ jsx14(Text11, { color: PALETTE2.muted, children: formatWindowIndicator(direction, count) });
|
|
20218
20254
|
}
|
|
20219
20255
|
var MIN_TERMINAL_PANEL_HEIGHT;
|
|
20220
20256
|
var init_windowed_panel = __esm({
|
|
@@ -20226,31 +20262,31 @@ var init_windowed_panel = __esm({
|
|
|
20226
20262
|
});
|
|
20227
20263
|
|
|
20228
20264
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/added-column.tsx
|
|
20229
|
-
import
|
|
20265
|
+
import React7 from "react";
|
|
20230
20266
|
import { Box as Box11, Text as Text12 } from "ink";
|
|
20231
20267
|
import figures from "figures";
|
|
20232
|
-
import { jsx as
|
|
20268
|
+
import { jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
20233
20269
|
function AddedColumn(props) {
|
|
20234
20270
|
const { title, width, height, entries, cursor, focused, aiFlaggedByKey, visibleCount } = props;
|
|
20235
20271
|
const reserveAiBadge = entries.some((e) => aiFlaggedByKey?.get(e.name) === true);
|
|
20236
20272
|
const firstNonCycleIdx = entries.findIndex((e) => !e.isCycle);
|
|
20237
20273
|
const window = computeColumnWindow(entries.length, cursor, Math.max(1, visibleCount));
|
|
20238
20274
|
return /* @__PURE__ */ jsxs11(WindowedPanel, { width, height, title, focused, children: [
|
|
20239
|
-
/* @__PURE__ */
|
|
20240
|
-
entries.length === 0 ? /* @__PURE__ */
|
|
20275
|
+
/* @__PURE__ */ jsx15(WindowIndicator, { direction: "up", count: window.above }),
|
|
20276
|
+
entries.length === 0 ? /* @__PURE__ */ jsx15(Text12, { color: PALETTE2.muted, children: "(none)" }) : entries.slice(window.start, window.end).map((entry, vi) => {
|
|
20241
20277
|
const i = window.start + vi;
|
|
20242
20278
|
const isSelected = i === cursor;
|
|
20243
20279
|
const isCursor = focused && isSelected;
|
|
20244
20280
|
const aiFlagged = aiFlaggedByKey?.get(entry.name) === true;
|
|
20245
20281
|
const showSeparator = firstNonCycleIdx > 0 && i === firstNonCycleIdx;
|
|
20246
20282
|
const style = sideColumnLabelStyle({ isCycle: entry.isCycle, isSelected, focused });
|
|
20247
|
-
return /* @__PURE__ */ jsxs11(
|
|
20248
|
-
showSeparator && /* @__PURE__ */
|
|
20283
|
+
return /* @__PURE__ */ jsxs11(React7.Fragment, { children: [
|
|
20284
|
+
showSeparator && /* @__PURE__ */ jsx15(Text12, { color: PALETTE2.muted, children: "\u2500".repeat(Math.max(0, width - 2)) }),
|
|
20249
20285
|
/* @__PURE__ */ jsxs11(Box11, { children: [
|
|
20250
|
-
isCursor ? /* @__PURE__ */
|
|
20251
|
-
reserveAiBadge && (aiFlagged ? /* @__PURE__ */
|
|
20252
|
-
entry.isCycle && /* @__PURE__ */
|
|
20253
|
-
/* @__PURE__ */
|
|
20286
|
+
isCursor ? /* @__PURE__ */ jsx15(Text12, { color: PALETTE2.info, bold: true, children: figures.pointer }) : /* @__PURE__ */ jsx15(Text12, { children: " " }),
|
|
20287
|
+
reserveAiBadge && (aiFlagged ? /* @__PURE__ */ jsx15(Text12, { color: PALETTE2.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx15(Text12, { children: " " })),
|
|
20288
|
+
entry.isCycle && /* @__PURE__ */ jsx15(Text12, { color: isCursor ? PALETTE2.info : PALETTE2.warning, bold: true, underline: style.nameUnderline, children: " \u26A0" }),
|
|
20289
|
+
/* @__PURE__ */ jsx15(
|
|
20254
20290
|
Text12,
|
|
20255
20291
|
{
|
|
20256
20292
|
color: style.nameColor,
|
|
@@ -20264,7 +20300,7 @@ function AddedColumn(props) {
|
|
|
20264
20300
|
] })
|
|
20265
20301
|
] }, entry.name);
|
|
20266
20302
|
}),
|
|
20267
|
-
/* @__PURE__ */
|
|
20303
|
+
/* @__PURE__ */ jsx15(WindowIndicator, { direction: "down", count: window.below })
|
|
20268
20304
|
] });
|
|
20269
20305
|
}
|
|
20270
20306
|
var init_added_column = __esm({
|
|
@@ -20279,7 +20315,7 @@ var init_added_column = __esm({
|
|
|
20279
20315
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/cycles-panel.tsx
|
|
20280
20316
|
import { Box as Box12, Text as Text13 } from "ink";
|
|
20281
20317
|
import figures2 from "figures";
|
|
20282
|
-
import { jsx as
|
|
20318
|
+
import { jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
20283
20319
|
function cycleLabel(cycle, index) {
|
|
20284
20320
|
const parts = [];
|
|
20285
20321
|
for (let i = 0; i < cycle.edges.length; i++) {
|
|
@@ -20291,16 +20327,16 @@ function cycleLabel(cycle, index) {
|
|
|
20291
20327
|
}
|
|
20292
20328
|
function CyclesPanel({ cycles, cursor }) {
|
|
20293
20329
|
return /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE2.warning, paddingX: 1, marginTop: 1, children: [
|
|
20294
|
-
/* @__PURE__ */
|
|
20295
|
-
/* @__PURE__ */
|
|
20330
|
+
/* @__PURE__ */ jsx16(Text13, { bold: true, color: PALETTE2.warning, children: `Cycles detected (${cycles.length}):` }),
|
|
20331
|
+
/* @__PURE__ */ jsx16(Text13, { children: " " }),
|
|
20296
20332
|
cycles.map((cycle, i) => {
|
|
20297
20333
|
const isCursor = i === cursor;
|
|
20298
20334
|
return /* @__PURE__ */ jsxs12(Text13, { children: [
|
|
20299
|
-
isCursor ? /* @__PURE__ */
|
|
20300
|
-
/* @__PURE__ */
|
|
20335
|
+
isCursor ? /* @__PURE__ */ jsx16(Text13, { color: PALETTE2.info, bold: true, children: figures2.pointer }) : /* @__PURE__ */ jsx16(Text13, { children: " " }),
|
|
20336
|
+
/* @__PURE__ */ jsx16(Text13, { color: PALETTE2.warning, inverse: isCursor, children: " " + cycleLabel(cycle, i) })
|
|
20301
20337
|
] }, i);
|
|
20302
20338
|
}),
|
|
20303
|
-
/* @__PURE__ */
|
|
20339
|
+
/* @__PURE__ */ jsx16(Text13, { children: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [c/Esc] close" })
|
|
20304
20340
|
] });
|
|
20305
20341
|
}
|
|
20306
20342
|
var init_cycles_panel = __esm({
|
|
@@ -20312,13 +20348,13 @@ var init_cycles_panel = __esm({
|
|
|
20312
20348
|
|
|
20313
20349
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/reject-prompt.tsx
|
|
20314
20350
|
import { Box as Box13, Text as Text14 } from "ink";
|
|
20315
|
-
import { jsx as
|
|
20351
|
+
import { jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
20316
20352
|
function RejectPrompt({ pending }) {
|
|
20317
20353
|
return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE2.warning, paddingX: 1, marginTop: 1, children: [
|
|
20318
|
-
/* @__PURE__ */
|
|
20319
|
-
pending.ancestors.length > 0 && /* @__PURE__ */
|
|
20320
|
-
pending.descendants.length > 0 && /* @__PURE__ */
|
|
20321
|
-
/* @__PURE__ */
|
|
20354
|
+
/* @__PURE__ */ jsx17(Text14, { bold: true, color: PALETTE2.warning, children: `Rejecting ${pending.target} will:` }),
|
|
20355
|
+
pending.ancestors.length > 0 && /* @__PURE__ */ jsx17(Text14, { children: `- Reject ancestors: ${pending.ancestors.join(", ")}` }),
|
|
20356
|
+
pending.descendants.length > 0 && /* @__PURE__ */ jsx17(Text14, { children: `- Deselect descendants: ${pending.descendants.join(", ")}` }),
|
|
20357
|
+
/* @__PURE__ */ jsx17(Text14, { children: "[y] confirm \xB7 [n]/[Esc] cancel" })
|
|
20322
20358
|
] });
|
|
20323
20359
|
}
|
|
20324
20360
|
var init_reject_prompt = __esm({
|
|
@@ -20330,11 +20366,11 @@ var init_reject_prompt = __esm({
|
|
|
20330
20366
|
|
|
20331
20367
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/LegendEntry.tsx
|
|
20332
20368
|
import { Text as Text15 } from "ink";
|
|
20333
|
-
import { jsx as
|
|
20369
|
+
import { jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
20334
20370
|
function legendEntry(keyBracket, label, active = false) {
|
|
20335
20371
|
return /* @__PURE__ */ jsxs14(Text15, { children: [
|
|
20336
|
-
/* @__PURE__ */
|
|
20337
|
-
/* @__PURE__ */
|
|
20372
|
+
/* @__PURE__ */ jsx18(Text15, { color: active ? PALETTE2.warning : PALETTE2.info, inverse: active, children: keyBracket }),
|
|
20373
|
+
/* @__PURE__ */ jsx18(Text15, { color: active ? PALETTE2.warning : void 0, inverse: active, children: " " + label })
|
|
20338
20374
|
] }, keyBracket + label);
|
|
20339
20375
|
}
|
|
20340
20376
|
var init_LegendEntry = __esm({
|
|
@@ -20368,7 +20404,7 @@ var init_CompactControlBar = __esm({
|
|
|
20368
20404
|
|
|
20369
20405
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CounterStrip.tsx
|
|
20370
20406
|
import { Box as Box15, Text as Text16 } from "ink";
|
|
20371
|
-
import { jsx as
|
|
20407
|
+
import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
20372
20408
|
function CounterStrip(props) {
|
|
20373
20409
|
const { counters, totalWidth } = props;
|
|
20374
20410
|
const condensed = totalWidth < 60;
|
|
@@ -20376,25 +20412,25 @@ function CounterStrip(props) {
|
|
|
20376
20412
|
const labelRej = condensed ? "Rej" : "Rejected";
|
|
20377
20413
|
const labelUnd = condensed ? "Und" : "Undecided";
|
|
20378
20414
|
const sep = condensed ? " | " : " ";
|
|
20379
|
-
return /* @__PURE__ */
|
|
20415
|
+
return /* @__PURE__ */ jsx19(Box15, { children: /* @__PURE__ */ jsxs16(Text16, { children: [
|
|
20380
20416
|
/* @__PURE__ */ jsxs16(Text16, { color: PALETTE2.muted, children: [
|
|
20381
20417
|
labelGrp,
|
|
20382
20418
|
" "
|
|
20383
20419
|
] }),
|
|
20384
|
-
/* @__PURE__ */
|
|
20385
|
-
/* @__PURE__ */
|
|
20420
|
+
/* @__PURE__ */ jsx19(Text16, { bold: true, children: counters.groups }),
|
|
20421
|
+
/* @__PURE__ */ jsx19(Text16, { color: PALETTE2.muted, children: sep }),
|
|
20386
20422
|
/* @__PURE__ */ jsxs16(Text16, { color: PALETTE2.muted, children: [
|
|
20387
20423
|
labelRej,
|
|
20388
20424
|
" "
|
|
20389
20425
|
] }),
|
|
20390
|
-
/* @__PURE__ */
|
|
20391
|
-
/* @__PURE__ */
|
|
20426
|
+
/* @__PURE__ */ jsx19(Text16, { bold: true, children: counters.rejected }),
|
|
20427
|
+
/* @__PURE__ */ jsx19(Text16, { color: PALETTE2.muted, children: sep }),
|
|
20392
20428
|
/* @__PURE__ */ jsxs16(Text16, { color: PALETTE2.muted, children: [
|
|
20393
20429
|
labelUnd,
|
|
20394
20430
|
" "
|
|
20395
20431
|
] }),
|
|
20396
|
-
/* @__PURE__ */
|
|
20397
|
-
/* @__PURE__ */
|
|
20432
|
+
/* @__PURE__ */ jsx19(Text16, { bold: true, children: counters.undecided }),
|
|
20433
|
+
/* @__PURE__ */ jsx19(Text16, { color: PALETTE2.muted, children: sep })
|
|
20398
20434
|
] }) });
|
|
20399
20435
|
}
|
|
20400
20436
|
var init_CounterStrip = __esm({
|
|
@@ -20407,7 +20443,7 @@ var init_CounterStrip = __esm({
|
|
|
20407
20443
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GotoBanner.tsx
|
|
20408
20444
|
import figures3 from "figures";
|
|
20409
20445
|
import { Box as Box16, Text as Text17 } from "ink";
|
|
20410
|
-
import { jsx as
|
|
20446
|
+
import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
20411
20447
|
function windowStart(rowCount, highlightIndex, maxRows) {
|
|
20412
20448
|
if (rowCount <= maxRows) return 0;
|
|
20413
20449
|
const maxStart = rowCount - maxRows;
|
|
@@ -20418,8 +20454,8 @@ function windowStart(rowCount, highlightIndex, maxRows) {
|
|
|
20418
20454
|
}
|
|
20419
20455
|
function defaultRenderRow(row, index, isCursor) {
|
|
20420
20456
|
return /* @__PURE__ */ jsxs17(Text17, { children: [
|
|
20421
|
-
isCursor ? /* @__PURE__ */
|
|
20422
|
-
/* @__PURE__ */
|
|
20457
|
+
isCursor ? /* @__PURE__ */ jsx20(Text17, { color: PALETTE2.info, bold: true, children: figures3.pointer }) : /* @__PURE__ */ jsx20(Text17, { children: " " }),
|
|
20458
|
+
/* @__PURE__ */ jsx20(Text17, { inverse: isCursor, children: " " + row.label })
|
|
20423
20459
|
] }, index);
|
|
20424
20460
|
}
|
|
20425
20461
|
function GotoBanner({
|
|
@@ -20449,14 +20485,14 @@ function GotoBanner({
|
|
|
20449
20485
|
width,
|
|
20450
20486
|
flexShrink: 0,
|
|
20451
20487
|
children: [
|
|
20452
|
-
/* @__PURE__ */
|
|
20453
|
-
moreAbove > 0 && /* @__PURE__ */
|
|
20488
|
+
/* @__PURE__ */ jsx20(Text17, { bold: true, children: title }),
|
|
20489
|
+
moreAbove > 0 && /* @__PURE__ */ jsx20(Text17, { color: PALETTE2.muted, children: ` \u25B2 ${moreAbove} more` }),
|
|
20454
20490
|
visible.map((row, vi) => {
|
|
20455
20491
|
const i = start + vi;
|
|
20456
20492
|
return renderRow(row, i, i === highlightIndex);
|
|
20457
20493
|
}),
|
|
20458
|
-
moreBelow > 0 && /* @__PURE__ */
|
|
20459
|
-
footerHint !== void 0 && /* @__PURE__ */
|
|
20494
|
+
moreBelow > 0 && /* @__PURE__ */ jsx20(Text17, { color: PALETTE2.muted, children: ` \u25BC ${moreBelow} more` }),
|
|
20495
|
+
footerHint !== void 0 && /* @__PURE__ */ jsx20(Text17, { color: PALETTE2.muted, children: footerHint })
|
|
20460
20496
|
]
|
|
20461
20497
|
}
|
|
20462
20498
|
);
|
|
@@ -20820,7 +20856,7 @@ var init_composite_closure = __esm({
|
|
|
20820
20856
|
|
|
20821
20857
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/badge.tsx
|
|
20822
20858
|
import { Text as Text18 } from "ink";
|
|
20823
|
-
import { jsx as
|
|
20859
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
20824
20860
|
function previewBadge(annotation) {
|
|
20825
20861
|
switch (annotation) {
|
|
20826
20862
|
case "new":
|
|
@@ -20839,7 +20875,7 @@ function PreviewBadge({
|
|
|
20839
20875
|
badge,
|
|
20840
20876
|
highlighted = false
|
|
20841
20877
|
}) {
|
|
20842
|
-
return badge ? /* @__PURE__ */
|
|
20878
|
+
return badge ? /* @__PURE__ */ jsx21(Text18, { color: !highlighted && badge.dim ? PALETTE2.muted : badge.color, bold: badge.bold, children: badge.char }) : /* @__PURE__ */ jsx21(Text18, { children: " " });
|
|
20843
20879
|
}
|
|
20844
20880
|
var init_badge = __esm({
|
|
20845
20881
|
"packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/badge.tsx"() {
|
|
@@ -20851,7 +20887,7 @@ var init_badge = __esm({
|
|
|
20851
20887
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GroupedSidebar.tsx
|
|
20852
20888
|
import figures4 from "figures";
|
|
20853
20889
|
import { Box as Box17, Text as Text19 } from "ink";
|
|
20854
|
-
import { jsx as
|
|
20890
|
+
import { jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
20855
20891
|
function isEmpty(entry) {
|
|
20856
20892
|
return Object.keys(entry.$properties ?? {}).length === 0 && Object.keys(entry.$slots ?? {}).length === 0;
|
|
20857
20893
|
}
|
|
@@ -21281,7 +21317,7 @@ function GroupedSidebar(props) {
|
|
|
21281
21317
|
" ",
|
|
21282
21318
|
emptyMessage
|
|
21283
21319
|
] }),
|
|
21284
|
-
windowed && /* @__PURE__ */
|
|
21320
|
+
windowed && /* @__PURE__ */ jsx22(WindowIndicator, { direction: "up", count: start }),
|
|
21285
21321
|
rows.map((row, i) => {
|
|
21286
21322
|
const absoluteRowIdx = start + i;
|
|
21287
21323
|
const isSelected = selectedRowIdx !== void 0 ? absoluteRowIdx === selectedRowIdx && row.itemIdx >= 0 : row.itemIdx >= 0 && row.itemIdx === selectedIdx;
|
|
@@ -21309,10 +21345,10 @@ function GroupedSidebar(props) {
|
|
|
21309
21345
|
isCursor
|
|
21310
21346
|
});
|
|
21311
21347
|
return /* @__PURE__ */ jsxs18(Box17, { children: [
|
|
21312
|
-
isCursor ? /* @__PURE__ */
|
|
21313
|
-
/* @__PURE__ */
|
|
21314
|
-
selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */
|
|
21315
|
-
aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */
|
|
21348
|
+
isCursor ? /* @__PURE__ */ jsx22(Text19, { color: PALETTE2.info, bold: true, children: figures4.pointer }) : /* @__PURE__ */ jsx22(Text19, { children: " " }),
|
|
21349
|
+
/* @__PURE__ */ jsx22(PreviewBadge, { badge, highlighted: isSelected }),
|
|
21350
|
+
selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */ jsx22(Text19, { color: !isSelected && selDim ? PALETTE2.muted : selColor, bold: selBold, children: " " + selGlyph }) : /* @__PURE__ */ jsx22(Text19, { children: " " })),
|
|
21351
|
+
aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */ jsx22(Text19, { color: PALETTE2.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx22(Text19, { children: " " })),
|
|
21316
21352
|
/* @__PURE__ */ jsxs18(
|
|
21317
21353
|
Text19,
|
|
21318
21354
|
{
|
|
@@ -21327,10 +21363,10 @@ function GroupedSidebar(props) {
|
|
|
21327
21363
|
]
|
|
21328
21364
|
}
|
|
21329
21365
|
),
|
|
21330
|
-
inheritanceStyle.glyph && /* @__PURE__ */
|
|
21366
|
+
inheritanceStyle.glyph && /* @__PURE__ */ jsx22(Text19, { color: inheritanceStyle.dim ? PALETTE2.muted : inheritanceStyle.color, bold: inheritanceStyle.bold, children: " " + inheritanceStyle.glyph })
|
|
21331
21367
|
] }, row.key);
|
|
21332
21368
|
}),
|
|
21333
|
-
windowed && /* @__PURE__ */
|
|
21369
|
+
windowed && /* @__PURE__ */ jsx22(WindowIndicator, { direction: "down", count: allRows.length - end })
|
|
21334
21370
|
] });
|
|
21335
21371
|
}
|
|
21336
21372
|
var GLYPH_EXPAND_COLLAPSED, GLYPH_EXPAND_EXPANDED, GLYPH_TREE_MID, GLYPH_TREE_LAST, GLYPH_WARN, GLYPH_ERROR;
|
|
@@ -21351,7 +21387,7 @@ var init_GroupedSidebar = __esm({
|
|
|
21351
21387
|
});
|
|
21352
21388
|
|
|
21353
21389
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/hooks/useImmediateInput.ts
|
|
21354
|
-
import { useLayoutEffect, useRef as
|
|
21390
|
+
import { useLayoutEffect, useRef as useRef4 } from "react";
|
|
21355
21391
|
import { useStdin } from "ink";
|
|
21356
21392
|
function parseInput(data) {
|
|
21357
21393
|
const isShiftTab = data === "\x1B[Z";
|
|
@@ -21413,7 +21449,7 @@ function registerInputHandler(stdin, setRawMode, handler) {
|
|
|
21413
21449
|
}
|
|
21414
21450
|
function useImmediateInput(handler, enabled = true) {
|
|
21415
21451
|
const { stdin, setRawMode } = useStdin();
|
|
21416
|
-
const handlerRef =
|
|
21452
|
+
const handlerRef = useRef4(handler);
|
|
21417
21453
|
handlerRef.current = handler;
|
|
21418
21454
|
useLayoutEffect(() => {
|
|
21419
21455
|
if (!enabled) return;
|
|
@@ -21458,9 +21494,9 @@ var init_use_terminal_size = __esm({
|
|
|
21458
21494
|
});
|
|
21459
21495
|
|
|
21460
21496
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/HelpOverlay.tsx
|
|
21461
|
-
import
|
|
21497
|
+
import React8 from "react";
|
|
21462
21498
|
import { Box as Box18, Text as Text20 } from "ink";
|
|
21463
|
-
import { Fragment as Fragment2, jsx as
|
|
21499
|
+
import { Fragment as Fragment2, jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
21464
21500
|
function HelpOverlay(props) {
|
|
21465
21501
|
const { onClose } = props;
|
|
21466
21502
|
const { columns: terminalColumns, rows: terminalRows } = useTerminalSize();
|
|
@@ -21481,11 +21517,11 @@ function HelpOverlay(props) {
|
|
|
21481
21517
|
height: panelHeight,
|
|
21482
21518
|
overflowY: "hidden",
|
|
21483
21519
|
children: [
|
|
21484
|
-
/* @__PURE__ */
|
|
21485
|
-
props.sections.map((section) => /* @__PURE__ */ jsxs19(
|
|
21486
|
-
/* @__PURE__ */
|
|
21487
|
-
/* @__PURE__ */
|
|
21488
|
-
section.entries.map((entry) => /* @__PURE__ */
|
|
21520
|
+
/* @__PURE__ */ jsx23(Text20, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
|
|
21521
|
+
props.sections.map((section) => /* @__PURE__ */ jsxs19(React8.Fragment, { children: [
|
|
21522
|
+
/* @__PURE__ */ jsx23(Text20, { children: " " }),
|
|
21523
|
+
/* @__PURE__ */ jsx23(Text20, { bold: true, children: section.title }),
|
|
21524
|
+
section.entries.map((entry) => /* @__PURE__ */ jsx23(Text20, { children: entry.keys ? " " + entry.keys.padEnd(16) + " " + entry.label : " " + entry.label }, entry.keys + entry.label))
|
|
21489
21525
|
] }, section.title))
|
|
21490
21526
|
]
|
|
21491
21527
|
}
|
|
@@ -21502,31 +21538,31 @@ function HelpOverlay(props) {
|
|
|
21502
21538
|
height: panelHeight,
|
|
21503
21539
|
overflowY: "hidden",
|
|
21504
21540
|
children: [
|
|
21505
|
-
/* @__PURE__ */
|
|
21506
|
-
/* @__PURE__ */
|
|
21507
|
-
/* @__PURE__ */
|
|
21508
|
-
/* @__PURE__ */
|
|
21509
|
-
/* @__PURE__ */
|
|
21510
|
-
/* @__PURE__ */
|
|
21511
|
-
/* @__PURE__ */
|
|
21541
|
+
/* @__PURE__ */ jsx23(Text20, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
|
|
21542
|
+
/* @__PURE__ */ jsx23(Text20, { children: " " }),
|
|
21543
|
+
/* @__PURE__ */ jsx23(Text20, { bold: true, children: "Navigation" }),
|
|
21544
|
+
/* @__PURE__ */ jsx23(Text20, { children: " \u2191 / k / PgUp Scroll up" }),
|
|
21545
|
+
/* @__PURE__ */ jsx23(Text20, { children: " \u2193 / j / PgDn Scroll down" }),
|
|
21546
|
+
/* @__PURE__ */ jsx23(Text20, { children: " g / Home Jump to top" }),
|
|
21547
|
+
/* @__PURE__ */ jsx23(Text20, { children: " G / End Jump to bottom" }),
|
|
21512
21548
|
mode === "review" && /* @__PURE__ */ jsxs19(Fragment2, { children: [
|
|
21513
|
-
/* @__PURE__ */
|
|
21514
|
-
/* @__PURE__ */
|
|
21515
|
-
/* @__PURE__ */
|
|
21516
|
-
/* @__PURE__ */
|
|
21517
|
-
/* @__PURE__ */
|
|
21518
|
-
/* @__PURE__ */
|
|
21519
|
-
/* @__PURE__ */
|
|
21520
|
-
/* @__PURE__ */
|
|
21521
|
-
/* @__PURE__ */
|
|
21522
|
-
/* @__PURE__ */
|
|
21523
|
-
/* @__PURE__ */
|
|
21524
|
-
/* @__PURE__ */
|
|
21525
|
-
/* @__PURE__ */
|
|
21549
|
+
/* @__PURE__ */ jsx23(Text20, { children: " " }),
|
|
21550
|
+
/* @__PURE__ */ jsx23(Text20, { bold: true, children: "[Review mode only]" }),
|
|
21551
|
+
/* @__PURE__ */ jsx23(Text20, { children: " Tab Toggle sidebar/detail" }),
|
|
21552
|
+
/* @__PURE__ */ jsx23(Text20, { children: " a Accept component" }),
|
|
21553
|
+
/* @__PURE__ */ jsx23(Text20, { children: " r Reject component" }),
|
|
21554
|
+
/* @__PURE__ */ jsx23(Text20, { children: " e Edit proposal" }),
|
|
21555
|
+
/* @__PURE__ */ jsx23(Text20, { children: " s Toggle source code" }),
|
|
21556
|
+
/* @__PURE__ */ jsx23(Text20, { children: " A Approve all" }),
|
|
21557
|
+
/* @__PURE__ */ jsx23(Text20, { children: " F Open finalize dialog" }),
|
|
21558
|
+
/* @__PURE__ */ jsx23(Text20, { children: " Ctrl+S Save draft" }),
|
|
21559
|
+
/* @__PURE__ */ jsx23(Text20, { children: " Ctrl+Z Undo" }),
|
|
21560
|
+
/* @__PURE__ */ jsx23(Text20, { children: " Ctrl+Y Redo" }),
|
|
21561
|
+
/* @__PURE__ */ jsx23(Text20, { children: " Esc Exit edit / close" })
|
|
21526
21562
|
] }),
|
|
21527
|
-
/* @__PURE__ */
|
|
21528
|
-
/* @__PURE__ */
|
|
21529
|
-
/* @__PURE__ */
|
|
21563
|
+
/* @__PURE__ */ jsx23(Text20, { children: " " }),
|
|
21564
|
+
/* @__PURE__ */ jsx23(Text20, { children: " h Close help" }),
|
|
21565
|
+
/* @__PURE__ */ jsx23(Text20, { children: " q Quit" })
|
|
21530
21566
|
]
|
|
21531
21567
|
}
|
|
21532
21568
|
);
|
|
@@ -21607,7 +21643,7 @@ var init_sidebar_input = __esm({
|
|
|
21607
21643
|
|
|
21608
21644
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/SearchMatchSummary.tsx
|
|
21609
21645
|
import { Box as Box19, Text as Text21 } from "ink";
|
|
21610
|
-
import { Fragment as Fragment3, jsx as
|
|
21646
|
+
import { Fragment as Fragment3, jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
21611
21647
|
function SearchMatchSummary({
|
|
21612
21648
|
open,
|
|
21613
21649
|
query,
|
|
@@ -21622,13 +21658,13 @@ function SearchMatchSummary({
|
|
|
21622
21658
|
open && /* @__PURE__ */ jsxs20(Box19, { marginTop, flexDirection: "column", children: [
|
|
21623
21659
|
/* @__PURE__ */ jsxs20(Text21, { children: [
|
|
21624
21660
|
`/${query}`,
|
|
21625
|
-
/* @__PURE__ */
|
|
21626
|
-
query && /* @__PURE__ */
|
|
21627
|
-
/* @__PURE__ */
|
|
21661
|
+
/* @__PURE__ */ jsx24(Text21, { color: PALETTE2.info, children: "\u258E" }),
|
|
21662
|
+
query && /* @__PURE__ */ jsx24(Text21, { color: PALETTE2.muted, children: formatSearchMatchSummary(matches, total) }),
|
|
21663
|
+
/* @__PURE__ */ jsx24(Text21, { children: " \xB7 [Esc] leave" })
|
|
21628
21664
|
] }),
|
|
21629
|
-
autocompleteCandidates.length > 1 && /* @__PURE__ */
|
|
21665
|
+
autocompleteCandidates.length > 1 && /* @__PURE__ */ jsx24(Text21, { color: PALETTE2.muted, children: ` possibilities: ${autocompleteCandidates.join(" \xB7 ").slice(0, 120)}` })
|
|
21630
21666
|
] }),
|
|
21631
|
-
!open && query && /* @__PURE__ */
|
|
21667
|
+
!open && query && /* @__PURE__ */ jsx24(Box19, { marginTop, children: /* @__PURE__ */ jsx24(Text21, { children: `/${query}${formatSearchMatchSummary(matches, total)} \xB7 [Esc] clear` }) })
|
|
21632
21668
|
] });
|
|
21633
21669
|
}
|
|
21634
21670
|
var init_SearchMatchSummary = __esm({
|
|
@@ -22398,7 +22434,7 @@ var init_state = __esm({
|
|
|
22398
22434
|
});
|
|
22399
22435
|
|
|
22400
22436
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/use-scope-gate.ts
|
|
22401
|
-
import { useEffect as useEffect7, useMemo as useMemo2, useRef as
|
|
22437
|
+
import { useEffect as useEffect7, useMemo as useMemo2, useRef as useRef5, useState as useState12 } from "react";
|
|
22402
22438
|
function useScopeGate({ components, onConfirm, onQuit }) {
|
|
22403
22439
|
const { columns: totalWidth, rows: terminalRows } = useTerminalSize();
|
|
22404
22440
|
const columnPlan = useMemo2(() => computeColumnWidths(totalWidth), [totalWidth]);
|
|
@@ -22441,7 +22477,7 @@ function useScopeGate({ components, onConfirm, onQuit }) {
|
|
|
22441
22477
|
for (const p of cycleParticipants) seed.add(p);
|
|
22442
22478
|
return seed;
|
|
22443
22479
|
});
|
|
22444
|
-
const seededGroupsRef =
|
|
22480
|
+
const seededGroupsRef = useRef5(closures.size > 0 || cycleParticipants.size > 0);
|
|
22445
22481
|
useEffect7(() => {
|
|
22446
22482
|
if (seededGroupsRef.current) return;
|
|
22447
22483
|
if (closures.size === 0 && cycleParticipants.size === 0) return;
|
|
@@ -22888,30 +22924,30 @@ var init_use_scope_gate = __esm({
|
|
|
22888
22924
|
|
|
22889
22925
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/screen.tsx
|
|
22890
22926
|
import { Box as Box20, Text as Text22 } from "ink";
|
|
22891
|
-
import { Fragment as Fragment4, jsx as
|
|
22927
|
+
import { Fragment as Fragment4, jsx as jsx25, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
22892
22928
|
function ScopeGateScreen(props) {
|
|
22893
22929
|
if (props.components.length === 0) {
|
|
22894
|
-
return /* @__PURE__ */
|
|
22930
|
+
return /* @__PURE__ */ jsx25(Box20, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx25(Text22, { color: PALETTE2.error, children: "Error: no components found for this session \u2014 please re-run analyze extract." }) });
|
|
22895
22931
|
}
|
|
22896
|
-
return /* @__PURE__ */
|
|
22932
|
+
return /* @__PURE__ */ jsx25(ScopeGateView, { ...props });
|
|
22897
22933
|
}
|
|
22898
22934
|
function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
22899
22935
|
const gate = useScopeGate({ components, onConfirm, onQuit });
|
|
22900
22936
|
const { search, graph, columnPlan, panelLayout, counters } = gate;
|
|
22901
22937
|
if (gate.showHelp) {
|
|
22902
|
-
return /* @__PURE__ */
|
|
22938
|
+
return /* @__PURE__ */ jsx25(HelpOverlay, { sections: HELP_SECTIONS, handleInput: false, onClose: gate.closeHelp });
|
|
22903
22939
|
}
|
|
22904
22940
|
return /* @__PURE__ */ jsxs21(Box20, { flexDirection: "column", paddingX: 2, children: [
|
|
22905
22941
|
/* @__PURE__ */ jsxs21(Box20, { flexDirection: "row", flexWrap: "wrap", children: [
|
|
22906
|
-
/* @__PURE__ */
|
|
22942
|
+
/* @__PURE__ */ jsx25(CounterStrip, { counters, totalWidth: gate.totalWidth }),
|
|
22907
22943
|
gate.aiExcludedCount > 0 && /* @__PURE__ */ jsxs21(Text22, { color: PALETTE2.muted, children: [
|
|
22908
22944
|
`${gate.aiExcludedCount} component${gate.aiExcludedCount === 1 ? "" : "s"} flagged by AI`,
|
|
22909
|
-
gate.aiRows.length > 0 && /* @__PURE__ */
|
|
22945
|
+
gate.aiRows.length > 0 && /* @__PURE__ */ jsx25(Text22, { color: PALETTE2.info, children: " \u2014 press [x] to see why" })
|
|
22910
22946
|
] })
|
|
22911
22947
|
] }),
|
|
22912
|
-
graph.cycles.length > 0 && /* @__PURE__ */
|
|
22948
|
+
graph.cycles.length > 0 && /* @__PURE__ */ jsx25(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text22, { color: PALETTE2.muted, children: "If you must have components with cycles, select them together into the generate step and then use the editor to fix them." }) }),
|
|
22913
22949
|
/* @__PURE__ */ jsxs21(Box20, { flexDirection: "row", alignItems: "stretch", children: [
|
|
22914
|
-
gate.aiRationalePanelOpen ? /* @__PURE__ */
|
|
22950
|
+
gate.aiRationalePanelOpen ? /* @__PURE__ */ jsx25(
|
|
22915
22951
|
GotoBanner,
|
|
22916
22952
|
{
|
|
22917
22953
|
title: `Review flags (${gate.aiExcludedCount})`,
|
|
@@ -22921,7 +22957,7 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
22921
22957
|
width: columnPlan.main,
|
|
22922
22958
|
footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [x/Esc] close"
|
|
22923
22959
|
}
|
|
22924
|
-
) : /* @__PURE__ */
|
|
22960
|
+
) : /* @__PURE__ */ jsx25(
|
|
22925
22961
|
GroupedSidebar,
|
|
22926
22962
|
{
|
|
22927
22963
|
items: gate.groupedItems,
|
|
@@ -22950,8 +22986,8 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
22950
22986
|
}
|
|
22951
22987
|
),
|
|
22952
22988
|
columnPlan.layout === "two-column" && /* @__PURE__ */ jsxs21(Fragment4, { children: [
|
|
22953
|
-
/* @__PURE__ */
|
|
22954
|
-
/* @__PURE__ */
|
|
22989
|
+
/* @__PURE__ */ jsx25(Box20, { width: 2, flexShrink: 0 }),
|
|
22990
|
+
/* @__PURE__ */ jsx25(
|
|
22955
22991
|
AddedColumn,
|
|
22956
22992
|
{
|
|
22957
22993
|
width: columnPlan.added,
|
|
@@ -22966,9 +23002,9 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
22966
23002
|
)
|
|
22967
23003
|
] })
|
|
22968
23004
|
] }),
|
|
22969
|
-
gate.cyclesPanelOpen && /* @__PURE__ */
|
|
22970
|
-
gate.pendingRejectCascade && /* @__PURE__ */
|
|
22971
|
-
/* @__PURE__ */
|
|
23005
|
+
gate.cyclesPanelOpen && /* @__PURE__ */ jsx25(CyclesPanel, { cycles: gate.slotCycles, cursor: gate.cyclesCursor }),
|
|
23006
|
+
gate.pendingRejectCascade && /* @__PURE__ */ jsx25(RejectPrompt, { pending: gate.pendingRejectCascade }),
|
|
23007
|
+
/* @__PURE__ */ jsx25(
|
|
22972
23008
|
SearchMatchSummary,
|
|
22973
23009
|
{
|
|
22974
23010
|
open: search.searchOpen,
|
|
@@ -22979,7 +23015,7 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
22979
23015
|
marginTop: 1
|
|
22980
23016
|
}
|
|
22981
23017
|
),
|
|
22982
|
-
/* @__PURE__ */
|
|
23018
|
+
/* @__PURE__ */ jsx25(
|
|
22983
23019
|
CompactControlBar,
|
|
22984
23020
|
{
|
|
22985
23021
|
hasGroupRoots: gate.hasGroupRoots,
|
|
@@ -23097,11 +23133,11 @@ var init_load = __esm({
|
|
|
23097
23133
|
});
|
|
23098
23134
|
|
|
23099
23135
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/use-scope-gate-flow.ts
|
|
23100
|
-
import { useEffect as useEffect8, useMemo as useMemo3, useRef as
|
|
23136
|
+
import { useEffect as useEffect8, useMemo as useMemo3, useRef as useRef6, useState as useState13 } from "react";
|
|
23101
23137
|
function useScopeGateFlow(input, deps = realDeps2) {
|
|
23102
23138
|
const sessionId = input?.sessionId;
|
|
23103
23139
|
const loaded = useMemo3(() => sessionId ? deps.load(sessionId) : void 0, [sessionId]);
|
|
23104
|
-
const cacheCheck =
|
|
23140
|
+
const cacheCheck = useRef6(void 0);
|
|
23105
23141
|
const [confirmed, setConfirmed] = useState13();
|
|
23106
23142
|
useEffect8(() => {
|
|
23107
23143
|
if (!input || !loaded?.ok || cacheCheck.current) return;
|
|
@@ -23167,7 +23203,7 @@ var init_logic10 = __esm({
|
|
|
23167
23203
|
});
|
|
23168
23204
|
|
|
23169
23205
|
// packages/experience-design-system-cli/src/tui/import/steps/08-generation/screen.tsx
|
|
23170
|
-
import { jsx as
|
|
23206
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
23171
23207
|
function GenerationScreen({
|
|
23172
23208
|
progress,
|
|
23173
23209
|
agent,
|
|
@@ -23176,7 +23212,7 @@ function GenerationScreen({
|
|
|
23176
23212
|
stepNumber,
|
|
23177
23213
|
totalSteps
|
|
23178
23214
|
}) {
|
|
23179
|
-
return /* @__PURE__ */
|
|
23215
|
+
return /* @__PURE__ */ jsx26(
|
|
23180
23216
|
RunningStep,
|
|
23181
23217
|
{
|
|
23182
23218
|
stepNumber,
|
|
@@ -23378,10 +23414,10 @@ var init_run2 = __esm({
|
|
|
23378
23414
|
});
|
|
23379
23415
|
|
|
23380
23416
|
// packages/experience-design-system-cli/src/tui/import/steps/08-generation/use-generation.ts
|
|
23381
|
-
import { useEffect as useEffect9, useRef as
|
|
23417
|
+
import { useEffect as useEffect9, useRef as useRef7, useState as useState14 } from "react";
|
|
23382
23418
|
function useGeneration(input) {
|
|
23383
23419
|
const [state2, setState] = useState14();
|
|
23384
|
-
const current =
|
|
23420
|
+
const current = useRef7();
|
|
23385
23421
|
useEffect9(() => {
|
|
23386
23422
|
current.current = input;
|
|
23387
23423
|
if (!input) {
|
|
@@ -23858,7 +23894,7 @@ var init_logic11 = __esm({
|
|
|
23858
23894
|
});
|
|
23859
23895
|
|
|
23860
23896
|
// packages/experience-design-system-cli/src/tui/import/steps/preview-validation-error/screen.tsx
|
|
23861
|
-
import { jsx as
|
|
23897
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
23862
23898
|
function PreviewValidationErrorScreen({
|
|
23863
23899
|
errors,
|
|
23864
23900
|
missingNames,
|
|
@@ -23867,7 +23903,7 @@ function PreviewValidationErrorScreen({
|
|
|
23867
23903
|
onQuit
|
|
23868
23904
|
}) {
|
|
23869
23905
|
const matchedNames = matchedComponentNames(errors, missingNames);
|
|
23870
|
-
return /* @__PURE__ */
|
|
23906
|
+
return /* @__PURE__ */ jsx27(
|
|
23871
23907
|
GateStep,
|
|
23872
23908
|
{
|
|
23873
23909
|
intent: "error",
|
|
@@ -24239,10 +24275,10 @@ var init_scroll_offset = __esm({
|
|
|
24239
24275
|
});
|
|
24240
24276
|
|
|
24241
24277
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx
|
|
24242
|
-
import
|
|
24278
|
+
import React9, { useEffect as useEffect10, useLayoutEffect as useLayoutEffect2, useState as useState15 } from "react";
|
|
24243
24279
|
import figures5 from "figures";
|
|
24244
24280
|
import { Box as Box21, measureElement, Text as Text23 } from "ink";
|
|
24245
|
-
import { Fragment as Fragment5, jsx as
|
|
24281
|
+
import { Fragment as Fragment5, jsx as jsx28, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
24246
24282
|
function createCommonRowProps(selected, focusLevel, editingField, textCursor, valueCursor, cursorVisible, editingValue, valueText, width) {
|
|
24247
24283
|
return {
|
|
24248
24284
|
selected,
|
|
@@ -24381,13 +24417,13 @@ function serializeState(state2, originalJson) {
|
|
|
24381
24417
|
}
|
|
24382
24418
|
function Picker({ value, active }) {
|
|
24383
24419
|
return /* @__PURE__ */ jsxs22(Box21, { children: [
|
|
24384
|
-
active && /* @__PURE__ */
|
|
24385
|
-
/* @__PURE__ */
|
|
24386
|
-
active && /* @__PURE__ */
|
|
24420
|
+
active && /* @__PURE__ */ jsx28(Text23, { color: PALETTE.warning, children: "\u2039" }),
|
|
24421
|
+
/* @__PURE__ */ jsx28(Text23, { color: active ? PALETTE.warning : void 0, bold: active, children: value }),
|
|
24422
|
+
active && /* @__PURE__ */ jsx28(Text23, { color: PALETTE.warning, children: "\u203A" })
|
|
24387
24423
|
] });
|
|
24388
24424
|
}
|
|
24389
24425
|
function Toggle({ value, active }) {
|
|
24390
|
-
return /* @__PURE__ */
|
|
24426
|
+
return /* @__PURE__ */ jsx28(Box21, { children: /* @__PURE__ */ jsx28(Text23, { color: active ? PALETTE.warning : value ? PALETTE.success : PALETTE.border, children: value ? "[\u2713]" : "[ ]" }) });
|
|
24391
24427
|
}
|
|
24392
24428
|
function InlinePropField({
|
|
24393
24429
|
label,
|
|
@@ -24410,7 +24446,7 @@ function RequiredField({
|
|
|
24410
24446
|
editingField,
|
|
24411
24447
|
activeField
|
|
24412
24448
|
}) {
|
|
24413
|
-
return /* @__PURE__ */
|
|
24449
|
+
return /* @__PURE__ */ jsx28(InlinePropField, { label: "req:", focused, children: /* @__PURE__ */ jsx28(Toggle, { value, active: editingField && activeField === "required" }) });
|
|
24414
24450
|
}
|
|
24415
24451
|
function DefaultValueRow({
|
|
24416
24452
|
display,
|
|
@@ -24422,7 +24458,7 @@ function DefaultValueRow({
|
|
|
24422
24458
|
focused ? "\u203A " : " ",
|
|
24423
24459
|
"default:"
|
|
24424
24460
|
] }),
|
|
24425
|
-
active ? /* @__PURE__ */
|
|
24461
|
+
active ? /* @__PURE__ */ jsx28(Picker, { value: display, active: true }) : /* @__PURE__ */ jsx28(Text23, { wrap: "wrap", children: display })
|
|
24426
24462
|
] });
|
|
24427
24463
|
}
|
|
24428
24464
|
function RowLabel({
|
|
@@ -24451,9 +24487,9 @@ function ValueInputRow({
|
|
|
24451
24487
|
cursorVisible
|
|
24452
24488
|
}) {
|
|
24453
24489
|
return /* @__PURE__ */ jsxs22(Box21, { paddingLeft: 2, children: [
|
|
24454
|
-
/* @__PURE__ */
|
|
24455
|
-
/* @__PURE__ */
|
|
24456
|
-
/* @__PURE__ */
|
|
24490
|
+
/* @__PURE__ */ jsx28(Text23, { color: PALETTE.accent, children: mode === "edit" ? "\u270E " : "+ " }),
|
|
24491
|
+
/* @__PURE__ */ jsx28(Text23, { children: valueText }),
|
|
24492
|
+
/* @__PURE__ */ jsx28(Text23, { inverse: cursorVisible, children: " " })
|
|
24457
24493
|
] });
|
|
24458
24494
|
}
|
|
24459
24495
|
function EditableListItem({
|
|
@@ -24466,9 +24502,9 @@ function EditableListItem({
|
|
|
24466
24502
|
}) {
|
|
24467
24503
|
const isBeingEdited = editingValue?.mode === "edit" && editingValue.index === index;
|
|
24468
24504
|
if (isBeingEdited) {
|
|
24469
|
-
return /* @__PURE__ */
|
|
24505
|
+
return /* @__PURE__ */ jsx28(ValueInputRow, { mode: "edit", valueText, cursorVisible });
|
|
24470
24506
|
}
|
|
24471
|
-
return /* @__PURE__ */
|
|
24507
|
+
return /* @__PURE__ */ jsx28(Box21, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx28(Text23, { color: active ? PALETTE.accent : void 0, children: active ? `${figures5.pointer} ${value}` : ` ${value}` }) });
|
|
24472
24508
|
}
|
|
24473
24509
|
function EditableValueList({
|
|
24474
24510
|
values,
|
|
@@ -24482,8 +24518,8 @@ function EditableValueList({
|
|
|
24482
24518
|
showAddInput
|
|
24483
24519
|
}) {
|
|
24484
24520
|
return /* @__PURE__ */ jsxs22(Fragment5, { children: [
|
|
24485
|
-
values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */
|
|
24486
|
-
values.map((value, index) => /* @__PURE__ */
|
|
24521
|
+
values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: emptyMessage }) : /* @__PURE__ */ jsx28(Box21, { paddingLeft: emptyPaddingLeft, children: /* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: emptyMessage }) })),
|
|
24522
|
+
values.map((value, index) => /* @__PURE__ */ jsx28(
|
|
24487
24523
|
EditableListItem,
|
|
24488
24524
|
{
|
|
24489
24525
|
value,
|
|
@@ -24495,7 +24531,7 @@ function EditableValueList({
|
|
|
24495
24531
|
},
|
|
24496
24532
|
index
|
|
24497
24533
|
)),
|
|
24498
|
-
showAddInput && editingValue?.mode === "add" && /* @__PURE__ */
|
|
24534
|
+
showAddInput && editingValue?.mode === "add" && /* @__PURE__ */ jsx28(ValueInputRow, { mode: "add", valueText, cursorVisible })
|
|
24499
24535
|
] });
|
|
24500
24536
|
}
|
|
24501
24537
|
function DefaultSubRow({
|
|
@@ -24512,12 +24548,12 @@ function DefaultSubRow({
|
|
|
24512
24548
|
focused ? "\u203A " : " ",
|
|
24513
24549
|
"default:"
|
|
24514
24550
|
] }),
|
|
24515
|
-
/* @__PURE__ */
|
|
24551
|
+
/* @__PURE__ */ jsx28(Text23, { color: focused ? void 0 : PALETTE.muted, children: "(not applicable)" })
|
|
24516
24552
|
] });
|
|
24517
24553
|
}
|
|
24518
24554
|
if (prop.type === "boolean") {
|
|
24519
24555
|
const display = prop.default === true ? "true" : prop.default === false ? "false" : "(unset)";
|
|
24520
|
-
return /* @__PURE__ */
|
|
24556
|
+
return /* @__PURE__ */ jsx28(DefaultValueRow, { display, active, focused });
|
|
24521
24557
|
}
|
|
24522
24558
|
if (prop.type === "enum") {
|
|
24523
24559
|
if (prop.values.length === 0) {
|
|
@@ -24526,11 +24562,11 @@ function DefaultSubRow({
|
|
|
24526
24562
|
focused ? "\u203A " : " ",
|
|
24527
24563
|
"default:"
|
|
24528
24564
|
] }),
|
|
24529
|
-
/* @__PURE__ */
|
|
24565
|
+
/* @__PURE__ */ jsx28(Text23, { color: focused ? void 0 : PALETTE.muted, children: "(no values defined)" })
|
|
24530
24566
|
] });
|
|
24531
24567
|
}
|
|
24532
24568
|
const display = typeof prop.default === "string" && prop.default !== "" ? prop.default : "(unset)";
|
|
24533
|
-
return /* @__PURE__ */
|
|
24569
|
+
return /* @__PURE__ */ jsx28(DefaultValueRow, { display, active, focused });
|
|
24534
24570
|
}
|
|
24535
24571
|
const value = typeof prop.default === "string" ? prop.default : "";
|
|
24536
24572
|
if (active) {
|
|
@@ -24540,9 +24576,9 @@ function DefaultSubRow({
|
|
|
24540
24576
|
"default:"
|
|
24541
24577
|
] }),
|
|
24542
24578
|
/* @__PURE__ */ jsxs22(Box21, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
24543
|
-
/* @__PURE__ */
|
|
24544
|
-
/* @__PURE__ */
|
|
24545
|
-
/* @__PURE__ */
|
|
24579
|
+
/* @__PURE__ */ jsx28(Text23, { children: value.slice(0, textCursor) }),
|
|
24580
|
+
/* @__PURE__ */ jsx28(Text23, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
|
|
24581
|
+
/* @__PURE__ */ jsx28(Text23, { children: value.slice(textCursor + 1) })
|
|
24546
24582
|
] })
|
|
24547
24583
|
] });
|
|
24548
24584
|
}
|
|
@@ -24551,7 +24587,7 @@ function DefaultSubRow({
|
|
|
24551
24587
|
focused ? "\u203A " : " ",
|
|
24552
24588
|
"default:"
|
|
24553
24589
|
] }),
|
|
24554
|
-
/* @__PURE__ */
|
|
24590
|
+
/* @__PURE__ */ jsx28(Text23, { color: focused || value ? void 0 : PALETTE.muted, children: value || "(none)" })
|
|
24555
24591
|
] });
|
|
24556
24592
|
}
|
|
24557
24593
|
function DescriptionField({
|
|
@@ -24571,7 +24607,7 @@ function DescriptionField({
|
|
|
24571
24607
|
focused ? "\u203A " : " ",
|
|
24572
24608
|
label
|
|
24573
24609
|
] }),
|
|
24574
|
-
/* @__PURE__ */
|
|
24610
|
+
/* @__PURE__ */ jsx28(Text23, { wrap: "truncate-end", color: value ? void 0 : PALETTE.muted, children: value || "\u2014" })
|
|
24575
24611
|
] });
|
|
24576
24612
|
}
|
|
24577
24613
|
return /* @__PURE__ */ jsxs22(Box21, { paddingLeft, flexDirection: "column", width, flexShrink: 0, children: [
|
|
@@ -24579,7 +24615,7 @@ function DescriptionField({
|
|
|
24579
24615
|
focused ? "\u203A " : " ",
|
|
24580
24616
|
label
|
|
24581
24617
|
] }),
|
|
24582
|
-
editing ? /* @__PURE__ */
|
|
24618
|
+
editing ? /* @__PURE__ */ jsx28(EditableDescription, { cursorVisible, value, textCursor }) : /* @__PURE__ */ jsx28(Text23, { wrap: "wrap", children: value || "\u2014" })
|
|
24583
24619
|
] });
|
|
24584
24620
|
}
|
|
24585
24621
|
function EditableDescription({
|
|
@@ -24589,7 +24625,7 @@ function EditableDescription({
|
|
|
24589
24625
|
}) {
|
|
24590
24626
|
return /* @__PURE__ */ jsxs22(Text23, { wrap: "wrap", children: [
|
|
24591
24627
|
value.slice(0, textCursor),
|
|
24592
|
-
/* @__PURE__ */
|
|
24628
|
+
/* @__PURE__ */ jsx28(Text23, { inverse: cursorVisible, children: value[textCursor] ?? " " }),
|
|
24593
24629
|
value.slice(textCursor + 1)
|
|
24594
24630
|
] });
|
|
24595
24631
|
}
|
|
@@ -24611,8 +24647,8 @@ function PropRow({
|
|
|
24611
24647
|
const descFocused = activeField === "description";
|
|
24612
24648
|
const descActive = editingField && descFocused;
|
|
24613
24649
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
24614
|
-
/* @__PURE__ */
|
|
24615
|
-
/* @__PURE__ */
|
|
24650
|
+
/* @__PURE__ */ jsx28(Box21, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx28(RowLabel, { name: prop.name, selected }) }),
|
|
24651
|
+
/* @__PURE__ */ jsx28(
|
|
24616
24652
|
DescriptionField,
|
|
24617
24653
|
{
|
|
24618
24654
|
value: prop.description,
|
|
@@ -24626,7 +24662,7 @@ function PropRow({
|
|
|
24626
24662
|
}
|
|
24627
24663
|
),
|
|
24628
24664
|
/* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
24629
|
-
/* @__PURE__ */
|
|
24665
|
+
/* @__PURE__ */ jsx28(
|
|
24630
24666
|
RequiredField,
|
|
24631
24667
|
{
|
|
24632
24668
|
value: prop.required,
|
|
@@ -24635,9 +24671,9 @@ function PropRow({
|
|
|
24635
24671
|
activeField
|
|
24636
24672
|
}
|
|
24637
24673
|
),
|
|
24638
|
-
/* @__PURE__ */
|
|
24674
|
+
/* @__PURE__ */ jsx28(InlinePropField, { label: "type:", focused: activeField === "type", children: editingField && activeField === "type" ? /* @__PURE__ */ jsx28(Picker, { value: prop.type, active: true }) : /* @__PURE__ */ jsx28(Text23, { children: prop.type }) })
|
|
24639
24675
|
] }),
|
|
24640
|
-
prop.type === "token" && /* @__PURE__ */
|
|
24676
|
+
prop.type === "token" && /* @__PURE__ */ jsx28(InlinePropField, { label: "kind:", focused: activeField === "tokenKind", width, children: editingField && activeField === "tokenKind" ? /* @__PURE__ */ jsx28(Picker, { value: prop.tokenKind || DESIGN_TOKEN_TYPES2[0], active: true }) : /* @__PURE__ */ jsx28(Text23, { wrap: "wrap", children: prop.tokenKind || "\u2014" }) }),
|
|
24641
24677
|
prop.type === "enum" && /* @__PURE__ */ jsxs22(Box21, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
24642
24678
|
/* @__PURE__ */ jsxs22(Text23, { color: activeField === "values" ? PALETTE.warning : PALETTE.muted, bold: activeField === "values", children: [
|
|
24643
24679
|
activeField === "values" ? "\u203A " : " ",
|
|
@@ -24649,7 +24685,7 @@ function PropRow({
|
|
|
24649
24685
|
"]"
|
|
24650
24686
|
] })
|
|
24651
24687
|
] }),
|
|
24652
|
-
/* @__PURE__ */
|
|
24688
|
+
/* @__PURE__ */ jsx28(
|
|
24653
24689
|
DefaultSubRow,
|
|
24654
24690
|
{
|
|
24655
24691
|
prop,
|
|
@@ -24664,7 +24700,7 @@ function PropRow({
|
|
|
24664
24700
|
activeField === "allowed" ? "\u203A " : " ",
|
|
24665
24701
|
"allowed:"
|
|
24666
24702
|
] }),
|
|
24667
|
-
editingField && activeField === "allowed" ? /* @__PURE__ */
|
|
24703
|
+
editingField && activeField === "allowed" ? /* @__PURE__ */ jsx28(Box21, { width: Math.max(1, width - 4), borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: /* @__PURE__ */ jsx28(Text23, { children: "press [t] to edit allowed tokens" }) }) : /* @__PURE__ */ jsx28(
|
|
24668
24704
|
Text23,
|
|
24669
24705
|
{
|
|
24670
24706
|
color: activeField !== "allowed" && prop.allowed.length === 0 ? PALETTE.muted : void 0,
|
|
@@ -24673,17 +24709,17 @@ function PropRow({
|
|
|
24673
24709
|
}
|
|
24674
24710
|
)
|
|
24675
24711
|
] }),
|
|
24676
|
-
selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */
|
|
24712
|
+
selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx28(Box21, { paddingLeft: 2, children: /* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: (() => {
|
|
24677
24713
|
const max = Math.max(8, width - 8);
|
|
24678
24714
|
const text = `~ ${rationale}`;
|
|
24679
24715
|
return text.length > max ? text.slice(0, max - 1) + "\u2026" : text;
|
|
24680
24716
|
})() }) }, rowKey ? `rationale-${rowKey}` : void 0),
|
|
24681
24717
|
selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs22(Box21, { paddingLeft: 2, flexDirection: "column", children: [
|
|
24682
24718
|
/* @__PURE__ */ jsxs22(Box21, { children: [
|
|
24683
|
-
/* @__PURE__ */
|
|
24684
|
-
activeField === "values" && /* @__PURE__ */
|
|
24719
|
+
/* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: "values:" }),
|
|
24720
|
+
activeField === "values" && /* @__PURE__ */ jsx28(Text23, { children: " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
|
|
24685
24721
|
] }),
|
|
24686
|
-
/* @__PURE__ */
|
|
24722
|
+
/* @__PURE__ */ jsx28(
|
|
24687
24723
|
EditableValueList,
|
|
24688
24724
|
{
|
|
24689
24725
|
values: prop.values,
|
|
@@ -24714,8 +24750,8 @@ function SlotRow({
|
|
|
24714
24750
|
pickerCursor
|
|
24715
24751
|
}) {
|
|
24716
24752
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
24717
|
-
/* @__PURE__ */
|
|
24718
|
-
/* @__PURE__ */
|
|
24753
|
+
/* @__PURE__ */ jsx28(Box21, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx28(RowLabel, { name: slot.name, selected, trailing: false }) }),
|
|
24754
|
+
/* @__PURE__ */ jsx28(
|
|
24719
24755
|
DescriptionField,
|
|
24720
24756
|
{
|
|
24721
24757
|
value: slot.description,
|
|
@@ -24728,7 +24764,7 @@ function SlotRow({
|
|
|
24728
24764
|
paddingLeft: 0
|
|
24729
24765
|
}
|
|
24730
24766
|
),
|
|
24731
|
-
/* @__PURE__ */
|
|
24767
|
+
/* @__PURE__ */ jsx28(Box21, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx28(
|
|
24732
24768
|
RequiredField,
|
|
24733
24769
|
{
|
|
24734
24770
|
value: slot.required,
|
|
@@ -24749,7 +24785,7 @@ function SlotRow({
|
|
|
24749
24785
|
]
|
|
24750
24786
|
}
|
|
24751
24787
|
),
|
|
24752
|
-
slot.allowedComponents.length === 0 ? /* @__PURE__ */
|
|
24788
|
+
slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: "(any)" }) : /* @__PURE__ */ jsx28(Text23, { wrap: "wrap", children: slot.allowedComponents.join(", ") })
|
|
24753
24789
|
] }),
|
|
24754
24790
|
selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", children: [
|
|
24755
24791
|
/* @__PURE__ */ jsxs22(Box21, { children: [
|
|
@@ -24764,9 +24800,9 @@ function SlotRow({
|
|
|
24764
24800
|
]
|
|
24765
24801
|
}
|
|
24766
24802
|
),
|
|
24767
|
-
editingField && activeField === "allowedComponents" && /* @__PURE__ */
|
|
24803
|
+
editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: slot.allowedComponents.length > 0 ? " [a] add [e] edit [r] remove [\u2190\u2192] cycle [\u2191\u2193] navigate [K/J] reorder" : " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
|
|
24768
24804
|
] }),
|
|
24769
|
-
/* @__PURE__ */
|
|
24805
|
+
/* @__PURE__ */ jsx28(
|
|
24770
24806
|
EditableValueList,
|
|
24771
24807
|
{
|
|
24772
24808
|
values: slot.allowedComponents,
|
|
@@ -24780,21 +24816,21 @@ function SlotRow({
|
|
|
24780
24816
|
showAddInput: editingField && activeField === "allowedComponents"
|
|
24781
24817
|
}
|
|
24782
24818
|
),
|
|
24783
|
-
editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */
|
|
24819
|
+
editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */ jsx28(Box21, { paddingLeft: 2, flexDirection: "column", children: pickerCandidates.length === 0 ? /* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: "(no valid components to add \u2014 all remaining candidates would create cycles)" }) : (() => {
|
|
24784
24820
|
const filtered = valueText.length === 0 ? pickerCandidates : pickerCandidates.filter((n) => n.toLowerCase().includes(valueText.toLowerCase()));
|
|
24785
24821
|
if (filtered.length === 0) {
|
|
24786
|
-
return /* @__PURE__ */
|
|
24822
|
+
return /* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: "(no candidates match \u2014 Enter to add as free text)" });
|
|
24787
24823
|
}
|
|
24788
24824
|
const cursor = pickerCursor % filtered.length;
|
|
24789
24825
|
const MAX_VISIBLE = 5;
|
|
24790
24826
|
const start = Math.max(0, Math.min(filtered.length - MAX_VISIBLE, cursor - 2));
|
|
24791
24827
|
const slice = filtered.slice(start, start + MAX_VISIBLE);
|
|
24792
24828
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", children: [
|
|
24793
|
-
/* @__PURE__ */
|
|
24829
|
+
/* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
|
|
24794
24830
|
slice.map((name, i) => {
|
|
24795
24831
|
const absIdx = start + i;
|
|
24796
24832
|
const isCursor = absIdx === cursor;
|
|
24797
|
-
return /* @__PURE__ */
|
|
24833
|
+
return /* @__PURE__ */ jsx28(Text23, { color: isCursor ? PALETTE.accent : PALETTE.muted, children: isCursor ? ` ${figures5.pointer} ${name}` : ` ${name}` }, name);
|
|
24798
24834
|
})
|
|
24799
24835
|
] });
|
|
24800
24836
|
})() })
|
|
@@ -24919,9 +24955,9 @@ function FieldEditor({
|
|
|
24919
24955
|
const [editorState, setEditorState] = useState15(initialState);
|
|
24920
24956
|
const [parseErr] = useState15(parseError);
|
|
24921
24957
|
const [listScrollStart, setListScrollStart] = useState15(0);
|
|
24922
|
-
const initialFocusScrollApplied =
|
|
24958
|
+
const initialFocusScrollApplied = React9.useRef(false);
|
|
24923
24959
|
const [rowHeights, setRowHeights] = useState15({});
|
|
24924
|
-
const rowMeasureRefs =
|
|
24960
|
+
const rowMeasureRefs = React9.useRef(/* @__PURE__ */ new Map());
|
|
24925
24961
|
const initialFocus = (() => {
|
|
24926
24962
|
if (initialFocusTarget?.kind === "description") {
|
|
24927
24963
|
return {
|
|
@@ -25008,23 +25044,23 @@ function FieldEditor({
|
|
|
25008
25044
|
const [showHelp, setShowHelp] = useState15(false);
|
|
25009
25045
|
const props = editorState.props;
|
|
25010
25046
|
const slots = editorState.slots;
|
|
25011
|
-
const contentPropIndexes =
|
|
25047
|
+
const contentPropIndexes = React9.useMemo(
|
|
25012
25048
|
() => props.flatMap((prop, index) => prop.category === "content" ? [index] : []),
|
|
25013
25049
|
[props]
|
|
25014
25050
|
);
|
|
25015
|
-
const designPropIndexes =
|
|
25051
|
+
const designPropIndexes = React9.useMemo(
|
|
25016
25052
|
() => props.flatMap((prop, index) => prop.category === "design" ? [index] : []),
|
|
25017
25053
|
[props]
|
|
25018
25054
|
);
|
|
25019
|
-
const hiddenPropIndexes =
|
|
25055
|
+
const hiddenPropIndexes = React9.useMemo(
|
|
25020
25056
|
() => showHiddenProps ? props.flatMap((prop, index) => prop.category === "state" || prop.category === "unattached" ? [index] : []) : [],
|
|
25021
25057
|
[props, showHiddenProps]
|
|
25022
25058
|
);
|
|
25023
|
-
const visiblePropIndexes =
|
|
25059
|
+
const visiblePropIndexes = React9.useMemo(
|
|
25024
25060
|
() => [...contentPropIndexes, ...designPropIndexes, ...hiddenPropIndexes],
|
|
25025
25061
|
[contentPropIndexes, designPropIndexes, hiddenPropIndexes]
|
|
25026
25062
|
);
|
|
25027
|
-
const propGroups =
|
|
25063
|
+
const propGroups = React9.useMemo(
|
|
25028
25064
|
() => [
|
|
25029
25065
|
{
|
|
25030
25066
|
kind: "content",
|
|
@@ -25044,7 +25080,7 @@ function FieldEditor({
|
|
|
25044
25080
|
],
|
|
25045
25081
|
[contentPropIndexes, designPropIndexes, hiddenPropIndexes]
|
|
25046
25082
|
);
|
|
25047
|
-
const selectableRows =
|
|
25083
|
+
const selectableRows = React9.useMemo(
|
|
25048
25084
|
() => [
|
|
25049
25085
|
...contentPropIndexes.map((idx) => ({ kind: "prop", idx })),
|
|
25050
25086
|
...designPropIndexes.map((idx) => ({ kind: "prop", idx })),
|
|
@@ -25054,7 +25090,7 @@ function FieldEditor({
|
|
|
25054
25090
|
[contentPropIndexes, designPropIndexes, hiddenPropIndexes, slots]
|
|
25055
25091
|
);
|
|
25056
25092
|
const visiblePropPosition = visiblePropIndexes.indexOf(propIdx);
|
|
25057
|
-
const selectedSelectableIndex =
|
|
25093
|
+
const selectedSelectableIndex = React9.useMemo(
|
|
25058
25094
|
() => selectableRows.findIndex(
|
|
25059
25095
|
(row) => inSlots ? row.kind === "slot" && row.idx === slotIdx : row.kind === "prop" && row.idx === propIdx
|
|
25060
25096
|
),
|
|
@@ -25073,12 +25109,12 @@ function FieldEditor({
|
|
|
25073
25109
|
}
|
|
25074
25110
|
};
|
|
25075
25111
|
const textEntryActive = focusLevel === "field" && editingField && activeField === "description" || focusLevel === "field" && editingField && activeField === "default" && (editorState.props[propIdx]?.type === "string" || editorState.props[propIdx]?.type === "token") || editingValue != null;
|
|
25076
|
-
|
|
25112
|
+
React9.useEffect(() => {
|
|
25077
25113
|
onTextEntryActiveChange?.(textEntryActive);
|
|
25078
25114
|
}, [textEntryActive, onTextEntryActiveChange]);
|
|
25079
25115
|
const currentProp = props[propIdx] ?? null;
|
|
25080
25116
|
const currentSlot = slots[slotIdx] ?? null;
|
|
25081
|
-
|
|
25117
|
+
React9.useEffect(() => {
|
|
25082
25118
|
if (showHiddenProps || inSlots || inComponentDesc || visiblePropPosition >= 0) return;
|
|
25083
25119
|
if (visiblePropIndexes.length > 0) {
|
|
25084
25120
|
setPropIdx(visiblePropIndexes[0]);
|
|
@@ -25097,22 +25133,22 @@ function FieldEditor({
|
|
|
25097
25133
|
setEditorState(next);
|
|
25098
25134
|
onChange(serializeState(next, value));
|
|
25099
25135
|
};
|
|
25100
|
-
const canonicalize =
|
|
25136
|
+
const canonicalize = React9.useCallback((json) => {
|
|
25101
25137
|
try {
|
|
25102
25138
|
return JSON.stringify(JSON.parse(json));
|
|
25103
25139
|
} catch {
|
|
25104
25140
|
return `__unparseable__:${json}`;
|
|
25105
25141
|
}
|
|
25106
25142
|
}, []);
|
|
25107
|
-
const initialStateRef =
|
|
25143
|
+
const initialStateRef = React9.useRef(initialState);
|
|
25108
25144
|
const baselineCanonical = canonicalize(serializeState(initialStateRef.current, value));
|
|
25109
25145
|
const currentCanonical = canonicalize(serializeState(editorState, value));
|
|
25110
25146
|
const isDirty = currentCanonical !== baselineCanonical;
|
|
25111
|
-
|
|
25147
|
+
React9.useEffect(() => {
|
|
25112
25148
|
onDirtyChange?.(isDirty);
|
|
25113
25149
|
}, [isDirty, onDirtyChange]);
|
|
25114
|
-
const lastDiscardTriggerRef =
|
|
25115
|
-
|
|
25150
|
+
const lastDiscardTriggerRef = React9.useRef(discardTrigger);
|
|
25151
|
+
React9.useEffect(() => {
|
|
25116
25152
|
if (discardTrigger === void 0) return;
|
|
25117
25153
|
if (discardTrigger === lastDiscardTriggerRef.current) return;
|
|
25118
25154
|
lastDiscardTriggerRef.current = discardTrigger;
|
|
@@ -25623,17 +25659,17 @@ function FieldEditor({
|
|
|
25623
25659
|
const innerWidth = Math.max(1, width - 2);
|
|
25624
25660
|
if (parseErr) {
|
|
25625
25661
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
|
|
25626
|
-
/* @__PURE__ */
|
|
25627
|
-
/* @__PURE__ */
|
|
25628
|
-
/* @__PURE__ */
|
|
25662
|
+
/* @__PURE__ */ jsx28(Text23, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
|
|
25663
|
+
/* @__PURE__ */ jsx28(Text23, { color: PALETTE.error, children: parseErr }),
|
|
25664
|
+
/* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: "Cannot display structured editor. Fix the JSON first." })
|
|
25629
25665
|
] });
|
|
25630
25666
|
}
|
|
25631
25667
|
if (props.length === 0 && slots.length === 0) {
|
|
25632
25668
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
|
|
25633
|
-
/* @__PURE__ */
|
|
25634
|
-
/* @__PURE__ */
|
|
25635
|
-
/* @__PURE__ */
|
|
25636
|
-
/* @__PURE__ */
|
|
25669
|
+
/* @__PURE__ */ jsx28(Text23, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
|
|
25670
|
+
/* @__PURE__ */ jsx28(Text23, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
|
|
25671
|
+
/* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: "You can add fields manually below or reject this component." }),
|
|
25672
|
+
/* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: "Enter to save \xB7 Esc to discard" })
|
|
25637
25673
|
] });
|
|
25638
25674
|
}
|
|
25639
25675
|
const hasEmptyProperties = props.length === 0 && slots.length === 0;
|
|
@@ -25762,12 +25798,12 @@ function FieldEditor({
|
|
|
25762
25798
|
const renderRow = (row, index) => {
|
|
25763
25799
|
const key = rowKey(row, index);
|
|
25764
25800
|
if (row.kind === "header") {
|
|
25765
|
-
return /* @__PURE__ */
|
|
25801
|
+
return /* @__PURE__ */ jsx28(Box21, { flexDirection: "column", paddingTop: 1, children: /* @__PURE__ */ jsx28(Text23, { bold: true, color: PALETTE.success, children: row.label }) }, key);
|
|
25766
25802
|
}
|
|
25767
25803
|
if (row.kind === "component-description") {
|
|
25768
25804
|
const isSelected2 = inComponentDesc && active;
|
|
25769
25805
|
const isEditing = isSelected2 && focusLevel === "field" && editingField && activeField === "description";
|
|
25770
|
-
return /* @__PURE__ */
|
|
25806
|
+
return /* @__PURE__ */ jsx28(
|
|
25771
25807
|
DescriptionField,
|
|
25772
25808
|
{
|
|
25773
25809
|
value: editorState.componentDescription,
|
|
@@ -25798,7 +25834,7 @@ function FieldEditor({
|
|
|
25798
25834
|
valueText,
|
|
25799
25835
|
innerWidth
|
|
25800
25836
|
);
|
|
25801
|
-
return /* @__PURE__ */
|
|
25837
|
+
return /* @__PURE__ */ jsx28(
|
|
25802
25838
|
PropRow,
|
|
25803
25839
|
{
|
|
25804
25840
|
prop: p,
|
|
@@ -25825,7 +25861,7 @@ function FieldEditor({
|
|
|
25825
25861
|
valueText,
|
|
25826
25862
|
innerWidth
|
|
25827
25863
|
);
|
|
25828
|
-
return /* @__PURE__ */
|
|
25864
|
+
return /* @__PURE__ */ jsx28(
|
|
25829
25865
|
SlotRow,
|
|
25830
25866
|
{
|
|
25831
25867
|
slot: s,
|
|
@@ -25846,9 +25882,9 @@ function FieldEditor({
|
|
|
25846
25882
|
borderStyle: "single",
|
|
25847
25883
|
borderColor: hasEmptyProperties ? PALETTE.warning : active ? PALETTE.accent : PALETTE.border,
|
|
25848
25884
|
children: [
|
|
25849
|
-
hasEmptyProperties && /* @__PURE__ */
|
|
25885
|
+
hasEmptyProperties && /* @__PURE__ */ jsx28(Text23, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify. Reject this component or add fields manually." }),
|
|
25850
25886
|
header,
|
|
25851
|
-
/* @__PURE__ */
|
|
25887
|
+
/* @__PURE__ */ jsx28(Box21, { flexDirection: "column", width: innerWidth, flexShrink: 0, children: focusLevel === "field" && !inComponentDesc && currentProp ? /* @__PURE__ */ jsx28(
|
|
25852
25888
|
PropRow,
|
|
25853
25889
|
{
|
|
25854
25890
|
prop: currentProp,
|
|
@@ -25864,7 +25900,7 @@ function FieldEditor({
|
|
|
25864
25900
|
rationale: metadata?.props?.[currentProp.name]?.rationale ?? null,
|
|
25865
25901
|
showRationale: showInlineRationales
|
|
25866
25902
|
}
|
|
25867
|
-
) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */
|
|
25903
|
+
) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */ jsx28(
|
|
25868
25904
|
SlotRow,
|
|
25869
25905
|
{
|
|
25870
25906
|
slot: currentSlot,
|
|
@@ -25883,7 +25919,7 @@ function FieldEditor({
|
|
|
25883
25919
|
) : visibleRowSlice.map((row, index) => {
|
|
25884
25920
|
const absoluteIndex = scrollStart + index;
|
|
25885
25921
|
const key = rowKey(row, absoluteIndex);
|
|
25886
|
-
return /* @__PURE__ */
|
|
25922
|
+
return /* @__PURE__ */ jsx28(
|
|
25887
25923
|
Box21,
|
|
25888
25924
|
{
|
|
25889
25925
|
ref: (node) => {
|
|
@@ -25897,7 +25933,7 @@ function FieldEditor({
|
|
|
25897
25933
|
`visible-${key}`
|
|
25898
25934
|
);
|
|
25899
25935
|
}) }),
|
|
25900
|
-
categoryBelow && /* @__PURE__ */
|
|
25936
|
+
categoryBelow && /* @__PURE__ */ jsx28(Text23, { color: PALETTE.success, bold: true, children: `(${categoryBelow} below)` }),
|
|
25901
25937
|
sourceOpen && !onToggleSourceExternal && (() => {
|
|
25902
25938
|
const propMeta = !inSlots && !inComponentDesc && currentProp ? metadata?.props?.[currentProp.name] : void 0;
|
|
25903
25939
|
const start = propMeta?.sourceStartLine ?? null;
|
|
@@ -25907,48 +25943,48 @@ function FieldEditor({
|
|
|
25907
25943
|
const headerPath = path5 ?? "<unknown source path>";
|
|
25908
25944
|
if (!start || !end2 || !src) {
|
|
25909
25945
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
|
|
25910
|
-
/* @__PURE__ */
|
|
25911
|
-
/* @__PURE__ */
|
|
25912
|
-
/* @__PURE__ */
|
|
25946
|
+
/* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, bold: true, children: `source: ${headerPath}` }),
|
|
25947
|
+
/* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: "(no source location captured for this prop)" }),
|
|
25948
|
+
/* @__PURE__ */ jsx28(Text23, { children: "[s] close" })
|
|
25913
25949
|
] });
|
|
25914
25950
|
}
|
|
25915
25951
|
const lines = src.split("\n").slice(Math.max(0, start - 1), end2);
|
|
25916
25952
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
|
|
25917
|
-
/* @__PURE__ */
|
|
25918
|
-
lines.map((ln, i) => /* @__PURE__ */
|
|
25919
|
-
/* @__PURE__ */
|
|
25953
|
+
/* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, bold: true, children: `${headerPath}: lines ${start}\u2013${end2}` }),
|
|
25954
|
+
lines.map((ln, i) => /* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: ln }, `source-line-${i}`)),
|
|
25955
|
+
/* @__PURE__ */ jsx28(Text23, { children: "[s] close \xB7 [Esc] close" })
|
|
25920
25956
|
] });
|
|
25921
25957
|
})(),
|
|
25922
25958
|
showHelp && /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.accent, paddingX: 1, children: [
|
|
25923
|
-
/* @__PURE__ */
|
|
25924
|
-
/* @__PURE__ */
|
|
25925
|
-
/* @__PURE__ */
|
|
25926
|
-
/* @__PURE__ */
|
|
25927
|
-
/* @__PURE__ */
|
|
25928
|
-
/* @__PURE__ */
|
|
25929
|
-
/* @__PURE__ */
|
|
25930
|
-
/* @__PURE__ */
|
|
25931
|
-
/* @__PURE__ */
|
|
25932
|
-
/* @__PURE__ */
|
|
25933
|
-
/* @__PURE__ */
|
|
25934
|
-
/* @__PURE__ */
|
|
25935
|
-
/* @__PURE__ */
|
|
25936
|
-
/* @__PURE__ */
|
|
25937
|
-
/* @__PURE__ */
|
|
25938
|
-
/* @__PURE__ */
|
|
25939
|
-
/* @__PURE__ */
|
|
25940
|
-
/* @__PURE__ */
|
|
25941
|
-
/* @__PURE__ */
|
|
25942
|
-
/* @__PURE__ */
|
|
25943
|
-
/* @__PURE__ */
|
|
25944
|
-
/* @__PURE__ */
|
|
25945
|
-
/* @__PURE__ */
|
|
25946
|
-
/* @__PURE__ */
|
|
25947
|
-
/* @__PURE__ */
|
|
25948
|
-
/* @__PURE__ */
|
|
25959
|
+
/* @__PURE__ */ jsx28(Text23, { bold: true, color: PALETTE.accent, children: "Keybindings" }),
|
|
25960
|
+
/* @__PURE__ */ jsx28(Text23, { children: " " }),
|
|
25961
|
+
/* @__PURE__ */ jsx28(Text23, { bold: true, children: "Row navigation" }),
|
|
25962
|
+
/* @__PURE__ */ jsx28(Text23, { children: " \u2191/\u2193 move between rows" }),
|
|
25963
|
+
/* @__PURE__ */ jsx28(Text23, { children: " Enter edit fields on the current row" }),
|
|
25964
|
+
/* @__PURE__ */ jsx28(Text23, { children: " Esc exit the panel" }),
|
|
25965
|
+
/* @__PURE__ */ jsx28(Text23, { children: " " }),
|
|
25966
|
+
/* @__PURE__ */ jsx28(Text23, { bold: true, children: "Field editing" }),
|
|
25967
|
+
/* @__PURE__ */ jsx28(Text23, { children: " \u2191/\u2193/\u2190\u2192 cycle through fields" }),
|
|
25968
|
+
/* @__PURE__ */ jsx28(Text23, { children: " \u2190/\u2192 cycle picker values \xB7 move cursor in text inputs" }),
|
|
25969
|
+
/* @__PURE__ */ jsx28(Text23, { children: " Space/Enter toggle required" }),
|
|
25970
|
+
/* @__PURE__ */ jsx28(Text23, { children: " Type edit description / string default" }),
|
|
25971
|
+
/* @__PURE__ */ jsx28(Text23, { children: " Esc exit field-edit back to the row" }),
|
|
25972
|
+
/* @__PURE__ */ jsx28(Text23, { children: " " }),
|
|
25973
|
+
/* @__PURE__ */ jsx28(Text23, { bold: true, children: "Values / allowedComponents" }),
|
|
25974
|
+
/* @__PURE__ */ jsx28(Text23, { children: " a / e / r add \xB7 edit \xB7 remove" }),
|
|
25975
|
+
/* @__PURE__ */ jsx28(Text23, { children: " \u2191\u2193 navigate the list" }),
|
|
25976
|
+
/* @__PURE__ */ jsx28(Text23, { children: " K / J reorder up \xB7 down" }),
|
|
25977
|
+
/* @__PURE__ */ jsx28(Text23, { children: " " }),
|
|
25978
|
+
/* @__PURE__ */ jsx28(Text23, { bold: true, children: "Panels" }),
|
|
25979
|
+
/* @__PURE__ */ jsx28(Text23, { children: " s toggle source-view for the current prop" }),
|
|
25980
|
+
/* @__PURE__ */ jsx28(Text23, { children: " " + propRationaleKey.padEnd(16) + " toggle prop rationale panel" }),
|
|
25981
|
+
/* @__PURE__ */ jsx28(Text23, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
|
|
25982
|
+
/* @__PURE__ */ jsx28(Text23, { children: " ? toggle this overlay" }),
|
|
25983
|
+
/* @__PURE__ */ jsx28(Text23, { children: " " }),
|
|
25984
|
+
/* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: "press ? or Esc to close" })
|
|
25949
25985
|
] }),
|
|
25950
|
-
validationError && /* @__PURE__ */
|
|
25951
|
-
/* @__PURE__ */
|
|
25986
|
+
validationError && /* @__PURE__ */ jsx28(Text23, { color: PALETTE.error, children: "\u2717 " + validationError }),
|
|
25987
|
+
/* @__PURE__ */ jsx28(Box21, { paddingTop: 1, children: /* @__PURE__ */ jsx28(Text23, { color: PALETTE.muted, children: modeLabel }) })
|
|
25952
25988
|
]
|
|
25953
25989
|
}
|
|
25954
25990
|
);
|
|
@@ -26006,22 +26042,22 @@ var init_wrap_text = __esm({
|
|
|
26006
26042
|
|
|
26007
26043
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationaleLine.tsx
|
|
26008
26044
|
import { Box as Box22, Text as Text24 } from "ink";
|
|
26009
|
-
import { jsx as
|
|
26045
|
+
import { jsx as jsx29, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
26010
26046
|
function RationaleLine({ line, active }) {
|
|
26011
26047
|
if (line.kind === "blank") {
|
|
26012
|
-
return /* @__PURE__ */
|
|
26048
|
+
return /* @__PURE__ */ jsx29(Box22, { children: /* @__PURE__ */ jsx29(Text24, { children: " " }) });
|
|
26013
26049
|
}
|
|
26014
26050
|
if (line.kind === "heading") {
|
|
26015
|
-
return /* @__PURE__ */
|
|
26051
|
+
return /* @__PURE__ */ jsx29(Box22, { children: /* @__PURE__ */ jsx29(Text24, { bold: true, color: active ? PALETTE.accent : PALETTE.muted, children: line.text }) });
|
|
26016
26052
|
}
|
|
26017
26053
|
if (line.kind === "label") {
|
|
26018
26054
|
return /* @__PURE__ */ jsxs23(Box22, { children: [
|
|
26019
|
-
line.prefix && /* @__PURE__ */
|
|
26020
|
-
/* @__PURE__ */
|
|
26021
|
-
line.suffix && /* @__PURE__ */
|
|
26055
|
+
line.prefix && /* @__PURE__ */ jsx29(Text24, { children: line.prefix }),
|
|
26056
|
+
/* @__PURE__ */ jsx29(Text24, { bold: true, color: active ? line.color : PALETTE.muted, children: line.text }),
|
|
26057
|
+
line.suffix && /* @__PURE__ */ jsx29(Text24, { color: PALETTE.muted, children: line.suffix })
|
|
26022
26058
|
] });
|
|
26023
26059
|
}
|
|
26024
|
-
return /* @__PURE__ */
|
|
26060
|
+
return /* @__PURE__ */ jsx29(Box22, { children: /* @__PURE__ */ jsx29(Text24, { color: !active || line.dim ? PALETTE.muted : void 0, children: line.text }) });
|
|
26025
26061
|
}
|
|
26026
26062
|
var init_RationaleLine = __esm({
|
|
26027
26063
|
"packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationaleLine.tsx"() {
|
|
@@ -26032,7 +26068,7 @@ var init_RationaleLine = __esm({
|
|
|
26032
26068
|
|
|
26033
26069
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ComponentRationalePanel.tsx
|
|
26034
26070
|
import { Box as Box23, Text as Text25 } from "ink";
|
|
26035
|
-
import { jsx as
|
|
26071
|
+
import { jsx as jsx30, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
26036
26072
|
function renderComponentRationaleLines(data, innerWidth) {
|
|
26037
26073
|
const out = [];
|
|
26038
26074
|
const pushSection = (heading, body) => {
|
|
@@ -26108,9 +26144,9 @@ function ComponentRationalePanel({
|
|
|
26108
26144
|
borderStyle: "single",
|
|
26109
26145
|
borderColor: active ? PALETTE.text : void 0,
|
|
26110
26146
|
children: [
|
|
26111
|
-
/* @__PURE__ */
|
|
26112
|
-
visible.map((line, i) => /* @__PURE__ */
|
|
26113
|
-
/* @__PURE__ */
|
|
26147
|
+
/* @__PURE__ */ jsx30(Box23, { children: /* @__PURE__ */ jsx30(Text25, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Component rationale: ${data.name}` }) }),
|
|
26148
|
+
visible.map((line, i) => /* @__PURE__ */ jsx30(RationaleLine, { line, active }, i)),
|
|
26149
|
+
/* @__PURE__ */ jsx30(Box23, { children: overflowed ? /* @__PURE__ */ jsx30(Text25, { children: `${visibleStart}-${visibleEnd}/${totalLines} [\u2191\u2193] scroll [I/Esc] close` }) : /* @__PURE__ */ jsx30(Text25, { children: "[I/Esc] close" }) })
|
|
26114
26150
|
]
|
|
26115
26151
|
}
|
|
26116
26152
|
);
|
|
@@ -26128,9 +26164,9 @@ var init_ComponentRationalePanel = __esm({
|
|
|
26128
26164
|
|
|
26129
26165
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/HighlightedLine.tsx
|
|
26130
26166
|
import { Text as Text26 } from "ink";
|
|
26131
|
-
import { Fragment as Fragment6, jsx as
|
|
26167
|
+
import { Fragment as Fragment6, jsx as jsx31 } from "react/jsx-runtime";
|
|
26132
26168
|
function HighlightedLine({ parts }) {
|
|
26133
|
-
return /* @__PURE__ */
|
|
26169
|
+
return /* @__PURE__ */ jsx31(Fragment6, { children: parts.map((part, i) => /* @__PURE__ */ jsx31(Text26, { color: part.dim ? PALETTE.muted : part.color, children: part.text }, i)) });
|
|
26134
26170
|
}
|
|
26135
26171
|
var init_HighlightedLine = __esm({
|
|
26136
26172
|
"packages/experience-design-system-cli/src/tui/import/steps/09-review/components/HighlightedLine.tsx"() {
|
|
@@ -26141,7 +26177,7 @@ var init_HighlightedLine = __esm({
|
|
|
26141
26177
|
|
|
26142
26178
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ScrollablePanel.tsx
|
|
26143
26179
|
import { Box as Box24, Text as Text27 } from "ink";
|
|
26144
|
-
import { Fragment as Fragment7, jsx as
|
|
26180
|
+
import { Fragment as Fragment7, jsx as jsx32, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
26145
26181
|
function ScrollablePanel({
|
|
26146
26182
|
title,
|
|
26147
26183
|
width,
|
|
@@ -26156,10 +26192,10 @@ function ScrollablePanel({
|
|
|
26156
26192
|
const overflowed = totalLines > height;
|
|
26157
26193
|
return /* @__PURE__ */ jsxs25(Box24, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
|
|
26158
26194
|
/* @__PURE__ */ jsxs25(Box24, { children: [
|
|
26159
|
-
/* @__PURE__ */
|
|
26195
|
+
/* @__PURE__ */ jsx32(Text27, { bold: true, color: active ? void 0 : PALETTE.muted, children: title }),
|
|
26160
26196
|
overflowed && /* @__PURE__ */ jsxs25(Fragment7, { children: [
|
|
26161
|
-
/* @__PURE__ */
|
|
26162
|
-
/* @__PURE__ */
|
|
26197
|
+
/* @__PURE__ */ jsx32(Box24, { flexGrow: 1 }),
|
|
26198
|
+
/* @__PURE__ */ jsx32(Text27, { color: active ? void 0 : PALETTE.muted, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
|
|
26163
26199
|
] })
|
|
26164
26200
|
] }),
|
|
26165
26201
|
children
|
|
@@ -26174,7 +26210,7 @@ var init_ScrollablePanel = __esm({
|
|
|
26174
26210
|
|
|
26175
26211
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/JsonPanel.tsx
|
|
26176
26212
|
import { Box as Box25 } from "ink";
|
|
26177
|
-
import { jsx as
|
|
26213
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
26178
26214
|
function highlightJson(line) {
|
|
26179
26215
|
const parts = [];
|
|
26180
26216
|
let remaining = line;
|
|
@@ -26212,7 +26248,7 @@ function highlightJson(line) {
|
|
|
26212
26248
|
parts.push({ text: remaining[0] });
|
|
26213
26249
|
remaining = remaining.slice(1);
|
|
26214
26250
|
}
|
|
26215
|
-
return /* @__PURE__ */
|
|
26251
|
+
return /* @__PURE__ */ jsx33(HighlightedLine, { parts });
|
|
26216
26252
|
}
|
|
26217
26253
|
function truncateLine(line, maxWidth) {
|
|
26218
26254
|
if (line.length <= maxWidth) return line;
|
|
@@ -26225,7 +26261,7 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
|
|
|
26225
26261
|
const totalLines = allLines.length;
|
|
26226
26262
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
26227
26263
|
const visibleEnd = Math.min(totalLines, scrollOffset + height);
|
|
26228
|
-
return /* @__PURE__ */
|
|
26264
|
+
return /* @__PURE__ */ jsx33(
|
|
26229
26265
|
ScrollablePanel,
|
|
26230
26266
|
{
|
|
26231
26267
|
title: label,
|
|
@@ -26238,7 +26274,7 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
|
|
|
26238
26274
|
borderColor: active ? "white" : void 0,
|
|
26239
26275
|
children: visibleLines.map((line, i) => {
|
|
26240
26276
|
const truncated = truncateLine(line, innerWidth);
|
|
26241
|
-
return /* @__PURE__ */
|
|
26277
|
+
return /* @__PURE__ */ jsx33(Box25, { children: highlightJson(truncated) }, i);
|
|
26242
26278
|
})
|
|
26243
26279
|
}
|
|
26244
26280
|
);
|
|
@@ -26252,7 +26288,7 @@ var init_JsonPanel = __esm({
|
|
|
26252
26288
|
});
|
|
26253
26289
|
|
|
26254
26290
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationalePanel.tsx
|
|
26255
|
-
import { jsx as
|
|
26291
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
26256
26292
|
function renderRationaleLines(rows, innerWidth) {
|
|
26257
26293
|
const out = [];
|
|
26258
26294
|
rows.forEach((row, idx) => {
|
|
@@ -26285,7 +26321,7 @@ function RationalePanel({
|
|
|
26285
26321
|
const visible = allLines.slice(scrollOffset, scrollOffset + height);
|
|
26286
26322
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
26287
26323
|
const visibleEnd = Math.min(totalLines, scrollOffset + height);
|
|
26288
|
-
return /* @__PURE__ */
|
|
26324
|
+
return /* @__PURE__ */ jsx34(
|
|
26289
26325
|
ScrollablePanel,
|
|
26290
26326
|
{
|
|
26291
26327
|
title: `RATIONALE \u2014 ${componentName}`,
|
|
@@ -26296,7 +26332,7 @@ function RationalePanel({
|
|
|
26296
26332
|
visibleStart,
|
|
26297
26333
|
visibleEnd,
|
|
26298
26334
|
borderColor: active ? PALETTE.text : void 0,
|
|
26299
|
-
children: visible.map((line, i) => /* @__PURE__ */
|
|
26335
|
+
children: visible.map((line, i) => /* @__PURE__ */ jsx34(RationaleLine, { line, active }, i))
|
|
26300
26336
|
}
|
|
26301
26337
|
);
|
|
26302
26338
|
}
|
|
@@ -26313,7 +26349,7 @@ var init_RationalePanel = __esm({
|
|
|
26313
26349
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/TokenReviewPanel.tsx
|
|
26314
26350
|
import figures6 from "figures";
|
|
26315
26351
|
import { Box as Box26, Text as Text28 } from "ink";
|
|
26316
|
-
import { jsx as
|
|
26352
|
+
import { jsx as jsx35, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
26317
26353
|
function TokenReviewPanel({
|
|
26318
26354
|
componentName,
|
|
26319
26355
|
suggestions,
|
|
@@ -26341,15 +26377,15 @@ function TokenReviewPanel({
|
|
|
26341
26377
|
borderStyle: "single",
|
|
26342
26378
|
borderColor: active ? PALETTE.text : void 0,
|
|
26343
26379
|
children: [
|
|
26344
|
-
/* @__PURE__ */
|
|
26345
|
-
/* @__PURE__ */
|
|
26346
|
-
/* @__PURE__ */
|
|
26347
|
-
current.paths.length === 0 && /* @__PURE__ */
|
|
26380
|
+
/* @__PURE__ */ jsx35(Text28, { bold: true, color: active ? void 0 : PALETTE.muted, wrap: "truncate", children: `TOKEN REVIEW \u2014 ${componentName} \xB7 ${current.propName} (edit allowed)` }),
|
|
26381
|
+
/* @__PURE__ */ jsx35(Text28, { color: PALETTE.muted, wrap: "truncate", children: `select which tokens are allowed (${rangeLabel})` }),
|
|
26382
|
+
/* @__PURE__ */ jsx35(Text28, { children: " " }),
|
|
26383
|
+
current.paths.length === 0 && /* @__PURE__ */ jsx35(Text28, { color: PALETTE.muted, children: "(no compatible tokens found for this token kind)" }),
|
|
26348
26384
|
visiblePaths.map((path5, i) => {
|
|
26349
26385
|
const pathIndex = scrollStart + i;
|
|
26350
26386
|
const checked = editSelection.has(path5);
|
|
26351
26387
|
const focused = pathIndex === editCursor;
|
|
26352
|
-
return /* @__PURE__ */
|
|
26388
|
+
return /* @__PURE__ */ jsx35(Box26, { children: /* @__PURE__ */ jsx35(
|
|
26353
26389
|
Text28,
|
|
26354
26390
|
{
|
|
26355
26391
|
color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted,
|
|
@@ -26359,9 +26395,9 @@ function TokenReviewPanel({
|
|
|
26359
26395
|
}
|
|
26360
26396
|
) }, path5);
|
|
26361
26397
|
}),
|
|
26362
|
-
/* @__PURE__ */
|
|
26363
|
-
/* @__PURE__ */
|
|
26364
|
-
/* @__PURE__ */
|
|
26398
|
+
/* @__PURE__ */ jsx35(Text28, { children: " " }),
|
|
26399
|
+
/* @__PURE__ */ jsx35(Text28, { color: PALETTE.muted, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
|
|
26400
|
+
/* @__PURE__ */ jsx35(Text28, { color: PALETTE.muted, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
|
|
26365
26401
|
]
|
|
26366
26402
|
}
|
|
26367
26403
|
);
|
|
@@ -26375,18 +26411,18 @@ function TokenReviewPanel({
|
|
|
26375
26411
|
borderStyle: "single",
|
|
26376
26412
|
borderColor: active ? PALETTE.text : void 0,
|
|
26377
26413
|
children: [
|
|
26378
|
-
/* @__PURE__ */
|
|
26379
|
-
suggestions.length === 0 && /* @__PURE__ */
|
|
26414
|
+
/* @__PURE__ */ jsx35(Text28, { bold: true, color: active ? void 0 : PALETTE.muted, children: `TOKEN REVIEW \u2014 ${componentName}` }),
|
|
26415
|
+
suggestions.length === 0 && /* @__PURE__ */ jsx35(Text28, { color: PALETTE.muted, children: "(no token suggestions for this component)" }),
|
|
26380
26416
|
suggestions.map((s, i) => {
|
|
26381
26417
|
const focused = i === selectedRow;
|
|
26382
26418
|
return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", children: [
|
|
26383
|
-
/* @__PURE__ */
|
|
26384
|
-
/* @__PURE__ */
|
|
26385
|
-
/* @__PURE__ */
|
|
26419
|
+
/* @__PURE__ */ jsx35(Box26, { children: /* @__PURE__ */ jsx35(Text28, { color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted, bold: focused, children: `${focused ? figures6.pointer : " "} ${s.propName}` }) }),
|
|
26420
|
+
/* @__PURE__ */ jsx35(Text28, { color: PALETTE.muted, children: ` suggested: ${s.suggested.join(", ")}` }),
|
|
26421
|
+
/* @__PURE__ */ jsx35(Text28, { color: PALETTE.muted, children: ` allowed: ${s.allowed.join(", ")}` })
|
|
26386
26422
|
] }, s.propName);
|
|
26387
26423
|
}),
|
|
26388
|
-
/* @__PURE__ */
|
|
26389
|
-
/* @__PURE__ */
|
|
26424
|
+
/* @__PURE__ */ jsx35(Text28, { children: " " }),
|
|
26425
|
+
/* @__PURE__ */ jsx35(Text28, { children: "[\u2191/\u2193] move [Enter] edit allowed [Esc] close" })
|
|
26390
26426
|
]
|
|
26391
26427
|
}
|
|
26392
26428
|
);
|
|
@@ -26400,7 +26436,7 @@ var init_TokenReviewPanel = __esm({
|
|
|
26400
26436
|
|
|
26401
26437
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx
|
|
26402
26438
|
import { Text as Text29 } from "ink";
|
|
26403
|
-
import { Fragment as Fragment8, jsx as
|
|
26439
|
+
import { Fragment as Fragment8, jsx as jsx36, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
26404
26440
|
function ReviewDetailsPanel({
|
|
26405
26441
|
selectedKey,
|
|
26406
26442
|
panelOpen,
|
|
@@ -26435,7 +26471,7 @@ function ReviewDetailsPanel({
|
|
|
26435
26471
|
rationale: s.rationale ?? ""
|
|
26436
26472
|
}))
|
|
26437
26473
|
];
|
|
26438
|
-
return /* @__PURE__ */
|
|
26474
|
+
return /* @__PURE__ */ jsx36(
|
|
26439
26475
|
RationalePanel,
|
|
26440
26476
|
{
|
|
26441
26477
|
componentName: componentRationale?.name ?? selectedKey,
|
|
@@ -26448,7 +26484,7 @@ function ReviewDetailsPanel({
|
|
|
26448
26484
|
);
|
|
26449
26485
|
}
|
|
26450
26486
|
if (panelOpen === "component-rationale") {
|
|
26451
|
-
return /* @__PURE__ */
|
|
26487
|
+
return /* @__PURE__ */ jsx36(
|
|
26452
26488
|
ComponentRationalePanel,
|
|
26453
26489
|
{
|
|
26454
26490
|
data: componentRationale ?? {
|
|
@@ -26474,13 +26510,13 @@ function ReviewDetailsPanel({
|
|
|
26474
26510
|
const sourceLineCount = Math.max(1, height - 4);
|
|
26475
26511
|
const lines = source ? source.split("\n").slice(panelScrollOffset, panelScrollOffset + sourceLineCount) : [];
|
|
26476
26512
|
return /* @__PURE__ */ jsxs27(FixedPanel, { width, height, borderStyle: "single", borderColor: sourceBorderColor, paddingLeft: 1, children: [
|
|
26477
|
-
/* @__PURE__ */
|
|
26478
|
-
source ? lines.map((line, index) => /* @__PURE__ */
|
|
26479
|
-
/* @__PURE__ */
|
|
26513
|
+
/* @__PURE__ */ jsx36(Text29, { color: PALETTE.muted, bold: true, wrap: "truncate-end", children: `source: ${headerPath}` }),
|
|
26514
|
+
source ? lines.map((line, index) => /* @__PURE__ */ jsx36(Text29, { color: PALETTE.muted, wrap: "truncate-end", children: line }, `source-line-${index}`)) : /* @__PURE__ */ jsx36(Text29, { color: PALETTE.muted, children: "(no source captured)" }),
|
|
26515
|
+
/* @__PURE__ */ jsx36(Text29, { color: PALETTE.muted, wrap: "truncate-end", children: "[s/Esc] close" })
|
|
26480
26516
|
] });
|
|
26481
26517
|
}
|
|
26482
26518
|
if (panelOpen === "token-review") {
|
|
26483
|
-
return /* @__PURE__ */
|
|
26519
|
+
return /* @__PURE__ */ jsx36(
|
|
26484
26520
|
TokenReviewPanel,
|
|
26485
26521
|
{
|
|
26486
26522
|
componentName: selectedKey,
|
|
@@ -26496,7 +26532,7 @@ function ReviewDetailsPanel({
|
|
|
26496
26532
|
);
|
|
26497
26533
|
}
|
|
26498
26534
|
if (showJson) {
|
|
26499
|
-
return /* @__PURE__ */
|
|
26535
|
+
return /* @__PURE__ */ jsx36(
|
|
26500
26536
|
JsonPanel,
|
|
26501
26537
|
{
|
|
26502
26538
|
label: "GENERATED DEFINITION (read-only)",
|
|
@@ -26508,7 +26544,7 @@ function ReviewDetailsPanel({
|
|
|
26508
26544
|
}
|
|
26509
26545
|
);
|
|
26510
26546
|
}
|
|
26511
|
-
return /* @__PURE__ */
|
|
26547
|
+
return /* @__PURE__ */ jsx36(Fragment8, { children: editor });
|
|
26512
26548
|
}
|
|
26513
26549
|
var init_review_details_panel = __esm({
|
|
26514
26550
|
"packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx"() {
|
|
@@ -26523,7 +26559,7 @@ var init_review_details_panel = __esm({
|
|
|
26523
26559
|
});
|
|
26524
26560
|
|
|
26525
26561
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDetailsEditor.tsx
|
|
26526
|
-
import { jsx as
|
|
26562
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
26527
26563
|
import { createElement } from "react";
|
|
26528
26564
|
function toFieldEditorMetadata(reviewMetadata) {
|
|
26529
26565
|
if (!reviewMetadata) return void 0;
|
|
@@ -26557,7 +26593,7 @@ function ReviewDetailsEditor({
|
|
|
26557
26593
|
jsonScrollOffset,
|
|
26558
26594
|
currentTokenSuggestions
|
|
26559
26595
|
} = reviewEditor;
|
|
26560
|
-
return /* @__PURE__ */
|
|
26596
|
+
return /* @__PURE__ */ jsx37(
|
|
26561
26597
|
ReviewDetailsPanel,
|
|
26562
26598
|
{
|
|
26563
26599
|
selectedKey,
|
|
@@ -26605,7 +26641,7 @@ var init_ReviewDetailsEditor = __esm({
|
|
|
26605
26641
|
|
|
26606
26642
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewComponentPanel.tsx
|
|
26607
26643
|
import { Box as Box27, Text as Text30 } from "ink";
|
|
26608
|
-
import { Fragment as Fragment9, jsx as
|
|
26644
|
+
import { Fragment as Fragment9, jsx as jsx38, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
26609
26645
|
function buildReviewFieldEditor(reviewEditor, selectedJson, onExit, overrides = {}) {
|
|
26610
26646
|
return {
|
|
26611
26647
|
value: reviewEditor.draftValue || selectedJson,
|
|
@@ -26645,17 +26681,17 @@ function ReviewEmptyComponentsWarning({
|
|
|
26645
26681
|
hidden
|
|
26646
26682
|
}) {
|
|
26647
26683
|
if (hidden || count === 0) return null;
|
|
26648
|
-
return /* @__PURE__ */
|
|
26684
|
+
return /* @__PURE__ */ jsx38(Text30, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
|
|
26649
26685
|
}
|
|
26650
26686
|
function ReviewNoSelection() {
|
|
26651
|
-
return /* @__PURE__ */
|
|
26687
|
+
return /* @__PURE__ */ jsx38(Box27, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx38(Text30, { color: PALETTE.muted, children: "No component selected" }) });
|
|
26652
26688
|
}
|
|
26653
26689
|
function ReviewFinalizeError({
|
|
26654
26690
|
message,
|
|
26655
26691
|
hidden
|
|
26656
26692
|
}) {
|
|
26657
26693
|
if (hidden || !message) return null;
|
|
26658
|
-
return /* @__PURE__ */
|
|
26694
|
+
return /* @__PURE__ */ jsx38(Text30, { color: PALETTE.error, children: `\u26A0 ${message}` });
|
|
26659
26695
|
}
|
|
26660
26696
|
function ReviewPanelFooter({
|
|
26661
26697
|
reviewEditor,
|
|
@@ -26666,8 +26702,8 @@ function ReviewPanelFooter({
|
|
|
26666
26702
|
}) {
|
|
26667
26703
|
return /* @__PURE__ */ jsxs28(Fragment9, { children: [
|
|
26668
26704
|
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" : ""),
|
|
26669
|
-
livePreview.status === "running" && /* @__PURE__ */
|
|
26670
|
-
livePreview.disabled && /* @__PURE__ */
|
|
26705
|
+
livePreview.status === "running" && /* @__PURE__ */ jsx38(Text30, { children: ` ${livePreviewSpinner} live preview` }),
|
|
26706
|
+
livePreview.disabled && /* @__PURE__ */ jsx38(Text30, { children: " \xB7 live preview disabled" })
|
|
26671
26707
|
] });
|
|
26672
26708
|
}
|
|
26673
26709
|
function ReviewComponentTitle({
|
|
@@ -26677,8 +26713,8 @@ function ReviewComponentTitle({
|
|
|
26677
26713
|
sidebarFocused
|
|
26678
26714
|
}) {
|
|
26679
26715
|
return /* @__PURE__ */ jsxs28(Box27, { paddingLeft: 2, paddingBottom: 1, children: [
|
|
26680
|
-
/* @__PURE__ */
|
|
26681
|
-
/* @__PURE__ */
|
|
26716
|
+
/* @__PURE__ */ jsx38(Text30, { bold: true, wrap: "truncate-end", children: selectedKey }),
|
|
26717
|
+
/* @__PURE__ */ jsx38(Box27, { flexGrow: 1 }),
|
|
26682
26718
|
/* @__PURE__ */ jsxs28(Text30, { color: PALETTE.muted, wrap: "truncate-end", children: [
|
|
26683
26719
|
propCount,
|
|
26684
26720
|
" prop",
|
|
@@ -26710,8 +26746,8 @@ function ReviewComponentPanel({
|
|
|
26710
26746
|
const slotCount = selectedEntry.$slots ? Object.keys(selectedEntry.$slots).length : 0;
|
|
26711
26747
|
const contentHeight = Math.max(1, height - 2);
|
|
26712
26748
|
const contentWidth = Math.max(1, width - 1);
|
|
26713
|
-
return /* @__PURE__ */
|
|
26714
|
-
/* @__PURE__ */
|
|
26749
|
+
return /* @__PURE__ */ jsx38(FixedPanel, { width, height, borderStyle: void 0, paddingLeft: 1, children: /* @__PURE__ */ jsxs28(Box27, { flexDirection: "column", width: contentWidth, height, flexShrink: 0, overflowY: "hidden", children: [
|
|
26750
|
+
/* @__PURE__ */ jsx38(Box27, { width: contentWidth, height: contentHeight, flexShrink: 0, overflowY: "hidden", children: /* @__PURE__ */ jsx38(
|
|
26715
26751
|
ReviewDetailsEditor,
|
|
26716
26752
|
{
|
|
26717
26753
|
selectedKey,
|
|
@@ -26724,7 +26760,7 @@ function ReviewComponentPanel({
|
|
|
26724
26760
|
jsonValue,
|
|
26725
26761
|
sidebarFocused,
|
|
26726
26762
|
fieldEditor,
|
|
26727
|
-
header: /* @__PURE__ */
|
|
26763
|
+
header: /* @__PURE__ */ jsx38(
|
|
26728
26764
|
ReviewComponentTitle,
|
|
26729
26765
|
{
|
|
26730
26766
|
selectedKey,
|
|
@@ -26735,8 +26771,8 @@ function ReviewComponentPanel({
|
|
|
26735
26771
|
)
|
|
26736
26772
|
}
|
|
26737
26773
|
) }),
|
|
26738
|
-
/* @__PURE__ */
|
|
26739
|
-
/* @__PURE__ */
|
|
26774
|
+
/* @__PURE__ */ jsx38(Box27, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx38(Text30, { color: saveError ? PALETTE.error : void 0, wrap: "truncate-end", children: saveError ? "\u2717 " + saveError : " " }) }),
|
|
26775
|
+
/* @__PURE__ */ jsx38(Box27, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx38(Text30, { color: PALETTE.muted, wrap: "truncate-end", children: /* @__PURE__ */ jsx38(
|
|
26740
26776
|
ReviewPanelFooter,
|
|
26741
26777
|
{
|
|
26742
26778
|
reviewEditor,
|
|
@@ -26760,7 +26796,7 @@ var init_ReviewComponentPanel = __esm({
|
|
|
26760
26796
|
|
|
26761
26797
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewStatus.tsx
|
|
26762
26798
|
import { Box as Box28, Text as Text31 } from "ink";
|
|
26763
|
-
import { jsx as
|
|
26799
|
+
import { jsx as jsx39, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
26764
26800
|
function countReviewStatuses(entries) {
|
|
26765
26801
|
return entries.reduce(
|
|
26766
26802
|
(counts, entry) => {
|
|
@@ -26773,13 +26809,13 @@ function countReviewStatuses(entries) {
|
|
|
26773
26809
|
);
|
|
26774
26810
|
}
|
|
26775
26811
|
function ReviewLoadingState() {
|
|
26776
|
-
return /* @__PURE__ */
|
|
26812
|
+
return /* @__PURE__ */ jsx39(Box28, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx39(Text31, { color: PALETTE.muted, children: "Loading generated definitions..." }) });
|
|
26777
26813
|
}
|
|
26778
26814
|
function ReviewLoadError({ message }) {
|
|
26779
26815
|
return /* @__PURE__ */ jsxs29(Box28, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
26780
|
-
/* @__PURE__ */
|
|
26781
|
-
/* @__PURE__ */
|
|
26782
|
-
/* @__PURE__ */
|
|
26816
|
+
/* @__PURE__ */ jsx39(Text31, { color: PALETTE.error, children: message }),
|
|
26817
|
+
/* @__PURE__ */ jsx39(Text31, { children: " " }),
|
|
26818
|
+
/* @__PURE__ */ jsx39(Text31, { children: "[q / Enter / Esc] Quit" })
|
|
26783
26819
|
] });
|
|
26784
26820
|
}
|
|
26785
26821
|
var init_ReviewStatus = __esm({
|
|
@@ -27003,7 +27039,7 @@ var init_run_live_preview = __esm({
|
|
|
27003
27039
|
|
|
27004
27040
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FinalizeDialog.tsx
|
|
27005
27041
|
import { Box as Box29, Text as Text32 } from "ink";
|
|
27006
|
-
import { Fragment as Fragment10, jsx as
|
|
27042
|
+
import { Fragment as Fragment10, jsx as jsx40, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
27007
27043
|
function FinalizeDialog({
|
|
27008
27044
|
accepted,
|
|
27009
27045
|
rejected,
|
|
@@ -27031,51 +27067,51 @@ function FinalizeDialog({
|
|
|
27031
27067
|
const windowed = removed.slice(offset, offset + FINALIZE_REMOVED_WINDOW);
|
|
27032
27068
|
const hasMoreBelow = offset + FINALIZE_REMOVED_WINDOW < removed.length;
|
|
27033
27069
|
const hasMoreAbove = offset > 0;
|
|
27034
|
-
return /* @__PURE__ */
|
|
27035
|
-
/* @__PURE__ */
|
|
27036
|
-
/* @__PURE__ */
|
|
27070
|
+
return /* @__PURE__ */ jsx40(Box29, { width: "100%", justifyContent: "center", children: /* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", alignItems: "center", borderStyle: "round", padding: 1, width: 58, children: [
|
|
27071
|
+
/* @__PURE__ */ jsx40(Text32, { bold: true, children: "\u2500".repeat(22) + " Finalize " + "\u2500".repeat(22) }),
|
|
27072
|
+
/* @__PURE__ */ jsx40(Text32, { children: " " }),
|
|
27037
27073
|
/* @__PURE__ */ jsxs30(Text32, { children: [
|
|
27038
27074
|
/* @__PURE__ */ jsxs30(Text32, { color: PALETTE.success, children: [
|
|
27039
27075
|
accepted,
|
|
27040
27076
|
" accepted"
|
|
27041
27077
|
] }),
|
|
27042
|
-
/* @__PURE__ */
|
|
27078
|
+
/* @__PURE__ */ jsx40(Text32, { children: " \xB7 " }),
|
|
27043
27079
|
/* @__PURE__ */ jsxs30(Text32, { color: PALETTE.error, children: [
|
|
27044
27080
|
rejected,
|
|
27045
27081
|
" rejected"
|
|
27046
27082
|
] }),
|
|
27047
|
-
/* @__PURE__ */
|
|
27083
|
+
/* @__PURE__ */ jsx40(Text32, { children: " \xB7 " }),
|
|
27048
27084
|
/* @__PURE__ */ jsxs30(Text32, { color: PALETTE.muted, children: [
|
|
27049
27085
|
needsReview,
|
|
27050
27086
|
" unresolved"
|
|
27051
27087
|
] })
|
|
27052
27088
|
] }),
|
|
27053
|
-
/* @__PURE__ */
|
|
27089
|
+
/* @__PURE__ */ jsx40(Text32, { children: " " }),
|
|
27054
27090
|
noneAccepted && /* @__PURE__ */ jsxs30(Fragment10, { children: [
|
|
27055
|
-
/* @__PURE__ */
|
|
27056
|
-
/* @__PURE__ */
|
|
27057
|
-
/* @__PURE__ */
|
|
27091
|
+
/* @__PURE__ */ jsx40(Text32, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
|
|
27092
|
+
/* @__PURE__ */ jsx40(Text32, { color: PALETTE.warning, children: "Accept at least one component ([a] a row, [A] accept all) to push." }),
|
|
27093
|
+
/* @__PURE__ */ jsx40(Text32, { children: " " })
|
|
27058
27094
|
] }),
|
|
27059
27095
|
!allResolved && /* @__PURE__ */ jsxs30(Fragment10, { children: [
|
|
27060
|
-
/* @__PURE__ */
|
|
27061
|
-
/* @__PURE__ */
|
|
27062
|
-
/* @__PURE__ */
|
|
27096
|
+
/* @__PURE__ */ jsx40(Text32, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
|
|
27097
|
+
/* @__PURE__ */ jsx40(Text32, { color: PALETTE.warning, children: "Only explicitly accepted components ship." }),
|
|
27098
|
+
/* @__PURE__ */ jsx40(Text32, { children: " " })
|
|
27063
27099
|
] }),
|
|
27064
27100
|
/* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", height: 2, children: [
|
|
27065
|
-
previewStatus === "running" ? /* @__PURE__ */
|
|
27066
|
-
/* @__PURE__ */
|
|
27101
|
+
previewStatus === "running" ? /* @__PURE__ */ jsx40(Text32, { color: PALETTE.muted, children: "Previewing deletions against the target space\u2026" }) : previewStatus === "error" ? /* @__PURE__ */ jsx40(Text32, { color: PALETTE.warning, children: "\u26A0 Could not preview deletions (the push will still proceed)." }) : /* @__PURE__ */ jsx40(Text32, { children: " " }),
|
|
27102
|
+
/* @__PURE__ */ jsx40(Text32, { children: " " })
|
|
27067
27103
|
] }),
|
|
27068
27104
|
previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs30(Fragment10, { children: [
|
|
27069
|
-
/* @__PURE__ */
|
|
27070
|
-
hasMoreAbove && /* @__PURE__ */
|
|
27071
|
-
windowed.map((rc) => /* @__PURE__ */
|
|
27072
|
-
hasMoreBelow && /* @__PURE__ */
|
|
27073
|
-
removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */
|
|
27074
|
-
/* @__PURE__ */
|
|
27105
|
+
/* @__PURE__ */ jsx40(Text32, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
|
|
27106
|
+
hasMoreAbove && /* @__PURE__ */ jsx40(Text32, { color: PALETTE.muted, children: "\u2191 more above" }),
|
|
27107
|
+
windowed.map((rc) => /* @__PURE__ */ jsx40(Text32, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
|
|
27108
|
+
hasMoreBelow && /* @__PURE__ */ jsx40(Text32, { color: PALETTE.muted, children: "\u2193 more below" }),
|
|
27109
|
+
removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx40(Text32, { children: "[\u2191\u2193] scroll deletions" }),
|
|
27110
|
+
/* @__PURE__ */ jsx40(Text32, { children: " " })
|
|
27075
27111
|
] }),
|
|
27076
|
-
/* @__PURE__ */
|
|
27077
|
-
/* @__PURE__ */
|
|
27078
|
-
/* @__PURE__ */
|
|
27112
|
+
/* @__PURE__ */ jsx40(Text32, { children: noneAccepted ? "Confirm exit with nothing accepted?" : allResolved ? "Save decisions and exit? All components resolved." : "Save decisions and exit?" }),
|
|
27113
|
+
/* @__PURE__ */ jsx40(Text32, { children: " " }),
|
|
27114
|
+
/* @__PURE__ */ jsx40(Text32, { children: "[y / Enter] Confirm [n / Esc] Cancel" })
|
|
27079
27115
|
] }) });
|
|
27080
27116
|
}
|
|
27081
27117
|
var FINALIZE_REMOVED_WINDOW;
|
|
@@ -27090,7 +27126,7 @@ var init_FinalizeDialog = __esm({
|
|
|
27090
27126
|
});
|
|
27091
27127
|
|
|
27092
27128
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-finalize-preview.ts
|
|
27093
|
-
import { useEffect as useEffect11, useRef as
|
|
27129
|
+
import { useEffect as useEffect11, useRef as useRef8, useState as useState16 } from "react";
|
|
27094
27130
|
function useReviewFinalizePreview({
|
|
27095
27131
|
components,
|
|
27096
27132
|
...options
|
|
@@ -27105,7 +27141,7 @@ function useFinalizePreview(opts) {
|
|
|
27105
27141
|
const [status, setStatus] = useState16("idle");
|
|
27106
27142
|
const [removed, setRemoved] = useState16([]);
|
|
27107
27143
|
const [scrollOffset, setScrollOffset] = useState16(0);
|
|
27108
|
-
const generationRef =
|
|
27144
|
+
const generationRef = useRef8(0);
|
|
27109
27145
|
const acceptedKey = [...acceptedKeys].sort().join("\0");
|
|
27110
27146
|
useEffect11(() => {
|
|
27111
27147
|
if (!open) {
|
|
@@ -27159,7 +27195,7 @@ var init_use_finalize_preview = __esm({
|
|
|
27159
27195
|
});
|
|
27160
27196
|
|
|
27161
27197
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-review-session.ts
|
|
27162
|
-
import { useCallback as useCallback2, useEffect as useEffect12, useRef as
|
|
27198
|
+
import { useCallback as useCallback2, useEffect as useEffect12, useRef as useRef9, useState as useState17 } from "react";
|
|
27163
27199
|
function useReviewSession({
|
|
27164
27200
|
loadSession,
|
|
27165
27201
|
tokensPath,
|
|
@@ -27261,8 +27297,8 @@ function useReviewMetadata({ components, selectedIdx, extractSessionId }) {
|
|
|
27261
27297
|
return { reviewMetadata, componentRationale };
|
|
27262
27298
|
}
|
|
27263
27299
|
function useReviewHistory({ loading, components, createSnapshot, applySnapshot }) {
|
|
27264
|
-
const historyRef =
|
|
27265
|
-
const historySeededRef =
|
|
27300
|
+
const historyRef = useRef9(null);
|
|
27301
|
+
const historySeededRef = useRef9(false);
|
|
27266
27302
|
useEffect12(() => {
|
|
27267
27303
|
if (loading || historySeededRef.current) return;
|
|
27268
27304
|
historySeededRef.current = true;
|
|
@@ -27345,7 +27381,7 @@ var init_token_suggestions = __esm({
|
|
|
27345
27381
|
});
|
|
27346
27382
|
|
|
27347
27383
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-review-editor.ts
|
|
27348
|
-
import { useEffect as useEffect13, useRef as
|
|
27384
|
+
import { useEffect as useEffect13, useRef as useRef10, useState as useState18 } from "react";
|
|
27349
27385
|
function parseReviewEntry(draftValue) {
|
|
27350
27386
|
const parsed = JSON.parse(draftValue);
|
|
27351
27387
|
const keys = Object.keys(parsed);
|
|
@@ -27377,8 +27413,8 @@ function useReviewEditor({
|
|
|
27377
27413
|
const [tokenReviewEditing, setTokenReviewEditing] = useState18(false);
|
|
27378
27414
|
const [tokenReviewEditCursor, setTokenReviewEditCursor] = useState18(0);
|
|
27379
27415
|
const [tokenReviewEditSelection, setTokenReviewEditSelection] = useState18(/* @__PURE__ */ new Set());
|
|
27380
|
-
const tokenReviewSuggestedRef =
|
|
27381
|
-
const pendingGRef =
|
|
27416
|
+
const tokenReviewSuggestedRef = useRef10(/* @__PURE__ */ new Map());
|
|
27417
|
+
const pendingGRef = useRef10(false);
|
|
27382
27418
|
useEffect13(() => {
|
|
27383
27419
|
setTokenReviewRow(0);
|
|
27384
27420
|
setTokenReviewEditing(false);
|
|
@@ -27524,7 +27560,7 @@ var init_use_review_surface_state = __esm({
|
|
|
27524
27560
|
|
|
27525
27561
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/QuitDialog.tsx
|
|
27526
27562
|
import { Box as Box30, Text as Text33 } from "ink";
|
|
27527
|
-
import { Fragment as Fragment11, jsx as
|
|
27563
|
+
import { Fragment as Fragment11, jsx as jsx41, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
27528
27564
|
function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
27529
27565
|
useImmediateInput((input, key) => {
|
|
27530
27566
|
if (input === "y" || key.return) {
|
|
@@ -27534,15 +27570,15 @@ function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
|
27534
27570
|
}
|
|
27535
27571
|
});
|
|
27536
27572
|
return /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", borderStyle: "round", padding: 1, width: 50, children: [
|
|
27537
|
-
/* @__PURE__ */
|
|
27538
|
-
/* @__PURE__ */
|
|
27573
|
+
/* @__PURE__ */ jsx41(Text33, { bold: true, children: "\u2500".repeat(19) + " Quit " + "\u2500".repeat(19) }),
|
|
27574
|
+
/* @__PURE__ */ jsx41(Text33, { children: " " }),
|
|
27539
27575
|
hasUnsavedDrafts ? /* @__PURE__ */ jsxs31(Fragment11, { children: [
|
|
27540
|
-
/* @__PURE__ */
|
|
27541
|
-
/* @__PURE__ */
|
|
27542
|
-
/* @__PURE__ */
|
|
27543
|
-
] }) : /* @__PURE__ */
|
|
27544
|
-
/* @__PURE__ */
|
|
27545
|
-
/* @__PURE__ */
|
|
27576
|
+
/* @__PURE__ */ jsx41(Text33, { children: "You have unsaved draft edits." }),
|
|
27577
|
+
/* @__PURE__ */ jsx41(Text33, { children: "Session state is preserved \u2014 you can resume" }),
|
|
27578
|
+
/* @__PURE__ */ jsx41(Text33, { children: "by running the same review command again." })
|
|
27579
|
+
] }) : /* @__PURE__ */ jsx41(Text33, { children: "Session is saved. Quit without finalizing?" }),
|
|
27580
|
+
/* @__PURE__ */ jsx41(Text33, { children: " " }),
|
|
27581
|
+
/* @__PURE__ */ jsx41(Text33, { children: " [y / Enter] Quit [n / Esc] Stay" })
|
|
27546
27582
|
] });
|
|
27547
27583
|
}
|
|
27548
27584
|
var init_QuitDialog = __esm({
|
|
@@ -27554,7 +27590,7 @@ var init_QuitDialog = __esm({
|
|
|
27554
27590
|
|
|
27555
27591
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDialogs.tsx
|
|
27556
27592
|
import { Box as Box31, Text as Text34 } from "ink";
|
|
27557
|
-
import { Fragment as Fragment12, jsx as
|
|
27593
|
+
import { Fragment as Fragment12, jsx as jsx42, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
27558
27594
|
function ReviewFinalizeDialogs({
|
|
27559
27595
|
showFinalize,
|
|
27560
27596
|
showQuit,
|
|
@@ -27569,7 +27605,7 @@ function ReviewFinalizeDialogs({
|
|
|
27569
27605
|
}) {
|
|
27570
27606
|
const { accepted, rejected, needsReview } = countReviewStatuses(components);
|
|
27571
27607
|
return /* @__PURE__ */ jsxs32(Fragment12, { children: [
|
|
27572
|
-
showFinalize && /* @__PURE__ */
|
|
27608
|
+
showFinalize && /* @__PURE__ */ jsx42(
|
|
27573
27609
|
FinalizeDialog,
|
|
27574
27610
|
{
|
|
27575
27611
|
accepted,
|
|
@@ -27582,7 +27618,7 @@ function ReviewFinalizeDialogs({
|
|
|
27582
27618
|
onCancel: onFinalizeCancel
|
|
27583
27619
|
}
|
|
27584
27620
|
),
|
|
27585
|
-
showQuit && /* @__PURE__ */
|
|
27621
|
+
showQuit && /* @__PURE__ */ jsx42(QuitDialog, { hasUnsavedDrafts: false, onConfirm: onQuitConfirm, onCancel: onQuitCancel })
|
|
27586
27622
|
] });
|
|
27587
27623
|
}
|
|
27588
27624
|
function ReviewStepDialogs({
|
|
@@ -27592,7 +27628,7 @@ function ReviewStepDialogs({
|
|
|
27592
27628
|
onFinalize,
|
|
27593
27629
|
onQuit
|
|
27594
27630
|
}) {
|
|
27595
|
-
return /* @__PURE__ */
|
|
27631
|
+
return /* @__PURE__ */ jsx42(
|
|
27596
27632
|
ReviewFinalizeDialogs,
|
|
27597
27633
|
{
|
|
27598
27634
|
showFinalize: surfaceState.showFinalize,
|
|
@@ -27611,11 +27647,11 @@ function ReviewStepDialogs({
|
|
|
27611
27647
|
function ReviewReloadDialog({ open }) {
|
|
27612
27648
|
if (!open) return null;
|
|
27613
27649
|
return /* @__PURE__ */ jsxs32(Box31, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
27614
|
-
/* @__PURE__ */
|
|
27615
|
-
/* @__PURE__ */
|
|
27616
|
-
/* @__PURE__ */
|
|
27617
|
-
/* @__PURE__ */
|
|
27618
|
-
/* @__PURE__ */
|
|
27650
|
+
/* @__PURE__ */ jsx42(Text34, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
|
|
27651
|
+
/* @__PURE__ */ jsx42(Text34, { children: "Unsaved in-memory changes will be lost." }),
|
|
27652
|
+
/* @__PURE__ */ jsx42(Text34, { children: " " }),
|
|
27653
|
+
/* @__PURE__ */ jsx42(Text34, { children: " [Enter] Confirm" }),
|
|
27654
|
+
/* @__PURE__ */ jsx42(Text34, { children: " [Esc] Cancel" })
|
|
27619
27655
|
] });
|
|
27620
27656
|
}
|
|
27621
27657
|
var init_ReviewDialogs = __esm({
|
|
@@ -27852,20 +27888,20 @@ var init_preview_annotations = __esm({
|
|
|
27852
27888
|
});
|
|
27853
27889
|
|
|
27854
27890
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-live-preview.ts
|
|
27855
|
-
import { useCallback as useCallback3, useEffect as useEffect14, useRef as
|
|
27891
|
+
import { useCallback as useCallback3, useEffect as useEffect14, useRef as useRef11, useState as useState20 } from "react";
|
|
27856
27892
|
function useLivePreview(opts) {
|
|
27857
27893
|
const debounceMs = opts.debounceMs ?? DEFAULT_DEBOUNCE_MS;
|
|
27858
27894
|
const [status, setStatus] = useState20("idle");
|
|
27859
27895
|
const [disabled, setDisabled] = useState20(false);
|
|
27860
|
-
const timerRef =
|
|
27861
|
-
const generationRef =
|
|
27862
|
-
const latestRef =
|
|
27863
|
-
const inflightRef =
|
|
27864
|
-
const optsRef =
|
|
27896
|
+
const timerRef = useRef11(null);
|
|
27897
|
+
const generationRef = useRef11(0);
|
|
27898
|
+
const latestRef = useRef11(0);
|
|
27899
|
+
const inflightRef = useRef11(0);
|
|
27900
|
+
const optsRef = useRef11(opts);
|
|
27865
27901
|
useEffect14(() => {
|
|
27866
27902
|
optsRef.current = opts;
|
|
27867
27903
|
});
|
|
27868
|
-
const disabledRef =
|
|
27904
|
+
const disabledRef = useRef11(disabled);
|
|
27869
27905
|
useEffect14(() => {
|
|
27870
27906
|
disabledRef.current = disabled;
|
|
27871
27907
|
}, [disabled]);
|
|
@@ -28018,7 +28054,7 @@ var init_use_review_preview = __esm({
|
|
|
28018
28054
|
|
|
28019
28055
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/LivePreviewSummary.tsx
|
|
28020
28056
|
import { Box as Box32, Text as Text35 } from "ink";
|
|
28021
|
-
import { jsx as
|
|
28057
|
+
import { jsx as jsx43, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
28022
28058
|
function LivePreviewSummary({
|
|
28023
28059
|
enabled,
|
|
28024
28060
|
previewAnnotations,
|
|
@@ -28032,19 +28068,19 @@ function LivePreviewSummary({
|
|
|
28032
28068
|
const counts = { new: 0, changed: 0, removed: 0, breaking: 0 };
|
|
28033
28069
|
for (const annotation of previewAnnotations.values()) counts[annotation] += 1;
|
|
28034
28070
|
const hasCounts = counts.new + counts.changed + counts.removed + counts.breaking > 0;
|
|
28035
|
-
if (disabled) return /* @__PURE__ */
|
|
28036
|
-
if (status === "running" && !hasCounts) return /* @__PURE__ */
|
|
28071
|
+
if (disabled) return /* @__PURE__ */ jsx43(Text35, { color: PALETTE.muted, children: "Preview: disabled (creds rejected)" });
|
|
28072
|
+
if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx43(Text35, { color: PALETTE.muted, children: `Preview: ${spinner} running...` });
|
|
28037
28073
|
if (!hasCounts) return null;
|
|
28038
28074
|
return /* @__PURE__ */ jsxs33(Box32, { children: [
|
|
28039
|
-
/* @__PURE__ */
|
|
28040
|
-
/* @__PURE__ */
|
|
28041
|
-
/* @__PURE__ */
|
|
28042
|
-
/* @__PURE__ */
|
|
28043
|
-
/* @__PURE__ */
|
|
28044
|
-
/* @__PURE__ */
|
|
28045
|
-
showRemovedListHint && removedCount > 0 && /* @__PURE__ */
|
|
28046
|
-
/* @__PURE__ */
|
|
28047
|
-
/* @__PURE__ */
|
|
28075
|
+
/* @__PURE__ */ jsx43(Text35, { children: "Preview: " }),
|
|
28076
|
+
/* @__PURE__ */ jsx43(Text35, { color: PALETTE.success, children: `${counts.new} new` }),
|
|
28077
|
+
/* @__PURE__ */ jsx43(Text35, { children: " \xB7 " }),
|
|
28078
|
+
/* @__PURE__ */ jsx43(Text35, { color: PALETTE.warning, children: `${counts.changed} changed` }),
|
|
28079
|
+
/* @__PURE__ */ jsx43(Text35, { children: " \xB7 " }),
|
|
28080
|
+
/* @__PURE__ */ jsx43(Text35, { color: PALETTE.muted, children: `${counts.removed} removed` }),
|
|
28081
|
+
showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx43(Text35, { children: " ([d] removed list)" }),
|
|
28082
|
+
/* @__PURE__ */ jsx43(Text35, { children: " \xB7 " }),
|
|
28083
|
+
/* @__PURE__ */ jsx43(Text35, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
|
|
28048
28084
|
] });
|
|
28049
28085
|
}
|
|
28050
28086
|
var init_LivePreviewSummary = __esm({
|
|
@@ -28055,10 +28091,10 @@ var init_LivePreviewSummary = __esm({
|
|
|
28055
28091
|
});
|
|
28056
28092
|
|
|
28057
28093
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx
|
|
28058
|
-
import { useCallback as useCallback5, useEffect as useEffect16, useMemo as useMemo4, useRef as
|
|
28094
|
+
import { useCallback as useCallback5, useEffect as useEffect16, useMemo as useMemo4, useRef as useRef12, useState as useState22 } from "react";
|
|
28059
28095
|
import figures7 from "figures";
|
|
28060
28096
|
import { Box as Box33, Text as Text36 } from "ink";
|
|
28061
|
-
import { Fragment as Fragment13, jsx as
|
|
28097
|
+
import { Fragment as Fragment13, jsx as jsx44, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
28062
28098
|
function sortComponentsForSidebar(components, cycleParticipants) {
|
|
28063
28099
|
const isEmpty2 = (entry) => Object.keys(entry.$properties ?? {}).length === 0 && Object.keys(entry.$slots ?? {}).length === 0;
|
|
28064
28100
|
const tier = (c2) => {
|
|
@@ -28102,7 +28138,7 @@ function CyclePathLine({
|
|
|
28102
28138
|
return /* @__PURE__ */ jsxs34(Text36, { color: highlightLine ? PALETTE.warning : void 0, children: [
|
|
28103
28139
|
prefix,
|
|
28104
28140
|
segments.map(
|
|
28105
|
-
(segment, index) => segment.kind === "slot" ? /* @__PURE__ */
|
|
28141
|
+
(segment, index) => segment.kind === "slot" ? /* @__PURE__ */ jsx44(Text36, { color: PALETTE.accent, children: segment.text }, index) : segment.kind === "arrow" ? /* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: segment.text }, index) : /* @__PURE__ */ jsx44(Text36, { color: highlightComponents ? PALETTE.warning : void 0, children: segment.text }, index)
|
|
28106
28142
|
)
|
|
28107
28143
|
] });
|
|
28108
28144
|
}
|
|
@@ -28114,31 +28150,31 @@ function CycleDetailPanel({
|
|
|
28114
28150
|
height
|
|
28115
28151
|
}) {
|
|
28116
28152
|
const lines = [
|
|
28117
|
-
/* @__PURE__ */
|
|
28118
|
-
/* @__PURE__ */
|
|
28119
|
-
/* @__PURE__ */
|
|
28120
|
-
/* @__PURE__ */
|
|
28153
|
+
/* @__PURE__ */ jsx44(Text36, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${cycles.length})` }, "cyc-title"),
|
|
28154
|
+
/* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: "push will fail until these are resolved" }, "cyc-sub"),
|
|
28155
|
+
/* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: "Reject a cycle member or remove a slot edge to break the cycle." }, "cyc-guidance"),
|
|
28156
|
+
/* @__PURE__ */ jsx44(Text36, { children: " " }, "cyc-space")
|
|
28121
28157
|
];
|
|
28122
28158
|
cycles.forEach((cycle, index) => {
|
|
28123
28159
|
const nodeCount = new Set(cycle.path).size;
|
|
28124
28160
|
const isCursor = index === cursor;
|
|
28125
28161
|
lines.push(
|
|
28126
|
-
/* @__PURE__ */
|
|
28127
|
-
/* @__PURE__ */
|
|
28162
|
+
/* @__PURE__ */ jsx44(Text36, { bold: true, inverse: isCursor, children: `${isCursor ? figures7.pointer : " "} Cycle ${index + 1} (${nodeCount} component${nodeCount === 1 ? "" : "s"}):` }, `cyc-h-${index}`),
|
|
28163
|
+
/* @__PURE__ */ jsx44(CyclePathLine, { segments: formatCyclePathSegments2(cycle, 16), prefix: " " }, `cyc-p-${index}`)
|
|
28128
28164
|
);
|
|
28129
28165
|
if (cycle.suggestedBreak) {
|
|
28130
28166
|
lines.push(
|
|
28131
|
-
/* @__PURE__ */
|
|
28167
|
+
/* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: ` Suggested fix: remove [${cycle.suggestedBreak.slotName}] from ${cycle.suggestedBreak.fromComponent}` }, `cyc-fix-${index}`)
|
|
28132
28168
|
);
|
|
28133
28169
|
}
|
|
28134
|
-
lines.push(/* @__PURE__ */
|
|
28170
|
+
lines.push(/* @__PURE__ */ jsx44(Text36, { children: " " }, `cyc-s-${index}`));
|
|
28135
28171
|
});
|
|
28136
28172
|
const footer = "[\u2191\u2193] move [Enter] fix cycle [c/q/Esc] close";
|
|
28137
28173
|
const viewportHeight = Math.max(1, height - 3);
|
|
28138
28174
|
const visible = lines.slice(scrollOffset, scrollOffset + viewportHeight - 1);
|
|
28139
28175
|
return /* @__PURE__ */ jsxs34(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
|
|
28140
28176
|
visible,
|
|
28141
|
-
/* @__PURE__ */
|
|
28177
|
+
/* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: footer })
|
|
28142
28178
|
] });
|
|
28143
28179
|
}
|
|
28144
28180
|
function BreakCyclePanel({
|
|
@@ -28150,13 +28186,13 @@ function BreakCyclePanel({
|
|
|
28150
28186
|
height
|
|
28151
28187
|
}) {
|
|
28152
28188
|
return /* @__PURE__ */ jsxs34(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
|
|
28153
|
-
/* @__PURE__ */
|
|
28154
|
-
cycle && /* @__PURE__ */
|
|
28155
|
-
/* @__PURE__ */
|
|
28156
|
-
/* @__PURE__ */
|
|
28157
|
-
edges.length > 0 && /* @__PURE__ */
|
|
28158
|
-
edges.map((edge, index) => /* @__PURE__ */
|
|
28159
|
-
confirming ? /* @__PURE__ */
|
|
28189
|
+
/* @__PURE__ */ jsx44(Text36, { bold: true, color: PALETTE.warning, children: "BREAK CYCLE \u2014 remove a slot edge" }),
|
|
28190
|
+
cycle && /* @__PURE__ */ jsx44(CyclePathLine, { segments: formatCyclePathSegments2(cycle), prefix: " ", highlightComponents: true }),
|
|
28191
|
+
/* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: cycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
|
|
28192
|
+
/* @__PURE__ */ jsx44(Text36, { children: " " }),
|
|
28193
|
+
edges.length > 0 && /* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: "remove slot edge:" }),
|
|
28194
|
+
edges.map((edge, index) => /* @__PURE__ */ jsx44(Text36, { inverse: index === cursor, children: `${index === cursor ? figures7.pointer : " "} remove '${edge.toComponent}' from ${edge.fromComponent}.$slots.${edge.slotName}.$allowedComponents` }, `${edge.fromComponent}-${edge.slotName}-${edge.toComponent}`)),
|
|
28195
|
+
confirming ? /* @__PURE__ */ jsx44(Text36, { bold: true, color: PALETTE.warning, children: "Delete this slot edge? [y] confirm [n] cancel" }) : /* @__PURE__ */ jsx44(Text36, { children: "[\u2191\u2193] move [Enter] delete [x/Esc] close" })
|
|
28160
28196
|
] });
|
|
28161
28197
|
}
|
|
28162
28198
|
function buildBreakingRows(breakingChanges) {
|
|
@@ -28202,9 +28238,9 @@ function deriveBreakingChanges(response) {
|
|
|
28202
28238
|
}
|
|
28203
28239
|
function GenerateReviewStep(props) {
|
|
28204
28240
|
if (!props.extractSessionId) {
|
|
28205
|
-
return /* @__PURE__ */
|
|
28241
|
+
return /* @__PURE__ */ jsx44(Box33, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx44(Text36, { color: PALETTE.error, children: "Error: no session ID \u2014 cannot load generated definitions." }) });
|
|
28206
28242
|
}
|
|
28207
|
-
return /* @__PURE__ */
|
|
28243
|
+
return /* @__PURE__ */ jsx44(GenerateReviewStepView, { ...props, extractSessionId: props.extractSessionId });
|
|
28208
28244
|
}
|
|
28209
28245
|
function GenerateReviewStepView({
|
|
28210
28246
|
extractSessionId,
|
|
@@ -28269,7 +28305,7 @@ function GenerateReviewStepView({
|
|
|
28269
28305
|
setFinalizeError
|
|
28270
28306
|
} = reviewSurface;
|
|
28271
28307
|
const [removedBannerCollapsed, setRemovedBannerCollapsed] = useState22(false);
|
|
28272
|
-
const removedBannerDefaultedRef =
|
|
28308
|
+
const removedBannerDefaultedRef = useRef12(false);
|
|
28273
28309
|
const [cyclePanelScroll, setCyclePanelScroll] = useState22(0);
|
|
28274
28310
|
const [cyclesCursor, setCyclesCursor] = useState22(0);
|
|
28275
28311
|
const cyclePanel = useOverlayPanel({
|
|
@@ -28289,7 +28325,7 @@ function GenerateReviewStepView({
|
|
|
28289
28325
|
const [breakCursor, setBreakCursor] = useState22(0);
|
|
28290
28326
|
const [breakConfirm, setBreakConfirm] = useState22(false);
|
|
28291
28327
|
const [expandedGroups, setExpandedGroups] = useState22(/* @__PURE__ */ new Set());
|
|
28292
|
-
const seededGroupsRef =
|
|
28328
|
+
const seededGroupsRef = useRef12(false);
|
|
28293
28329
|
const {
|
|
28294
28330
|
searchOpen,
|
|
28295
28331
|
setSearchOpen,
|
|
@@ -28313,7 +28349,7 @@ function GenerateReviewStepView({
|
|
|
28313
28349
|
const [pendingEditorFocus, setPendingEditorFocus] = useState22(null);
|
|
28314
28350
|
const [autoRejected, setAutoRejected] = useState22([]);
|
|
28315
28351
|
const [undoSnapshot, setUndoSnapshot] = useState22(null);
|
|
28316
|
-
const autoRejectFiredRef =
|
|
28352
|
+
const autoRejectFiredRef = useRef12(false);
|
|
28317
28353
|
const [showReloadDialog, setShowReloadDialog] = useState22(false);
|
|
28318
28354
|
const acceptedCountForPreview = components.filter((c2) => c2.status === "accepted").length;
|
|
28319
28355
|
const { previewAnnotations, removedComponents, livePreviewHook, livePreviewSpinner } = useReviewPreview({
|
|
@@ -28446,7 +28482,7 @@ function GenerateReviewStepView({
|
|
|
28446
28482
|
}),
|
|
28447
28483
|
applySnapshot: applyHistorySnapshot
|
|
28448
28484
|
});
|
|
28449
|
-
const autoRejectPushedRef =
|
|
28485
|
+
const autoRejectPushedRef = useRef12(false);
|
|
28450
28486
|
useEffect16(() => {
|
|
28451
28487
|
if (loading) return;
|
|
28452
28488
|
if (!historySeededRef.current) return;
|
|
@@ -29061,13 +29097,13 @@ function GenerateReviewStepView({
|
|
|
29061
29097
|
}
|
|
29062
29098
|
});
|
|
29063
29099
|
if (loading) {
|
|
29064
|
-
return /* @__PURE__ */
|
|
29100
|
+
return /* @__PURE__ */ jsx44(ReviewLoadingState, {});
|
|
29065
29101
|
}
|
|
29066
29102
|
if (loadError) {
|
|
29067
|
-
return /* @__PURE__ */
|
|
29103
|
+
return /* @__PURE__ */ jsx44(ReviewLoadError, { message: loadError });
|
|
29068
29104
|
}
|
|
29069
29105
|
if (showHelp) {
|
|
29070
|
-
return /* @__PURE__ */
|
|
29106
|
+
return /* @__PURE__ */ jsx44(HelpOverlay, { sections: HELP_SECTIONS2, handleInput: false, onClose: () => setShowHelp(false) });
|
|
29071
29107
|
}
|
|
29072
29108
|
const { selected, selectedJson, visibleJsonPanelValue } = getReviewSelectionState(
|
|
29073
29109
|
components,
|
|
@@ -29108,7 +29144,7 @@ function GenerateReviewStepView({
|
|
|
29108
29144
|
return false;
|
|
29109
29145
|
})();
|
|
29110
29146
|
return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", children: [
|
|
29111
|
-
/* @__PURE__ */
|
|
29147
|
+
/* @__PURE__ */ jsx44(
|
|
29112
29148
|
ReviewStepDialogs,
|
|
29113
29149
|
{
|
|
29114
29150
|
surfaceState: reviewSurface,
|
|
@@ -29118,15 +29154,15 @@ function GenerateReviewStepView({
|
|
|
29118
29154
|
onQuit
|
|
29119
29155
|
}
|
|
29120
29156
|
),
|
|
29121
|
-
/* @__PURE__ */
|
|
29157
|
+
/* @__PURE__ */ jsx44(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
|
|
29122
29158
|
removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
|
|
29123
|
-
/* @__PURE__ */
|
|
29159
|
+
/* @__PURE__ */ jsx44(Text36, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
|
|
29124
29160
|
!removedBannerCollapsed && /* @__PURE__ */ jsxs34(Fragment13, { children: [
|
|
29125
|
-
/* @__PURE__ */
|
|
29126
|
-
removedComponents.map((rc) => /* @__PURE__ */
|
|
29161
|
+
/* @__PURE__ */ jsx44(Text36, { children: " " }),
|
|
29162
|
+
removedComponents.map((rc) => /* @__PURE__ */ jsx44(Text36, { children: removedComponentLine(rc) }, rc.id))
|
|
29127
29163
|
] })
|
|
29128
29164
|
] }),
|
|
29129
|
-
breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */
|
|
29165
|
+
breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx44(Box33, { paddingX: 1, children: /* @__PURE__ */ jsx44(
|
|
29130
29166
|
Text36,
|
|
29131
29167
|
{
|
|
29132
29168
|
color: PALETTE.warning,
|
|
@@ -29138,13 +29174,13 @@ function GenerateReviewStepView({
|
|
|
29138
29174
|
const comp = row ? breakingChanges.find((b) => b.componentName === row.componentName) : void 0;
|
|
29139
29175
|
if (!comp) return null;
|
|
29140
29176
|
return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
29141
|
-
/* @__PURE__ */
|
|
29142
|
-
comp.impact && /* @__PURE__ */
|
|
29143
|
-
comp.changes.length === 0 ? /* @__PURE__ */
|
|
29144
|
-
/* @__PURE__ */
|
|
29177
|
+
/* @__PURE__ */ jsx44(Text36, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
|
|
29178
|
+
comp.impact && /* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: ` affects ${comp.impact.affectedExperiences} experience${comp.impact.affectedExperiences === 1 ? "" : "s"}, ${comp.impact.affectedFragments} fragment${comp.impact.affectedFragments === 1 ? "" : "s"}` }),
|
|
29179
|
+
comp.changes.length === 0 ? /* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: " (no enumerated changes)" }) : comp.changes.map((change, ci) => /* @__PURE__ */ jsx44(Text36, { children: ` \u2022 ${formatBreakingChange(change, comp.current)}` }, `bd-detail-${ci}`)),
|
|
29180
|
+
/* @__PURE__ */ jsx44(Text36, { children: "[D/Esc] close detail" })
|
|
29145
29181
|
] });
|
|
29146
29182
|
})(),
|
|
29147
|
-
!dialogOpen && /* @__PURE__ */
|
|
29183
|
+
!dialogOpen && /* @__PURE__ */ jsx44(
|
|
29148
29184
|
LivePreviewSummary,
|
|
29149
29185
|
{
|
|
29150
29186
|
enabled: livePreview,
|
|
@@ -29164,15 +29200,15 @@ function GenerateReviewStepView({
|
|
|
29164
29200
|
const members = stillRejected.filter((n) => participantSet.has(n)).sort();
|
|
29165
29201
|
const ancestors = stillRejected.filter((n) => !participantSet.has(n)).sort();
|
|
29166
29202
|
return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
|
|
29167
|
-
/* @__PURE__ */
|
|
29168
|
-
members.length > 0 && /* @__PURE__ */
|
|
29169
|
-
ancestors.length > 0 && /* @__PURE__ */
|
|
29170
|
-
/* @__PURE__ */
|
|
29203
|
+
/* @__PURE__ */ jsx44(Text36, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
|
|
29204
|
+
members.length > 0 && /* @__PURE__ */ jsx44(Text36, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
|
|
29205
|
+
ancestors.length > 0 && /* @__PURE__ */ jsx44(Text36, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
|
|
29206
|
+
/* @__PURE__ */ jsx44(Text36, { color: PALETTE.muted, children: undoSnapshot ? " [Ctrl+Z] undo \xB7 [r]/[a] manually toggle \xB7 [F] continue" : " [r]/[a] manually toggle \xB7 [F] continue" })
|
|
29171
29207
|
] });
|
|
29172
29208
|
})(),
|
|
29173
|
-
/* @__PURE__ */
|
|
29174
|
-
/* @__PURE__ */
|
|
29175
|
-
!dialogOpen && breakPanel.isOpen && /* @__PURE__ */
|
|
29209
|
+
/* @__PURE__ */ jsx44(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
|
|
29210
|
+
/* @__PURE__ */ jsx44(ReviewFinalizeError, { message: finalizeError, hidden: dialogOpen }),
|
|
29211
|
+
!dialogOpen && breakPanel.isOpen && /* @__PURE__ */ jsx44(
|
|
29176
29212
|
BreakCyclePanel,
|
|
29177
29213
|
{
|
|
29178
29214
|
cycle: cycleRows[cyclesCursor],
|
|
@@ -29183,7 +29219,7 @@ function GenerateReviewStepView({
|
|
|
29183
29219
|
height: panelHeight
|
|
29184
29220
|
}
|
|
29185
29221
|
),
|
|
29186
|
-
!dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */
|
|
29222
|
+
!dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsx44(
|
|
29187
29223
|
CycleDetailPanel,
|
|
29188
29224
|
{
|
|
29189
29225
|
cycles: cycleRows,
|
|
@@ -29194,7 +29230,7 @@ function GenerateReviewStepView({
|
|
|
29194
29230
|
}
|
|
29195
29231
|
),
|
|
29196
29232
|
!dialogOpen && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs34(Box33, { children: [
|
|
29197
|
-
breakingPanel.isOpen ? /* @__PURE__ */
|
|
29233
|
+
breakingPanel.isOpen ? /* @__PURE__ */ jsx44(
|
|
29198
29234
|
GotoBanner,
|
|
29199
29235
|
{
|
|
29200
29236
|
title: `Breaking changes \u2014 ${breakingRows[breakingCursor]?.componentName ?? "unknown component"}`,
|
|
@@ -29207,7 +29243,7 @@ function GenerateReviewStepView({
|
|
|
29207
29243
|
width: sidebarWidth,
|
|
29208
29244
|
footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [D] detail \xB7 [Esc] close"
|
|
29209
29245
|
}
|
|
29210
|
-
) : /* @__PURE__ */
|
|
29246
|
+
) : /* @__PURE__ */ jsx44(
|
|
29211
29247
|
GroupedSidebar,
|
|
29212
29248
|
{
|
|
29213
29249
|
items: groupedItems,
|
|
@@ -29248,7 +29284,7 @@ function GenerateReviewStepView({
|
|
|
29248
29284
|
graph: sidebarGraph
|
|
29249
29285
|
}
|
|
29250
29286
|
),
|
|
29251
|
-
selected ? /* @__PURE__ */
|
|
29287
|
+
selected ? /* @__PURE__ */ jsx44(
|
|
29252
29288
|
ReviewComponentPanel,
|
|
29253
29289
|
{
|
|
29254
29290
|
selectedKey: selected.key,
|
|
@@ -29280,12 +29316,12 @@ function GenerateReviewStepView({
|
|
|
29280
29316
|
livePreview: livePreviewHook,
|
|
29281
29317
|
livePreviewSpinner
|
|
29282
29318
|
}
|
|
29283
|
-
) : /* @__PURE__ */
|
|
29319
|
+
) : /* @__PURE__ */ jsx44(ReviewNoSelection, {})
|
|
29284
29320
|
] }),
|
|
29285
29321
|
!dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", children: [
|
|
29286
|
-
/* @__PURE__ */
|
|
29322
|
+
/* @__PURE__ */ jsx44(Text36, { color: PALETTE.warning, children: `\u26A0 ${cycleRows.length} slot dependency cycle${cycleRows.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
|
|
29287
29323
|
cycleRows.slice(0, 3).map((cycle, idx) => {
|
|
29288
|
-
return /* @__PURE__ */
|
|
29324
|
+
return /* @__PURE__ */ jsx44(
|
|
29289
29325
|
CyclePathLine,
|
|
29290
29326
|
{
|
|
29291
29327
|
segments: formatCyclePathSegments2(cycle),
|
|
@@ -29296,10 +29332,10 @@ function GenerateReviewStepView({
|
|
|
29296
29332
|
`cyc-banner-${idx}`
|
|
29297
29333
|
);
|
|
29298
29334
|
}),
|
|
29299
|
-
cycleRows.length > 3 && /* @__PURE__ */
|
|
29300
|
-
/* @__PURE__ */
|
|
29335
|
+
cycleRows.length > 3 && /* @__PURE__ */ jsx44(Text36, { color: PALETTE.warning, children: ` \u2026${cycleRows.length - 3} more` }),
|
|
29336
|
+
/* @__PURE__ */ jsx44(Text36, { children: " press [c] for detail" })
|
|
29301
29337
|
] }),
|
|
29302
|
-
/* @__PURE__ */
|
|
29338
|
+
/* @__PURE__ */ jsx44(
|
|
29303
29339
|
SearchMatchSummary,
|
|
29304
29340
|
{
|
|
29305
29341
|
open: searchOpen,
|
|
@@ -29310,7 +29346,7 @@ function GenerateReviewStepView({
|
|
|
29310
29346
|
hidden: dialogOpen
|
|
29311
29347
|
}
|
|
29312
29348
|
),
|
|
29313
|
-
!dialogOpen && sidebarFocused && /* @__PURE__ */
|
|
29349
|
+
!dialogOpen && sidebarFocused && /* @__PURE__ */ jsx44(CompactControlBar, { hasGroupRoots, searchActive: searchOpen || searchQuery.length > 0 })
|
|
29314
29350
|
] });
|
|
29315
29351
|
}
|
|
29316
29352
|
var HELP_SECTIONS2;
|
|
@@ -29426,16 +29462,16 @@ var init_generate_review_step = __esm({
|
|
|
29426
29462
|
|
|
29427
29463
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/CustomPromptBanner.tsx
|
|
29428
29464
|
import { Box as Box34, Text as Text37 } from "ink";
|
|
29429
|
-
import { jsx as
|
|
29465
|
+
import { jsx as jsx45, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
29430
29466
|
function CustomPromptBanner({ generatePromptPath }) {
|
|
29431
29467
|
if (!generatePromptPath) return null;
|
|
29432
29468
|
return /* @__PURE__ */ jsxs35(Box34, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
29433
|
-
/* @__PURE__ */
|
|
29469
|
+
/* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, bold: true, children: "WARNING: Custom prompt active" }),
|
|
29434
29470
|
generatePromptPath ? /* @__PURE__ */ jsxs35(Text37, { color: PALETTE.warning, children: [
|
|
29435
29471
|
"components: ",
|
|
29436
29472
|
generatePromptPath
|
|
29437
29473
|
] }) : null,
|
|
29438
|
-
/* @__PURE__ */
|
|
29474
|
+
/* @__PURE__ */ jsx45(Text37, { color: PALETTE.warning, children: "Bundled invariants (utility-wrapper rejection, description content rules) do NOT apply." })
|
|
29439
29475
|
] });
|
|
29440
29476
|
}
|
|
29441
29477
|
var init_CustomPromptBanner = __esm({
|
|
@@ -29465,14 +29501,14 @@ var init_contentful_urls2 = __esm({
|
|
|
29465
29501
|
|
|
29466
29502
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/SpaceEnvironment.tsx
|
|
29467
29503
|
import { Box as Box35, Text as Text38 } from "ink";
|
|
29468
|
-
import { jsx as
|
|
29504
|
+
import { jsx as jsx46, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
29469
29505
|
function SpaceEnvironment({ spaceId, environmentId }) {
|
|
29470
29506
|
return /* @__PURE__ */ jsxs36(Box35, { gap: 1, marginTop: 1, children: [
|
|
29471
|
-
/* @__PURE__ */
|
|
29472
|
-
/* @__PURE__ */
|
|
29473
|
-
/* @__PURE__ */
|
|
29474
|
-
/* @__PURE__ */
|
|
29475
|
-
/* @__PURE__ */
|
|
29507
|
+
/* @__PURE__ */ jsx46(Text38, { color: PALETTE.muted, children: "Space:" }),
|
|
29508
|
+
/* @__PURE__ */ jsx46(Text38, { children: spaceId }),
|
|
29509
|
+
/* @__PURE__ */ jsx46(Text38, { color: PALETTE.muted, children: "/" }),
|
|
29510
|
+
/* @__PURE__ */ jsx46(Text38, { color: PALETTE.muted, children: "Environment:" }),
|
|
29511
|
+
/* @__PURE__ */ jsx46(Text38, { children: environmentId })
|
|
29476
29512
|
] });
|
|
29477
29513
|
}
|
|
29478
29514
|
var init_SpaceEnvironment = __esm({
|
|
@@ -29484,12 +29520,12 @@ var init_SpaceEnvironment = __esm({
|
|
|
29484
29520
|
|
|
29485
29521
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/DoneStep.tsx
|
|
29486
29522
|
import { Box as Box36, Text as Text39 } from "ink";
|
|
29487
|
-
import { Fragment as Fragment14, jsx as
|
|
29523
|
+
import { Fragment as Fragment14, jsx as jsx47, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
29488
29524
|
function EntityRows({ entity, label }) {
|
|
29489
29525
|
const plural3 = (n) => `${n} ${label}${n !== 1 ? "s" : ""}`;
|
|
29490
29526
|
return /* @__PURE__ */ jsxs37(Fragment14, { children: [
|
|
29491
29527
|
ACTIONS.filter((action) => entity[action] > 0).map((action) => /* @__PURE__ */ jsxs37(Text39, { children: [
|
|
29492
|
-
/* @__PURE__ */
|
|
29528
|
+
/* @__PURE__ */ jsx47(Text39, { color: PALETTE.success, children: "\u2713" }),
|
|
29493
29529
|
" ",
|
|
29494
29530
|
plural3(entity[action]),
|
|
29495
29531
|
" ",
|
|
@@ -29504,8 +29540,8 @@ function EntityRows({ entity, label }) {
|
|
|
29504
29540
|
}
|
|
29505
29541
|
function LinkRow({ title, url }) {
|
|
29506
29542
|
return /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", children: [
|
|
29507
|
-
/* @__PURE__ */
|
|
29508
|
-
/* @__PURE__ */
|
|
29543
|
+
/* @__PURE__ */ jsx47(Text39, { color: PALETTE.muted, children: title }),
|
|
29544
|
+
/* @__PURE__ */ jsx47(Text39, { color: PALETTE.accent, children: url })
|
|
29509
29545
|
] });
|
|
29510
29546
|
}
|
|
29511
29547
|
function DoneStep({
|
|
@@ -29528,11 +29564,11 @@ function DoneStep({
|
|
|
29528
29564
|
const success = totalFailed === 0;
|
|
29529
29565
|
const urlArgs = { host: host ?? "api.contentful.com", spaceId, environmentId };
|
|
29530
29566
|
return /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
29531
|
-
success ? /* @__PURE__ */
|
|
29532
|
-
totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */
|
|
29533
|
-
/* @__PURE__ */
|
|
29534
|
-
/* @__PURE__ */
|
|
29535
|
-
summary && /* @__PURE__ */
|
|
29567
|
+
success ? /* @__PURE__ */ jsx47(Text39, { bold: true, color: PALETTE.success, children: "Done!" }) : /* @__PURE__ */ jsx47(Text39, { bold: true, color: PALETTE.warning, children: "\u26A0 Finished with errors" }),
|
|
29568
|
+
totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */ jsx47(Text39, { color: PALETTE.muted, children: "Nothing was pushed \u2014 everything was already up to date." }) : /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", children: [
|
|
29569
|
+
/* @__PURE__ */ jsx47(EntityRows, { entity: componentTypes, label: "Component Type" }),
|
|
29570
|
+
/* @__PURE__ */ jsx47(EntityRows, { entity: designTokens, label: "Design Token" }),
|
|
29571
|
+
summary && /* @__PURE__ */ jsx47(Box36, { marginTop: 1, children: /* @__PURE__ */ jsxs37(Text39, { color: PALETTE.muted, children: [
|
|
29536
29572
|
"Push result: ",
|
|
29537
29573
|
summary.succeeded,
|
|
29538
29574
|
"/",
|
|
@@ -29546,7 +29582,7 @@ function DoneStep({
|
|
|
29546
29582
|
] }) })
|
|
29547
29583
|
] }),
|
|
29548
29584
|
failures.length > 0 && /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", children: [
|
|
29549
|
-
/* @__PURE__ */
|
|
29585
|
+
/* @__PURE__ */ jsx47(Text39, { bold: true, color: PALETTE.error, children: "Failure details" }),
|
|
29550
29586
|
failures.map((failure) => /* @__PURE__ */ jsxs37(Text39, { color: PALETTE.error, children: [
|
|
29551
29587
|
failure.entityType,
|
|
29552
29588
|
" ",
|
|
@@ -29555,11 +29591,11 @@ function DoneStep({
|
|
|
29555
29591
|
failure.message
|
|
29556
29592
|
] }, `${failure.entityType}:${failure.entityId}`))
|
|
29557
29593
|
] }),
|
|
29558
|
-
/* @__PURE__ */
|
|
29594
|
+
/* @__PURE__ */ jsx47(SpaceEnvironment, { spaceId, environmentId }),
|
|
29559
29595
|
success && totalPushed > 0 && /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", gap: 1, children: [
|
|
29560
|
-
/* @__PURE__ */
|
|
29561
|
-
/* @__PURE__ */
|
|
29562
|
-
/* @__PURE__ */
|
|
29596
|
+
/* @__PURE__ */ jsx47(Text39, { color: PALETTE.success, children: "Your design system is now in Contentful Experiences." }),
|
|
29597
|
+
/* @__PURE__ */ jsx47(LinkRow, { title: "View your components here:", url: buildPostPushUrl2(urlArgs) }),
|
|
29598
|
+
/* @__PURE__ */ jsx47(
|
|
29563
29599
|
LinkRow,
|
|
29564
29600
|
{
|
|
29565
29601
|
title: "View your design tokens here:",
|
|
@@ -29567,7 +29603,7 @@ function DoneStep({
|
|
|
29567
29603
|
}
|
|
29568
29604
|
)
|
|
29569
29605
|
] }),
|
|
29570
|
-
/* @__PURE__ */
|
|
29606
|
+
/* @__PURE__ */ jsx47(Text39, { children: "[Enter / q] Exit" })
|
|
29571
29607
|
] });
|
|
29572
29608
|
}
|
|
29573
29609
|
var ACTIONS;
|
|
@@ -29626,7 +29662,7 @@ import { useState as useState24 } from "react";
|
|
|
29626
29662
|
import { Box as Box37, Text as Text40 } from "ink";
|
|
29627
29663
|
import { readdirSync as readdirSync3 } from "node:fs";
|
|
29628
29664
|
import { dirname as dirname15, basename as basename6, join as join22 } from "node:path";
|
|
29629
|
-
import { jsx as
|
|
29665
|
+
import { jsx as jsx48, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
29630
29666
|
function autocomplete(partial) {
|
|
29631
29667
|
if (!partial) return null;
|
|
29632
29668
|
const normalized = normalizePath(partial);
|
|
@@ -29685,18 +29721,18 @@ function PathPrompt({
|
|
|
29685
29721
|
const cursor = cursorVisible ? "\u2588" : " ";
|
|
29686
29722
|
return /* @__PURE__ */ jsxs38(Box37, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
29687
29723
|
/* @__PURE__ */ jsxs38(Box37, { gap: 1, children: [
|
|
29688
|
-
/* @__PURE__ */
|
|
29724
|
+
/* @__PURE__ */ jsx48(Text40, { color: PALETTE.accent, children: "?" }),
|
|
29689
29725
|
/* @__PURE__ */ jsxs38(Text40, { bold: true, children: [
|
|
29690
29726
|
label,
|
|
29691
29727
|
":"
|
|
29692
29728
|
] }),
|
|
29693
|
-
/* @__PURE__ */
|
|
29694
|
-
/* @__PURE__ */
|
|
29729
|
+
/* @__PURE__ */ jsx48(Text40, { color: isPlaceholder ? PALETTE.muted : void 0, children: shown }),
|
|
29730
|
+
/* @__PURE__ */ jsx48(Text40, { children: cursor })
|
|
29695
29731
|
] }),
|
|
29696
29732
|
/* @__PURE__ */ jsxs38(Box37, { gap: 3, children: [
|
|
29697
|
-
/* @__PURE__ */
|
|
29698
|
-
/* @__PURE__ */
|
|
29699
|
-
/* @__PURE__ */
|
|
29733
|
+
/* @__PURE__ */ jsx48(Text40, { children: "[Enter] Confirm" }),
|
|
29734
|
+
/* @__PURE__ */ jsx48(Text40, { children: "[Tab] Autocomplete" }),
|
|
29735
|
+
/* @__PURE__ */ jsx48(Text40, { children: "[Esc] Cancel" })
|
|
29700
29736
|
] })
|
|
29701
29737
|
] });
|
|
29702
29738
|
}
|
|
@@ -29712,10 +29748,10 @@ var init_PathPrompt = __esm({
|
|
|
29712
29748
|
|
|
29713
29749
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/StepHeader.tsx
|
|
29714
29750
|
import { Box as Box38, Text as Text41 } from "ink";
|
|
29715
|
-
import { jsx as
|
|
29751
|
+
import { jsx as jsx49, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
29716
29752
|
function StepHeader({ stepNumber, totalSteps, title }) {
|
|
29717
29753
|
return /* @__PURE__ */ jsxs39(Box38, { flexDirection: "column", gap: 0, children: [
|
|
29718
|
-
/* @__PURE__ */
|
|
29754
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: "\u2500".repeat(40) }),
|
|
29719
29755
|
/* @__PURE__ */ jsxs39(Box38, { gap: 1, children: [
|
|
29720
29756
|
/* @__PURE__ */ jsxs39(Text41, { bold: true, children: [
|
|
29721
29757
|
"Step ",
|
|
@@ -29723,10 +29759,10 @@ function StepHeader({ stepNumber, totalSteps, title }) {
|
|
|
29723
29759
|
" of ",
|
|
29724
29760
|
totalSteps
|
|
29725
29761
|
] }),
|
|
29726
|
-
/* @__PURE__ */
|
|
29727
|
-
/* @__PURE__ */
|
|
29762
|
+
/* @__PURE__ */ jsx49(Text41, { bold: true, children: "\u2014" }),
|
|
29763
|
+
/* @__PURE__ */ jsx49(Text41, { bold: true, children: title })
|
|
29728
29764
|
] }),
|
|
29729
|
-
/* @__PURE__ */
|
|
29765
|
+
/* @__PURE__ */ jsx49(Text41, { color: PALETTE.muted, children: "\u2500".repeat(40) })
|
|
29730
29766
|
] });
|
|
29731
29767
|
}
|
|
29732
29768
|
var init_StepHeader = __esm({
|
|
@@ -29739,7 +29775,7 @@ var init_StepHeader = __esm({
|
|
|
29739
29775
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/use-timed-spinner.tsx
|
|
29740
29776
|
import { useEffect as useEffect18, useState as useState25 } from "react";
|
|
29741
29777
|
import { Spinner as Spinner2 } from "@inkjs/ui";
|
|
29742
|
-
import { jsx as
|
|
29778
|
+
import { jsx as jsx50 } from "react/jsx-runtime";
|
|
29743
29779
|
function useTimedSpinner() {
|
|
29744
29780
|
const [elapsedSeconds, setElapsedSeconds] = useState25(0);
|
|
29745
29781
|
useEffect18(() => {
|
|
@@ -29751,7 +29787,7 @@ function useTimedSpinner() {
|
|
|
29751
29787
|
const mins = Math.floor(elapsedSeconds / 60);
|
|
29752
29788
|
const secs = elapsedSeconds % 60;
|
|
29753
29789
|
return {
|
|
29754
|
-
spinner: /* @__PURE__ */
|
|
29790
|
+
spinner: /* @__PURE__ */ jsx50(Spinner2, {}),
|
|
29755
29791
|
elapsed: mins > 0 ? `${mins}m ${secs}s` : `${secs}s`
|
|
29756
29792
|
};
|
|
29757
29793
|
}
|
|
@@ -29764,21 +29800,21 @@ var init_use_timed_spinner = __esm({
|
|
|
29764
29800
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PushingStep.tsx
|
|
29765
29801
|
import { Box as Box39, Text as Text42 } from "ink";
|
|
29766
29802
|
import { ProgressBar as ProgressBar2, ThemeProvider as ThemeProvider2 } from "@inkjs/ui";
|
|
29767
|
-
import { jsx as
|
|
29803
|
+
import { jsx as jsx51, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
29768
29804
|
function PushingStep({ stepNumber, totalSteps, progress }) {
|
|
29769
29805
|
const { elapsed } = useTimedSpinner();
|
|
29770
29806
|
const operationId = progress && progress.kind === "queued" ? progress.operationId : null;
|
|
29771
29807
|
const showGlobal = progress && progress.kind === "progress";
|
|
29772
29808
|
const showCurrent = progress && progress.kind === "progress" && progress.current ? progress.current : null;
|
|
29773
29809
|
return /* @__PURE__ */ jsxs40(Box39, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
29774
|
-
/* @__PURE__ */
|
|
29775
|
-
/* @__PURE__ */
|
|
29810
|
+
/* @__PURE__ */ jsx51(StepHeader, { stepNumber, totalSteps, title: "Push to Contentful" }),
|
|
29811
|
+
/* @__PURE__ */ jsx51(Text42, { children: "Writing component types and design tokens to your Contentful space..." }),
|
|
29776
29812
|
operationId && /* @__PURE__ */ jsxs40(Box39, { gap: 1, children: [
|
|
29777
|
-
/* @__PURE__ */
|
|
29778
|
-
/* @__PURE__ */
|
|
29813
|
+
/* @__PURE__ */ jsx51(Text42, { color: PALETTE.muted, children: "Operation:" }),
|
|
29814
|
+
/* @__PURE__ */ jsx51(Text42, { children: operationId })
|
|
29779
29815
|
] }),
|
|
29780
|
-
showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */
|
|
29781
|
-
/* @__PURE__ */
|
|
29816
|
+
showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */ jsx51(Box39, { gap: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs40(Box39, { gap: 2, children: [
|
|
29817
|
+
/* @__PURE__ */ jsx51(Box39, { width: 40, children: /* @__PURE__ */ jsx51(ThemeProvider2, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx51(ProgressBar2, { value: Math.round(progress.processed / progress.total * 100) }) }) }),
|
|
29782
29818
|
/* @__PURE__ */ jsxs40(Text42, { color: PALETTE.muted, children: [
|
|
29783
29819
|
progress.processed,
|
|
29784
29820
|
"/",
|
|
@@ -29787,10 +29823,10 @@ function PushingStep({ stepNumber, totalSteps, progress }) {
|
|
|
29787
29823
|
] })
|
|
29788
29824
|
] }) }),
|
|
29789
29825
|
showCurrent && /* @__PURE__ */ jsxs40(Box39, { gap: 1, children: [
|
|
29790
|
-
/* @__PURE__ */
|
|
29791
|
-
/* @__PURE__ */
|
|
29826
|
+
/* @__PURE__ */ jsx51(Text42, { color: PALETTE.muted, children: "Now processing:" }),
|
|
29827
|
+
/* @__PURE__ */ jsx51(Text42, { children: showCurrent })
|
|
29792
29828
|
] }),
|
|
29793
|
-
/* @__PURE__ */
|
|
29829
|
+
/* @__PURE__ */ jsx51(Box39, { marginTop: 1, children: /* @__PURE__ */ jsxs40(Text42, { color: PALETTE.muted, children: [
|
|
29794
29830
|
"Elapsed: ",
|
|
29795
29831
|
elapsed
|
|
29796
29832
|
] }) })
|
|
@@ -29990,7 +30026,7 @@ var init_preview_confirmation_input = __esm({
|
|
|
29990
30026
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/WizardPreviewStep.tsx
|
|
29991
30027
|
import { useEffect as useEffect19, useState as useState26, useMemo as useMemo5 } from "react";
|
|
29992
30028
|
import { Box as Box40, Text as Text43 } from "ink";
|
|
29993
|
-
import { Fragment as Fragment15, jsx as
|
|
30029
|
+
import { Fragment as Fragment15, jsx as jsx52, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
29994
30030
|
function buildPreviewSummaryLines(preview) {
|
|
29995
30031
|
const lines = [];
|
|
29996
30032
|
const { components, tokens } = preview;
|
|
@@ -30245,9 +30281,9 @@ function WizardPreviewStep({
|
|
|
30245
30281
|
}
|
|
30246
30282
|
});
|
|
30247
30283
|
return /* @__PURE__ */ jsxs41(Box40, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 2, children: [
|
|
30248
|
-
/* @__PURE__ */
|
|
30284
|
+
/* @__PURE__ */ jsx52(StepHeader, { stepNumber, totalSteps, title: "Push to Contentful" }),
|
|
30249
30285
|
hasAnything ? /* @__PURE__ */ jsxs41(Fragment15, { children: [
|
|
30250
|
-
/* @__PURE__ */
|
|
30286
|
+
/* @__PURE__ */ jsx52(Text43, { children: "Here's what will happen in your space:" }),
|
|
30251
30287
|
/* @__PURE__ */ jsxs41(
|
|
30252
30288
|
WindowedPanel,
|
|
30253
30289
|
{
|
|
@@ -30256,24 +30292,24 @@ function WizardPreviewStep({
|
|
|
30256
30292
|
title: diffExpanded ? `Diff (${diffLines.length} lines)` : "",
|
|
30257
30293
|
focused: false,
|
|
30258
30294
|
children: [
|
|
30259
|
-
activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */
|
|
30260
|
-
/* @__PURE__ */
|
|
30295
|
+
activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */ jsx52(Text43, { color: line.color === "gray" ? PALETTE.muted : line.color, wrap: "truncate-end", children: line.text }, line.key)),
|
|
30296
|
+
/* @__PURE__ */ jsx52(Text43, { color: PALETTE.muted, wrap: "truncate-end", children: formatPreviewScrollIndicator(activeLines.length, boundedScrollOffset, viewportHeight) })
|
|
30261
30297
|
]
|
|
30262
30298
|
}
|
|
30263
30299
|
)
|
|
30264
|
-
] }) : /* @__PURE__ */
|
|
30265
|
-
breakingWithImpact && /* @__PURE__ */
|
|
30266
|
-
/* @__PURE__ */
|
|
30300
|
+
] }) : /* @__PURE__ */ jsx52(Text43, { color: PALETTE.muted, children: "Nothing to push \u2014 everything is already up to date." }),
|
|
30301
|
+
breakingWithImpact && /* @__PURE__ */ jsx52(Box40, { marginTop: 1, children: /* @__PURE__ */ jsx52(Text43, { color: PALETTE.error, bold: true, children: "\u26A0 Breaking changes will affect downstream entities. Press Enter to acknowledge and apply." }) }),
|
|
30302
|
+
/* @__PURE__ */ jsx52(SpaceEnvironment, { spaceId, environmentId }),
|
|
30267
30303
|
/* @__PURE__ */ jsxs41(Box40, { gap: 3, marginTop: 1, children: [
|
|
30268
|
-
/* @__PURE__ */
|
|
30304
|
+
/* @__PURE__ */ jsx52(Text43, { children: "[Enter] Push to Contentful" }),
|
|
30269
30305
|
/* @__PURE__ */ jsxs41(Text43, { children: [
|
|
30270
30306
|
"[d] ",
|
|
30271
30307
|
diffExpanded ? "Hide" : "Show",
|
|
30272
30308
|
" diff"
|
|
30273
30309
|
] }),
|
|
30274
|
-
diffExpanded && /* @__PURE__ */
|
|
30275
|
-
onEdit && /* @__PURE__ */
|
|
30276
|
-
/* @__PURE__ */
|
|
30310
|
+
diffExpanded && /* @__PURE__ */ jsx52(Text43, { children: "[\u2191\u2193] Scroll [f/b] Page" }),
|
|
30311
|
+
onEdit && /* @__PURE__ */ jsx52(Text43, { children: "[e] Edit definitions" }),
|
|
30312
|
+
/* @__PURE__ */ jsx52(Text43, { children: "[q] Cancel" })
|
|
30277
30313
|
] })
|
|
30278
30314
|
] });
|
|
30279
30315
|
}
|
|
@@ -30305,7 +30341,7 @@ var init_run_teaser = __esm({
|
|
|
30305
30341
|
|
|
30306
30342
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/screen.tsx
|
|
30307
30343
|
import { Box as Box41 } from "ink";
|
|
30308
|
-
import { jsx as
|
|
30344
|
+
import { jsx as jsx53, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
30309
30345
|
function totalStepsFor(state2) {
|
|
30310
30346
|
const hasTokenStage = !!state2.tokensPath || !!state2.rawTokensPath;
|
|
30311
30347
|
return 3 + (hasTokenStage ? 1 : 0) + 2 + (state2.mapTokensEligible === true ? 1 : 0);
|
|
@@ -30326,7 +30362,7 @@ function FlowScreen({
|
|
|
30326
30362
|
const content = (() => {
|
|
30327
30363
|
switch (state2.step) {
|
|
30328
30364
|
case "final-review":
|
|
30329
|
-
return /* @__PURE__ */
|
|
30365
|
+
return /* @__PURE__ */ jsx53(
|
|
30330
30366
|
GenerateReviewStep,
|
|
30331
30367
|
{
|
|
30332
30368
|
extractSessionId: state2.extractSessionId,
|
|
@@ -30343,7 +30379,7 @@ function FlowScreen({
|
|
|
30343
30379
|
}
|
|
30344
30380
|
);
|
|
30345
30381
|
case "previewing":
|
|
30346
|
-
return /* @__PURE__ */
|
|
30382
|
+
return /* @__PURE__ */ jsx53(
|
|
30347
30383
|
RunningStep,
|
|
30348
30384
|
{
|
|
30349
30385
|
stepNumber: totalSteps,
|
|
@@ -30354,7 +30390,7 @@ function FlowScreen({
|
|
|
30354
30390
|
);
|
|
30355
30391
|
case "preview-gate":
|
|
30356
30392
|
if (!state2.serverPreview) return null;
|
|
30357
|
-
return /* @__PURE__ */
|
|
30393
|
+
return /* @__PURE__ */ jsx53(
|
|
30358
30394
|
WizardPreviewStep,
|
|
30359
30395
|
{
|
|
30360
30396
|
preview: state2.serverPreview,
|
|
@@ -30368,9 +30404,9 @@ function FlowScreen({
|
|
|
30368
30404
|
}
|
|
30369
30405
|
);
|
|
30370
30406
|
case "pushing":
|
|
30371
|
-
return /* @__PURE__ */
|
|
30407
|
+
return /* @__PURE__ */ jsx53(PushingStep, { stepNumber: totalSteps, totalSteps, progress: state2.pushProgress });
|
|
30372
30408
|
case "path-prompt":
|
|
30373
|
-
return /* @__PURE__ */
|
|
30409
|
+
return /* @__PURE__ */ jsx53(
|
|
30374
30410
|
PathPrompt,
|
|
30375
30411
|
{
|
|
30376
30412
|
defaultPath: state2.outDir,
|
|
@@ -30379,7 +30415,7 @@ function FlowScreen({
|
|
|
30379
30415
|
}
|
|
30380
30416
|
);
|
|
30381
30417
|
case "printing":
|
|
30382
|
-
return /* @__PURE__ */
|
|
30418
|
+
return /* @__PURE__ */ jsx53(
|
|
30383
30419
|
RunningStep,
|
|
30384
30420
|
{
|
|
30385
30421
|
stepNumber: totalSteps,
|
|
@@ -30390,7 +30426,7 @@ function FlowScreen({
|
|
|
30390
30426
|
);
|
|
30391
30427
|
case "print-gate": {
|
|
30392
30428
|
const teaser = buildRunTeaserLine(state2.lastRunId);
|
|
30393
|
-
return /* @__PURE__ */
|
|
30429
|
+
return /* @__PURE__ */ jsx53(
|
|
30394
30430
|
GateStep,
|
|
30395
30431
|
{
|
|
30396
30432
|
message: "Files saved",
|
|
@@ -30404,7 +30440,7 @@ function FlowScreen({
|
|
|
30404
30440
|
}
|
|
30405
30441
|
case "done": {
|
|
30406
30442
|
const totalFailed = state2.pushResult.componentTypes.failed + state2.pushResult.designTokens.failed;
|
|
30407
|
-
return /* @__PURE__ */
|
|
30443
|
+
return /* @__PURE__ */ jsx53(
|
|
30408
30444
|
DoneStep,
|
|
30409
30445
|
{
|
|
30410
30446
|
componentTypes: state2.pushResult.componentTypes,
|
|
@@ -30419,7 +30455,7 @@ function FlowScreen({
|
|
|
30419
30455
|
);
|
|
30420
30456
|
}
|
|
30421
30457
|
case "preview-validation-error":
|
|
30422
|
-
return /* @__PURE__ */
|
|
30458
|
+
return /* @__PURE__ */ jsx53(
|
|
30423
30459
|
PreviewValidationErrorScreen,
|
|
30424
30460
|
{
|
|
30425
30461
|
errors: state2.previewValidationErrors,
|
|
@@ -30430,7 +30466,7 @@ function FlowScreen({
|
|
|
30430
30466
|
}
|
|
30431
30467
|
);
|
|
30432
30468
|
case "error":
|
|
30433
|
-
return /* @__PURE__ */
|
|
30469
|
+
return /* @__PURE__ */ jsx53(
|
|
30434
30470
|
ErrorStep,
|
|
30435
30471
|
{
|
|
30436
30472
|
stepName: state2.errorStep,
|
|
@@ -30442,7 +30478,7 @@ function FlowScreen({
|
|
|
30442
30478
|
}
|
|
30443
30479
|
})();
|
|
30444
30480
|
return /* @__PURE__ */ jsxs42(Box41, { flexDirection: "column", children: [
|
|
30445
|
-
/* @__PURE__ */
|
|
30481
|
+
/* @__PURE__ */ jsx53(CustomPromptBanner, { generatePromptPath }),
|
|
30446
30482
|
content
|
|
30447
30483
|
] });
|
|
30448
30484
|
}
|
|
@@ -31251,9 +31287,9 @@ var init_controller = __esm({
|
|
|
31251
31287
|
});
|
|
31252
31288
|
|
|
31253
31289
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/use-flow.ts
|
|
31254
|
-
import { useEffect as useEffect20, useRef as
|
|
31290
|
+
import { useEffect as useEffect20, useRef as useRef13, useSyncExternalStore } from "react";
|
|
31255
31291
|
function useFlow(start, options = {}) {
|
|
31256
|
-
const controller =
|
|
31292
|
+
const controller = useRef13();
|
|
31257
31293
|
if (start && !controller.current) {
|
|
31258
31294
|
try {
|
|
31259
31295
|
startWizardLog();
|
|
@@ -31646,14 +31682,14 @@ var init_help_info = __esm({
|
|
|
31646
31682
|
|
|
31647
31683
|
// packages/experience-design-system-cli/src/tui/help/PageContainer.tsx
|
|
31648
31684
|
import { useEffect as useEffect21, useState as useState27 } from "react";
|
|
31649
|
-
import { Box as Box42, Text as Text44, useInput as
|
|
31650
|
-
import { Fragment as Fragment16, jsx as
|
|
31685
|
+
import { Box as Box42, Text as Text44, useInput as useInput10 } from "ink";
|
|
31686
|
+
import { Fragment as Fragment16, jsx as jsx54, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
31651
31687
|
function Section({ title, rows }) {
|
|
31652
31688
|
return /* @__PURE__ */ jsxs43(Box42, { flexDirection: "column", children: [
|
|
31653
|
-
/* @__PURE__ */
|
|
31689
|
+
/* @__PURE__ */ jsx54(Text44, { bold: true, color: PALETTE.accent, children: title }),
|
|
31654
31690
|
rows.map((row) => /* @__PURE__ */ jsxs43(Box42, { gap: 1, children: [
|
|
31655
|
-
/* @__PURE__ */
|
|
31656
|
-
/* @__PURE__ */
|
|
31691
|
+
/* @__PURE__ */ jsx54(Box42, { width: 16, flexShrink: 0, children: /* @__PURE__ */ jsx54(Text44, { color: PALETTE.muted, children: row.label }) }),
|
|
31692
|
+
/* @__PURE__ */ jsx54(Text44, { children: row.value })
|
|
31657
31693
|
] }, row.label))
|
|
31658
31694
|
] });
|
|
31659
31695
|
}
|
|
@@ -31667,7 +31703,7 @@ function HelpScreen({ onDone }) {
|
|
|
31667
31703
|
void finishDebugRun({ outputs: {}, status: "success", exitMethod });
|
|
31668
31704
|
onDone();
|
|
31669
31705
|
};
|
|
31670
|
-
|
|
31706
|
+
useInput10((input, key) => {
|
|
31671
31707
|
if (key.return) {
|
|
31672
31708
|
leave("saved");
|
|
31673
31709
|
return;
|
|
@@ -31678,13 +31714,13 @@ function HelpScreen({ onDone }) {
|
|
|
31678
31714
|
}
|
|
31679
31715
|
});
|
|
31680
31716
|
return /* @__PURE__ */ jsxs43(Box42, { flexDirection: "column", paddingX: 2, paddingY: 1, gap: 1, children: [
|
|
31681
|
-
/* @__PURE__ */
|
|
31717
|
+
/* @__PURE__ */ jsx54(Text44, { bold: true, children: "Help" }),
|
|
31682
31718
|
info ? /* @__PURE__ */ jsxs43(Fragment16, { children: [
|
|
31683
|
-
/* @__PURE__ */
|
|
31684
|
-
/* @__PURE__ */
|
|
31685
|
-
/* @__PURE__ */
|
|
31686
|
-
] }) : /* @__PURE__ */
|
|
31687
|
-
/* @__PURE__ */
|
|
31719
|
+
/* @__PURE__ */ jsx54(Section, { title: "Where things are stored", rows: info.storage }),
|
|
31720
|
+
/* @__PURE__ */ jsx54(Section, { title: "Troubleshooting", rows: info.troubleshooting }),
|
|
31721
|
+
/* @__PURE__ */ jsx54(Text44, { 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." })
|
|
31722
|
+
] }) : /* @__PURE__ */ jsx54(Text44, { color: PALETTE.accent, children: "Loading..." }),
|
|
31723
|
+
/* @__PURE__ */ jsx54(
|
|
31688
31724
|
ControlHints,
|
|
31689
31725
|
{
|
|
31690
31726
|
hints: [
|
|
@@ -31707,8 +31743,8 @@ var init_PageContainer2 = __esm({
|
|
|
31707
31743
|
|
|
31708
31744
|
// packages/experience-design-system-cli/src/tui/settings/PageContainer.tsx
|
|
31709
31745
|
import { useState as useState28 } from "react";
|
|
31710
|
-
import { Box as Box43, Text as Text45, useInput as
|
|
31711
|
-
import { jsx as
|
|
31746
|
+
import { Box as Box43, Text as Text45, useInput as useInput11 } from "ink";
|
|
31747
|
+
import { jsx as jsx55, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
31712
31748
|
function SettingsScreen({
|
|
31713
31749
|
onNavigate,
|
|
31714
31750
|
onBack
|
|
@@ -31719,7 +31755,7 @@ function SettingsScreen({
|
|
|
31719
31755
|
{ label: "Opt-in Analytics", screen: "settings-opt-in-analytics" },
|
|
31720
31756
|
{ label: "Debug Mode", screen: "settings-debug-mode" }
|
|
31721
31757
|
];
|
|
31722
|
-
|
|
31758
|
+
useInput11((input, key) => {
|
|
31723
31759
|
if (key.upArrow) {
|
|
31724
31760
|
setFocusIdx((i) => (i - 1 + items.length) % items.length);
|
|
31725
31761
|
return;
|
|
@@ -31740,14 +31776,14 @@ function SettingsScreen({
|
|
|
31740
31776
|
}
|
|
31741
31777
|
});
|
|
31742
31778
|
return /* @__PURE__ */ jsxs44(Box43, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
31743
|
-
/* @__PURE__ */
|
|
31744
|
-
/* @__PURE__ */
|
|
31779
|
+
/* @__PURE__ */ jsx55(Text45, { bold: true, children: "Settings" }),
|
|
31780
|
+
/* @__PURE__ */ jsx55(Text45, { color: PALETTE.muted, children: " " }),
|
|
31745
31781
|
items.map((item, i) => /* @__PURE__ */ jsxs44(Text45, { color: i === focusIdx ? PALETTE.accent : void 0, children: [
|
|
31746
31782
|
i === focusIdx ? "> " : " ",
|
|
31747
31783
|
item.label
|
|
31748
31784
|
] }, item.label)),
|
|
31749
|
-
/* @__PURE__ */
|
|
31750
|
-
/* @__PURE__ */
|
|
31785
|
+
/* @__PURE__ */ jsx55(Text45, { children: " " }),
|
|
31786
|
+
/* @__PURE__ */ jsx55(
|
|
31751
31787
|
ControlHints,
|
|
31752
31788
|
{
|
|
31753
31789
|
hints: [
|
|
@@ -32056,9 +32092,8 @@ var init_agent_debug = __esm({
|
|
|
32056
32092
|
|
|
32057
32093
|
// packages/experience-design-system-cli/src/tui/settings/shared/FieldForm.tsx
|
|
32058
32094
|
import { useState as useState29 } from "react";
|
|
32059
|
-
import { Box as Box44, Text as Text46, useInput as
|
|
32060
|
-
import
|
|
32061
|
-
import { Fragment as Fragment17, jsx as jsx55, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
32095
|
+
import { Box as Box44, Text as Text46, useInput as useInput12 } from "ink";
|
|
32096
|
+
import { Fragment as Fragment17, jsx as jsx56, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
32062
32097
|
function formLabelWidth(rows) {
|
|
32063
32098
|
return Math.max(...rows.map((row) => row.label.length));
|
|
32064
32099
|
}
|
|
@@ -32068,8 +32103,8 @@ function FormReadOnlyRow({
|
|
|
32068
32103
|
children
|
|
32069
32104
|
}) {
|
|
32070
32105
|
return /* @__PURE__ */ jsxs45(Box44, { gap: 1, children: [
|
|
32071
|
-
/* @__PURE__ */
|
|
32072
|
-
/* @__PURE__ */
|
|
32106
|
+
/* @__PURE__ */ jsx56(Text46, { children: " " }),
|
|
32107
|
+
/* @__PURE__ */ jsx56(Box44, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx56(Text46, { color: PALETTE.muted, children: label }) }),
|
|
32073
32108
|
children
|
|
32074
32109
|
] });
|
|
32075
32110
|
}
|
|
@@ -32093,7 +32128,7 @@ function FieldForm({
|
|
|
32093
32128
|
const labelWidth = formLabelWidth([...fields2, ...actions]);
|
|
32094
32129
|
const currentField = active < fields2.length ? fields2[active] : void 0;
|
|
32095
32130
|
const currentAction = currentField ? void 0 : actions[active - fields2.length];
|
|
32096
|
-
|
|
32131
|
+
useInput12((input, key) => {
|
|
32097
32132
|
if (busy) return;
|
|
32098
32133
|
if (editing) {
|
|
32099
32134
|
if (key.escape && currentField) {
|
|
@@ -32110,7 +32145,7 @@ function FieldForm({
|
|
|
32110
32145
|
onSave();
|
|
32111
32146
|
return;
|
|
32112
32147
|
}
|
|
32113
|
-
if (input
|
|
32148
|
+
if (isClearKey(input, key) && currentField) {
|
|
32114
32149
|
onChange(currentField.key, "");
|
|
32115
32150
|
return;
|
|
32116
32151
|
}
|
|
@@ -32131,11 +32166,11 @@ function FieldForm({
|
|
|
32131
32166
|
}
|
|
32132
32167
|
}
|
|
32133
32168
|
});
|
|
32134
|
-
const pointer = (isActive) => /* @__PURE__ */
|
|
32169
|
+
const pointer = (isActive) => /* @__PURE__ */ jsx56(Text46, { color: isActive ? PALETTE.accent : void 0, children: isActive ? "\u276F" : " " });
|
|
32135
32170
|
return /* @__PURE__ */ jsxs45(Box44, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
32136
|
-
/* @__PURE__ */
|
|
32137
|
-
subtitle && /* @__PURE__ */
|
|
32138
|
-
/* @__PURE__ */
|
|
32171
|
+
/* @__PURE__ */ jsx56(Text46, { bold: true, children: title }),
|
|
32172
|
+
subtitle && /* @__PURE__ */ jsx56(Text46, { color: PALETTE.muted, children: subtitle }),
|
|
32173
|
+
/* @__PURE__ */ jsx56(Text46, { children: " " }),
|
|
32139
32174
|
/* @__PURE__ */ jsxs45(Box44, { flexDirection: "column", children: [
|
|
32140
32175
|
fields2.map((field, index) => {
|
|
32141
32176
|
const isActive = index === active;
|
|
@@ -32143,34 +32178,34 @@ function FieldForm({
|
|
|
32143
32178
|
const display = field.masked ? "\u2022".repeat(value.length) : value;
|
|
32144
32179
|
return /* @__PURE__ */ jsxs45(Box44, { gap: 1, children: [
|
|
32145
32180
|
pointer(isActive),
|
|
32146
|
-
/* @__PURE__ */
|
|
32147
|
-
isActive && editing ? /* @__PURE__ */
|
|
32148
|
-
|
|
32181
|
+
/* @__PURE__ */ jsx56(Box44, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx56(Text46, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
|
|
32182
|
+
isActive && editing ? /* @__PURE__ */ jsx56(
|
|
32183
|
+
ClearableTextInput,
|
|
32149
32184
|
{
|
|
32150
32185
|
value,
|
|
32151
32186
|
onChange: (next) => onChange(field.key, next),
|
|
32152
32187
|
onSubmit: () => setEditing(false),
|
|
32153
32188
|
mask: field.masked ? "\u2022" : void 0
|
|
32154
32189
|
}
|
|
32155
|
-
) : display ? /* @__PURE__ */
|
|
32190
|
+
) : display ? /* @__PURE__ */ jsx56(Text46, { bold: true, children: display }) : (
|
|
32156
32191
|
// An empty value shows its hint (or "(empty)") in the value's place, not after an empty element, so the
|
|
32157
32192
|
// text starts in the same column as every other row's.
|
|
32158
|
-
/* @__PURE__ */
|
|
32193
|
+
/* @__PURE__ */ jsx56(Text46, { color: PALETTE.muted, children: field.hint ?? "(empty)" })
|
|
32159
32194
|
),
|
|
32160
|
-
display && field.hint && /* @__PURE__ */
|
|
32195
|
+
display && field.hint && /* @__PURE__ */ jsx56(Text46, { color: PALETTE.muted, children: field.hint })
|
|
32161
32196
|
] }, field.key);
|
|
32162
32197
|
}),
|
|
32163
32198
|
actions.map((action, index) => {
|
|
32164
32199
|
const isActive = fields2.length + index === active;
|
|
32165
32200
|
return /* @__PURE__ */ jsxs45(Box44, { gap: 1, children: [
|
|
32166
32201
|
pointer(isActive),
|
|
32167
|
-
/* @__PURE__ */
|
|
32168
|
-
/* @__PURE__ */
|
|
32202
|
+
/* @__PURE__ */ jsx56(Box44, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx56(Text46, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: action.label }) }),
|
|
32203
|
+
/* @__PURE__ */ jsx56(Text46, { color: action.running ? PALETTE.accent : PALETTE.muted, children: action.running ? action.runningText ?? "running..." : action.description })
|
|
32169
32204
|
] }, action.label);
|
|
32170
32205
|
})
|
|
32171
32206
|
] }),
|
|
32172
32207
|
notice && /* @__PURE__ */ jsxs45(Fragment17, { children: [
|
|
32173
|
-
/* @__PURE__ */
|
|
32208
|
+
/* @__PURE__ */ jsx56(Text46, { children: " " }),
|
|
32174
32209
|
/* @__PURE__ */ jsxs45(Text46, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
32175
32210
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
32176
32211
|
" ",
|
|
@@ -32178,19 +32213,20 @@ function FieldForm({
|
|
|
32178
32213
|
] })
|
|
32179
32214
|
] }),
|
|
32180
32215
|
children,
|
|
32181
|
-
/* @__PURE__ */
|
|
32182
|
-
/* @__PURE__ */
|
|
32216
|
+
/* @__PURE__ */ jsx56(Text46, { children: " " }),
|
|
32217
|
+
/* @__PURE__ */ jsx56(
|
|
32183
32218
|
ControlHints,
|
|
32184
32219
|
{
|
|
32185
32220
|
hints: editing ? [
|
|
32186
32221
|
{ keys: "type", label: "edit" },
|
|
32187
32222
|
{ keys: "\u2190/\u2192", label: "move cursor" },
|
|
32188
32223
|
{ keys: "\u23CE", label: "done" },
|
|
32224
|
+
{ keys: "Ctrl+D", label: "clear" },
|
|
32189
32225
|
{ keys: "Esc", label: "cancel edit" }
|
|
32190
32226
|
] : [
|
|
32191
32227
|
{ keys: "\u2191/\u2193", label: "move" },
|
|
32192
32228
|
{ keys: "\u23CE", label: currentAction ? currentAction.hint : "edit" },
|
|
32193
|
-
...currentField ? [{ keys: "
|
|
32229
|
+
...currentField ? [{ keys: "Ctrl+D", label: "clear" }] : [],
|
|
32194
32230
|
{ keys: "s", label: "save" },
|
|
32195
32231
|
{ keys: "Esc/q", label: "back without saving" }
|
|
32196
32232
|
]
|
|
@@ -32203,19 +32239,20 @@ var init_FieldForm = __esm({
|
|
|
32203
32239
|
"use strict";
|
|
32204
32240
|
init_theme();
|
|
32205
32241
|
init_control_hints();
|
|
32242
|
+
init_ClearableTextInput();
|
|
32206
32243
|
}
|
|
32207
32244
|
});
|
|
32208
32245
|
|
|
32209
32246
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentStatusBadge.tsx
|
|
32210
32247
|
import { Text as Text47 } from "ink";
|
|
32211
|
-
import { jsx as
|
|
32248
|
+
import { jsx as jsx57 } from "react/jsx-runtime";
|
|
32212
32249
|
function AgentStatusBadge({
|
|
32213
32250
|
name,
|
|
32214
32251
|
checks,
|
|
32215
32252
|
binary
|
|
32216
32253
|
}) {
|
|
32217
32254
|
const { symbol, text, tone } = LIST_STATUS[checks ? statusFromChecks(name, checks, binary) : "checking"];
|
|
32218
|
-
return /* @__PURE__ */
|
|
32255
|
+
return /* @__PURE__ */ jsx57(Text47, { color: TONE_COLOR[tone], children: `${symbol} ${text}` });
|
|
32219
32256
|
}
|
|
32220
32257
|
var TONE_COLOR;
|
|
32221
32258
|
var init_AgentStatusBadge = __esm({
|
|
@@ -32234,11 +32271,11 @@ var init_AgentStatusBadge = __esm({
|
|
|
32234
32271
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentDetail.tsx
|
|
32235
32272
|
import { useEffect as useEffect22, useState as useState30 } from "react";
|
|
32236
32273
|
import { Box as Box45, Text as Text48 } from "ink";
|
|
32237
|
-
import { jsx as
|
|
32274
|
+
import { jsx as jsx58, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
32238
32275
|
function StatusHeading() {
|
|
32239
32276
|
return /* @__PURE__ */ jsxs46(Box45, { gap: 1, children: [
|
|
32240
|
-
/* @__PURE__ */
|
|
32241
|
-
/* @__PURE__ */
|
|
32277
|
+
/* @__PURE__ */ jsx58(Text48, { bold: true, color: PALETTE.muted, children: "STATUS" }),
|
|
32278
|
+
/* @__PURE__ */ jsx58(Text48, { color: PALETTE.muted, children: "\xB7 read only" })
|
|
32242
32279
|
] });
|
|
32243
32280
|
}
|
|
32244
32281
|
function AgentDetail({
|
|
@@ -32301,7 +32338,7 @@ function AgentDetail({
|
|
|
32301
32338
|
};
|
|
32302
32339
|
const formFields = fields(name);
|
|
32303
32340
|
const labelWidth = formLabelWidth([...formFields, action]);
|
|
32304
|
-
return /* @__PURE__ */
|
|
32341
|
+
return /* @__PURE__ */ jsx58(
|
|
32305
32342
|
FieldForm,
|
|
32306
32343
|
{
|
|
32307
32344
|
title: AGENT_LABELS[name],
|
|
@@ -32319,8 +32356,8 @@ function AgentDetail({
|
|
|
32319
32356
|
notice: testing ? null : notice,
|
|
32320
32357
|
busy: saving || testing,
|
|
32321
32358
|
children: /* @__PURE__ */ jsxs46(Box45, { flexDirection: "column", marginTop: 1, children: [
|
|
32322
|
-
/* @__PURE__ */
|
|
32323
|
-
statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */
|
|
32359
|
+
/* @__PURE__ */ jsx58(StatusHeading, {}),
|
|
32360
|
+
statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */ jsx58(FormReadOnlyRow, { label: row.label, labelWidth, children: /* @__PURE__ */ jsx58(Text48, { color: TONE_COLOR[row.tone], children: row.value }) }, row.label))
|
|
32324
32361
|
] })
|
|
32325
32362
|
}
|
|
32326
32363
|
);
|
|
@@ -32345,9 +32382,9 @@ var init_AgentDetail = __esm({
|
|
|
32345
32382
|
});
|
|
32346
32383
|
|
|
32347
32384
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentsScreen.tsx
|
|
32348
|
-
import { useEffect as useEffect23, useRef as
|
|
32349
|
-
import { Box as Box46, Text as Text49, useInput as
|
|
32350
|
-
import { Fragment as Fragment18, jsx as
|
|
32385
|
+
import { useEffect as useEffect23, useRef as useRef14, useState as useState31 } from "react";
|
|
32386
|
+
import { Box as Box46, Text as Text49, useInput as useInput13 } from "ink";
|
|
32387
|
+
import { Fragment as Fragment18, jsx as jsx59, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
32351
32388
|
function AgentsScreen({ onDone }) {
|
|
32352
32389
|
const [config, setConfig] = useState31(null);
|
|
32353
32390
|
const [focus, setFocus] = useState31(0);
|
|
@@ -32356,7 +32393,7 @@ function AgentsScreen({ onDone }) {
|
|
|
32356
32393
|
const [saving, setSaving] = useState31(false);
|
|
32357
32394
|
const [loadError, setLoadError] = useState31(null);
|
|
32358
32395
|
const [checks, setChecks] = useState31({});
|
|
32359
|
-
const visit =
|
|
32396
|
+
const visit = useRef14({
|
|
32360
32397
|
trail: createTrail(),
|
|
32361
32398
|
before: void 0,
|
|
32362
32399
|
environment: void 0,
|
|
@@ -32423,7 +32460,7 @@ function AgentsScreen({ onDone }) {
|
|
|
32423
32460
|
setNotice({ kind: "error", text: `Default agent not changed: ${visit.error}` });
|
|
32424
32461
|
}).finally(() => setSaving(false));
|
|
32425
32462
|
};
|
|
32426
|
-
|
|
32463
|
+
useInput13((input, key) => {
|
|
32427
32464
|
if (loadError && (key.escape || input === "q")) {
|
|
32428
32465
|
endVisit(null);
|
|
32429
32466
|
onDone();
|
|
@@ -32456,20 +32493,20 @@ function AgentsScreen({ onDone }) {
|
|
|
32456
32493
|
});
|
|
32457
32494
|
if (!config) {
|
|
32458
32495
|
return /* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
32459
|
-
/* @__PURE__ */
|
|
32460
|
-
/* @__PURE__ */
|
|
32496
|
+
/* @__PURE__ */ jsx59(Text49, { bold: true, children: "Agents" }),
|
|
32497
|
+
/* @__PURE__ */ jsx59(Text49, { children: " " }),
|
|
32461
32498
|
loadError ? /* @__PURE__ */ jsxs47(Fragment18, { children: [
|
|
32462
32499
|
/* @__PURE__ */ jsxs47(Text49, { color: PALETTE.error, children: [
|
|
32463
32500
|
"\u2717 Could not read the settings: ",
|
|
32464
32501
|
loadError
|
|
32465
32502
|
] }),
|
|
32466
|
-
/* @__PURE__ */
|
|
32467
|
-
/* @__PURE__ */
|
|
32468
|
-
] }) : /* @__PURE__ */
|
|
32503
|
+
/* @__PURE__ */ jsx59(Text49, { children: " " }),
|
|
32504
|
+
/* @__PURE__ */ jsx59(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
|
|
32505
|
+
] }) : /* @__PURE__ */ jsx59(Text49, { color: PALETTE.accent, children: "Loading..." })
|
|
32469
32506
|
] });
|
|
32470
32507
|
}
|
|
32471
32508
|
if (open) {
|
|
32472
|
-
return /* @__PURE__ */
|
|
32509
|
+
return /* @__PURE__ */ jsx59(
|
|
32473
32510
|
AgentDetail,
|
|
32474
32511
|
{
|
|
32475
32512
|
name: open,
|
|
@@ -32491,46 +32528,46 @@ function AgentsScreen({ onDone }) {
|
|
|
32491
32528
|
}
|
|
32492
32529
|
const focusedAgent = AGENT_NAMES[focus];
|
|
32493
32530
|
return /* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
32494
|
-
/* @__PURE__ */
|
|
32495
|
-
/* @__PURE__ */
|
|
32496
|
-
/* @__PURE__ */
|
|
32531
|
+
/* @__PURE__ */ jsx59(Text49, { bold: true, children: "Agents" }),
|
|
32532
|
+
/* @__PURE__ */ jsx59(Text49, { color: PALETTE.muted, children: "The coding agent the CLI runs, and what was found for each one." }),
|
|
32533
|
+
/* @__PURE__ */ jsx59(Text49, { children: " " }),
|
|
32497
32534
|
/* @__PURE__ */ jsxs47(Box46, { gap: 1, children: [
|
|
32498
|
-
/* @__PURE__ */
|
|
32499
|
-
/* @__PURE__ */
|
|
32500
|
-
saving && /* @__PURE__ */
|
|
32535
|
+
/* @__PURE__ */ jsx59(Text49, { color: PALETTE.muted, children: "Default agent" }),
|
|
32536
|
+
/* @__PURE__ */ jsx59(Text49, { bold: true, children: AGENT_LABELS[config.defaultAgent] }),
|
|
32537
|
+
saving && /* @__PURE__ */ jsx59(Text49, { color: PALETTE.accent, children: "\u2026 saving" })
|
|
32501
32538
|
] }),
|
|
32502
32539
|
/* @__PURE__ */ jsxs47(Box46, { marginTop: 1, gap: 1, children: [
|
|
32503
|
-
/* @__PURE__ */
|
|
32504
|
-
/* @__PURE__ */
|
|
32505
|
-
/* @__PURE__ */
|
|
32506
|
-
/* @__PURE__ */
|
|
32540
|
+
/* @__PURE__ */ jsx59(Text49, { children: " " }),
|
|
32541
|
+
/* @__PURE__ */ jsx59(Text49, { children: " " }),
|
|
32542
|
+
/* @__PURE__ */ jsx59(Box46, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx59(Text49, { color: PALETTE.muted, children: "AGENT" }) }),
|
|
32543
|
+
/* @__PURE__ */ jsx59(Text49, { color: PALETTE.muted, children: "STATUS" })
|
|
32507
32544
|
] }),
|
|
32508
32545
|
AGENT_NAMES.map((name) => {
|
|
32509
32546
|
const isFocused = focusedAgent === name;
|
|
32510
32547
|
return /* @__PURE__ */ jsxs47(Box46, { gap: 1, children: [
|
|
32511
|
-
/* @__PURE__ */
|
|
32512
|
-
/* @__PURE__ */
|
|
32513
|
-
/* @__PURE__ */
|
|
32514
|
-
/* @__PURE__ */
|
|
32548
|
+
/* @__PURE__ */ jsx59(Text49, { color: isFocused ? PALETTE.accent : void 0, children: isFocused ? "\u276F" : " " }),
|
|
32549
|
+
/* @__PURE__ */ jsx59(Text49, { color: PALETTE.success, children: name === config.defaultAgent ? "\u2605" : " " }),
|
|
32550
|
+
/* @__PURE__ */ jsx59(Box46, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx59(Text49, { bold: isFocused, color: isFocused ? PALETTE.accent : void 0, children: AGENT_LABELS[name] }) }),
|
|
32551
|
+
/* @__PURE__ */ jsx59(AgentStatusBadge, { name, checks: checks[name], binary: config.agents[name].binary })
|
|
32515
32552
|
] }, name);
|
|
32516
32553
|
}),
|
|
32517
32554
|
/* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", marginTop: 1, children: [
|
|
32518
|
-
/* @__PURE__ */
|
|
32555
|
+
/* @__PURE__ */ jsx59(Text49, { color: PALETTE.muted, children: `\u2500 ${AGENT_LABELS[focusedAgent]} ${"\u2500".repeat(30)}` }),
|
|
32519
32556
|
panelRows(focusedAgent, checks[focusedAgent], config.agents[focusedAgent]).map((row) => /* @__PURE__ */ jsxs47(Box46, { gap: 1, paddingLeft: 1, children: [
|
|
32520
|
-
/* @__PURE__ */
|
|
32521
|
-
/* @__PURE__ */
|
|
32557
|
+
/* @__PURE__ */ jsx59(Box46, { width: PANEL_LABEL_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx59(Text49, { color: PALETTE.muted, children: row.label }) }),
|
|
32558
|
+
/* @__PURE__ */ jsx59(Text49, { color: TONE_COLOR[row.tone], children: row.value })
|
|
32522
32559
|
] }, row.label))
|
|
32523
32560
|
] }),
|
|
32524
32561
|
notice && /* @__PURE__ */ jsxs47(Fragment18, { children: [
|
|
32525
|
-
/* @__PURE__ */
|
|
32562
|
+
/* @__PURE__ */ jsx59(Text49, { children: " " }),
|
|
32526
32563
|
/* @__PURE__ */ jsxs47(Text49, { bold: true, color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
32527
32564
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
32528
32565
|
" ",
|
|
32529
32566
|
notice.text
|
|
32530
32567
|
] })
|
|
32531
32568
|
] }),
|
|
32532
|
-
/* @__PURE__ */
|
|
32533
|
-
/* @__PURE__ */
|
|
32569
|
+
/* @__PURE__ */ jsx59(Text49, { children: " " }),
|
|
32570
|
+
/* @__PURE__ */ jsx59(
|
|
32534
32571
|
ControlHints,
|
|
32535
32572
|
{
|
|
32536
32573
|
hints: [
|
|
@@ -32594,9 +32631,9 @@ var init_project_store = __esm({
|
|
|
32594
32631
|
});
|
|
32595
32632
|
|
|
32596
32633
|
// packages/experience-design-system-cli/src/tui/settings/configuration/project/ProjectScreen.tsx
|
|
32597
|
-
import { useEffect as useEffect24, useRef as
|
|
32598
|
-
import { Box as Box47, Text as Text50, useInput as
|
|
32599
|
-
import { Fragment as Fragment19, jsx as
|
|
32634
|
+
import { useEffect as useEffect24, useRef as useRef15, useState as useState32 } from "react";
|
|
32635
|
+
import { Box as Box47, Text as Text50, useInput as useInput14 } from "ink";
|
|
32636
|
+
import { Fragment as Fragment19, jsx as jsx60, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
32600
32637
|
function debugFields(config) {
|
|
32601
32638
|
return {
|
|
32602
32639
|
space_id: config?.spaceId ?? "",
|
|
@@ -32613,7 +32650,7 @@ function ProjectScreen({ onDone }) {
|
|
|
32613
32650
|
const [saving, setSaving] = useState32(false);
|
|
32614
32651
|
const [notice, setNotice] = useState32(null);
|
|
32615
32652
|
const [loadError, setLoadError] = useState32(null);
|
|
32616
|
-
const visit =
|
|
32653
|
+
const visit = useRef15({
|
|
32617
32654
|
trail: createTrail(),
|
|
32618
32655
|
before: void 0,
|
|
32619
32656
|
persisted: void 0,
|
|
@@ -32658,7 +32695,7 @@ function ProjectScreen({ onDone }) {
|
|
|
32658
32695
|
exitMethod: change.changed ? "saved" : "discarded"
|
|
32659
32696
|
});
|
|
32660
32697
|
};
|
|
32661
|
-
|
|
32698
|
+
useInput14((input, key) => {
|
|
32662
32699
|
if (!config && loadError && (key.escape || input === "q")) {
|
|
32663
32700
|
endVisit(null);
|
|
32664
32701
|
onDone();
|
|
@@ -32666,16 +32703,16 @@ function ProjectScreen({ onDone }) {
|
|
|
32666
32703
|
});
|
|
32667
32704
|
if (!config) {
|
|
32668
32705
|
return /* @__PURE__ */ jsxs48(Box47, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
32669
|
-
/* @__PURE__ */
|
|
32670
|
-
/* @__PURE__ */
|
|
32706
|
+
/* @__PURE__ */ jsx60(Text50, { bold: true, children: "Project" }),
|
|
32707
|
+
/* @__PURE__ */ jsx60(Text50, { children: " " }),
|
|
32671
32708
|
loadError ? /* @__PURE__ */ jsxs48(Fragment19, { children: [
|
|
32672
32709
|
/* @__PURE__ */ jsxs48(Text50, { color: PALETTE.error, children: [
|
|
32673
32710
|
"\u2717 Could not read the settings: ",
|
|
32674
32711
|
loadError
|
|
32675
32712
|
] }),
|
|
32676
|
-
/* @__PURE__ */
|
|
32677
|
-
/* @__PURE__ */
|
|
32678
|
-
] }) : /* @__PURE__ */
|
|
32713
|
+
/* @__PURE__ */ jsx60(Text50, { children: " " }),
|
|
32714
|
+
/* @__PURE__ */ jsx60(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
|
|
32715
|
+
] }) : /* @__PURE__ */ jsx60(Text50, { color: PALETTE.accent, children: "Loading..." })
|
|
32679
32716
|
] });
|
|
32680
32717
|
}
|
|
32681
32718
|
const save = () => {
|
|
@@ -32696,7 +32733,7 @@ function ProjectScreen({ onDone }) {
|
|
|
32696
32733
|
endVisit(config);
|
|
32697
32734
|
onDone();
|
|
32698
32735
|
};
|
|
32699
|
-
return /* @__PURE__ */
|
|
32736
|
+
return /* @__PURE__ */ jsx60(
|
|
32700
32737
|
FieldForm,
|
|
32701
32738
|
{
|
|
32702
32739
|
title: "Project",
|
|
@@ -32741,13 +32778,13 @@ var init_ProjectScreen = __esm({
|
|
|
32741
32778
|
|
|
32742
32779
|
// packages/experience-design-system-cli/src/tui/settings/configuration/ConfigurationScreen.tsx
|
|
32743
32780
|
import { useState as useState33 } from "react";
|
|
32744
|
-
import { Box as Box48, Text as Text51, useInput as
|
|
32745
|
-
import { jsx as
|
|
32781
|
+
import { Box as Box48, Text as Text51, useInput as useInput15 } from "ink";
|
|
32782
|
+
import { jsx as jsx61, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
32746
32783
|
function ConfigurationScreen({ onDone }) {
|
|
32747
32784
|
const [focus, setFocus] = useState33(0);
|
|
32748
32785
|
const [open, setOpen] = useState33(null);
|
|
32749
32786
|
const close = () => setOpen(null);
|
|
32750
|
-
|
|
32787
|
+
useInput15((input, key) => {
|
|
32751
32788
|
if (open) return;
|
|
32752
32789
|
if (key.upArrow) {
|
|
32753
32790
|
setFocus((i) => (i - 1 + SECTIONS.length) % SECTIONS.length);
|
|
@@ -32763,18 +32800,18 @@ function ConfigurationScreen({ onDone }) {
|
|
|
32763
32800
|
}
|
|
32764
32801
|
if (key.escape || input === "q") onDone();
|
|
32765
32802
|
});
|
|
32766
|
-
if (open === "project") return /* @__PURE__ */
|
|
32767
|
-
if (open === "agents") return /* @__PURE__ */
|
|
32803
|
+
if (open === "project") return /* @__PURE__ */ jsx61(ProjectScreen, { onDone: close });
|
|
32804
|
+
if (open === "agents") return /* @__PURE__ */ jsx61(AgentsScreen, { onDone: close });
|
|
32768
32805
|
return /* @__PURE__ */ jsxs49(Box48, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
32769
|
-
/* @__PURE__ */
|
|
32770
|
-
/* @__PURE__ */
|
|
32806
|
+
/* @__PURE__ */ jsx61(Text51, { bold: true, children: "Configuration" }),
|
|
32807
|
+
/* @__PURE__ */ jsx61(Text51, { children: " " }),
|
|
32771
32808
|
SECTIONS.map((section, index) => /* @__PURE__ */ jsxs49(Box48, { gap: 1, children: [
|
|
32772
|
-
/* @__PURE__ */
|
|
32773
|
-
/* @__PURE__ */
|
|
32774
|
-
/* @__PURE__ */
|
|
32809
|
+
/* @__PURE__ */ jsx61(Text51, { color: index === focus ? PALETTE.accent : void 0, children: index === focus ? "\u276F" : " " }),
|
|
32810
|
+
/* @__PURE__ */ jsx61(Box48, { width: 9, flexShrink: 0, children: /* @__PURE__ */ jsx61(Text51, { bold: index === focus, color: index === focus ? PALETTE.accent : void 0, children: section.label }) }),
|
|
32811
|
+
/* @__PURE__ */ jsx61(Text51, { color: PALETTE.muted, children: section.description })
|
|
32775
32812
|
] }, section.id)),
|
|
32776
|
-
/* @__PURE__ */
|
|
32777
|
-
/* @__PURE__ */
|
|
32813
|
+
/* @__PURE__ */ jsx61(Text51, { children: " " }),
|
|
32814
|
+
/* @__PURE__ */ jsx61(
|
|
32778
32815
|
ControlHints,
|
|
32779
32816
|
{
|
|
32780
32817
|
hints: [
|
|
@@ -32807,8 +32844,8 @@ var init_ConfigurationScreen = __esm({
|
|
|
32807
32844
|
|
|
32808
32845
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx
|
|
32809
32846
|
import { useEffect as useEffect25, useState as useState34 } from "react";
|
|
32810
|
-
import { Box as Box49, Text as Text52, useInput as
|
|
32811
|
-
import { Fragment as Fragment20, jsx as
|
|
32847
|
+
import { Box as Box49, Text as Text52, useInput as useInput16 } from "ink";
|
|
32848
|
+
import { Fragment as Fragment20, jsx as jsx62, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
32812
32849
|
function OptInAnalyticsScreen({ onDone }) {
|
|
32813
32850
|
const [loading, setLoading] = useState34(true);
|
|
32814
32851
|
const [enabled, setEnabled] = useState34(true);
|
|
@@ -32824,7 +32861,7 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
32824
32861
|
});
|
|
32825
32862
|
});
|
|
32826
32863
|
}, []);
|
|
32827
|
-
|
|
32864
|
+
useInput16((input, key) => {
|
|
32828
32865
|
if (loading) return;
|
|
32829
32866
|
if (key.return || input === " ") {
|
|
32830
32867
|
setEnabled((current) => {
|
|
@@ -32840,20 +32877,20 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
32840
32877
|
}
|
|
32841
32878
|
});
|
|
32842
32879
|
return /* @__PURE__ */ jsxs50(Box49, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
32843
|
-
/* @__PURE__ */
|
|
32844
|
-
/* @__PURE__ */
|
|
32845
|
-
loading ? /* @__PURE__ */
|
|
32880
|
+
/* @__PURE__ */ jsx62(Text52, { bold: true, children: "Settings \u203A Opt-in Analytics" }),
|
|
32881
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
32882
|
+
loading ? /* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "Loading\u2026" }) : /* @__PURE__ */ jsxs50(Fragment20, { children: [
|
|
32846
32883
|
/* @__PURE__ */ jsxs50(Text52, { children: [
|
|
32847
32884
|
"Share anonymous usage data:",
|
|
32848
32885
|
" ",
|
|
32849
|
-
/* @__PURE__ */
|
|
32886
|
+
/* @__PURE__ */ jsx62(Text52, { bold: true, color: enabled ? PALETTE.success : PALETTE.muted, children: enabled ? "On" : "Off" })
|
|
32850
32887
|
] }),
|
|
32851
|
-
/* @__PURE__ */
|
|
32852
|
-
/* @__PURE__ */
|
|
32853
|
-
/* @__PURE__ */
|
|
32888
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
32889
|
+
/* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "Shares which CLI commands are used and where imports succeed or fail." }),
|
|
32890
|
+
/* @__PURE__ */ jsx62(Text52, { color: PALETTE.muted, children: "Never includes source code, file paths, credentials, or authored content." })
|
|
32854
32891
|
] }),
|
|
32855
|
-
/* @__PURE__ */
|
|
32856
|
-
/* @__PURE__ */
|
|
32892
|
+
/* @__PURE__ */ jsx62(Text52, { children: " " }),
|
|
32893
|
+
/* @__PURE__ */ jsx62(
|
|
32857
32894
|
ControlHints,
|
|
32858
32895
|
{
|
|
32859
32896
|
hints: [
|
|
@@ -32875,9 +32912,9 @@ var init_screen11 = __esm({
|
|
|
32875
32912
|
});
|
|
32876
32913
|
|
|
32877
32914
|
// packages/experience-design-system-cli/src/tui/settings/debug-mode/screen.tsx
|
|
32878
|
-
import { useEffect as useEffect26, useRef as
|
|
32879
|
-
import { Box as Box50, Text as Text53, useInput as
|
|
32880
|
-
import { Fragment as Fragment21, jsx as
|
|
32915
|
+
import { useEffect as useEffect26, useRef as useRef16, useState as useState35 } from "react";
|
|
32916
|
+
import { Box as Box50, Text as Text53, useInput as useInput17 } from "ink";
|
|
32917
|
+
import { Fragment as Fragment21, jsx as jsx63, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
32881
32918
|
function DebugModeScreen({ onDone }) {
|
|
32882
32919
|
const [setting, setSetting] = useState35(null);
|
|
32883
32920
|
const [focus, setFocus] = useState35("enabled");
|
|
@@ -32885,7 +32922,7 @@ function DebugModeScreen({ onDone }) {
|
|
|
32885
32922
|
RETENTION_CHOICES[RETENTION_CHOICES.length - 1]
|
|
32886
32923
|
);
|
|
32887
32924
|
const [notice, setNotice] = useState35(null);
|
|
32888
|
-
const visit =
|
|
32925
|
+
const visit = useRef16({ trail: createTrail(), before: void 0, error: "" }).current;
|
|
32889
32926
|
useEffect26(() => {
|
|
32890
32927
|
readDebugModeSetting().then((loaded) => {
|
|
32891
32928
|
setSetting(loaded);
|
|
@@ -32926,7 +32963,7 @@ function DebugModeScreen({ onDone }) {
|
|
|
32926
32963
|
exitMethod: change.changed ? "saved" : "discarded"
|
|
32927
32964
|
});
|
|
32928
32965
|
};
|
|
32929
|
-
|
|
32966
|
+
useInput17((input, key) => {
|
|
32930
32967
|
if (!setting) return;
|
|
32931
32968
|
if (key.upArrow || key.downArrow) {
|
|
32932
32969
|
setFocus((current) => ROWS[(ROWS.indexOf(current) + (key.downArrow ? 1 : ROWS.length - 1)) % ROWS.length]);
|
|
@@ -32953,16 +32990,16 @@ function DebugModeScreen({ onDone }) {
|
|
|
32953
32990
|
onDone();
|
|
32954
32991
|
}
|
|
32955
32992
|
});
|
|
32956
|
-
const marker = (row) => /* @__PURE__ */
|
|
32957
|
-
const label = (row, text) => /* @__PURE__ */
|
|
32993
|
+
const marker = (row) => /* @__PURE__ */ jsx63(Text53, { color: focus === row ? PALETTE.accent : void 0, children: focus === row ? "\u276F" : " " });
|
|
32994
|
+
const label = (row, text) => /* @__PURE__ */ jsx63(Text53, { bold: focus === row, color: focus === row ? PALETTE.accent : PALETTE.muted, children: text });
|
|
32958
32995
|
return /* @__PURE__ */ jsxs51(Box50, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
32959
|
-
/* @__PURE__ */
|
|
32960
|
-
/* @__PURE__ */
|
|
32996
|
+
/* @__PURE__ */ jsx63(Text53, { bold: true, children: "Settings \u203A Debug Mode" }),
|
|
32997
|
+
/* @__PURE__ */ jsx63(Text53, { children: " " }),
|
|
32961
32998
|
setting ? /* @__PURE__ */ jsxs51(Fragment21, { children: [
|
|
32962
32999
|
/* @__PURE__ */ jsxs51(Box50, { gap: 1, children: [
|
|
32963
33000
|
marker("enabled"),
|
|
32964
33001
|
label("enabled", "Debug logging:"),
|
|
32965
|
-
/* @__PURE__ */
|
|
33002
|
+
/* @__PURE__ */ jsx63(Text53, { bold: true, color: setting.enabled ? PALETTE.success : PALETTE.muted, children: setting.enabled ? "On" : "Off" })
|
|
32966
33003
|
] }),
|
|
32967
33004
|
/* @__PURE__ */ jsxs51(Box50, { gap: 1, children: [
|
|
32968
33005
|
marker("retentionDays"),
|
|
@@ -32970,7 +33007,7 @@ function DebugModeScreen({ onDone }) {
|
|
|
32970
33007
|
RETENTION_CHOICES.map((days) => {
|
|
32971
33008
|
const highlighted = focus === "retentionDays" && days === pending;
|
|
32972
33009
|
const saved = days === setting.retentionDays;
|
|
32973
|
-
return /* @__PURE__ */
|
|
33010
|
+
return /* @__PURE__ */ jsx63(
|
|
32974
33011
|
Text53,
|
|
32975
33012
|
{
|
|
32976
33013
|
bold: highlighted || saved,
|
|
@@ -32982,15 +33019,15 @@ function DebugModeScreen({ onDone }) {
|
|
|
32982
33019
|
);
|
|
32983
33020
|
})
|
|
32984
33021
|
] }),
|
|
32985
|
-
/* @__PURE__ */
|
|
33022
|
+
/* @__PURE__ */ jsx63(Text53, { children: " " }),
|
|
32986
33023
|
notice ? /* @__PURE__ */ jsxs51(Text53, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
32987
33024
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
32988
33025
|
" ",
|
|
32989
33026
|
notice.text
|
|
32990
|
-
] }) : /* @__PURE__ */
|
|
32991
|
-
] }) : /* @__PURE__ */
|
|
32992
|
-
/* @__PURE__ */
|
|
32993
|
-
/* @__PURE__ */
|
|
33027
|
+
] }) : /* @__PURE__ */ jsx63(Text53, { color: PALETTE.muted, children: "\u2713 marks what is saved. Older logs are deleted the next time the CLI starts." })
|
|
33028
|
+
] }) : /* @__PURE__ */ jsx63(Text53, { color: PALETTE.muted, children: "Loading\u2026" }),
|
|
33029
|
+
/* @__PURE__ */ jsx63(Text53, { children: " " }),
|
|
33030
|
+
/* @__PURE__ */ jsx63(
|
|
32994
33031
|
ControlHints,
|
|
32995
33032
|
{
|
|
32996
33033
|
hints: [
|
|
@@ -33029,7 +33066,7 @@ __export(app_exports, {
|
|
|
33029
33066
|
});
|
|
33030
33067
|
import { join as join28 } from "node:path";
|
|
33031
33068
|
import { useEffect as useEffect27, useState as useState36 } from "react";
|
|
33032
|
-
import { Fragment as Fragment22, jsx as
|
|
33069
|
+
import { Fragment as Fragment22, jsx as jsx64 } from "react/jsx-runtime";
|
|
33033
33070
|
function App({ importOptions, inkClear }) {
|
|
33034
33071
|
const [screen, setScreen] = useState36("start");
|
|
33035
33072
|
const [importExitCode, setImportExitCode] = useState36();
|
|
@@ -33186,9 +33223,9 @@ function App({ importOptions, inkClear }) {
|
|
|
33186
33223
|
};
|
|
33187
33224
|
switch (screen) {
|
|
33188
33225
|
case "import":
|
|
33189
|
-
if (showImportResult) return /* @__PURE__ */
|
|
33226
|
+
if (showImportResult) return /* @__PURE__ */ jsx64(ImportScreen, { exitCode: importExitCode, onDone: finishImportResult });
|
|
33190
33227
|
if (flow && flowStart) {
|
|
33191
|
-
return /* @__PURE__ */
|
|
33228
|
+
return /* @__PURE__ */ jsx64(
|
|
33192
33229
|
FlowScreen,
|
|
33193
33230
|
{
|
|
33194
33231
|
state: flow.state,
|
|
@@ -33198,12 +33235,12 @@ function App({ importOptions, inkClear }) {
|
|
|
33198
33235
|
}
|
|
33199
33236
|
);
|
|
33200
33237
|
}
|
|
33201
|
-
if (importDefaults === void 0) return /* @__PURE__ */
|
|
33238
|
+
if (importDefaults === void 0) return /* @__PURE__ */ jsx64(Fragment22, {});
|
|
33202
33239
|
if (projectPath === void 0) {
|
|
33203
|
-
return /* @__PURE__ */
|
|
33240
|
+
return /* @__PURE__ */ jsx64(WelcomeScreen, { onContinue: setProjectPath, onQuit: leaveImport, initialPath: importDefaults.componentDir });
|
|
33204
33241
|
}
|
|
33205
33242
|
if (tokensPath === void 0) {
|
|
33206
|
-
return /* @__PURE__ */
|
|
33243
|
+
return /* @__PURE__ */ jsx64(
|
|
33207
33244
|
TokenInputScreen,
|
|
33208
33245
|
{
|
|
33209
33246
|
initialPath: importDefaults.tokenFile,
|
|
@@ -33213,7 +33250,7 @@ function App({ importOptions, inkClear }) {
|
|
|
33213
33250
|
);
|
|
33214
33251
|
}
|
|
33215
33252
|
if (scannedFiles === void 0) {
|
|
33216
|
-
return /* @__PURE__ */
|
|
33253
|
+
return /* @__PURE__ */ jsx64(
|
|
33217
33254
|
PathValidationScreen,
|
|
33218
33255
|
{
|
|
33219
33256
|
projectPath,
|
|
@@ -33225,10 +33262,10 @@ function App({ importOptions, inkClear }) {
|
|
|
33225
33262
|
}
|
|
33226
33263
|
if (extractionRun) {
|
|
33227
33264
|
if (extraction?.status === "done" && !extraction.result.ok) {
|
|
33228
|
-
return /* @__PURE__ */
|
|
33265
|
+
return /* @__PURE__ */ jsx64(ErrorStep, { stepName: extraction.result.step, message: extraction.result.message, onExit: leaveImport });
|
|
33229
33266
|
}
|
|
33230
33267
|
if (extraction?.status === "running") {
|
|
33231
|
-
return /* @__PURE__ */
|
|
33268
|
+
return /* @__PURE__ */ jsx64(
|
|
33232
33269
|
ExtractionScreen,
|
|
33233
33270
|
{
|
|
33234
33271
|
progress: extraction.progress,
|
|
@@ -33237,14 +33274,14 @@ function App({ importOptions, inkClear }) {
|
|
|
33237
33274
|
}
|
|
33238
33275
|
);
|
|
33239
33276
|
}
|
|
33240
|
-
return /* @__PURE__ */
|
|
33277
|
+
return /* @__PURE__ */ jsx64(Fragment22, {});
|
|
33241
33278
|
}
|
|
33242
33279
|
if (scopeRun && scopeFlow) {
|
|
33243
33280
|
if (scopeFlow.status === "failed") {
|
|
33244
|
-
return /* @__PURE__ */
|
|
33281
|
+
return /* @__PURE__ */ jsx64(ErrorStep, { stepName: "scope gate", message: scopeFlow.message, onExit: leaveImport });
|
|
33245
33282
|
}
|
|
33246
33283
|
if (scopeFlow.status === "deciding") {
|
|
33247
|
-
return /* @__PURE__ */
|
|
33284
|
+
return /* @__PURE__ */ jsx64(
|
|
33248
33285
|
ScopeGateScreen,
|
|
33249
33286
|
{
|
|
33250
33287
|
components: scopeFlow.load.components,
|
|
@@ -33254,7 +33291,7 @@ function App({ importOptions, inkClear }) {
|
|
|
33254
33291
|
);
|
|
33255
33292
|
}
|
|
33256
33293
|
if (generation?.status === "done" && !generation.result.ok) {
|
|
33257
|
-
return /* @__PURE__ */
|
|
33294
|
+
return /* @__PURE__ */ jsx64(ErrorStep, { stepName: generation.result.step, message: generation.result.message, onExit: leaveImport });
|
|
33258
33295
|
}
|
|
33259
33296
|
if (generation?.status === "running") {
|
|
33260
33297
|
const hasRawTokens = scopeRun.input.rawTokensPath !== "";
|
|
@@ -33262,7 +33299,7 @@ function App({ importOptions, inkClear }) {
|
|
|
33262
33299
|
hasRawTokens,
|
|
33263
33300
|
mapTokensEligible: generation.progress.mapTokensEligible
|
|
33264
33301
|
});
|
|
33265
|
-
return /* @__PURE__ */
|
|
33302
|
+
return /* @__PURE__ */ jsx64(
|
|
33266
33303
|
GenerationScreen,
|
|
33267
33304
|
{
|
|
33268
33305
|
progress: generation.progress,
|
|
@@ -33274,10 +33311,10 @@ function App({ importOptions, inkClear }) {
|
|
|
33274
33311
|
}
|
|
33275
33312
|
);
|
|
33276
33313
|
}
|
|
33277
|
-
return /* @__PURE__ */
|
|
33314
|
+
return /* @__PURE__ */ jsx64(Fragment22, {});
|
|
33278
33315
|
}
|
|
33279
33316
|
if (pendingLaunch?.cached) {
|
|
33280
|
-
return /* @__PURE__ */
|
|
33317
|
+
return /* @__PURE__ */ jsx64(
|
|
33281
33318
|
TokenReuseScreen,
|
|
33282
33319
|
{
|
|
33283
33320
|
tokensPath: pendingLaunch.cached.tokensPath,
|
|
@@ -33288,7 +33325,7 @@ function App({ importOptions, inkClear }) {
|
|
|
33288
33325
|
}
|
|
33289
33326
|
);
|
|
33290
33327
|
}
|
|
33291
|
-
return /* @__PURE__ */
|
|
33328
|
+
return /* @__PURE__ */ jsx64(
|
|
33292
33329
|
CredentialsScreen,
|
|
33293
33330
|
{
|
|
33294
33331
|
initial: importDefaults.credentials,
|
|
@@ -33297,17 +33334,17 @@ function App({ importOptions, inkClear }) {
|
|
|
33297
33334
|
}
|
|
33298
33335
|
);
|
|
33299
33336
|
case "help":
|
|
33300
|
-
return /* @__PURE__ */
|
|
33337
|
+
return /* @__PURE__ */ jsx64(HelpScreen, { onDone: goToStart });
|
|
33301
33338
|
case "settings":
|
|
33302
|
-
return /* @__PURE__ */
|
|
33339
|
+
return /* @__PURE__ */ jsx64(SettingsScreen, { onNavigate: setScreen, onBack: goToStart });
|
|
33303
33340
|
case "settings-configuration":
|
|
33304
|
-
return /* @__PURE__ */
|
|
33341
|
+
return /* @__PURE__ */ jsx64(ConfigurationScreen, { onDone: goToSettings });
|
|
33305
33342
|
case "settings-opt-in-analytics":
|
|
33306
|
-
return /* @__PURE__ */
|
|
33343
|
+
return /* @__PURE__ */ jsx64(OptInAnalyticsScreen, { onDone: goToSettings });
|
|
33307
33344
|
case "settings-debug-mode":
|
|
33308
|
-
return /* @__PURE__ */
|
|
33345
|
+
return /* @__PURE__ */ jsx64(DebugModeScreen, { onDone: goToSettings });
|
|
33309
33346
|
case "start":
|
|
33310
|
-
return /* @__PURE__ */
|
|
33347
|
+
return /* @__PURE__ */ jsx64(HomeScreen, { onNavigate: setScreen });
|
|
33311
33348
|
}
|
|
33312
33349
|
}
|
|
33313
33350
|
async function runApp(renderApp, importOptions) {
|
|
@@ -33315,7 +33352,7 @@ async function runApp(renderApp, importOptions) {
|
|
|
33315
33352
|
instance.clear?.();
|
|
33316
33353
|
process.stdout.write("\x1B[H\x1B[0J");
|
|
33317
33354
|
};
|
|
33318
|
-
const instance = renderApp(/* @__PURE__ */
|
|
33355
|
+
const instance = renderApp(/* @__PURE__ */ jsx64(App, { importOptions, inkClear }));
|
|
33319
33356
|
await instance.waitUntilExit();
|
|
33320
33357
|
}
|
|
33321
33358
|
var init_app = __esm({
|