@contentful/experience-design-system-cli 2.37.1-dev-build-182ecd7e.0 → 2.37.1-dev-build-c8306cfd.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 +762 -797
- package/dist/index.js +763 -806
- package/dist/package.json +1 -1
- package/dist/src/tui/import/steps/01-welcome/controls.d.ts +0 -3
- package/dist/src/tui/import/steps/02-token-input/controls.d.ts +0 -3
- package/package.json +3 -3
- package/dist/src/tui/ClearableTextInput.d.ts +0 -6
package/dist/index.js
CHANGED
|
@@ -18515,40 +18515,6 @@ 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
|
-
|
|
18552
18518
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/logic.ts
|
|
18553
18519
|
function shouldQuit(key) {
|
|
18554
18520
|
return key.escape;
|
|
@@ -18564,9 +18530,9 @@ var init_logic = __esm({
|
|
|
18564
18530
|
});
|
|
18565
18531
|
|
|
18566
18532
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/controls.ts
|
|
18567
|
-
import { useInput as
|
|
18533
|
+
import { useInput as useInput3 } from "ink";
|
|
18568
18534
|
function useWelcomeControls(onQuit) {
|
|
18569
|
-
|
|
18535
|
+
useInput3((_input, key) => {
|
|
18570
18536
|
if (shouldQuit(key)) onQuit();
|
|
18571
18537
|
});
|
|
18572
18538
|
}
|
|
@@ -18577,7 +18543,6 @@ var init_controls = __esm({
|
|
|
18577
18543
|
init_logic();
|
|
18578
18544
|
WELCOME_CONTROLS = [
|
|
18579
18545
|
{ keys: "Enter", label: "Continue" },
|
|
18580
|
-
{ keys: "Ctrl+D", label: "Clear" },
|
|
18581
18546
|
{ keys: "Esc", label: "Back to menu" }
|
|
18582
18547
|
];
|
|
18583
18548
|
}
|
|
@@ -18586,7 +18551,8 @@ var init_controls = __esm({
|
|
|
18586
18551
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx
|
|
18587
18552
|
import { useState as useState3 } from "react";
|
|
18588
18553
|
import { Box as Box3, Text as Text4 } from "ink";
|
|
18589
|
-
import
|
|
18554
|
+
import TextInput from "ink-text-input";
|
|
18555
|
+
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
18590
18556
|
function WelcomeScreen({ onContinue, onQuit, initialPath = "" }) {
|
|
18591
18557
|
const [projectPath, setProjectPath] = useState3(initialPath);
|
|
18592
18558
|
useWelcomeControls(onQuit);
|
|
@@ -18595,8 +18561,8 @@ function WelcomeScreen({ onContinue, onQuit, initialPath = "" }) {
|
|
|
18595
18561
|
if (path5) onContinue(path5);
|
|
18596
18562
|
};
|
|
18597
18563
|
return /* @__PURE__ */ jsxs3(Box3, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
18598
|
-
/* @__PURE__ */
|
|
18599
|
-
/* @__PURE__ */
|
|
18564
|
+
/* @__PURE__ */ jsx4(Text4, { bold: true, color: PALETTE.accent, children: "Let's import your design system into Contentful." }),
|
|
18565
|
+
/* @__PURE__ */ jsx4(Box3, { flexDirection: "row", children: /* @__PURE__ */ jsxs3(
|
|
18600
18566
|
Box3,
|
|
18601
18567
|
{
|
|
18602
18568
|
flexDirection: "column",
|
|
@@ -18608,29 +18574,29 @@ function WelcomeScreen({ onContinue, onQuit, initialPath = "" }) {
|
|
|
18608
18574
|
flexShrink: 1,
|
|
18609
18575
|
children: [
|
|
18610
18576
|
OVERVIEW.map((item) => /* @__PURE__ */ jsxs3(Box3, { gap: 1, children: [
|
|
18611
|
-
/* @__PURE__ */
|
|
18612
|
-
/* @__PURE__ */
|
|
18613
|
-
item.ai && /* @__PURE__ */
|
|
18577
|
+
/* @__PURE__ */ jsx4(Box3, { flexShrink: 0, children: /* @__PURE__ */ jsx4(Text4, { bold: true, children: item.label }) }),
|
|
18578
|
+
/* @__PURE__ */ jsx4(Text4, { color: PALETTE.muted, wrap: "truncate-end", children: item.description }),
|
|
18579
|
+
item.ai && /* @__PURE__ */ jsx4(Text4, { bold: true, color: PALETTE.accent, children: AI_MARKER })
|
|
18614
18580
|
] }, item.label)),
|
|
18615
18581
|
/* @__PURE__ */ jsxs3(Box3, { flexDirection: "column", marginTop: 1, children: [
|
|
18616
18582
|
/* @__PURE__ */ jsxs3(Text4, { bold: true, children: [
|
|
18617
|
-
/* @__PURE__ */
|
|
18583
|
+
/* @__PURE__ */ jsx4(Text4, { color: PALETTE.accent, children: AI_MARKER }),
|
|
18618
18584
|
" AI disclosure"
|
|
18619
18585
|
] }),
|
|
18620
|
-
AI_DISCLOSURE.map((paragraph) => /* @__PURE__ */
|
|
18586
|
+
AI_DISCLOSURE.map((paragraph) => /* @__PURE__ */ jsx4(Text4, { color: PALETTE.muted, children: paragraph }, paragraph))
|
|
18621
18587
|
] })
|
|
18622
18588
|
]
|
|
18623
18589
|
}
|
|
18624
18590
|
) }),
|
|
18625
18591
|
/* @__PURE__ */ jsxs3(Box3, { flexDirection: "column", gap: 1, children: [
|
|
18626
|
-
/* @__PURE__ */
|
|
18592
|
+
/* @__PURE__ */ jsx4(Text4, { children: "Where is your component library?" }),
|
|
18627
18593
|
/* @__PURE__ */ jsxs3(Box3, { children: [
|
|
18628
|
-
/* @__PURE__ */
|
|
18629
|
-
/* @__PURE__ */
|
|
18630
|
-
/* @__PURE__ */
|
|
18594
|
+
/* @__PURE__ */ jsx4(Text4, { color: PALETTE.accent, children: "? " }),
|
|
18595
|
+
/* @__PURE__ */ jsx4(Text4, { children: "Project path: " }),
|
|
18596
|
+
/* @__PURE__ */ jsx4(TextInput, { value: projectPath, onChange: setProjectPath, onSubmit: submit })
|
|
18631
18597
|
] })
|
|
18632
18598
|
] }),
|
|
18633
|
-
/* @__PURE__ */
|
|
18599
|
+
/* @__PURE__ */ jsx4(Box3, { gap: 3, children: WELCOME_CONTROLS.map((control) => /* @__PURE__ */ jsxs3(Text4, { children: [
|
|
18634
18600
|
"[",
|
|
18635
18601
|
control.keys,
|
|
18636
18602
|
"] ",
|
|
@@ -18643,7 +18609,6 @@ var init_screen = __esm({
|
|
|
18643
18609
|
"packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx"() {
|
|
18644
18610
|
"use strict";
|
|
18645
18611
|
init_theme();
|
|
18646
|
-
init_ClearableTextInput();
|
|
18647
18612
|
init_controls();
|
|
18648
18613
|
init_logic();
|
|
18649
18614
|
OVERVIEW_BOX_MAX_WIDTH = 90;
|
|
@@ -18684,9 +18649,9 @@ var init_logic2 = __esm({
|
|
|
18684
18649
|
});
|
|
18685
18650
|
|
|
18686
18651
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/controls.ts
|
|
18687
|
-
import { useInput as
|
|
18652
|
+
import { useInput as useInput4 } from "ink";
|
|
18688
18653
|
function useTokenInputControls(onBack) {
|
|
18689
|
-
|
|
18654
|
+
useInput4((_input, key) => {
|
|
18690
18655
|
if (shouldGoBack(key)) onBack();
|
|
18691
18656
|
});
|
|
18692
18657
|
}
|
|
@@ -18697,7 +18662,6 @@ var init_controls2 = __esm({
|
|
|
18697
18662
|
init_logic2();
|
|
18698
18663
|
TOKEN_INPUT_CONTROLS = [
|
|
18699
18664
|
{ keys: "Enter", label: "Continue" },
|
|
18700
|
-
{ keys: "Ctrl+D", label: "Clear" },
|
|
18701
18665
|
{ keys: "Esc", label: "Back" }
|
|
18702
18666
|
];
|
|
18703
18667
|
}
|
|
@@ -18754,7 +18718,8 @@ var init_validate_path = __esm({
|
|
|
18754
18718
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx
|
|
18755
18719
|
import { useState as useState4 } from "react";
|
|
18756
18720
|
import { Box as Box4, Text as Text5 } from "ink";
|
|
18757
|
-
import
|
|
18721
|
+
import TextInput2 from "ink-text-input";
|
|
18722
|
+
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
18758
18723
|
function TokenInputScreen({ onConfirm, onBack, initialPath = "" }) {
|
|
18759
18724
|
const [tokenPath, setTokenPath] = useState4(initialPath);
|
|
18760
18725
|
const [failure, setFailure] = useState4(null);
|
|
@@ -18774,13 +18739,13 @@ function TokenInputScreen({ onConfirm, onBack, initialPath = "" }) {
|
|
|
18774
18739
|
else setFailure({ error: check.error, resolvedPath: check.resolvedPath });
|
|
18775
18740
|
};
|
|
18776
18741
|
return /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
18777
|
-
/* @__PURE__ */
|
|
18778
|
-
/* @__PURE__ */
|
|
18742
|
+
/* @__PURE__ */ jsx5(Text5, { bold: true, children: "Design tokens" }),
|
|
18743
|
+
/* @__PURE__ */ jsx5(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)." }),
|
|
18779
18744
|
/* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", children: [
|
|
18780
18745
|
/* @__PURE__ */ jsxs4(Box4, { gap: 1, children: [
|
|
18781
|
-
/* @__PURE__ */
|
|
18782
|
-
/* @__PURE__ */
|
|
18783
|
-
/* @__PURE__ */
|
|
18746
|
+
/* @__PURE__ */ jsx5(Text5, { color: PALETTE.accent, children: "?" }),
|
|
18747
|
+
/* @__PURE__ */ jsx5(Text5, { children: "Token path:" }),
|
|
18748
|
+
/* @__PURE__ */ jsx5(TextInput2, { value: tokenPath, onChange: change, onSubmit: submit })
|
|
18784
18749
|
] }),
|
|
18785
18750
|
failure && /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", children: [
|
|
18786
18751
|
/* @__PURE__ */ jsxs4(Text5, { color: PALETTE.error, children: [
|
|
@@ -18793,7 +18758,7 @@ function TokenInputScreen({ onConfirm, onBack, initialPath = "" }) {
|
|
|
18793
18758
|
] })
|
|
18794
18759
|
] })
|
|
18795
18760
|
] }),
|
|
18796
|
-
/* @__PURE__ */
|
|
18761
|
+
/* @__PURE__ */ jsx5(Box4, { marginTop: 1, gap: 3, children: TOKEN_INPUT_CONTROLS.map((control) => /* @__PURE__ */ jsxs4(Text5, { children: [
|
|
18797
18762
|
"[",
|
|
18798
18763
|
control.keys,
|
|
18799
18764
|
"] ",
|
|
@@ -18805,7 +18770,6 @@ var init_screen2 = __esm({
|
|
|
18805
18770
|
"packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx"() {
|
|
18806
18771
|
"use strict";
|
|
18807
18772
|
init_theme();
|
|
18808
|
-
init_ClearableTextInput();
|
|
18809
18773
|
init_controls2();
|
|
18810
18774
|
init_logic2();
|
|
18811
18775
|
init_validate_path();
|
|
@@ -18888,12 +18852,12 @@ var init_logic3 = __esm({
|
|
|
18888
18852
|
});
|
|
18889
18853
|
|
|
18890
18854
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/controls.ts
|
|
18891
|
-
import { useInput as
|
|
18855
|
+
import { useInput as useInput5 } from "ink";
|
|
18892
18856
|
function controlsFor(phase) {
|
|
18893
18857
|
return CONTROLS[phase];
|
|
18894
18858
|
}
|
|
18895
18859
|
function usePathValidationControls(phase, handlers) {
|
|
18896
|
-
|
|
18860
|
+
useInput5((input, key) => {
|
|
18897
18861
|
const action = keyAction(phase, input, key);
|
|
18898
18862
|
if (action === "confirm") handlers.onConfirm();
|
|
18899
18863
|
else if (action === "change-path") handlers.onChangePath();
|
|
@@ -18947,7 +18911,7 @@ var init_scan_files = __esm({
|
|
|
18947
18911
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/screen.tsx
|
|
18948
18912
|
import { useEffect as useEffect3, useMemo, useState as useState5 } from "react";
|
|
18949
18913
|
import { Box as Box5, Text as Text6 } from "ink";
|
|
18950
|
-
import { jsx as
|
|
18914
|
+
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
18951
18915
|
function Row({ row }) {
|
|
18952
18916
|
return /* @__PURE__ */ jsxs5(Text6, { color: row.tone === "accent" ? PALETTE.accent : row.tone === "muted" ? PALETTE.muted : void 0, children: [
|
|
18953
18917
|
" \u2022 ",
|
|
@@ -18963,7 +18927,7 @@ function Failure({ scan, path: path5 }) {
|
|
|
18963
18927
|
"\u2717 ",
|
|
18964
18928
|
headline
|
|
18965
18929
|
] }),
|
|
18966
|
-
hints.map((hint) => /* @__PURE__ */
|
|
18930
|
+
hints.map((hint) => /* @__PURE__ */ jsx6(Text6, { color: PALETTE.muted, children: hint }, hint))
|
|
18967
18931
|
] });
|
|
18968
18932
|
}
|
|
18969
18933
|
function Summary({ scan, path: path5 }) {
|
|
@@ -18971,7 +18935,7 @@ function Summary({ scan, path: path5 }) {
|
|
|
18971
18935
|
return /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", gap: 1, children: [
|
|
18972
18936
|
/* @__PURE__ */ jsxs5(Text6, { children: [
|
|
18973
18937
|
"Scanned ",
|
|
18974
|
-
/* @__PURE__ */
|
|
18938
|
+
/* @__PURE__ */ jsx6(Text6, { bold: true, children: path5 })
|
|
18975
18939
|
] }),
|
|
18976
18940
|
/* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", children: [
|
|
18977
18941
|
/* @__PURE__ */ jsxs5(Text6, { color: PALETTE.success, children: [
|
|
@@ -18979,13 +18943,13 @@ function Summary({ scan, path: path5 }) {
|
|
|
18979
18943
|
total,
|
|
18980
18944
|
" files:"
|
|
18981
18945
|
] }),
|
|
18982
|
-
rows.map((row) => /* @__PURE__ */
|
|
18946
|
+
rows.map((row) => /* @__PURE__ */ jsx6(Row, { row }, row.label))
|
|
18983
18947
|
] }),
|
|
18984
18948
|
warning && /* @__PURE__ */ jsxs5(Text6, { color: PALETTE.warning, children: [
|
|
18985
18949
|
"\u26A0 ",
|
|
18986
18950
|
warning
|
|
18987
18951
|
] }),
|
|
18988
|
-
/* @__PURE__ */
|
|
18952
|
+
/* @__PURE__ */ jsx6(Text6, { children: "Does this look right?" })
|
|
18989
18953
|
] });
|
|
18990
18954
|
}
|
|
18991
18955
|
function PathValidationScreen({
|
|
@@ -19010,12 +18974,12 @@ function PathValidationScreen({
|
|
|
19010
18974
|
return /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
19011
18975
|
scan === void 0 && /* @__PURE__ */ jsxs5(Text6, { color: PALETTE.muted, children: [
|
|
19012
18976
|
"Scanning ",
|
|
19013
|
-
/* @__PURE__ */
|
|
18977
|
+
/* @__PURE__ */ jsx6(Text6, { bold: true, children: resolvedPath }),
|
|
19014
18978
|
"..."
|
|
19015
18979
|
] }),
|
|
19016
|
-
scan?.ok === false && /* @__PURE__ */
|
|
19017
|
-
scan?.ok === true && /* @__PURE__ */
|
|
19018
|
-
/* @__PURE__ */
|
|
18980
|
+
scan?.ok === false && /* @__PURE__ */ jsx6(Failure, { scan, path: resolvedPath }),
|
|
18981
|
+
scan?.ok === true && /* @__PURE__ */ jsx6(Summary, { scan, path: resolvedPath }),
|
|
18982
|
+
/* @__PURE__ */ jsx6(Box5, { marginTop: 1, gap: 3, children: controlsFor(phase).map((control) => /* @__PURE__ */ jsxs5(Text6, { color: PALETTE.muted, children: [
|
|
19019
18983
|
"[",
|
|
19020
18984
|
control.keys,
|
|
19021
18985
|
"] ",
|
|
@@ -19068,9 +19032,9 @@ var init_logic4 = __esm({
|
|
|
19068
19032
|
});
|
|
19069
19033
|
|
|
19070
19034
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/controls.ts
|
|
19071
|
-
import { useInput as
|
|
19035
|
+
import { useInput as useInput6 } from "ink";
|
|
19072
19036
|
function useCredentialsControls(handlers) {
|
|
19073
|
-
|
|
19037
|
+
useInput6((input, key) => {
|
|
19074
19038
|
if (handlers.disabled) return;
|
|
19075
19039
|
const action = keyAction2(input, key);
|
|
19076
19040
|
if (action === "back") handlers.onBack();
|
|
@@ -19140,17 +19104,17 @@ var init_validate4 = __esm({
|
|
|
19140
19104
|
});
|
|
19141
19105
|
|
|
19142
19106
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/screen.tsx
|
|
19143
|
-
import { useRef
|
|
19107
|
+
import { useRef, useState as useState6 } from "react";
|
|
19144
19108
|
import { Box as Box6, Text as Text7 } from "ink";
|
|
19145
|
-
import
|
|
19146
|
-
import { Fragment, jsx as
|
|
19109
|
+
import TextInput3 from "ink-text-input";
|
|
19110
|
+
import { Fragment, jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
19147
19111
|
function CredentialsScreen({
|
|
19148
19112
|
onDone,
|
|
19149
19113
|
onBack,
|
|
19150
19114
|
initial = {},
|
|
19151
19115
|
validate: validate3 = validateCredentials
|
|
19152
19116
|
}) {
|
|
19153
|
-
const initialValues =
|
|
19117
|
+
const initialValues = useRef(
|
|
19154
19118
|
normalize({
|
|
19155
19119
|
spaceId: initial.spaceId ?? "",
|
|
19156
19120
|
environmentId: initial.environmentId || "master",
|
|
@@ -19191,21 +19155,21 @@ function CredentialsScreen({
|
|
|
19191
19155
|
};
|
|
19192
19156
|
return /* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
19193
19157
|
/* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", children: [
|
|
19194
|
-
/* @__PURE__ */
|
|
19195
|
-
/* @__PURE__ */
|
|
19158
|
+
/* @__PURE__ */ jsx7(Text7, { bold: true, children: "Contentful credentials" }),
|
|
19159
|
+
/* @__PURE__ */ jsx7(Text7, { children: prefilled ? "Credentials pre-filled from the configuration settings." : "Enter the Contentful space you want to import into." }),
|
|
19196
19160
|
!prefilled && /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
19197
|
-
/* @__PURE__ */
|
|
19198
|
-
/* @__PURE__ */
|
|
19161
|
+
/* @__PURE__ */ jsx7(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." }),
|
|
19162
|
+
/* @__PURE__ */ jsx7(Text7, { color: PALETTE.muted, children: "Tip: save these under Settings \u2192 Configuration so they pre-fill here." })
|
|
19199
19163
|
] })
|
|
19200
19164
|
] }),
|
|
19201
|
-
/* @__PURE__ */
|
|
19202
|
-
/* @__PURE__ */
|
|
19165
|
+
/* @__PURE__ */ jsx7(Box6, { flexDirection: "column", children: FIELDS.map((field) => /* @__PURE__ */ jsxs6(Box6, { gap: 1, children: [
|
|
19166
|
+
/* @__PURE__ */ jsx7(Text7, { color: active === field ? PALETTE.accent : void 0, children: "?" }),
|
|
19203
19167
|
/* @__PURE__ */ jsxs6(Text7, { bold: active === field, children: [
|
|
19204
19168
|
LABELS[field],
|
|
19205
19169
|
":"
|
|
19206
19170
|
] }),
|
|
19207
|
-
/* @__PURE__ */
|
|
19208
|
-
|
|
19171
|
+
/* @__PURE__ */ jsx7(
|
|
19172
|
+
TextInput3,
|
|
19209
19173
|
{
|
|
19210
19174
|
value: values[field],
|
|
19211
19175
|
focus: active === field && !validating,
|
|
@@ -19216,14 +19180,14 @@ function CredentialsScreen({
|
|
|
19216
19180
|
}
|
|
19217
19181
|
)
|
|
19218
19182
|
] }, field)) }),
|
|
19219
|
-
active === "host" && /* @__PURE__ */
|
|
19183
|
+
active === "host" && /* @__PURE__ */ jsx7(Text7, { color: PALETTE.muted, children: "Default: api.contentful.com \xB7 EU spaces: api.eu.contentful.com" }),
|
|
19220
19184
|
error && /* @__PURE__ */ jsxs6(Text7, { color: PALETTE.error, children: [
|
|
19221
19185
|
"\u2717 ",
|
|
19222
19186
|
error
|
|
19223
19187
|
] }),
|
|
19224
|
-
validating && /* @__PURE__ */
|
|
19225
|
-
!validating && !error && !isUnchanged(normalize(values), initialValues) && /* @__PURE__ */
|
|
19226
|
-
/* @__PURE__ */
|
|
19188
|
+
validating && /* @__PURE__ */ jsx7(Text7, { color: PALETTE.accent, children: "Validating credentials..." }),
|
|
19189
|
+
!validating && !error && !isUnchanged(normalize(values), initialValues) && /* @__PURE__ */ jsx7(Text7, { color: PALETTE.muted, children: "Changed values are saved after they validate." }),
|
|
19190
|
+
/* @__PURE__ */ jsx7(Box6, { marginTop: 1, gap: 3, children: CREDENTIALS_CONTROLS.map((control) => /* @__PURE__ */ jsxs6(Text7, { color: PALETTE.muted, children: [
|
|
19227
19191
|
"[",
|
|
19228
19192
|
control.keys,
|
|
19229
19193
|
"] ",
|
|
@@ -19270,9 +19234,9 @@ var init_logic5 = __esm({
|
|
|
19270
19234
|
});
|
|
19271
19235
|
|
|
19272
19236
|
// packages/experience-design-system-cli/src/tui/import/shared/error-step/controls.ts
|
|
19273
|
-
import { useInput as
|
|
19237
|
+
import { useInput as useInput7 } from "ink";
|
|
19274
19238
|
function useErrorControls(handlers) {
|
|
19275
|
-
|
|
19239
|
+
useInput7((input, key) => {
|
|
19276
19240
|
const action = errorAction(input, key, {
|
|
19277
19241
|
canRetry: handlers.onRetry !== void 0,
|
|
19278
19242
|
canAcknowledge: handlers.onAcknowledge !== void 0
|
|
@@ -19291,7 +19255,7 @@ var init_controls5 = __esm({
|
|
|
19291
19255
|
|
|
19292
19256
|
// packages/experience-design-system-cli/src/tui/import/shared/error-step/error-step.tsx
|
|
19293
19257
|
import { Box as Box7, Text as Text8 } from "ink";
|
|
19294
|
-
import { jsx as
|
|
19258
|
+
import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
19295
19259
|
function ErrorStep({
|
|
19296
19260
|
stepName,
|
|
19297
19261
|
message,
|
|
@@ -19310,8 +19274,8 @@ function ErrorStep({
|
|
|
19310
19274
|
stepName,
|
|
19311
19275
|
" failed"
|
|
19312
19276
|
] }),
|
|
19313
|
-
/* @__PURE__ */
|
|
19314
|
-
/* @__PURE__ */
|
|
19277
|
+
/* @__PURE__ */ jsx8(Text8, { color: PALETTE.error, children: message }),
|
|
19278
|
+
/* @__PURE__ */ jsx8(Box7, { marginTop: 1, gap: 3, children: controls.map((control) => /* @__PURE__ */ jsxs7(Text8, { color: PALETTE.muted, children: [
|
|
19315
19279
|
"[",
|
|
19316
19280
|
control.keys,
|
|
19317
19281
|
"] ",
|
|
@@ -19349,9 +19313,9 @@ var init_logic6 = __esm({
|
|
|
19349
19313
|
});
|
|
19350
19314
|
|
|
19351
19315
|
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/controls.ts
|
|
19352
|
-
import { useInput as
|
|
19316
|
+
import { useInput as useInput8 } from "ink";
|
|
19353
19317
|
function useGateControls(handlers) {
|
|
19354
|
-
|
|
19318
|
+
useInput8((input, key) => {
|
|
19355
19319
|
const action = gateAction(input, key, handlers.canSkip);
|
|
19356
19320
|
if (action === "continue") handlers.onContinue();
|
|
19357
19321
|
else if (action === "skip") handlers.onSkip();
|
|
@@ -19367,7 +19331,7 @@ var init_controls6 = __esm({
|
|
|
19367
19331
|
|
|
19368
19332
|
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/gate-step.tsx
|
|
19369
19333
|
import { Box as Box8, Text as Text9 } from "ink";
|
|
19370
|
-
import { jsx as
|
|
19334
|
+
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
19371
19335
|
function GateStep({
|
|
19372
19336
|
message,
|
|
19373
19337
|
onContinue,
|
|
@@ -19389,9 +19353,9 @@ function GateStep({
|
|
|
19389
19353
|
" ",
|
|
19390
19354
|
message
|
|
19391
19355
|
] }),
|
|
19392
|
-
summary && /* @__PURE__ */
|
|
19393
|
-
context && /* @__PURE__ */
|
|
19394
|
-
/* @__PURE__ */
|
|
19356
|
+
summary && /* @__PURE__ */ jsx9(Text9, { color: PALETTE.muted, children: summary }),
|
|
19357
|
+
context && /* @__PURE__ */ jsx9(Box8, { marginTop: 1, children: /* @__PURE__ */ jsx9(Text9, { children: context }) }),
|
|
19358
|
+
/* @__PURE__ */ jsx9(Box8, { marginTop: 1, gap: 3, children: gateControls(continueLabel, skipLabel2, onSkip !== void 0).map((control) => /* @__PURE__ */ jsxs8(Text9, { color: PALETTE.muted, children: [
|
|
19395
19359
|
"[",
|
|
19396
19360
|
control.keys,
|
|
19397
19361
|
"] ",
|
|
@@ -19466,24 +19430,24 @@ var init_use_elapsed = __esm({
|
|
|
19466
19430
|
// packages/experience-design-system-cli/src/tui/import/shared/running-step/running-step.tsx
|
|
19467
19431
|
import { Box as Box9, Text as Text10 } from "ink";
|
|
19468
19432
|
import { ProgressBar, Spinner, ThemeProvider } from "@inkjs/ui";
|
|
19469
|
-
import { jsx as
|
|
19433
|
+
import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
19470
19434
|
function Line({ line }) {
|
|
19471
19435
|
if (line.progress) {
|
|
19472
19436
|
return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, children: [
|
|
19473
19437
|
/* @__PURE__ */ jsxs9(Box9, { gap: 2, children: [
|
|
19474
|
-
/* @__PURE__ */
|
|
19438
|
+
/* @__PURE__ */ jsx10(Box9, { width: 40, children: /* @__PURE__ */ jsx10(ThemeProvider, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx10(ProgressBar, { value: progressPercent(line.progress) }) }) }),
|
|
19475
19439
|
/* @__PURE__ */ jsxs9(Text10, { color: PALETTE.muted, children: [
|
|
19476
19440
|
line.progress.done,
|
|
19477
19441
|
"/",
|
|
19478
19442
|
line.progress.total
|
|
19479
19443
|
] })
|
|
19480
19444
|
] }),
|
|
19481
|
-
/* @__PURE__ */
|
|
19445
|
+
/* @__PURE__ */ jsx10(Text10, { color: PALETTE.muted, children: line.text })
|
|
19482
19446
|
] });
|
|
19483
19447
|
}
|
|
19484
19448
|
return /* @__PURE__ */ jsxs9(Box9, { gap: 1, children: [
|
|
19485
|
-
line.complete ? /* @__PURE__ */
|
|
19486
|
-
/* @__PURE__ */
|
|
19449
|
+
line.complete ? /* @__PURE__ */ jsx10(Text10, { color: PALETTE.success, children: "\u2713" }) : /* @__PURE__ */ jsx10(Spinner, {}),
|
|
19450
|
+
/* @__PURE__ */ jsx10(Text10, { color: PALETTE.muted, children: line.text })
|
|
19487
19451
|
] });
|
|
19488
19452
|
}
|
|
19489
19453
|
function RunningStep({
|
|
@@ -19496,13 +19460,13 @@ function RunningStep({
|
|
|
19496
19460
|
const elapsed = useElapsed();
|
|
19497
19461
|
return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
19498
19462
|
/* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
|
|
19499
|
-
/* @__PURE__ */
|
|
19500
|
-
/* @__PURE__ */
|
|
19501
|
-
/* @__PURE__ */
|
|
19463
|
+
/* @__PURE__ */ jsx10(Text10, { color: PALETTE.muted, children: RULE }),
|
|
19464
|
+
/* @__PURE__ */ jsx10(Text10, { bold: true, children: stepLabel(stepNumber, totalSteps, title) }),
|
|
19465
|
+
/* @__PURE__ */ jsx10(Text10, { color: PALETTE.muted, children: RULE })
|
|
19502
19466
|
] }),
|
|
19503
|
-
/* @__PURE__ */
|
|
19504
|
-
/* @__PURE__ */
|
|
19505
|
-
/* @__PURE__ */
|
|
19467
|
+
/* @__PURE__ */ jsx10(Text10, { children: description }),
|
|
19468
|
+
/* @__PURE__ */ jsx10(Box9, { marginTop: 1, flexDirection: "column", gap: 1, children: lines.map((line, index) => /* @__PURE__ */ jsx10(Line, { line }, index)) }),
|
|
19469
|
+
/* @__PURE__ */ jsx10(Box9, { marginTop: 1, children: /* @__PURE__ */ jsxs9(Text10, { color: PALETTE.muted, children: [
|
|
19506
19470
|
"Elapsed: ",
|
|
19507
19471
|
elapsed
|
|
19508
19472
|
] }) })
|
|
@@ -19582,7 +19546,7 @@ var init_logic8 = __esm({
|
|
|
19582
19546
|
});
|
|
19583
19547
|
|
|
19584
19548
|
// packages/experience-design-system-cli/src/tui/import/steps/05-token-reuse/screen.tsx
|
|
19585
|
-
import { jsx as
|
|
19549
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
19586
19550
|
function TokenReuseScreen({
|
|
19587
19551
|
tokensPath,
|
|
19588
19552
|
sourceChanged,
|
|
@@ -19591,7 +19555,7 @@ function TokenReuseScreen({
|
|
|
19591
19555
|
onQuit
|
|
19592
19556
|
}) {
|
|
19593
19557
|
const { summary, context } = gateText({ tokensPath, sourceChanged });
|
|
19594
|
-
return /* @__PURE__ */
|
|
19558
|
+
return /* @__PURE__ */ jsx11(
|
|
19595
19559
|
GateStep,
|
|
19596
19560
|
{
|
|
19597
19561
|
message: "Existing tokens.json found",
|
|
@@ -19708,14 +19672,14 @@ var init_logic9 = __esm({
|
|
|
19708
19672
|
});
|
|
19709
19673
|
|
|
19710
19674
|
// packages/experience-design-system-cli/src/tui/import/steps/06-extraction/screen.tsx
|
|
19711
|
-
import { jsx as
|
|
19675
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
19712
19676
|
function ExtractionScreen({
|
|
19713
19677
|
progress,
|
|
19714
19678
|
agent,
|
|
19715
19679
|
stepNumber,
|
|
19716
19680
|
totalSteps
|
|
19717
19681
|
}) {
|
|
19718
|
-
return /* @__PURE__ */
|
|
19682
|
+
return /* @__PURE__ */ jsx12(
|
|
19719
19683
|
RunningStep,
|
|
19720
19684
|
{
|
|
19721
19685
|
stepNumber,
|
|
@@ -20022,10 +19986,10 @@ var init_run = __esm({
|
|
|
20022
19986
|
});
|
|
20023
19987
|
|
|
20024
19988
|
// packages/experience-design-system-cli/src/tui/import/steps/06-extraction/use-extraction.ts
|
|
20025
|
-
import { useEffect as useEffect5, useRef as
|
|
19989
|
+
import { useEffect as useEffect5, useRef as useRef2, useState as useState8 } from "react";
|
|
20026
19990
|
function useExtraction(input) {
|
|
20027
19991
|
const [state2, setState] = useState8();
|
|
20028
|
-
const current =
|
|
19992
|
+
const current = useRef2();
|
|
20029
19993
|
useEffect5(() => {
|
|
20030
19994
|
current.current = input;
|
|
20031
19995
|
if (!input) {
|
|
@@ -20188,7 +20152,7 @@ var init_columns = __esm({
|
|
|
20188
20152
|
|
|
20189
20153
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/windowed-panel.tsx
|
|
20190
20154
|
import { Box as Box10, Text as Text11 } from "ink";
|
|
20191
|
-
import { jsx as
|
|
20155
|
+
import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
20192
20156
|
function terminalPanelHeight(rows, reservedRows = 4) {
|
|
20193
20157
|
return Math.max(MIN_TERMINAL_PANEL_HEIGHT, rows - reservedRows);
|
|
20194
20158
|
}
|
|
@@ -20203,7 +20167,7 @@ function FixedPanel({
|
|
|
20203
20167
|
clipOverflow = true,
|
|
20204
20168
|
children
|
|
20205
20169
|
}) {
|
|
20206
|
-
return /* @__PURE__ */
|
|
20170
|
+
return /* @__PURE__ */ jsx13(
|
|
20207
20171
|
Box10,
|
|
20208
20172
|
{
|
|
20209
20173
|
flexDirection: "column",
|
|
@@ -20229,7 +20193,7 @@ function WindowedPanel({ width, height, title, focused, children }) {
|
|
|
20229
20193
|
...height === void 0 ? {} : { height },
|
|
20230
20194
|
focused,
|
|
20231
20195
|
children: [
|
|
20232
|
-
title && /* @__PURE__ */
|
|
20196
|
+
title && /* @__PURE__ */ jsx13(WindowedPanelHeader, { title, width, focused }),
|
|
20233
20197
|
children
|
|
20234
20198
|
]
|
|
20235
20199
|
}
|
|
@@ -20241,8 +20205,8 @@ function WindowedPanelHeader({
|
|
|
20241
20205
|
focused
|
|
20242
20206
|
}) {
|
|
20243
20207
|
return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
|
|
20244
|
-
/* @__PURE__ */
|
|
20245
|
-
/* @__PURE__ */
|
|
20208
|
+
/* @__PURE__ */ jsx13(Text11, { bold: true, color: PALETTE2.info, inverse: focused, children: title }),
|
|
20209
|
+
/* @__PURE__ */ jsx13(Text11, { color: PALETTE2.muted, children: "\u2500".repeat(Math.max(0, width - 2)) })
|
|
20246
20210
|
] });
|
|
20247
20211
|
}
|
|
20248
20212
|
function formatWindowIndicator(direction, count) {
|
|
@@ -20250,7 +20214,7 @@ function formatWindowIndicator(direction, count) {
|
|
|
20250
20214
|
return `${direction === "up" ? "\u2191" : "\u2193"} ${count} more`;
|
|
20251
20215
|
}
|
|
20252
20216
|
function WindowIndicator({ direction, count }) {
|
|
20253
|
-
return /* @__PURE__ */
|
|
20217
|
+
return /* @__PURE__ */ jsx13(Text11, { color: PALETTE2.muted, children: formatWindowIndicator(direction, count) });
|
|
20254
20218
|
}
|
|
20255
20219
|
var MIN_TERMINAL_PANEL_HEIGHT;
|
|
20256
20220
|
var init_windowed_panel = __esm({
|
|
@@ -20262,31 +20226,31 @@ var init_windowed_panel = __esm({
|
|
|
20262
20226
|
});
|
|
20263
20227
|
|
|
20264
20228
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/added-column.tsx
|
|
20265
|
-
import
|
|
20229
|
+
import React6 from "react";
|
|
20266
20230
|
import { Box as Box11, Text as Text12 } from "ink";
|
|
20267
20231
|
import figures from "figures";
|
|
20268
|
-
import { jsx as
|
|
20232
|
+
import { jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
20269
20233
|
function AddedColumn(props) {
|
|
20270
20234
|
const { title, width, height, entries, cursor, focused, aiFlaggedByKey, visibleCount } = props;
|
|
20271
20235
|
const reserveAiBadge = entries.some((e) => aiFlaggedByKey?.get(e.name) === true);
|
|
20272
20236
|
const firstNonCycleIdx = entries.findIndex((e) => !e.isCycle);
|
|
20273
20237
|
const window = computeColumnWindow(entries.length, cursor, Math.max(1, visibleCount));
|
|
20274
20238
|
return /* @__PURE__ */ jsxs11(WindowedPanel, { width, height, title, focused, children: [
|
|
20275
|
-
/* @__PURE__ */
|
|
20276
|
-
entries.length === 0 ? /* @__PURE__ */
|
|
20239
|
+
/* @__PURE__ */ jsx14(WindowIndicator, { direction: "up", count: window.above }),
|
|
20240
|
+
entries.length === 0 ? /* @__PURE__ */ jsx14(Text12, { color: PALETTE2.muted, children: "(none)" }) : entries.slice(window.start, window.end).map((entry, vi) => {
|
|
20277
20241
|
const i = window.start + vi;
|
|
20278
20242
|
const isSelected = i === cursor;
|
|
20279
20243
|
const isCursor = focused && isSelected;
|
|
20280
20244
|
const aiFlagged = aiFlaggedByKey?.get(entry.name) === true;
|
|
20281
20245
|
const showSeparator = firstNonCycleIdx > 0 && i === firstNonCycleIdx;
|
|
20282
20246
|
const style = sideColumnLabelStyle({ isCycle: entry.isCycle, isSelected, focused });
|
|
20283
|
-
return /* @__PURE__ */ jsxs11(
|
|
20284
|
-
showSeparator && /* @__PURE__ */
|
|
20247
|
+
return /* @__PURE__ */ jsxs11(React6.Fragment, { children: [
|
|
20248
|
+
showSeparator && /* @__PURE__ */ jsx14(Text12, { color: PALETTE2.muted, children: "\u2500".repeat(Math.max(0, width - 2)) }),
|
|
20285
20249
|
/* @__PURE__ */ jsxs11(Box11, { children: [
|
|
20286
|
-
isCursor ? /* @__PURE__ */
|
|
20287
|
-
reserveAiBadge && (aiFlagged ? /* @__PURE__ */
|
|
20288
|
-
entry.isCycle && /* @__PURE__ */
|
|
20289
|
-
/* @__PURE__ */
|
|
20250
|
+
isCursor ? /* @__PURE__ */ jsx14(Text12, { color: PALETTE2.info, bold: true, children: figures.pointer }) : /* @__PURE__ */ jsx14(Text12, { children: " " }),
|
|
20251
|
+
reserveAiBadge && (aiFlagged ? /* @__PURE__ */ jsx14(Text12, { color: PALETTE2.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx14(Text12, { children: " " })),
|
|
20252
|
+
entry.isCycle && /* @__PURE__ */ jsx14(Text12, { color: isCursor ? PALETTE2.info : PALETTE2.warning, bold: true, underline: style.nameUnderline, children: " \u26A0" }),
|
|
20253
|
+
/* @__PURE__ */ jsx14(
|
|
20290
20254
|
Text12,
|
|
20291
20255
|
{
|
|
20292
20256
|
color: style.nameColor,
|
|
@@ -20300,7 +20264,7 @@ function AddedColumn(props) {
|
|
|
20300
20264
|
] })
|
|
20301
20265
|
] }, entry.name);
|
|
20302
20266
|
}),
|
|
20303
|
-
/* @__PURE__ */
|
|
20267
|
+
/* @__PURE__ */ jsx14(WindowIndicator, { direction: "down", count: window.below })
|
|
20304
20268
|
] });
|
|
20305
20269
|
}
|
|
20306
20270
|
var init_added_column = __esm({
|
|
@@ -20315,7 +20279,7 @@ var init_added_column = __esm({
|
|
|
20315
20279
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/cycles-panel.tsx
|
|
20316
20280
|
import { Box as Box12, Text as Text13 } from "ink";
|
|
20317
20281
|
import figures2 from "figures";
|
|
20318
|
-
import { jsx as
|
|
20282
|
+
import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
20319
20283
|
function cycleLabel(cycle, index) {
|
|
20320
20284
|
const parts = [];
|
|
20321
20285
|
for (let i = 0; i < cycle.edges.length; i++) {
|
|
@@ -20327,16 +20291,16 @@ function cycleLabel(cycle, index) {
|
|
|
20327
20291
|
}
|
|
20328
20292
|
function CyclesPanel({ cycles, cursor }) {
|
|
20329
20293
|
return /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE2.warning, paddingX: 1, marginTop: 1, children: [
|
|
20330
|
-
/* @__PURE__ */
|
|
20331
|
-
/* @__PURE__ */
|
|
20294
|
+
/* @__PURE__ */ jsx15(Text13, { bold: true, color: PALETTE2.warning, children: `Cycles detected (${cycles.length}):` }),
|
|
20295
|
+
/* @__PURE__ */ jsx15(Text13, { children: " " }),
|
|
20332
20296
|
cycles.map((cycle, i) => {
|
|
20333
20297
|
const isCursor = i === cursor;
|
|
20334
20298
|
return /* @__PURE__ */ jsxs12(Text13, { children: [
|
|
20335
|
-
isCursor ? /* @__PURE__ */
|
|
20336
|
-
/* @__PURE__ */
|
|
20299
|
+
isCursor ? /* @__PURE__ */ jsx15(Text13, { color: PALETTE2.info, bold: true, children: figures2.pointer }) : /* @__PURE__ */ jsx15(Text13, { children: " " }),
|
|
20300
|
+
/* @__PURE__ */ jsx15(Text13, { color: PALETTE2.warning, inverse: isCursor, children: " " + cycleLabel(cycle, i) })
|
|
20337
20301
|
] }, i);
|
|
20338
20302
|
}),
|
|
20339
|
-
/* @__PURE__ */
|
|
20303
|
+
/* @__PURE__ */ jsx15(Text13, { children: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [c/Esc] close" })
|
|
20340
20304
|
] });
|
|
20341
20305
|
}
|
|
20342
20306
|
var init_cycles_panel = __esm({
|
|
@@ -20348,13 +20312,13 @@ var init_cycles_panel = __esm({
|
|
|
20348
20312
|
|
|
20349
20313
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/reject-prompt.tsx
|
|
20350
20314
|
import { Box as Box13, Text as Text14 } from "ink";
|
|
20351
|
-
import { jsx as
|
|
20315
|
+
import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
20352
20316
|
function RejectPrompt({ pending }) {
|
|
20353
20317
|
return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE2.warning, paddingX: 1, marginTop: 1, children: [
|
|
20354
|
-
/* @__PURE__ */
|
|
20355
|
-
pending.ancestors.length > 0 && /* @__PURE__ */
|
|
20356
|
-
pending.descendants.length > 0 && /* @__PURE__ */
|
|
20357
|
-
/* @__PURE__ */
|
|
20318
|
+
/* @__PURE__ */ jsx16(Text14, { bold: true, color: PALETTE2.warning, children: `Rejecting ${pending.target} will:` }),
|
|
20319
|
+
pending.ancestors.length > 0 && /* @__PURE__ */ jsx16(Text14, { children: `- Reject ancestors: ${pending.ancestors.join(", ")}` }),
|
|
20320
|
+
pending.descendants.length > 0 && /* @__PURE__ */ jsx16(Text14, { children: `- Deselect descendants: ${pending.descendants.join(", ")}` }),
|
|
20321
|
+
/* @__PURE__ */ jsx16(Text14, { children: "[y] confirm \xB7 [n]/[Esc] cancel" })
|
|
20358
20322
|
] });
|
|
20359
20323
|
}
|
|
20360
20324
|
var init_reject_prompt = __esm({
|
|
@@ -20366,11 +20330,11 @@ var init_reject_prompt = __esm({
|
|
|
20366
20330
|
|
|
20367
20331
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/LegendEntry.tsx
|
|
20368
20332
|
import { Text as Text15 } from "ink";
|
|
20369
|
-
import { jsx as
|
|
20333
|
+
import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
20370
20334
|
function legendEntry(keyBracket, label, active = false) {
|
|
20371
20335
|
return /* @__PURE__ */ jsxs14(Text15, { children: [
|
|
20372
|
-
/* @__PURE__ */
|
|
20373
|
-
/* @__PURE__ */
|
|
20336
|
+
/* @__PURE__ */ jsx17(Text15, { color: active ? PALETTE2.warning : PALETTE2.info, inverse: active, children: keyBracket }),
|
|
20337
|
+
/* @__PURE__ */ jsx17(Text15, { color: active ? PALETTE2.warning : void 0, inverse: active, children: " " + label })
|
|
20374
20338
|
] }, keyBracket + label);
|
|
20375
20339
|
}
|
|
20376
20340
|
var init_LegendEntry = __esm({
|
|
@@ -20404,7 +20368,7 @@ var init_CompactControlBar = __esm({
|
|
|
20404
20368
|
|
|
20405
20369
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CounterStrip.tsx
|
|
20406
20370
|
import { Box as Box15, Text as Text16 } from "ink";
|
|
20407
|
-
import { jsx as
|
|
20371
|
+
import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
20408
20372
|
function CounterStrip(props) {
|
|
20409
20373
|
const { counters, totalWidth } = props;
|
|
20410
20374
|
const condensed = totalWidth < 60;
|
|
@@ -20412,25 +20376,25 @@ function CounterStrip(props) {
|
|
|
20412
20376
|
const labelRej = condensed ? "Rej" : "Rejected";
|
|
20413
20377
|
const labelUnd = condensed ? "Und" : "Undecided";
|
|
20414
20378
|
const sep = condensed ? " | " : " ";
|
|
20415
|
-
return /* @__PURE__ */
|
|
20379
|
+
return /* @__PURE__ */ jsx18(Box15, { children: /* @__PURE__ */ jsxs16(Text16, { children: [
|
|
20416
20380
|
/* @__PURE__ */ jsxs16(Text16, { color: PALETTE2.muted, children: [
|
|
20417
20381
|
labelGrp,
|
|
20418
20382
|
" "
|
|
20419
20383
|
] }),
|
|
20420
|
-
/* @__PURE__ */
|
|
20421
|
-
/* @__PURE__ */
|
|
20384
|
+
/* @__PURE__ */ jsx18(Text16, { bold: true, children: counters.groups }),
|
|
20385
|
+
/* @__PURE__ */ jsx18(Text16, { color: PALETTE2.muted, children: sep }),
|
|
20422
20386
|
/* @__PURE__ */ jsxs16(Text16, { color: PALETTE2.muted, children: [
|
|
20423
20387
|
labelRej,
|
|
20424
20388
|
" "
|
|
20425
20389
|
] }),
|
|
20426
|
-
/* @__PURE__ */
|
|
20427
|
-
/* @__PURE__ */
|
|
20390
|
+
/* @__PURE__ */ jsx18(Text16, { bold: true, children: counters.rejected }),
|
|
20391
|
+
/* @__PURE__ */ jsx18(Text16, { color: PALETTE2.muted, children: sep }),
|
|
20428
20392
|
/* @__PURE__ */ jsxs16(Text16, { color: PALETTE2.muted, children: [
|
|
20429
20393
|
labelUnd,
|
|
20430
20394
|
" "
|
|
20431
20395
|
] }),
|
|
20432
|
-
/* @__PURE__ */
|
|
20433
|
-
/* @__PURE__ */
|
|
20396
|
+
/* @__PURE__ */ jsx18(Text16, { bold: true, children: counters.undecided }),
|
|
20397
|
+
/* @__PURE__ */ jsx18(Text16, { color: PALETTE2.muted, children: sep })
|
|
20434
20398
|
] }) });
|
|
20435
20399
|
}
|
|
20436
20400
|
var init_CounterStrip = __esm({
|
|
@@ -20443,7 +20407,7 @@ var init_CounterStrip = __esm({
|
|
|
20443
20407
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GotoBanner.tsx
|
|
20444
20408
|
import figures3 from "figures";
|
|
20445
20409
|
import { Box as Box16, Text as Text17 } from "ink";
|
|
20446
|
-
import { jsx as
|
|
20410
|
+
import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
20447
20411
|
function windowStart(rowCount, highlightIndex, maxRows) {
|
|
20448
20412
|
if (rowCount <= maxRows) return 0;
|
|
20449
20413
|
const maxStart = rowCount - maxRows;
|
|
@@ -20454,8 +20418,8 @@ function windowStart(rowCount, highlightIndex, maxRows) {
|
|
|
20454
20418
|
}
|
|
20455
20419
|
function defaultRenderRow(row, index, isCursor) {
|
|
20456
20420
|
return /* @__PURE__ */ jsxs17(Text17, { children: [
|
|
20457
|
-
isCursor ? /* @__PURE__ */
|
|
20458
|
-
/* @__PURE__ */
|
|
20421
|
+
isCursor ? /* @__PURE__ */ jsx19(Text17, { color: PALETTE2.info, bold: true, children: figures3.pointer }) : /* @__PURE__ */ jsx19(Text17, { children: " " }),
|
|
20422
|
+
/* @__PURE__ */ jsx19(Text17, { inverse: isCursor, children: " " + row.label })
|
|
20459
20423
|
] }, index);
|
|
20460
20424
|
}
|
|
20461
20425
|
function GotoBanner({
|
|
@@ -20485,14 +20449,14 @@ function GotoBanner({
|
|
|
20485
20449
|
width,
|
|
20486
20450
|
flexShrink: 0,
|
|
20487
20451
|
children: [
|
|
20488
|
-
/* @__PURE__ */
|
|
20489
|
-
moreAbove > 0 && /* @__PURE__ */
|
|
20452
|
+
/* @__PURE__ */ jsx19(Text17, { bold: true, children: title }),
|
|
20453
|
+
moreAbove > 0 && /* @__PURE__ */ jsx19(Text17, { color: PALETTE2.muted, children: ` \u25B2 ${moreAbove} more` }),
|
|
20490
20454
|
visible.map((row, vi) => {
|
|
20491
20455
|
const i = start + vi;
|
|
20492
20456
|
return renderRow(row, i, i === highlightIndex);
|
|
20493
20457
|
}),
|
|
20494
|
-
moreBelow > 0 && /* @__PURE__ */
|
|
20495
|
-
footerHint !== void 0 && /* @__PURE__ */
|
|
20458
|
+
moreBelow > 0 && /* @__PURE__ */ jsx19(Text17, { color: PALETTE2.muted, children: ` \u25BC ${moreBelow} more` }),
|
|
20459
|
+
footerHint !== void 0 && /* @__PURE__ */ jsx19(Text17, { color: PALETTE2.muted, children: footerHint })
|
|
20496
20460
|
]
|
|
20497
20461
|
}
|
|
20498
20462
|
);
|
|
@@ -20856,7 +20820,7 @@ var init_composite_closure = __esm({
|
|
|
20856
20820
|
|
|
20857
20821
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/badge.tsx
|
|
20858
20822
|
import { Text as Text18 } from "ink";
|
|
20859
|
-
import { jsx as
|
|
20823
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
20860
20824
|
function previewBadge(annotation) {
|
|
20861
20825
|
switch (annotation) {
|
|
20862
20826
|
case "new":
|
|
@@ -20875,7 +20839,7 @@ function PreviewBadge({
|
|
|
20875
20839
|
badge,
|
|
20876
20840
|
highlighted = false
|
|
20877
20841
|
}) {
|
|
20878
|
-
return badge ? /* @__PURE__ */
|
|
20842
|
+
return badge ? /* @__PURE__ */ jsx20(Text18, { color: !highlighted && badge.dim ? PALETTE2.muted : badge.color, bold: badge.bold, children: badge.char }) : /* @__PURE__ */ jsx20(Text18, { children: " " });
|
|
20879
20843
|
}
|
|
20880
20844
|
var init_badge = __esm({
|
|
20881
20845
|
"packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/badge.tsx"() {
|
|
@@ -20887,7 +20851,10 @@ var init_badge = __esm({
|
|
|
20887
20851
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GroupedSidebar.tsx
|
|
20888
20852
|
import figures4 from "figures";
|
|
20889
20853
|
import { Box as Box17, Text as Text19 } from "ink";
|
|
20890
|
-
import { jsx as
|
|
20854
|
+
import { jsx as jsx21, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
20855
|
+
function hasDirectChild(node) {
|
|
20856
|
+
return node.slots.some((slot) => (slot.allowedComponents ?? []).some((target) => target !== node.name));
|
|
20857
|
+
}
|
|
20891
20858
|
function isEmpty(entry) {
|
|
20892
20859
|
return Object.keys(entry.$properties ?? {}).length === 0 && Object.keys(entry.$slots ?? {}).length === 0;
|
|
20893
20860
|
}
|
|
@@ -20930,10 +20897,12 @@ function buildVisibleRows(props) {
|
|
|
20930
20897
|
otherKeys2.sort();
|
|
20931
20898
|
const otherKeySet2 = new Set(otherKeys2);
|
|
20932
20899
|
const flatGraph = graph.filter((n) => otherKeySet2.has(n.name));
|
|
20933
|
-
const closures2 = computeAllClosures(flatGraph);
|
|
20934
20900
|
const depCountByKey = /* @__PURE__ */ new Map();
|
|
20935
|
-
for (const
|
|
20936
|
-
|
|
20901
|
+
for (const node of flatGraph) {
|
|
20902
|
+
const direct = new Set(
|
|
20903
|
+
node.slots.flatMap((slot) => slot.allowedComponents ?? []).filter((t) => t !== node.name && otherKeySet2.has(t))
|
|
20904
|
+
);
|
|
20905
|
+
if (direct.size > 0) depCountByKey.set(node.name, direct.size);
|
|
20937
20906
|
}
|
|
20938
20907
|
for (const key of cycleKeys2) {
|
|
20939
20908
|
const rec = itemByKey2.get(key);
|
|
@@ -20978,28 +20947,11 @@ function buildVisibleRows(props) {
|
|
|
20978
20947
|
const seenCycleTierChildOccurrence = /* @__PURE__ */ new Set();
|
|
20979
20948
|
const computeCycleMemberSubtree = (root) => {
|
|
20980
20949
|
const out = [];
|
|
20981
|
-
const
|
|
20982
|
-
|
|
20983
|
-
|
|
20984
|
-
|
|
20985
|
-
|
|
20986
|
-
if (!parentItem) continue;
|
|
20987
|
-
const slotTargets2 = [];
|
|
20988
|
-
const seenTarget = /* @__PURE__ */ new Set();
|
|
20989
|
-
for (const target of allowedComponentNames(parentItem.entry)) {
|
|
20990
|
-
if (!itemByKey.has(target)) continue;
|
|
20991
|
-
if (seenTarget.has(target)) continue;
|
|
20992
|
-
seenTarget.add(target);
|
|
20993
|
-
slotTargets2.push(target);
|
|
20994
|
-
}
|
|
20995
|
-
slotTargets2.sort();
|
|
20996
|
-
for (const target of slotTargets2) {
|
|
20997
|
-
if (visited.has(target)) continue;
|
|
20998
|
-
visited.add(target);
|
|
20999
|
-
const isCycleMember = cycleParticipants.has(target);
|
|
21000
|
-
out.push({ name: target, depth: cur.depth + 1, isCycleMember });
|
|
21001
|
-
queue.push({ name: target, depth: cur.depth + 1 });
|
|
21002
|
-
}
|
|
20950
|
+
const parentItem = itemByKey.get(root)?.it;
|
|
20951
|
+
if (!parentItem) return out;
|
|
20952
|
+
const slotTargets2 = [...new Set(allowedComponentNames(parentItem.entry))].filter((target) => target !== root && itemByKey.has(target)).sort();
|
|
20953
|
+
for (const target of slotTargets2) {
|
|
20954
|
+
out.push({ name: target, depth: 1, isCycleMember: cycleParticipants.has(target) });
|
|
21003
20955
|
}
|
|
21004
20956
|
return out;
|
|
21005
20957
|
};
|
|
@@ -21061,7 +21013,15 @@ function buildVisibleRows(props) {
|
|
|
21061
21013
|
}
|
|
21062
21014
|
const otherKeySet = new Set(otherKeys);
|
|
21063
21015
|
const subgraph = graph.filter((n) => otherKeySet.has(n.name));
|
|
21064
|
-
const closures =
|
|
21016
|
+
const closures = /* @__PURE__ */ new Map();
|
|
21017
|
+
const parentNames = /* @__PURE__ */ new Set([
|
|
21018
|
+
...findRoots(subgraph),
|
|
21019
|
+
...subgraph.filter((n) => hasDirectChild(n)).map((n) => n.name)
|
|
21020
|
+
]);
|
|
21021
|
+
for (const name of [...parentNames].sort()) {
|
|
21022
|
+
const full = computeClosure(name, subgraph);
|
|
21023
|
+
closures.set(name, { ...full, nodes: full.nodes.filter((n) => n.depth <= 1) });
|
|
21024
|
+
}
|
|
21065
21025
|
const sharedDeps = findSharedDeps(closures);
|
|
21066
21026
|
const hasCycleDepDirect = (name) => {
|
|
21067
21027
|
const it = itemByKey.get(name)?.it;
|
|
@@ -21098,7 +21058,6 @@ function buildVisibleRows(props) {
|
|
|
21098
21058
|
}
|
|
21099
21059
|
};
|
|
21100
21060
|
countInjections(root);
|
|
21101
|
-
for (const n of closure.nodes) if (n.name !== root) countInjections(n.name);
|
|
21102
21061
|
const depCount = closure.nodes.length - 1 + injectedCycleCount;
|
|
21103
21062
|
const expanded = alwaysExpanded ? true : props.expandedGroups.has(root);
|
|
21104
21063
|
const glyphExpand = expanded ? GLYPH_EXPAND_EXPANDED : GLYPH_EXPAND_COLLAPSED;
|
|
@@ -21134,7 +21093,6 @@ function buildVisibleRows(props) {
|
|
|
21134
21093
|
emitCycleChildrenOf(root, 0);
|
|
21135
21094
|
for (const c2 of closureChildren) {
|
|
21136
21095
|
injectedChildren.push({ name: c2.name, depth: c2.depth, isCycleChild: false });
|
|
21137
|
-
emitCycleChildrenOf(c2.name, c2.depth);
|
|
21138
21096
|
}
|
|
21139
21097
|
const isLastAtDepth = (idx) => {
|
|
21140
21098
|
const own = injectedChildren[idx].depth;
|
|
@@ -21317,7 +21275,7 @@ function GroupedSidebar(props) {
|
|
|
21317
21275
|
" ",
|
|
21318
21276
|
emptyMessage
|
|
21319
21277
|
] }),
|
|
21320
|
-
windowed && /* @__PURE__ */
|
|
21278
|
+
windowed && /* @__PURE__ */ jsx21(WindowIndicator, { direction: "up", count: start }),
|
|
21321
21279
|
rows.map((row, i) => {
|
|
21322
21280
|
const absoluteRowIdx = start + i;
|
|
21323
21281
|
const isSelected = selectedRowIdx !== void 0 ? absoluteRowIdx === selectedRowIdx && row.itemIdx >= 0 : row.itemIdx >= 0 && row.itemIdx === selectedIdx;
|
|
@@ -21345,10 +21303,10 @@ function GroupedSidebar(props) {
|
|
|
21345
21303
|
isCursor
|
|
21346
21304
|
});
|
|
21347
21305
|
return /* @__PURE__ */ jsxs18(Box17, { children: [
|
|
21348
|
-
isCursor ? /* @__PURE__ */
|
|
21349
|
-
/* @__PURE__ */
|
|
21350
|
-
selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */
|
|
21351
|
-
aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */
|
|
21306
|
+
isCursor ? /* @__PURE__ */ jsx21(Text19, { color: PALETTE2.info, bold: true, children: figures4.pointer }) : /* @__PURE__ */ jsx21(Text19, { children: " " }),
|
|
21307
|
+
/* @__PURE__ */ jsx21(PreviewBadge, { badge, highlighted: isSelected }),
|
|
21308
|
+
selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */ jsx21(Text19, { color: !isSelected && selDim ? PALETTE2.muted : selColor, bold: selBold, children: " " + selGlyph }) : /* @__PURE__ */ jsx21(Text19, { children: " " })),
|
|
21309
|
+
aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */ jsx21(Text19, { color: PALETTE2.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx21(Text19, { children: " " })),
|
|
21352
21310
|
/* @__PURE__ */ jsxs18(
|
|
21353
21311
|
Text19,
|
|
21354
21312
|
{
|
|
@@ -21363,10 +21321,10 @@ function GroupedSidebar(props) {
|
|
|
21363
21321
|
]
|
|
21364
21322
|
}
|
|
21365
21323
|
),
|
|
21366
|
-
inheritanceStyle.glyph && /* @__PURE__ */
|
|
21324
|
+
inheritanceStyle.glyph && /* @__PURE__ */ jsx21(Text19, { color: inheritanceStyle.dim ? PALETTE2.muted : inheritanceStyle.color, bold: inheritanceStyle.bold, children: " " + inheritanceStyle.glyph })
|
|
21367
21325
|
] }, row.key);
|
|
21368
21326
|
}),
|
|
21369
|
-
windowed && /* @__PURE__ */
|
|
21327
|
+
windowed && /* @__PURE__ */ jsx21(WindowIndicator, { direction: "down", count: allRows.length - end })
|
|
21370
21328
|
] });
|
|
21371
21329
|
}
|
|
21372
21330
|
var GLYPH_EXPAND_COLLAPSED, GLYPH_EXPAND_EXPANDED, GLYPH_TREE_MID, GLYPH_TREE_LAST, GLYPH_WARN, GLYPH_ERROR;
|
|
@@ -21387,7 +21345,7 @@ var init_GroupedSidebar = __esm({
|
|
|
21387
21345
|
});
|
|
21388
21346
|
|
|
21389
21347
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/hooks/useImmediateInput.ts
|
|
21390
|
-
import { useLayoutEffect, useRef as
|
|
21348
|
+
import { useLayoutEffect, useRef as useRef3 } from "react";
|
|
21391
21349
|
import { useStdin } from "ink";
|
|
21392
21350
|
function parseInput(data) {
|
|
21393
21351
|
const isShiftTab = data === "\x1B[Z";
|
|
@@ -21449,7 +21407,7 @@ function registerInputHandler(stdin, setRawMode, handler) {
|
|
|
21449
21407
|
}
|
|
21450
21408
|
function useImmediateInput(handler, enabled = true) {
|
|
21451
21409
|
const { stdin, setRawMode } = useStdin();
|
|
21452
|
-
const handlerRef =
|
|
21410
|
+
const handlerRef = useRef3(handler);
|
|
21453
21411
|
handlerRef.current = handler;
|
|
21454
21412
|
useLayoutEffect(() => {
|
|
21455
21413
|
if (!enabled) return;
|
|
@@ -21494,9 +21452,9 @@ var init_use_terminal_size = __esm({
|
|
|
21494
21452
|
});
|
|
21495
21453
|
|
|
21496
21454
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/HelpOverlay.tsx
|
|
21497
|
-
import
|
|
21455
|
+
import React7 from "react";
|
|
21498
21456
|
import { Box as Box18, Text as Text20 } from "ink";
|
|
21499
|
-
import { Fragment as Fragment2, jsx as
|
|
21457
|
+
import { Fragment as Fragment2, jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
21500
21458
|
function HelpOverlay(props) {
|
|
21501
21459
|
const { onClose } = props;
|
|
21502
21460
|
const { columns: terminalColumns, rows: terminalRows } = useTerminalSize();
|
|
@@ -21517,11 +21475,11 @@ function HelpOverlay(props) {
|
|
|
21517
21475
|
height: panelHeight,
|
|
21518
21476
|
overflowY: "hidden",
|
|
21519
21477
|
children: [
|
|
21520
|
-
/* @__PURE__ */
|
|
21521
|
-
props.sections.map((section) => /* @__PURE__ */ jsxs19(
|
|
21522
|
-
/* @__PURE__ */
|
|
21523
|
-
/* @__PURE__ */
|
|
21524
|
-
section.entries.map((entry) => /* @__PURE__ */
|
|
21478
|
+
/* @__PURE__ */ jsx22(Text20, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
|
|
21479
|
+
props.sections.map((section) => /* @__PURE__ */ jsxs19(React7.Fragment, { children: [
|
|
21480
|
+
/* @__PURE__ */ jsx22(Text20, { children: " " }),
|
|
21481
|
+
/* @__PURE__ */ jsx22(Text20, { bold: true, children: section.title }),
|
|
21482
|
+
section.entries.map((entry) => /* @__PURE__ */ jsx22(Text20, { children: entry.keys ? " " + entry.keys.padEnd(16) + " " + entry.label : " " + entry.label }, entry.keys + entry.label))
|
|
21525
21483
|
] }, section.title))
|
|
21526
21484
|
]
|
|
21527
21485
|
}
|
|
@@ -21538,31 +21496,31 @@ function HelpOverlay(props) {
|
|
|
21538
21496
|
height: panelHeight,
|
|
21539
21497
|
overflowY: "hidden",
|
|
21540
21498
|
children: [
|
|
21541
|
-
/* @__PURE__ */
|
|
21542
|
-
/* @__PURE__ */
|
|
21543
|
-
/* @__PURE__ */
|
|
21544
|
-
/* @__PURE__ */
|
|
21545
|
-
/* @__PURE__ */
|
|
21546
|
-
/* @__PURE__ */
|
|
21547
|
-
/* @__PURE__ */
|
|
21499
|
+
/* @__PURE__ */ jsx22(Text20, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
|
|
21500
|
+
/* @__PURE__ */ jsx22(Text20, { children: " " }),
|
|
21501
|
+
/* @__PURE__ */ jsx22(Text20, { bold: true, children: "Navigation" }),
|
|
21502
|
+
/* @__PURE__ */ jsx22(Text20, { children: " \u2191 / k / PgUp Scroll up" }),
|
|
21503
|
+
/* @__PURE__ */ jsx22(Text20, { children: " \u2193 / j / PgDn Scroll down" }),
|
|
21504
|
+
/* @__PURE__ */ jsx22(Text20, { children: " g / Home Jump to top" }),
|
|
21505
|
+
/* @__PURE__ */ jsx22(Text20, { children: " G / End Jump to bottom" }),
|
|
21548
21506
|
mode === "review" && /* @__PURE__ */ jsxs19(Fragment2, { children: [
|
|
21549
|
-
/* @__PURE__ */
|
|
21550
|
-
/* @__PURE__ */
|
|
21551
|
-
/* @__PURE__ */
|
|
21552
|
-
/* @__PURE__ */
|
|
21553
|
-
/* @__PURE__ */
|
|
21554
|
-
/* @__PURE__ */
|
|
21555
|
-
/* @__PURE__ */
|
|
21556
|
-
/* @__PURE__ */
|
|
21557
|
-
/* @__PURE__ */
|
|
21558
|
-
/* @__PURE__ */
|
|
21559
|
-
/* @__PURE__ */
|
|
21560
|
-
/* @__PURE__ */
|
|
21561
|
-
/* @__PURE__ */
|
|
21507
|
+
/* @__PURE__ */ jsx22(Text20, { children: " " }),
|
|
21508
|
+
/* @__PURE__ */ jsx22(Text20, { bold: true, children: "[Review mode only]" }),
|
|
21509
|
+
/* @__PURE__ */ jsx22(Text20, { children: " Tab Toggle sidebar/detail" }),
|
|
21510
|
+
/* @__PURE__ */ jsx22(Text20, { children: " a Accept component" }),
|
|
21511
|
+
/* @__PURE__ */ jsx22(Text20, { children: " r Reject component" }),
|
|
21512
|
+
/* @__PURE__ */ jsx22(Text20, { children: " e Edit proposal" }),
|
|
21513
|
+
/* @__PURE__ */ jsx22(Text20, { children: " s Toggle source code" }),
|
|
21514
|
+
/* @__PURE__ */ jsx22(Text20, { children: " A Approve all" }),
|
|
21515
|
+
/* @__PURE__ */ jsx22(Text20, { children: " F Open finalize dialog" }),
|
|
21516
|
+
/* @__PURE__ */ jsx22(Text20, { children: " Ctrl+S Save draft" }),
|
|
21517
|
+
/* @__PURE__ */ jsx22(Text20, { children: " Ctrl+Z Undo" }),
|
|
21518
|
+
/* @__PURE__ */ jsx22(Text20, { children: " Ctrl+Y Redo" }),
|
|
21519
|
+
/* @__PURE__ */ jsx22(Text20, { children: " Esc Exit edit / close" })
|
|
21562
21520
|
] }),
|
|
21563
|
-
/* @__PURE__ */
|
|
21564
|
-
/* @__PURE__ */
|
|
21565
|
-
/* @__PURE__ */
|
|
21521
|
+
/* @__PURE__ */ jsx22(Text20, { children: " " }),
|
|
21522
|
+
/* @__PURE__ */ jsx22(Text20, { children: " h Close help" }),
|
|
21523
|
+
/* @__PURE__ */ jsx22(Text20, { children: " q Quit" })
|
|
21566
21524
|
]
|
|
21567
21525
|
}
|
|
21568
21526
|
);
|
|
@@ -21643,7 +21601,7 @@ var init_sidebar_input = __esm({
|
|
|
21643
21601
|
|
|
21644
21602
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/SearchMatchSummary.tsx
|
|
21645
21603
|
import { Box as Box19, Text as Text21 } from "ink";
|
|
21646
|
-
import { Fragment as Fragment3, jsx as
|
|
21604
|
+
import { Fragment as Fragment3, jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
21647
21605
|
function SearchMatchSummary({
|
|
21648
21606
|
open,
|
|
21649
21607
|
query,
|
|
@@ -21658,13 +21616,13 @@ function SearchMatchSummary({
|
|
|
21658
21616
|
open && /* @__PURE__ */ jsxs20(Box19, { marginTop, flexDirection: "column", children: [
|
|
21659
21617
|
/* @__PURE__ */ jsxs20(Text21, { children: [
|
|
21660
21618
|
`/${query}`,
|
|
21661
|
-
/* @__PURE__ */
|
|
21662
|
-
query && /* @__PURE__ */
|
|
21663
|
-
/* @__PURE__ */
|
|
21619
|
+
/* @__PURE__ */ jsx23(Text21, { color: PALETTE2.info, children: "\u258E" }),
|
|
21620
|
+
query && /* @__PURE__ */ jsx23(Text21, { color: PALETTE2.muted, children: formatSearchMatchSummary(matches, total) }),
|
|
21621
|
+
/* @__PURE__ */ jsx23(Text21, { children: " \xB7 [Esc] leave" })
|
|
21664
21622
|
] }),
|
|
21665
|
-
autocompleteCandidates.length > 1 && /* @__PURE__ */
|
|
21623
|
+
autocompleteCandidates.length > 1 && /* @__PURE__ */ jsx23(Text21, { color: PALETTE2.muted, children: ` possibilities: ${autocompleteCandidates.join(" \xB7 ").slice(0, 120)}` })
|
|
21666
21624
|
] }),
|
|
21667
|
-
!open && query && /* @__PURE__ */
|
|
21625
|
+
!open && query && /* @__PURE__ */ jsx23(Box19, { marginTop, children: /* @__PURE__ */ jsx23(Text21, { children: `/${query}${formatSearchMatchSummary(matches, total)} \xB7 [Esc] clear` }) })
|
|
21668
21626
|
] });
|
|
21669
21627
|
}
|
|
21670
21628
|
var init_SearchMatchSummary = __esm({
|
|
@@ -22434,7 +22392,7 @@ var init_state = __esm({
|
|
|
22434
22392
|
});
|
|
22435
22393
|
|
|
22436
22394
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/use-scope-gate.ts
|
|
22437
|
-
import { useEffect as useEffect7, useMemo as useMemo2, useRef as
|
|
22395
|
+
import { useEffect as useEffect7, useMemo as useMemo2, useRef as useRef4, useState as useState12 } from "react";
|
|
22438
22396
|
function useScopeGate({ components, onConfirm, onQuit }) {
|
|
22439
22397
|
const { columns: totalWidth, rows: terminalRows } = useTerminalSize();
|
|
22440
22398
|
const columnPlan = useMemo2(() => computeColumnWidths(totalWidth), [totalWidth]);
|
|
@@ -22477,7 +22435,7 @@ function useScopeGate({ components, onConfirm, onQuit }) {
|
|
|
22477
22435
|
for (const p of cycleParticipants) seed.add(p);
|
|
22478
22436
|
return seed;
|
|
22479
22437
|
});
|
|
22480
|
-
const seededGroupsRef =
|
|
22438
|
+
const seededGroupsRef = useRef4(closures.size > 0 || cycleParticipants.size > 0);
|
|
22481
22439
|
useEffect7(() => {
|
|
22482
22440
|
if (seededGroupsRef.current) return;
|
|
22483
22441
|
if (closures.size === 0 && cycleParticipants.size === 0) return;
|
|
@@ -22924,30 +22882,30 @@ var init_use_scope_gate = __esm({
|
|
|
22924
22882
|
|
|
22925
22883
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/screen.tsx
|
|
22926
22884
|
import { Box as Box20, Text as Text22 } from "ink";
|
|
22927
|
-
import { Fragment as Fragment4, jsx as
|
|
22885
|
+
import { Fragment as Fragment4, jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
22928
22886
|
function ScopeGateScreen(props) {
|
|
22929
22887
|
if (props.components.length === 0) {
|
|
22930
|
-
return /* @__PURE__ */
|
|
22888
|
+
return /* @__PURE__ */ jsx24(Box20, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx24(Text22, { color: PALETTE2.error, children: "Error: no components found for this session \u2014 please re-run analyze extract." }) });
|
|
22931
22889
|
}
|
|
22932
|
-
return /* @__PURE__ */
|
|
22890
|
+
return /* @__PURE__ */ jsx24(ScopeGateView, { ...props });
|
|
22933
22891
|
}
|
|
22934
22892
|
function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
22935
22893
|
const gate = useScopeGate({ components, onConfirm, onQuit });
|
|
22936
22894
|
const { search, graph, columnPlan, panelLayout, counters } = gate;
|
|
22937
22895
|
if (gate.showHelp) {
|
|
22938
|
-
return /* @__PURE__ */
|
|
22896
|
+
return /* @__PURE__ */ jsx24(HelpOverlay, { sections: HELP_SECTIONS, handleInput: false, onClose: gate.closeHelp });
|
|
22939
22897
|
}
|
|
22940
22898
|
return /* @__PURE__ */ jsxs21(Box20, { flexDirection: "column", paddingX: 2, children: [
|
|
22941
22899
|
/* @__PURE__ */ jsxs21(Box20, { flexDirection: "row", flexWrap: "wrap", children: [
|
|
22942
|
-
/* @__PURE__ */
|
|
22900
|
+
/* @__PURE__ */ jsx24(CounterStrip, { counters, totalWidth: gate.totalWidth }),
|
|
22943
22901
|
gate.aiExcludedCount > 0 && /* @__PURE__ */ jsxs21(Text22, { color: PALETTE2.muted, children: [
|
|
22944
22902
|
`${gate.aiExcludedCount} component${gate.aiExcludedCount === 1 ? "" : "s"} flagged by AI`,
|
|
22945
|
-
gate.aiRows.length > 0 && /* @__PURE__ */
|
|
22903
|
+
gate.aiRows.length > 0 && /* @__PURE__ */ jsx24(Text22, { color: PALETTE2.info, children: " \u2014 press [x] to see why" })
|
|
22946
22904
|
] })
|
|
22947
22905
|
] }),
|
|
22948
|
-
graph.cycles.length > 0 && /* @__PURE__ */
|
|
22906
|
+
graph.cycles.length > 0 && /* @__PURE__ */ jsx24(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx24(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." }) }),
|
|
22949
22907
|
/* @__PURE__ */ jsxs21(Box20, { flexDirection: "row", alignItems: "stretch", children: [
|
|
22950
|
-
gate.aiRationalePanelOpen ? /* @__PURE__ */
|
|
22908
|
+
gate.aiRationalePanelOpen ? /* @__PURE__ */ jsx24(
|
|
22951
22909
|
GotoBanner,
|
|
22952
22910
|
{
|
|
22953
22911
|
title: `Review flags (${gate.aiExcludedCount})`,
|
|
@@ -22957,7 +22915,7 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
22957
22915
|
width: columnPlan.main,
|
|
22958
22916
|
footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [x/Esc] close"
|
|
22959
22917
|
}
|
|
22960
|
-
) : /* @__PURE__ */
|
|
22918
|
+
) : /* @__PURE__ */ jsx24(
|
|
22961
22919
|
GroupedSidebar,
|
|
22962
22920
|
{
|
|
22963
22921
|
items: gate.groupedItems,
|
|
@@ -22986,8 +22944,8 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
22986
22944
|
}
|
|
22987
22945
|
),
|
|
22988
22946
|
columnPlan.layout === "two-column" && /* @__PURE__ */ jsxs21(Fragment4, { children: [
|
|
22989
|
-
/* @__PURE__ */
|
|
22990
|
-
/* @__PURE__ */
|
|
22947
|
+
/* @__PURE__ */ jsx24(Box20, { width: 2, flexShrink: 0 }),
|
|
22948
|
+
/* @__PURE__ */ jsx24(
|
|
22991
22949
|
AddedColumn,
|
|
22992
22950
|
{
|
|
22993
22951
|
width: columnPlan.added,
|
|
@@ -23002,9 +22960,9 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
23002
22960
|
)
|
|
23003
22961
|
] })
|
|
23004
22962
|
] }),
|
|
23005
|
-
gate.cyclesPanelOpen && /* @__PURE__ */
|
|
23006
|
-
gate.pendingRejectCascade && /* @__PURE__ */
|
|
23007
|
-
/* @__PURE__ */
|
|
22963
|
+
gate.cyclesPanelOpen && /* @__PURE__ */ jsx24(CyclesPanel, { cycles: gate.slotCycles, cursor: gate.cyclesCursor }),
|
|
22964
|
+
gate.pendingRejectCascade && /* @__PURE__ */ jsx24(RejectPrompt, { pending: gate.pendingRejectCascade }),
|
|
22965
|
+
/* @__PURE__ */ jsx24(
|
|
23008
22966
|
SearchMatchSummary,
|
|
23009
22967
|
{
|
|
23010
22968
|
open: search.searchOpen,
|
|
@@ -23015,7 +22973,7 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
23015
22973
|
marginTop: 1
|
|
23016
22974
|
}
|
|
23017
22975
|
),
|
|
23018
|
-
/* @__PURE__ */
|
|
22976
|
+
/* @__PURE__ */ jsx24(
|
|
23019
22977
|
CompactControlBar,
|
|
23020
22978
|
{
|
|
23021
22979
|
hasGroupRoots: gate.hasGroupRoots,
|
|
@@ -23133,11 +23091,11 @@ var init_load = __esm({
|
|
|
23133
23091
|
});
|
|
23134
23092
|
|
|
23135
23093
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/use-scope-gate-flow.ts
|
|
23136
|
-
import { useEffect as useEffect8, useMemo as useMemo3, useRef as
|
|
23094
|
+
import { useEffect as useEffect8, useMemo as useMemo3, useRef as useRef5, useState as useState13 } from "react";
|
|
23137
23095
|
function useScopeGateFlow(input, deps = realDeps2) {
|
|
23138
23096
|
const sessionId = input?.sessionId;
|
|
23139
23097
|
const loaded = useMemo3(() => sessionId ? deps.load(sessionId) : void 0, [sessionId]);
|
|
23140
|
-
const cacheCheck =
|
|
23098
|
+
const cacheCheck = useRef5(void 0);
|
|
23141
23099
|
const [confirmed, setConfirmed] = useState13();
|
|
23142
23100
|
useEffect8(() => {
|
|
23143
23101
|
if (!input || !loaded?.ok || cacheCheck.current) return;
|
|
@@ -23203,7 +23161,7 @@ var init_logic10 = __esm({
|
|
|
23203
23161
|
});
|
|
23204
23162
|
|
|
23205
23163
|
// packages/experience-design-system-cli/src/tui/import/steps/08-generation/screen.tsx
|
|
23206
|
-
import { jsx as
|
|
23164
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
23207
23165
|
function GenerationScreen({
|
|
23208
23166
|
progress,
|
|
23209
23167
|
agent,
|
|
@@ -23212,7 +23170,7 @@ function GenerationScreen({
|
|
|
23212
23170
|
stepNumber,
|
|
23213
23171
|
totalSteps
|
|
23214
23172
|
}) {
|
|
23215
|
-
return /* @__PURE__ */
|
|
23173
|
+
return /* @__PURE__ */ jsx25(
|
|
23216
23174
|
RunningStep,
|
|
23217
23175
|
{
|
|
23218
23176
|
stepNumber,
|
|
@@ -23414,10 +23372,10 @@ var init_run2 = __esm({
|
|
|
23414
23372
|
});
|
|
23415
23373
|
|
|
23416
23374
|
// packages/experience-design-system-cli/src/tui/import/steps/08-generation/use-generation.ts
|
|
23417
|
-
import { useEffect as useEffect9, useRef as
|
|
23375
|
+
import { useEffect as useEffect9, useRef as useRef6, useState as useState14 } from "react";
|
|
23418
23376
|
function useGeneration(input) {
|
|
23419
23377
|
const [state2, setState] = useState14();
|
|
23420
|
-
const current =
|
|
23378
|
+
const current = useRef6();
|
|
23421
23379
|
useEffect9(() => {
|
|
23422
23380
|
current.current = input;
|
|
23423
23381
|
if (!input) {
|
|
@@ -23894,7 +23852,7 @@ var init_logic11 = __esm({
|
|
|
23894
23852
|
});
|
|
23895
23853
|
|
|
23896
23854
|
// packages/experience-design-system-cli/src/tui/import/steps/preview-validation-error/screen.tsx
|
|
23897
|
-
import { jsx as
|
|
23855
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
23898
23856
|
function PreviewValidationErrorScreen({
|
|
23899
23857
|
errors,
|
|
23900
23858
|
missingNames,
|
|
@@ -23903,7 +23861,7 @@ function PreviewValidationErrorScreen({
|
|
|
23903
23861
|
onQuit
|
|
23904
23862
|
}) {
|
|
23905
23863
|
const matchedNames = matchedComponentNames(errors, missingNames);
|
|
23906
|
-
return /* @__PURE__ */
|
|
23864
|
+
return /* @__PURE__ */ jsx26(
|
|
23907
23865
|
GateStep,
|
|
23908
23866
|
{
|
|
23909
23867
|
intent: "error",
|
|
@@ -24275,10 +24233,10 @@ var init_scroll_offset = __esm({
|
|
|
24275
24233
|
});
|
|
24276
24234
|
|
|
24277
24235
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx
|
|
24278
|
-
import
|
|
24236
|
+
import React8, { useEffect as useEffect10, useLayoutEffect as useLayoutEffect2, useState as useState15 } from "react";
|
|
24279
24237
|
import figures5 from "figures";
|
|
24280
24238
|
import { Box as Box21, measureElement, Text as Text23 } from "ink";
|
|
24281
|
-
import { Fragment as Fragment5, jsx as
|
|
24239
|
+
import { Fragment as Fragment5, jsx as jsx27, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
24282
24240
|
function createCommonRowProps(selected, focusLevel, editingField, textCursor, valueCursor, cursorVisible, editingValue, valueText, width) {
|
|
24283
24241
|
return {
|
|
24284
24242
|
selected,
|
|
@@ -24417,13 +24375,13 @@ function serializeState(state2, originalJson) {
|
|
|
24417
24375
|
}
|
|
24418
24376
|
function Picker({ value, active }) {
|
|
24419
24377
|
return /* @__PURE__ */ jsxs22(Box21, { children: [
|
|
24420
|
-
active && /* @__PURE__ */
|
|
24421
|
-
/* @__PURE__ */
|
|
24422
|
-
active && /* @__PURE__ */
|
|
24378
|
+
active && /* @__PURE__ */ jsx27(Text23, { color: PALETTE.warning, children: "\u2039" }),
|
|
24379
|
+
/* @__PURE__ */ jsx27(Text23, { color: active ? PALETTE.warning : void 0, bold: active, children: value }),
|
|
24380
|
+
active && /* @__PURE__ */ jsx27(Text23, { color: PALETTE.warning, children: "\u203A" })
|
|
24423
24381
|
] });
|
|
24424
24382
|
}
|
|
24425
24383
|
function Toggle({ value, active }) {
|
|
24426
|
-
return /* @__PURE__ */
|
|
24384
|
+
return /* @__PURE__ */ jsx27(Box21, { children: /* @__PURE__ */ jsx27(Text23, { color: active ? PALETTE.warning : value ? PALETTE.success : PALETTE.border, children: value ? "[\u2713]" : "[ ]" }) });
|
|
24427
24385
|
}
|
|
24428
24386
|
function InlinePropField({
|
|
24429
24387
|
label,
|
|
@@ -24446,7 +24404,7 @@ function RequiredField({
|
|
|
24446
24404
|
editingField,
|
|
24447
24405
|
activeField
|
|
24448
24406
|
}) {
|
|
24449
|
-
return /* @__PURE__ */
|
|
24407
|
+
return /* @__PURE__ */ jsx27(InlinePropField, { label: "req:", focused, children: /* @__PURE__ */ jsx27(Toggle, { value, active: editingField && activeField === "required" }) });
|
|
24450
24408
|
}
|
|
24451
24409
|
function DefaultValueRow({
|
|
24452
24410
|
display,
|
|
@@ -24458,7 +24416,7 @@ function DefaultValueRow({
|
|
|
24458
24416
|
focused ? "\u203A " : " ",
|
|
24459
24417
|
"default:"
|
|
24460
24418
|
] }),
|
|
24461
|
-
active ? /* @__PURE__ */
|
|
24419
|
+
active ? /* @__PURE__ */ jsx27(Picker, { value: display, active: true }) : /* @__PURE__ */ jsx27(Text23, { wrap: "wrap", children: display })
|
|
24462
24420
|
] });
|
|
24463
24421
|
}
|
|
24464
24422
|
function RowLabel({
|
|
@@ -24487,9 +24445,9 @@ function ValueInputRow({
|
|
|
24487
24445
|
cursorVisible
|
|
24488
24446
|
}) {
|
|
24489
24447
|
return /* @__PURE__ */ jsxs22(Box21, { paddingLeft: 2, children: [
|
|
24490
|
-
/* @__PURE__ */
|
|
24491
|
-
/* @__PURE__ */
|
|
24492
|
-
/* @__PURE__ */
|
|
24448
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.accent, children: mode === "edit" ? "\u270E " : "+ " }),
|
|
24449
|
+
/* @__PURE__ */ jsx27(Text23, { children: valueText }),
|
|
24450
|
+
/* @__PURE__ */ jsx27(Text23, { inverse: cursorVisible, children: " " })
|
|
24493
24451
|
] });
|
|
24494
24452
|
}
|
|
24495
24453
|
function EditableListItem({
|
|
@@ -24502,9 +24460,9 @@ function EditableListItem({
|
|
|
24502
24460
|
}) {
|
|
24503
24461
|
const isBeingEdited = editingValue?.mode === "edit" && editingValue.index === index;
|
|
24504
24462
|
if (isBeingEdited) {
|
|
24505
|
-
return /* @__PURE__ */
|
|
24463
|
+
return /* @__PURE__ */ jsx27(ValueInputRow, { mode: "edit", valueText, cursorVisible });
|
|
24506
24464
|
}
|
|
24507
|
-
return /* @__PURE__ */
|
|
24465
|
+
return /* @__PURE__ */ jsx27(Box21, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx27(Text23, { color: active ? PALETTE.accent : void 0, children: active ? `${figures5.pointer} ${value}` : ` ${value}` }) });
|
|
24508
24466
|
}
|
|
24509
24467
|
function EditableValueList({
|
|
24510
24468
|
values,
|
|
@@ -24518,8 +24476,8 @@ function EditableValueList({
|
|
|
24518
24476
|
showAddInput
|
|
24519
24477
|
}) {
|
|
24520
24478
|
return /* @__PURE__ */ jsxs22(Fragment5, { children: [
|
|
24521
|
-
values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */
|
|
24522
|
-
values.map((value, index) => /* @__PURE__ */
|
|
24479
|
+
values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: emptyMessage }) : /* @__PURE__ */ jsx27(Box21, { paddingLeft: emptyPaddingLeft, children: /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: emptyMessage }) })),
|
|
24480
|
+
values.map((value, index) => /* @__PURE__ */ jsx27(
|
|
24523
24481
|
EditableListItem,
|
|
24524
24482
|
{
|
|
24525
24483
|
value,
|
|
@@ -24531,7 +24489,7 @@ function EditableValueList({
|
|
|
24531
24489
|
},
|
|
24532
24490
|
index
|
|
24533
24491
|
)),
|
|
24534
|
-
showAddInput && editingValue?.mode === "add" && /* @__PURE__ */
|
|
24492
|
+
showAddInput && editingValue?.mode === "add" && /* @__PURE__ */ jsx27(ValueInputRow, { mode: "add", valueText, cursorVisible })
|
|
24535
24493
|
] });
|
|
24536
24494
|
}
|
|
24537
24495
|
function DefaultSubRow({
|
|
@@ -24548,12 +24506,12 @@ function DefaultSubRow({
|
|
|
24548
24506
|
focused ? "\u203A " : " ",
|
|
24549
24507
|
"default:"
|
|
24550
24508
|
] }),
|
|
24551
|
-
/* @__PURE__ */
|
|
24509
|
+
/* @__PURE__ */ jsx27(Text23, { color: focused ? void 0 : PALETTE.muted, children: "(not applicable)" })
|
|
24552
24510
|
] });
|
|
24553
24511
|
}
|
|
24554
24512
|
if (prop.type === "boolean") {
|
|
24555
24513
|
const display = prop.default === true ? "true" : prop.default === false ? "false" : "(unset)";
|
|
24556
|
-
return /* @__PURE__ */
|
|
24514
|
+
return /* @__PURE__ */ jsx27(DefaultValueRow, { display, active, focused });
|
|
24557
24515
|
}
|
|
24558
24516
|
if (prop.type === "enum") {
|
|
24559
24517
|
if (prop.values.length === 0) {
|
|
@@ -24562,11 +24520,11 @@ function DefaultSubRow({
|
|
|
24562
24520
|
focused ? "\u203A " : " ",
|
|
24563
24521
|
"default:"
|
|
24564
24522
|
] }),
|
|
24565
|
-
/* @__PURE__ */
|
|
24523
|
+
/* @__PURE__ */ jsx27(Text23, { color: focused ? void 0 : PALETTE.muted, children: "(no values defined)" })
|
|
24566
24524
|
] });
|
|
24567
24525
|
}
|
|
24568
24526
|
const display = typeof prop.default === "string" && prop.default !== "" ? prop.default : "(unset)";
|
|
24569
|
-
return /* @__PURE__ */
|
|
24527
|
+
return /* @__PURE__ */ jsx27(DefaultValueRow, { display, active, focused });
|
|
24570
24528
|
}
|
|
24571
24529
|
const value = typeof prop.default === "string" ? prop.default : "";
|
|
24572
24530
|
if (active) {
|
|
@@ -24576,9 +24534,9 @@ function DefaultSubRow({
|
|
|
24576
24534
|
"default:"
|
|
24577
24535
|
] }),
|
|
24578
24536
|
/* @__PURE__ */ jsxs22(Box21, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
24579
|
-
/* @__PURE__ */
|
|
24580
|
-
/* @__PURE__ */
|
|
24581
|
-
/* @__PURE__ */
|
|
24537
|
+
/* @__PURE__ */ jsx27(Text23, { children: value.slice(0, textCursor) }),
|
|
24538
|
+
/* @__PURE__ */ jsx27(Text23, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
|
|
24539
|
+
/* @__PURE__ */ jsx27(Text23, { children: value.slice(textCursor + 1) })
|
|
24582
24540
|
] })
|
|
24583
24541
|
] });
|
|
24584
24542
|
}
|
|
@@ -24587,7 +24545,7 @@ function DefaultSubRow({
|
|
|
24587
24545
|
focused ? "\u203A " : " ",
|
|
24588
24546
|
"default:"
|
|
24589
24547
|
] }),
|
|
24590
|
-
/* @__PURE__ */
|
|
24548
|
+
/* @__PURE__ */ jsx27(Text23, { color: focused || value ? void 0 : PALETTE.muted, children: value || "(none)" })
|
|
24591
24549
|
] });
|
|
24592
24550
|
}
|
|
24593
24551
|
function DescriptionField({
|
|
@@ -24607,7 +24565,7 @@ function DescriptionField({
|
|
|
24607
24565
|
focused ? "\u203A " : " ",
|
|
24608
24566
|
label
|
|
24609
24567
|
] }),
|
|
24610
|
-
/* @__PURE__ */
|
|
24568
|
+
/* @__PURE__ */ jsx27(Text23, { wrap: "truncate-end", color: value ? void 0 : PALETTE.muted, children: value || "\u2014" })
|
|
24611
24569
|
] });
|
|
24612
24570
|
}
|
|
24613
24571
|
return /* @__PURE__ */ jsxs22(Box21, { paddingLeft, flexDirection: "column", width, flexShrink: 0, children: [
|
|
@@ -24615,7 +24573,7 @@ function DescriptionField({
|
|
|
24615
24573
|
focused ? "\u203A " : " ",
|
|
24616
24574
|
label
|
|
24617
24575
|
] }),
|
|
24618
|
-
editing ? /* @__PURE__ */
|
|
24576
|
+
editing ? /* @__PURE__ */ jsx27(EditableDescription, { cursorVisible, value, textCursor }) : /* @__PURE__ */ jsx27(Text23, { wrap: "wrap", children: value || "\u2014" })
|
|
24619
24577
|
] });
|
|
24620
24578
|
}
|
|
24621
24579
|
function EditableDescription({
|
|
@@ -24625,7 +24583,7 @@ function EditableDescription({
|
|
|
24625
24583
|
}) {
|
|
24626
24584
|
return /* @__PURE__ */ jsxs22(Text23, { wrap: "wrap", children: [
|
|
24627
24585
|
value.slice(0, textCursor),
|
|
24628
|
-
/* @__PURE__ */
|
|
24586
|
+
/* @__PURE__ */ jsx27(Text23, { inverse: cursorVisible, children: value[textCursor] ?? " " }),
|
|
24629
24587
|
value.slice(textCursor + 1)
|
|
24630
24588
|
] });
|
|
24631
24589
|
}
|
|
@@ -24647,8 +24605,8 @@ function PropRow({
|
|
|
24647
24605
|
const descFocused = activeField === "description";
|
|
24648
24606
|
const descActive = editingField && descFocused;
|
|
24649
24607
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
24650
|
-
/* @__PURE__ */
|
|
24651
|
-
/* @__PURE__ */
|
|
24608
|
+
/* @__PURE__ */ jsx27(Box21, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx27(RowLabel, { name: prop.name, selected }) }),
|
|
24609
|
+
/* @__PURE__ */ jsx27(
|
|
24652
24610
|
DescriptionField,
|
|
24653
24611
|
{
|
|
24654
24612
|
value: prop.description,
|
|
@@ -24662,7 +24620,7 @@ function PropRow({
|
|
|
24662
24620
|
}
|
|
24663
24621
|
),
|
|
24664
24622
|
/* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
24665
|
-
/* @__PURE__ */
|
|
24623
|
+
/* @__PURE__ */ jsx27(
|
|
24666
24624
|
RequiredField,
|
|
24667
24625
|
{
|
|
24668
24626
|
value: prop.required,
|
|
@@ -24671,9 +24629,9 @@ function PropRow({
|
|
|
24671
24629
|
activeField
|
|
24672
24630
|
}
|
|
24673
24631
|
),
|
|
24674
|
-
/* @__PURE__ */
|
|
24632
|
+
/* @__PURE__ */ jsx27(InlinePropField, { label: "type:", focused: activeField === "type", children: editingField && activeField === "type" ? /* @__PURE__ */ jsx27(Picker, { value: prop.type, active: true }) : /* @__PURE__ */ jsx27(Text23, { children: prop.type }) })
|
|
24675
24633
|
] }),
|
|
24676
|
-
prop.type === "token" && /* @__PURE__ */
|
|
24634
|
+
prop.type === "token" && /* @__PURE__ */ jsx27(InlinePropField, { label: "kind:", focused: activeField === "tokenKind", width, children: editingField && activeField === "tokenKind" ? /* @__PURE__ */ jsx27(Picker, { value: prop.tokenKind || DESIGN_TOKEN_TYPES2[0], active: true }) : /* @__PURE__ */ jsx27(Text23, { wrap: "wrap", children: prop.tokenKind || "\u2014" }) }),
|
|
24677
24635
|
prop.type === "enum" && /* @__PURE__ */ jsxs22(Box21, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
24678
24636
|
/* @__PURE__ */ jsxs22(Text23, { color: activeField === "values" ? PALETTE.warning : PALETTE.muted, bold: activeField === "values", children: [
|
|
24679
24637
|
activeField === "values" ? "\u203A " : " ",
|
|
@@ -24685,7 +24643,7 @@ function PropRow({
|
|
|
24685
24643
|
"]"
|
|
24686
24644
|
] })
|
|
24687
24645
|
] }),
|
|
24688
|
-
/* @__PURE__ */
|
|
24646
|
+
/* @__PURE__ */ jsx27(
|
|
24689
24647
|
DefaultSubRow,
|
|
24690
24648
|
{
|
|
24691
24649
|
prop,
|
|
@@ -24700,7 +24658,7 @@ function PropRow({
|
|
|
24700
24658
|
activeField === "allowed" ? "\u203A " : " ",
|
|
24701
24659
|
"allowed:"
|
|
24702
24660
|
] }),
|
|
24703
|
-
editingField && activeField === "allowed" ? /* @__PURE__ */
|
|
24661
|
+
editingField && activeField === "allowed" ? /* @__PURE__ */ jsx27(Box21, { width: Math.max(1, width - 4), borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: /* @__PURE__ */ jsx27(Text23, { children: "press [t] to edit allowed tokens" }) }) : /* @__PURE__ */ jsx27(
|
|
24704
24662
|
Text23,
|
|
24705
24663
|
{
|
|
24706
24664
|
color: activeField !== "allowed" && prop.allowed.length === 0 ? PALETTE.muted : void 0,
|
|
@@ -24709,17 +24667,17 @@ function PropRow({
|
|
|
24709
24667
|
}
|
|
24710
24668
|
)
|
|
24711
24669
|
] }),
|
|
24712
|
-
selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */
|
|
24670
|
+
selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx27(Box21, { paddingLeft: 2, children: /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: (() => {
|
|
24713
24671
|
const max = Math.max(8, width - 8);
|
|
24714
24672
|
const text = `~ ${rationale}`;
|
|
24715
24673
|
return text.length > max ? text.slice(0, max - 1) + "\u2026" : text;
|
|
24716
24674
|
})() }) }, rowKey ? `rationale-${rowKey}` : void 0),
|
|
24717
24675
|
selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs22(Box21, { paddingLeft: 2, flexDirection: "column", children: [
|
|
24718
24676
|
/* @__PURE__ */ jsxs22(Box21, { children: [
|
|
24719
|
-
/* @__PURE__ */
|
|
24720
|
-
activeField === "values" && /* @__PURE__ */
|
|
24677
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "values:" }),
|
|
24678
|
+
activeField === "values" && /* @__PURE__ */ jsx27(Text23, { children: " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
|
|
24721
24679
|
] }),
|
|
24722
|
-
/* @__PURE__ */
|
|
24680
|
+
/* @__PURE__ */ jsx27(
|
|
24723
24681
|
EditableValueList,
|
|
24724
24682
|
{
|
|
24725
24683
|
values: prop.values,
|
|
@@ -24750,8 +24708,8 @@ function SlotRow({
|
|
|
24750
24708
|
pickerCursor
|
|
24751
24709
|
}) {
|
|
24752
24710
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
24753
|
-
/* @__PURE__ */
|
|
24754
|
-
/* @__PURE__ */
|
|
24711
|
+
/* @__PURE__ */ jsx27(Box21, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx27(RowLabel, { name: slot.name, selected, trailing: false }) }),
|
|
24712
|
+
/* @__PURE__ */ jsx27(
|
|
24755
24713
|
DescriptionField,
|
|
24756
24714
|
{
|
|
24757
24715
|
value: slot.description,
|
|
@@ -24764,7 +24722,7 @@ function SlotRow({
|
|
|
24764
24722
|
paddingLeft: 0
|
|
24765
24723
|
}
|
|
24766
24724
|
),
|
|
24767
|
-
/* @__PURE__ */
|
|
24725
|
+
/* @__PURE__ */ jsx27(Box21, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx27(
|
|
24768
24726
|
RequiredField,
|
|
24769
24727
|
{
|
|
24770
24728
|
value: slot.required,
|
|
@@ -24785,7 +24743,7 @@ function SlotRow({
|
|
|
24785
24743
|
]
|
|
24786
24744
|
}
|
|
24787
24745
|
),
|
|
24788
|
-
slot.allowedComponents.length === 0 ? /* @__PURE__ */
|
|
24746
|
+
slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "(any)" }) : /* @__PURE__ */ jsx27(Text23, { wrap: "wrap", children: slot.allowedComponents.join(", ") })
|
|
24789
24747
|
] }),
|
|
24790
24748
|
selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", children: [
|
|
24791
24749
|
/* @__PURE__ */ jsxs22(Box21, { children: [
|
|
@@ -24800,9 +24758,9 @@ function SlotRow({
|
|
|
24800
24758
|
]
|
|
24801
24759
|
}
|
|
24802
24760
|
),
|
|
24803
|
-
editingField && activeField === "allowedComponents" && /* @__PURE__ */
|
|
24761
|
+
editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsx27(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" })
|
|
24804
24762
|
] }),
|
|
24805
|
-
/* @__PURE__ */
|
|
24763
|
+
/* @__PURE__ */ jsx27(
|
|
24806
24764
|
EditableValueList,
|
|
24807
24765
|
{
|
|
24808
24766
|
values: slot.allowedComponents,
|
|
@@ -24816,21 +24774,21 @@ function SlotRow({
|
|
|
24816
24774
|
showAddInput: editingField && activeField === "allowedComponents"
|
|
24817
24775
|
}
|
|
24818
24776
|
),
|
|
24819
|
-
editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */
|
|
24777
|
+
editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */ jsx27(Box21, { paddingLeft: 2, flexDirection: "column", children: pickerCandidates.length === 0 ? /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "(no valid components to add \u2014 all remaining candidates would create cycles)" }) : (() => {
|
|
24820
24778
|
const filtered = valueText.length === 0 ? pickerCandidates : pickerCandidates.filter((n) => n.toLowerCase().includes(valueText.toLowerCase()));
|
|
24821
24779
|
if (filtered.length === 0) {
|
|
24822
|
-
return /* @__PURE__ */
|
|
24780
|
+
return /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "(no candidates match \u2014 Enter to add as free text)" });
|
|
24823
24781
|
}
|
|
24824
24782
|
const cursor = pickerCursor % filtered.length;
|
|
24825
24783
|
const MAX_VISIBLE = 5;
|
|
24826
24784
|
const start = Math.max(0, Math.min(filtered.length - MAX_VISIBLE, cursor - 2));
|
|
24827
24785
|
const slice = filtered.slice(start, start + MAX_VISIBLE);
|
|
24828
24786
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", children: [
|
|
24829
|
-
/* @__PURE__ */
|
|
24787
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
|
|
24830
24788
|
slice.map((name, i) => {
|
|
24831
24789
|
const absIdx = start + i;
|
|
24832
24790
|
const isCursor = absIdx === cursor;
|
|
24833
|
-
return /* @__PURE__ */
|
|
24791
|
+
return /* @__PURE__ */ jsx27(Text23, { color: isCursor ? PALETTE.accent : PALETTE.muted, children: isCursor ? ` ${figures5.pointer} ${name}` : ` ${name}` }, name);
|
|
24834
24792
|
})
|
|
24835
24793
|
] });
|
|
24836
24794
|
})() })
|
|
@@ -24955,9 +24913,9 @@ function FieldEditor({
|
|
|
24955
24913
|
const [editorState, setEditorState] = useState15(initialState);
|
|
24956
24914
|
const [parseErr] = useState15(parseError);
|
|
24957
24915
|
const [listScrollStart, setListScrollStart] = useState15(0);
|
|
24958
|
-
const initialFocusScrollApplied =
|
|
24916
|
+
const initialFocusScrollApplied = React8.useRef(false);
|
|
24959
24917
|
const [rowHeights, setRowHeights] = useState15({});
|
|
24960
|
-
const rowMeasureRefs =
|
|
24918
|
+
const rowMeasureRefs = React8.useRef(/* @__PURE__ */ new Map());
|
|
24961
24919
|
const initialFocus = (() => {
|
|
24962
24920
|
if (initialFocusTarget?.kind === "description") {
|
|
24963
24921
|
return {
|
|
@@ -25044,23 +25002,23 @@ function FieldEditor({
|
|
|
25044
25002
|
const [showHelp, setShowHelp] = useState15(false);
|
|
25045
25003
|
const props = editorState.props;
|
|
25046
25004
|
const slots = editorState.slots;
|
|
25047
|
-
const contentPropIndexes =
|
|
25005
|
+
const contentPropIndexes = React8.useMemo(
|
|
25048
25006
|
() => props.flatMap((prop, index) => prop.category === "content" ? [index] : []),
|
|
25049
25007
|
[props]
|
|
25050
25008
|
);
|
|
25051
|
-
const designPropIndexes =
|
|
25009
|
+
const designPropIndexes = React8.useMemo(
|
|
25052
25010
|
() => props.flatMap((prop, index) => prop.category === "design" ? [index] : []),
|
|
25053
25011
|
[props]
|
|
25054
25012
|
);
|
|
25055
|
-
const hiddenPropIndexes =
|
|
25013
|
+
const hiddenPropIndexes = React8.useMemo(
|
|
25056
25014
|
() => showHiddenProps ? props.flatMap((prop, index) => prop.category === "state" || prop.category === "unattached" ? [index] : []) : [],
|
|
25057
25015
|
[props, showHiddenProps]
|
|
25058
25016
|
);
|
|
25059
|
-
const visiblePropIndexes =
|
|
25017
|
+
const visiblePropIndexes = React8.useMemo(
|
|
25060
25018
|
() => [...contentPropIndexes, ...designPropIndexes, ...hiddenPropIndexes],
|
|
25061
25019
|
[contentPropIndexes, designPropIndexes, hiddenPropIndexes]
|
|
25062
25020
|
);
|
|
25063
|
-
const propGroups =
|
|
25021
|
+
const propGroups = React8.useMemo(
|
|
25064
25022
|
() => [
|
|
25065
25023
|
{
|
|
25066
25024
|
kind: "content",
|
|
@@ -25080,7 +25038,7 @@ function FieldEditor({
|
|
|
25080
25038
|
],
|
|
25081
25039
|
[contentPropIndexes, designPropIndexes, hiddenPropIndexes]
|
|
25082
25040
|
);
|
|
25083
|
-
const selectableRows =
|
|
25041
|
+
const selectableRows = React8.useMemo(
|
|
25084
25042
|
() => [
|
|
25085
25043
|
...contentPropIndexes.map((idx) => ({ kind: "prop", idx })),
|
|
25086
25044
|
...designPropIndexes.map((idx) => ({ kind: "prop", idx })),
|
|
@@ -25090,7 +25048,7 @@ function FieldEditor({
|
|
|
25090
25048
|
[contentPropIndexes, designPropIndexes, hiddenPropIndexes, slots]
|
|
25091
25049
|
);
|
|
25092
25050
|
const visiblePropPosition = visiblePropIndexes.indexOf(propIdx);
|
|
25093
|
-
const selectedSelectableIndex =
|
|
25051
|
+
const selectedSelectableIndex = React8.useMemo(
|
|
25094
25052
|
() => selectableRows.findIndex(
|
|
25095
25053
|
(row) => inSlots ? row.kind === "slot" && row.idx === slotIdx : row.kind === "prop" && row.idx === propIdx
|
|
25096
25054
|
),
|
|
@@ -25109,12 +25067,12 @@ function FieldEditor({
|
|
|
25109
25067
|
}
|
|
25110
25068
|
};
|
|
25111
25069
|
const textEntryActive = focusLevel === "field" && editingField && activeField === "description" || focusLevel === "field" && editingField && activeField === "default" && (editorState.props[propIdx]?.type === "string" || editorState.props[propIdx]?.type === "token") || editingValue != null;
|
|
25112
|
-
|
|
25070
|
+
React8.useEffect(() => {
|
|
25113
25071
|
onTextEntryActiveChange?.(textEntryActive);
|
|
25114
25072
|
}, [textEntryActive, onTextEntryActiveChange]);
|
|
25115
25073
|
const currentProp = props[propIdx] ?? null;
|
|
25116
25074
|
const currentSlot = slots[slotIdx] ?? null;
|
|
25117
|
-
|
|
25075
|
+
React8.useEffect(() => {
|
|
25118
25076
|
if (showHiddenProps || inSlots || inComponentDesc || visiblePropPosition >= 0) return;
|
|
25119
25077
|
if (visiblePropIndexes.length > 0) {
|
|
25120
25078
|
setPropIdx(visiblePropIndexes[0]);
|
|
@@ -25133,22 +25091,22 @@ function FieldEditor({
|
|
|
25133
25091
|
setEditorState(next);
|
|
25134
25092
|
onChange(serializeState(next, value));
|
|
25135
25093
|
};
|
|
25136
|
-
const canonicalize =
|
|
25094
|
+
const canonicalize = React8.useCallback((json) => {
|
|
25137
25095
|
try {
|
|
25138
25096
|
return JSON.stringify(JSON.parse(json));
|
|
25139
25097
|
} catch {
|
|
25140
25098
|
return `__unparseable__:${json}`;
|
|
25141
25099
|
}
|
|
25142
25100
|
}, []);
|
|
25143
|
-
const initialStateRef =
|
|
25101
|
+
const initialStateRef = React8.useRef(initialState);
|
|
25144
25102
|
const baselineCanonical = canonicalize(serializeState(initialStateRef.current, value));
|
|
25145
25103
|
const currentCanonical = canonicalize(serializeState(editorState, value));
|
|
25146
25104
|
const isDirty = currentCanonical !== baselineCanonical;
|
|
25147
|
-
|
|
25105
|
+
React8.useEffect(() => {
|
|
25148
25106
|
onDirtyChange?.(isDirty);
|
|
25149
25107
|
}, [isDirty, onDirtyChange]);
|
|
25150
|
-
const lastDiscardTriggerRef =
|
|
25151
|
-
|
|
25108
|
+
const lastDiscardTriggerRef = React8.useRef(discardTrigger);
|
|
25109
|
+
React8.useEffect(() => {
|
|
25152
25110
|
if (discardTrigger === void 0) return;
|
|
25153
25111
|
if (discardTrigger === lastDiscardTriggerRef.current) return;
|
|
25154
25112
|
lastDiscardTriggerRef.current = discardTrigger;
|
|
@@ -25659,17 +25617,17 @@ function FieldEditor({
|
|
|
25659
25617
|
const innerWidth = Math.max(1, width - 2);
|
|
25660
25618
|
if (parseErr) {
|
|
25661
25619
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
|
|
25662
|
-
/* @__PURE__ */
|
|
25663
|
-
/* @__PURE__ */
|
|
25664
|
-
/* @__PURE__ */
|
|
25620
|
+
/* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
|
|
25621
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.error, children: parseErr }),
|
|
25622
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "Cannot display structured editor. Fix the JSON first." })
|
|
25665
25623
|
] });
|
|
25666
25624
|
}
|
|
25667
25625
|
if (props.length === 0 && slots.length === 0) {
|
|
25668
25626
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
|
|
25669
|
-
/* @__PURE__ */
|
|
25670
|
-
/* @__PURE__ */
|
|
25671
|
-
/* @__PURE__ */
|
|
25672
|
-
/* @__PURE__ */
|
|
25627
|
+
/* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
|
|
25628
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
|
|
25629
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "You can add fields manually below or reject this component." }),
|
|
25630
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "Enter to save \xB7 Esc to discard" })
|
|
25673
25631
|
] });
|
|
25674
25632
|
}
|
|
25675
25633
|
const hasEmptyProperties = props.length === 0 && slots.length === 0;
|
|
@@ -25798,12 +25756,12 @@ function FieldEditor({
|
|
|
25798
25756
|
const renderRow = (row, index) => {
|
|
25799
25757
|
const key = rowKey(row, index);
|
|
25800
25758
|
if (row.kind === "header") {
|
|
25801
|
-
return /* @__PURE__ */
|
|
25759
|
+
return /* @__PURE__ */ jsx27(Box21, { flexDirection: "column", paddingTop: 1, children: /* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE.success, children: row.label }) }, key);
|
|
25802
25760
|
}
|
|
25803
25761
|
if (row.kind === "component-description") {
|
|
25804
25762
|
const isSelected2 = inComponentDesc && active;
|
|
25805
25763
|
const isEditing = isSelected2 && focusLevel === "field" && editingField && activeField === "description";
|
|
25806
|
-
return /* @__PURE__ */
|
|
25764
|
+
return /* @__PURE__ */ jsx27(
|
|
25807
25765
|
DescriptionField,
|
|
25808
25766
|
{
|
|
25809
25767
|
value: editorState.componentDescription,
|
|
@@ -25834,7 +25792,7 @@ function FieldEditor({
|
|
|
25834
25792
|
valueText,
|
|
25835
25793
|
innerWidth
|
|
25836
25794
|
);
|
|
25837
|
-
return /* @__PURE__ */
|
|
25795
|
+
return /* @__PURE__ */ jsx27(
|
|
25838
25796
|
PropRow,
|
|
25839
25797
|
{
|
|
25840
25798
|
prop: p,
|
|
@@ -25861,7 +25819,7 @@ function FieldEditor({
|
|
|
25861
25819
|
valueText,
|
|
25862
25820
|
innerWidth
|
|
25863
25821
|
);
|
|
25864
|
-
return /* @__PURE__ */
|
|
25822
|
+
return /* @__PURE__ */ jsx27(
|
|
25865
25823
|
SlotRow,
|
|
25866
25824
|
{
|
|
25867
25825
|
slot: s,
|
|
@@ -25882,9 +25840,9 @@ function FieldEditor({
|
|
|
25882
25840
|
borderStyle: "single",
|
|
25883
25841
|
borderColor: hasEmptyProperties ? PALETTE.warning : active ? PALETTE.accent : PALETTE.border,
|
|
25884
25842
|
children: [
|
|
25885
|
-
hasEmptyProperties && /* @__PURE__ */
|
|
25843
|
+
hasEmptyProperties && /* @__PURE__ */ jsx27(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." }),
|
|
25886
25844
|
header,
|
|
25887
|
-
/* @__PURE__ */
|
|
25845
|
+
/* @__PURE__ */ jsx27(Box21, { flexDirection: "column", width: innerWidth, flexShrink: 0, children: focusLevel === "field" && !inComponentDesc && currentProp ? /* @__PURE__ */ jsx27(
|
|
25888
25846
|
PropRow,
|
|
25889
25847
|
{
|
|
25890
25848
|
prop: currentProp,
|
|
@@ -25900,7 +25858,7 @@ function FieldEditor({
|
|
|
25900
25858
|
rationale: metadata?.props?.[currentProp.name]?.rationale ?? null,
|
|
25901
25859
|
showRationale: showInlineRationales
|
|
25902
25860
|
}
|
|
25903
|
-
) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */
|
|
25861
|
+
) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */ jsx27(
|
|
25904
25862
|
SlotRow,
|
|
25905
25863
|
{
|
|
25906
25864
|
slot: currentSlot,
|
|
@@ -25919,7 +25877,7 @@ function FieldEditor({
|
|
|
25919
25877
|
) : visibleRowSlice.map((row, index) => {
|
|
25920
25878
|
const absoluteIndex = scrollStart + index;
|
|
25921
25879
|
const key = rowKey(row, absoluteIndex);
|
|
25922
|
-
return /* @__PURE__ */
|
|
25880
|
+
return /* @__PURE__ */ jsx27(
|
|
25923
25881
|
Box21,
|
|
25924
25882
|
{
|
|
25925
25883
|
ref: (node) => {
|
|
@@ -25933,7 +25891,7 @@ function FieldEditor({
|
|
|
25933
25891
|
`visible-${key}`
|
|
25934
25892
|
);
|
|
25935
25893
|
}) }),
|
|
25936
|
-
categoryBelow && /* @__PURE__ */
|
|
25894
|
+
categoryBelow && /* @__PURE__ */ jsx27(Text23, { color: PALETTE.success, bold: true, children: `(${categoryBelow} below)` }),
|
|
25937
25895
|
sourceOpen && !onToggleSourceExternal && (() => {
|
|
25938
25896
|
const propMeta = !inSlots && !inComponentDesc && currentProp ? metadata?.props?.[currentProp.name] : void 0;
|
|
25939
25897
|
const start = propMeta?.sourceStartLine ?? null;
|
|
@@ -25943,48 +25901,48 @@ function FieldEditor({
|
|
|
25943
25901
|
const headerPath = path5 ?? "<unknown source path>";
|
|
25944
25902
|
if (!start || !end2 || !src) {
|
|
25945
25903
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
|
|
25946
|
-
/* @__PURE__ */
|
|
25947
|
-
/* @__PURE__ */
|
|
25948
|
-
/* @__PURE__ */
|
|
25904
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, bold: true, children: `source: ${headerPath}` }),
|
|
25905
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "(no source location captured for this prop)" }),
|
|
25906
|
+
/* @__PURE__ */ jsx27(Text23, { children: "[s] close" })
|
|
25949
25907
|
] });
|
|
25950
25908
|
}
|
|
25951
25909
|
const lines = src.split("\n").slice(Math.max(0, start - 1), end2);
|
|
25952
25910
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
|
|
25953
|
-
/* @__PURE__ */
|
|
25954
|
-
lines.map((ln, i) => /* @__PURE__ */
|
|
25955
|
-
/* @__PURE__ */
|
|
25911
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, bold: true, children: `${headerPath}: lines ${start}\u2013${end2}` }),
|
|
25912
|
+
lines.map((ln, i) => /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: ln }, `source-line-${i}`)),
|
|
25913
|
+
/* @__PURE__ */ jsx27(Text23, { children: "[s] close \xB7 [Esc] close" })
|
|
25956
25914
|
] });
|
|
25957
25915
|
})(),
|
|
25958
25916
|
showHelp && /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.accent, paddingX: 1, children: [
|
|
25959
|
-
/* @__PURE__ */
|
|
25960
|
-
/* @__PURE__ */
|
|
25961
|
-
/* @__PURE__ */
|
|
25962
|
-
/* @__PURE__ */
|
|
25963
|
-
/* @__PURE__ */
|
|
25964
|
-
/* @__PURE__ */
|
|
25965
|
-
/* @__PURE__ */
|
|
25966
|
-
/* @__PURE__ */
|
|
25967
|
-
/* @__PURE__ */
|
|
25968
|
-
/* @__PURE__ */
|
|
25969
|
-
/* @__PURE__ */
|
|
25970
|
-
/* @__PURE__ */
|
|
25971
|
-
/* @__PURE__ */
|
|
25972
|
-
/* @__PURE__ */
|
|
25973
|
-
/* @__PURE__ */
|
|
25974
|
-
/* @__PURE__ */
|
|
25975
|
-
/* @__PURE__ */
|
|
25976
|
-
/* @__PURE__ */
|
|
25977
|
-
/* @__PURE__ */
|
|
25978
|
-
/* @__PURE__ */
|
|
25979
|
-
/* @__PURE__ */
|
|
25980
|
-
/* @__PURE__ */
|
|
25981
|
-
/* @__PURE__ */
|
|
25982
|
-
/* @__PURE__ */
|
|
25983
|
-
/* @__PURE__ */
|
|
25984
|
-
/* @__PURE__ */
|
|
25917
|
+
/* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE.accent, children: "Keybindings" }),
|
|
25918
|
+
/* @__PURE__ */ jsx27(Text23, { children: " " }),
|
|
25919
|
+
/* @__PURE__ */ jsx27(Text23, { bold: true, children: "Row navigation" }),
|
|
25920
|
+
/* @__PURE__ */ jsx27(Text23, { children: " \u2191/\u2193 move between rows" }),
|
|
25921
|
+
/* @__PURE__ */ jsx27(Text23, { children: " Enter edit fields on the current row" }),
|
|
25922
|
+
/* @__PURE__ */ jsx27(Text23, { children: " Esc exit the panel" }),
|
|
25923
|
+
/* @__PURE__ */ jsx27(Text23, { children: " " }),
|
|
25924
|
+
/* @__PURE__ */ jsx27(Text23, { bold: true, children: "Field editing" }),
|
|
25925
|
+
/* @__PURE__ */ jsx27(Text23, { children: " \u2191/\u2193/\u2190\u2192 cycle through fields" }),
|
|
25926
|
+
/* @__PURE__ */ jsx27(Text23, { children: " \u2190/\u2192 cycle picker values \xB7 move cursor in text inputs" }),
|
|
25927
|
+
/* @__PURE__ */ jsx27(Text23, { children: " Space/Enter toggle required" }),
|
|
25928
|
+
/* @__PURE__ */ jsx27(Text23, { children: " Type edit description / string default" }),
|
|
25929
|
+
/* @__PURE__ */ jsx27(Text23, { children: " Esc exit field-edit back to the row" }),
|
|
25930
|
+
/* @__PURE__ */ jsx27(Text23, { children: " " }),
|
|
25931
|
+
/* @__PURE__ */ jsx27(Text23, { bold: true, children: "Values / allowedComponents" }),
|
|
25932
|
+
/* @__PURE__ */ jsx27(Text23, { children: " a / e / r add \xB7 edit \xB7 remove" }),
|
|
25933
|
+
/* @__PURE__ */ jsx27(Text23, { children: " \u2191\u2193 navigate the list" }),
|
|
25934
|
+
/* @__PURE__ */ jsx27(Text23, { children: " K / J reorder up \xB7 down" }),
|
|
25935
|
+
/* @__PURE__ */ jsx27(Text23, { children: " " }),
|
|
25936
|
+
/* @__PURE__ */ jsx27(Text23, { bold: true, children: "Panels" }),
|
|
25937
|
+
/* @__PURE__ */ jsx27(Text23, { children: " s toggle source-view for the current prop" }),
|
|
25938
|
+
/* @__PURE__ */ jsx27(Text23, { children: " " + propRationaleKey.padEnd(16) + " toggle prop rationale panel" }),
|
|
25939
|
+
/* @__PURE__ */ jsx27(Text23, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
|
|
25940
|
+
/* @__PURE__ */ jsx27(Text23, { children: " ? toggle this overlay" }),
|
|
25941
|
+
/* @__PURE__ */ jsx27(Text23, { children: " " }),
|
|
25942
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "press ? or Esc to close" })
|
|
25985
25943
|
] }),
|
|
25986
|
-
validationError && /* @__PURE__ */
|
|
25987
|
-
/* @__PURE__ */
|
|
25944
|
+
validationError && /* @__PURE__ */ jsx27(Text23, { color: PALETTE.error, children: "\u2717 " + validationError }),
|
|
25945
|
+
/* @__PURE__ */ jsx27(Box21, { paddingTop: 1, children: /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: modeLabel }) })
|
|
25988
25946
|
]
|
|
25989
25947
|
}
|
|
25990
25948
|
);
|
|
@@ -26042,22 +26000,22 @@ var init_wrap_text = __esm({
|
|
|
26042
26000
|
|
|
26043
26001
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationaleLine.tsx
|
|
26044
26002
|
import { Box as Box22, Text as Text24 } from "ink";
|
|
26045
|
-
import { jsx as
|
|
26003
|
+
import { jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
26046
26004
|
function RationaleLine({ line, active }) {
|
|
26047
26005
|
if (line.kind === "blank") {
|
|
26048
|
-
return /* @__PURE__ */
|
|
26006
|
+
return /* @__PURE__ */ jsx28(Box22, { children: /* @__PURE__ */ jsx28(Text24, { children: " " }) });
|
|
26049
26007
|
}
|
|
26050
26008
|
if (line.kind === "heading") {
|
|
26051
|
-
return /* @__PURE__ */
|
|
26009
|
+
return /* @__PURE__ */ jsx28(Box22, { children: /* @__PURE__ */ jsx28(Text24, { bold: true, color: active ? PALETTE.accent : PALETTE.muted, children: line.text }) });
|
|
26052
26010
|
}
|
|
26053
26011
|
if (line.kind === "label") {
|
|
26054
26012
|
return /* @__PURE__ */ jsxs23(Box22, { children: [
|
|
26055
|
-
line.prefix && /* @__PURE__ */
|
|
26056
|
-
/* @__PURE__ */
|
|
26057
|
-
line.suffix && /* @__PURE__ */
|
|
26013
|
+
line.prefix && /* @__PURE__ */ jsx28(Text24, { children: line.prefix }),
|
|
26014
|
+
/* @__PURE__ */ jsx28(Text24, { bold: true, color: active ? line.color : PALETTE.muted, children: line.text }),
|
|
26015
|
+
line.suffix && /* @__PURE__ */ jsx28(Text24, { color: PALETTE.muted, children: line.suffix })
|
|
26058
26016
|
] });
|
|
26059
26017
|
}
|
|
26060
|
-
return /* @__PURE__ */
|
|
26018
|
+
return /* @__PURE__ */ jsx28(Box22, { children: /* @__PURE__ */ jsx28(Text24, { color: !active || line.dim ? PALETTE.muted : void 0, children: line.text }) });
|
|
26061
26019
|
}
|
|
26062
26020
|
var init_RationaleLine = __esm({
|
|
26063
26021
|
"packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationaleLine.tsx"() {
|
|
@@ -26068,7 +26026,7 @@ var init_RationaleLine = __esm({
|
|
|
26068
26026
|
|
|
26069
26027
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ComponentRationalePanel.tsx
|
|
26070
26028
|
import { Box as Box23, Text as Text25 } from "ink";
|
|
26071
|
-
import { jsx as
|
|
26029
|
+
import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
26072
26030
|
function renderComponentRationaleLines(data, innerWidth) {
|
|
26073
26031
|
const out = [];
|
|
26074
26032
|
const pushSection = (heading, body) => {
|
|
@@ -26144,9 +26102,9 @@ function ComponentRationalePanel({
|
|
|
26144
26102
|
borderStyle: "single",
|
|
26145
26103
|
borderColor: active ? PALETTE.text : void 0,
|
|
26146
26104
|
children: [
|
|
26147
|
-
/* @__PURE__ */
|
|
26148
|
-
visible.map((line, i) => /* @__PURE__ */
|
|
26149
|
-
/* @__PURE__ */
|
|
26105
|
+
/* @__PURE__ */ jsx29(Box23, { children: /* @__PURE__ */ jsx29(Text25, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Component rationale: ${data.name}` }) }),
|
|
26106
|
+
visible.map((line, i) => /* @__PURE__ */ jsx29(RationaleLine, { line, active }, i)),
|
|
26107
|
+
/* @__PURE__ */ jsx29(Box23, { children: overflowed ? /* @__PURE__ */ jsx29(Text25, { children: `${visibleStart}-${visibleEnd}/${totalLines} [\u2191\u2193] scroll [I/Esc] close` }) : /* @__PURE__ */ jsx29(Text25, { children: "[I/Esc] close" }) })
|
|
26150
26108
|
]
|
|
26151
26109
|
}
|
|
26152
26110
|
);
|
|
@@ -26164,9 +26122,9 @@ var init_ComponentRationalePanel = __esm({
|
|
|
26164
26122
|
|
|
26165
26123
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/HighlightedLine.tsx
|
|
26166
26124
|
import { Text as Text26 } from "ink";
|
|
26167
|
-
import { Fragment as Fragment6, jsx as
|
|
26125
|
+
import { Fragment as Fragment6, jsx as jsx30 } from "react/jsx-runtime";
|
|
26168
26126
|
function HighlightedLine({ parts }) {
|
|
26169
|
-
return /* @__PURE__ */
|
|
26127
|
+
return /* @__PURE__ */ jsx30(Fragment6, { children: parts.map((part, i) => /* @__PURE__ */ jsx30(Text26, { color: part.dim ? PALETTE.muted : part.color, children: part.text }, i)) });
|
|
26170
26128
|
}
|
|
26171
26129
|
var init_HighlightedLine = __esm({
|
|
26172
26130
|
"packages/experience-design-system-cli/src/tui/import/steps/09-review/components/HighlightedLine.tsx"() {
|
|
@@ -26177,7 +26135,7 @@ var init_HighlightedLine = __esm({
|
|
|
26177
26135
|
|
|
26178
26136
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ScrollablePanel.tsx
|
|
26179
26137
|
import { Box as Box24, Text as Text27 } from "ink";
|
|
26180
|
-
import { Fragment as Fragment7, jsx as
|
|
26138
|
+
import { Fragment as Fragment7, jsx as jsx31, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
26181
26139
|
function ScrollablePanel({
|
|
26182
26140
|
title,
|
|
26183
26141
|
width,
|
|
@@ -26192,10 +26150,10 @@ function ScrollablePanel({
|
|
|
26192
26150
|
const overflowed = totalLines > height;
|
|
26193
26151
|
return /* @__PURE__ */ jsxs25(Box24, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
|
|
26194
26152
|
/* @__PURE__ */ jsxs25(Box24, { children: [
|
|
26195
|
-
/* @__PURE__ */
|
|
26153
|
+
/* @__PURE__ */ jsx31(Text27, { bold: true, color: active ? void 0 : PALETTE.muted, children: title }),
|
|
26196
26154
|
overflowed && /* @__PURE__ */ jsxs25(Fragment7, { children: [
|
|
26197
|
-
/* @__PURE__ */
|
|
26198
|
-
/* @__PURE__ */
|
|
26155
|
+
/* @__PURE__ */ jsx31(Box24, { flexGrow: 1 }),
|
|
26156
|
+
/* @__PURE__ */ jsx31(Text27, { color: active ? void 0 : PALETTE.muted, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
|
|
26199
26157
|
] })
|
|
26200
26158
|
] }),
|
|
26201
26159
|
children
|
|
@@ -26210,7 +26168,7 @@ var init_ScrollablePanel = __esm({
|
|
|
26210
26168
|
|
|
26211
26169
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/JsonPanel.tsx
|
|
26212
26170
|
import { Box as Box25 } from "ink";
|
|
26213
|
-
import { jsx as
|
|
26171
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
26214
26172
|
function highlightJson(line) {
|
|
26215
26173
|
const parts = [];
|
|
26216
26174
|
let remaining = line;
|
|
@@ -26248,7 +26206,7 @@ function highlightJson(line) {
|
|
|
26248
26206
|
parts.push({ text: remaining[0] });
|
|
26249
26207
|
remaining = remaining.slice(1);
|
|
26250
26208
|
}
|
|
26251
|
-
return /* @__PURE__ */
|
|
26209
|
+
return /* @__PURE__ */ jsx32(HighlightedLine, { parts });
|
|
26252
26210
|
}
|
|
26253
26211
|
function truncateLine(line, maxWidth) {
|
|
26254
26212
|
if (line.length <= maxWidth) return line;
|
|
@@ -26261,7 +26219,7 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
|
|
|
26261
26219
|
const totalLines = allLines.length;
|
|
26262
26220
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
26263
26221
|
const visibleEnd = Math.min(totalLines, scrollOffset + height);
|
|
26264
|
-
return /* @__PURE__ */
|
|
26222
|
+
return /* @__PURE__ */ jsx32(
|
|
26265
26223
|
ScrollablePanel,
|
|
26266
26224
|
{
|
|
26267
26225
|
title: label,
|
|
@@ -26274,7 +26232,7 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
|
|
|
26274
26232
|
borderColor: active ? "white" : void 0,
|
|
26275
26233
|
children: visibleLines.map((line, i) => {
|
|
26276
26234
|
const truncated = truncateLine(line, innerWidth);
|
|
26277
|
-
return /* @__PURE__ */
|
|
26235
|
+
return /* @__PURE__ */ jsx32(Box25, { children: highlightJson(truncated) }, i);
|
|
26278
26236
|
})
|
|
26279
26237
|
}
|
|
26280
26238
|
);
|
|
@@ -26288,7 +26246,7 @@ var init_JsonPanel = __esm({
|
|
|
26288
26246
|
});
|
|
26289
26247
|
|
|
26290
26248
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationalePanel.tsx
|
|
26291
|
-
import { jsx as
|
|
26249
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
26292
26250
|
function renderRationaleLines(rows, innerWidth) {
|
|
26293
26251
|
const out = [];
|
|
26294
26252
|
rows.forEach((row, idx) => {
|
|
@@ -26321,7 +26279,7 @@ function RationalePanel({
|
|
|
26321
26279
|
const visible = allLines.slice(scrollOffset, scrollOffset + height);
|
|
26322
26280
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
26323
26281
|
const visibleEnd = Math.min(totalLines, scrollOffset + height);
|
|
26324
|
-
return /* @__PURE__ */
|
|
26282
|
+
return /* @__PURE__ */ jsx33(
|
|
26325
26283
|
ScrollablePanel,
|
|
26326
26284
|
{
|
|
26327
26285
|
title: `RATIONALE \u2014 ${componentName}`,
|
|
@@ -26332,7 +26290,7 @@ function RationalePanel({
|
|
|
26332
26290
|
visibleStart,
|
|
26333
26291
|
visibleEnd,
|
|
26334
26292
|
borderColor: active ? PALETTE.text : void 0,
|
|
26335
|
-
children: visible.map((line, i) => /* @__PURE__ */
|
|
26293
|
+
children: visible.map((line, i) => /* @__PURE__ */ jsx33(RationaleLine, { line, active }, i))
|
|
26336
26294
|
}
|
|
26337
26295
|
);
|
|
26338
26296
|
}
|
|
@@ -26349,7 +26307,7 @@ var init_RationalePanel = __esm({
|
|
|
26349
26307
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/TokenReviewPanel.tsx
|
|
26350
26308
|
import figures6 from "figures";
|
|
26351
26309
|
import { Box as Box26, Text as Text28 } from "ink";
|
|
26352
|
-
import { jsx as
|
|
26310
|
+
import { jsx as jsx34, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
26353
26311
|
function TokenReviewPanel({
|
|
26354
26312
|
componentName,
|
|
26355
26313
|
suggestions,
|
|
@@ -26377,15 +26335,15 @@ function TokenReviewPanel({
|
|
|
26377
26335
|
borderStyle: "single",
|
|
26378
26336
|
borderColor: active ? PALETTE.text : void 0,
|
|
26379
26337
|
children: [
|
|
26380
|
-
/* @__PURE__ */
|
|
26381
|
-
/* @__PURE__ */
|
|
26382
|
-
/* @__PURE__ */
|
|
26383
|
-
current.paths.length === 0 && /* @__PURE__ */
|
|
26338
|
+
/* @__PURE__ */ jsx34(Text28, { bold: true, color: active ? void 0 : PALETTE.muted, wrap: "truncate", children: `TOKEN REVIEW \u2014 ${componentName} \xB7 ${current.propName} (edit allowed)` }),
|
|
26339
|
+
/* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, wrap: "truncate", children: `select which tokens are allowed (${rangeLabel})` }),
|
|
26340
|
+
/* @__PURE__ */ jsx34(Text28, { children: " " }),
|
|
26341
|
+
current.paths.length === 0 && /* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, children: "(no compatible tokens found for this token kind)" }),
|
|
26384
26342
|
visiblePaths.map((path5, i) => {
|
|
26385
26343
|
const pathIndex = scrollStart + i;
|
|
26386
26344
|
const checked = editSelection.has(path5);
|
|
26387
26345
|
const focused = pathIndex === editCursor;
|
|
26388
|
-
return /* @__PURE__ */
|
|
26346
|
+
return /* @__PURE__ */ jsx34(Box26, { children: /* @__PURE__ */ jsx34(
|
|
26389
26347
|
Text28,
|
|
26390
26348
|
{
|
|
26391
26349
|
color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted,
|
|
@@ -26395,9 +26353,9 @@ function TokenReviewPanel({
|
|
|
26395
26353
|
}
|
|
26396
26354
|
) }, path5);
|
|
26397
26355
|
}),
|
|
26398
|
-
/* @__PURE__ */
|
|
26399
|
-
/* @__PURE__ */
|
|
26400
|
-
/* @__PURE__ */
|
|
26356
|
+
/* @__PURE__ */ jsx34(Text28, { children: " " }),
|
|
26357
|
+
/* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
|
|
26358
|
+
/* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
|
|
26401
26359
|
]
|
|
26402
26360
|
}
|
|
26403
26361
|
);
|
|
@@ -26411,18 +26369,18 @@ function TokenReviewPanel({
|
|
|
26411
26369
|
borderStyle: "single",
|
|
26412
26370
|
borderColor: active ? PALETTE.text : void 0,
|
|
26413
26371
|
children: [
|
|
26414
|
-
/* @__PURE__ */
|
|
26415
|
-
suggestions.length === 0 && /* @__PURE__ */
|
|
26372
|
+
/* @__PURE__ */ jsx34(Text28, { bold: true, color: active ? void 0 : PALETTE.muted, children: `TOKEN REVIEW \u2014 ${componentName}` }),
|
|
26373
|
+
suggestions.length === 0 && /* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, children: "(no token suggestions for this component)" }),
|
|
26416
26374
|
suggestions.map((s, i) => {
|
|
26417
26375
|
const focused = i === selectedRow;
|
|
26418
26376
|
return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", children: [
|
|
26419
|
-
/* @__PURE__ */
|
|
26420
|
-
/* @__PURE__ */
|
|
26421
|
-
/* @__PURE__ */
|
|
26377
|
+
/* @__PURE__ */ jsx34(Box26, { children: /* @__PURE__ */ jsx34(Text28, { color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted, bold: focused, children: `${focused ? figures6.pointer : " "} ${s.propName}` }) }),
|
|
26378
|
+
/* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, children: ` suggested: ${s.suggested.join(", ")}` }),
|
|
26379
|
+
/* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, children: ` allowed: ${s.allowed.join(", ")}` })
|
|
26422
26380
|
] }, s.propName);
|
|
26423
26381
|
}),
|
|
26424
|
-
/* @__PURE__ */
|
|
26425
|
-
/* @__PURE__ */
|
|
26382
|
+
/* @__PURE__ */ jsx34(Text28, { children: " " }),
|
|
26383
|
+
/* @__PURE__ */ jsx34(Text28, { children: "[\u2191/\u2193] move [Enter] edit allowed [Esc] close" })
|
|
26426
26384
|
]
|
|
26427
26385
|
}
|
|
26428
26386
|
);
|
|
@@ -26436,7 +26394,7 @@ var init_TokenReviewPanel = __esm({
|
|
|
26436
26394
|
|
|
26437
26395
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx
|
|
26438
26396
|
import { Text as Text29 } from "ink";
|
|
26439
|
-
import { Fragment as Fragment8, jsx as
|
|
26397
|
+
import { Fragment as Fragment8, jsx as jsx35, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
26440
26398
|
function ReviewDetailsPanel({
|
|
26441
26399
|
selectedKey,
|
|
26442
26400
|
panelOpen,
|
|
@@ -26471,7 +26429,7 @@ function ReviewDetailsPanel({
|
|
|
26471
26429
|
rationale: s.rationale ?? ""
|
|
26472
26430
|
}))
|
|
26473
26431
|
];
|
|
26474
|
-
return /* @__PURE__ */
|
|
26432
|
+
return /* @__PURE__ */ jsx35(
|
|
26475
26433
|
RationalePanel,
|
|
26476
26434
|
{
|
|
26477
26435
|
componentName: componentRationale?.name ?? selectedKey,
|
|
@@ -26484,7 +26442,7 @@ function ReviewDetailsPanel({
|
|
|
26484
26442
|
);
|
|
26485
26443
|
}
|
|
26486
26444
|
if (panelOpen === "component-rationale") {
|
|
26487
|
-
return /* @__PURE__ */
|
|
26445
|
+
return /* @__PURE__ */ jsx35(
|
|
26488
26446
|
ComponentRationalePanel,
|
|
26489
26447
|
{
|
|
26490
26448
|
data: componentRationale ?? {
|
|
@@ -26510,13 +26468,13 @@ function ReviewDetailsPanel({
|
|
|
26510
26468
|
const sourceLineCount = Math.max(1, height - 4);
|
|
26511
26469
|
const lines = source ? source.split("\n").slice(panelScrollOffset, panelScrollOffset + sourceLineCount) : [];
|
|
26512
26470
|
return /* @__PURE__ */ jsxs27(FixedPanel, { width, height, borderStyle: "single", borderColor: sourceBorderColor, paddingLeft: 1, children: [
|
|
26513
|
-
/* @__PURE__ */
|
|
26514
|
-
source ? lines.map((line, index) => /* @__PURE__ */
|
|
26515
|
-
/* @__PURE__ */
|
|
26471
|
+
/* @__PURE__ */ jsx35(Text29, { color: PALETTE.muted, bold: true, wrap: "truncate-end", children: `source: ${headerPath}` }),
|
|
26472
|
+
source ? lines.map((line, index) => /* @__PURE__ */ jsx35(Text29, { color: PALETTE.muted, wrap: "truncate-end", children: line }, `source-line-${index}`)) : /* @__PURE__ */ jsx35(Text29, { color: PALETTE.muted, children: "(no source captured)" }),
|
|
26473
|
+
/* @__PURE__ */ jsx35(Text29, { color: PALETTE.muted, wrap: "truncate-end", children: "[s/Esc] close" })
|
|
26516
26474
|
] });
|
|
26517
26475
|
}
|
|
26518
26476
|
if (panelOpen === "token-review") {
|
|
26519
|
-
return /* @__PURE__ */
|
|
26477
|
+
return /* @__PURE__ */ jsx35(
|
|
26520
26478
|
TokenReviewPanel,
|
|
26521
26479
|
{
|
|
26522
26480
|
componentName: selectedKey,
|
|
@@ -26532,7 +26490,7 @@ function ReviewDetailsPanel({
|
|
|
26532
26490
|
);
|
|
26533
26491
|
}
|
|
26534
26492
|
if (showJson) {
|
|
26535
|
-
return /* @__PURE__ */
|
|
26493
|
+
return /* @__PURE__ */ jsx35(
|
|
26536
26494
|
JsonPanel,
|
|
26537
26495
|
{
|
|
26538
26496
|
label: "GENERATED DEFINITION (read-only)",
|
|
@@ -26544,7 +26502,7 @@ function ReviewDetailsPanel({
|
|
|
26544
26502
|
}
|
|
26545
26503
|
);
|
|
26546
26504
|
}
|
|
26547
|
-
return /* @__PURE__ */
|
|
26505
|
+
return /* @__PURE__ */ jsx35(Fragment8, { children: editor });
|
|
26548
26506
|
}
|
|
26549
26507
|
var init_review_details_panel = __esm({
|
|
26550
26508
|
"packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx"() {
|
|
@@ -26559,7 +26517,7 @@ var init_review_details_panel = __esm({
|
|
|
26559
26517
|
});
|
|
26560
26518
|
|
|
26561
26519
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDetailsEditor.tsx
|
|
26562
|
-
import { jsx as
|
|
26520
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
26563
26521
|
import { createElement } from "react";
|
|
26564
26522
|
function toFieldEditorMetadata(reviewMetadata) {
|
|
26565
26523
|
if (!reviewMetadata) return void 0;
|
|
@@ -26593,7 +26551,7 @@ function ReviewDetailsEditor({
|
|
|
26593
26551
|
jsonScrollOffset,
|
|
26594
26552
|
currentTokenSuggestions
|
|
26595
26553
|
} = reviewEditor;
|
|
26596
|
-
return /* @__PURE__ */
|
|
26554
|
+
return /* @__PURE__ */ jsx36(
|
|
26597
26555
|
ReviewDetailsPanel,
|
|
26598
26556
|
{
|
|
26599
26557
|
selectedKey,
|
|
@@ -26641,7 +26599,7 @@ var init_ReviewDetailsEditor = __esm({
|
|
|
26641
26599
|
|
|
26642
26600
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewComponentPanel.tsx
|
|
26643
26601
|
import { Box as Box27, Text as Text30 } from "ink";
|
|
26644
|
-
import { Fragment as Fragment9, jsx as
|
|
26602
|
+
import { Fragment as Fragment9, jsx as jsx37, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
26645
26603
|
function buildReviewFieldEditor(reviewEditor, selectedJson, onExit, overrides = {}) {
|
|
26646
26604
|
return {
|
|
26647
26605
|
value: reviewEditor.draftValue || selectedJson,
|
|
@@ -26681,17 +26639,17 @@ function ReviewEmptyComponentsWarning({
|
|
|
26681
26639
|
hidden
|
|
26682
26640
|
}) {
|
|
26683
26641
|
if (hidden || count === 0) return null;
|
|
26684
|
-
return /* @__PURE__ */
|
|
26642
|
+
return /* @__PURE__ */ jsx37(Text30, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
|
|
26685
26643
|
}
|
|
26686
26644
|
function ReviewNoSelection() {
|
|
26687
|
-
return /* @__PURE__ */
|
|
26645
|
+
return /* @__PURE__ */ jsx37(Box27, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx37(Text30, { color: PALETTE.muted, children: "No component selected" }) });
|
|
26688
26646
|
}
|
|
26689
26647
|
function ReviewFinalizeError({
|
|
26690
26648
|
message,
|
|
26691
26649
|
hidden
|
|
26692
26650
|
}) {
|
|
26693
26651
|
if (hidden || !message) return null;
|
|
26694
|
-
return /* @__PURE__ */
|
|
26652
|
+
return /* @__PURE__ */ jsx37(Text30, { color: PALETTE.error, children: `\u26A0 ${message}` });
|
|
26695
26653
|
}
|
|
26696
26654
|
function ReviewPanelFooter({
|
|
26697
26655
|
reviewEditor,
|
|
@@ -26702,8 +26660,8 @@ function ReviewPanelFooter({
|
|
|
26702
26660
|
}) {
|
|
26703
26661
|
return /* @__PURE__ */ jsxs28(Fragment9, { children: [
|
|
26704
26662
|
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" : ""),
|
|
26705
|
-
livePreview.status === "running" && /* @__PURE__ */
|
|
26706
|
-
livePreview.disabled && /* @__PURE__ */
|
|
26663
|
+
livePreview.status === "running" && /* @__PURE__ */ jsx37(Text30, { children: ` ${livePreviewSpinner} live preview` }),
|
|
26664
|
+
livePreview.disabled && /* @__PURE__ */ jsx37(Text30, { children: " \xB7 live preview disabled" })
|
|
26707
26665
|
] });
|
|
26708
26666
|
}
|
|
26709
26667
|
function ReviewComponentTitle({
|
|
@@ -26713,8 +26671,8 @@ function ReviewComponentTitle({
|
|
|
26713
26671
|
sidebarFocused
|
|
26714
26672
|
}) {
|
|
26715
26673
|
return /* @__PURE__ */ jsxs28(Box27, { paddingLeft: 2, paddingBottom: 1, children: [
|
|
26716
|
-
/* @__PURE__ */
|
|
26717
|
-
/* @__PURE__ */
|
|
26674
|
+
/* @__PURE__ */ jsx37(Text30, { bold: true, wrap: "truncate-end", children: selectedKey }),
|
|
26675
|
+
/* @__PURE__ */ jsx37(Box27, { flexGrow: 1 }),
|
|
26718
26676
|
/* @__PURE__ */ jsxs28(Text30, { color: PALETTE.muted, wrap: "truncate-end", children: [
|
|
26719
26677
|
propCount,
|
|
26720
26678
|
" prop",
|
|
@@ -26746,8 +26704,8 @@ function ReviewComponentPanel({
|
|
|
26746
26704
|
const slotCount = selectedEntry.$slots ? Object.keys(selectedEntry.$slots).length : 0;
|
|
26747
26705
|
const contentHeight = Math.max(1, height - 2);
|
|
26748
26706
|
const contentWidth = Math.max(1, width - 1);
|
|
26749
|
-
return /* @__PURE__ */
|
|
26750
|
-
/* @__PURE__ */
|
|
26707
|
+
return /* @__PURE__ */ jsx37(FixedPanel, { width, height, borderStyle: void 0, paddingLeft: 1, children: /* @__PURE__ */ jsxs28(Box27, { flexDirection: "column", width: contentWidth, height, flexShrink: 0, overflowY: "hidden", children: [
|
|
26708
|
+
/* @__PURE__ */ jsx37(Box27, { width: contentWidth, height: contentHeight, flexShrink: 0, overflowY: "hidden", children: /* @__PURE__ */ jsx37(
|
|
26751
26709
|
ReviewDetailsEditor,
|
|
26752
26710
|
{
|
|
26753
26711
|
selectedKey,
|
|
@@ -26760,7 +26718,7 @@ function ReviewComponentPanel({
|
|
|
26760
26718
|
jsonValue,
|
|
26761
26719
|
sidebarFocused,
|
|
26762
26720
|
fieldEditor,
|
|
26763
|
-
header: /* @__PURE__ */
|
|
26721
|
+
header: /* @__PURE__ */ jsx37(
|
|
26764
26722
|
ReviewComponentTitle,
|
|
26765
26723
|
{
|
|
26766
26724
|
selectedKey,
|
|
@@ -26771,8 +26729,8 @@ function ReviewComponentPanel({
|
|
|
26771
26729
|
)
|
|
26772
26730
|
}
|
|
26773
26731
|
) }),
|
|
26774
|
-
/* @__PURE__ */
|
|
26775
|
-
/* @__PURE__ */
|
|
26732
|
+
/* @__PURE__ */ jsx37(Box27, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx37(Text30, { color: saveError ? PALETTE.error : void 0, wrap: "truncate-end", children: saveError ? "\u2717 " + saveError : " " }) }),
|
|
26733
|
+
/* @__PURE__ */ jsx37(Box27, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx37(Text30, { color: PALETTE.muted, wrap: "truncate-end", children: /* @__PURE__ */ jsx37(
|
|
26776
26734
|
ReviewPanelFooter,
|
|
26777
26735
|
{
|
|
26778
26736
|
reviewEditor,
|
|
@@ -26796,7 +26754,7 @@ var init_ReviewComponentPanel = __esm({
|
|
|
26796
26754
|
|
|
26797
26755
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewStatus.tsx
|
|
26798
26756
|
import { Box as Box28, Text as Text31 } from "ink";
|
|
26799
|
-
import { jsx as
|
|
26757
|
+
import { jsx as jsx38, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
26800
26758
|
function countReviewStatuses(entries) {
|
|
26801
26759
|
return entries.reduce(
|
|
26802
26760
|
(counts, entry) => {
|
|
@@ -26809,13 +26767,13 @@ function countReviewStatuses(entries) {
|
|
|
26809
26767
|
);
|
|
26810
26768
|
}
|
|
26811
26769
|
function ReviewLoadingState() {
|
|
26812
|
-
return /* @__PURE__ */
|
|
26770
|
+
return /* @__PURE__ */ jsx38(Box28, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx38(Text31, { color: PALETTE.muted, children: "Loading generated definitions..." }) });
|
|
26813
26771
|
}
|
|
26814
26772
|
function ReviewLoadError({ message }) {
|
|
26815
26773
|
return /* @__PURE__ */ jsxs29(Box28, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
26816
|
-
/* @__PURE__ */
|
|
26817
|
-
/* @__PURE__ */
|
|
26818
|
-
/* @__PURE__ */
|
|
26774
|
+
/* @__PURE__ */ jsx38(Text31, { color: PALETTE.error, children: message }),
|
|
26775
|
+
/* @__PURE__ */ jsx38(Text31, { children: " " }),
|
|
26776
|
+
/* @__PURE__ */ jsx38(Text31, { children: "[q / Enter / Esc] Quit" })
|
|
26819
26777
|
] });
|
|
26820
26778
|
}
|
|
26821
26779
|
var init_ReviewStatus = __esm({
|
|
@@ -27039,7 +26997,7 @@ var init_run_live_preview = __esm({
|
|
|
27039
26997
|
|
|
27040
26998
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FinalizeDialog.tsx
|
|
27041
26999
|
import { Box as Box29, Text as Text32 } from "ink";
|
|
27042
|
-
import { Fragment as Fragment10, jsx as
|
|
27000
|
+
import { Fragment as Fragment10, jsx as jsx39, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
27043
27001
|
function FinalizeDialog({
|
|
27044
27002
|
accepted,
|
|
27045
27003
|
rejected,
|
|
@@ -27067,51 +27025,51 @@ function FinalizeDialog({
|
|
|
27067
27025
|
const windowed = removed.slice(offset, offset + FINALIZE_REMOVED_WINDOW);
|
|
27068
27026
|
const hasMoreBelow = offset + FINALIZE_REMOVED_WINDOW < removed.length;
|
|
27069
27027
|
const hasMoreAbove = offset > 0;
|
|
27070
|
-
return /* @__PURE__ */
|
|
27071
|
-
/* @__PURE__ */
|
|
27072
|
-
/* @__PURE__ */
|
|
27028
|
+
return /* @__PURE__ */ jsx39(Box29, { width: "100%", justifyContent: "center", children: /* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", alignItems: "center", borderStyle: "round", padding: 1, width: 58, children: [
|
|
27029
|
+
/* @__PURE__ */ jsx39(Text32, { bold: true, children: "\u2500".repeat(22) + " Finalize " + "\u2500".repeat(22) }),
|
|
27030
|
+
/* @__PURE__ */ jsx39(Text32, { children: " " }),
|
|
27073
27031
|
/* @__PURE__ */ jsxs30(Text32, { children: [
|
|
27074
27032
|
/* @__PURE__ */ jsxs30(Text32, { color: PALETTE.success, children: [
|
|
27075
27033
|
accepted,
|
|
27076
27034
|
" accepted"
|
|
27077
27035
|
] }),
|
|
27078
|
-
/* @__PURE__ */
|
|
27036
|
+
/* @__PURE__ */ jsx39(Text32, { children: " \xB7 " }),
|
|
27079
27037
|
/* @__PURE__ */ jsxs30(Text32, { color: PALETTE.error, children: [
|
|
27080
27038
|
rejected,
|
|
27081
27039
|
" rejected"
|
|
27082
27040
|
] }),
|
|
27083
|
-
/* @__PURE__ */
|
|
27041
|
+
/* @__PURE__ */ jsx39(Text32, { children: " \xB7 " }),
|
|
27084
27042
|
/* @__PURE__ */ jsxs30(Text32, { color: PALETTE.muted, children: [
|
|
27085
27043
|
needsReview,
|
|
27086
27044
|
" unresolved"
|
|
27087
27045
|
] })
|
|
27088
27046
|
] }),
|
|
27089
|
-
/* @__PURE__ */
|
|
27047
|
+
/* @__PURE__ */ jsx39(Text32, { children: " " }),
|
|
27090
27048
|
noneAccepted && /* @__PURE__ */ jsxs30(Fragment10, { children: [
|
|
27091
|
-
/* @__PURE__ */
|
|
27092
|
-
/* @__PURE__ */
|
|
27093
|
-
/* @__PURE__ */
|
|
27049
|
+
/* @__PURE__ */ jsx39(Text32, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
|
|
27050
|
+
/* @__PURE__ */ jsx39(Text32, { color: PALETTE.warning, children: "Accept at least one component ([a] a row, [A] accept all) to push." }),
|
|
27051
|
+
/* @__PURE__ */ jsx39(Text32, { children: " " })
|
|
27094
27052
|
] }),
|
|
27095
27053
|
!allResolved && /* @__PURE__ */ jsxs30(Fragment10, { children: [
|
|
27096
|
-
/* @__PURE__ */
|
|
27097
|
-
/* @__PURE__ */
|
|
27098
|
-
/* @__PURE__ */
|
|
27054
|
+
/* @__PURE__ */ jsx39(Text32, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
|
|
27055
|
+
/* @__PURE__ */ jsx39(Text32, { color: PALETTE.warning, children: "Only explicitly accepted components ship." }),
|
|
27056
|
+
/* @__PURE__ */ jsx39(Text32, { children: " " })
|
|
27099
27057
|
] }),
|
|
27100
27058
|
/* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", height: 2, children: [
|
|
27101
|
-
previewStatus === "running" ? /* @__PURE__ */
|
|
27102
|
-
/* @__PURE__ */
|
|
27059
|
+
previewStatus === "running" ? /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, children: "Previewing deletions against the target space\u2026" }) : previewStatus === "error" ? /* @__PURE__ */ jsx39(Text32, { color: PALETTE.warning, children: "\u26A0 Could not preview deletions (the push will still proceed)." }) : /* @__PURE__ */ jsx39(Text32, { children: " " }),
|
|
27060
|
+
/* @__PURE__ */ jsx39(Text32, { children: " " })
|
|
27103
27061
|
] }),
|
|
27104
27062
|
previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs30(Fragment10, { children: [
|
|
27105
|
-
/* @__PURE__ */
|
|
27106
|
-
hasMoreAbove && /* @__PURE__ */
|
|
27107
|
-
windowed.map((rc) => /* @__PURE__ */
|
|
27108
|
-
hasMoreBelow && /* @__PURE__ */
|
|
27109
|
-
removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */
|
|
27110
|
-
/* @__PURE__ */
|
|
27063
|
+
/* @__PURE__ */ jsx39(Text32, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
|
|
27064
|
+
hasMoreAbove && /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, children: "\u2191 more above" }),
|
|
27065
|
+
windowed.map((rc) => /* @__PURE__ */ jsx39(Text32, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
|
|
27066
|
+
hasMoreBelow && /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, children: "\u2193 more below" }),
|
|
27067
|
+
removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx39(Text32, { children: "[\u2191\u2193] scroll deletions" }),
|
|
27068
|
+
/* @__PURE__ */ jsx39(Text32, { children: " " })
|
|
27111
27069
|
] }),
|
|
27112
|
-
/* @__PURE__ */
|
|
27113
|
-
/* @__PURE__ */
|
|
27114
|
-
/* @__PURE__ */
|
|
27070
|
+
/* @__PURE__ */ jsx39(Text32, { children: noneAccepted ? "Confirm exit with nothing accepted?" : allResolved ? "Save decisions and exit? All components resolved." : "Save decisions and exit?" }),
|
|
27071
|
+
/* @__PURE__ */ jsx39(Text32, { children: " " }),
|
|
27072
|
+
/* @__PURE__ */ jsx39(Text32, { children: "[y / Enter] Confirm [n / Esc] Cancel" })
|
|
27115
27073
|
] }) });
|
|
27116
27074
|
}
|
|
27117
27075
|
var FINALIZE_REMOVED_WINDOW;
|
|
@@ -27126,7 +27084,7 @@ var init_FinalizeDialog = __esm({
|
|
|
27126
27084
|
});
|
|
27127
27085
|
|
|
27128
27086
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-finalize-preview.ts
|
|
27129
|
-
import { useEffect as useEffect11, useRef as
|
|
27087
|
+
import { useEffect as useEffect11, useRef as useRef7, useState as useState16 } from "react";
|
|
27130
27088
|
function useReviewFinalizePreview({
|
|
27131
27089
|
components,
|
|
27132
27090
|
...options
|
|
@@ -27141,7 +27099,7 @@ function useFinalizePreview(opts) {
|
|
|
27141
27099
|
const [status, setStatus] = useState16("idle");
|
|
27142
27100
|
const [removed, setRemoved] = useState16([]);
|
|
27143
27101
|
const [scrollOffset, setScrollOffset] = useState16(0);
|
|
27144
|
-
const generationRef =
|
|
27102
|
+
const generationRef = useRef7(0);
|
|
27145
27103
|
const acceptedKey = [...acceptedKeys].sort().join("\0");
|
|
27146
27104
|
useEffect11(() => {
|
|
27147
27105
|
if (!open) {
|
|
@@ -27195,7 +27153,7 @@ var init_use_finalize_preview = __esm({
|
|
|
27195
27153
|
});
|
|
27196
27154
|
|
|
27197
27155
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-review-session.ts
|
|
27198
|
-
import { useCallback as useCallback2, useEffect as useEffect12, useRef as
|
|
27156
|
+
import { useCallback as useCallback2, useEffect as useEffect12, useRef as useRef8, useState as useState17 } from "react";
|
|
27199
27157
|
function useReviewSession({
|
|
27200
27158
|
loadSession,
|
|
27201
27159
|
tokensPath,
|
|
@@ -27297,8 +27255,8 @@ function useReviewMetadata({ components, selectedIdx, extractSessionId }) {
|
|
|
27297
27255
|
return { reviewMetadata, componentRationale };
|
|
27298
27256
|
}
|
|
27299
27257
|
function useReviewHistory({ loading, components, createSnapshot, applySnapshot }) {
|
|
27300
|
-
const historyRef =
|
|
27301
|
-
const historySeededRef =
|
|
27258
|
+
const historyRef = useRef8(null);
|
|
27259
|
+
const historySeededRef = useRef8(false);
|
|
27302
27260
|
useEffect12(() => {
|
|
27303
27261
|
if (loading || historySeededRef.current) return;
|
|
27304
27262
|
historySeededRef.current = true;
|
|
@@ -27381,7 +27339,7 @@ var init_token_suggestions = __esm({
|
|
|
27381
27339
|
});
|
|
27382
27340
|
|
|
27383
27341
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-review-editor.ts
|
|
27384
|
-
import { useEffect as useEffect13, useRef as
|
|
27342
|
+
import { useEffect as useEffect13, useRef as useRef9, useState as useState18 } from "react";
|
|
27385
27343
|
function parseReviewEntry(draftValue) {
|
|
27386
27344
|
const parsed = JSON.parse(draftValue);
|
|
27387
27345
|
const keys = Object.keys(parsed);
|
|
@@ -27413,8 +27371,8 @@ function useReviewEditor({
|
|
|
27413
27371
|
const [tokenReviewEditing, setTokenReviewEditing] = useState18(false);
|
|
27414
27372
|
const [tokenReviewEditCursor, setTokenReviewEditCursor] = useState18(0);
|
|
27415
27373
|
const [tokenReviewEditSelection, setTokenReviewEditSelection] = useState18(/* @__PURE__ */ new Set());
|
|
27416
|
-
const tokenReviewSuggestedRef =
|
|
27417
|
-
const pendingGRef =
|
|
27374
|
+
const tokenReviewSuggestedRef = useRef9(/* @__PURE__ */ new Map());
|
|
27375
|
+
const pendingGRef = useRef9(false);
|
|
27418
27376
|
useEffect13(() => {
|
|
27419
27377
|
setTokenReviewRow(0);
|
|
27420
27378
|
setTokenReviewEditing(false);
|
|
@@ -27560,7 +27518,7 @@ var init_use_review_surface_state = __esm({
|
|
|
27560
27518
|
|
|
27561
27519
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/QuitDialog.tsx
|
|
27562
27520
|
import { Box as Box30, Text as Text33 } from "ink";
|
|
27563
|
-
import { Fragment as Fragment11, jsx as
|
|
27521
|
+
import { Fragment as Fragment11, jsx as jsx40, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
27564
27522
|
function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
27565
27523
|
useImmediateInput((input, key) => {
|
|
27566
27524
|
if (input === "y" || key.return) {
|
|
@@ -27570,15 +27528,15 @@ function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
|
27570
27528
|
}
|
|
27571
27529
|
});
|
|
27572
27530
|
return /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", borderStyle: "round", padding: 1, width: 50, children: [
|
|
27573
|
-
/* @__PURE__ */
|
|
27574
|
-
/* @__PURE__ */
|
|
27531
|
+
/* @__PURE__ */ jsx40(Text33, { bold: true, children: "\u2500".repeat(19) + " Quit " + "\u2500".repeat(19) }),
|
|
27532
|
+
/* @__PURE__ */ jsx40(Text33, { children: " " }),
|
|
27575
27533
|
hasUnsavedDrafts ? /* @__PURE__ */ jsxs31(Fragment11, { children: [
|
|
27576
|
-
/* @__PURE__ */
|
|
27577
|
-
/* @__PURE__ */
|
|
27578
|
-
/* @__PURE__ */
|
|
27579
|
-
] }) : /* @__PURE__ */
|
|
27580
|
-
/* @__PURE__ */
|
|
27581
|
-
/* @__PURE__ */
|
|
27534
|
+
/* @__PURE__ */ jsx40(Text33, { children: "You have unsaved draft edits." }),
|
|
27535
|
+
/* @__PURE__ */ jsx40(Text33, { children: "Session state is preserved \u2014 you can resume" }),
|
|
27536
|
+
/* @__PURE__ */ jsx40(Text33, { children: "by running the same review command again." })
|
|
27537
|
+
] }) : /* @__PURE__ */ jsx40(Text33, { children: "Session is saved. Quit without finalizing?" }),
|
|
27538
|
+
/* @__PURE__ */ jsx40(Text33, { children: " " }),
|
|
27539
|
+
/* @__PURE__ */ jsx40(Text33, { children: " [y / Enter] Quit [n / Esc] Stay" })
|
|
27582
27540
|
] });
|
|
27583
27541
|
}
|
|
27584
27542
|
var init_QuitDialog = __esm({
|
|
@@ -27590,7 +27548,7 @@ var init_QuitDialog = __esm({
|
|
|
27590
27548
|
|
|
27591
27549
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDialogs.tsx
|
|
27592
27550
|
import { Box as Box31, Text as Text34 } from "ink";
|
|
27593
|
-
import { Fragment as Fragment12, jsx as
|
|
27551
|
+
import { Fragment as Fragment12, jsx as jsx41, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
27594
27552
|
function ReviewFinalizeDialogs({
|
|
27595
27553
|
showFinalize,
|
|
27596
27554
|
showQuit,
|
|
@@ -27605,7 +27563,7 @@ function ReviewFinalizeDialogs({
|
|
|
27605
27563
|
}) {
|
|
27606
27564
|
const { accepted, rejected, needsReview } = countReviewStatuses(components);
|
|
27607
27565
|
return /* @__PURE__ */ jsxs32(Fragment12, { children: [
|
|
27608
|
-
showFinalize && /* @__PURE__ */
|
|
27566
|
+
showFinalize && /* @__PURE__ */ jsx41(
|
|
27609
27567
|
FinalizeDialog,
|
|
27610
27568
|
{
|
|
27611
27569
|
accepted,
|
|
@@ -27618,7 +27576,7 @@ function ReviewFinalizeDialogs({
|
|
|
27618
27576
|
onCancel: onFinalizeCancel
|
|
27619
27577
|
}
|
|
27620
27578
|
),
|
|
27621
|
-
showQuit && /* @__PURE__ */
|
|
27579
|
+
showQuit && /* @__PURE__ */ jsx41(QuitDialog, { hasUnsavedDrafts: false, onConfirm: onQuitConfirm, onCancel: onQuitCancel })
|
|
27622
27580
|
] });
|
|
27623
27581
|
}
|
|
27624
27582
|
function ReviewStepDialogs({
|
|
@@ -27628,7 +27586,7 @@ function ReviewStepDialogs({
|
|
|
27628
27586
|
onFinalize,
|
|
27629
27587
|
onQuit
|
|
27630
27588
|
}) {
|
|
27631
|
-
return /* @__PURE__ */
|
|
27589
|
+
return /* @__PURE__ */ jsx41(
|
|
27632
27590
|
ReviewFinalizeDialogs,
|
|
27633
27591
|
{
|
|
27634
27592
|
showFinalize: surfaceState.showFinalize,
|
|
@@ -27647,11 +27605,11 @@ function ReviewStepDialogs({
|
|
|
27647
27605
|
function ReviewReloadDialog({ open }) {
|
|
27648
27606
|
if (!open) return null;
|
|
27649
27607
|
return /* @__PURE__ */ jsxs32(Box31, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
27650
|
-
/* @__PURE__ */
|
|
27651
|
-
/* @__PURE__ */
|
|
27652
|
-
/* @__PURE__ */
|
|
27653
|
-
/* @__PURE__ */
|
|
27654
|
-
/* @__PURE__ */
|
|
27608
|
+
/* @__PURE__ */ jsx41(Text34, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
|
|
27609
|
+
/* @__PURE__ */ jsx41(Text34, { children: "Unsaved in-memory changes will be lost." }),
|
|
27610
|
+
/* @__PURE__ */ jsx41(Text34, { children: " " }),
|
|
27611
|
+
/* @__PURE__ */ jsx41(Text34, { children: " [Enter] Confirm" }),
|
|
27612
|
+
/* @__PURE__ */ jsx41(Text34, { children: " [Esc] Cancel" })
|
|
27655
27613
|
] });
|
|
27656
27614
|
}
|
|
27657
27615
|
var init_ReviewDialogs = __esm({
|
|
@@ -27888,20 +27846,20 @@ var init_preview_annotations = __esm({
|
|
|
27888
27846
|
});
|
|
27889
27847
|
|
|
27890
27848
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-live-preview.ts
|
|
27891
|
-
import { useCallback as useCallback3, useEffect as useEffect14, useRef as
|
|
27849
|
+
import { useCallback as useCallback3, useEffect as useEffect14, useRef as useRef10, useState as useState20 } from "react";
|
|
27892
27850
|
function useLivePreview(opts) {
|
|
27893
27851
|
const debounceMs = opts.debounceMs ?? DEFAULT_DEBOUNCE_MS;
|
|
27894
27852
|
const [status, setStatus] = useState20("idle");
|
|
27895
27853
|
const [disabled, setDisabled] = useState20(false);
|
|
27896
|
-
const timerRef =
|
|
27897
|
-
const generationRef =
|
|
27898
|
-
const latestRef =
|
|
27899
|
-
const inflightRef =
|
|
27900
|
-
const optsRef =
|
|
27854
|
+
const timerRef = useRef10(null);
|
|
27855
|
+
const generationRef = useRef10(0);
|
|
27856
|
+
const latestRef = useRef10(0);
|
|
27857
|
+
const inflightRef = useRef10(0);
|
|
27858
|
+
const optsRef = useRef10(opts);
|
|
27901
27859
|
useEffect14(() => {
|
|
27902
27860
|
optsRef.current = opts;
|
|
27903
27861
|
});
|
|
27904
|
-
const disabledRef =
|
|
27862
|
+
const disabledRef = useRef10(disabled);
|
|
27905
27863
|
useEffect14(() => {
|
|
27906
27864
|
disabledRef.current = disabled;
|
|
27907
27865
|
}, [disabled]);
|
|
@@ -28054,7 +28012,7 @@ var init_use_review_preview = __esm({
|
|
|
28054
28012
|
|
|
28055
28013
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/LivePreviewSummary.tsx
|
|
28056
28014
|
import { Box as Box32, Text as Text35 } from "ink";
|
|
28057
|
-
import { jsx as
|
|
28015
|
+
import { jsx as jsx42, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
28058
28016
|
function LivePreviewSummary({
|
|
28059
28017
|
enabled,
|
|
28060
28018
|
previewAnnotations,
|
|
@@ -28068,19 +28026,19 @@ function LivePreviewSummary({
|
|
|
28068
28026
|
const counts = { new: 0, changed: 0, removed: 0, breaking: 0 };
|
|
28069
28027
|
for (const annotation of previewAnnotations.values()) counts[annotation] += 1;
|
|
28070
28028
|
const hasCounts = counts.new + counts.changed + counts.removed + counts.breaking > 0;
|
|
28071
|
-
if (disabled) return /* @__PURE__ */
|
|
28072
|
-
if (status === "running" && !hasCounts) return /* @__PURE__ */
|
|
28029
|
+
if (disabled) return /* @__PURE__ */ jsx42(Text35, { color: PALETTE.muted, children: "Preview: disabled (creds rejected)" });
|
|
28030
|
+
if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx42(Text35, { color: PALETTE.muted, children: `Preview: ${spinner} running...` });
|
|
28073
28031
|
if (!hasCounts) return null;
|
|
28074
28032
|
return /* @__PURE__ */ jsxs33(Box32, { children: [
|
|
28075
|
-
/* @__PURE__ */
|
|
28076
|
-
/* @__PURE__ */
|
|
28077
|
-
/* @__PURE__ */
|
|
28078
|
-
/* @__PURE__ */
|
|
28079
|
-
/* @__PURE__ */
|
|
28080
|
-
/* @__PURE__ */
|
|
28081
|
-
showRemovedListHint && removedCount > 0 && /* @__PURE__ */
|
|
28082
|
-
/* @__PURE__ */
|
|
28083
|
-
/* @__PURE__ */
|
|
28033
|
+
/* @__PURE__ */ jsx42(Text35, { children: "Preview: " }),
|
|
28034
|
+
/* @__PURE__ */ jsx42(Text35, { color: PALETTE.success, children: `${counts.new} new` }),
|
|
28035
|
+
/* @__PURE__ */ jsx42(Text35, { children: " \xB7 " }),
|
|
28036
|
+
/* @__PURE__ */ jsx42(Text35, { color: PALETTE.warning, children: `${counts.changed} changed` }),
|
|
28037
|
+
/* @__PURE__ */ jsx42(Text35, { children: " \xB7 " }),
|
|
28038
|
+
/* @__PURE__ */ jsx42(Text35, { color: PALETTE.muted, children: `${counts.removed} removed` }),
|
|
28039
|
+
showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx42(Text35, { children: " ([d] removed list)" }),
|
|
28040
|
+
/* @__PURE__ */ jsx42(Text35, { children: " \xB7 " }),
|
|
28041
|
+
/* @__PURE__ */ jsx42(Text35, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
|
|
28084
28042
|
] });
|
|
28085
28043
|
}
|
|
28086
28044
|
var init_LivePreviewSummary = __esm({
|
|
@@ -28091,10 +28049,10 @@ var init_LivePreviewSummary = __esm({
|
|
|
28091
28049
|
});
|
|
28092
28050
|
|
|
28093
28051
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx
|
|
28094
|
-
import { useCallback as useCallback5, useEffect as useEffect16, useMemo as useMemo4, useRef as
|
|
28052
|
+
import { useCallback as useCallback5, useEffect as useEffect16, useMemo as useMemo4, useRef as useRef11, useState as useState22 } from "react";
|
|
28095
28053
|
import figures7 from "figures";
|
|
28096
28054
|
import { Box as Box33, Text as Text36 } from "ink";
|
|
28097
|
-
import { Fragment as Fragment13, jsx as
|
|
28055
|
+
import { Fragment as Fragment13, jsx as jsx43, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
28098
28056
|
function sortComponentsForSidebar(components, cycleParticipants) {
|
|
28099
28057
|
const isEmpty2 = (entry) => Object.keys(entry.$properties ?? {}).length === 0 && Object.keys(entry.$slots ?? {}).length === 0;
|
|
28100
28058
|
const tier = (c2) => {
|
|
@@ -28138,7 +28096,7 @@ function CyclePathLine({
|
|
|
28138
28096
|
return /* @__PURE__ */ jsxs34(Text36, { color: highlightLine ? PALETTE.warning : void 0, children: [
|
|
28139
28097
|
prefix,
|
|
28140
28098
|
segments.map(
|
|
28141
|
-
(segment, index) => segment.kind === "slot" ? /* @__PURE__ */
|
|
28099
|
+
(segment, index) => segment.kind === "slot" ? /* @__PURE__ */ jsx43(Text36, { color: PALETTE.accent, children: segment.text }, index) : segment.kind === "arrow" ? /* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: segment.text }, index) : /* @__PURE__ */ jsx43(Text36, { color: highlightComponents ? PALETTE.warning : void 0, children: segment.text }, index)
|
|
28142
28100
|
)
|
|
28143
28101
|
] });
|
|
28144
28102
|
}
|
|
@@ -28150,31 +28108,31 @@ function CycleDetailPanel({
|
|
|
28150
28108
|
height
|
|
28151
28109
|
}) {
|
|
28152
28110
|
const lines = [
|
|
28153
|
-
/* @__PURE__ */
|
|
28154
|
-
/* @__PURE__ */
|
|
28155
|
-
/* @__PURE__ */
|
|
28156
|
-
/* @__PURE__ */
|
|
28111
|
+
/* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${cycles.length})` }, "cyc-title"),
|
|
28112
|
+
/* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: "push will fail until these are resolved" }, "cyc-sub"),
|
|
28113
|
+
/* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: "Reject a cycle member or remove a slot edge to break the cycle." }, "cyc-guidance"),
|
|
28114
|
+
/* @__PURE__ */ jsx43(Text36, { children: " " }, "cyc-space")
|
|
28157
28115
|
];
|
|
28158
28116
|
cycles.forEach((cycle, index) => {
|
|
28159
28117
|
const nodeCount = new Set(cycle.path).size;
|
|
28160
28118
|
const isCursor = index === cursor;
|
|
28161
28119
|
lines.push(
|
|
28162
|
-
/* @__PURE__ */
|
|
28163
|
-
/* @__PURE__ */
|
|
28120
|
+
/* @__PURE__ */ jsx43(Text36, { bold: true, inverse: isCursor, children: `${isCursor ? figures7.pointer : " "} Cycle ${index + 1} (${nodeCount} component${nodeCount === 1 ? "" : "s"}):` }, `cyc-h-${index}`),
|
|
28121
|
+
/* @__PURE__ */ jsx43(CyclePathLine, { segments: formatCyclePathSegments2(cycle, 16), prefix: " " }, `cyc-p-${index}`)
|
|
28164
28122
|
);
|
|
28165
28123
|
if (cycle.suggestedBreak) {
|
|
28166
28124
|
lines.push(
|
|
28167
|
-
/* @__PURE__ */
|
|
28125
|
+
/* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: ` Suggested fix: remove [${cycle.suggestedBreak.slotName}] from ${cycle.suggestedBreak.fromComponent}` }, `cyc-fix-${index}`)
|
|
28168
28126
|
);
|
|
28169
28127
|
}
|
|
28170
|
-
lines.push(/* @__PURE__ */
|
|
28128
|
+
lines.push(/* @__PURE__ */ jsx43(Text36, { children: " " }, `cyc-s-${index}`));
|
|
28171
28129
|
});
|
|
28172
28130
|
const footer = "[\u2191\u2193] move [Enter] fix cycle [c/q/Esc] close";
|
|
28173
28131
|
const viewportHeight = Math.max(1, height - 3);
|
|
28174
28132
|
const visible = lines.slice(scrollOffset, scrollOffset + viewportHeight - 1);
|
|
28175
28133
|
return /* @__PURE__ */ jsxs34(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
|
|
28176
28134
|
visible,
|
|
28177
|
-
/* @__PURE__ */
|
|
28135
|
+
/* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: footer })
|
|
28178
28136
|
] });
|
|
28179
28137
|
}
|
|
28180
28138
|
function BreakCyclePanel({
|
|
@@ -28186,13 +28144,13 @@ function BreakCyclePanel({
|
|
|
28186
28144
|
height
|
|
28187
28145
|
}) {
|
|
28188
28146
|
return /* @__PURE__ */ jsxs34(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
|
|
28189
|
-
/* @__PURE__ */
|
|
28190
|
-
cycle && /* @__PURE__ */
|
|
28191
|
-
/* @__PURE__ */
|
|
28192
|
-
/* @__PURE__ */
|
|
28193
|
-
edges.length > 0 && /* @__PURE__ */
|
|
28194
|
-
edges.map((edge, index) => /* @__PURE__ */
|
|
28195
|
-
confirming ? /* @__PURE__ */
|
|
28147
|
+
/* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE.warning, children: "BREAK CYCLE \u2014 remove a slot edge" }),
|
|
28148
|
+
cycle && /* @__PURE__ */ jsx43(CyclePathLine, { segments: formatCyclePathSegments2(cycle), prefix: " ", highlightComponents: true }),
|
|
28149
|
+
/* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: cycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
|
|
28150
|
+
/* @__PURE__ */ jsx43(Text36, { children: " " }),
|
|
28151
|
+
edges.length > 0 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: "remove slot edge:" }),
|
|
28152
|
+
edges.map((edge, index) => /* @__PURE__ */ jsx43(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}`)),
|
|
28153
|
+
confirming ? /* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE.warning, children: "Delete this slot edge? [y] confirm [n] cancel" }) : /* @__PURE__ */ jsx43(Text36, { children: "[\u2191\u2193] move [Enter] delete [x/Esc] close" })
|
|
28196
28154
|
] });
|
|
28197
28155
|
}
|
|
28198
28156
|
function buildBreakingRows(breakingChanges) {
|
|
@@ -28238,9 +28196,9 @@ function deriveBreakingChanges(response) {
|
|
|
28238
28196
|
}
|
|
28239
28197
|
function GenerateReviewStep(props) {
|
|
28240
28198
|
if (!props.extractSessionId) {
|
|
28241
|
-
return /* @__PURE__ */
|
|
28199
|
+
return /* @__PURE__ */ jsx43(Box33, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx43(Text36, { color: PALETTE.error, children: "Error: no session ID \u2014 cannot load generated definitions." }) });
|
|
28242
28200
|
}
|
|
28243
|
-
return /* @__PURE__ */
|
|
28201
|
+
return /* @__PURE__ */ jsx43(GenerateReviewStepView, { ...props, extractSessionId: props.extractSessionId });
|
|
28244
28202
|
}
|
|
28245
28203
|
function GenerateReviewStepView({
|
|
28246
28204
|
extractSessionId,
|
|
@@ -28305,7 +28263,7 @@ function GenerateReviewStepView({
|
|
|
28305
28263
|
setFinalizeError
|
|
28306
28264
|
} = reviewSurface;
|
|
28307
28265
|
const [removedBannerCollapsed, setRemovedBannerCollapsed] = useState22(false);
|
|
28308
|
-
const removedBannerDefaultedRef =
|
|
28266
|
+
const removedBannerDefaultedRef = useRef11(false);
|
|
28309
28267
|
const [cyclePanelScroll, setCyclePanelScroll] = useState22(0);
|
|
28310
28268
|
const [cyclesCursor, setCyclesCursor] = useState22(0);
|
|
28311
28269
|
const cyclePanel = useOverlayPanel({
|
|
@@ -28325,7 +28283,7 @@ function GenerateReviewStepView({
|
|
|
28325
28283
|
const [breakCursor, setBreakCursor] = useState22(0);
|
|
28326
28284
|
const [breakConfirm, setBreakConfirm] = useState22(false);
|
|
28327
28285
|
const [expandedGroups, setExpandedGroups] = useState22(/* @__PURE__ */ new Set());
|
|
28328
|
-
const seededGroupsRef =
|
|
28286
|
+
const seededGroupsRef = useRef11(false);
|
|
28329
28287
|
const {
|
|
28330
28288
|
searchOpen,
|
|
28331
28289
|
setSearchOpen,
|
|
@@ -28349,7 +28307,7 @@ function GenerateReviewStepView({
|
|
|
28349
28307
|
const [pendingEditorFocus, setPendingEditorFocus] = useState22(null);
|
|
28350
28308
|
const [autoRejected, setAutoRejected] = useState22([]);
|
|
28351
28309
|
const [undoSnapshot, setUndoSnapshot] = useState22(null);
|
|
28352
|
-
const autoRejectFiredRef =
|
|
28310
|
+
const autoRejectFiredRef = useRef11(false);
|
|
28353
28311
|
const [showReloadDialog, setShowReloadDialog] = useState22(false);
|
|
28354
28312
|
const acceptedCountForPreview = components.filter((c2) => c2.status === "accepted").length;
|
|
28355
28313
|
const { previewAnnotations, removedComponents, livePreviewHook, livePreviewSpinner } = useReviewPreview({
|
|
@@ -28482,7 +28440,7 @@ function GenerateReviewStepView({
|
|
|
28482
28440
|
}),
|
|
28483
28441
|
applySnapshot: applyHistorySnapshot
|
|
28484
28442
|
});
|
|
28485
|
-
const autoRejectPushedRef =
|
|
28443
|
+
const autoRejectPushedRef = useRef11(false);
|
|
28486
28444
|
useEffect16(() => {
|
|
28487
28445
|
if (loading) return;
|
|
28488
28446
|
if (!historySeededRef.current) return;
|
|
@@ -29097,13 +29055,13 @@ function GenerateReviewStepView({
|
|
|
29097
29055
|
}
|
|
29098
29056
|
});
|
|
29099
29057
|
if (loading) {
|
|
29100
|
-
return /* @__PURE__ */
|
|
29058
|
+
return /* @__PURE__ */ jsx43(ReviewLoadingState, {});
|
|
29101
29059
|
}
|
|
29102
29060
|
if (loadError) {
|
|
29103
|
-
return /* @__PURE__ */
|
|
29061
|
+
return /* @__PURE__ */ jsx43(ReviewLoadError, { message: loadError });
|
|
29104
29062
|
}
|
|
29105
29063
|
if (showHelp) {
|
|
29106
|
-
return /* @__PURE__ */
|
|
29064
|
+
return /* @__PURE__ */ jsx43(HelpOverlay, { sections: HELP_SECTIONS2, handleInput: false, onClose: () => setShowHelp(false) });
|
|
29107
29065
|
}
|
|
29108
29066
|
const { selected, selectedJson, visibleJsonPanelValue } = getReviewSelectionState(
|
|
29109
29067
|
components,
|
|
@@ -29144,7 +29102,7 @@ function GenerateReviewStepView({
|
|
|
29144
29102
|
return false;
|
|
29145
29103
|
})();
|
|
29146
29104
|
return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", children: [
|
|
29147
|
-
/* @__PURE__ */
|
|
29105
|
+
/* @__PURE__ */ jsx43(
|
|
29148
29106
|
ReviewStepDialogs,
|
|
29149
29107
|
{
|
|
29150
29108
|
surfaceState: reviewSurface,
|
|
@@ -29154,15 +29112,15 @@ function GenerateReviewStepView({
|
|
|
29154
29112
|
onQuit
|
|
29155
29113
|
}
|
|
29156
29114
|
),
|
|
29157
|
-
/* @__PURE__ */
|
|
29115
|
+
/* @__PURE__ */ jsx43(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
|
|
29158
29116
|
removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
|
|
29159
|
-
/* @__PURE__ */
|
|
29117
|
+
/* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
|
|
29160
29118
|
!removedBannerCollapsed && /* @__PURE__ */ jsxs34(Fragment13, { children: [
|
|
29161
|
-
/* @__PURE__ */
|
|
29162
|
-
removedComponents.map((rc) => /* @__PURE__ */
|
|
29119
|
+
/* @__PURE__ */ jsx43(Text36, { children: " " }),
|
|
29120
|
+
removedComponents.map((rc) => /* @__PURE__ */ jsx43(Text36, { children: removedComponentLine(rc) }, rc.id))
|
|
29163
29121
|
] })
|
|
29164
29122
|
] }),
|
|
29165
|
-
breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */
|
|
29123
|
+
breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx43(Box33, { paddingX: 1, children: /* @__PURE__ */ jsx43(
|
|
29166
29124
|
Text36,
|
|
29167
29125
|
{
|
|
29168
29126
|
color: PALETTE.warning,
|
|
@@ -29174,13 +29132,13 @@ function GenerateReviewStepView({
|
|
|
29174
29132
|
const comp = row ? breakingChanges.find((b) => b.componentName === row.componentName) : void 0;
|
|
29175
29133
|
if (!comp) return null;
|
|
29176
29134
|
return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
29177
|
-
/* @__PURE__ */
|
|
29178
|
-
comp.impact && /* @__PURE__ */
|
|
29179
|
-
comp.changes.length === 0 ? /* @__PURE__ */
|
|
29180
|
-
/* @__PURE__ */
|
|
29135
|
+
/* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
|
|
29136
|
+
comp.impact && /* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: ` affects ${comp.impact.affectedExperiences} experience${comp.impact.affectedExperiences === 1 ? "" : "s"}, ${comp.impact.affectedFragments} fragment${comp.impact.affectedFragments === 1 ? "" : "s"}` }),
|
|
29137
|
+
comp.changes.length === 0 ? /* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: " (no enumerated changes)" }) : comp.changes.map((change, ci) => /* @__PURE__ */ jsx43(Text36, { children: ` \u2022 ${formatBreakingChange(change, comp.current)}` }, `bd-detail-${ci}`)),
|
|
29138
|
+
/* @__PURE__ */ jsx43(Text36, { children: "[D/Esc] close detail" })
|
|
29181
29139
|
] });
|
|
29182
29140
|
})(),
|
|
29183
|
-
!dialogOpen && /* @__PURE__ */
|
|
29141
|
+
!dialogOpen && /* @__PURE__ */ jsx43(
|
|
29184
29142
|
LivePreviewSummary,
|
|
29185
29143
|
{
|
|
29186
29144
|
enabled: livePreview,
|
|
@@ -29200,15 +29158,15 @@ function GenerateReviewStepView({
|
|
|
29200
29158
|
const members = stillRejected.filter((n) => participantSet.has(n)).sort();
|
|
29201
29159
|
const ancestors = stillRejected.filter((n) => !participantSet.has(n)).sort();
|
|
29202
29160
|
return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
|
|
29203
|
-
/* @__PURE__ */
|
|
29204
|
-
members.length > 0 && /* @__PURE__ */
|
|
29205
|
-
ancestors.length > 0 && /* @__PURE__ */
|
|
29206
|
-
/* @__PURE__ */
|
|
29161
|
+
/* @__PURE__ */ jsx43(Text36, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
|
|
29162
|
+
members.length > 0 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
|
|
29163
|
+
ancestors.length > 0 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
|
|
29164
|
+
/* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: undoSnapshot ? " [Ctrl+Z] undo \xB7 [r]/[a] manually toggle \xB7 [F] continue" : " [r]/[a] manually toggle \xB7 [F] continue" })
|
|
29207
29165
|
] });
|
|
29208
29166
|
})(),
|
|
29209
|
-
/* @__PURE__ */
|
|
29210
|
-
/* @__PURE__ */
|
|
29211
|
-
!dialogOpen && breakPanel.isOpen && /* @__PURE__ */
|
|
29167
|
+
/* @__PURE__ */ jsx43(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
|
|
29168
|
+
/* @__PURE__ */ jsx43(ReviewFinalizeError, { message: finalizeError, hidden: dialogOpen }),
|
|
29169
|
+
!dialogOpen && breakPanel.isOpen && /* @__PURE__ */ jsx43(
|
|
29212
29170
|
BreakCyclePanel,
|
|
29213
29171
|
{
|
|
29214
29172
|
cycle: cycleRows[cyclesCursor],
|
|
@@ -29219,7 +29177,7 @@ function GenerateReviewStepView({
|
|
|
29219
29177
|
height: panelHeight
|
|
29220
29178
|
}
|
|
29221
29179
|
),
|
|
29222
|
-
!dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */
|
|
29180
|
+
!dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsx43(
|
|
29223
29181
|
CycleDetailPanel,
|
|
29224
29182
|
{
|
|
29225
29183
|
cycles: cycleRows,
|
|
@@ -29230,7 +29188,7 @@ function GenerateReviewStepView({
|
|
|
29230
29188
|
}
|
|
29231
29189
|
),
|
|
29232
29190
|
!dialogOpen && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs34(Box33, { children: [
|
|
29233
|
-
breakingPanel.isOpen ? /* @__PURE__ */
|
|
29191
|
+
breakingPanel.isOpen ? /* @__PURE__ */ jsx43(
|
|
29234
29192
|
GotoBanner,
|
|
29235
29193
|
{
|
|
29236
29194
|
title: `Breaking changes \u2014 ${breakingRows[breakingCursor]?.componentName ?? "unknown component"}`,
|
|
@@ -29243,7 +29201,7 @@ function GenerateReviewStepView({
|
|
|
29243
29201
|
width: sidebarWidth,
|
|
29244
29202
|
footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [D] detail \xB7 [Esc] close"
|
|
29245
29203
|
}
|
|
29246
|
-
) : /* @__PURE__ */
|
|
29204
|
+
) : /* @__PURE__ */ jsx43(
|
|
29247
29205
|
GroupedSidebar,
|
|
29248
29206
|
{
|
|
29249
29207
|
items: groupedItems,
|
|
@@ -29284,7 +29242,7 @@ function GenerateReviewStepView({
|
|
|
29284
29242
|
graph: sidebarGraph
|
|
29285
29243
|
}
|
|
29286
29244
|
),
|
|
29287
|
-
selected ? /* @__PURE__ */
|
|
29245
|
+
selected ? /* @__PURE__ */ jsx43(
|
|
29288
29246
|
ReviewComponentPanel,
|
|
29289
29247
|
{
|
|
29290
29248
|
selectedKey: selected.key,
|
|
@@ -29316,12 +29274,12 @@ function GenerateReviewStepView({
|
|
|
29316
29274
|
livePreview: livePreviewHook,
|
|
29317
29275
|
livePreviewSpinner
|
|
29318
29276
|
}
|
|
29319
|
-
) : /* @__PURE__ */
|
|
29277
|
+
) : /* @__PURE__ */ jsx43(ReviewNoSelection, {})
|
|
29320
29278
|
] }),
|
|
29321
29279
|
!dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", children: [
|
|
29322
|
-
/* @__PURE__ */
|
|
29280
|
+
/* @__PURE__ */ jsx43(Text36, { color: PALETTE.warning, children: `\u26A0 ${cycleRows.length} slot dependency cycle${cycleRows.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
|
|
29323
29281
|
cycleRows.slice(0, 3).map((cycle, idx) => {
|
|
29324
|
-
return /* @__PURE__ */
|
|
29282
|
+
return /* @__PURE__ */ jsx43(
|
|
29325
29283
|
CyclePathLine,
|
|
29326
29284
|
{
|
|
29327
29285
|
segments: formatCyclePathSegments2(cycle),
|
|
@@ -29332,10 +29290,10 @@ function GenerateReviewStepView({
|
|
|
29332
29290
|
`cyc-banner-${idx}`
|
|
29333
29291
|
);
|
|
29334
29292
|
}),
|
|
29335
|
-
cycleRows.length > 3 && /* @__PURE__ */
|
|
29336
|
-
/* @__PURE__ */
|
|
29293
|
+
cycleRows.length > 3 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE.warning, children: ` \u2026${cycleRows.length - 3} more` }),
|
|
29294
|
+
/* @__PURE__ */ jsx43(Text36, { children: " press [c] for detail" })
|
|
29337
29295
|
] }),
|
|
29338
|
-
/* @__PURE__ */
|
|
29296
|
+
/* @__PURE__ */ jsx43(
|
|
29339
29297
|
SearchMatchSummary,
|
|
29340
29298
|
{
|
|
29341
29299
|
open: searchOpen,
|
|
@@ -29346,7 +29304,7 @@ function GenerateReviewStepView({
|
|
|
29346
29304
|
hidden: dialogOpen
|
|
29347
29305
|
}
|
|
29348
29306
|
),
|
|
29349
|
-
!dialogOpen && sidebarFocused && /* @__PURE__ */
|
|
29307
|
+
!dialogOpen && sidebarFocused && /* @__PURE__ */ jsx43(CompactControlBar, { hasGroupRoots, searchActive: searchOpen || searchQuery.length > 0 })
|
|
29350
29308
|
] });
|
|
29351
29309
|
}
|
|
29352
29310
|
var HELP_SECTIONS2;
|
|
@@ -29462,16 +29420,16 @@ var init_generate_review_step = __esm({
|
|
|
29462
29420
|
|
|
29463
29421
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/CustomPromptBanner.tsx
|
|
29464
29422
|
import { Box as Box34, Text as Text37 } from "ink";
|
|
29465
|
-
import { jsx as
|
|
29423
|
+
import { jsx as jsx44, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
29466
29424
|
function CustomPromptBanner({ generatePromptPath }) {
|
|
29467
29425
|
if (!generatePromptPath) return null;
|
|
29468
29426
|
return /* @__PURE__ */ jsxs35(Box34, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
29469
|
-
/* @__PURE__ */
|
|
29427
|
+
/* @__PURE__ */ jsx44(Text37, { color: PALETTE.warning, bold: true, children: "WARNING: Custom prompt active" }),
|
|
29470
29428
|
generatePromptPath ? /* @__PURE__ */ jsxs35(Text37, { color: PALETTE.warning, children: [
|
|
29471
29429
|
"components: ",
|
|
29472
29430
|
generatePromptPath
|
|
29473
29431
|
] }) : null,
|
|
29474
|
-
/* @__PURE__ */
|
|
29432
|
+
/* @__PURE__ */ jsx44(Text37, { color: PALETTE.warning, children: "Bundled invariants (utility-wrapper rejection, description content rules) do NOT apply." })
|
|
29475
29433
|
] });
|
|
29476
29434
|
}
|
|
29477
29435
|
var init_CustomPromptBanner = __esm({
|
|
@@ -29501,14 +29459,14 @@ var init_contentful_urls2 = __esm({
|
|
|
29501
29459
|
|
|
29502
29460
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/SpaceEnvironment.tsx
|
|
29503
29461
|
import { Box as Box35, Text as Text38 } from "ink";
|
|
29504
|
-
import { jsx as
|
|
29462
|
+
import { jsx as jsx45, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
29505
29463
|
function SpaceEnvironment({ spaceId, environmentId }) {
|
|
29506
29464
|
return /* @__PURE__ */ jsxs36(Box35, { gap: 1, marginTop: 1, children: [
|
|
29507
|
-
/* @__PURE__ */
|
|
29508
|
-
/* @__PURE__ */
|
|
29509
|
-
/* @__PURE__ */
|
|
29510
|
-
/* @__PURE__ */
|
|
29511
|
-
/* @__PURE__ */
|
|
29465
|
+
/* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: "Space:" }),
|
|
29466
|
+
/* @__PURE__ */ jsx45(Text38, { children: spaceId }),
|
|
29467
|
+
/* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: "/" }),
|
|
29468
|
+
/* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: "Environment:" }),
|
|
29469
|
+
/* @__PURE__ */ jsx45(Text38, { children: environmentId })
|
|
29512
29470
|
] });
|
|
29513
29471
|
}
|
|
29514
29472
|
var init_SpaceEnvironment = __esm({
|
|
@@ -29520,12 +29478,12 @@ var init_SpaceEnvironment = __esm({
|
|
|
29520
29478
|
|
|
29521
29479
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/DoneStep.tsx
|
|
29522
29480
|
import { Box as Box36, Text as Text39 } from "ink";
|
|
29523
|
-
import { Fragment as Fragment14, jsx as
|
|
29481
|
+
import { Fragment as Fragment14, jsx as jsx46, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
29524
29482
|
function EntityRows({ entity, label }) {
|
|
29525
29483
|
const plural3 = (n) => `${n} ${label}${n !== 1 ? "s" : ""}`;
|
|
29526
29484
|
return /* @__PURE__ */ jsxs37(Fragment14, { children: [
|
|
29527
29485
|
ACTIONS.filter((action) => entity[action] > 0).map((action) => /* @__PURE__ */ jsxs37(Text39, { children: [
|
|
29528
|
-
/* @__PURE__ */
|
|
29486
|
+
/* @__PURE__ */ jsx46(Text39, { color: PALETTE.success, children: "\u2713" }),
|
|
29529
29487
|
" ",
|
|
29530
29488
|
plural3(entity[action]),
|
|
29531
29489
|
" ",
|
|
@@ -29540,8 +29498,8 @@ function EntityRows({ entity, label }) {
|
|
|
29540
29498
|
}
|
|
29541
29499
|
function LinkRow({ title, url }) {
|
|
29542
29500
|
return /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", children: [
|
|
29543
|
-
/* @__PURE__ */
|
|
29544
|
-
/* @__PURE__ */
|
|
29501
|
+
/* @__PURE__ */ jsx46(Text39, { color: PALETTE.muted, children: title }),
|
|
29502
|
+
/* @__PURE__ */ jsx46(Text39, { color: PALETTE.accent, children: url })
|
|
29545
29503
|
] });
|
|
29546
29504
|
}
|
|
29547
29505
|
function DoneStep({
|
|
@@ -29564,11 +29522,11 @@ function DoneStep({
|
|
|
29564
29522
|
const success = totalFailed === 0;
|
|
29565
29523
|
const urlArgs = { host: host ?? "api.contentful.com", spaceId, environmentId };
|
|
29566
29524
|
return /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
29567
|
-
success ? /* @__PURE__ */
|
|
29568
|
-
totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */
|
|
29569
|
-
/* @__PURE__ */
|
|
29570
|
-
/* @__PURE__ */
|
|
29571
|
-
summary && /* @__PURE__ */
|
|
29525
|
+
success ? /* @__PURE__ */ jsx46(Text39, { bold: true, color: PALETTE.success, children: "Done!" }) : /* @__PURE__ */ jsx46(Text39, { bold: true, color: PALETTE.warning, children: "\u26A0 Finished with errors" }),
|
|
29526
|
+
totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */ jsx46(Text39, { color: PALETTE.muted, children: "Nothing was pushed \u2014 everything was already up to date." }) : /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", children: [
|
|
29527
|
+
/* @__PURE__ */ jsx46(EntityRows, { entity: componentTypes, label: "Component Type" }),
|
|
29528
|
+
/* @__PURE__ */ jsx46(EntityRows, { entity: designTokens, label: "Design Token" }),
|
|
29529
|
+
summary && /* @__PURE__ */ jsx46(Box36, { marginTop: 1, children: /* @__PURE__ */ jsxs37(Text39, { color: PALETTE.muted, children: [
|
|
29572
29530
|
"Push result: ",
|
|
29573
29531
|
summary.succeeded,
|
|
29574
29532
|
"/",
|
|
@@ -29582,7 +29540,7 @@ function DoneStep({
|
|
|
29582
29540
|
] }) })
|
|
29583
29541
|
] }),
|
|
29584
29542
|
failures.length > 0 && /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", children: [
|
|
29585
|
-
/* @__PURE__ */
|
|
29543
|
+
/* @__PURE__ */ jsx46(Text39, { bold: true, color: PALETTE.error, children: "Failure details" }),
|
|
29586
29544
|
failures.map((failure) => /* @__PURE__ */ jsxs37(Text39, { color: PALETTE.error, children: [
|
|
29587
29545
|
failure.entityType,
|
|
29588
29546
|
" ",
|
|
@@ -29591,11 +29549,11 @@ function DoneStep({
|
|
|
29591
29549
|
failure.message
|
|
29592
29550
|
] }, `${failure.entityType}:${failure.entityId}`))
|
|
29593
29551
|
] }),
|
|
29594
|
-
/* @__PURE__ */
|
|
29552
|
+
/* @__PURE__ */ jsx46(SpaceEnvironment, { spaceId, environmentId }),
|
|
29595
29553
|
success && totalPushed > 0 && /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", gap: 1, children: [
|
|
29596
|
-
/* @__PURE__ */
|
|
29597
|
-
/* @__PURE__ */
|
|
29598
|
-
/* @__PURE__ */
|
|
29554
|
+
/* @__PURE__ */ jsx46(Text39, { color: PALETTE.success, children: "Your design system is now in Contentful Experiences." }),
|
|
29555
|
+
/* @__PURE__ */ jsx46(LinkRow, { title: "View your components here:", url: buildPostPushUrl2(urlArgs) }),
|
|
29556
|
+
/* @__PURE__ */ jsx46(
|
|
29599
29557
|
LinkRow,
|
|
29600
29558
|
{
|
|
29601
29559
|
title: "View your design tokens here:",
|
|
@@ -29603,7 +29561,7 @@ function DoneStep({
|
|
|
29603
29561
|
}
|
|
29604
29562
|
)
|
|
29605
29563
|
] }),
|
|
29606
|
-
/* @__PURE__ */
|
|
29564
|
+
/* @__PURE__ */ jsx46(Text39, { children: "[Enter / q] Exit" })
|
|
29607
29565
|
] });
|
|
29608
29566
|
}
|
|
29609
29567
|
var ACTIONS;
|
|
@@ -29662,7 +29620,7 @@ import { useState as useState24 } from "react";
|
|
|
29662
29620
|
import { Box as Box37, Text as Text40 } from "ink";
|
|
29663
29621
|
import { readdirSync as readdirSync3 } from "node:fs";
|
|
29664
29622
|
import { dirname as dirname15, basename as basename6, join as join22 } from "node:path";
|
|
29665
|
-
import { jsx as
|
|
29623
|
+
import { jsx as jsx47, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
29666
29624
|
function autocomplete(partial) {
|
|
29667
29625
|
if (!partial) return null;
|
|
29668
29626
|
const normalized = normalizePath(partial);
|
|
@@ -29721,18 +29679,18 @@ function PathPrompt({
|
|
|
29721
29679
|
const cursor = cursorVisible ? "\u2588" : " ";
|
|
29722
29680
|
return /* @__PURE__ */ jsxs38(Box37, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
29723
29681
|
/* @__PURE__ */ jsxs38(Box37, { gap: 1, children: [
|
|
29724
|
-
/* @__PURE__ */
|
|
29682
|
+
/* @__PURE__ */ jsx47(Text40, { color: PALETTE.accent, children: "?" }),
|
|
29725
29683
|
/* @__PURE__ */ jsxs38(Text40, { bold: true, children: [
|
|
29726
29684
|
label,
|
|
29727
29685
|
":"
|
|
29728
29686
|
] }),
|
|
29729
|
-
/* @__PURE__ */
|
|
29730
|
-
/* @__PURE__ */
|
|
29687
|
+
/* @__PURE__ */ jsx47(Text40, { color: isPlaceholder ? PALETTE.muted : void 0, children: shown }),
|
|
29688
|
+
/* @__PURE__ */ jsx47(Text40, { children: cursor })
|
|
29731
29689
|
] }),
|
|
29732
29690
|
/* @__PURE__ */ jsxs38(Box37, { gap: 3, children: [
|
|
29733
|
-
/* @__PURE__ */
|
|
29734
|
-
/* @__PURE__ */
|
|
29735
|
-
/* @__PURE__ */
|
|
29691
|
+
/* @__PURE__ */ jsx47(Text40, { children: "[Enter] Confirm" }),
|
|
29692
|
+
/* @__PURE__ */ jsx47(Text40, { children: "[Tab] Autocomplete" }),
|
|
29693
|
+
/* @__PURE__ */ jsx47(Text40, { children: "[Esc] Cancel" })
|
|
29736
29694
|
] })
|
|
29737
29695
|
] });
|
|
29738
29696
|
}
|
|
@@ -29748,10 +29706,10 @@ var init_PathPrompt = __esm({
|
|
|
29748
29706
|
|
|
29749
29707
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/StepHeader.tsx
|
|
29750
29708
|
import { Box as Box38, Text as Text41 } from "ink";
|
|
29751
|
-
import { jsx as
|
|
29709
|
+
import { jsx as jsx48, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
29752
29710
|
function StepHeader({ stepNumber, totalSteps, title }) {
|
|
29753
29711
|
return /* @__PURE__ */ jsxs39(Box38, { flexDirection: "column", gap: 0, children: [
|
|
29754
|
-
/* @__PURE__ */
|
|
29712
|
+
/* @__PURE__ */ jsx48(Text41, { color: PALETTE.muted, children: "\u2500".repeat(40) }),
|
|
29755
29713
|
/* @__PURE__ */ jsxs39(Box38, { gap: 1, children: [
|
|
29756
29714
|
/* @__PURE__ */ jsxs39(Text41, { bold: true, children: [
|
|
29757
29715
|
"Step ",
|
|
@@ -29759,10 +29717,10 @@ function StepHeader({ stepNumber, totalSteps, title }) {
|
|
|
29759
29717
|
" of ",
|
|
29760
29718
|
totalSteps
|
|
29761
29719
|
] }),
|
|
29762
|
-
/* @__PURE__ */
|
|
29763
|
-
/* @__PURE__ */
|
|
29720
|
+
/* @__PURE__ */ jsx48(Text41, { bold: true, children: "\u2014" }),
|
|
29721
|
+
/* @__PURE__ */ jsx48(Text41, { bold: true, children: title })
|
|
29764
29722
|
] }),
|
|
29765
|
-
/* @__PURE__ */
|
|
29723
|
+
/* @__PURE__ */ jsx48(Text41, { color: PALETTE.muted, children: "\u2500".repeat(40) })
|
|
29766
29724
|
] });
|
|
29767
29725
|
}
|
|
29768
29726
|
var init_StepHeader = __esm({
|
|
@@ -29775,7 +29733,7 @@ var init_StepHeader = __esm({
|
|
|
29775
29733
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/use-timed-spinner.tsx
|
|
29776
29734
|
import { useEffect as useEffect18, useState as useState25 } from "react";
|
|
29777
29735
|
import { Spinner as Spinner2 } from "@inkjs/ui";
|
|
29778
|
-
import { jsx as
|
|
29736
|
+
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
29779
29737
|
function useTimedSpinner() {
|
|
29780
29738
|
const [elapsedSeconds, setElapsedSeconds] = useState25(0);
|
|
29781
29739
|
useEffect18(() => {
|
|
@@ -29787,7 +29745,7 @@ function useTimedSpinner() {
|
|
|
29787
29745
|
const mins = Math.floor(elapsedSeconds / 60);
|
|
29788
29746
|
const secs = elapsedSeconds % 60;
|
|
29789
29747
|
return {
|
|
29790
|
-
spinner: /* @__PURE__ */
|
|
29748
|
+
spinner: /* @__PURE__ */ jsx49(Spinner2, {}),
|
|
29791
29749
|
elapsed: mins > 0 ? `${mins}m ${secs}s` : `${secs}s`
|
|
29792
29750
|
};
|
|
29793
29751
|
}
|
|
@@ -29800,21 +29758,21 @@ var init_use_timed_spinner = __esm({
|
|
|
29800
29758
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PushingStep.tsx
|
|
29801
29759
|
import { Box as Box39, Text as Text42 } from "ink";
|
|
29802
29760
|
import { ProgressBar as ProgressBar2, ThemeProvider as ThemeProvider2 } from "@inkjs/ui";
|
|
29803
|
-
import { jsx as
|
|
29761
|
+
import { jsx as jsx50, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
29804
29762
|
function PushingStep({ stepNumber, totalSteps, progress }) {
|
|
29805
29763
|
const { elapsed } = useTimedSpinner();
|
|
29806
29764
|
const operationId = progress && progress.kind === "queued" ? progress.operationId : null;
|
|
29807
29765
|
const showGlobal = progress && progress.kind === "progress";
|
|
29808
29766
|
const showCurrent = progress && progress.kind === "progress" && progress.current ? progress.current : null;
|
|
29809
29767
|
return /* @__PURE__ */ jsxs40(Box39, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
29810
|
-
/* @__PURE__ */
|
|
29811
|
-
/* @__PURE__ */
|
|
29768
|
+
/* @__PURE__ */ jsx50(StepHeader, { stepNumber, totalSteps, title: "Push to Contentful" }),
|
|
29769
|
+
/* @__PURE__ */ jsx50(Text42, { children: "Writing component types and design tokens to your Contentful space..." }),
|
|
29812
29770
|
operationId && /* @__PURE__ */ jsxs40(Box39, { gap: 1, children: [
|
|
29813
|
-
/* @__PURE__ */
|
|
29814
|
-
/* @__PURE__ */
|
|
29771
|
+
/* @__PURE__ */ jsx50(Text42, { color: PALETTE.muted, children: "Operation:" }),
|
|
29772
|
+
/* @__PURE__ */ jsx50(Text42, { children: operationId })
|
|
29815
29773
|
] }),
|
|
29816
|
-
showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */
|
|
29817
|
-
/* @__PURE__ */
|
|
29774
|
+
showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */ jsx50(Box39, { gap: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs40(Box39, { gap: 2, children: [
|
|
29775
|
+
/* @__PURE__ */ jsx50(Box39, { width: 40, children: /* @__PURE__ */ jsx50(ThemeProvider2, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx50(ProgressBar2, { value: Math.round(progress.processed / progress.total * 100) }) }) }),
|
|
29818
29776
|
/* @__PURE__ */ jsxs40(Text42, { color: PALETTE.muted, children: [
|
|
29819
29777
|
progress.processed,
|
|
29820
29778
|
"/",
|
|
@@ -29823,10 +29781,10 @@ function PushingStep({ stepNumber, totalSteps, progress }) {
|
|
|
29823
29781
|
] })
|
|
29824
29782
|
] }) }),
|
|
29825
29783
|
showCurrent && /* @__PURE__ */ jsxs40(Box39, { gap: 1, children: [
|
|
29826
|
-
/* @__PURE__ */
|
|
29827
|
-
/* @__PURE__ */
|
|
29784
|
+
/* @__PURE__ */ jsx50(Text42, { color: PALETTE.muted, children: "Now processing:" }),
|
|
29785
|
+
/* @__PURE__ */ jsx50(Text42, { children: showCurrent })
|
|
29828
29786
|
] }),
|
|
29829
|
-
/* @__PURE__ */
|
|
29787
|
+
/* @__PURE__ */ jsx50(Box39, { marginTop: 1, children: /* @__PURE__ */ jsxs40(Text42, { color: PALETTE.muted, children: [
|
|
29830
29788
|
"Elapsed: ",
|
|
29831
29789
|
elapsed
|
|
29832
29790
|
] }) })
|
|
@@ -30026,7 +29984,7 @@ var init_preview_confirmation_input = __esm({
|
|
|
30026
29984
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/WizardPreviewStep.tsx
|
|
30027
29985
|
import { useEffect as useEffect19, useState as useState26, useMemo as useMemo5 } from "react";
|
|
30028
29986
|
import { Box as Box40, Text as Text43 } from "ink";
|
|
30029
|
-
import { Fragment as Fragment15, jsx as
|
|
29987
|
+
import { Fragment as Fragment15, jsx as jsx51, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
30030
29988
|
function buildPreviewSummaryLines(preview) {
|
|
30031
29989
|
const lines = [];
|
|
30032
29990
|
const { components, tokens } = preview;
|
|
@@ -30281,9 +30239,9 @@ function WizardPreviewStep({
|
|
|
30281
30239
|
}
|
|
30282
30240
|
});
|
|
30283
30241
|
return /* @__PURE__ */ jsxs41(Box40, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 2, children: [
|
|
30284
|
-
/* @__PURE__ */
|
|
30242
|
+
/* @__PURE__ */ jsx51(StepHeader, { stepNumber, totalSteps, title: "Push to Contentful" }),
|
|
30285
30243
|
hasAnything ? /* @__PURE__ */ jsxs41(Fragment15, { children: [
|
|
30286
|
-
/* @__PURE__ */
|
|
30244
|
+
/* @__PURE__ */ jsx51(Text43, { children: "Here's what will happen in your space:" }),
|
|
30287
30245
|
/* @__PURE__ */ jsxs41(
|
|
30288
30246
|
WindowedPanel,
|
|
30289
30247
|
{
|
|
@@ -30292,24 +30250,24 @@ function WizardPreviewStep({
|
|
|
30292
30250
|
title: diffExpanded ? `Diff (${diffLines.length} lines)` : "",
|
|
30293
30251
|
focused: false,
|
|
30294
30252
|
children: [
|
|
30295
|
-
activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */
|
|
30296
|
-
/* @__PURE__ */
|
|
30253
|
+
activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */ jsx51(Text43, { color: line.color === "gray" ? PALETTE.muted : line.color, wrap: "truncate-end", children: line.text }, line.key)),
|
|
30254
|
+
/* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, wrap: "truncate-end", children: formatPreviewScrollIndicator(activeLines.length, boundedScrollOffset, viewportHeight) })
|
|
30297
30255
|
]
|
|
30298
30256
|
}
|
|
30299
30257
|
)
|
|
30300
|
-
] }) : /* @__PURE__ */
|
|
30301
|
-
breakingWithImpact && /* @__PURE__ */
|
|
30302
|
-
/* @__PURE__ */
|
|
30258
|
+
] }) : /* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: "Nothing to push \u2014 everything is already up to date." }),
|
|
30259
|
+
breakingWithImpact && /* @__PURE__ */ jsx51(Box40, { marginTop: 1, children: /* @__PURE__ */ jsx51(Text43, { color: PALETTE.error, bold: true, children: "\u26A0 Breaking changes will affect downstream entities. Press Enter to acknowledge and apply." }) }),
|
|
30260
|
+
/* @__PURE__ */ jsx51(SpaceEnvironment, { spaceId, environmentId }),
|
|
30303
30261
|
/* @__PURE__ */ jsxs41(Box40, { gap: 3, marginTop: 1, children: [
|
|
30304
|
-
/* @__PURE__ */
|
|
30262
|
+
/* @__PURE__ */ jsx51(Text43, { children: "[Enter] Push to Contentful" }),
|
|
30305
30263
|
/* @__PURE__ */ jsxs41(Text43, { children: [
|
|
30306
30264
|
"[d] ",
|
|
30307
30265
|
diffExpanded ? "Hide" : "Show",
|
|
30308
30266
|
" diff"
|
|
30309
30267
|
] }),
|
|
30310
|
-
diffExpanded && /* @__PURE__ */
|
|
30311
|
-
onEdit && /* @__PURE__ */
|
|
30312
|
-
/* @__PURE__ */
|
|
30268
|
+
diffExpanded && /* @__PURE__ */ jsx51(Text43, { children: "[\u2191\u2193] Scroll [f/b] Page" }),
|
|
30269
|
+
onEdit && /* @__PURE__ */ jsx51(Text43, { children: "[e] Edit definitions" }),
|
|
30270
|
+
/* @__PURE__ */ jsx51(Text43, { children: "[q] Cancel" })
|
|
30313
30271
|
] })
|
|
30314
30272
|
] });
|
|
30315
30273
|
}
|
|
@@ -30341,7 +30299,7 @@ var init_run_teaser = __esm({
|
|
|
30341
30299
|
|
|
30342
30300
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/screen.tsx
|
|
30343
30301
|
import { Box as Box41 } from "ink";
|
|
30344
|
-
import { jsx as
|
|
30302
|
+
import { jsx as jsx52, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
30345
30303
|
function totalStepsFor(state2) {
|
|
30346
30304
|
const hasTokenStage = !!state2.tokensPath || !!state2.rawTokensPath;
|
|
30347
30305
|
return 3 + (hasTokenStage ? 1 : 0) + 2 + (state2.mapTokensEligible === true ? 1 : 0);
|
|
@@ -30362,7 +30320,7 @@ function FlowScreen({
|
|
|
30362
30320
|
const content = (() => {
|
|
30363
30321
|
switch (state2.step) {
|
|
30364
30322
|
case "final-review":
|
|
30365
|
-
return /* @__PURE__ */
|
|
30323
|
+
return /* @__PURE__ */ jsx52(
|
|
30366
30324
|
GenerateReviewStep,
|
|
30367
30325
|
{
|
|
30368
30326
|
extractSessionId: state2.extractSessionId,
|
|
@@ -30379,7 +30337,7 @@ function FlowScreen({
|
|
|
30379
30337
|
}
|
|
30380
30338
|
);
|
|
30381
30339
|
case "previewing":
|
|
30382
|
-
return /* @__PURE__ */
|
|
30340
|
+
return /* @__PURE__ */ jsx52(
|
|
30383
30341
|
RunningStep,
|
|
30384
30342
|
{
|
|
30385
30343
|
stepNumber: totalSteps,
|
|
@@ -30390,7 +30348,7 @@ function FlowScreen({
|
|
|
30390
30348
|
);
|
|
30391
30349
|
case "preview-gate":
|
|
30392
30350
|
if (!state2.serverPreview) return null;
|
|
30393
|
-
return /* @__PURE__ */
|
|
30351
|
+
return /* @__PURE__ */ jsx52(
|
|
30394
30352
|
WizardPreviewStep,
|
|
30395
30353
|
{
|
|
30396
30354
|
preview: state2.serverPreview,
|
|
@@ -30404,9 +30362,9 @@ function FlowScreen({
|
|
|
30404
30362
|
}
|
|
30405
30363
|
);
|
|
30406
30364
|
case "pushing":
|
|
30407
|
-
return /* @__PURE__ */
|
|
30365
|
+
return /* @__PURE__ */ jsx52(PushingStep, { stepNumber: totalSteps, totalSteps, progress: state2.pushProgress });
|
|
30408
30366
|
case "path-prompt":
|
|
30409
|
-
return /* @__PURE__ */
|
|
30367
|
+
return /* @__PURE__ */ jsx52(
|
|
30410
30368
|
PathPrompt,
|
|
30411
30369
|
{
|
|
30412
30370
|
defaultPath: state2.outDir,
|
|
@@ -30415,7 +30373,7 @@ function FlowScreen({
|
|
|
30415
30373
|
}
|
|
30416
30374
|
);
|
|
30417
30375
|
case "printing":
|
|
30418
|
-
return /* @__PURE__ */
|
|
30376
|
+
return /* @__PURE__ */ jsx52(
|
|
30419
30377
|
RunningStep,
|
|
30420
30378
|
{
|
|
30421
30379
|
stepNumber: totalSteps,
|
|
@@ -30426,7 +30384,7 @@ function FlowScreen({
|
|
|
30426
30384
|
);
|
|
30427
30385
|
case "print-gate": {
|
|
30428
30386
|
const teaser = buildRunTeaserLine(state2.lastRunId);
|
|
30429
|
-
return /* @__PURE__ */
|
|
30387
|
+
return /* @__PURE__ */ jsx52(
|
|
30430
30388
|
GateStep,
|
|
30431
30389
|
{
|
|
30432
30390
|
message: "Files saved",
|
|
@@ -30440,7 +30398,7 @@ function FlowScreen({
|
|
|
30440
30398
|
}
|
|
30441
30399
|
case "done": {
|
|
30442
30400
|
const totalFailed = state2.pushResult.componentTypes.failed + state2.pushResult.designTokens.failed;
|
|
30443
|
-
return /* @__PURE__ */
|
|
30401
|
+
return /* @__PURE__ */ jsx52(
|
|
30444
30402
|
DoneStep,
|
|
30445
30403
|
{
|
|
30446
30404
|
componentTypes: state2.pushResult.componentTypes,
|
|
@@ -30455,7 +30413,7 @@ function FlowScreen({
|
|
|
30455
30413
|
);
|
|
30456
30414
|
}
|
|
30457
30415
|
case "preview-validation-error":
|
|
30458
|
-
return /* @__PURE__ */
|
|
30416
|
+
return /* @__PURE__ */ jsx52(
|
|
30459
30417
|
PreviewValidationErrorScreen,
|
|
30460
30418
|
{
|
|
30461
30419
|
errors: state2.previewValidationErrors,
|
|
@@ -30466,7 +30424,7 @@ function FlowScreen({
|
|
|
30466
30424
|
}
|
|
30467
30425
|
);
|
|
30468
30426
|
case "error":
|
|
30469
|
-
return /* @__PURE__ */
|
|
30427
|
+
return /* @__PURE__ */ jsx52(
|
|
30470
30428
|
ErrorStep,
|
|
30471
30429
|
{
|
|
30472
30430
|
stepName: state2.errorStep,
|
|
@@ -30478,7 +30436,7 @@ function FlowScreen({
|
|
|
30478
30436
|
}
|
|
30479
30437
|
})();
|
|
30480
30438
|
return /* @__PURE__ */ jsxs42(Box41, { flexDirection: "column", children: [
|
|
30481
|
-
/* @__PURE__ */
|
|
30439
|
+
/* @__PURE__ */ jsx52(CustomPromptBanner, { generatePromptPath }),
|
|
30482
30440
|
content
|
|
30483
30441
|
] });
|
|
30484
30442
|
}
|
|
@@ -31287,9 +31245,9 @@ var init_controller = __esm({
|
|
|
31287
31245
|
});
|
|
31288
31246
|
|
|
31289
31247
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/use-flow.ts
|
|
31290
|
-
import { useEffect as useEffect20, useRef as
|
|
31248
|
+
import { useEffect as useEffect20, useRef as useRef12, useSyncExternalStore } from "react";
|
|
31291
31249
|
function useFlow(start, options = {}) {
|
|
31292
|
-
const controller =
|
|
31250
|
+
const controller = useRef12();
|
|
31293
31251
|
if (start && !controller.current) {
|
|
31294
31252
|
try {
|
|
31295
31253
|
startWizardLog();
|
|
@@ -31682,14 +31640,14 @@ var init_help_info = __esm({
|
|
|
31682
31640
|
|
|
31683
31641
|
// packages/experience-design-system-cli/src/tui/help/PageContainer.tsx
|
|
31684
31642
|
import { useEffect as useEffect21, useState as useState27 } from "react";
|
|
31685
|
-
import { Box as Box42, Text as Text44, useInput as
|
|
31686
|
-
import { Fragment as Fragment16, jsx as
|
|
31643
|
+
import { Box as Box42, Text as Text44, useInput as useInput9 } from "ink";
|
|
31644
|
+
import { Fragment as Fragment16, jsx as jsx53, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
31687
31645
|
function Section({ title, rows }) {
|
|
31688
31646
|
return /* @__PURE__ */ jsxs43(Box42, { flexDirection: "column", children: [
|
|
31689
|
-
/* @__PURE__ */
|
|
31647
|
+
/* @__PURE__ */ jsx53(Text44, { bold: true, color: PALETTE.accent, children: title }),
|
|
31690
31648
|
rows.map((row) => /* @__PURE__ */ jsxs43(Box42, { gap: 1, children: [
|
|
31691
|
-
/* @__PURE__ */
|
|
31692
|
-
/* @__PURE__ */
|
|
31649
|
+
/* @__PURE__ */ jsx53(Box42, { width: 16, flexShrink: 0, children: /* @__PURE__ */ jsx53(Text44, { color: PALETTE.muted, children: row.label }) }),
|
|
31650
|
+
/* @__PURE__ */ jsx53(Text44, { children: row.value })
|
|
31693
31651
|
] }, row.label))
|
|
31694
31652
|
] });
|
|
31695
31653
|
}
|
|
@@ -31703,7 +31661,7 @@ function HelpScreen({ onDone }) {
|
|
|
31703
31661
|
void finishDebugRun({ outputs: {}, status: "success", exitMethod });
|
|
31704
31662
|
onDone();
|
|
31705
31663
|
};
|
|
31706
|
-
|
|
31664
|
+
useInput9((input, key) => {
|
|
31707
31665
|
if (key.return) {
|
|
31708
31666
|
leave("saved");
|
|
31709
31667
|
return;
|
|
@@ -31714,13 +31672,13 @@ function HelpScreen({ onDone }) {
|
|
|
31714
31672
|
}
|
|
31715
31673
|
});
|
|
31716
31674
|
return /* @__PURE__ */ jsxs43(Box42, { flexDirection: "column", paddingX: 2, paddingY: 1, gap: 1, children: [
|
|
31717
|
-
/* @__PURE__ */
|
|
31675
|
+
/* @__PURE__ */ jsx53(Text44, { bold: true, children: "Help" }),
|
|
31718
31676
|
info ? /* @__PURE__ */ jsxs43(Fragment16, { children: [
|
|
31719
|
-
/* @__PURE__ */
|
|
31720
|
-
/* @__PURE__ */
|
|
31721
|
-
/* @__PURE__ */
|
|
31722
|
-
] }) : /* @__PURE__ */
|
|
31723
|
-
/* @__PURE__ */
|
|
31677
|
+
/* @__PURE__ */ jsx53(Section, { title: "Where things are stored", rows: info.storage }),
|
|
31678
|
+
/* @__PURE__ */ jsx53(Section, { title: "Troubleshooting", rows: info.troubleshooting }),
|
|
31679
|
+
/* @__PURE__ */ jsx53(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." })
|
|
31680
|
+
] }) : /* @__PURE__ */ jsx53(Text44, { color: PALETTE.accent, children: "Loading..." }),
|
|
31681
|
+
/* @__PURE__ */ jsx53(
|
|
31724
31682
|
ControlHints,
|
|
31725
31683
|
{
|
|
31726
31684
|
hints: [
|
|
@@ -31743,8 +31701,8 @@ var init_PageContainer2 = __esm({
|
|
|
31743
31701
|
|
|
31744
31702
|
// packages/experience-design-system-cli/src/tui/settings/PageContainer.tsx
|
|
31745
31703
|
import { useState as useState28 } from "react";
|
|
31746
|
-
import { Box as Box43, Text as Text45, useInput as
|
|
31747
|
-
import { jsx as
|
|
31704
|
+
import { Box as Box43, Text as Text45, useInput as useInput10 } from "ink";
|
|
31705
|
+
import { jsx as jsx54, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
31748
31706
|
function SettingsScreen({
|
|
31749
31707
|
onNavigate,
|
|
31750
31708
|
onBack
|
|
@@ -31755,7 +31713,7 @@ function SettingsScreen({
|
|
|
31755
31713
|
{ label: "Opt-in Analytics", screen: "settings-opt-in-analytics" },
|
|
31756
31714
|
{ label: "Debug Mode", screen: "settings-debug-mode" }
|
|
31757
31715
|
];
|
|
31758
|
-
|
|
31716
|
+
useInput10((input, key) => {
|
|
31759
31717
|
if (key.upArrow) {
|
|
31760
31718
|
setFocusIdx((i) => (i - 1 + items.length) % items.length);
|
|
31761
31719
|
return;
|
|
@@ -31776,14 +31734,14 @@ function SettingsScreen({
|
|
|
31776
31734
|
}
|
|
31777
31735
|
});
|
|
31778
31736
|
return /* @__PURE__ */ jsxs44(Box43, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
31779
|
-
/* @__PURE__ */
|
|
31780
|
-
/* @__PURE__ */
|
|
31737
|
+
/* @__PURE__ */ jsx54(Text45, { bold: true, children: "Settings" }),
|
|
31738
|
+
/* @__PURE__ */ jsx54(Text45, { color: PALETTE.muted, children: " " }),
|
|
31781
31739
|
items.map((item, i) => /* @__PURE__ */ jsxs44(Text45, { color: i === focusIdx ? PALETTE.accent : void 0, children: [
|
|
31782
31740
|
i === focusIdx ? "> " : " ",
|
|
31783
31741
|
item.label
|
|
31784
31742
|
] }, item.label)),
|
|
31785
|
-
/* @__PURE__ */
|
|
31786
|
-
/* @__PURE__ */
|
|
31743
|
+
/* @__PURE__ */ jsx54(Text45, { children: " " }),
|
|
31744
|
+
/* @__PURE__ */ jsx54(
|
|
31787
31745
|
ControlHints,
|
|
31788
31746
|
{
|
|
31789
31747
|
hints: [
|
|
@@ -32092,8 +32050,9 @@ var init_agent_debug = __esm({
|
|
|
32092
32050
|
|
|
32093
32051
|
// packages/experience-design-system-cli/src/tui/settings/shared/FieldForm.tsx
|
|
32094
32052
|
import { useState as useState29 } from "react";
|
|
32095
|
-
import { Box as Box44, Text as Text46, useInput as
|
|
32096
|
-
import
|
|
32053
|
+
import { Box as Box44, Text as Text46, useInput as useInput11 } from "ink";
|
|
32054
|
+
import TextInput4 from "ink-text-input";
|
|
32055
|
+
import { Fragment as Fragment17, jsx as jsx55, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
32097
32056
|
function formLabelWidth(rows) {
|
|
32098
32057
|
return Math.max(...rows.map((row) => row.label.length));
|
|
32099
32058
|
}
|
|
@@ -32103,8 +32062,8 @@ function FormReadOnlyRow({
|
|
|
32103
32062
|
children
|
|
32104
32063
|
}) {
|
|
32105
32064
|
return /* @__PURE__ */ jsxs45(Box44, { gap: 1, children: [
|
|
32106
|
-
/* @__PURE__ */
|
|
32107
|
-
/* @__PURE__ */
|
|
32065
|
+
/* @__PURE__ */ jsx55(Text46, { children: " " }),
|
|
32066
|
+
/* @__PURE__ */ jsx55(Box44, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: label }) }),
|
|
32108
32067
|
children
|
|
32109
32068
|
] });
|
|
32110
32069
|
}
|
|
@@ -32128,7 +32087,7 @@ function FieldForm({
|
|
|
32128
32087
|
const labelWidth = formLabelWidth([...fields2, ...actions]);
|
|
32129
32088
|
const currentField = active < fields2.length ? fields2[active] : void 0;
|
|
32130
32089
|
const currentAction = currentField ? void 0 : actions[active - fields2.length];
|
|
32131
|
-
|
|
32090
|
+
useInput11((input, key) => {
|
|
32132
32091
|
if (busy) return;
|
|
32133
32092
|
if (editing) {
|
|
32134
32093
|
if (key.escape && currentField) {
|
|
@@ -32145,7 +32104,7 @@ function FieldForm({
|
|
|
32145
32104
|
onSave();
|
|
32146
32105
|
return;
|
|
32147
32106
|
}
|
|
32148
|
-
if (
|
|
32107
|
+
if (input === "c" && currentField) {
|
|
32149
32108
|
onChange(currentField.key, "");
|
|
32150
32109
|
return;
|
|
32151
32110
|
}
|
|
@@ -32166,11 +32125,11 @@ function FieldForm({
|
|
|
32166
32125
|
}
|
|
32167
32126
|
}
|
|
32168
32127
|
});
|
|
32169
|
-
const pointer = (isActive) => /* @__PURE__ */
|
|
32128
|
+
const pointer = (isActive) => /* @__PURE__ */ jsx55(Text46, { color: isActive ? PALETTE.accent : void 0, children: isActive ? "\u276F" : " " });
|
|
32170
32129
|
return /* @__PURE__ */ jsxs45(Box44, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
32171
|
-
/* @__PURE__ */
|
|
32172
|
-
subtitle && /* @__PURE__ */
|
|
32173
|
-
/* @__PURE__ */
|
|
32130
|
+
/* @__PURE__ */ jsx55(Text46, { bold: true, children: title }),
|
|
32131
|
+
subtitle && /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: subtitle }),
|
|
32132
|
+
/* @__PURE__ */ jsx55(Text46, { children: " " }),
|
|
32174
32133
|
/* @__PURE__ */ jsxs45(Box44, { flexDirection: "column", children: [
|
|
32175
32134
|
fields2.map((field, index) => {
|
|
32176
32135
|
const isActive = index === active;
|
|
@@ -32178,34 +32137,34 @@ function FieldForm({
|
|
|
32178
32137
|
const display = field.masked ? "\u2022".repeat(value.length) : value;
|
|
32179
32138
|
return /* @__PURE__ */ jsxs45(Box44, { gap: 1, children: [
|
|
32180
32139
|
pointer(isActive),
|
|
32181
|
-
/* @__PURE__ */
|
|
32182
|
-
isActive && editing ? /* @__PURE__ */
|
|
32183
|
-
|
|
32140
|
+
/* @__PURE__ */ jsx55(Box44, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx55(Text46, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
|
|
32141
|
+
isActive && editing ? /* @__PURE__ */ jsx55(
|
|
32142
|
+
TextInput4,
|
|
32184
32143
|
{
|
|
32185
32144
|
value,
|
|
32186
32145
|
onChange: (next) => onChange(field.key, next),
|
|
32187
32146
|
onSubmit: () => setEditing(false),
|
|
32188
32147
|
mask: field.masked ? "\u2022" : void 0
|
|
32189
32148
|
}
|
|
32190
|
-
) : display ? /* @__PURE__ */
|
|
32149
|
+
) : display ? /* @__PURE__ */ jsx55(Text46, { bold: true, children: display }) : (
|
|
32191
32150
|
// An empty value shows its hint (or "(empty)") in the value's place, not after an empty element, so the
|
|
32192
32151
|
// text starts in the same column as every other row's.
|
|
32193
|
-
/* @__PURE__ */
|
|
32152
|
+
/* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: field.hint ?? "(empty)" })
|
|
32194
32153
|
),
|
|
32195
|
-
display && field.hint && /* @__PURE__ */
|
|
32154
|
+
display && field.hint && /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: field.hint })
|
|
32196
32155
|
] }, field.key);
|
|
32197
32156
|
}),
|
|
32198
32157
|
actions.map((action, index) => {
|
|
32199
32158
|
const isActive = fields2.length + index === active;
|
|
32200
32159
|
return /* @__PURE__ */ jsxs45(Box44, { gap: 1, children: [
|
|
32201
32160
|
pointer(isActive),
|
|
32202
|
-
/* @__PURE__ */
|
|
32203
|
-
/* @__PURE__ */
|
|
32161
|
+
/* @__PURE__ */ jsx55(Box44, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx55(Text46, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: action.label }) }),
|
|
32162
|
+
/* @__PURE__ */ jsx55(Text46, { color: action.running ? PALETTE.accent : PALETTE.muted, children: action.running ? action.runningText ?? "running..." : action.description })
|
|
32204
32163
|
] }, action.label);
|
|
32205
32164
|
})
|
|
32206
32165
|
] }),
|
|
32207
32166
|
notice && /* @__PURE__ */ jsxs45(Fragment17, { children: [
|
|
32208
|
-
/* @__PURE__ */
|
|
32167
|
+
/* @__PURE__ */ jsx55(Text46, { children: " " }),
|
|
32209
32168
|
/* @__PURE__ */ jsxs45(Text46, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
32210
32169
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
32211
32170
|
" ",
|
|
@@ -32213,20 +32172,19 @@ function FieldForm({
|
|
|
32213
32172
|
] })
|
|
32214
32173
|
] }),
|
|
32215
32174
|
children,
|
|
32216
|
-
/* @__PURE__ */
|
|
32217
|
-
/* @__PURE__ */
|
|
32175
|
+
/* @__PURE__ */ jsx55(Text46, { children: " " }),
|
|
32176
|
+
/* @__PURE__ */ jsx55(
|
|
32218
32177
|
ControlHints,
|
|
32219
32178
|
{
|
|
32220
32179
|
hints: editing ? [
|
|
32221
32180
|
{ keys: "type", label: "edit" },
|
|
32222
32181
|
{ keys: "\u2190/\u2192", label: "move cursor" },
|
|
32223
32182
|
{ keys: "\u23CE", label: "done" },
|
|
32224
|
-
{ keys: "Ctrl+D", label: "clear" },
|
|
32225
32183
|
{ keys: "Esc", label: "cancel edit" }
|
|
32226
32184
|
] : [
|
|
32227
32185
|
{ keys: "\u2191/\u2193", label: "move" },
|
|
32228
32186
|
{ keys: "\u23CE", label: currentAction ? currentAction.hint : "edit" },
|
|
32229
|
-
...currentField ? [{ keys: "
|
|
32187
|
+
...currentField ? [{ keys: "c", label: "clear" }] : [],
|
|
32230
32188
|
{ keys: "s", label: "save" },
|
|
32231
32189
|
{ keys: "Esc/q", label: "back without saving" }
|
|
32232
32190
|
]
|
|
@@ -32239,20 +32197,19 @@ var init_FieldForm = __esm({
|
|
|
32239
32197
|
"use strict";
|
|
32240
32198
|
init_theme();
|
|
32241
32199
|
init_control_hints();
|
|
32242
|
-
init_ClearableTextInput();
|
|
32243
32200
|
}
|
|
32244
32201
|
});
|
|
32245
32202
|
|
|
32246
32203
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentStatusBadge.tsx
|
|
32247
32204
|
import { Text as Text47 } from "ink";
|
|
32248
|
-
import { jsx as
|
|
32205
|
+
import { jsx as jsx56 } from "react/jsx-runtime";
|
|
32249
32206
|
function AgentStatusBadge({
|
|
32250
32207
|
name,
|
|
32251
32208
|
checks,
|
|
32252
32209
|
binary
|
|
32253
32210
|
}) {
|
|
32254
32211
|
const { symbol, text, tone } = LIST_STATUS[checks ? statusFromChecks(name, checks, binary) : "checking"];
|
|
32255
|
-
return /* @__PURE__ */
|
|
32212
|
+
return /* @__PURE__ */ jsx56(Text47, { color: TONE_COLOR[tone], children: `${symbol} ${text}` });
|
|
32256
32213
|
}
|
|
32257
32214
|
var TONE_COLOR;
|
|
32258
32215
|
var init_AgentStatusBadge = __esm({
|
|
@@ -32271,11 +32228,11 @@ var init_AgentStatusBadge = __esm({
|
|
|
32271
32228
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentDetail.tsx
|
|
32272
32229
|
import { useEffect as useEffect22, useState as useState30 } from "react";
|
|
32273
32230
|
import { Box as Box45, Text as Text48 } from "ink";
|
|
32274
|
-
import { jsx as
|
|
32231
|
+
import { jsx as jsx57, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
32275
32232
|
function StatusHeading() {
|
|
32276
32233
|
return /* @__PURE__ */ jsxs46(Box45, { gap: 1, children: [
|
|
32277
|
-
/* @__PURE__ */
|
|
32278
|
-
/* @__PURE__ */
|
|
32234
|
+
/* @__PURE__ */ jsx57(Text48, { bold: true, color: PALETTE.muted, children: "STATUS" }),
|
|
32235
|
+
/* @__PURE__ */ jsx57(Text48, { color: PALETTE.muted, children: "\xB7 read only" })
|
|
32279
32236
|
] });
|
|
32280
32237
|
}
|
|
32281
32238
|
function AgentDetail({
|
|
@@ -32338,7 +32295,7 @@ function AgentDetail({
|
|
|
32338
32295
|
};
|
|
32339
32296
|
const formFields = fields(name);
|
|
32340
32297
|
const labelWidth = formLabelWidth([...formFields, action]);
|
|
32341
|
-
return /* @__PURE__ */
|
|
32298
|
+
return /* @__PURE__ */ jsx57(
|
|
32342
32299
|
FieldForm,
|
|
32343
32300
|
{
|
|
32344
32301
|
title: AGENT_LABELS[name],
|
|
@@ -32356,8 +32313,8 @@ function AgentDetail({
|
|
|
32356
32313
|
notice: testing ? null : notice,
|
|
32357
32314
|
busy: saving || testing,
|
|
32358
32315
|
children: /* @__PURE__ */ jsxs46(Box45, { flexDirection: "column", marginTop: 1, children: [
|
|
32359
|
-
/* @__PURE__ */
|
|
32360
|
-
statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */
|
|
32316
|
+
/* @__PURE__ */ jsx57(StatusHeading, {}),
|
|
32317
|
+
statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */ jsx57(FormReadOnlyRow, { label: row.label, labelWidth, children: /* @__PURE__ */ jsx57(Text48, { color: TONE_COLOR[row.tone], children: row.value }) }, row.label))
|
|
32361
32318
|
] })
|
|
32362
32319
|
}
|
|
32363
32320
|
);
|
|
@@ -32382,9 +32339,9 @@ var init_AgentDetail = __esm({
|
|
|
32382
32339
|
});
|
|
32383
32340
|
|
|
32384
32341
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentsScreen.tsx
|
|
32385
|
-
import { useEffect as useEffect23, useRef as
|
|
32386
|
-
import { Box as Box46, Text as Text49, useInput as
|
|
32387
|
-
import { Fragment as Fragment18, jsx as
|
|
32342
|
+
import { useEffect as useEffect23, useRef as useRef13, useState as useState31 } from "react";
|
|
32343
|
+
import { Box as Box46, Text as Text49, useInput as useInput12 } from "ink";
|
|
32344
|
+
import { Fragment as Fragment18, jsx as jsx58, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
32388
32345
|
function AgentsScreen({ onDone }) {
|
|
32389
32346
|
const [config, setConfig] = useState31(null);
|
|
32390
32347
|
const [focus, setFocus] = useState31(0);
|
|
@@ -32393,7 +32350,7 @@ function AgentsScreen({ onDone }) {
|
|
|
32393
32350
|
const [saving, setSaving] = useState31(false);
|
|
32394
32351
|
const [loadError, setLoadError] = useState31(null);
|
|
32395
32352
|
const [checks, setChecks] = useState31({});
|
|
32396
|
-
const visit =
|
|
32353
|
+
const visit = useRef13({
|
|
32397
32354
|
trail: createTrail(),
|
|
32398
32355
|
before: void 0,
|
|
32399
32356
|
environment: void 0,
|
|
@@ -32460,7 +32417,7 @@ function AgentsScreen({ onDone }) {
|
|
|
32460
32417
|
setNotice({ kind: "error", text: `Default agent not changed: ${visit.error}` });
|
|
32461
32418
|
}).finally(() => setSaving(false));
|
|
32462
32419
|
};
|
|
32463
|
-
|
|
32420
|
+
useInput12((input, key) => {
|
|
32464
32421
|
if (loadError && (key.escape || input === "q")) {
|
|
32465
32422
|
endVisit(null);
|
|
32466
32423
|
onDone();
|
|
@@ -32493,20 +32450,20 @@ function AgentsScreen({ onDone }) {
|
|
|
32493
32450
|
});
|
|
32494
32451
|
if (!config) {
|
|
32495
32452
|
return /* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
32496
|
-
/* @__PURE__ */
|
|
32497
|
-
/* @__PURE__ */
|
|
32453
|
+
/* @__PURE__ */ jsx58(Text49, { bold: true, children: "Agents" }),
|
|
32454
|
+
/* @__PURE__ */ jsx58(Text49, { children: " " }),
|
|
32498
32455
|
loadError ? /* @__PURE__ */ jsxs47(Fragment18, { children: [
|
|
32499
32456
|
/* @__PURE__ */ jsxs47(Text49, { color: PALETTE.error, children: [
|
|
32500
32457
|
"\u2717 Could not read the settings: ",
|
|
32501
32458
|
loadError
|
|
32502
32459
|
] }),
|
|
32503
|
-
/* @__PURE__ */
|
|
32504
|
-
/* @__PURE__ */
|
|
32505
|
-
] }) : /* @__PURE__ */
|
|
32460
|
+
/* @__PURE__ */ jsx58(Text49, { children: " " }),
|
|
32461
|
+
/* @__PURE__ */ jsx58(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
|
|
32462
|
+
] }) : /* @__PURE__ */ jsx58(Text49, { color: PALETTE.accent, children: "Loading..." })
|
|
32506
32463
|
] });
|
|
32507
32464
|
}
|
|
32508
32465
|
if (open) {
|
|
32509
|
-
return /* @__PURE__ */
|
|
32466
|
+
return /* @__PURE__ */ jsx58(
|
|
32510
32467
|
AgentDetail,
|
|
32511
32468
|
{
|
|
32512
32469
|
name: open,
|
|
@@ -32528,46 +32485,46 @@ function AgentsScreen({ onDone }) {
|
|
|
32528
32485
|
}
|
|
32529
32486
|
const focusedAgent = AGENT_NAMES[focus];
|
|
32530
32487
|
return /* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
32531
|
-
/* @__PURE__ */
|
|
32532
|
-
/* @__PURE__ */
|
|
32533
|
-
/* @__PURE__ */
|
|
32488
|
+
/* @__PURE__ */ jsx58(Text49, { bold: true, children: "Agents" }),
|
|
32489
|
+
/* @__PURE__ */ jsx58(Text49, { color: PALETTE.muted, children: "The coding agent the CLI runs, and what was found for each one." }),
|
|
32490
|
+
/* @__PURE__ */ jsx58(Text49, { children: " " }),
|
|
32534
32491
|
/* @__PURE__ */ jsxs47(Box46, { gap: 1, children: [
|
|
32535
|
-
/* @__PURE__ */
|
|
32536
|
-
/* @__PURE__ */
|
|
32537
|
-
saving && /* @__PURE__ */
|
|
32492
|
+
/* @__PURE__ */ jsx58(Text49, { color: PALETTE.muted, children: "Default agent" }),
|
|
32493
|
+
/* @__PURE__ */ jsx58(Text49, { bold: true, children: AGENT_LABELS[config.defaultAgent] }),
|
|
32494
|
+
saving && /* @__PURE__ */ jsx58(Text49, { color: PALETTE.accent, children: "\u2026 saving" })
|
|
32538
32495
|
] }),
|
|
32539
32496
|
/* @__PURE__ */ jsxs47(Box46, { marginTop: 1, gap: 1, children: [
|
|
32540
|
-
/* @__PURE__ */
|
|
32541
|
-
/* @__PURE__ */
|
|
32542
|
-
/* @__PURE__ */
|
|
32543
|
-
/* @__PURE__ */
|
|
32497
|
+
/* @__PURE__ */ jsx58(Text49, { children: " " }),
|
|
32498
|
+
/* @__PURE__ */ jsx58(Text49, { children: " " }),
|
|
32499
|
+
/* @__PURE__ */ jsx58(Box46, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx58(Text49, { color: PALETTE.muted, children: "AGENT" }) }),
|
|
32500
|
+
/* @__PURE__ */ jsx58(Text49, { color: PALETTE.muted, children: "STATUS" })
|
|
32544
32501
|
] }),
|
|
32545
32502
|
AGENT_NAMES.map((name) => {
|
|
32546
32503
|
const isFocused = focusedAgent === name;
|
|
32547
32504
|
return /* @__PURE__ */ jsxs47(Box46, { gap: 1, children: [
|
|
32548
|
-
/* @__PURE__ */
|
|
32549
|
-
/* @__PURE__ */
|
|
32550
|
-
/* @__PURE__ */
|
|
32551
|
-
/* @__PURE__ */
|
|
32505
|
+
/* @__PURE__ */ jsx58(Text49, { color: isFocused ? PALETTE.accent : void 0, children: isFocused ? "\u276F" : " " }),
|
|
32506
|
+
/* @__PURE__ */ jsx58(Text49, { color: PALETTE.success, children: name === config.defaultAgent ? "\u2605" : " " }),
|
|
32507
|
+
/* @__PURE__ */ jsx58(Box46, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx58(Text49, { bold: isFocused, color: isFocused ? PALETTE.accent : void 0, children: AGENT_LABELS[name] }) }),
|
|
32508
|
+
/* @__PURE__ */ jsx58(AgentStatusBadge, { name, checks: checks[name], binary: config.agents[name].binary })
|
|
32552
32509
|
] }, name);
|
|
32553
32510
|
}),
|
|
32554
32511
|
/* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", marginTop: 1, children: [
|
|
32555
|
-
/* @__PURE__ */
|
|
32512
|
+
/* @__PURE__ */ jsx58(Text49, { color: PALETTE.muted, children: `\u2500 ${AGENT_LABELS[focusedAgent]} ${"\u2500".repeat(30)}` }),
|
|
32556
32513
|
panelRows(focusedAgent, checks[focusedAgent], config.agents[focusedAgent]).map((row) => /* @__PURE__ */ jsxs47(Box46, { gap: 1, paddingLeft: 1, children: [
|
|
32557
|
-
/* @__PURE__ */
|
|
32558
|
-
/* @__PURE__ */
|
|
32514
|
+
/* @__PURE__ */ jsx58(Box46, { width: PANEL_LABEL_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx58(Text49, { color: PALETTE.muted, children: row.label }) }),
|
|
32515
|
+
/* @__PURE__ */ jsx58(Text49, { color: TONE_COLOR[row.tone], children: row.value })
|
|
32559
32516
|
] }, row.label))
|
|
32560
32517
|
] }),
|
|
32561
32518
|
notice && /* @__PURE__ */ jsxs47(Fragment18, { children: [
|
|
32562
|
-
/* @__PURE__ */
|
|
32519
|
+
/* @__PURE__ */ jsx58(Text49, { children: " " }),
|
|
32563
32520
|
/* @__PURE__ */ jsxs47(Text49, { bold: true, color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
32564
32521
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
32565
32522
|
" ",
|
|
32566
32523
|
notice.text
|
|
32567
32524
|
] })
|
|
32568
32525
|
] }),
|
|
32569
|
-
/* @__PURE__ */
|
|
32570
|
-
/* @__PURE__ */
|
|
32526
|
+
/* @__PURE__ */ jsx58(Text49, { children: " " }),
|
|
32527
|
+
/* @__PURE__ */ jsx58(
|
|
32571
32528
|
ControlHints,
|
|
32572
32529
|
{
|
|
32573
32530
|
hints: [
|
|
@@ -32631,9 +32588,9 @@ var init_project_store = __esm({
|
|
|
32631
32588
|
});
|
|
32632
32589
|
|
|
32633
32590
|
// packages/experience-design-system-cli/src/tui/settings/configuration/project/ProjectScreen.tsx
|
|
32634
|
-
import { useEffect as useEffect24, useRef as
|
|
32635
|
-
import { Box as Box47, Text as Text50, useInput as
|
|
32636
|
-
import { Fragment as Fragment19, jsx as
|
|
32591
|
+
import { useEffect as useEffect24, useRef as useRef14, useState as useState32 } from "react";
|
|
32592
|
+
import { Box as Box47, Text as Text50, useInput as useInput13 } from "ink";
|
|
32593
|
+
import { Fragment as Fragment19, jsx as jsx59, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
32637
32594
|
function debugFields(config) {
|
|
32638
32595
|
return {
|
|
32639
32596
|
space_id: config?.spaceId ?? "",
|
|
@@ -32650,7 +32607,7 @@ function ProjectScreen({ onDone }) {
|
|
|
32650
32607
|
const [saving, setSaving] = useState32(false);
|
|
32651
32608
|
const [notice, setNotice] = useState32(null);
|
|
32652
32609
|
const [loadError, setLoadError] = useState32(null);
|
|
32653
|
-
const visit =
|
|
32610
|
+
const visit = useRef14({
|
|
32654
32611
|
trail: createTrail(),
|
|
32655
32612
|
before: void 0,
|
|
32656
32613
|
persisted: void 0,
|
|
@@ -32695,7 +32652,7 @@ function ProjectScreen({ onDone }) {
|
|
|
32695
32652
|
exitMethod: change.changed ? "saved" : "discarded"
|
|
32696
32653
|
});
|
|
32697
32654
|
};
|
|
32698
|
-
|
|
32655
|
+
useInput13((input, key) => {
|
|
32699
32656
|
if (!config && loadError && (key.escape || input === "q")) {
|
|
32700
32657
|
endVisit(null);
|
|
32701
32658
|
onDone();
|
|
@@ -32703,16 +32660,16 @@ function ProjectScreen({ onDone }) {
|
|
|
32703
32660
|
});
|
|
32704
32661
|
if (!config) {
|
|
32705
32662
|
return /* @__PURE__ */ jsxs48(Box47, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
32706
|
-
/* @__PURE__ */
|
|
32707
|
-
/* @__PURE__ */
|
|
32663
|
+
/* @__PURE__ */ jsx59(Text50, { bold: true, children: "Project" }),
|
|
32664
|
+
/* @__PURE__ */ jsx59(Text50, { children: " " }),
|
|
32708
32665
|
loadError ? /* @__PURE__ */ jsxs48(Fragment19, { children: [
|
|
32709
32666
|
/* @__PURE__ */ jsxs48(Text50, { color: PALETTE.error, children: [
|
|
32710
32667
|
"\u2717 Could not read the settings: ",
|
|
32711
32668
|
loadError
|
|
32712
32669
|
] }),
|
|
32713
|
-
/* @__PURE__ */
|
|
32714
|
-
/* @__PURE__ */
|
|
32715
|
-
] }) : /* @__PURE__ */
|
|
32670
|
+
/* @__PURE__ */ jsx59(Text50, { children: " " }),
|
|
32671
|
+
/* @__PURE__ */ jsx59(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
|
|
32672
|
+
] }) : /* @__PURE__ */ jsx59(Text50, { color: PALETTE.accent, children: "Loading..." })
|
|
32716
32673
|
] });
|
|
32717
32674
|
}
|
|
32718
32675
|
const save = () => {
|
|
@@ -32733,7 +32690,7 @@ function ProjectScreen({ onDone }) {
|
|
|
32733
32690
|
endVisit(config);
|
|
32734
32691
|
onDone();
|
|
32735
32692
|
};
|
|
32736
|
-
return /* @__PURE__ */
|
|
32693
|
+
return /* @__PURE__ */ jsx59(
|
|
32737
32694
|
FieldForm,
|
|
32738
32695
|
{
|
|
32739
32696
|
title: "Project",
|
|
@@ -32778,13 +32735,13 @@ var init_ProjectScreen = __esm({
|
|
|
32778
32735
|
|
|
32779
32736
|
// packages/experience-design-system-cli/src/tui/settings/configuration/ConfigurationScreen.tsx
|
|
32780
32737
|
import { useState as useState33 } from "react";
|
|
32781
|
-
import { Box as Box48, Text as Text51, useInput as
|
|
32782
|
-
import { jsx as
|
|
32738
|
+
import { Box as Box48, Text as Text51, useInput as useInput14 } from "ink";
|
|
32739
|
+
import { jsx as jsx60, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
32783
32740
|
function ConfigurationScreen({ onDone }) {
|
|
32784
32741
|
const [focus, setFocus] = useState33(0);
|
|
32785
32742
|
const [open, setOpen] = useState33(null);
|
|
32786
32743
|
const close = () => setOpen(null);
|
|
32787
|
-
|
|
32744
|
+
useInput14((input, key) => {
|
|
32788
32745
|
if (open) return;
|
|
32789
32746
|
if (key.upArrow) {
|
|
32790
32747
|
setFocus((i) => (i - 1 + SECTIONS.length) % SECTIONS.length);
|
|
@@ -32800,18 +32757,18 @@ function ConfigurationScreen({ onDone }) {
|
|
|
32800
32757
|
}
|
|
32801
32758
|
if (key.escape || input === "q") onDone();
|
|
32802
32759
|
});
|
|
32803
|
-
if (open === "project") return /* @__PURE__ */
|
|
32804
|
-
if (open === "agents") return /* @__PURE__ */
|
|
32760
|
+
if (open === "project") return /* @__PURE__ */ jsx60(ProjectScreen, { onDone: close });
|
|
32761
|
+
if (open === "agents") return /* @__PURE__ */ jsx60(AgentsScreen, { onDone: close });
|
|
32805
32762
|
return /* @__PURE__ */ jsxs49(Box48, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
32806
|
-
/* @__PURE__ */
|
|
32807
|
-
/* @__PURE__ */
|
|
32763
|
+
/* @__PURE__ */ jsx60(Text51, { bold: true, children: "Configuration" }),
|
|
32764
|
+
/* @__PURE__ */ jsx60(Text51, { children: " " }),
|
|
32808
32765
|
SECTIONS.map((section, index) => /* @__PURE__ */ jsxs49(Box48, { gap: 1, children: [
|
|
32809
|
-
/* @__PURE__ */
|
|
32810
|
-
/* @__PURE__ */
|
|
32811
|
-
/* @__PURE__ */
|
|
32766
|
+
/* @__PURE__ */ jsx60(Text51, { color: index === focus ? PALETTE.accent : void 0, children: index === focus ? "\u276F" : " " }),
|
|
32767
|
+
/* @__PURE__ */ jsx60(Box48, { width: 9, flexShrink: 0, children: /* @__PURE__ */ jsx60(Text51, { bold: index === focus, color: index === focus ? PALETTE.accent : void 0, children: section.label }) }),
|
|
32768
|
+
/* @__PURE__ */ jsx60(Text51, { color: PALETTE.muted, children: section.description })
|
|
32812
32769
|
] }, section.id)),
|
|
32813
|
-
/* @__PURE__ */
|
|
32814
|
-
/* @__PURE__ */
|
|
32770
|
+
/* @__PURE__ */ jsx60(Text51, { children: " " }),
|
|
32771
|
+
/* @__PURE__ */ jsx60(
|
|
32815
32772
|
ControlHints,
|
|
32816
32773
|
{
|
|
32817
32774
|
hints: [
|
|
@@ -32844,8 +32801,8 @@ var init_ConfigurationScreen = __esm({
|
|
|
32844
32801
|
|
|
32845
32802
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx
|
|
32846
32803
|
import { useEffect as useEffect25, useState as useState34 } from "react";
|
|
32847
|
-
import { Box as Box49, Text as Text52, useInput as
|
|
32848
|
-
import { Fragment as Fragment20, jsx as
|
|
32804
|
+
import { Box as Box49, Text as Text52, useInput as useInput15 } from "ink";
|
|
32805
|
+
import { Fragment as Fragment20, jsx as jsx61, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
32849
32806
|
function OptInAnalyticsScreen({ onDone }) {
|
|
32850
32807
|
const [loading, setLoading] = useState34(true);
|
|
32851
32808
|
const [enabled, setEnabled] = useState34(true);
|
|
@@ -32861,7 +32818,7 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
32861
32818
|
});
|
|
32862
32819
|
});
|
|
32863
32820
|
}, []);
|
|
32864
|
-
|
|
32821
|
+
useInput15((input, key) => {
|
|
32865
32822
|
if (loading) return;
|
|
32866
32823
|
if (key.return || input === " ") {
|
|
32867
32824
|
setEnabled((current) => {
|
|
@@ -32877,20 +32834,20 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
32877
32834
|
}
|
|
32878
32835
|
});
|
|
32879
32836
|
return /* @__PURE__ */ jsxs50(Box49, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
32880
|
-
/* @__PURE__ */
|
|
32881
|
-
/* @__PURE__ */
|
|
32882
|
-
loading ? /* @__PURE__ */
|
|
32837
|
+
/* @__PURE__ */ jsx61(Text52, { bold: true, children: "Settings \u203A Opt-in Analytics" }),
|
|
32838
|
+
/* @__PURE__ */ jsx61(Text52, { children: " " }),
|
|
32839
|
+
loading ? /* @__PURE__ */ jsx61(Text52, { color: PALETTE.muted, children: "Loading\u2026" }) : /* @__PURE__ */ jsxs50(Fragment20, { children: [
|
|
32883
32840
|
/* @__PURE__ */ jsxs50(Text52, { children: [
|
|
32884
32841
|
"Share anonymous usage data:",
|
|
32885
32842
|
" ",
|
|
32886
|
-
/* @__PURE__ */
|
|
32843
|
+
/* @__PURE__ */ jsx61(Text52, { bold: true, color: enabled ? PALETTE.success : PALETTE.muted, children: enabled ? "On" : "Off" })
|
|
32887
32844
|
] }),
|
|
32888
|
-
/* @__PURE__ */
|
|
32889
|
-
/* @__PURE__ */
|
|
32890
|
-
/* @__PURE__ */
|
|
32845
|
+
/* @__PURE__ */ jsx61(Text52, { children: " " }),
|
|
32846
|
+
/* @__PURE__ */ jsx61(Text52, { color: PALETTE.muted, children: "Shares which CLI commands are used and where imports succeed or fail." }),
|
|
32847
|
+
/* @__PURE__ */ jsx61(Text52, { color: PALETTE.muted, children: "Never includes source code, file paths, credentials, or authored content." })
|
|
32891
32848
|
] }),
|
|
32892
|
-
/* @__PURE__ */
|
|
32893
|
-
/* @__PURE__ */
|
|
32849
|
+
/* @__PURE__ */ jsx61(Text52, { children: " " }),
|
|
32850
|
+
/* @__PURE__ */ jsx61(
|
|
32894
32851
|
ControlHints,
|
|
32895
32852
|
{
|
|
32896
32853
|
hints: [
|
|
@@ -32912,9 +32869,9 @@ var init_screen11 = __esm({
|
|
|
32912
32869
|
});
|
|
32913
32870
|
|
|
32914
32871
|
// packages/experience-design-system-cli/src/tui/settings/debug-mode/screen.tsx
|
|
32915
|
-
import { useEffect as useEffect26, useRef as
|
|
32916
|
-
import { Box as Box50, Text as Text53, useInput as
|
|
32917
|
-
import { Fragment as Fragment21, jsx as
|
|
32872
|
+
import { useEffect as useEffect26, useRef as useRef15, useState as useState35 } from "react";
|
|
32873
|
+
import { Box as Box50, Text as Text53, useInput as useInput16 } from "ink";
|
|
32874
|
+
import { Fragment as Fragment21, jsx as jsx62, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
32918
32875
|
function DebugModeScreen({ onDone }) {
|
|
32919
32876
|
const [setting, setSetting] = useState35(null);
|
|
32920
32877
|
const [focus, setFocus] = useState35("enabled");
|
|
@@ -32922,7 +32879,7 @@ function DebugModeScreen({ onDone }) {
|
|
|
32922
32879
|
RETENTION_CHOICES[RETENTION_CHOICES.length - 1]
|
|
32923
32880
|
);
|
|
32924
32881
|
const [notice, setNotice] = useState35(null);
|
|
32925
|
-
const visit =
|
|
32882
|
+
const visit = useRef15({ trail: createTrail(), before: void 0, error: "" }).current;
|
|
32926
32883
|
useEffect26(() => {
|
|
32927
32884
|
readDebugModeSetting().then((loaded) => {
|
|
32928
32885
|
setSetting(loaded);
|
|
@@ -32963,7 +32920,7 @@ function DebugModeScreen({ onDone }) {
|
|
|
32963
32920
|
exitMethod: change.changed ? "saved" : "discarded"
|
|
32964
32921
|
});
|
|
32965
32922
|
};
|
|
32966
|
-
|
|
32923
|
+
useInput16((input, key) => {
|
|
32967
32924
|
if (!setting) return;
|
|
32968
32925
|
if (key.upArrow || key.downArrow) {
|
|
32969
32926
|
setFocus((current) => ROWS[(ROWS.indexOf(current) + (key.downArrow ? 1 : ROWS.length - 1)) % ROWS.length]);
|
|
@@ -32990,16 +32947,16 @@ function DebugModeScreen({ onDone }) {
|
|
|
32990
32947
|
onDone();
|
|
32991
32948
|
}
|
|
32992
32949
|
});
|
|
32993
|
-
const marker = (row) => /* @__PURE__ */
|
|
32994
|
-
const label = (row, text) => /* @__PURE__ */
|
|
32950
|
+
const marker = (row) => /* @__PURE__ */ jsx62(Text53, { color: focus === row ? PALETTE.accent : void 0, children: focus === row ? "\u276F" : " " });
|
|
32951
|
+
const label = (row, text) => /* @__PURE__ */ jsx62(Text53, { bold: focus === row, color: focus === row ? PALETTE.accent : PALETTE.muted, children: text });
|
|
32995
32952
|
return /* @__PURE__ */ jsxs51(Box50, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
32996
|
-
/* @__PURE__ */
|
|
32997
|
-
/* @__PURE__ */
|
|
32953
|
+
/* @__PURE__ */ jsx62(Text53, { bold: true, children: "Settings \u203A Debug Mode" }),
|
|
32954
|
+
/* @__PURE__ */ jsx62(Text53, { children: " " }),
|
|
32998
32955
|
setting ? /* @__PURE__ */ jsxs51(Fragment21, { children: [
|
|
32999
32956
|
/* @__PURE__ */ jsxs51(Box50, { gap: 1, children: [
|
|
33000
32957
|
marker("enabled"),
|
|
33001
32958
|
label("enabled", "Debug logging:"),
|
|
33002
|
-
/* @__PURE__ */
|
|
32959
|
+
/* @__PURE__ */ jsx62(Text53, { bold: true, color: setting.enabled ? PALETTE.success : PALETTE.muted, children: setting.enabled ? "On" : "Off" })
|
|
33003
32960
|
] }),
|
|
33004
32961
|
/* @__PURE__ */ jsxs51(Box50, { gap: 1, children: [
|
|
33005
32962
|
marker("retentionDays"),
|
|
@@ -33007,7 +32964,7 @@ function DebugModeScreen({ onDone }) {
|
|
|
33007
32964
|
RETENTION_CHOICES.map((days) => {
|
|
33008
32965
|
const highlighted = focus === "retentionDays" && days === pending;
|
|
33009
32966
|
const saved = days === setting.retentionDays;
|
|
33010
|
-
return /* @__PURE__ */
|
|
32967
|
+
return /* @__PURE__ */ jsx62(
|
|
33011
32968
|
Text53,
|
|
33012
32969
|
{
|
|
33013
32970
|
bold: highlighted || saved,
|
|
@@ -33019,15 +32976,15 @@ function DebugModeScreen({ onDone }) {
|
|
|
33019
32976
|
);
|
|
33020
32977
|
})
|
|
33021
32978
|
] }),
|
|
33022
|
-
/* @__PURE__ */
|
|
32979
|
+
/* @__PURE__ */ jsx62(Text53, { children: " " }),
|
|
33023
32980
|
notice ? /* @__PURE__ */ jsxs51(Text53, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
33024
32981
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
33025
32982
|
" ",
|
|
33026
32983
|
notice.text
|
|
33027
|
-
] }) : /* @__PURE__ */
|
|
33028
|
-
] }) : /* @__PURE__ */
|
|
33029
|
-
/* @__PURE__ */
|
|
33030
|
-
/* @__PURE__ */
|
|
32984
|
+
] }) : /* @__PURE__ */ jsx62(Text53, { color: PALETTE.muted, children: "\u2713 marks what is saved. Older logs are deleted the next time the CLI starts." })
|
|
32985
|
+
] }) : /* @__PURE__ */ jsx62(Text53, { color: PALETTE.muted, children: "Loading\u2026" }),
|
|
32986
|
+
/* @__PURE__ */ jsx62(Text53, { children: " " }),
|
|
32987
|
+
/* @__PURE__ */ jsx62(
|
|
33031
32988
|
ControlHints,
|
|
33032
32989
|
{
|
|
33033
32990
|
hints: [
|
|
@@ -33066,7 +33023,7 @@ __export(app_exports, {
|
|
|
33066
33023
|
});
|
|
33067
33024
|
import { join as join28 } from "node:path";
|
|
33068
33025
|
import { useEffect as useEffect27, useState as useState36 } from "react";
|
|
33069
|
-
import { Fragment as Fragment22, jsx as
|
|
33026
|
+
import { Fragment as Fragment22, jsx as jsx63 } from "react/jsx-runtime";
|
|
33070
33027
|
function App({ importOptions, inkClear }) {
|
|
33071
33028
|
const [screen, setScreen] = useState36("start");
|
|
33072
33029
|
const [importExitCode, setImportExitCode] = useState36();
|
|
@@ -33223,9 +33180,9 @@ function App({ importOptions, inkClear }) {
|
|
|
33223
33180
|
};
|
|
33224
33181
|
switch (screen) {
|
|
33225
33182
|
case "import":
|
|
33226
|
-
if (showImportResult) return /* @__PURE__ */
|
|
33183
|
+
if (showImportResult) return /* @__PURE__ */ jsx63(ImportScreen, { exitCode: importExitCode, onDone: finishImportResult });
|
|
33227
33184
|
if (flow && flowStart) {
|
|
33228
|
-
return /* @__PURE__ */
|
|
33185
|
+
return /* @__PURE__ */ jsx63(
|
|
33229
33186
|
FlowScreen,
|
|
33230
33187
|
{
|
|
33231
33188
|
state: flow.state,
|
|
@@ -33235,12 +33192,12 @@ function App({ importOptions, inkClear }) {
|
|
|
33235
33192
|
}
|
|
33236
33193
|
);
|
|
33237
33194
|
}
|
|
33238
|
-
if (importDefaults === void 0) return /* @__PURE__ */
|
|
33195
|
+
if (importDefaults === void 0) return /* @__PURE__ */ jsx63(Fragment22, {});
|
|
33239
33196
|
if (projectPath === void 0) {
|
|
33240
|
-
return /* @__PURE__ */
|
|
33197
|
+
return /* @__PURE__ */ jsx63(WelcomeScreen, { onContinue: setProjectPath, onQuit: leaveImport, initialPath: importDefaults.componentDir });
|
|
33241
33198
|
}
|
|
33242
33199
|
if (tokensPath === void 0) {
|
|
33243
|
-
return /* @__PURE__ */
|
|
33200
|
+
return /* @__PURE__ */ jsx63(
|
|
33244
33201
|
TokenInputScreen,
|
|
33245
33202
|
{
|
|
33246
33203
|
initialPath: importDefaults.tokenFile,
|
|
@@ -33250,7 +33207,7 @@ function App({ importOptions, inkClear }) {
|
|
|
33250
33207
|
);
|
|
33251
33208
|
}
|
|
33252
33209
|
if (scannedFiles === void 0) {
|
|
33253
|
-
return /* @__PURE__ */
|
|
33210
|
+
return /* @__PURE__ */ jsx63(
|
|
33254
33211
|
PathValidationScreen,
|
|
33255
33212
|
{
|
|
33256
33213
|
projectPath,
|
|
@@ -33262,10 +33219,10 @@ function App({ importOptions, inkClear }) {
|
|
|
33262
33219
|
}
|
|
33263
33220
|
if (extractionRun) {
|
|
33264
33221
|
if (extraction?.status === "done" && !extraction.result.ok) {
|
|
33265
|
-
return /* @__PURE__ */
|
|
33222
|
+
return /* @__PURE__ */ jsx63(ErrorStep, { stepName: extraction.result.step, message: extraction.result.message, onExit: leaveImport });
|
|
33266
33223
|
}
|
|
33267
33224
|
if (extraction?.status === "running") {
|
|
33268
|
-
return /* @__PURE__ */
|
|
33225
|
+
return /* @__PURE__ */ jsx63(
|
|
33269
33226
|
ExtractionScreen,
|
|
33270
33227
|
{
|
|
33271
33228
|
progress: extraction.progress,
|
|
@@ -33274,14 +33231,14 @@ function App({ importOptions, inkClear }) {
|
|
|
33274
33231
|
}
|
|
33275
33232
|
);
|
|
33276
33233
|
}
|
|
33277
|
-
return /* @__PURE__ */
|
|
33234
|
+
return /* @__PURE__ */ jsx63(Fragment22, {});
|
|
33278
33235
|
}
|
|
33279
33236
|
if (scopeRun && scopeFlow) {
|
|
33280
33237
|
if (scopeFlow.status === "failed") {
|
|
33281
|
-
return /* @__PURE__ */
|
|
33238
|
+
return /* @__PURE__ */ jsx63(ErrorStep, { stepName: "scope gate", message: scopeFlow.message, onExit: leaveImport });
|
|
33282
33239
|
}
|
|
33283
33240
|
if (scopeFlow.status === "deciding") {
|
|
33284
|
-
return /* @__PURE__ */
|
|
33241
|
+
return /* @__PURE__ */ jsx63(
|
|
33285
33242
|
ScopeGateScreen,
|
|
33286
33243
|
{
|
|
33287
33244
|
components: scopeFlow.load.components,
|
|
@@ -33291,7 +33248,7 @@ function App({ importOptions, inkClear }) {
|
|
|
33291
33248
|
);
|
|
33292
33249
|
}
|
|
33293
33250
|
if (generation?.status === "done" && !generation.result.ok) {
|
|
33294
|
-
return /* @__PURE__ */
|
|
33251
|
+
return /* @__PURE__ */ jsx63(ErrorStep, { stepName: generation.result.step, message: generation.result.message, onExit: leaveImport });
|
|
33295
33252
|
}
|
|
33296
33253
|
if (generation?.status === "running") {
|
|
33297
33254
|
const hasRawTokens = scopeRun.input.rawTokensPath !== "";
|
|
@@ -33299,7 +33256,7 @@ function App({ importOptions, inkClear }) {
|
|
|
33299
33256
|
hasRawTokens,
|
|
33300
33257
|
mapTokensEligible: generation.progress.mapTokensEligible
|
|
33301
33258
|
});
|
|
33302
|
-
return /* @__PURE__ */
|
|
33259
|
+
return /* @__PURE__ */ jsx63(
|
|
33303
33260
|
GenerationScreen,
|
|
33304
33261
|
{
|
|
33305
33262
|
progress: generation.progress,
|
|
@@ -33311,10 +33268,10 @@ function App({ importOptions, inkClear }) {
|
|
|
33311
33268
|
}
|
|
33312
33269
|
);
|
|
33313
33270
|
}
|
|
33314
|
-
return /* @__PURE__ */
|
|
33271
|
+
return /* @__PURE__ */ jsx63(Fragment22, {});
|
|
33315
33272
|
}
|
|
33316
33273
|
if (pendingLaunch?.cached) {
|
|
33317
|
-
return /* @__PURE__ */
|
|
33274
|
+
return /* @__PURE__ */ jsx63(
|
|
33318
33275
|
TokenReuseScreen,
|
|
33319
33276
|
{
|
|
33320
33277
|
tokensPath: pendingLaunch.cached.tokensPath,
|
|
@@ -33325,7 +33282,7 @@ function App({ importOptions, inkClear }) {
|
|
|
33325
33282
|
}
|
|
33326
33283
|
);
|
|
33327
33284
|
}
|
|
33328
|
-
return /* @__PURE__ */
|
|
33285
|
+
return /* @__PURE__ */ jsx63(
|
|
33329
33286
|
CredentialsScreen,
|
|
33330
33287
|
{
|
|
33331
33288
|
initial: importDefaults.credentials,
|
|
@@ -33334,17 +33291,17 @@ function App({ importOptions, inkClear }) {
|
|
|
33334
33291
|
}
|
|
33335
33292
|
);
|
|
33336
33293
|
case "help":
|
|
33337
|
-
return /* @__PURE__ */
|
|
33294
|
+
return /* @__PURE__ */ jsx63(HelpScreen, { onDone: goToStart });
|
|
33338
33295
|
case "settings":
|
|
33339
|
-
return /* @__PURE__ */
|
|
33296
|
+
return /* @__PURE__ */ jsx63(SettingsScreen, { onNavigate: setScreen, onBack: goToStart });
|
|
33340
33297
|
case "settings-configuration":
|
|
33341
|
-
return /* @__PURE__ */
|
|
33298
|
+
return /* @__PURE__ */ jsx63(ConfigurationScreen, { onDone: goToSettings });
|
|
33342
33299
|
case "settings-opt-in-analytics":
|
|
33343
|
-
return /* @__PURE__ */
|
|
33300
|
+
return /* @__PURE__ */ jsx63(OptInAnalyticsScreen, { onDone: goToSettings });
|
|
33344
33301
|
case "settings-debug-mode":
|
|
33345
|
-
return /* @__PURE__ */
|
|
33302
|
+
return /* @__PURE__ */ jsx63(DebugModeScreen, { onDone: goToSettings });
|
|
33346
33303
|
case "start":
|
|
33347
|
-
return /* @__PURE__ */
|
|
33304
|
+
return /* @__PURE__ */ jsx63(HomeScreen, { onNavigate: setScreen });
|
|
33348
33305
|
}
|
|
33349
33306
|
}
|
|
33350
33307
|
async function runApp(renderApp, importOptions) {
|
|
@@ -33352,7 +33309,7 @@ async function runApp(renderApp, importOptions) {
|
|
|
33352
33309
|
instance.clear?.();
|
|
33353
33310
|
process.stdout.write("\x1B[H\x1B[0J");
|
|
33354
33311
|
};
|
|
33355
|
-
const instance = renderApp(/* @__PURE__ */
|
|
33312
|
+
const instance = renderApp(/* @__PURE__ */ jsx63(App, { importOptions, inkClear }));
|
|
33356
33313
|
await instance.waitUntilExit();
|
|
33357
33314
|
}
|
|
33358
33315
|
var init_app = __esm({
|