@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/app.js
CHANGED
|
@@ -2614,38 +2614,10 @@ function ImportScreen({ exitCode, onDone }) {
|
|
|
2614
2614
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx
|
|
2615
2615
|
import { useState as useState3 } from "react";
|
|
2616
2616
|
import { Box as Box3, Text as Text4 } from "ink";
|
|
2617
|
-
|
|
2618
|
-
// packages/experience-design-system-cli/src/tui/ClearableTextInput.tsx
|
|
2619
|
-
import { useRef } from "react";
|
|
2620
|
-
import { useInput as useInput3 } from "ink";
|
|
2621
2617
|
import TextInput from "ink-text-input";
|
|
2622
|
-
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
2623
|
-
function isClearKey(input, key) {
|
|
2624
|
-
return key.ctrl && input === "d";
|
|
2625
|
-
}
|
|
2626
|
-
function ClearableTextInput({ onChange, ...props }) {
|
|
2627
|
-
const justCleared = useRef(false);
|
|
2628
|
-
useInput3((input, key) => {
|
|
2629
|
-
if (!isClearKey(input, key)) return;
|
|
2630
|
-
justCleared.current = true;
|
|
2631
|
-
setTimeout(() => {
|
|
2632
|
-
justCleared.current = false;
|
|
2633
|
-
}, 0);
|
|
2634
|
-
onChange("");
|
|
2635
|
-
});
|
|
2636
|
-
return /* @__PURE__ */ jsx4(
|
|
2637
|
-
TextInput,
|
|
2638
|
-
{
|
|
2639
|
-
...props,
|
|
2640
|
-
onChange: (value) => {
|
|
2641
|
-
if (!justCleared.current) onChange(value);
|
|
2642
|
-
}
|
|
2643
|
-
}
|
|
2644
|
-
);
|
|
2645
|
-
}
|
|
2646
2618
|
|
|
2647
2619
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/controls.ts
|
|
2648
|
-
import { useInput as
|
|
2620
|
+
import { useInput as useInput3 } from "ink";
|
|
2649
2621
|
|
|
2650
2622
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/logic.ts
|
|
2651
2623
|
function shouldQuit(key) {
|
|
@@ -2659,17 +2631,16 @@ function toProjectPath(value) {
|
|
|
2659
2631
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/controls.ts
|
|
2660
2632
|
var WELCOME_CONTROLS = [
|
|
2661
2633
|
{ keys: "Enter", label: "Continue" },
|
|
2662
|
-
{ keys: "Ctrl+D", label: "Clear" },
|
|
2663
2634
|
{ keys: "Esc", label: "Back to menu" }
|
|
2664
2635
|
];
|
|
2665
2636
|
function useWelcomeControls(onQuit) {
|
|
2666
|
-
|
|
2637
|
+
useInput3((_input, key) => {
|
|
2667
2638
|
if (shouldQuit(key)) onQuit();
|
|
2668
2639
|
});
|
|
2669
2640
|
}
|
|
2670
2641
|
|
|
2671
2642
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx
|
|
2672
|
-
import { jsx as
|
|
2643
|
+
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
2673
2644
|
var OVERVIEW_BOX_MAX_WIDTH = 90;
|
|
2674
2645
|
var AI_MARKER = "\u273B";
|
|
2675
2646
|
var OVERVIEW = [
|
|
@@ -2698,8 +2669,8 @@ function WelcomeScreen({ onContinue, onQuit, initialPath = "" }) {
|
|
|
2698
2669
|
if (path5) onContinue(path5);
|
|
2699
2670
|
};
|
|
2700
2671
|
return /* @__PURE__ */ jsxs3(Box3, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
2701
|
-
/* @__PURE__ */
|
|
2702
|
-
/* @__PURE__ */
|
|
2672
|
+
/* @__PURE__ */ jsx4(Text4, { bold: true, color: PALETTE.accent, children: "Let's import your design system into Contentful." }),
|
|
2673
|
+
/* @__PURE__ */ jsx4(Box3, { flexDirection: "row", children: /* @__PURE__ */ jsxs3(
|
|
2703
2674
|
Box3,
|
|
2704
2675
|
{
|
|
2705
2676
|
flexDirection: "column",
|
|
@@ -2711,29 +2682,29 @@ function WelcomeScreen({ onContinue, onQuit, initialPath = "" }) {
|
|
|
2711
2682
|
flexShrink: 1,
|
|
2712
2683
|
children: [
|
|
2713
2684
|
OVERVIEW.map((item) => /* @__PURE__ */ jsxs3(Box3, { gap: 1, children: [
|
|
2714
|
-
/* @__PURE__ */
|
|
2715
|
-
/* @__PURE__ */
|
|
2716
|
-
item.ai && /* @__PURE__ */
|
|
2685
|
+
/* @__PURE__ */ jsx4(Box3, { flexShrink: 0, children: /* @__PURE__ */ jsx4(Text4, { bold: true, children: item.label }) }),
|
|
2686
|
+
/* @__PURE__ */ jsx4(Text4, { color: PALETTE.muted, wrap: "truncate-end", children: item.description }),
|
|
2687
|
+
item.ai && /* @__PURE__ */ jsx4(Text4, { bold: true, color: PALETTE.accent, children: AI_MARKER })
|
|
2717
2688
|
] }, item.label)),
|
|
2718
2689
|
/* @__PURE__ */ jsxs3(Box3, { flexDirection: "column", marginTop: 1, children: [
|
|
2719
2690
|
/* @__PURE__ */ jsxs3(Text4, { bold: true, children: [
|
|
2720
|
-
/* @__PURE__ */
|
|
2691
|
+
/* @__PURE__ */ jsx4(Text4, { color: PALETTE.accent, children: AI_MARKER }),
|
|
2721
2692
|
" AI disclosure"
|
|
2722
2693
|
] }),
|
|
2723
|
-
AI_DISCLOSURE.map((paragraph) => /* @__PURE__ */
|
|
2694
|
+
AI_DISCLOSURE.map((paragraph) => /* @__PURE__ */ jsx4(Text4, { color: PALETTE.muted, children: paragraph }, paragraph))
|
|
2724
2695
|
] })
|
|
2725
2696
|
]
|
|
2726
2697
|
}
|
|
2727
2698
|
) }),
|
|
2728
2699
|
/* @__PURE__ */ jsxs3(Box3, { flexDirection: "column", gap: 1, children: [
|
|
2729
|
-
/* @__PURE__ */
|
|
2700
|
+
/* @__PURE__ */ jsx4(Text4, { children: "Where is your component library?" }),
|
|
2730
2701
|
/* @__PURE__ */ jsxs3(Box3, { children: [
|
|
2731
|
-
/* @__PURE__ */
|
|
2732
|
-
/* @__PURE__ */
|
|
2733
|
-
/* @__PURE__ */
|
|
2702
|
+
/* @__PURE__ */ jsx4(Text4, { color: PALETTE.accent, children: "? " }),
|
|
2703
|
+
/* @__PURE__ */ jsx4(Text4, { children: "Project path: " }),
|
|
2704
|
+
/* @__PURE__ */ jsx4(TextInput, { value: projectPath, onChange: setProjectPath, onSubmit: submit })
|
|
2734
2705
|
] })
|
|
2735
2706
|
] }),
|
|
2736
|
-
/* @__PURE__ */
|
|
2707
|
+
/* @__PURE__ */ jsx4(Box3, { gap: 3, children: WELCOME_CONTROLS.map((control) => /* @__PURE__ */ jsxs3(Text4, { children: [
|
|
2737
2708
|
"[",
|
|
2738
2709
|
control.keys,
|
|
2739
2710
|
"] ",
|
|
@@ -2745,9 +2716,10 @@ function WelcomeScreen({ onContinue, onQuit, initialPath = "" }) {
|
|
|
2745
2716
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx
|
|
2746
2717
|
import { useState as useState4 } from "react";
|
|
2747
2718
|
import { Box as Box4, Text as Text5 } from "ink";
|
|
2719
|
+
import TextInput2 from "ink-text-input";
|
|
2748
2720
|
|
|
2749
2721
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/controls.ts
|
|
2750
|
-
import { useInput as
|
|
2722
|
+
import { useInput as useInput4 } from "ink";
|
|
2751
2723
|
|
|
2752
2724
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/logic.ts
|
|
2753
2725
|
function shouldGoBack(key) {
|
|
@@ -2761,11 +2733,10 @@ function toTokenPath(value) {
|
|
|
2761
2733
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/controls.ts
|
|
2762
2734
|
var TOKEN_INPUT_CONTROLS = [
|
|
2763
2735
|
{ keys: "Enter", label: "Continue" },
|
|
2764
|
-
{ keys: "Ctrl+D", label: "Clear" },
|
|
2765
2736
|
{ keys: "Esc", label: "Back" }
|
|
2766
2737
|
];
|
|
2767
2738
|
function useTokenInputControls(onBack) {
|
|
2768
|
-
|
|
2739
|
+
useInput4((_input, key) => {
|
|
2769
2740
|
if (shouldGoBack(key)) onBack();
|
|
2770
2741
|
});
|
|
2771
2742
|
}
|
|
@@ -2810,7 +2781,7 @@ function validateTokenPath(rawPath) {
|
|
|
2810
2781
|
}
|
|
2811
2782
|
|
|
2812
2783
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx
|
|
2813
|
-
import { jsx as
|
|
2784
|
+
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
2814
2785
|
function TokenInputScreen({ onConfirm, onBack, initialPath = "" }) {
|
|
2815
2786
|
const [tokenPath, setTokenPath] = useState4(initialPath);
|
|
2816
2787
|
const [failure, setFailure] = useState4(null);
|
|
@@ -2830,13 +2801,13 @@ function TokenInputScreen({ onConfirm, onBack, initialPath = "" }) {
|
|
|
2830
2801
|
else setFailure({ error: check.error, resolvedPath: check.resolvedPath });
|
|
2831
2802
|
};
|
|
2832
2803
|
return /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
2833
|
-
/* @__PURE__ */
|
|
2834
|
-
/* @__PURE__ */
|
|
2804
|
+
/* @__PURE__ */ jsx5(Text5, { bold: true, children: "Design tokens" }),
|
|
2805
|
+
/* @__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)." }),
|
|
2835
2806
|
/* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", children: [
|
|
2836
2807
|
/* @__PURE__ */ jsxs4(Box4, { gap: 1, children: [
|
|
2837
|
-
/* @__PURE__ */
|
|
2838
|
-
/* @__PURE__ */
|
|
2839
|
-
/* @__PURE__ */
|
|
2808
|
+
/* @__PURE__ */ jsx5(Text5, { color: PALETTE.accent, children: "?" }),
|
|
2809
|
+
/* @__PURE__ */ jsx5(Text5, { children: "Token path:" }),
|
|
2810
|
+
/* @__PURE__ */ jsx5(TextInput2, { value: tokenPath, onChange: change, onSubmit: submit })
|
|
2840
2811
|
] }),
|
|
2841
2812
|
failure && /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", children: [
|
|
2842
2813
|
/* @__PURE__ */ jsxs4(Text5, { color: PALETTE.error, children: [
|
|
@@ -2849,7 +2820,7 @@ function TokenInputScreen({ onConfirm, onBack, initialPath = "" }) {
|
|
|
2849
2820
|
] })
|
|
2850
2821
|
] })
|
|
2851
2822
|
] }),
|
|
2852
|
-
/* @__PURE__ */
|
|
2823
|
+
/* @__PURE__ */ jsx5(Box4, { marginTop: 1, gap: 3, children: TOKEN_INPUT_CONTROLS.map((control) => /* @__PURE__ */ jsxs4(Text5, { children: [
|
|
2853
2824
|
"[",
|
|
2854
2825
|
control.keys,
|
|
2855
2826
|
"] ",
|
|
@@ -2863,7 +2834,7 @@ import { useEffect as useEffect3, useMemo, useState as useState5 } from "react";
|
|
|
2863
2834
|
import { Box as Box5, Text as Text6 } from "ink";
|
|
2864
2835
|
|
|
2865
2836
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/controls.ts
|
|
2866
|
-
import { useInput as
|
|
2837
|
+
import { useInput as useInput5 } from "ink";
|
|
2867
2838
|
|
|
2868
2839
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/logic.ts
|
|
2869
2840
|
var COMPONENT_CATEGORIES = ["tsx", "ts", "vue", "astro", "jsx", "js"];
|
|
@@ -2951,7 +2922,7 @@ function controlsFor(phase) {
|
|
|
2951
2922
|
return CONTROLS[phase];
|
|
2952
2923
|
}
|
|
2953
2924
|
function usePathValidationControls(phase, handlers) {
|
|
2954
|
-
|
|
2925
|
+
useInput5((input, key) => {
|
|
2955
2926
|
const action = keyAction(phase, input, key);
|
|
2956
2927
|
if (action === "confirm") handlers.onConfirm();
|
|
2957
2928
|
else if (action === "change-path") handlers.onChangePath();
|
|
@@ -16737,7 +16708,7 @@ function foldSvelteAndMdIntoOther(counts) {
|
|
|
16737
16708
|
}
|
|
16738
16709
|
|
|
16739
16710
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/screen.tsx
|
|
16740
|
-
import { jsx as
|
|
16711
|
+
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
16741
16712
|
function Row({ row }) {
|
|
16742
16713
|
return /* @__PURE__ */ jsxs5(Text6, { color: row.tone === "accent" ? PALETTE.accent : row.tone === "muted" ? PALETTE.muted : void 0, children: [
|
|
16743
16714
|
" \u2022 ",
|
|
@@ -16753,7 +16724,7 @@ function Failure({ scan, path: path5 }) {
|
|
|
16753
16724
|
"\u2717 ",
|
|
16754
16725
|
headline
|
|
16755
16726
|
] }),
|
|
16756
|
-
hints.map((hint) => /* @__PURE__ */
|
|
16727
|
+
hints.map((hint) => /* @__PURE__ */ jsx6(Text6, { color: PALETTE.muted, children: hint }, hint))
|
|
16757
16728
|
] });
|
|
16758
16729
|
}
|
|
16759
16730
|
function Summary({ scan, path: path5 }) {
|
|
@@ -16761,7 +16732,7 @@ function Summary({ scan, path: path5 }) {
|
|
|
16761
16732
|
return /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", gap: 1, children: [
|
|
16762
16733
|
/* @__PURE__ */ jsxs5(Text6, { children: [
|
|
16763
16734
|
"Scanned ",
|
|
16764
|
-
/* @__PURE__ */
|
|
16735
|
+
/* @__PURE__ */ jsx6(Text6, { bold: true, children: path5 })
|
|
16765
16736
|
] }),
|
|
16766
16737
|
/* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", children: [
|
|
16767
16738
|
/* @__PURE__ */ jsxs5(Text6, { color: PALETTE.success, children: [
|
|
@@ -16769,13 +16740,13 @@ function Summary({ scan, path: path5 }) {
|
|
|
16769
16740
|
total,
|
|
16770
16741
|
" files:"
|
|
16771
16742
|
] }),
|
|
16772
|
-
rows.map((row) => /* @__PURE__ */
|
|
16743
|
+
rows.map((row) => /* @__PURE__ */ jsx6(Row, { row }, row.label))
|
|
16773
16744
|
] }),
|
|
16774
16745
|
warning && /* @__PURE__ */ jsxs5(Text6, { color: PALETTE.warning, children: [
|
|
16775
16746
|
"\u26A0 ",
|
|
16776
16747
|
warning
|
|
16777
16748
|
] }),
|
|
16778
|
-
/* @__PURE__ */
|
|
16749
|
+
/* @__PURE__ */ jsx6(Text6, { children: "Does this look right?" })
|
|
16779
16750
|
] });
|
|
16780
16751
|
}
|
|
16781
16752
|
function PathValidationScreen({
|
|
@@ -16800,12 +16771,12 @@ function PathValidationScreen({
|
|
|
16800
16771
|
return /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
16801
16772
|
scan === void 0 && /* @__PURE__ */ jsxs5(Text6, { color: PALETTE.muted, children: [
|
|
16802
16773
|
"Scanning ",
|
|
16803
|
-
/* @__PURE__ */
|
|
16774
|
+
/* @__PURE__ */ jsx6(Text6, { bold: true, children: resolvedPath }),
|
|
16804
16775
|
"..."
|
|
16805
16776
|
] }),
|
|
16806
|
-
scan?.ok === false && /* @__PURE__ */
|
|
16807
|
-
scan?.ok === true && /* @__PURE__ */
|
|
16808
|
-
/* @__PURE__ */
|
|
16777
|
+
scan?.ok === false && /* @__PURE__ */ jsx6(Failure, { scan, path: resolvedPath }),
|
|
16778
|
+
scan?.ok === true && /* @__PURE__ */ jsx6(Summary, { scan, path: resolvedPath }),
|
|
16779
|
+
/* @__PURE__ */ jsx6(Box5, { marginTop: 1, gap: 3, children: controlsFor(phase).map((control) => /* @__PURE__ */ jsxs5(Text6, { color: PALETTE.muted, children: [
|
|
16809
16780
|
"[",
|
|
16810
16781
|
control.keys,
|
|
16811
16782
|
"] ",
|
|
@@ -16815,12 +16786,12 @@ function PathValidationScreen({
|
|
|
16815
16786
|
}
|
|
16816
16787
|
|
|
16817
16788
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/screen.tsx
|
|
16818
|
-
import { useRef
|
|
16789
|
+
import { useRef, useState as useState6 } from "react";
|
|
16819
16790
|
import { Box as Box6, Text as Text7 } from "ink";
|
|
16820
|
-
import
|
|
16791
|
+
import TextInput3 from "ink-text-input";
|
|
16821
16792
|
|
|
16822
16793
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/controls.ts
|
|
16823
|
-
import { useInput as
|
|
16794
|
+
import { useInput as useInput6 } from "ink";
|
|
16824
16795
|
|
|
16825
16796
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/logic.ts
|
|
16826
16797
|
var FIELDS = ["spaceId", "environmentId", "cmaToken", "host"];
|
|
@@ -16856,7 +16827,7 @@ var CREDENTIALS_CONTROLS = [
|
|
|
16856
16827
|
{ keys: "Esc", label: "Back" }
|
|
16857
16828
|
];
|
|
16858
16829
|
function useCredentialsControls(handlers) {
|
|
16859
|
-
|
|
16830
|
+
useInput6((input, key) => {
|
|
16860
16831
|
if (handlers.disabled) return;
|
|
16861
16832
|
const action = keyAction2(input, key);
|
|
16862
16833
|
if (action === "back") handlers.onBack();
|
|
@@ -16900,7 +16871,7 @@ function toUserError(error, host) {
|
|
|
16900
16871
|
}
|
|
16901
16872
|
|
|
16902
16873
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/screen.tsx
|
|
16903
|
-
import { Fragment, jsx as
|
|
16874
|
+
import { Fragment, jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
16904
16875
|
var LABELS = {
|
|
16905
16876
|
spaceId: "Space ID",
|
|
16906
16877
|
environmentId: "Environment",
|
|
@@ -16913,7 +16884,7 @@ function CredentialsScreen({
|
|
|
16913
16884
|
initial = {},
|
|
16914
16885
|
validate: validate3 = validateCredentials
|
|
16915
16886
|
}) {
|
|
16916
|
-
const initialValues =
|
|
16887
|
+
const initialValues = useRef(
|
|
16917
16888
|
normalize({
|
|
16918
16889
|
spaceId: initial.spaceId ?? "",
|
|
16919
16890
|
environmentId: initial.environmentId || "master",
|
|
@@ -16954,21 +16925,21 @@ function CredentialsScreen({
|
|
|
16954
16925
|
};
|
|
16955
16926
|
return /* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
16956
16927
|
/* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", children: [
|
|
16957
|
-
/* @__PURE__ */
|
|
16958
|
-
/* @__PURE__ */
|
|
16928
|
+
/* @__PURE__ */ jsx7(Text7, { bold: true, children: "Contentful credentials" }),
|
|
16929
|
+
/* @__PURE__ */ jsx7(Text7, { children: prefilled ? "Credentials pre-filled from the configuration settings." : "Enter the Contentful space you want to import into." }),
|
|
16959
16930
|
!prefilled && /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
16960
|
-
/* @__PURE__ */
|
|
16961
|
-
/* @__PURE__ */
|
|
16931
|
+
/* @__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." }),
|
|
16932
|
+
/* @__PURE__ */ jsx7(Text7, { color: PALETTE.muted, children: "Tip: save these under Settings \u2192 Configuration so they pre-fill here." })
|
|
16962
16933
|
] })
|
|
16963
16934
|
] }),
|
|
16964
|
-
/* @__PURE__ */
|
|
16965
|
-
/* @__PURE__ */
|
|
16935
|
+
/* @__PURE__ */ jsx7(Box6, { flexDirection: "column", children: FIELDS.map((field) => /* @__PURE__ */ jsxs6(Box6, { gap: 1, children: [
|
|
16936
|
+
/* @__PURE__ */ jsx7(Text7, { color: active === field ? PALETTE.accent : void 0, children: "?" }),
|
|
16966
16937
|
/* @__PURE__ */ jsxs6(Text7, { bold: active === field, children: [
|
|
16967
16938
|
LABELS[field],
|
|
16968
16939
|
":"
|
|
16969
16940
|
] }),
|
|
16970
|
-
/* @__PURE__ */
|
|
16971
|
-
|
|
16941
|
+
/* @__PURE__ */ jsx7(
|
|
16942
|
+
TextInput3,
|
|
16972
16943
|
{
|
|
16973
16944
|
value: values[field],
|
|
16974
16945
|
focus: active === field && !validating,
|
|
@@ -16979,14 +16950,14 @@ function CredentialsScreen({
|
|
|
16979
16950
|
}
|
|
16980
16951
|
)
|
|
16981
16952
|
] }, field)) }),
|
|
16982
|
-
active === "host" && /* @__PURE__ */
|
|
16953
|
+
active === "host" && /* @__PURE__ */ jsx7(Text7, { color: PALETTE.muted, children: "Default: api.contentful.com \xB7 EU spaces: api.eu.contentful.com" }),
|
|
16983
16954
|
error && /* @__PURE__ */ jsxs6(Text7, { color: PALETTE.error, children: [
|
|
16984
16955
|
"\u2717 ",
|
|
16985
16956
|
error
|
|
16986
16957
|
] }),
|
|
16987
|
-
validating && /* @__PURE__ */
|
|
16988
|
-
!validating && !error && !isUnchanged(normalize(values), initialValues) && /* @__PURE__ */
|
|
16989
|
-
/* @__PURE__ */
|
|
16958
|
+
validating && /* @__PURE__ */ jsx7(Text7, { color: PALETTE.accent, children: "Validating credentials..." }),
|
|
16959
|
+
!validating && !error && !isUnchanged(normalize(values), initialValues) && /* @__PURE__ */ jsx7(Text7, { color: PALETTE.muted, children: "Changed values are saved after they validate." }),
|
|
16960
|
+
/* @__PURE__ */ jsx7(Box6, { marginTop: 1, gap: 3, children: CREDENTIALS_CONTROLS.map((control) => /* @__PURE__ */ jsxs6(Text7, { color: PALETTE.muted, children: [
|
|
16990
16961
|
"[",
|
|
16991
16962
|
control.keys,
|
|
16992
16963
|
"] ",
|
|
@@ -16999,7 +16970,7 @@ function CredentialsScreen({
|
|
|
16999
16970
|
import { Box as Box7, Text as Text8 } from "ink";
|
|
17000
16971
|
|
|
17001
16972
|
// packages/experience-design-system-cli/src/tui/import/shared/error-step/controls.ts
|
|
17002
|
-
import { useInput as
|
|
16973
|
+
import { useInput as useInput7 } from "ink";
|
|
17003
16974
|
|
|
17004
16975
|
// packages/experience-design-system-cli/src/tui/import/shared/error-step/logic.ts
|
|
17005
16976
|
function errorAction(input, key, available) {
|
|
@@ -17018,7 +16989,7 @@ function errorControls(available) {
|
|
|
17018
16989
|
|
|
17019
16990
|
// packages/experience-design-system-cli/src/tui/import/shared/error-step/controls.ts
|
|
17020
16991
|
function useErrorControls(handlers) {
|
|
17021
|
-
|
|
16992
|
+
useInput7((input, key) => {
|
|
17022
16993
|
const action = errorAction(input, key, {
|
|
17023
16994
|
canRetry: handlers.onRetry !== void 0,
|
|
17024
16995
|
canAcknowledge: handlers.onAcknowledge !== void 0
|
|
@@ -17030,7 +17001,7 @@ function useErrorControls(handlers) {
|
|
|
17030
17001
|
}
|
|
17031
17002
|
|
|
17032
17003
|
// packages/experience-design-system-cli/src/tui/import/shared/error-step/error-step.tsx
|
|
17033
|
-
import { jsx as
|
|
17004
|
+
import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
17034
17005
|
function ErrorStep({
|
|
17035
17006
|
stepName,
|
|
17036
17007
|
message,
|
|
@@ -17049,8 +17020,8 @@ function ErrorStep({
|
|
|
17049
17020
|
stepName,
|
|
17050
17021
|
" failed"
|
|
17051
17022
|
] }),
|
|
17052
|
-
/* @__PURE__ */
|
|
17053
|
-
/* @__PURE__ */
|
|
17023
|
+
/* @__PURE__ */ jsx8(Text8, { color: PALETTE.error, children: message }),
|
|
17024
|
+
/* @__PURE__ */ jsx8(Box7, { marginTop: 1, gap: 3, children: controls.map((control) => /* @__PURE__ */ jsxs7(Text8, { color: PALETTE.muted, children: [
|
|
17054
17025
|
"[",
|
|
17055
17026
|
control.keys,
|
|
17056
17027
|
"] ",
|
|
@@ -17063,7 +17034,7 @@ function ErrorStep({
|
|
|
17063
17034
|
import { Box as Box8, Text as Text9 } from "ink";
|
|
17064
17035
|
|
|
17065
17036
|
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/controls.ts
|
|
17066
|
-
import { useInput as
|
|
17037
|
+
import { useInput as useInput8 } from "ink";
|
|
17067
17038
|
|
|
17068
17039
|
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/logic.ts
|
|
17069
17040
|
function gateAction(input, key, canSkip) {
|
|
@@ -17082,7 +17053,7 @@ function gateControls(continueLabel, skipLabel2, canSkip) {
|
|
|
17082
17053
|
|
|
17083
17054
|
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/controls.ts
|
|
17084
17055
|
function useGateControls(handlers) {
|
|
17085
|
-
|
|
17056
|
+
useInput8((input, key) => {
|
|
17086
17057
|
const action = gateAction(input, key, handlers.canSkip);
|
|
17087
17058
|
if (action === "continue") handlers.onContinue();
|
|
17088
17059
|
else if (action === "skip") handlers.onSkip();
|
|
@@ -17091,7 +17062,7 @@ function useGateControls(handlers) {
|
|
|
17091
17062
|
}
|
|
17092
17063
|
|
|
17093
17064
|
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/gate-step.tsx
|
|
17094
|
-
import { jsx as
|
|
17065
|
+
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
17095
17066
|
function GateStep({
|
|
17096
17067
|
message,
|
|
17097
17068
|
onContinue,
|
|
@@ -17113,9 +17084,9 @@ function GateStep({
|
|
|
17113
17084
|
" ",
|
|
17114
17085
|
message
|
|
17115
17086
|
] }),
|
|
17116
|
-
summary && /* @__PURE__ */
|
|
17117
|
-
context && /* @__PURE__ */
|
|
17118
|
-
/* @__PURE__ */
|
|
17087
|
+
summary && /* @__PURE__ */ jsx9(Text9, { color: PALETTE.muted, children: summary }),
|
|
17088
|
+
context && /* @__PURE__ */ jsx9(Box8, { marginTop: 1, children: /* @__PURE__ */ jsx9(Text9, { children: context }) }),
|
|
17089
|
+
/* @__PURE__ */ jsx9(Box8, { marginTop: 1, gap: 3, children: gateControls(continueLabel, skipLabel2, onSkip !== void 0).map((control) => /* @__PURE__ */ jsxs8(Text9, { color: PALETTE.muted, children: [
|
|
17119
17090
|
"[",
|
|
17120
17091
|
control.keys,
|
|
17121
17092
|
"] ",
|
|
@@ -17166,25 +17137,25 @@ function useElapsed() {
|
|
|
17166
17137
|
}
|
|
17167
17138
|
|
|
17168
17139
|
// packages/experience-design-system-cli/src/tui/import/shared/running-step/running-step.tsx
|
|
17169
|
-
import { jsx as
|
|
17140
|
+
import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
17170
17141
|
var RULE = "\u2500".repeat(40);
|
|
17171
17142
|
function Line({ line }) {
|
|
17172
17143
|
if (line.progress) {
|
|
17173
17144
|
return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, children: [
|
|
17174
17145
|
/* @__PURE__ */ jsxs9(Box9, { gap: 2, children: [
|
|
17175
|
-
/* @__PURE__ */
|
|
17146
|
+
/* @__PURE__ */ jsx10(Box9, { width: 40, children: /* @__PURE__ */ jsx10(ThemeProvider, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx10(ProgressBar, { value: progressPercent(line.progress) }) }) }),
|
|
17176
17147
|
/* @__PURE__ */ jsxs9(Text10, { color: PALETTE.muted, children: [
|
|
17177
17148
|
line.progress.done,
|
|
17178
17149
|
"/",
|
|
17179
17150
|
line.progress.total
|
|
17180
17151
|
] })
|
|
17181
17152
|
] }),
|
|
17182
|
-
/* @__PURE__ */
|
|
17153
|
+
/* @__PURE__ */ jsx10(Text10, { color: PALETTE.muted, children: line.text })
|
|
17183
17154
|
] });
|
|
17184
17155
|
}
|
|
17185
17156
|
return /* @__PURE__ */ jsxs9(Box9, { gap: 1, children: [
|
|
17186
|
-
line.complete ? /* @__PURE__ */
|
|
17187
|
-
/* @__PURE__ */
|
|
17157
|
+
line.complete ? /* @__PURE__ */ jsx10(Text10, { color: PALETTE.success, children: "\u2713" }) : /* @__PURE__ */ jsx10(Spinner, {}),
|
|
17158
|
+
/* @__PURE__ */ jsx10(Text10, { color: PALETTE.muted, children: line.text })
|
|
17188
17159
|
] });
|
|
17189
17160
|
}
|
|
17190
17161
|
function RunningStep({
|
|
@@ -17197,13 +17168,13 @@ function RunningStep({
|
|
|
17197
17168
|
const elapsed = useElapsed();
|
|
17198
17169
|
return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
17199
17170
|
/* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
|
|
17200
|
-
/* @__PURE__ */
|
|
17201
|
-
/* @__PURE__ */
|
|
17202
|
-
/* @__PURE__ */
|
|
17171
|
+
/* @__PURE__ */ jsx10(Text10, { color: PALETTE.muted, children: RULE }),
|
|
17172
|
+
/* @__PURE__ */ jsx10(Text10, { bold: true, children: stepLabel(stepNumber, totalSteps, title) }),
|
|
17173
|
+
/* @__PURE__ */ jsx10(Text10, { color: PALETTE.muted, children: RULE })
|
|
17203
17174
|
] }),
|
|
17204
|
-
/* @__PURE__ */
|
|
17205
|
-
/* @__PURE__ */
|
|
17206
|
-
/* @__PURE__ */
|
|
17175
|
+
/* @__PURE__ */ jsx10(Text10, { children: description }),
|
|
17176
|
+
/* @__PURE__ */ jsx10(Box9, { marginTop: 1, flexDirection: "column", gap: 1, children: lines.map((line, index) => /* @__PURE__ */ jsx10(Line, { line }, index)) }),
|
|
17177
|
+
/* @__PURE__ */ jsx10(Box9, { marginTop: 1, children: /* @__PURE__ */ jsxs9(Text10, { color: PALETTE.muted, children: [
|
|
17207
17178
|
"Elapsed: ",
|
|
17208
17179
|
elapsed
|
|
17209
17180
|
] }) })
|
|
@@ -17257,7 +17228,7 @@ Tokens Path: ${tokensPath}`;
|
|
|
17257
17228
|
}
|
|
17258
17229
|
|
|
17259
17230
|
// packages/experience-design-system-cli/src/tui/import/steps/05-token-reuse/screen.tsx
|
|
17260
|
-
import { jsx as
|
|
17231
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
17261
17232
|
function TokenReuseScreen({
|
|
17262
17233
|
tokensPath,
|
|
17263
17234
|
sourceChanged,
|
|
@@ -17266,7 +17237,7 @@ function TokenReuseScreen({
|
|
|
17266
17237
|
onQuit
|
|
17267
17238
|
}) {
|
|
17268
17239
|
const { summary, context } = gateText({ tokensPath, sourceChanged });
|
|
17269
|
-
return /* @__PURE__ */
|
|
17240
|
+
return /* @__PURE__ */ jsx11(
|
|
17270
17241
|
GateStep,
|
|
17271
17242
|
{
|
|
17272
17243
|
message: "Existing tokens.json found",
|
|
@@ -17370,14 +17341,14 @@ function resolveAgentChoice(flag, stored) {
|
|
|
17370
17341
|
}
|
|
17371
17342
|
|
|
17372
17343
|
// packages/experience-design-system-cli/src/tui/import/steps/06-extraction/screen.tsx
|
|
17373
|
-
import { jsx as
|
|
17344
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
17374
17345
|
function ExtractionScreen({
|
|
17375
17346
|
progress,
|
|
17376
17347
|
agent,
|
|
17377
17348
|
stepNumber,
|
|
17378
17349
|
totalSteps
|
|
17379
17350
|
}) {
|
|
17380
|
-
return /* @__PURE__ */
|
|
17351
|
+
return /* @__PURE__ */ jsx12(
|
|
17381
17352
|
RunningStep,
|
|
17382
17353
|
{
|
|
17383
17354
|
stepNumber,
|
|
@@ -17393,7 +17364,7 @@ function ExtractionScreen({
|
|
|
17393
17364
|
init_config();
|
|
17394
17365
|
|
|
17395
17366
|
// packages/experience-design-system-cli/src/tui/import/steps/06-extraction/use-extraction.ts
|
|
17396
|
-
import { useEffect as useEffect5, useRef as
|
|
17367
|
+
import { useEffect as useEffect5, useRef as useRef2, useState as useState8 } from "react";
|
|
17397
17368
|
|
|
17398
17369
|
// packages/experience-design-system-cli/src/tui/import/steps/06-extraction/run.ts
|
|
17399
17370
|
import { mkdir as mkdir7 } from "node:fs/promises";
|
|
@@ -17651,7 +17622,7 @@ async function resolveSelectionPrompt(overrides) {
|
|
|
17651
17622
|
// packages/experience-design-system-cli/src/tui/import/steps/06-extraction/use-extraction.ts
|
|
17652
17623
|
function useExtraction(input) {
|
|
17653
17624
|
const [state2, setState] = useState8();
|
|
17654
|
-
const current =
|
|
17625
|
+
const current = useRef2();
|
|
17655
17626
|
useEffect5(() => {
|
|
17656
17627
|
current.current = input;
|
|
17657
17628
|
if (!input) {
|
|
@@ -17682,7 +17653,7 @@ function useExtraction(input) {
|
|
|
17682
17653
|
import { Box as Box20, Text as Text22 } from "ink";
|
|
17683
17654
|
|
|
17684
17655
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/added-column.tsx
|
|
17685
|
-
import
|
|
17656
|
+
import React6 from "react";
|
|
17686
17657
|
import { Box as Box11, Text as Text12 } from "ink";
|
|
17687
17658
|
import figures from "figures";
|
|
17688
17659
|
|
|
@@ -17801,7 +17772,7 @@ function computeColumnWindow(total, cursor, visibleCount) {
|
|
|
17801
17772
|
|
|
17802
17773
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/windowed-panel.tsx
|
|
17803
17774
|
import { Box as Box10, Text as Text11 } from "ink";
|
|
17804
|
-
import { jsx as
|
|
17775
|
+
import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
17805
17776
|
var MIN_TERMINAL_PANEL_HEIGHT = 5;
|
|
17806
17777
|
function terminalPanelHeight(rows, reservedRows = 4) {
|
|
17807
17778
|
return Math.max(MIN_TERMINAL_PANEL_HEIGHT, rows - reservedRows);
|
|
@@ -17817,7 +17788,7 @@ function FixedPanel({
|
|
|
17817
17788
|
clipOverflow = true,
|
|
17818
17789
|
children
|
|
17819
17790
|
}) {
|
|
17820
|
-
return /* @__PURE__ */
|
|
17791
|
+
return /* @__PURE__ */ jsx13(
|
|
17821
17792
|
Box10,
|
|
17822
17793
|
{
|
|
17823
17794
|
flexDirection: "column",
|
|
@@ -17843,7 +17814,7 @@ function WindowedPanel({ width, height, title, focused, children }) {
|
|
|
17843
17814
|
...height === void 0 ? {} : { height },
|
|
17844
17815
|
focused,
|
|
17845
17816
|
children: [
|
|
17846
|
-
title && /* @__PURE__ */
|
|
17817
|
+
title && /* @__PURE__ */ jsx13(WindowedPanelHeader, { title, width, focused }),
|
|
17847
17818
|
children
|
|
17848
17819
|
]
|
|
17849
17820
|
}
|
|
@@ -17855,8 +17826,8 @@ function WindowedPanelHeader({
|
|
|
17855
17826
|
focused
|
|
17856
17827
|
}) {
|
|
17857
17828
|
return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
|
|
17858
|
-
/* @__PURE__ */
|
|
17859
|
-
/* @__PURE__ */
|
|
17829
|
+
/* @__PURE__ */ jsx13(Text11, { bold: true, color: PALETTE2.info, inverse: focused, children: title }),
|
|
17830
|
+
/* @__PURE__ */ jsx13(Text11, { color: PALETTE2.muted, children: "\u2500".repeat(Math.max(0, width - 2)) })
|
|
17860
17831
|
] });
|
|
17861
17832
|
}
|
|
17862
17833
|
function formatWindowIndicator(direction, count) {
|
|
@@ -17864,32 +17835,32 @@ function formatWindowIndicator(direction, count) {
|
|
|
17864
17835
|
return `${direction === "up" ? "\u2191" : "\u2193"} ${count} more`;
|
|
17865
17836
|
}
|
|
17866
17837
|
function WindowIndicator({ direction, count }) {
|
|
17867
|
-
return /* @__PURE__ */
|
|
17838
|
+
return /* @__PURE__ */ jsx13(Text11, { color: PALETTE2.muted, children: formatWindowIndicator(direction, count) });
|
|
17868
17839
|
}
|
|
17869
17840
|
|
|
17870
17841
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/added-column.tsx
|
|
17871
|
-
import { jsx as
|
|
17842
|
+
import { jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
17872
17843
|
function AddedColumn(props) {
|
|
17873
17844
|
const { title, width, height, entries, cursor, focused, aiFlaggedByKey, visibleCount } = props;
|
|
17874
17845
|
const reserveAiBadge = entries.some((e) => aiFlaggedByKey?.get(e.name) === true);
|
|
17875
17846
|
const firstNonCycleIdx = entries.findIndex((e) => !e.isCycle);
|
|
17876
17847
|
const window = computeColumnWindow(entries.length, cursor, Math.max(1, visibleCount));
|
|
17877
17848
|
return /* @__PURE__ */ jsxs11(WindowedPanel, { width, height, title, focused, children: [
|
|
17878
|
-
/* @__PURE__ */
|
|
17879
|
-
entries.length === 0 ? /* @__PURE__ */
|
|
17849
|
+
/* @__PURE__ */ jsx14(WindowIndicator, { direction: "up", count: window.above }),
|
|
17850
|
+
entries.length === 0 ? /* @__PURE__ */ jsx14(Text12, { color: PALETTE2.muted, children: "(none)" }) : entries.slice(window.start, window.end).map((entry, vi) => {
|
|
17880
17851
|
const i = window.start + vi;
|
|
17881
17852
|
const isSelected = i === cursor;
|
|
17882
17853
|
const isCursor = focused && isSelected;
|
|
17883
17854
|
const aiFlagged = aiFlaggedByKey?.get(entry.name) === true;
|
|
17884
17855
|
const showSeparator = firstNonCycleIdx > 0 && i === firstNonCycleIdx;
|
|
17885
17856
|
const style = sideColumnLabelStyle({ isCycle: entry.isCycle, isSelected, focused });
|
|
17886
|
-
return /* @__PURE__ */ jsxs11(
|
|
17887
|
-
showSeparator && /* @__PURE__ */
|
|
17857
|
+
return /* @__PURE__ */ jsxs11(React6.Fragment, { children: [
|
|
17858
|
+
showSeparator && /* @__PURE__ */ jsx14(Text12, { color: PALETTE2.muted, children: "\u2500".repeat(Math.max(0, width - 2)) }),
|
|
17888
17859
|
/* @__PURE__ */ jsxs11(Box11, { children: [
|
|
17889
|
-
isCursor ? /* @__PURE__ */
|
|
17890
|
-
reserveAiBadge && (aiFlagged ? /* @__PURE__ */
|
|
17891
|
-
entry.isCycle && /* @__PURE__ */
|
|
17892
|
-
/* @__PURE__ */
|
|
17860
|
+
isCursor ? /* @__PURE__ */ jsx14(Text12, { color: PALETTE2.info, bold: true, children: figures.pointer }) : /* @__PURE__ */ jsx14(Text12, { children: " " }),
|
|
17861
|
+
reserveAiBadge && (aiFlagged ? /* @__PURE__ */ jsx14(Text12, { color: PALETTE2.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx14(Text12, { children: " " })),
|
|
17862
|
+
entry.isCycle && /* @__PURE__ */ jsx14(Text12, { color: isCursor ? PALETTE2.info : PALETTE2.warning, bold: true, underline: style.nameUnderline, children: " \u26A0" }),
|
|
17863
|
+
/* @__PURE__ */ jsx14(
|
|
17893
17864
|
Text12,
|
|
17894
17865
|
{
|
|
17895
17866
|
color: style.nameColor,
|
|
@@ -17903,14 +17874,14 @@ function AddedColumn(props) {
|
|
|
17903
17874
|
] })
|
|
17904
17875
|
] }, entry.name);
|
|
17905
17876
|
}),
|
|
17906
|
-
/* @__PURE__ */
|
|
17877
|
+
/* @__PURE__ */ jsx14(WindowIndicator, { direction: "down", count: window.below })
|
|
17907
17878
|
] });
|
|
17908
17879
|
}
|
|
17909
17880
|
|
|
17910
17881
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/cycles-panel.tsx
|
|
17911
17882
|
import { Box as Box12, Text as Text13 } from "ink";
|
|
17912
17883
|
import figures2 from "figures";
|
|
17913
|
-
import { jsx as
|
|
17884
|
+
import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
17914
17885
|
function cycleLabel(cycle, index) {
|
|
17915
17886
|
const parts = [];
|
|
17916
17887
|
for (let i = 0; i < cycle.edges.length; i++) {
|
|
@@ -17922,28 +17893,28 @@ function cycleLabel(cycle, index) {
|
|
|
17922
17893
|
}
|
|
17923
17894
|
function CyclesPanel({ cycles, cursor }) {
|
|
17924
17895
|
return /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE2.warning, paddingX: 1, marginTop: 1, children: [
|
|
17925
|
-
/* @__PURE__ */
|
|
17926
|
-
/* @__PURE__ */
|
|
17896
|
+
/* @__PURE__ */ jsx15(Text13, { bold: true, color: PALETTE2.warning, children: `Cycles detected (${cycles.length}):` }),
|
|
17897
|
+
/* @__PURE__ */ jsx15(Text13, { children: " " }),
|
|
17927
17898
|
cycles.map((cycle, i) => {
|
|
17928
17899
|
const isCursor = i === cursor;
|
|
17929
17900
|
return /* @__PURE__ */ jsxs12(Text13, { children: [
|
|
17930
|
-
isCursor ? /* @__PURE__ */
|
|
17931
|
-
/* @__PURE__ */
|
|
17901
|
+
isCursor ? /* @__PURE__ */ jsx15(Text13, { color: PALETTE2.info, bold: true, children: figures2.pointer }) : /* @__PURE__ */ jsx15(Text13, { children: " " }),
|
|
17902
|
+
/* @__PURE__ */ jsx15(Text13, { color: PALETTE2.warning, inverse: isCursor, children: " " + cycleLabel(cycle, i) })
|
|
17932
17903
|
] }, i);
|
|
17933
17904
|
}),
|
|
17934
|
-
/* @__PURE__ */
|
|
17905
|
+
/* @__PURE__ */ jsx15(Text13, { children: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [c/Esc] close" })
|
|
17935
17906
|
] });
|
|
17936
17907
|
}
|
|
17937
17908
|
|
|
17938
17909
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/reject-prompt.tsx
|
|
17939
17910
|
import { Box as Box13, Text as Text14 } from "ink";
|
|
17940
|
-
import { jsx as
|
|
17911
|
+
import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
17941
17912
|
function RejectPrompt({ pending }) {
|
|
17942
17913
|
return /* @__PURE__ */ jsxs13(Box13, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE2.warning, paddingX: 1, marginTop: 1, children: [
|
|
17943
|
-
/* @__PURE__ */
|
|
17944
|
-
pending.ancestors.length > 0 && /* @__PURE__ */
|
|
17945
|
-
pending.descendants.length > 0 && /* @__PURE__ */
|
|
17946
|
-
/* @__PURE__ */
|
|
17914
|
+
/* @__PURE__ */ jsx16(Text14, { bold: true, color: PALETTE2.warning, children: `Rejecting ${pending.target} will:` }),
|
|
17915
|
+
pending.ancestors.length > 0 && /* @__PURE__ */ jsx16(Text14, { children: `- Reject ancestors: ${pending.ancestors.join(", ")}` }),
|
|
17916
|
+
pending.descendants.length > 0 && /* @__PURE__ */ jsx16(Text14, { children: `- Deselect descendants: ${pending.descendants.join(", ")}` }),
|
|
17917
|
+
/* @__PURE__ */ jsx16(Text14, { children: "[y] confirm \xB7 [n]/[Esc] cancel" })
|
|
17947
17918
|
] });
|
|
17948
17919
|
}
|
|
17949
17920
|
|
|
@@ -17952,11 +17923,11 @@ import { Box as Box14 } from "ink";
|
|
|
17952
17923
|
|
|
17953
17924
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/LegendEntry.tsx
|
|
17954
17925
|
import { Text as Text15 } from "ink";
|
|
17955
|
-
import { jsx as
|
|
17926
|
+
import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
17956
17927
|
function legendEntry(keyBracket, label, active = false) {
|
|
17957
17928
|
return /* @__PURE__ */ jsxs14(Text15, { children: [
|
|
17958
|
-
/* @__PURE__ */
|
|
17959
|
-
/* @__PURE__ */
|
|
17929
|
+
/* @__PURE__ */ jsx17(Text15, { color: active ? PALETTE2.warning : PALETTE2.info, inverse: active, children: keyBracket }),
|
|
17930
|
+
/* @__PURE__ */ jsx17(Text15, { color: active ? PALETTE2.warning : void 0, inverse: active, children: " " + label })
|
|
17960
17931
|
] }, keyBracket + label);
|
|
17961
17932
|
}
|
|
17962
17933
|
|
|
@@ -17976,7 +17947,7 @@ function CompactControlBar({ hasGroupRoots, searchActive }) {
|
|
|
17976
17947
|
|
|
17977
17948
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CounterStrip.tsx
|
|
17978
17949
|
import { Box as Box15, Text as Text16 } from "ink";
|
|
17979
|
-
import { jsx as
|
|
17950
|
+
import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
17980
17951
|
function CounterStrip(props) {
|
|
17981
17952
|
const { counters, totalWidth } = props;
|
|
17982
17953
|
const condensed = totalWidth < 60;
|
|
@@ -17984,32 +17955,32 @@ function CounterStrip(props) {
|
|
|
17984
17955
|
const labelRej = condensed ? "Rej" : "Rejected";
|
|
17985
17956
|
const labelUnd = condensed ? "Und" : "Undecided";
|
|
17986
17957
|
const sep = condensed ? " | " : " ";
|
|
17987
|
-
return /* @__PURE__ */
|
|
17958
|
+
return /* @__PURE__ */ jsx18(Box15, { children: /* @__PURE__ */ jsxs16(Text16, { children: [
|
|
17988
17959
|
/* @__PURE__ */ jsxs16(Text16, { color: PALETTE2.muted, children: [
|
|
17989
17960
|
labelGrp,
|
|
17990
17961
|
" "
|
|
17991
17962
|
] }),
|
|
17992
|
-
/* @__PURE__ */
|
|
17993
|
-
/* @__PURE__ */
|
|
17963
|
+
/* @__PURE__ */ jsx18(Text16, { bold: true, children: counters.groups }),
|
|
17964
|
+
/* @__PURE__ */ jsx18(Text16, { color: PALETTE2.muted, children: sep }),
|
|
17994
17965
|
/* @__PURE__ */ jsxs16(Text16, { color: PALETTE2.muted, children: [
|
|
17995
17966
|
labelRej,
|
|
17996
17967
|
" "
|
|
17997
17968
|
] }),
|
|
17998
|
-
/* @__PURE__ */
|
|
17999
|
-
/* @__PURE__ */
|
|
17969
|
+
/* @__PURE__ */ jsx18(Text16, { bold: true, children: counters.rejected }),
|
|
17970
|
+
/* @__PURE__ */ jsx18(Text16, { color: PALETTE2.muted, children: sep }),
|
|
18000
17971
|
/* @__PURE__ */ jsxs16(Text16, { color: PALETTE2.muted, children: [
|
|
18001
17972
|
labelUnd,
|
|
18002
17973
|
" "
|
|
18003
17974
|
] }),
|
|
18004
|
-
/* @__PURE__ */
|
|
18005
|
-
/* @__PURE__ */
|
|
17975
|
+
/* @__PURE__ */ jsx18(Text16, { bold: true, children: counters.undecided }),
|
|
17976
|
+
/* @__PURE__ */ jsx18(Text16, { color: PALETTE2.muted, children: sep })
|
|
18006
17977
|
] }) });
|
|
18007
17978
|
}
|
|
18008
17979
|
|
|
18009
17980
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GotoBanner.tsx
|
|
18010
17981
|
import figures3 from "figures";
|
|
18011
17982
|
import { Box as Box16, Text as Text17 } from "ink";
|
|
18012
|
-
import { jsx as
|
|
17983
|
+
import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
18013
17984
|
var DEFAULT_MAX_ROWS = 15;
|
|
18014
17985
|
function windowStart(rowCount, highlightIndex, maxRows) {
|
|
18015
17986
|
if (rowCount <= maxRows) return 0;
|
|
@@ -18021,8 +17992,8 @@ function windowStart(rowCount, highlightIndex, maxRows) {
|
|
|
18021
17992
|
}
|
|
18022
17993
|
function defaultRenderRow(row, index, isCursor) {
|
|
18023
17994
|
return /* @__PURE__ */ jsxs17(Text17, { children: [
|
|
18024
|
-
isCursor ? /* @__PURE__ */
|
|
18025
|
-
/* @__PURE__ */
|
|
17995
|
+
isCursor ? /* @__PURE__ */ jsx19(Text17, { color: PALETTE2.info, bold: true, children: figures3.pointer }) : /* @__PURE__ */ jsx19(Text17, { children: " " }),
|
|
17996
|
+
/* @__PURE__ */ jsx19(Text17, { inverse: isCursor, children: " " + row.label })
|
|
18026
17997
|
] }, index);
|
|
18027
17998
|
}
|
|
18028
17999
|
function GotoBanner({
|
|
@@ -18052,14 +18023,14 @@ function GotoBanner({
|
|
|
18052
18023
|
width,
|
|
18053
18024
|
flexShrink: 0,
|
|
18054
18025
|
children: [
|
|
18055
|
-
/* @__PURE__ */
|
|
18056
|
-
moreAbove > 0 && /* @__PURE__ */
|
|
18026
|
+
/* @__PURE__ */ jsx19(Text17, { bold: true, children: title }),
|
|
18027
|
+
moreAbove > 0 && /* @__PURE__ */ jsx19(Text17, { color: PALETTE2.muted, children: ` \u25B2 ${moreAbove} more` }),
|
|
18057
18028
|
visible.map((row, vi) => {
|
|
18058
18029
|
const i = start + vi;
|
|
18059
18030
|
return renderRow(row, i, i === highlightIndex);
|
|
18060
18031
|
}),
|
|
18061
|
-
moreBelow > 0 && /* @__PURE__ */
|
|
18062
|
-
footerHint !== void 0 && /* @__PURE__ */
|
|
18032
|
+
moreBelow > 0 && /* @__PURE__ */ jsx19(Text17, { color: PALETTE2.muted, children: ` \u25BC ${moreBelow} more` }),
|
|
18033
|
+
footerHint !== void 0 && /* @__PURE__ */ jsx19(Text17, { color: PALETTE2.muted, children: footerHint })
|
|
18063
18034
|
]
|
|
18064
18035
|
}
|
|
18065
18036
|
);
|
|
@@ -18408,7 +18379,7 @@ function findSharedDeps(closures) {
|
|
|
18408
18379
|
|
|
18409
18380
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/badge.tsx
|
|
18410
18381
|
import { Text as Text18 } from "ink";
|
|
18411
|
-
import { jsx as
|
|
18382
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
18412
18383
|
function previewBadge(annotation) {
|
|
18413
18384
|
switch (annotation) {
|
|
18414
18385
|
case "new":
|
|
@@ -18427,17 +18398,20 @@ function PreviewBadge({
|
|
|
18427
18398
|
badge,
|
|
18428
18399
|
highlighted = false
|
|
18429
18400
|
}) {
|
|
18430
|
-
return badge ? /* @__PURE__ */
|
|
18401
|
+
return badge ? /* @__PURE__ */ jsx20(Text18, { color: !highlighted && badge.dim ? PALETTE2.muted : badge.color, bold: badge.bold, children: badge.char }) : /* @__PURE__ */ jsx20(Text18, { children: " " });
|
|
18431
18402
|
}
|
|
18432
18403
|
|
|
18433
18404
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GroupedSidebar.tsx
|
|
18434
|
-
import { jsx as
|
|
18405
|
+
import { jsx as jsx21, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
18435
18406
|
var GLYPH_EXPAND_COLLAPSED = "\u25B8";
|
|
18436
18407
|
var GLYPH_EXPAND_EXPANDED = "\u25BE";
|
|
18437
18408
|
var GLYPH_TREE_MID = "\u251C\u2500";
|
|
18438
18409
|
var GLYPH_TREE_LAST = "\u2514\u2500";
|
|
18439
18410
|
var GLYPH_WARN = "\u26A0";
|
|
18440
18411
|
var GLYPH_ERROR = "\u2717";
|
|
18412
|
+
function hasDirectChild(node) {
|
|
18413
|
+
return node.slots.some((slot) => (slot.allowedComponents ?? []).some((target) => target !== node.name));
|
|
18414
|
+
}
|
|
18441
18415
|
function isEmpty(entry) {
|
|
18442
18416
|
return Object.keys(entry.$properties ?? {}).length === 0 && Object.keys(entry.$slots ?? {}).length === 0;
|
|
18443
18417
|
}
|
|
@@ -18480,10 +18454,12 @@ function buildVisibleRows(props) {
|
|
|
18480
18454
|
otherKeys2.sort();
|
|
18481
18455
|
const otherKeySet2 = new Set(otherKeys2);
|
|
18482
18456
|
const flatGraph = graph.filter((n) => otherKeySet2.has(n.name));
|
|
18483
|
-
const closures2 = computeAllClosures(flatGraph);
|
|
18484
18457
|
const depCountByKey = /* @__PURE__ */ new Map();
|
|
18485
|
-
for (const
|
|
18486
|
-
|
|
18458
|
+
for (const node of flatGraph) {
|
|
18459
|
+
const direct = new Set(
|
|
18460
|
+
node.slots.flatMap((slot) => slot.allowedComponents ?? []).filter((t) => t !== node.name && otherKeySet2.has(t))
|
|
18461
|
+
);
|
|
18462
|
+
if (direct.size > 0) depCountByKey.set(node.name, direct.size);
|
|
18487
18463
|
}
|
|
18488
18464
|
for (const key of cycleKeys2) {
|
|
18489
18465
|
const rec = itemByKey2.get(key);
|
|
@@ -18528,28 +18504,11 @@ function buildVisibleRows(props) {
|
|
|
18528
18504
|
const seenCycleTierChildOccurrence = /* @__PURE__ */ new Set();
|
|
18529
18505
|
const computeCycleMemberSubtree = (root) => {
|
|
18530
18506
|
const out = [];
|
|
18531
|
-
const
|
|
18532
|
-
|
|
18533
|
-
|
|
18534
|
-
|
|
18535
|
-
|
|
18536
|
-
if (!parentItem) continue;
|
|
18537
|
-
const slotTargets2 = [];
|
|
18538
|
-
const seenTarget = /* @__PURE__ */ new Set();
|
|
18539
|
-
for (const target of allowedComponentNames(parentItem.entry)) {
|
|
18540
|
-
if (!itemByKey.has(target)) continue;
|
|
18541
|
-
if (seenTarget.has(target)) continue;
|
|
18542
|
-
seenTarget.add(target);
|
|
18543
|
-
slotTargets2.push(target);
|
|
18544
|
-
}
|
|
18545
|
-
slotTargets2.sort();
|
|
18546
|
-
for (const target of slotTargets2) {
|
|
18547
|
-
if (visited.has(target)) continue;
|
|
18548
|
-
visited.add(target);
|
|
18549
|
-
const isCycleMember = cycleParticipants.has(target);
|
|
18550
|
-
out.push({ name: target, depth: cur.depth + 1, isCycleMember });
|
|
18551
|
-
queue.push({ name: target, depth: cur.depth + 1 });
|
|
18552
|
-
}
|
|
18507
|
+
const parentItem = itemByKey.get(root)?.it;
|
|
18508
|
+
if (!parentItem) return out;
|
|
18509
|
+
const slotTargets2 = [...new Set(allowedComponentNames(parentItem.entry))].filter((target) => target !== root && itemByKey.has(target)).sort();
|
|
18510
|
+
for (const target of slotTargets2) {
|
|
18511
|
+
out.push({ name: target, depth: 1, isCycleMember: cycleParticipants.has(target) });
|
|
18553
18512
|
}
|
|
18554
18513
|
return out;
|
|
18555
18514
|
};
|
|
@@ -18611,7 +18570,15 @@ function buildVisibleRows(props) {
|
|
|
18611
18570
|
}
|
|
18612
18571
|
const otherKeySet = new Set(otherKeys);
|
|
18613
18572
|
const subgraph = graph.filter((n) => otherKeySet.has(n.name));
|
|
18614
|
-
const closures =
|
|
18573
|
+
const closures = /* @__PURE__ */ new Map();
|
|
18574
|
+
const parentNames = /* @__PURE__ */ new Set([
|
|
18575
|
+
...findRoots(subgraph),
|
|
18576
|
+
...subgraph.filter((n) => hasDirectChild(n)).map((n) => n.name)
|
|
18577
|
+
]);
|
|
18578
|
+
for (const name of [...parentNames].sort()) {
|
|
18579
|
+
const full = computeClosure(name, subgraph);
|
|
18580
|
+
closures.set(name, { ...full, nodes: full.nodes.filter((n) => n.depth <= 1) });
|
|
18581
|
+
}
|
|
18615
18582
|
const sharedDeps = findSharedDeps(closures);
|
|
18616
18583
|
const hasCycleDepDirect = (name) => {
|
|
18617
18584
|
const it = itemByKey.get(name)?.it;
|
|
@@ -18648,7 +18615,6 @@ function buildVisibleRows(props) {
|
|
|
18648
18615
|
}
|
|
18649
18616
|
};
|
|
18650
18617
|
countInjections(root);
|
|
18651
|
-
for (const n of closure.nodes) if (n.name !== root) countInjections(n.name);
|
|
18652
18618
|
const depCount = closure.nodes.length - 1 + injectedCycleCount;
|
|
18653
18619
|
const expanded = alwaysExpanded ? true : props.expandedGroups.has(root);
|
|
18654
18620
|
const glyphExpand = expanded ? GLYPH_EXPAND_EXPANDED : GLYPH_EXPAND_COLLAPSED;
|
|
@@ -18684,7 +18650,6 @@ function buildVisibleRows(props) {
|
|
|
18684
18650
|
emitCycleChildrenOf(root, 0);
|
|
18685
18651
|
for (const c2 of closureChildren) {
|
|
18686
18652
|
injectedChildren.push({ name: c2.name, depth: c2.depth, isCycleChild: false });
|
|
18687
|
-
emitCycleChildrenOf(c2.name, c2.depth);
|
|
18688
18653
|
}
|
|
18689
18654
|
const isLastAtDepth = (idx) => {
|
|
18690
18655
|
const own = injectedChildren[idx].depth;
|
|
@@ -18867,7 +18832,7 @@ function GroupedSidebar(props) {
|
|
|
18867
18832
|
" ",
|
|
18868
18833
|
emptyMessage
|
|
18869
18834
|
] }),
|
|
18870
|
-
windowed && /* @__PURE__ */
|
|
18835
|
+
windowed && /* @__PURE__ */ jsx21(WindowIndicator, { direction: "up", count: start }),
|
|
18871
18836
|
rows.map((row, i) => {
|
|
18872
18837
|
const absoluteRowIdx = start + i;
|
|
18873
18838
|
const isSelected = selectedRowIdx !== void 0 ? absoluteRowIdx === selectedRowIdx && row.itemIdx >= 0 : row.itemIdx >= 0 && row.itemIdx === selectedIdx;
|
|
@@ -18895,10 +18860,10 @@ function GroupedSidebar(props) {
|
|
|
18895
18860
|
isCursor
|
|
18896
18861
|
});
|
|
18897
18862
|
return /* @__PURE__ */ jsxs18(Box17, { children: [
|
|
18898
|
-
isCursor ? /* @__PURE__ */
|
|
18899
|
-
/* @__PURE__ */
|
|
18900
|
-
selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */
|
|
18901
|
-
aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */
|
|
18863
|
+
isCursor ? /* @__PURE__ */ jsx21(Text19, { color: PALETTE2.info, bold: true, children: figures4.pointer }) : /* @__PURE__ */ jsx21(Text19, { children: " " }),
|
|
18864
|
+
/* @__PURE__ */ jsx21(PreviewBadge, { badge, highlighted: isSelected }),
|
|
18865
|
+
selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */ jsx21(Text19, { color: !isSelected && selDim ? PALETTE2.muted : selColor, bold: selBold, children: " " + selGlyph }) : /* @__PURE__ */ jsx21(Text19, { children: " " })),
|
|
18866
|
+
aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */ jsx21(Text19, { color: PALETTE2.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx21(Text19, { children: " " })),
|
|
18902
18867
|
/* @__PURE__ */ jsxs18(
|
|
18903
18868
|
Text19,
|
|
18904
18869
|
{
|
|
@@ -18913,19 +18878,19 @@ function GroupedSidebar(props) {
|
|
|
18913
18878
|
]
|
|
18914
18879
|
}
|
|
18915
18880
|
),
|
|
18916
|
-
inheritanceStyle.glyph && /* @__PURE__ */
|
|
18881
|
+
inheritanceStyle.glyph && /* @__PURE__ */ jsx21(Text19, { color: inheritanceStyle.dim ? PALETTE2.muted : inheritanceStyle.color, bold: inheritanceStyle.bold, children: " " + inheritanceStyle.glyph })
|
|
18917
18882
|
] }, row.key);
|
|
18918
18883
|
}),
|
|
18919
|
-
windowed && /* @__PURE__ */
|
|
18884
|
+
windowed && /* @__PURE__ */ jsx21(WindowIndicator, { direction: "down", count: allRows.length - end })
|
|
18920
18885
|
] });
|
|
18921
18886
|
}
|
|
18922
18887
|
|
|
18923
18888
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/HelpOverlay.tsx
|
|
18924
|
-
import
|
|
18889
|
+
import React7 from "react";
|
|
18925
18890
|
import { Box as Box18, Text as Text20 } from "ink";
|
|
18926
18891
|
|
|
18927
18892
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/hooks/useImmediateInput.ts
|
|
18928
|
-
import { useLayoutEffect, useRef as
|
|
18893
|
+
import { useLayoutEffect, useRef as useRef3 } from "react";
|
|
18929
18894
|
import { useStdin } from "ink";
|
|
18930
18895
|
function parseInput(data) {
|
|
18931
18896
|
const isShiftTab = data === "\x1B[Z";
|
|
@@ -18988,7 +18953,7 @@ function registerInputHandler(stdin, setRawMode, handler) {
|
|
|
18988
18953
|
}
|
|
18989
18954
|
function useImmediateInput(handler, enabled = true) {
|
|
18990
18955
|
const { stdin, setRawMode } = useStdin();
|
|
18991
|
-
const handlerRef =
|
|
18956
|
+
const handlerRef = useRef3(handler);
|
|
18992
18957
|
handlerRef.current = handler;
|
|
18993
18958
|
useLayoutEffect(() => {
|
|
18994
18959
|
if (!enabled) return;
|
|
@@ -19021,7 +18986,7 @@ function useTerminalSize() {
|
|
|
19021
18986
|
}
|
|
19022
18987
|
|
|
19023
18988
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/HelpOverlay.tsx
|
|
19024
|
-
import { Fragment as Fragment2, jsx as
|
|
18989
|
+
import { Fragment as Fragment2, jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
19025
18990
|
function HelpOverlay(props) {
|
|
19026
18991
|
const { onClose } = props;
|
|
19027
18992
|
const { columns: terminalColumns, rows: terminalRows } = useTerminalSize();
|
|
@@ -19042,11 +19007,11 @@ function HelpOverlay(props) {
|
|
|
19042
19007
|
height: panelHeight,
|
|
19043
19008
|
overflowY: "hidden",
|
|
19044
19009
|
children: [
|
|
19045
|
-
/* @__PURE__ */
|
|
19046
|
-
props.sections.map((section) => /* @__PURE__ */ jsxs19(
|
|
19047
|
-
/* @__PURE__ */
|
|
19048
|
-
/* @__PURE__ */
|
|
19049
|
-
section.entries.map((entry) => /* @__PURE__ */
|
|
19010
|
+
/* @__PURE__ */ jsx22(Text20, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
|
|
19011
|
+
props.sections.map((section) => /* @__PURE__ */ jsxs19(React7.Fragment, { children: [
|
|
19012
|
+
/* @__PURE__ */ jsx22(Text20, { children: " " }),
|
|
19013
|
+
/* @__PURE__ */ jsx22(Text20, { bold: true, children: section.title }),
|
|
19014
|
+
section.entries.map((entry) => /* @__PURE__ */ jsx22(Text20, { children: entry.keys ? " " + entry.keys.padEnd(16) + " " + entry.label : " " + entry.label }, entry.keys + entry.label))
|
|
19050
19015
|
] }, section.title))
|
|
19051
19016
|
]
|
|
19052
19017
|
}
|
|
@@ -19063,31 +19028,31 @@ function HelpOverlay(props) {
|
|
|
19063
19028
|
height: panelHeight,
|
|
19064
19029
|
overflowY: "hidden",
|
|
19065
19030
|
children: [
|
|
19066
|
-
/* @__PURE__ */
|
|
19067
|
-
/* @__PURE__ */
|
|
19068
|
-
/* @__PURE__ */
|
|
19069
|
-
/* @__PURE__ */
|
|
19070
|
-
/* @__PURE__ */
|
|
19071
|
-
/* @__PURE__ */
|
|
19072
|
-
/* @__PURE__ */
|
|
19031
|
+
/* @__PURE__ */ jsx22(Text20, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
|
|
19032
|
+
/* @__PURE__ */ jsx22(Text20, { children: " " }),
|
|
19033
|
+
/* @__PURE__ */ jsx22(Text20, { bold: true, children: "Navigation" }),
|
|
19034
|
+
/* @__PURE__ */ jsx22(Text20, { children: " \u2191 / k / PgUp Scroll up" }),
|
|
19035
|
+
/* @__PURE__ */ jsx22(Text20, { children: " \u2193 / j / PgDn Scroll down" }),
|
|
19036
|
+
/* @__PURE__ */ jsx22(Text20, { children: " g / Home Jump to top" }),
|
|
19037
|
+
/* @__PURE__ */ jsx22(Text20, { children: " G / End Jump to bottom" }),
|
|
19073
19038
|
mode === "review" && /* @__PURE__ */ jsxs19(Fragment2, { children: [
|
|
19074
|
-
/* @__PURE__ */
|
|
19075
|
-
/* @__PURE__ */
|
|
19076
|
-
/* @__PURE__ */
|
|
19077
|
-
/* @__PURE__ */
|
|
19078
|
-
/* @__PURE__ */
|
|
19079
|
-
/* @__PURE__ */
|
|
19080
|
-
/* @__PURE__ */
|
|
19081
|
-
/* @__PURE__ */
|
|
19082
|
-
/* @__PURE__ */
|
|
19083
|
-
/* @__PURE__ */
|
|
19084
|
-
/* @__PURE__ */
|
|
19085
|
-
/* @__PURE__ */
|
|
19086
|
-
/* @__PURE__ */
|
|
19039
|
+
/* @__PURE__ */ jsx22(Text20, { children: " " }),
|
|
19040
|
+
/* @__PURE__ */ jsx22(Text20, { bold: true, children: "[Review mode only]" }),
|
|
19041
|
+
/* @__PURE__ */ jsx22(Text20, { children: " Tab Toggle sidebar/detail" }),
|
|
19042
|
+
/* @__PURE__ */ jsx22(Text20, { children: " a Accept component" }),
|
|
19043
|
+
/* @__PURE__ */ jsx22(Text20, { children: " r Reject component" }),
|
|
19044
|
+
/* @__PURE__ */ jsx22(Text20, { children: " e Edit proposal" }),
|
|
19045
|
+
/* @__PURE__ */ jsx22(Text20, { children: " s Toggle source code" }),
|
|
19046
|
+
/* @__PURE__ */ jsx22(Text20, { children: " A Approve all" }),
|
|
19047
|
+
/* @__PURE__ */ jsx22(Text20, { children: " F Open finalize dialog" }),
|
|
19048
|
+
/* @__PURE__ */ jsx22(Text20, { children: " Ctrl+S Save draft" }),
|
|
19049
|
+
/* @__PURE__ */ jsx22(Text20, { children: " Ctrl+Z Undo" }),
|
|
19050
|
+
/* @__PURE__ */ jsx22(Text20, { children: " Ctrl+Y Redo" }),
|
|
19051
|
+
/* @__PURE__ */ jsx22(Text20, { children: " Esc Exit edit / close" })
|
|
19087
19052
|
] }),
|
|
19088
|
-
/* @__PURE__ */
|
|
19089
|
-
/* @__PURE__ */
|
|
19090
|
-
/* @__PURE__ */
|
|
19053
|
+
/* @__PURE__ */ jsx22(Text20, { children: " " }),
|
|
19054
|
+
/* @__PURE__ */ jsx22(Text20, { children: " h Close help" }),
|
|
19055
|
+
/* @__PURE__ */ jsx22(Text20, { children: " q Quit" })
|
|
19091
19056
|
]
|
|
19092
19057
|
}
|
|
19093
19058
|
);
|
|
@@ -19151,7 +19116,7 @@ function formatSearchMatchSummary(matches, total) {
|
|
|
19151
19116
|
}
|
|
19152
19117
|
|
|
19153
19118
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/SearchMatchSummary.tsx
|
|
19154
|
-
import { Fragment as Fragment3, jsx as
|
|
19119
|
+
import { Fragment as Fragment3, jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
19155
19120
|
function SearchMatchSummary({
|
|
19156
19121
|
open,
|
|
19157
19122
|
query,
|
|
@@ -19166,13 +19131,13 @@ function SearchMatchSummary({
|
|
|
19166
19131
|
open && /* @__PURE__ */ jsxs20(Box19, { marginTop, flexDirection: "column", children: [
|
|
19167
19132
|
/* @__PURE__ */ jsxs20(Text21, { children: [
|
|
19168
19133
|
`/${query}`,
|
|
19169
|
-
/* @__PURE__ */
|
|
19170
|
-
query && /* @__PURE__ */
|
|
19171
|
-
/* @__PURE__ */
|
|
19134
|
+
/* @__PURE__ */ jsx23(Text21, { color: PALETTE2.info, children: "\u258E" }),
|
|
19135
|
+
query && /* @__PURE__ */ jsx23(Text21, { color: PALETTE2.muted, children: formatSearchMatchSummary(matches, total) }),
|
|
19136
|
+
/* @__PURE__ */ jsx23(Text21, { children: " \xB7 [Esc] leave" })
|
|
19172
19137
|
] }),
|
|
19173
|
-
autocompleteCandidates.length > 1 && /* @__PURE__ */
|
|
19138
|
+
autocompleteCandidates.length > 1 && /* @__PURE__ */ jsx23(Text21, { color: PALETTE2.muted, children: ` possibilities: ${autocompleteCandidates.join(" \xB7 ").slice(0, 120)}` })
|
|
19174
19139
|
] }),
|
|
19175
|
-
!open && query && /* @__PURE__ */
|
|
19140
|
+
!open && query && /* @__PURE__ */ jsx23(Box19, { marginTop, children: /* @__PURE__ */ jsx23(Text21, { children: `/${query}${formatSearchMatchSummary(matches, total)} \xB7 [Esc] clear` }) })
|
|
19176
19141
|
] });
|
|
19177
19142
|
}
|
|
19178
19143
|
|
|
@@ -19192,7 +19157,7 @@ function createSidebarViewsHelpSection(includeBreaking) {
|
|
|
19192
19157
|
}
|
|
19193
19158
|
|
|
19194
19159
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/use-scope-gate.ts
|
|
19195
|
-
import { useEffect as useEffect7, useMemo as useMemo2, useRef as
|
|
19160
|
+
import { useEffect as useEffect7, useMemo as useMemo2, useRef as useRef4, useState as useState12 } from "react";
|
|
19196
19161
|
|
|
19197
19162
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/graph/search-neighborhood.ts
|
|
19198
19163
|
function computeDirectNeighborhood(matches, graph) {
|
|
@@ -19886,7 +19851,7 @@ function useScopeGate({ components, onConfirm, onQuit }) {
|
|
|
19886
19851
|
for (const p of cycleParticipants) seed.add(p);
|
|
19887
19852
|
return seed;
|
|
19888
19853
|
});
|
|
19889
|
-
const seededGroupsRef =
|
|
19854
|
+
const seededGroupsRef = useRef4(closures.size > 0 || cycleParticipants.size > 0);
|
|
19890
19855
|
useEffect7(() => {
|
|
19891
19856
|
if (seededGroupsRef.current) return;
|
|
19892
19857
|
if (closures.size === 0 && cycleParticipants.size === 0) return;
|
|
@@ -20309,7 +20274,7 @@ function useScopeGate({ components, onConfirm, onQuit }) {
|
|
|
20309
20274
|
}
|
|
20310
20275
|
|
|
20311
20276
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/screen.tsx
|
|
20312
|
-
import { Fragment as Fragment4, jsx as
|
|
20277
|
+
import { Fragment as Fragment4, jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
20313
20278
|
var HELP_SECTIONS = [
|
|
20314
20279
|
{
|
|
20315
20280
|
title: "Navigation",
|
|
@@ -20349,27 +20314,27 @@ var HELP_SECTIONS = [
|
|
|
20349
20314
|
];
|
|
20350
20315
|
function ScopeGateScreen(props) {
|
|
20351
20316
|
if (props.components.length === 0) {
|
|
20352
|
-
return /* @__PURE__ */
|
|
20317
|
+
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." }) });
|
|
20353
20318
|
}
|
|
20354
|
-
return /* @__PURE__ */
|
|
20319
|
+
return /* @__PURE__ */ jsx24(ScopeGateView, { ...props });
|
|
20355
20320
|
}
|
|
20356
20321
|
function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
20357
20322
|
const gate = useScopeGate({ components, onConfirm, onQuit });
|
|
20358
20323
|
const { search, graph, columnPlan, panelLayout, counters } = gate;
|
|
20359
20324
|
if (gate.showHelp) {
|
|
20360
|
-
return /* @__PURE__ */
|
|
20325
|
+
return /* @__PURE__ */ jsx24(HelpOverlay, { sections: HELP_SECTIONS, handleInput: false, onClose: gate.closeHelp });
|
|
20361
20326
|
}
|
|
20362
20327
|
return /* @__PURE__ */ jsxs21(Box20, { flexDirection: "column", paddingX: 2, children: [
|
|
20363
20328
|
/* @__PURE__ */ jsxs21(Box20, { flexDirection: "row", flexWrap: "wrap", children: [
|
|
20364
|
-
/* @__PURE__ */
|
|
20329
|
+
/* @__PURE__ */ jsx24(CounterStrip, { counters, totalWidth: gate.totalWidth }),
|
|
20365
20330
|
gate.aiExcludedCount > 0 && /* @__PURE__ */ jsxs21(Text22, { color: PALETTE2.muted, children: [
|
|
20366
20331
|
`${gate.aiExcludedCount} component${gate.aiExcludedCount === 1 ? "" : "s"} flagged by AI`,
|
|
20367
|
-
gate.aiRows.length > 0 && /* @__PURE__ */
|
|
20332
|
+
gate.aiRows.length > 0 && /* @__PURE__ */ jsx24(Text22, { color: PALETTE2.info, children: " \u2014 press [x] to see why" })
|
|
20368
20333
|
] })
|
|
20369
20334
|
] }),
|
|
20370
|
-
graph.cycles.length > 0 && /* @__PURE__ */
|
|
20335
|
+
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." }) }),
|
|
20371
20336
|
/* @__PURE__ */ jsxs21(Box20, { flexDirection: "row", alignItems: "stretch", children: [
|
|
20372
|
-
gate.aiRationalePanelOpen ? /* @__PURE__ */
|
|
20337
|
+
gate.aiRationalePanelOpen ? /* @__PURE__ */ jsx24(
|
|
20373
20338
|
GotoBanner,
|
|
20374
20339
|
{
|
|
20375
20340
|
title: `Review flags (${gate.aiExcludedCount})`,
|
|
@@ -20379,7 +20344,7 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
20379
20344
|
width: columnPlan.main,
|
|
20380
20345
|
footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [x/Esc] close"
|
|
20381
20346
|
}
|
|
20382
|
-
) : /* @__PURE__ */
|
|
20347
|
+
) : /* @__PURE__ */ jsx24(
|
|
20383
20348
|
GroupedSidebar,
|
|
20384
20349
|
{
|
|
20385
20350
|
items: gate.groupedItems,
|
|
@@ -20408,8 +20373,8 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
20408
20373
|
}
|
|
20409
20374
|
),
|
|
20410
20375
|
columnPlan.layout === "two-column" && /* @__PURE__ */ jsxs21(Fragment4, { children: [
|
|
20411
|
-
/* @__PURE__ */
|
|
20412
|
-
/* @__PURE__ */
|
|
20376
|
+
/* @__PURE__ */ jsx24(Box20, { width: 2, flexShrink: 0 }),
|
|
20377
|
+
/* @__PURE__ */ jsx24(
|
|
20413
20378
|
AddedColumn,
|
|
20414
20379
|
{
|
|
20415
20380
|
width: columnPlan.added,
|
|
@@ -20424,9 +20389,9 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
20424
20389
|
)
|
|
20425
20390
|
] })
|
|
20426
20391
|
] }),
|
|
20427
|
-
gate.cyclesPanelOpen && /* @__PURE__ */
|
|
20428
|
-
gate.pendingRejectCascade && /* @__PURE__ */
|
|
20429
|
-
/* @__PURE__ */
|
|
20392
|
+
gate.cyclesPanelOpen && /* @__PURE__ */ jsx24(CyclesPanel, { cycles: gate.slotCycles, cursor: gate.cyclesCursor }),
|
|
20393
|
+
gate.pendingRejectCascade && /* @__PURE__ */ jsx24(RejectPrompt, { pending: gate.pendingRejectCascade }),
|
|
20394
|
+
/* @__PURE__ */ jsx24(
|
|
20430
20395
|
SearchMatchSummary,
|
|
20431
20396
|
{
|
|
20432
20397
|
open: search.searchOpen,
|
|
@@ -20437,7 +20402,7 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
20437
20402
|
marginTop: 1
|
|
20438
20403
|
}
|
|
20439
20404
|
),
|
|
20440
|
-
/* @__PURE__ */
|
|
20405
|
+
/* @__PURE__ */ jsx24(
|
|
20441
20406
|
CompactControlBar,
|
|
20442
20407
|
{
|
|
20443
20408
|
hasGroupRoots: gate.hasGroupRoots,
|
|
@@ -20448,7 +20413,7 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
20448
20413
|
}
|
|
20449
20414
|
|
|
20450
20415
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/use-scope-gate-flow.ts
|
|
20451
|
-
import { useEffect as useEffect8, useMemo as useMemo3, useRef as
|
|
20416
|
+
import { useEffect as useEffect8, useMemo as useMemo3, useRef as useRef5, useState as useState13 } from "react";
|
|
20452
20417
|
|
|
20453
20418
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/cache-check.ts
|
|
20454
20419
|
async function checkGenerationCache(input) {
|
|
@@ -20495,7 +20460,7 @@ var realDeps2 = { load: loadScopeGate, checkCache: checkGenerationCache };
|
|
|
20495
20460
|
function useScopeGateFlow(input, deps = realDeps2) {
|
|
20496
20461
|
const sessionId = input?.sessionId;
|
|
20497
20462
|
const loaded = useMemo3(() => sessionId ? deps.load(sessionId) : void 0, [sessionId]);
|
|
20498
|
-
const cacheCheck =
|
|
20463
|
+
const cacheCheck = useRef5(void 0);
|
|
20499
20464
|
const [confirmed, setConfirmed] = useState13();
|
|
20500
20465
|
useEffect8(() => {
|
|
20501
20466
|
if (!input || !loaded?.ok || cacheCheck.current) return;
|
|
@@ -20546,7 +20511,7 @@ function progressRows2(progress, agent) {
|
|
|
20546
20511
|
}
|
|
20547
20512
|
|
|
20548
20513
|
// packages/experience-design-system-cli/src/tui/import/steps/08-generation/screen.tsx
|
|
20549
|
-
import { jsx as
|
|
20514
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
20550
20515
|
function GenerationScreen({
|
|
20551
20516
|
progress,
|
|
20552
20517
|
agent,
|
|
@@ -20555,7 +20520,7 @@ function GenerationScreen({
|
|
|
20555
20520
|
stepNumber,
|
|
20556
20521
|
totalSteps
|
|
20557
20522
|
}) {
|
|
20558
|
-
return /* @__PURE__ */
|
|
20523
|
+
return /* @__PURE__ */ jsx25(
|
|
20559
20524
|
RunningStep,
|
|
20560
20525
|
{
|
|
20561
20526
|
stepNumber,
|
|
@@ -20568,7 +20533,7 @@ function GenerationScreen({
|
|
|
20568
20533
|
}
|
|
20569
20534
|
|
|
20570
20535
|
// packages/experience-design-system-cli/src/tui/import/steps/08-generation/use-generation.ts
|
|
20571
|
-
import { useEffect as useEffect9, useRef as
|
|
20536
|
+
import { useEffect as useEffect9, useRef as useRef6, useState as useState14 } from "react";
|
|
20572
20537
|
|
|
20573
20538
|
// packages/experience-design-system-cli/src/tui/import/steps/08-generation/run.ts
|
|
20574
20539
|
import { resolve as resolve23 } from "node:path";
|
|
@@ -20733,7 +20698,7 @@ function applyProgressEvent2(event, previous, total) {
|
|
|
20733
20698
|
// packages/experience-design-system-cli/src/tui/import/steps/08-generation/use-generation.ts
|
|
20734
20699
|
function useGeneration(input) {
|
|
20735
20700
|
const [state2, setState] = useState14();
|
|
20736
|
-
const current =
|
|
20701
|
+
const current = useRef6();
|
|
20737
20702
|
useEffect9(() => {
|
|
20738
20703
|
current.current = input;
|
|
20739
20704
|
if (!input) {
|
|
@@ -21100,7 +21065,7 @@ function skipLabel(matchedNames) {
|
|
|
21100
21065
|
}
|
|
21101
21066
|
|
|
21102
21067
|
// packages/experience-design-system-cli/src/tui/import/steps/preview-validation-error/screen.tsx
|
|
21103
|
-
import { jsx as
|
|
21068
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
21104
21069
|
function PreviewValidationErrorScreen({
|
|
21105
21070
|
errors,
|
|
21106
21071
|
missingNames,
|
|
@@ -21109,7 +21074,7 @@ function PreviewValidationErrorScreen({
|
|
|
21109
21074
|
onQuit
|
|
21110
21075
|
}) {
|
|
21111
21076
|
const matchedNames = matchedComponentNames(errors, missingNames);
|
|
21112
|
-
return /* @__PURE__ */
|
|
21077
|
+
return /* @__PURE__ */ jsx26(
|
|
21113
21078
|
GateStep,
|
|
21114
21079
|
{
|
|
21115
21080
|
intent: "error",
|
|
@@ -21126,7 +21091,7 @@ function PreviewValidationErrorScreen({
|
|
|
21126
21091
|
}
|
|
21127
21092
|
|
|
21128
21093
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx
|
|
21129
|
-
import { useCallback as useCallback5, useEffect as useEffect16, useMemo as useMemo4, useRef as
|
|
21094
|
+
import { useCallback as useCallback5, useEffect as useEffect16, useMemo as useMemo4, useRef as useRef11, useState as useState22 } from "react";
|
|
21130
21095
|
import figures7 from "figures";
|
|
21131
21096
|
|
|
21132
21097
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/review-json-panel.ts
|
|
@@ -21387,7 +21352,7 @@ function enumerateCycleBreaks(cycle, components) {
|
|
|
21387
21352
|
import { Box as Box27, Text as Text30 } from "ink";
|
|
21388
21353
|
|
|
21389
21354
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx
|
|
21390
|
-
import
|
|
21355
|
+
import React8, { useEffect as useEffect10, useLayoutEffect as useLayoutEffect2, useState as useState15 } from "react";
|
|
21391
21356
|
import figures5 from "figures";
|
|
21392
21357
|
import { Box as Box21, measureElement, Text as Text23 } from "ink";
|
|
21393
21358
|
|
|
@@ -21420,7 +21385,7 @@ function computeNextScrollOffset(current, input, key, totalLines, panelHeight) {
|
|
|
21420
21385
|
}
|
|
21421
21386
|
|
|
21422
21387
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx
|
|
21423
|
-
import { Fragment as Fragment5, jsx as
|
|
21388
|
+
import { Fragment as Fragment5, jsx as jsx27, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
21424
21389
|
function createCommonRowProps(selected, focusLevel, editingField, textCursor, valueCursor, cursorVisible, editingValue, valueText, width) {
|
|
21425
21390
|
return {
|
|
21426
21391
|
selected,
|
|
@@ -21559,13 +21524,13 @@ function serializeState(state2, originalJson) {
|
|
|
21559
21524
|
}
|
|
21560
21525
|
function Picker({ value, active }) {
|
|
21561
21526
|
return /* @__PURE__ */ jsxs22(Box21, { children: [
|
|
21562
|
-
active && /* @__PURE__ */
|
|
21563
|
-
/* @__PURE__ */
|
|
21564
|
-
active && /* @__PURE__ */
|
|
21527
|
+
active && /* @__PURE__ */ jsx27(Text23, { color: PALETTE.warning, children: "\u2039" }),
|
|
21528
|
+
/* @__PURE__ */ jsx27(Text23, { color: active ? PALETTE.warning : void 0, bold: active, children: value }),
|
|
21529
|
+
active && /* @__PURE__ */ jsx27(Text23, { color: PALETTE.warning, children: "\u203A" })
|
|
21565
21530
|
] });
|
|
21566
21531
|
}
|
|
21567
21532
|
function Toggle({ value, active }) {
|
|
21568
|
-
return /* @__PURE__ */
|
|
21533
|
+
return /* @__PURE__ */ jsx27(Box21, { children: /* @__PURE__ */ jsx27(Text23, { color: active ? PALETTE.warning : value ? PALETTE.success : PALETTE.border, children: value ? "[\u2713]" : "[ ]" }) });
|
|
21569
21534
|
}
|
|
21570
21535
|
function InlinePropField({
|
|
21571
21536
|
label,
|
|
@@ -21588,7 +21553,7 @@ function RequiredField({
|
|
|
21588
21553
|
editingField,
|
|
21589
21554
|
activeField
|
|
21590
21555
|
}) {
|
|
21591
|
-
return /* @__PURE__ */
|
|
21556
|
+
return /* @__PURE__ */ jsx27(InlinePropField, { label: "req:", focused, children: /* @__PURE__ */ jsx27(Toggle, { value, active: editingField && activeField === "required" }) });
|
|
21592
21557
|
}
|
|
21593
21558
|
function DefaultValueRow({
|
|
21594
21559
|
display,
|
|
@@ -21600,7 +21565,7 @@ function DefaultValueRow({
|
|
|
21600
21565
|
focused ? "\u203A " : " ",
|
|
21601
21566
|
"default:"
|
|
21602
21567
|
] }),
|
|
21603
|
-
active ? /* @__PURE__ */
|
|
21568
|
+
active ? /* @__PURE__ */ jsx27(Picker, { value: display, active: true }) : /* @__PURE__ */ jsx27(Text23, { wrap: "wrap", children: display })
|
|
21604
21569
|
] });
|
|
21605
21570
|
}
|
|
21606
21571
|
function RowLabel({
|
|
@@ -21629,9 +21594,9 @@ function ValueInputRow({
|
|
|
21629
21594
|
cursorVisible
|
|
21630
21595
|
}) {
|
|
21631
21596
|
return /* @__PURE__ */ jsxs22(Box21, { paddingLeft: 2, children: [
|
|
21632
|
-
/* @__PURE__ */
|
|
21633
|
-
/* @__PURE__ */
|
|
21634
|
-
/* @__PURE__ */
|
|
21597
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.accent, children: mode === "edit" ? "\u270E " : "+ " }),
|
|
21598
|
+
/* @__PURE__ */ jsx27(Text23, { children: valueText }),
|
|
21599
|
+
/* @__PURE__ */ jsx27(Text23, { inverse: cursorVisible, children: " " })
|
|
21635
21600
|
] });
|
|
21636
21601
|
}
|
|
21637
21602
|
function EditableListItem({
|
|
@@ -21644,9 +21609,9 @@ function EditableListItem({
|
|
|
21644
21609
|
}) {
|
|
21645
21610
|
const isBeingEdited = editingValue?.mode === "edit" && editingValue.index === index;
|
|
21646
21611
|
if (isBeingEdited) {
|
|
21647
|
-
return /* @__PURE__ */
|
|
21612
|
+
return /* @__PURE__ */ jsx27(ValueInputRow, { mode: "edit", valueText, cursorVisible });
|
|
21648
21613
|
}
|
|
21649
|
-
return /* @__PURE__ */
|
|
21614
|
+
return /* @__PURE__ */ jsx27(Box21, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx27(Text23, { color: active ? PALETTE.accent : void 0, children: active ? `${figures5.pointer} ${value}` : ` ${value}` }) });
|
|
21650
21615
|
}
|
|
21651
21616
|
function EditableValueList({
|
|
21652
21617
|
values,
|
|
@@ -21660,8 +21625,8 @@ function EditableValueList({
|
|
|
21660
21625
|
showAddInput
|
|
21661
21626
|
}) {
|
|
21662
21627
|
return /* @__PURE__ */ jsxs22(Fragment5, { children: [
|
|
21663
|
-
values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */
|
|
21664
|
-
values.map((value, index) => /* @__PURE__ */
|
|
21628
|
+
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 }) })),
|
|
21629
|
+
values.map((value, index) => /* @__PURE__ */ jsx27(
|
|
21665
21630
|
EditableListItem,
|
|
21666
21631
|
{
|
|
21667
21632
|
value,
|
|
@@ -21673,7 +21638,7 @@ function EditableValueList({
|
|
|
21673
21638
|
},
|
|
21674
21639
|
index
|
|
21675
21640
|
)),
|
|
21676
|
-
showAddInput && editingValue?.mode === "add" && /* @__PURE__ */
|
|
21641
|
+
showAddInput && editingValue?.mode === "add" && /* @__PURE__ */ jsx27(ValueInputRow, { mode: "add", valueText, cursorVisible })
|
|
21677
21642
|
] });
|
|
21678
21643
|
}
|
|
21679
21644
|
function DefaultSubRow({
|
|
@@ -21690,12 +21655,12 @@ function DefaultSubRow({
|
|
|
21690
21655
|
focused ? "\u203A " : " ",
|
|
21691
21656
|
"default:"
|
|
21692
21657
|
] }),
|
|
21693
|
-
/* @__PURE__ */
|
|
21658
|
+
/* @__PURE__ */ jsx27(Text23, { color: focused ? void 0 : PALETTE.muted, children: "(not applicable)" })
|
|
21694
21659
|
] });
|
|
21695
21660
|
}
|
|
21696
21661
|
if (prop.type === "boolean") {
|
|
21697
21662
|
const display = prop.default === true ? "true" : prop.default === false ? "false" : "(unset)";
|
|
21698
|
-
return /* @__PURE__ */
|
|
21663
|
+
return /* @__PURE__ */ jsx27(DefaultValueRow, { display, active, focused });
|
|
21699
21664
|
}
|
|
21700
21665
|
if (prop.type === "enum") {
|
|
21701
21666
|
if (prop.values.length === 0) {
|
|
@@ -21704,11 +21669,11 @@ function DefaultSubRow({
|
|
|
21704
21669
|
focused ? "\u203A " : " ",
|
|
21705
21670
|
"default:"
|
|
21706
21671
|
] }),
|
|
21707
|
-
/* @__PURE__ */
|
|
21672
|
+
/* @__PURE__ */ jsx27(Text23, { color: focused ? void 0 : PALETTE.muted, children: "(no values defined)" })
|
|
21708
21673
|
] });
|
|
21709
21674
|
}
|
|
21710
21675
|
const display = typeof prop.default === "string" && prop.default !== "" ? prop.default : "(unset)";
|
|
21711
|
-
return /* @__PURE__ */
|
|
21676
|
+
return /* @__PURE__ */ jsx27(DefaultValueRow, { display, active, focused });
|
|
21712
21677
|
}
|
|
21713
21678
|
const value = typeof prop.default === "string" ? prop.default : "";
|
|
21714
21679
|
if (active) {
|
|
@@ -21718,9 +21683,9 @@ function DefaultSubRow({
|
|
|
21718
21683
|
"default:"
|
|
21719
21684
|
] }),
|
|
21720
21685
|
/* @__PURE__ */ jsxs22(Box21, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
21721
|
-
/* @__PURE__ */
|
|
21722
|
-
/* @__PURE__ */
|
|
21723
|
-
/* @__PURE__ */
|
|
21686
|
+
/* @__PURE__ */ jsx27(Text23, { children: value.slice(0, textCursor) }),
|
|
21687
|
+
/* @__PURE__ */ jsx27(Text23, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
|
|
21688
|
+
/* @__PURE__ */ jsx27(Text23, { children: value.slice(textCursor + 1) })
|
|
21724
21689
|
] })
|
|
21725
21690
|
] });
|
|
21726
21691
|
}
|
|
@@ -21729,7 +21694,7 @@ function DefaultSubRow({
|
|
|
21729
21694
|
focused ? "\u203A " : " ",
|
|
21730
21695
|
"default:"
|
|
21731
21696
|
] }),
|
|
21732
|
-
/* @__PURE__ */
|
|
21697
|
+
/* @__PURE__ */ jsx27(Text23, { color: focused || value ? void 0 : PALETTE.muted, children: value || "(none)" })
|
|
21733
21698
|
] });
|
|
21734
21699
|
}
|
|
21735
21700
|
function DescriptionField({
|
|
@@ -21749,7 +21714,7 @@ function DescriptionField({
|
|
|
21749
21714
|
focused ? "\u203A " : " ",
|
|
21750
21715
|
label
|
|
21751
21716
|
] }),
|
|
21752
|
-
/* @__PURE__ */
|
|
21717
|
+
/* @__PURE__ */ jsx27(Text23, { wrap: "truncate-end", color: value ? void 0 : PALETTE.muted, children: value || "\u2014" })
|
|
21753
21718
|
] });
|
|
21754
21719
|
}
|
|
21755
21720
|
return /* @__PURE__ */ jsxs22(Box21, { paddingLeft, flexDirection: "column", width, flexShrink: 0, children: [
|
|
@@ -21757,7 +21722,7 @@ function DescriptionField({
|
|
|
21757
21722
|
focused ? "\u203A " : " ",
|
|
21758
21723
|
label
|
|
21759
21724
|
] }),
|
|
21760
|
-
editing ? /* @__PURE__ */
|
|
21725
|
+
editing ? /* @__PURE__ */ jsx27(EditableDescription, { cursorVisible, value, textCursor }) : /* @__PURE__ */ jsx27(Text23, { wrap: "wrap", children: value || "\u2014" })
|
|
21761
21726
|
] });
|
|
21762
21727
|
}
|
|
21763
21728
|
function EditableDescription({
|
|
@@ -21767,7 +21732,7 @@ function EditableDescription({
|
|
|
21767
21732
|
}) {
|
|
21768
21733
|
return /* @__PURE__ */ jsxs22(Text23, { wrap: "wrap", children: [
|
|
21769
21734
|
value.slice(0, textCursor),
|
|
21770
|
-
/* @__PURE__ */
|
|
21735
|
+
/* @__PURE__ */ jsx27(Text23, { inverse: cursorVisible, children: value[textCursor] ?? " " }),
|
|
21771
21736
|
value.slice(textCursor + 1)
|
|
21772
21737
|
] });
|
|
21773
21738
|
}
|
|
@@ -21789,8 +21754,8 @@ function PropRow({
|
|
|
21789
21754
|
const descFocused = activeField === "description";
|
|
21790
21755
|
const descActive = editingField && descFocused;
|
|
21791
21756
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
21792
|
-
/* @__PURE__ */
|
|
21793
|
-
/* @__PURE__ */
|
|
21757
|
+
/* @__PURE__ */ jsx27(Box21, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx27(RowLabel, { name: prop.name, selected }) }),
|
|
21758
|
+
/* @__PURE__ */ jsx27(
|
|
21794
21759
|
DescriptionField,
|
|
21795
21760
|
{
|
|
21796
21761
|
value: prop.description,
|
|
@@ -21804,7 +21769,7 @@ function PropRow({
|
|
|
21804
21769
|
}
|
|
21805
21770
|
),
|
|
21806
21771
|
/* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
21807
|
-
/* @__PURE__ */
|
|
21772
|
+
/* @__PURE__ */ jsx27(
|
|
21808
21773
|
RequiredField,
|
|
21809
21774
|
{
|
|
21810
21775
|
value: prop.required,
|
|
@@ -21813,9 +21778,9 @@ function PropRow({
|
|
|
21813
21778
|
activeField
|
|
21814
21779
|
}
|
|
21815
21780
|
),
|
|
21816
|
-
/* @__PURE__ */
|
|
21781
|
+
/* @__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 }) })
|
|
21817
21782
|
] }),
|
|
21818
|
-
prop.type === "token" && /* @__PURE__ */
|
|
21783
|
+
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" }) }),
|
|
21819
21784
|
prop.type === "enum" && /* @__PURE__ */ jsxs22(Box21, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
21820
21785
|
/* @__PURE__ */ jsxs22(Text23, { color: activeField === "values" ? PALETTE.warning : PALETTE.muted, bold: activeField === "values", children: [
|
|
21821
21786
|
activeField === "values" ? "\u203A " : " ",
|
|
@@ -21827,7 +21792,7 @@ function PropRow({
|
|
|
21827
21792
|
"]"
|
|
21828
21793
|
] })
|
|
21829
21794
|
] }),
|
|
21830
|
-
/* @__PURE__ */
|
|
21795
|
+
/* @__PURE__ */ jsx27(
|
|
21831
21796
|
DefaultSubRow,
|
|
21832
21797
|
{
|
|
21833
21798
|
prop,
|
|
@@ -21842,7 +21807,7 @@ function PropRow({
|
|
|
21842
21807
|
activeField === "allowed" ? "\u203A " : " ",
|
|
21843
21808
|
"allowed:"
|
|
21844
21809
|
] }),
|
|
21845
|
-
editingField && activeField === "allowed" ? /* @__PURE__ */
|
|
21810
|
+
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(
|
|
21846
21811
|
Text23,
|
|
21847
21812
|
{
|
|
21848
21813
|
color: activeField !== "allowed" && prop.allowed.length === 0 ? PALETTE.muted : void 0,
|
|
@@ -21851,17 +21816,17 @@ function PropRow({
|
|
|
21851
21816
|
}
|
|
21852
21817
|
)
|
|
21853
21818
|
] }),
|
|
21854
|
-
selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */
|
|
21819
|
+
selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx27(Box21, { paddingLeft: 2, children: /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: (() => {
|
|
21855
21820
|
const max = Math.max(8, width - 8);
|
|
21856
21821
|
const text = `~ ${rationale}`;
|
|
21857
21822
|
return text.length > max ? text.slice(0, max - 1) + "\u2026" : text;
|
|
21858
21823
|
})() }) }, rowKey ? `rationale-${rowKey}` : void 0),
|
|
21859
21824
|
selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs22(Box21, { paddingLeft: 2, flexDirection: "column", children: [
|
|
21860
21825
|
/* @__PURE__ */ jsxs22(Box21, { children: [
|
|
21861
|
-
/* @__PURE__ */
|
|
21862
|
-
activeField === "values" && /* @__PURE__ */
|
|
21826
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "values:" }),
|
|
21827
|
+
activeField === "values" && /* @__PURE__ */ jsx27(Text23, { children: " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
|
|
21863
21828
|
] }),
|
|
21864
|
-
/* @__PURE__ */
|
|
21829
|
+
/* @__PURE__ */ jsx27(
|
|
21865
21830
|
EditableValueList,
|
|
21866
21831
|
{
|
|
21867
21832
|
values: prop.values,
|
|
@@ -21892,8 +21857,8 @@ function SlotRow({
|
|
|
21892
21857
|
pickerCursor
|
|
21893
21858
|
}) {
|
|
21894
21859
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
21895
|
-
/* @__PURE__ */
|
|
21896
|
-
/* @__PURE__ */
|
|
21860
|
+
/* @__PURE__ */ jsx27(Box21, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx27(RowLabel, { name: slot.name, selected, trailing: false }) }),
|
|
21861
|
+
/* @__PURE__ */ jsx27(
|
|
21897
21862
|
DescriptionField,
|
|
21898
21863
|
{
|
|
21899
21864
|
value: slot.description,
|
|
@@ -21906,7 +21871,7 @@ function SlotRow({
|
|
|
21906
21871
|
paddingLeft: 0
|
|
21907
21872
|
}
|
|
21908
21873
|
),
|
|
21909
|
-
/* @__PURE__ */
|
|
21874
|
+
/* @__PURE__ */ jsx27(Box21, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx27(
|
|
21910
21875
|
RequiredField,
|
|
21911
21876
|
{
|
|
21912
21877
|
value: slot.required,
|
|
@@ -21927,7 +21892,7 @@ function SlotRow({
|
|
|
21927
21892
|
]
|
|
21928
21893
|
}
|
|
21929
21894
|
),
|
|
21930
|
-
slot.allowedComponents.length === 0 ? /* @__PURE__ */
|
|
21895
|
+
slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "(any)" }) : /* @__PURE__ */ jsx27(Text23, { wrap: "wrap", children: slot.allowedComponents.join(", ") })
|
|
21931
21896
|
] }),
|
|
21932
21897
|
selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", children: [
|
|
21933
21898
|
/* @__PURE__ */ jsxs22(Box21, { children: [
|
|
@@ -21942,9 +21907,9 @@ function SlotRow({
|
|
|
21942
21907
|
]
|
|
21943
21908
|
}
|
|
21944
21909
|
),
|
|
21945
|
-
editingField && activeField === "allowedComponents" && /* @__PURE__ */
|
|
21910
|
+
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" })
|
|
21946
21911
|
] }),
|
|
21947
|
-
/* @__PURE__ */
|
|
21912
|
+
/* @__PURE__ */ jsx27(
|
|
21948
21913
|
EditableValueList,
|
|
21949
21914
|
{
|
|
21950
21915
|
values: slot.allowedComponents,
|
|
@@ -21958,21 +21923,21 @@ function SlotRow({
|
|
|
21958
21923
|
showAddInput: editingField && activeField === "allowedComponents"
|
|
21959
21924
|
}
|
|
21960
21925
|
),
|
|
21961
|
-
editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */
|
|
21926
|
+
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)" }) : (() => {
|
|
21962
21927
|
const filtered = valueText.length === 0 ? pickerCandidates : pickerCandidates.filter((n) => n.toLowerCase().includes(valueText.toLowerCase()));
|
|
21963
21928
|
if (filtered.length === 0) {
|
|
21964
|
-
return /* @__PURE__ */
|
|
21929
|
+
return /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "(no candidates match \u2014 Enter to add as free text)" });
|
|
21965
21930
|
}
|
|
21966
21931
|
const cursor = pickerCursor % filtered.length;
|
|
21967
21932
|
const MAX_VISIBLE = 5;
|
|
21968
21933
|
const start = Math.max(0, Math.min(filtered.length - MAX_VISIBLE, cursor - 2));
|
|
21969
21934
|
const slice = filtered.slice(start, start + MAX_VISIBLE);
|
|
21970
21935
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", children: [
|
|
21971
|
-
/* @__PURE__ */
|
|
21936
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
|
|
21972
21937
|
slice.map((name, i) => {
|
|
21973
21938
|
const absIdx = start + i;
|
|
21974
21939
|
const isCursor = absIdx === cursor;
|
|
21975
|
-
return /* @__PURE__ */
|
|
21940
|
+
return /* @__PURE__ */ jsx27(Text23, { color: isCursor ? PALETTE.accent : PALETTE.muted, children: isCursor ? ` ${figures5.pointer} ${name}` : ` ${name}` }, name);
|
|
21976
21941
|
})
|
|
21977
21942
|
] });
|
|
21978
21943
|
})() })
|
|
@@ -22098,9 +22063,9 @@ function FieldEditor({
|
|
|
22098
22063
|
const [editorState, setEditorState] = useState15(initialState);
|
|
22099
22064
|
const [parseErr] = useState15(parseError);
|
|
22100
22065
|
const [listScrollStart, setListScrollStart] = useState15(0);
|
|
22101
|
-
const initialFocusScrollApplied =
|
|
22066
|
+
const initialFocusScrollApplied = React8.useRef(false);
|
|
22102
22067
|
const [rowHeights, setRowHeights] = useState15({});
|
|
22103
|
-
const rowMeasureRefs =
|
|
22068
|
+
const rowMeasureRefs = React8.useRef(/* @__PURE__ */ new Map());
|
|
22104
22069
|
const initialFocus = (() => {
|
|
22105
22070
|
if (initialFocusTarget?.kind === "description") {
|
|
22106
22071
|
return {
|
|
@@ -22187,23 +22152,23 @@ function FieldEditor({
|
|
|
22187
22152
|
const [showHelp, setShowHelp] = useState15(false);
|
|
22188
22153
|
const props = editorState.props;
|
|
22189
22154
|
const slots = editorState.slots;
|
|
22190
|
-
const contentPropIndexes =
|
|
22155
|
+
const contentPropIndexes = React8.useMemo(
|
|
22191
22156
|
() => props.flatMap((prop, index) => prop.category === "content" ? [index] : []),
|
|
22192
22157
|
[props]
|
|
22193
22158
|
);
|
|
22194
|
-
const designPropIndexes =
|
|
22159
|
+
const designPropIndexes = React8.useMemo(
|
|
22195
22160
|
() => props.flatMap((prop, index) => prop.category === "design" ? [index] : []),
|
|
22196
22161
|
[props]
|
|
22197
22162
|
);
|
|
22198
|
-
const hiddenPropIndexes =
|
|
22163
|
+
const hiddenPropIndexes = React8.useMemo(
|
|
22199
22164
|
() => showHiddenProps ? props.flatMap((prop, index) => prop.category === "state" || prop.category === "unattached" ? [index] : []) : [],
|
|
22200
22165
|
[props, showHiddenProps]
|
|
22201
22166
|
);
|
|
22202
|
-
const visiblePropIndexes =
|
|
22167
|
+
const visiblePropIndexes = React8.useMemo(
|
|
22203
22168
|
() => [...contentPropIndexes, ...designPropIndexes, ...hiddenPropIndexes],
|
|
22204
22169
|
[contentPropIndexes, designPropIndexes, hiddenPropIndexes]
|
|
22205
22170
|
);
|
|
22206
|
-
const propGroups =
|
|
22171
|
+
const propGroups = React8.useMemo(
|
|
22207
22172
|
() => [
|
|
22208
22173
|
{
|
|
22209
22174
|
kind: "content",
|
|
@@ -22223,7 +22188,7 @@ function FieldEditor({
|
|
|
22223
22188
|
],
|
|
22224
22189
|
[contentPropIndexes, designPropIndexes, hiddenPropIndexes]
|
|
22225
22190
|
);
|
|
22226
|
-
const selectableRows =
|
|
22191
|
+
const selectableRows = React8.useMemo(
|
|
22227
22192
|
() => [
|
|
22228
22193
|
...contentPropIndexes.map((idx) => ({ kind: "prop", idx })),
|
|
22229
22194
|
...designPropIndexes.map((idx) => ({ kind: "prop", idx })),
|
|
@@ -22233,7 +22198,7 @@ function FieldEditor({
|
|
|
22233
22198
|
[contentPropIndexes, designPropIndexes, hiddenPropIndexes, slots]
|
|
22234
22199
|
);
|
|
22235
22200
|
const visiblePropPosition = visiblePropIndexes.indexOf(propIdx);
|
|
22236
|
-
const selectedSelectableIndex =
|
|
22201
|
+
const selectedSelectableIndex = React8.useMemo(
|
|
22237
22202
|
() => selectableRows.findIndex(
|
|
22238
22203
|
(row) => inSlots ? row.kind === "slot" && row.idx === slotIdx : row.kind === "prop" && row.idx === propIdx
|
|
22239
22204
|
),
|
|
@@ -22252,12 +22217,12 @@ function FieldEditor({
|
|
|
22252
22217
|
}
|
|
22253
22218
|
};
|
|
22254
22219
|
const textEntryActive = focusLevel === "field" && editingField && activeField === "description" || focusLevel === "field" && editingField && activeField === "default" && (editorState.props[propIdx]?.type === "string" || editorState.props[propIdx]?.type === "token") || editingValue != null;
|
|
22255
|
-
|
|
22220
|
+
React8.useEffect(() => {
|
|
22256
22221
|
onTextEntryActiveChange?.(textEntryActive);
|
|
22257
22222
|
}, [textEntryActive, onTextEntryActiveChange]);
|
|
22258
22223
|
const currentProp = props[propIdx] ?? null;
|
|
22259
22224
|
const currentSlot = slots[slotIdx] ?? null;
|
|
22260
|
-
|
|
22225
|
+
React8.useEffect(() => {
|
|
22261
22226
|
if (showHiddenProps || inSlots || inComponentDesc || visiblePropPosition >= 0) return;
|
|
22262
22227
|
if (visiblePropIndexes.length > 0) {
|
|
22263
22228
|
setPropIdx(visiblePropIndexes[0]);
|
|
@@ -22276,22 +22241,22 @@ function FieldEditor({
|
|
|
22276
22241
|
setEditorState(next);
|
|
22277
22242
|
onChange(serializeState(next, value));
|
|
22278
22243
|
};
|
|
22279
|
-
const canonicalize =
|
|
22244
|
+
const canonicalize = React8.useCallback((json) => {
|
|
22280
22245
|
try {
|
|
22281
22246
|
return JSON.stringify(JSON.parse(json));
|
|
22282
22247
|
} catch {
|
|
22283
22248
|
return `__unparseable__:${json}`;
|
|
22284
22249
|
}
|
|
22285
22250
|
}, []);
|
|
22286
|
-
const initialStateRef =
|
|
22251
|
+
const initialStateRef = React8.useRef(initialState);
|
|
22287
22252
|
const baselineCanonical = canonicalize(serializeState(initialStateRef.current, value));
|
|
22288
22253
|
const currentCanonical = canonicalize(serializeState(editorState, value));
|
|
22289
22254
|
const isDirty = currentCanonical !== baselineCanonical;
|
|
22290
|
-
|
|
22255
|
+
React8.useEffect(() => {
|
|
22291
22256
|
onDirtyChange?.(isDirty);
|
|
22292
22257
|
}, [isDirty, onDirtyChange]);
|
|
22293
|
-
const lastDiscardTriggerRef =
|
|
22294
|
-
|
|
22258
|
+
const lastDiscardTriggerRef = React8.useRef(discardTrigger);
|
|
22259
|
+
React8.useEffect(() => {
|
|
22295
22260
|
if (discardTrigger === void 0) return;
|
|
22296
22261
|
if (discardTrigger === lastDiscardTriggerRef.current) return;
|
|
22297
22262
|
lastDiscardTriggerRef.current = discardTrigger;
|
|
@@ -22802,17 +22767,17 @@ function FieldEditor({
|
|
|
22802
22767
|
const innerWidth = Math.max(1, width - 2);
|
|
22803
22768
|
if (parseErr) {
|
|
22804
22769
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
|
|
22805
|
-
/* @__PURE__ */
|
|
22806
|
-
/* @__PURE__ */
|
|
22807
|
-
/* @__PURE__ */
|
|
22770
|
+
/* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
|
|
22771
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.error, children: parseErr }),
|
|
22772
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "Cannot display structured editor. Fix the JSON first." })
|
|
22808
22773
|
] });
|
|
22809
22774
|
}
|
|
22810
22775
|
if (props.length === 0 && slots.length === 0) {
|
|
22811
22776
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
|
|
22812
|
-
/* @__PURE__ */
|
|
22813
|
-
/* @__PURE__ */
|
|
22814
|
-
/* @__PURE__ */
|
|
22815
|
-
/* @__PURE__ */
|
|
22777
|
+
/* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
|
|
22778
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
|
|
22779
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "You can add fields manually below or reject this component." }),
|
|
22780
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "Enter to save \xB7 Esc to discard" })
|
|
22816
22781
|
] });
|
|
22817
22782
|
}
|
|
22818
22783
|
const hasEmptyProperties = props.length === 0 && slots.length === 0;
|
|
@@ -22941,12 +22906,12 @@ function FieldEditor({
|
|
|
22941
22906
|
const renderRow = (row, index) => {
|
|
22942
22907
|
const key = rowKey(row, index);
|
|
22943
22908
|
if (row.kind === "header") {
|
|
22944
|
-
return /* @__PURE__ */
|
|
22909
|
+
return /* @__PURE__ */ jsx27(Box21, { flexDirection: "column", paddingTop: 1, children: /* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE.success, children: row.label }) }, key);
|
|
22945
22910
|
}
|
|
22946
22911
|
if (row.kind === "component-description") {
|
|
22947
22912
|
const isSelected2 = inComponentDesc && active;
|
|
22948
22913
|
const isEditing = isSelected2 && focusLevel === "field" && editingField && activeField === "description";
|
|
22949
|
-
return /* @__PURE__ */
|
|
22914
|
+
return /* @__PURE__ */ jsx27(
|
|
22950
22915
|
DescriptionField,
|
|
22951
22916
|
{
|
|
22952
22917
|
value: editorState.componentDescription,
|
|
@@ -22977,7 +22942,7 @@ function FieldEditor({
|
|
|
22977
22942
|
valueText,
|
|
22978
22943
|
innerWidth
|
|
22979
22944
|
);
|
|
22980
|
-
return /* @__PURE__ */
|
|
22945
|
+
return /* @__PURE__ */ jsx27(
|
|
22981
22946
|
PropRow,
|
|
22982
22947
|
{
|
|
22983
22948
|
prop: p,
|
|
@@ -23004,7 +22969,7 @@ function FieldEditor({
|
|
|
23004
22969
|
valueText,
|
|
23005
22970
|
innerWidth
|
|
23006
22971
|
);
|
|
23007
|
-
return /* @__PURE__ */
|
|
22972
|
+
return /* @__PURE__ */ jsx27(
|
|
23008
22973
|
SlotRow,
|
|
23009
22974
|
{
|
|
23010
22975
|
slot: s,
|
|
@@ -23025,9 +22990,9 @@ function FieldEditor({
|
|
|
23025
22990
|
borderStyle: "single",
|
|
23026
22991
|
borderColor: hasEmptyProperties ? PALETTE.warning : active ? PALETTE.accent : PALETTE.border,
|
|
23027
22992
|
children: [
|
|
23028
|
-
hasEmptyProperties && /* @__PURE__ */
|
|
22993
|
+
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." }),
|
|
23029
22994
|
header,
|
|
23030
|
-
/* @__PURE__ */
|
|
22995
|
+
/* @__PURE__ */ jsx27(Box21, { flexDirection: "column", width: innerWidth, flexShrink: 0, children: focusLevel === "field" && !inComponentDesc && currentProp ? /* @__PURE__ */ jsx27(
|
|
23031
22996
|
PropRow,
|
|
23032
22997
|
{
|
|
23033
22998
|
prop: currentProp,
|
|
@@ -23043,7 +23008,7 @@ function FieldEditor({
|
|
|
23043
23008
|
rationale: metadata?.props?.[currentProp.name]?.rationale ?? null,
|
|
23044
23009
|
showRationale: showInlineRationales
|
|
23045
23010
|
}
|
|
23046
|
-
) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */
|
|
23011
|
+
) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */ jsx27(
|
|
23047
23012
|
SlotRow,
|
|
23048
23013
|
{
|
|
23049
23014
|
slot: currentSlot,
|
|
@@ -23062,7 +23027,7 @@ function FieldEditor({
|
|
|
23062
23027
|
) : visibleRowSlice.map((row, index) => {
|
|
23063
23028
|
const absoluteIndex = scrollStart + index;
|
|
23064
23029
|
const key = rowKey(row, absoluteIndex);
|
|
23065
|
-
return /* @__PURE__ */
|
|
23030
|
+
return /* @__PURE__ */ jsx27(
|
|
23066
23031
|
Box21,
|
|
23067
23032
|
{
|
|
23068
23033
|
ref: (node) => {
|
|
@@ -23076,7 +23041,7 @@ function FieldEditor({
|
|
|
23076
23041
|
`visible-${key}`
|
|
23077
23042
|
);
|
|
23078
23043
|
}) }),
|
|
23079
|
-
categoryBelow && /* @__PURE__ */
|
|
23044
|
+
categoryBelow && /* @__PURE__ */ jsx27(Text23, { color: PALETTE.success, bold: true, children: `(${categoryBelow} below)` }),
|
|
23080
23045
|
sourceOpen && !onToggleSourceExternal && (() => {
|
|
23081
23046
|
const propMeta = !inSlots && !inComponentDesc && currentProp ? metadata?.props?.[currentProp.name] : void 0;
|
|
23082
23047
|
const start = propMeta?.sourceStartLine ?? null;
|
|
@@ -23086,48 +23051,48 @@ function FieldEditor({
|
|
|
23086
23051
|
const headerPath = path5 ?? "<unknown source path>";
|
|
23087
23052
|
if (!start || !end2 || !src) {
|
|
23088
23053
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
|
|
23089
|
-
/* @__PURE__ */
|
|
23090
|
-
/* @__PURE__ */
|
|
23091
|
-
/* @__PURE__ */
|
|
23054
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, bold: true, children: `source: ${headerPath}` }),
|
|
23055
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "(no source location captured for this prop)" }),
|
|
23056
|
+
/* @__PURE__ */ jsx27(Text23, { children: "[s] close" })
|
|
23092
23057
|
] });
|
|
23093
23058
|
}
|
|
23094
23059
|
const lines = src.split("\n").slice(Math.max(0, start - 1), end2);
|
|
23095
23060
|
return /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
|
|
23096
|
-
/* @__PURE__ */
|
|
23097
|
-
lines.map((ln, i) => /* @__PURE__ */
|
|
23098
|
-
/* @__PURE__ */
|
|
23061
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, bold: true, children: `${headerPath}: lines ${start}\u2013${end2}` }),
|
|
23062
|
+
lines.map((ln, i) => /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: ln }, `source-line-${i}`)),
|
|
23063
|
+
/* @__PURE__ */ jsx27(Text23, { children: "[s] close \xB7 [Esc] close" })
|
|
23099
23064
|
] });
|
|
23100
23065
|
})(),
|
|
23101
23066
|
showHelp && /* @__PURE__ */ jsxs22(Box21, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.accent, paddingX: 1, children: [
|
|
23102
|
-
/* @__PURE__ */
|
|
23103
|
-
/* @__PURE__ */
|
|
23104
|
-
/* @__PURE__ */
|
|
23105
|
-
/* @__PURE__ */
|
|
23106
|
-
/* @__PURE__ */
|
|
23107
|
-
/* @__PURE__ */
|
|
23108
|
-
/* @__PURE__ */
|
|
23109
|
-
/* @__PURE__ */
|
|
23110
|
-
/* @__PURE__ */
|
|
23111
|
-
/* @__PURE__ */
|
|
23112
|
-
/* @__PURE__ */
|
|
23113
|
-
/* @__PURE__ */
|
|
23114
|
-
/* @__PURE__ */
|
|
23115
|
-
/* @__PURE__ */
|
|
23116
|
-
/* @__PURE__ */
|
|
23117
|
-
/* @__PURE__ */
|
|
23118
|
-
/* @__PURE__ */
|
|
23119
|
-
/* @__PURE__ */
|
|
23120
|
-
/* @__PURE__ */
|
|
23121
|
-
/* @__PURE__ */
|
|
23122
|
-
/* @__PURE__ */
|
|
23123
|
-
/* @__PURE__ */
|
|
23124
|
-
/* @__PURE__ */
|
|
23125
|
-
/* @__PURE__ */
|
|
23126
|
-
/* @__PURE__ */
|
|
23127
|
-
/* @__PURE__ */
|
|
23067
|
+
/* @__PURE__ */ jsx27(Text23, { bold: true, color: PALETTE.accent, children: "Keybindings" }),
|
|
23068
|
+
/* @__PURE__ */ jsx27(Text23, { children: " " }),
|
|
23069
|
+
/* @__PURE__ */ jsx27(Text23, { bold: true, children: "Row navigation" }),
|
|
23070
|
+
/* @__PURE__ */ jsx27(Text23, { children: " \u2191/\u2193 move between rows" }),
|
|
23071
|
+
/* @__PURE__ */ jsx27(Text23, { children: " Enter edit fields on the current row" }),
|
|
23072
|
+
/* @__PURE__ */ jsx27(Text23, { children: " Esc exit the panel" }),
|
|
23073
|
+
/* @__PURE__ */ jsx27(Text23, { children: " " }),
|
|
23074
|
+
/* @__PURE__ */ jsx27(Text23, { bold: true, children: "Field editing" }),
|
|
23075
|
+
/* @__PURE__ */ jsx27(Text23, { children: " \u2191/\u2193/\u2190\u2192 cycle through fields" }),
|
|
23076
|
+
/* @__PURE__ */ jsx27(Text23, { children: " \u2190/\u2192 cycle picker values \xB7 move cursor in text inputs" }),
|
|
23077
|
+
/* @__PURE__ */ jsx27(Text23, { children: " Space/Enter toggle required" }),
|
|
23078
|
+
/* @__PURE__ */ jsx27(Text23, { children: " Type edit description / string default" }),
|
|
23079
|
+
/* @__PURE__ */ jsx27(Text23, { children: " Esc exit field-edit back to the row" }),
|
|
23080
|
+
/* @__PURE__ */ jsx27(Text23, { children: " " }),
|
|
23081
|
+
/* @__PURE__ */ jsx27(Text23, { bold: true, children: "Values / allowedComponents" }),
|
|
23082
|
+
/* @__PURE__ */ jsx27(Text23, { children: " a / e / r add \xB7 edit \xB7 remove" }),
|
|
23083
|
+
/* @__PURE__ */ jsx27(Text23, { children: " \u2191\u2193 navigate the list" }),
|
|
23084
|
+
/* @__PURE__ */ jsx27(Text23, { children: " K / J reorder up \xB7 down" }),
|
|
23085
|
+
/* @__PURE__ */ jsx27(Text23, { children: " " }),
|
|
23086
|
+
/* @__PURE__ */ jsx27(Text23, { bold: true, children: "Panels" }),
|
|
23087
|
+
/* @__PURE__ */ jsx27(Text23, { children: " s toggle source-view for the current prop" }),
|
|
23088
|
+
/* @__PURE__ */ jsx27(Text23, { children: " " + propRationaleKey.padEnd(16) + " toggle prop rationale panel" }),
|
|
23089
|
+
/* @__PURE__ */ jsx27(Text23, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
|
|
23090
|
+
/* @__PURE__ */ jsx27(Text23, { children: " ? toggle this overlay" }),
|
|
23091
|
+
/* @__PURE__ */ jsx27(Text23, { children: " " }),
|
|
23092
|
+
/* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: "press ? or Esc to close" })
|
|
23128
23093
|
] }),
|
|
23129
|
-
validationError && /* @__PURE__ */
|
|
23130
|
-
/* @__PURE__ */
|
|
23094
|
+
validationError && /* @__PURE__ */ jsx27(Text23, { color: PALETTE.error, children: "\u2717 " + validationError }),
|
|
23095
|
+
/* @__PURE__ */ jsx27(Box21, { paddingTop: 1, children: /* @__PURE__ */ jsx27(Text23, { color: PALETTE.muted, children: modeLabel }) })
|
|
23131
23096
|
]
|
|
23132
23097
|
}
|
|
23133
23098
|
);
|
|
@@ -23173,26 +23138,26 @@ function wrapText(text, innerWidth) {
|
|
|
23173
23138
|
|
|
23174
23139
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationaleLine.tsx
|
|
23175
23140
|
import { Box as Box22, Text as Text24 } from "ink";
|
|
23176
|
-
import { jsx as
|
|
23141
|
+
import { jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
23177
23142
|
function RationaleLine({ line, active }) {
|
|
23178
23143
|
if (line.kind === "blank") {
|
|
23179
|
-
return /* @__PURE__ */
|
|
23144
|
+
return /* @__PURE__ */ jsx28(Box22, { children: /* @__PURE__ */ jsx28(Text24, { children: " " }) });
|
|
23180
23145
|
}
|
|
23181
23146
|
if (line.kind === "heading") {
|
|
23182
|
-
return /* @__PURE__ */
|
|
23147
|
+
return /* @__PURE__ */ jsx28(Box22, { children: /* @__PURE__ */ jsx28(Text24, { bold: true, color: active ? PALETTE.accent : PALETTE.muted, children: line.text }) });
|
|
23183
23148
|
}
|
|
23184
23149
|
if (line.kind === "label") {
|
|
23185
23150
|
return /* @__PURE__ */ jsxs23(Box22, { children: [
|
|
23186
|
-
line.prefix && /* @__PURE__ */
|
|
23187
|
-
/* @__PURE__ */
|
|
23188
|
-
line.suffix && /* @__PURE__ */
|
|
23151
|
+
line.prefix && /* @__PURE__ */ jsx28(Text24, { children: line.prefix }),
|
|
23152
|
+
/* @__PURE__ */ jsx28(Text24, { bold: true, color: active ? line.color : PALETTE.muted, children: line.text }),
|
|
23153
|
+
line.suffix && /* @__PURE__ */ jsx28(Text24, { color: PALETTE.muted, children: line.suffix })
|
|
23189
23154
|
] });
|
|
23190
23155
|
}
|
|
23191
|
-
return /* @__PURE__ */
|
|
23156
|
+
return /* @__PURE__ */ jsx28(Box22, { children: /* @__PURE__ */ jsx28(Text24, { color: !active || line.dim ? PALETTE.muted : void 0, children: line.text }) });
|
|
23192
23157
|
}
|
|
23193
23158
|
|
|
23194
23159
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ComponentRationalePanel.tsx
|
|
23195
|
-
import { jsx as
|
|
23160
|
+
import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
23196
23161
|
var PLACEHOLDER = "(no rationale captured)";
|
|
23197
23162
|
function renderComponentRationaleLines(data, innerWidth) {
|
|
23198
23163
|
const out = [];
|
|
@@ -23269,9 +23234,9 @@ function ComponentRationalePanel({
|
|
|
23269
23234
|
borderStyle: "single",
|
|
23270
23235
|
borderColor: active ? PALETTE.text : void 0,
|
|
23271
23236
|
children: [
|
|
23272
|
-
/* @__PURE__ */
|
|
23273
|
-
visible.map((line, i) => /* @__PURE__ */
|
|
23274
|
-
/* @__PURE__ */
|
|
23237
|
+
/* @__PURE__ */ jsx29(Box23, { children: /* @__PURE__ */ jsx29(Text25, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Component rationale: ${data.name}` }) }),
|
|
23238
|
+
visible.map((line, i) => /* @__PURE__ */ jsx29(RationaleLine, { line, active }, i)),
|
|
23239
|
+
/* @__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" }) })
|
|
23275
23240
|
]
|
|
23276
23241
|
}
|
|
23277
23242
|
);
|
|
@@ -23282,14 +23247,14 @@ import { Box as Box25 } from "ink";
|
|
|
23282
23247
|
|
|
23283
23248
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/HighlightedLine.tsx
|
|
23284
23249
|
import { Text as Text26 } from "ink";
|
|
23285
|
-
import { Fragment as Fragment6, jsx as
|
|
23250
|
+
import { Fragment as Fragment6, jsx as jsx30 } from "react/jsx-runtime";
|
|
23286
23251
|
function HighlightedLine({ parts }) {
|
|
23287
|
-
return /* @__PURE__ */
|
|
23252
|
+
return /* @__PURE__ */ jsx30(Fragment6, { children: parts.map((part, i) => /* @__PURE__ */ jsx30(Text26, { color: part.dim ? PALETTE.muted : part.color, children: part.text }, i)) });
|
|
23288
23253
|
}
|
|
23289
23254
|
|
|
23290
23255
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ScrollablePanel.tsx
|
|
23291
23256
|
import { Box as Box24, Text as Text27 } from "ink";
|
|
23292
|
-
import { Fragment as Fragment7, jsx as
|
|
23257
|
+
import { Fragment as Fragment7, jsx as jsx31, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
23293
23258
|
function ScrollablePanel({
|
|
23294
23259
|
title,
|
|
23295
23260
|
width,
|
|
@@ -23304,10 +23269,10 @@ function ScrollablePanel({
|
|
|
23304
23269
|
const overflowed = totalLines > height;
|
|
23305
23270
|
return /* @__PURE__ */ jsxs25(Box24, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
|
|
23306
23271
|
/* @__PURE__ */ jsxs25(Box24, { children: [
|
|
23307
|
-
/* @__PURE__ */
|
|
23272
|
+
/* @__PURE__ */ jsx31(Text27, { bold: true, color: active ? void 0 : PALETTE.muted, children: title }),
|
|
23308
23273
|
overflowed && /* @__PURE__ */ jsxs25(Fragment7, { children: [
|
|
23309
|
-
/* @__PURE__ */
|
|
23310
|
-
/* @__PURE__ */
|
|
23274
|
+
/* @__PURE__ */ jsx31(Box24, { flexGrow: 1 }),
|
|
23275
|
+
/* @__PURE__ */ jsx31(Text27, { color: active ? void 0 : PALETTE.muted, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
|
|
23311
23276
|
] })
|
|
23312
23277
|
] }),
|
|
23313
23278
|
children
|
|
@@ -23315,7 +23280,7 @@ function ScrollablePanel({
|
|
|
23315
23280
|
}
|
|
23316
23281
|
|
|
23317
23282
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/JsonPanel.tsx
|
|
23318
|
-
import { jsx as
|
|
23283
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
23319
23284
|
function highlightJson(line) {
|
|
23320
23285
|
const parts = [];
|
|
23321
23286
|
let remaining = line;
|
|
@@ -23353,7 +23318,7 @@ function highlightJson(line) {
|
|
|
23353
23318
|
parts.push({ text: remaining[0] });
|
|
23354
23319
|
remaining = remaining.slice(1);
|
|
23355
23320
|
}
|
|
23356
|
-
return /* @__PURE__ */
|
|
23321
|
+
return /* @__PURE__ */ jsx32(HighlightedLine, { parts });
|
|
23357
23322
|
}
|
|
23358
23323
|
function truncateLine(line, maxWidth) {
|
|
23359
23324
|
if (line.length <= maxWidth) return line;
|
|
@@ -23366,7 +23331,7 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
|
|
|
23366
23331
|
const totalLines = allLines.length;
|
|
23367
23332
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
23368
23333
|
const visibleEnd = Math.min(totalLines, scrollOffset + height);
|
|
23369
|
-
return /* @__PURE__ */
|
|
23334
|
+
return /* @__PURE__ */ jsx32(
|
|
23370
23335
|
ScrollablePanel,
|
|
23371
23336
|
{
|
|
23372
23337
|
title: label,
|
|
@@ -23379,14 +23344,14 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
|
|
|
23379
23344
|
borderColor: active ? "white" : void 0,
|
|
23380
23345
|
children: visibleLines.map((line, i) => {
|
|
23381
23346
|
const truncated = truncateLine(line, innerWidth);
|
|
23382
|
-
return /* @__PURE__ */
|
|
23347
|
+
return /* @__PURE__ */ jsx32(Box25, { children: highlightJson(truncated) }, i);
|
|
23383
23348
|
})
|
|
23384
23349
|
}
|
|
23385
23350
|
);
|
|
23386
23351
|
}
|
|
23387
23352
|
|
|
23388
23353
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationalePanel.tsx
|
|
23389
|
-
import { jsx as
|
|
23354
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
23390
23355
|
function renderRationaleLines(rows, innerWidth) {
|
|
23391
23356
|
const out = [];
|
|
23392
23357
|
rows.forEach((row, idx) => {
|
|
@@ -23419,7 +23384,7 @@ function RationalePanel({
|
|
|
23419
23384
|
const visible = allLines.slice(scrollOffset, scrollOffset + height);
|
|
23420
23385
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
23421
23386
|
const visibleEnd = Math.min(totalLines, scrollOffset + height);
|
|
23422
|
-
return /* @__PURE__ */
|
|
23387
|
+
return /* @__PURE__ */ jsx33(
|
|
23423
23388
|
ScrollablePanel,
|
|
23424
23389
|
{
|
|
23425
23390
|
title: `RATIONALE \u2014 ${componentName}`,
|
|
@@ -23430,7 +23395,7 @@ function RationalePanel({
|
|
|
23430
23395
|
visibleStart,
|
|
23431
23396
|
visibleEnd,
|
|
23432
23397
|
borderColor: active ? PALETTE.text : void 0,
|
|
23433
|
-
children: visible.map((line, i) => /* @__PURE__ */
|
|
23398
|
+
children: visible.map((line, i) => /* @__PURE__ */ jsx33(RationaleLine, { line, active }, i))
|
|
23434
23399
|
}
|
|
23435
23400
|
);
|
|
23436
23401
|
}
|
|
@@ -23438,7 +23403,7 @@ function RationalePanel({
|
|
|
23438
23403
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/TokenReviewPanel.tsx
|
|
23439
23404
|
import figures6 from "figures";
|
|
23440
23405
|
import { Box as Box26, Text as Text28 } from "ink";
|
|
23441
|
-
import { jsx as
|
|
23406
|
+
import { jsx as jsx34, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
23442
23407
|
function TokenReviewPanel({
|
|
23443
23408
|
componentName,
|
|
23444
23409
|
suggestions,
|
|
@@ -23466,15 +23431,15 @@ function TokenReviewPanel({
|
|
|
23466
23431
|
borderStyle: "single",
|
|
23467
23432
|
borderColor: active ? PALETTE.text : void 0,
|
|
23468
23433
|
children: [
|
|
23469
|
-
/* @__PURE__ */
|
|
23470
|
-
/* @__PURE__ */
|
|
23471
|
-
/* @__PURE__ */
|
|
23472
|
-
current.paths.length === 0 && /* @__PURE__ */
|
|
23434
|
+
/* @__PURE__ */ jsx34(Text28, { bold: true, color: active ? void 0 : PALETTE.muted, wrap: "truncate", children: `TOKEN REVIEW \u2014 ${componentName} \xB7 ${current.propName} (edit allowed)` }),
|
|
23435
|
+
/* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, wrap: "truncate", children: `select which tokens are allowed (${rangeLabel})` }),
|
|
23436
|
+
/* @__PURE__ */ jsx34(Text28, { children: " " }),
|
|
23437
|
+
current.paths.length === 0 && /* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, children: "(no compatible tokens found for this token kind)" }),
|
|
23473
23438
|
visiblePaths.map((path5, i) => {
|
|
23474
23439
|
const pathIndex = scrollStart + i;
|
|
23475
23440
|
const checked = editSelection.has(path5);
|
|
23476
23441
|
const focused = pathIndex === editCursor;
|
|
23477
|
-
return /* @__PURE__ */
|
|
23442
|
+
return /* @__PURE__ */ jsx34(Box26, { children: /* @__PURE__ */ jsx34(
|
|
23478
23443
|
Text28,
|
|
23479
23444
|
{
|
|
23480
23445
|
color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted,
|
|
@@ -23484,9 +23449,9 @@ function TokenReviewPanel({
|
|
|
23484
23449
|
}
|
|
23485
23450
|
) }, path5);
|
|
23486
23451
|
}),
|
|
23487
|
-
/* @__PURE__ */
|
|
23488
|
-
/* @__PURE__ */
|
|
23489
|
-
/* @__PURE__ */
|
|
23452
|
+
/* @__PURE__ */ jsx34(Text28, { children: " " }),
|
|
23453
|
+
/* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
|
|
23454
|
+
/* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
|
|
23490
23455
|
]
|
|
23491
23456
|
}
|
|
23492
23457
|
);
|
|
@@ -23500,25 +23465,25 @@ function TokenReviewPanel({
|
|
|
23500
23465
|
borderStyle: "single",
|
|
23501
23466
|
borderColor: active ? PALETTE.text : void 0,
|
|
23502
23467
|
children: [
|
|
23503
|
-
/* @__PURE__ */
|
|
23504
|
-
suggestions.length === 0 && /* @__PURE__ */
|
|
23468
|
+
/* @__PURE__ */ jsx34(Text28, { bold: true, color: active ? void 0 : PALETTE.muted, children: `TOKEN REVIEW \u2014 ${componentName}` }),
|
|
23469
|
+
suggestions.length === 0 && /* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, children: "(no token suggestions for this component)" }),
|
|
23505
23470
|
suggestions.map((s, i) => {
|
|
23506
23471
|
const focused = i === selectedRow;
|
|
23507
23472
|
return /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", children: [
|
|
23508
|
-
/* @__PURE__ */
|
|
23509
|
-
/* @__PURE__ */
|
|
23510
|
-
/* @__PURE__ */
|
|
23473
|
+
/* @__PURE__ */ jsx34(Box26, { children: /* @__PURE__ */ jsx34(Text28, { color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted, bold: focused, children: `${focused ? figures6.pointer : " "} ${s.propName}` }) }),
|
|
23474
|
+
/* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, children: ` suggested: ${s.suggested.join(", ")}` }),
|
|
23475
|
+
/* @__PURE__ */ jsx34(Text28, { color: PALETTE.muted, children: ` allowed: ${s.allowed.join(", ")}` })
|
|
23511
23476
|
] }, s.propName);
|
|
23512
23477
|
}),
|
|
23513
|
-
/* @__PURE__ */
|
|
23514
|
-
/* @__PURE__ */
|
|
23478
|
+
/* @__PURE__ */ jsx34(Text28, { children: " " }),
|
|
23479
|
+
/* @__PURE__ */ jsx34(Text28, { children: "[\u2191/\u2193] move [Enter] edit allowed [Esc] close" })
|
|
23515
23480
|
]
|
|
23516
23481
|
}
|
|
23517
23482
|
);
|
|
23518
23483
|
}
|
|
23519
23484
|
|
|
23520
23485
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx
|
|
23521
|
-
import { Fragment as Fragment8, jsx as
|
|
23486
|
+
import { Fragment as Fragment8, jsx as jsx35, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
23522
23487
|
function ReviewDetailsPanel({
|
|
23523
23488
|
selectedKey,
|
|
23524
23489
|
panelOpen,
|
|
@@ -23553,7 +23518,7 @@ function ReviewDetailsPanel({
|
|
|
23553
23518
|
rationale: s.rationale ?? ""
|
|
23554
23519
|
}))
|
|
23555
23520
|
];
|
|
23556
|
-
return /* @__PURE__ */
|
|
23521
|
+
return /* @__PURE__ */ jsx35(
|
|
23557
23522
|
RationalePanel,
|
|
23558
23523
|
{
|
|
23559
23524
|
componentName: componentRationale?.name ?? selectedKey,
|
|
@@ -23566,7 +23531,7 @@ function ReviewDetailsPanel({
|
|
|
23566
23531
|
);
|
|
23567
23532
|
}
|
|
23568
23533
|
if (panelOpen === "component-rationale") {
|
|
23569
|
-
return /* @__PURE__ */
|
|
23534
|
+
return /* @__PURE__ */ jsx35(
|
|
23570
23535
|
ComponentRationalePanel,
|
|
23571
23536
|
{
|
|
23572
23537
|
data: componentRationale ?? {
|
|
@@ -23592,13 +23557,13 @@ function ReviewDetailsPanel({
|
|
|
23592
23557
|
const sourceLineCount = Math.max(1, height - 4);
|
|
23593
23558
|
const lines = source ? source.split("\n").slice(panelScrollOffset, panelScrollOffset + sourceLineCount) : [];
|
|
23594
23559
|
return /* @__PURE__ */ jsxs27(FixedPanel, { width, height, borderStyle: "single", borderColor: sourceBorderColor, paddingLeft: 1, children: [
|
|
23595
|
-
/* @__PURE__ */
|
|
23596
|
-
source ? lines.map((line, index) => /* @__PURE__ */
|
|
23597
|
-
/* @__PURE__ */
|
|
23560
|
+
/* @__PURE__ */ jsx35(Text29, { color: PALETTE.muted, bold: true, wrap: "truncate-end", children: `source: ${headerPath}` }),
|
|
23561
|
+
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)" }),
|
|
23562
|
+
/* @__PURE__ */ jsx35(Text29, { color: PALETTE.muted, wrap: "truncate-end", children: "[s/Esc] close" })
|
|
23598
23563
|
] });
|
|
23599
23564
|
}
|
|
23600
23565
|
if (panelOpen === "token-review") {
|
|
23601
|
-
return /* @__PURE__ */
|
|
23566
|
+
return /* @__PURE__ */ jsx35(
|
|
23602
23567
|
TokenReviewPanel,
|
|
23603
23568
|
{
|
|
23604
23569
|
componentName: selectedKey,
|
|
@@ -23614,7 +23579,7 @@ function ReviewDetailsPanel({
|
|
|
23614
23579
|
);
|
|
23615
23580
|
}
|
|
23616
23581
|
if (showJson) {
|
|
23617
|
-
return /* @__PURE__ */
|
|
23582
|
+
return /* @__PURE__ */ jsx35(
|
|
23618
23583
|
JsonPanel,
|
|
23619
23584
|
{
|
|
23620
23585
|
label: "GENERATED DEFINITION (read-only)",
|
|
@@ -23626,11 +23591,11 @@ function ReviewDetailsPanel({
|
|
|
23626
23591
|
}
|
|
23627
23592
|
);
|
|
23628
23593
|
}
|
|
23629
|
-
return /* @__PURE__ */
|
|
23594
|
+
return /* @__PURE__ */ jsx35(Fragment8, { children: editor });
|
|
23630
23595
|
}
|
|
23631
23596
|
|
|
23632
23597
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDetailsEditor.tsx
|
|
23633
|
-
import { jsx as
|
|
23598
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
23634
23599
|
import { createElement } from "react";
|
|
23635
23600
|
function toFieldEditorMetadata(reviewMetadata) {
|
|
23636
23601
|
if (!reviewMetadata) return void 0;
|
|
@@ -23664,7 +23629,7 @@ function ReviewDetailsEditor({
|
|
|
23664
23629
|
jsonScrollOffset,
|
|
23665
23630
|
currentTokenSuggestions
|
|
23666
23631
|
} = reviewEditor;
|
|
23667
|
-
return /* @__PURE__ */
|
|
23632
|
+
return /* @__PURE__ */ jsx36(
|
|
23668
23633
|
ReviewDetailsPanel,
|
|
23669
23634
|
{
|
|
23670
23635
|
selectedKey,
|
|
@@ -23704,7 +23669,7 @@ function ReviewDetailsEditor({
|
|
|
23704
23669
|
}
|
|
23705
23670
|
|
|
23706
23671
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewComponentPanel.tsx
|
|
23707
|
-
import { Fragment as Fragment9, jsx as
|
|
23672
|
+
import { Fragment as Fragment9, jsx as jsx37, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
23708
23673
|
function buildReviewFieldEditor(reviewEditor, selectedJson, onExit, overrides = {}) {
|
|
23709
23674
|
return {
|
|
23710
23675
|
value: reviewEditor.draftValue || selectedJson,
|
|
@@ -23744,17 +23709,17 @@ function ReviewEmptyComponentsWarning({
|
|
|
23744
23709
|
hidden
|
|
23745
23710
|
}) {
|
|
23746
23711
|
if (hidden || count === 0) return null;
|
|
23747
|
-
return /* @__PURE__ */
|
|
23712
|
+
return /* @__PURE__ */ jsx37(Text30, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
|
|
23748
23713
|
}
|
|
23749
23714
|
function ReviewNoSelection() {
|
|
23750
|
-
return /* @__PURE__ */
|
|
23715
|
+
return /* @__PURE__ */ jsx37(Box27, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx37(Text30, { color: PALETTE.muted, children: "No component selected" }) });
|
|
23751
23716
|
}
|
|
23752
23717
|
function ReviewFinalizeError({
|
|
23753
23718
|
message,
|
|
23754
23719
|
hidden
|
|
23755
23720
|
}) {
|
|
23756
23721
|
if (hidden || !message) return null;
|
|
23757
|
-
return /* @__PURE__ */
|
|
23722
|
+
return /* @__PURE__ */ jsx37(Text30, { color: PALETTE.error, children: `\u26A0 ${message}` });
|
|
23758
23723
|
}
|
|
23759
23724
|
function ReviewPanelFooter({
|
|
23760
23725
|
reviewEditor,
|
|
@@ -23765,8 +23730,8 @@ function ReviewPanelFooter({
|
|
|
23765
23730
|
}) {
|
|
23766
23731
|
return /* @__PURE__ */ jsxs28(Fragment9, { children: [
|
|
23767
23732
|
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" : ""),
|
|
23768
|
-
livePreview.status === "running" && /* @__PURE__ */
|
|
23769
|
-
livePreview.disabled && /* @__PURE__ */
|
|
23733
|
+
livePreview.status === "running" && /* @__PURE__ */ jsx37(Text30, { children: ` ${livePreviewSpinner} live preview` }),
|
|
23734
|
+
livePreview.disabled && /* @__PURE__ */ jsx37(Text30, { children: " \xB7 live preview disabled" })
|
|
23770
23735
|
] });
|
|
23771
23736
|
}
|
|
23772
23737
|
function ReviewComponentTitle({
|
|
@@ -23776,8 +23741,8 @@ function ReviewComponentTitle({
|
|
|
23776
23741
|
sidebarFocused
|
|
23777
23742
|
}) {
|
|
23778
23743
|
return /* @__PURE__ */ jsxs28(Box27, { paddingLeft: 2, paddingBottom: 1, children: [
|
|
23779
|
-
/* @__PURE__ */
|
|
23780
|
-
/* @__PURE__ */
|
|
23744
|
+
/* @__PURE__ */ jsx37(Text30, { bold: true, wrap: "truncate-end", children: selectedKey }),
|
|
23745
|
+
/* @__PURE__ */ jsx37(Box27, { flexGrow: 1 }),
|
|
23781
23746
|
/* @__PURE__ */ jsxs28(Text30, { color: PALETTE.muted, wrap: "truncate-end", children: [
|
|
23782
23747
|
propCount,
|
|
23783
23748
|
" prop",
|
|
@@ -23809,8 +23774,8 @@ function ReviewComponentPanel({
|
|
|
23809
23774
|
const slotCount = selectedEntry.$slots ? Object.keys(selectedEntry.$slots).length : 0;
|
|
23810
23775
|
const contentHeight = Math.max(1, height - 2);
|
|
23811
23776
|
const contentWidth = Math.max(1, width - 1);
|
|
23812
|
-
return /* @__PURE__ */
|
|
23813
|
-
/* @__PURE__ */
|
|
23777
|
+
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: [
|
|
23778
|
+
/* @__PURE__ */ jsx37(Box27, { width: contentWidth, height: contentHeight, flexShrink: 0, overflowY: "hidden", children: /* @__PURE__ */ jsx37(
|
|
23814
23779
|
ReviewDetailsEditor,
|
|
23815
23780
|
{
|
|
23816
23781
|
selectedKey,
|
|
@@ -23823,7 +23788,7 @@ function ReviewComponentPanel({
|
|
|
23823
23788
|
jsonValue,
|
|
23824
23789
|
sidebarFocused,
|
|
23825
23790
|
fieldEditor,
|
|
23826
|
-
header: /* @__PURE__ */
|
|
23791
|
+
header: /* @__PURE__ */ jsx37(
|
|
23827
23792
|
ReviewComponentTitle,
|
|
23828
23793
|
{
|
|
23829
23794
|
selectedKey,
|
|
@@ -23834,8 +23799,8 @@ function ReviewComponentPanel({
|
|
|
23834
23799
|
)
|
|
23835
23800
|
}
|
|
23836
23801
|
) }),
|
|
23837
|
-
/* @__PURE__ */
|
|
23838
|
-
/* @__PURE__ */
|
|
23802
|
+
/* @__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 : " " }) }),
|
|
23803
|
+
/* @__PURE__ */ jsx37(Box27, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx37(Text30, { color: PALETTE.muted, wrap: "truncate-end", children: /* @__PURE__ */ jsx37(
|
|
23839
23804
|
ReviewPanelFooter,
|
|
23840
23805
|
{
|
|
23841
23806
|
reviewEditor,
|
|
@@ -23850,7 +23815,7 @@ function ReviewComponentPanel({
|
|
|
23850
23815
|
|
|
23851
23816
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewStatus.tsx
|
|
23852
23817
|
import { Box as Box28, Text as Text31 } from "ink";
|
|
23853
|
-
import { jsx as
|
|
23818
|
+
import { jsx as jsx38, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
23854
23819
|
function countReviewStatuses(entries) {
|
|
23855
23820
|
return entries.reduce(
|
|
23856
23821
|
(counts, entry) => {
|
|
@@ -23863,13 +23828,13 @@ function countReviewStatuses(entries) {
|
|
|
23863
23828
|
);
|
|
23864
23829
|
}
|
|
23865
23830
|
function ReviewLoadingState() {
|
|
23866
|
-
return /* @__PURE__ */
|
|
23831
|
+
return /* @__PURE__ */ jsx38(Box28, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx38(Text31, { color: PALETTE.muted, children: "Loading generated definitions..." }) });
|
|
23867
23832
|
}
|
|
23868
23833
|
function ReviewLoadError({ message }) {
|
|
23869
23834
|
return /* @__PURE__ */ jsxs29(Box28, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
23870
|
-
/* @__PURE__ */
|
|
23871
|
-
/* @__PURE__ */
|
|
23872
|
-
/* @__PURE__ */
|
|
23835
|
+
/* @__PURE__ */ jsx38(Text31, { color: PALETTE.error, children: message }),
|
|
23836
|
+
/* @__PURE__ */ jsx38(Text31, { children: " " }),
|
|
23837
|
+
/* @__PURE__ */ jsx38(Text31, { children: "[q / Enter / Esc] Quit" })
|
|
23873
23838
|
] });
|
|
23874
23839
|
}
|
|
23875
23840
|
|
|
@@ -23956,7 +23921,7 @@ function finalizeReviewSession(extractSessionId, components) {
|
|
|
23956
23921
|
}
|
|
23957
23922
|
|
|
23958
23923
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-review-session.ts
|
|
23959
|
-
import { useCallback as useCallback2, useEffect as useEffect12, useRef as
|
|
23924
|
+
import { useCallback as useCallback2, useEffect as useEffect12, useRef as useRef8, useState as useState17 } from "react";
|
|
23960
23925
|
|
|
23961
23926
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/history.ts
|
|
23962
23927
|
var DEFAULT_MAX_DEPTH = 50;
|
|
@@ -24012,7 +23977,7 @@ function createHistoryStack(seed, maxDepth = DEFAULT_MAX_DEPTH) {
|
|
|
24012
23977
|
}
|
|
24013
23978
|
|
|
24014
23979
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-finalize-preview.ts
|
|
24015
|
-
import { useEffect as useEffect11, useRef as
|
|
23980
|
+
import { useEffect as useEffect11, useRef as useRef7, useState as useState16 } from "react";
|
|
24016
23981
|
|
|
24017
23982
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/run-live-preview.ts
|
|
24018
23983
|
var TimeoutError = class extends Error {
|
|
@@ -24070,7 +24035,7 @@ async function runLivePreview(opts) {
|
|
|
24070
24035
|
|
|
24071
24036
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FinalizeDialog.tsx
|
|
24072
24037
|
import { Box as Box29, Text as Text32 } from "ink";
|
|
24073
|
-
import { Fragment as Fragment10, jsx as
|
|
24038
|
+
import { Fragment as Fragment10, jsx as jsx39, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
24074
24039
|
var FINALIZE_REMOVED_WINDOW = 6;
|
|
24075
24040
|
function FinalizeDialog({
|
|
24076
24041
|
accepted,
|
|
@@ -24099,51 +24064,51 @@ function FinalizeDialog({
|
|
|
24099
24064
|
const windowed = removed.slice(offset, offset + FINALIZE_REMOVED_WINDOW);
|
|
24100
24065
|
const hasMoreBelow = offset + FINALIZE_REMOVED_WINDOW < removed.length;
|
|
24101
24066
|
const hasMoreAbove = offset > 0;
|
|
24102
|
-
return /* @__PURE__ */
|
|
24103
|
-
/* @__PURE__ */
|
|
24104
|
-
/* @__PURE__ */
|
|
24067
|
+
return /* @__PURE__ */ jsx39(Box29, { width: "100%", justifyContent: "center", children: /* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", alignItems: "center", borderStyle: "round", padding: 1, width: 58, children: [
|
|
24068
|
+
/* @__PURE__ */ jsx39(Text32, { bold: true, children: "\u2500".repeat(22) + " Finalize " + "\u2500".repeat(22) }),
|
|
24069
|
+
/* @__PURE__ */ jsx39(Text32, { children: " " }),
|
|
24105
24070
|
/* @__PURE__ */ jsxs30(Text32, { children: [
|
|
24106
24071
|
/* @__PURE__ */ jsxs30(Text32, { color: PALETTE.success, children: [
|
|
24107
24072
|
accepted,
|
|
24108
24073
|
" accepted"
|
|
24109
24074
|
] }),
|
|
24110
|
-
/* @__PURE__ */
|
|
24075
|
+
/* @__PURE__ */ jsx39(Text32, { children: " \xB7 " }),
|
|
24111
24076
|
/* @__PURE__ */ jsxs30(Text32, { color: PALETTE.error, children: [
|
|
24112
24077
|
rejected,
|
|
24113
24078
|
" rejected"
|
|
24114
24079
|
] }),
|
|
24115
|
-
/* @__PURE__ */
|
|
24080
|
+
/* @__PURE__ */ jsx39(Text32, { children: " \xB7 " }),
|
|
24116
24081
|
/* @__PURE__ */ jsxs30(Text32, { color: PALETTE.muted, children: [
|
|
24117
24082
|
needsReview,
|
|
24118
24083
|
" unresolved"
|
|
24119
24084
|
] })
|
|
24120
24085
|
] }),
|
|
24121
|
-
/* @__PURE__ */
|
|
24086
|
+
/* @__PURE__ */ jsx39(Text32, { children: " " }),
|
|
24122
24087
|
noneAccepted && /* @__PURE__ */ jsxs30(Fragment10, { children: [
|
|
24123
|
-
/* @__PURE__ */
|
|
24124
|
-
/* @__PURE__ */
|
|
24125
|
-
/* @__PURE__ */
|
|
24088
|
+
/* @__PURE__ */ jsx39(Text32, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
|
|
24089
|
+
/* @__PURE__ */ jsx39(Text32, { color: PALETTE.warning, children: "Accept at least one component ([a] a row, [A] accept all) to push." }),
|
|
24090
|
+
/* @__PURE__ */ jsx39(Text32, { children: " " })
|
|
24126
24091
|
] }),
|
|
24127
24092
|
!allResolved && /* @__PURE__ */ jsxs30(Fragment10, { children: [
|
|
24128
|
-
/* @__PURE__ */
|
|
24129
|
-
/* @__PURE__ */
|
|
24130
|
-
/* @__PURE__ */
|
|
24093
|
+
/* @__PURE__ */ jsx39(Text32, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
|
|
24094
|
+
/* @__PURE__ */ jsx39(Text32, { color: PALETTE.warning, children: "Only explicitly accepted components ship." }),
|
|
24095
|
+
/* @__PURE__ */ jsx39(Text32, { children: " " })
|
|
24131
24096
|
] }),
|
|
24132
24097
|
/* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", height: 2, children: [
|
|
24133
|
-
previewStatus === "running" ? /* @__PURE__ */
|
|
24134
|
-
/* @__PURE__ */
|
|
24098
|
+
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: " " }),
|
|
24099
|
+
/* @__PURE__ */ jsx39(Text32, { children: " " })
|
|
24135
24100
|
] }),
|
|
24136
24101
|
previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs30(Fragment10, { children: [
|
|
24137
|
-
/* @__PURE__ */
|
|
24138
|
-
hasMoreAbove && /* @__PURE__ */
|
|
24139
|
-
windowed.map((rc) => /* @__PURE__ */
|
|
24140
|
-
hasMoreBelow && /* @__PURE__ */
|
|
24141
|
-
removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */
|
|
24142
|
-
/* @__PURE__ */
|
|
24102
|
+
/* @__PURE__ */ jsx39(Text32, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
|
|
24103
|
+
hasMoreAbove && /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, children: "\u2191 more above" }),
|
|
24104
|
+
windowed.map((rc) => /* @__PURE__ */ jsx39(Text32, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
|
|
24105
|
+
hasMoreBelow && /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, children: "\u2193 more below" }),
|
|
24106
|
+
removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx39(Text32, { children: "[\u2191\u2193] scroll deletions" }),
|
|
24107
|
+
/* @__PURE__ */ jsx39(Text32, { children: " " })
|
|
24143
24108
|
] }),
|
|
24144
|
-
/* @__PURE__ */
|
|
24145
|
-
/* @__PURE__ */
|
|
24146
|
-
/* @__PURE__ */
|
|
24109
|
+
/* @__PURE__ */ jsx39(Text32, { children: noneAccepted ? "Confirm exit with nothing accepted?" : allResolved ? "Save decisions and exit? All components resolved." : "Save decisions and exit?" }),
|
|
24110
|
+
/* @__PURE__ */ jsx39(Text32, { children: " " }),
|
|
24111
|
+
/* @__PURE__ */ jsx39(Text32, { children: "[y / Enter] Confirm [n / Esc] Cancel" })
|
|
24147
24112
|
] }) });
|
|
24148
24113
|
}
|
|
24149
24114
|
|
|
@@ -24162,7 +24127,7 @@ function useFinalizePreview(opts) {
|
|
|
24162
24127
|
const [status, setStatus] = useState16("idle");
|
|
24163
24128
|
const [removed, setRemoved] = useState16([]);
|
|
24164
24129
|
const [scrollOffset, setScrollOffset] = useState16(0);
|
|
24165
|
-
const generationRef =
|
|
24130
|
+
const generationRef = useRef7(0);
|
|
24166
24131
|
const acceptedKey = [...acceptedKeys].sort().join("\0");
|
|
24167
24132
|
useEffect11(() => {
|
|
24168
24133
|
if (!open) {
|
|
@@ -24310,8 +24275,8 @@ function useReviewMetadata({ components, selectedIdx, extractSessionId }) {
|
|
|
24310
24275
|
return { reviewMetadata, componentRationale };
|
|
24311
24276
|
}
|
|
24312
24277
|
function useReviewHistory({ loading, components, createSnapshot, applySnapshot }) {
|
|
24313
|
-
const historyRef =
|
|
24314
|
-
const historySeededRef =
|
|
24278
|
+
const historyRef = useRef8(null);
|
|
24279
|
+
const historySeededRef = useRef8(false);
|
|
24315
24280
|
useEffect12(() => {
|
|
24316
24281
|
if (loading || historySeededRef.current) return;
|
|
24317
24282
|
historySeededRef.current = true;
|
|
@@ -24363,7 +24328,7 @@ function useReviewFinalize({
|
|
|
24363
24328
|
}
|
|
24364
24329
|
|
|
24365
24330
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-review-editor.ts
|
|
24366
|
-
import { useEffect as useEffect13, useRef as
|
|
24331
|
+
import { useEffect as useEffect13, useRef as useRef9, useState as useState18 } from "react";
|
|
24367
24332
|
|
|
24368
24333
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/token-suggestions.ts
|
|
24369
24334
|
function collectTokenSuggestions(entry, availableTokens = []) {
|
|
@@ -24414,8 +24379,8 @@ function useReviewEditor({
|
|
|
24414
24379
|
const [tokenReviewEditing, setTokenReviewEditing] = useState18(false);
|
|
24415
24380
|
const [tokenReviewEditCursor, setTokenReviewEditCursor] = useState18(0);
|
|
24416
24381
|
const [tokenReviewEditSelection, setTokenReviewEditSelection] = useState18(/* @__PURE__ */ new Set());
|
|
24417
|
-
const tokenReviewSuggestedRef =
|
|
24418
|
-
const pendingGRef =
|
|
24382
|
+
const tokenReviewSuggestedRef = useRef9(/* @__PURE__ */ new Map());
|
|
24383
|
+
const pendingGRef = useRef9(false);
|
|
24419
24384
|
useEffect13(() => {
|
|
24420
24385
|
setTokenReviewRow(0);
|
|
24421
24386
|
setTokenReviewEditing(false);
|
|
@@ -24552,7 +24517,7 @@ import { Box as Box31, Text as Text34 } from "ink";
|
|
|
24552
24517
|
|
|
24553
24518
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/QuitDialog.tsx
|
|
24554
24519
|
import { Box as Box30, Text as Text33 } from "ink";
|
|
24555
|
-
import { Fragment as Fragment11, jsx as
|
|
24520
|
+
import { Fragment as Fragment11, jsx as jsx40, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
24556
24521
|
function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
24557
24522
|
useImmediateInput((input, key) => {
|
|
24558
24523
|
if (input === "y" || key.return) {
|
|
@@ -24562,20 +24527,20 @@ function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
|
24562
24527
|
}
|
|
24563
24528
|
});
|
|
24564
24529
|
return /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", borderStyle: "round", padding: 1, width: 50, children: [
|
|
24565
|
-
/* @__PURE__ */
|
|
24566
|
-
/* @__PURE__ */
|
|
24530
|
+
/* @__PURE__ */ jsx40(Text33, { bold: true, children: "\u2500".repeat(19) + " Quit " + "\u2500".repeat(19) }),
|
|
24531
|
+
/* @__PURE__ */ jsx40(Text33, { children: " " }),
|
|
24567
24532
|
hasUnsavedDrafts ? /* @__PURE__ */ jsxs31(Fragment11, { children: [
|
|
24568
|
-
/* @__PURE__ */
|
|
24569
|
-
/* @__PURE__ */
|
|
24570
|
-
/* @__PURE__ */
|
|
24571
|
-
] }) : /* @__PURE__ */
|
|
24572
|
-
/* @__PURE__ */
|
|
24573
|
-
/* @__PURE__ */
|
|
24533
|
+
/* @__PURE__ */ jsx40(Text33, { children: "You have unsaved draft edits." }),
|
|
24534
|
+
/* @__PURE__ */ jsx40(Text33, { children: "Session state is preserved \u2014 you can resume" }),
|
|
24535
|
+
/* @__PURE__ */ jsx40(Text33, { children: "by running the same review command again." })
|
|
24536
|
+
] }) : /* @__PURE__ */ jsx40(Text33, { children: "Session is saved. Quit without finalizing?" }),
|
|
24537
|
+
/* @__PURE__ */ jsx40(Text33, { children: " " }),
|
|
24538
|
+
/* @__PURE__ */ jsx40(Text33, { children: " [y / Enter] Quit [n / Esc] Stay" })
|
|
24574
24539
|
] });
|
|
24575
24540
|
}
|
|
24576
24541
|
|
|
24577
24542
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDialogs.tsx
|
|
24578
|
-
import { Fragment as Fragment12, jsx as
|
|
24543
|
+
import { Fragment as Fragment12, jsx as jsx41, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
24579
24544
|
function ReviewFinalizeDialogs({
|
|
24580
24545
|
showFinalize,
|
|
24581
24546
|
showQuit,
|
|
@@ -24590,7 +24555,7 @@ function ReviewFinalizeDialogs({
|
|
|
24590
24555
|
}) {
|
|
24591
24556
|
const { accepted, rejected, needsReview } = countReviewStatuses(components);
|
|
24592
24557
|
return /* @__PURE__ */ jsxs32(Fragment12, { children: [
|
|
24593
|
-
showFinalize && /* @__PURE__ */
|
|
24558
|
+
showFinalize && /* @__PURE__ */ jsx41(
|
|
24594
24559
|
FinalizeDialog,
|
|
24595
24560
|
{
|
|
24596
24561
|
accepted,
|
|
@@ -24603,7 +24568,7 @@ function ReviewFinalizeDialogs({
|
|
|
24603
24568
|
onCancel: onFinalizeCancel
|
|
24604
24569
|
}
|
|
24605
24570
|
),
|
|
24606
|
-
showQuit && /* @__PURE__ */
|
|
24571
|
+
showQuit && /* @__PURE__ */ jsx41(QuitDialog, { hasUnsavedDrafts: false, onConfirm: onQuitConfirm, onCancel: onQuitCancel })
|
|
24607
24572
|
] });
|
|
24608
24573
|
}
|
|
24609
24574
|
function ReviewStepDialogs({
|
|
@@ -24613,7 +24578,7 @@ function ReviewStepDialogs({
|
|
|
24613
24578
|
onFinalize,
|
|
24614
24579
|
onQuit
|
|
24615
24580
|
}) {
|
|
24616
|
-
return /* @__PURE__ */
|
|
24581
|
+
return /* @__PURE__ */ jsx41(
|
|
24617
24582
|
ReviewFinalizeDialogs,
|
|
24618
24583
|
{
|
|
24619
24584
|
showFinalize: surfaceState.showFinalize,
|
|
@@ -24632,11 +24597,11 @@ function ReviewStepDialogs({
|
|
|
24632
24597
|
function ReviewReloadDialog({ open }) {
|
|
24633
24598
|
if (!open) return null;
|
|
24634
24599
|
return /* @__PURE__ */ jsxs32(Box31, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
24635
|
-
/* @__PURE__ */
|
|
24636
|
-
/* @__PURE__ */
|
|
24637
|
-
/* @__PURE__ */
|
|
24638
|
-
/* @__PURE__ */
|
|
24639
|
-
/* @__PURE__ */
|
|
24600
|
+
/* @__PURE__ */ jsx41(Text34, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
|
|
24601
|
+
/* @__PURE__ */ jsx41(Text34, { children: "Unsaved in-memory changes will be lost." }),
|
|
24602
|
+
/* @__PURE__ */ jsx41(Text34, { children: " " }),
|
|
24603
|
+
/* @__PURE__ */ jsx41(Text34, { children: " [Enter] Confirm" }),
|
|
24604
|
+
/* @__PURE__ */ jsx41(Text34, { children: " [Esc] Cancel" })
|
|
24640
24605
|
] });
|
|
24641
24606
|
}
|
|
24642
24607
|
|
|
@@ -24855,21 +24820,21 @@ function applyPreviewAnnotations(preview, localNames) {
|
|
|
24855
24820
|
}
|
|
24856
24821
|
|
|
24857
24822
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-live-preview.ts
|
|
24858
|
-
import { useCallback as useCallback3, useEffect as useEffect14, useRef as
|
|
24823
|
+
import { useCallback as useCallback3, useEffect as useEffect14, useRef as useRef10, useState as useState20 } from "react";
|
|
24859
24824
|
var DEFAULT_DEBOUNCE_MS = 500;
|
|
24860
24825
|
function useLivePreview(opts) {
|
|
24861
24826
|
const debounceMs = opts.debounceMs ?? DEFAULT_DEBOUNCE_MS;
|
|
24862
24827
|
const [status, setStatus] = useState20("idle");
|
|
24863
24828
|
const [disabled, setDisabled] = useState20(false);
|
|
24864
|
-
const timerRef =
|
|
24865
|
-
const generationRef =
|
|
24866
|
-
const latestRef =
|
|
24867
|
-
const inflightRef =
|
|
24868
|
-
const optsRef =
|
|
24829
|
+
const timerRef = useRef10(null);
|
|
24830
|
+
const generationRef = useRef10(0);
|
|
24831
|
+
const latestRef = useRef10(0);
|
|
24832
|
+
const inflightRef = useRef10(0);
|
|
24833
|
+
const optsRef = useRef10(opts);
|
|
24869
24834
|
useEffect14(() => {
|
|
24870
24835
|
optsRef.current = opts;
|
|
24871
24836
|
});
|
|
24872
|
-
const disabledRef =
|
|
24837
|
+
const disabledRef = useRef10(disabled);
|
|
24873
24838
|
useEffect14(() => {
|
|
24874
24839
|
disabledRef.current = disabled;
|
|
24875
24840
|
}, [disabled]);
|
|
@@ -25004,7 +24969,7 @@ function useReviewPreview({
|
|
|
25004
24969
|
|
|
25005
24970
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/LivePreviewSummary.tsx
|
|
25006
24971
|
import { Box as Box32, Text as Text35 } from "ink";
|
|
25007
|
-
import { jsx as
|
|
24972
|
+
import { jsx as jsx42, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
25008
24973
|
function LivePreviewSummary({
|
|
25009
24974
|
enabled,
|
|
25010
24975
|
previewAnnotations,
|
|
@@ -25018,24 +24983,24 @@ function LivePreviewSummary({
|
|
|
25018
24983
|
const counts = { new: 0, changed: 0, removed: 0, breaking: 0 };
|
|
25019
24984
|
for (const annotation of previewAnnotations.values()) counts[annotation] += 1;
|
|
25020
24985
|
const hasCounts = counts.new + counts.changed + counts.removed + counts.breaking > 0;
|
|
25021
|
-
if (disabled) return /* @__PURE__ */
|
|
25022
|
-
if (status === "running" && !hasCounts) return /* @__PURE__ */
|
|
24986
|
+
if (disabled) return /* @__PURE__ */ jsx42(Text35, { color: PALETTE.muted, children: "Preview: disabled (creds rejected)" });
|
|
24987
|
+
if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx42(Text35, { color: PALETTE.muted, children: `Preview: ${spinner} running...` });
|
|
25023
24988
|
if (!hasCounts) return null;
|
|
25024
24989
|
return /* @__PURE__ */ jsxs33(Box32, { children: [
|
|
25025
|
-
/* @__PURE__ */
|
|
25026
|
-
/* @__PURE__ */
|
|
25027
|
-
/* @__PURE__ */
|
|
25028
|
-
/* @__PURE__ */
|
|
25029
|
-
/* @__PURE__ */
|
|
25030
|
-
/* @__PURE__ */
|
|
25031
|
-
showRemovedListHint && removedCount > 0 && /* @__PURE__ */
|
|
25032
|
-
/* @__PURE__ */
|
|
25033
|
-
/* @__PURE__ */
|
|
24990
|
+
/* @__PURE__ */ jsx42(Text35, { children: "Preview: " }),
|
|
24991
|
+
/* @__PURE__ */ jsx42(Text35, { color: PALETTE.success, children: `${counts.new} new` }),
|
|
24992
|
+
/* @__PURE__ */ jsx42(Text35, { children: " \xB7 " }),
|
|
24993
|
+
/* @__PURE__ */ jsx42(Text35, { color: PALETTE.warning, children: `${counts.changed} changed` }),
|
|
24994
|
+
/* @__PURE__ */ jsx42(Text35, { children: " \xB7 " }),
|
|
24995
|
+
/* @__PURE__ */ jsx42(Text35, { color: PALETTE.muted, children: `${counts.removed} removed` }),
|
|
24996
|
+
showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx42(Text35, { children: " ([d] removed list)" }),
|
|
24997
|
+
/* @__PURE__ */ jsx42(Text35, { children: " \xB7 " }),
|
|
24998
|
+
/* @__PURE__ */ jsx42(Text35, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
|
|
25034
24999
|
] });
|
|
25035
25000
|
}
|
|
25036
25001
|
|
|
25037
25002
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx
|
|
25038
|
-
import { Fragment as Fragment13, jsx as
|
|
25003
|
+
import { Fragment as Fragment13, jsx as jsx43, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
25039
25004
|
function sortComponentsForSidebar(components, cycleParticipants) {
|
|
25040
25005
|
const isEmpty2 = (entry) => Object.keys(entry.$properties ?? {}).length === 0 && Object.keys(entry.$slots ?? {}).length === 0;
|
|
25041
25006
|
const tier = (c2) => {
|
|
@@ -25079,7 +25044,7 @@ function CyclePathLine({
|
|
|
25079
25044
|
return /* @__PURE__ */ jsxs34(Text36, { color: highlightLine ? PALETTE.warning : void 0, children: [
|
|
25080
25045
|
prefix,
|
|
25081
25046
|
segments.map(
|
|
25082
|
-
(segment, index) => segment.kind === "slot" ? /* @__PURE__ */
|
|
25047
|
+
(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)
|
|
25083
25048
|
)
|
|
25084
25049
|
] });
|
|
25085
25050
|
}
|
|
@@ -25091,31 +25056,31 @@ function CycleDetailPanel({
|
|
|
25091
25056
|
height
|
|
25092
25057
|
}) {
|
|
25093
25058
|
const lines = [
|
|
25094
|
-
/* @__PURE__ */
|
|
25095
|
-
/* @__PURE__ */
|
|
25096
|
-
/* @__PURE__ */
|
|
25097
|
-
/* @__PURE__ */
|
|
25059
|
+
/* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${cycles.length})` }, "cyc-title"),
|
|
25060
|
+
/* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: "push will fail until these are resolved" }, "cyc-sub"),
|
|
25061
|
+
/* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: "Reject a cycle member or remove a slot edge to break the cycle." }, "cyc-guidance"),
|
|
25062
|
+
/* @__PURE__ */ jsx43(Text36, { children: " " }, "cyc-space")
|
|
25098
25063
|
];
|
|
25099
25064
|
cycles.forEach((cycle, index) => {
|
|
25100
25065
|
const nodeCount = new Set(cycle.path).size;
|
|
25101
25066
|
const isCursor = index === cursor;
|
|
25102
25067
|
lines.push(
|
|
25103
|
-
/* @__PURE__ */
|
|
25104
|
-
/* @__PURE__ */
|
|
25068
|
+
/* @__PURE__ */ jsx43(Text36, { bold: true, inverse: isCursor, children: `${isCursor ? figures7.pointer : " "} Cycle ${index + 1} (${nodeCount} component${nodeCount === 1 ? "" : "s"}):` }, `cyc-h-${index}`),
|
|
25069
|
+
/* @__PURE__ */ jsx43(CyclePathLine, { segments: formatCyclePathSegments2(cycle, 16), prefix: " " }, `cyc-p-${index}`)
|
|
25105
25070
|
);
|
|
25106
25071
|
if (cycle.suggestedBreak) {
|
|
25107
25072
|
lines.push(
|
|
25108
|
-
/* @__PURE__ */
|
|
25073
|
+
/* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: ` Suggested fix: remove [${cycle.suggestedBreak.slotName}] from ${cycle.suggestedBreak.fromComponent}` }, `cyc-fix-${index}`)
|
|
25109
25074
|
);
|
|
25110
25075
|
}
|
|
25111
|
-
lines.push(/* @__PURE__ */
|
|
25076
|
+
lines.push(/* @__PURE__ */ jsx43(Text36, { children: " " }, `cyc-s-${index}`));
|
|
25112
25077
|
});
|
|
25113
25078
|
const footer = "[\u2191\u2193] move [Enter] fix cycle [c/q/Esc] close";
|
|
25114
25079
|
const viewportHeight = Math.max(1, height - 3);
|
|
25115
25080
|
const visible = lines.slice(scrollOffset, scrollOffset + viewportHeight - 1);
|
|
25116
25081
|
return /* @__PURE__ */ jsxs34(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
|
|
25117
25082
|
visible,
|
|
25118
|
-
/* @__PURE__ */
|
|
25083
|
+
/* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: footer })
|
|
25119
25084
|
] });
|
|
25120
25085
|
}
|
|
25121
25086
|
function BreakCyclePanel({
|
|
@@ -25127,13 +25092,13 @@ function BreakCyclePanel({
|
|
|
25127
25092
|
height
|
|
25128
25093
|
}) {
|
|
25129
25094
|
return /* @__PURE__ */ jsxs34(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
|
|
25130
|
-
/* @__PURE__ */
|
|
25131
|
-
cycle && /* @__PURE__ */
|
|
25132
|
-
/* @__PURE__ */
|
|
25133
|
-
/* @__PURE__ */
|
|
25134
|
-
edges.length > 0 && /* @__PURE__ */
|
|
25135
|
-
edges.map((edge, index) => /* @__PURE__ */
|
|
25136
|
-
confirming ? /* @__PURE__ */
|
|
25095
|
+
/* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE.warning, children: "BREAK CYCLE \u2014 remove a slot edge" }),
|
|
25096
|
+
cycle && /* @__PURE__ */ jsx43(CyclePathLine, { segments: formatCyclePathSegments2(cycle), prefix: " ", highlightComponents: true }),
|
|
25097
|
+
/* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: cycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
|
|
25098
|
+
/* @__PURE__ */ jsx43(Text36, { children: " " }),
|
|
25099
|
+
edges.length > 0 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE.muted, children: "remove slot edge:" }),
|
|
25100
|
+
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}`)),
|
|
25101
|
+
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" })
|
|
25137
25102
|
] });
|
|
25138
25103
|
}
|
|
25139
25104
|
var HELP_SECTIONS2 = [
|
|
@@ -25239,9 +25204,9 @@ function deriveBreakingChanges(response) {
|
|
|
25239
25204
|
}
|
|
25240
25205
|
function GenerateReviewStep(props) {
|
|
25241
25206
|
if (!props.extractSessionId) {
|
|
25242
|
-
return /* @__PURE__ */
|
|
25207
|
+
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." }) });
|
|
25243
25208
|
}
|
|
25244
|
-
return /* @__PURE__ */
|
|
25209
|
+
return /* @__PURE__ */ jsx43(GenerateReviewStepView, { ...props, extractSessionId: props.extractSessionId });
|
|
25245
25210
|
}
|
|
25246
25211
|
function GenerateReviewStepView({
|
|
25247
25212
|
extractSessionId,
|
|
@@ -25306,7 +25271,7 @@ function GenerateReviewStepView({
|
|
|
25306
25271
|
setFinalizeError
|
|
25307
25272
|
} = reviewSurface;
|
|
25308
25273
|
const [removedBannerCollapsed, setRemovedBannerCollapsed] = useState22(false);
|
|
25309
|
-
const removedBannerDefaultedRef =
|
|
25274
|
+
const removedBannerDefaultedRef = useRef11(false);
|
|
25310
25275
|
const [cyclePanelScroll, setCyclePanelScroll] = useState22(0);
|
|
25311
25276
|
const [cyclesCursor, setCyclesCursor] = useState22(0);
|
|
25312
25277
|
const cyclePanel = useOverlayPanel({
|
|
@@ -25326,7 +25291,7 @@ function GenerateReviewStepView({
|
|
|
25326
25291
|
const [breakCursor, setBreakCursor] = useState22(0);
|
|
25327
25292
|
const [breakConfirm, setBreakConfirm] = useState22(false);
|
|
25328
25293
|
const [expandedGroups, setExpandedGroups] = useState22(/* @__PURE__ */ new Set());
|
|
25329
|
-
const seededGroupsRef =
|
|
25294
|
+
const seededGroupsRef = useRef11(false);
|
|
25330
25295
|
const {
|
|
25331
25296
|
searchOpen,
|
|
25332
25297
|
setSearchOpen,
|
|
@@ -25350,7 +25315,7 @@ function GenerateReviewStepView({
|
|
|
25350
25315
|
const [pendingEditorFocus, setPendingEditorFocus] = useState22(null);
|
|
25351
25316
|
const [autoRejected, setAutoRejected] = useState22([]);
|
|
25352
25317
|
const [undoSnapshot, setUndoSnapshot] = useState22(null);
|
|
25353
|
-
const autoRejectFiredRef =
|
|
25318
|
+
const autoRejectFiredRef = useRef11(false);
|
|
25354
25319
|
const [showReloadDialog, setShowReloadDialog] = useState22(false);
|
|
25355
25320
|
const acceptedCountForPreview = components.filter((c2) => c2.status === "accepted").length;
|
|
25356
25321
|
const { previewAnnotations, removedComponents, livePreviewHook, livePreviewSpinner } = useReviewPreview({
|
|
@@ -25483,7 +25448,7 @@ function GenerateReviewStepView({
|
|
|
25483
25448
|
}),
|
|
25484
25449
|
applySnapshot: applyHistorySnapshot
|
|
25485
25450
|
});
|
|
25486
|
-
const autoRejectPushedRef =
|
|
25451
|
+
const autoRejectPushedRef = useRef11(false);
|
|
25487
25452
|
useEffect16(() => {
|
|
25488
25453
|
if (loading) return;
|
|
25489
25454
|
if (!historySeededRef.current) return;
|
|
@@ -26098,13 +26063,13 @@ function GenerateReviewStepView({
|
|
|
26098
26063
|
}
|
|
26099
26064
|
});
|
|
26100
26065
|
if (loading) {
|
|
26101
|
-
return /* @__PURE__ */
|
|
26066
|
+
return /* @__PURE__ */ jsx43(ReviewLoadingState, {});
|
|
26102
26067
|
}
|
|
26103
26068
|
if (loadError) {
|
|
26104
|
-
return /* @__PURE__ */
|
|
26069
|
+
return /* @__PURE__ */ jsx43(ReviewLoadError, { message: loadError });
|
|
26105
26070
|
}
|
|
26106
26071
|
if (showHelp) {
|
|
26107
|
-
return /* @__PURE__ */
|
|
26072
|
+
return /* @__PURE__ */ jsx43(HelpOverlay, { sections: HELP_SECTIONS2, handleInput: false, onClose: () => setShowHelp(false) });
|
|
26108
26073
|
}
|
|
26109
26074
|
const { selected, selectedJson, visibleJsonPanelValue } = getReviewSelectionState(
|
|
26110
26075
|
components,
|
|
@@ -26145,7 +26110,7 @@ function GenerateReviewStepView({
|
|
|
26145
26110
|
return false;
|
|
26146
26111
|
})();
|
|
26147
26112
|
return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", children: [
|
|
26148
|
-
/* @__PURE__ */
|
|
26113
|
+
/* @__PURE__ */ jsx43(
|
|
26149
26114
|
ReviewStepDialogs,
|
|
26150
26115
|
{
|
|
26151
26116
|
surfaceState: reviewSurface,
|
|
@@ -26155,15 +26120,15 @@ function GenerateReviewStepView({
|
|
|
26155
26120
|
onQuit
|
|
26156
26121
|
}
|
|
26157
26122
|
),
|
|
26158
|
-
/* @__PURE__ */
|
|
26123
|
+
/* @__PURE__ */ jsx43(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
|
|
26159
26124
|
removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
|
|
26160
|
-
/* @__PURE__ */
|
|
26125
|
+
/* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
|
|
26161
26126
|
!removedBannerCollapsed && /* @__PURE__ */ jsxs34(Fragment13, { children: [
|
|
26162
|
-
/* @__PURE__ */
|
|
26163
|
-
removedComponents.map((rc) => /* @__PURE__ */
|
|
26127
|
+
/* @__PURE__ */ jsx43(Text36, { children: " " }),
|
|
26128
|
+
removedComponents.map((rc) => /* @__PURE__ */ jsx43(Text36, { children: removedComponentLine(rc) }, rc.id))
|
|
26164
26129
|
] })
|
|
26165
26130
|
] }),
|
|
26166
|
-
breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */
|
|
26131
|
+
breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx43(Box33, { paddingX: 1, children: /* @__PURE__ */ jsx43(
|
|
26167
26132
|
Text36,
|
|
26168
26133
|
{
|
|
26169
26134
|
color: PALETTE.warning,
|
|
@@ -26175,13 +26140,13 @@ function GenerateReviewStepView({
|
|
|
26175
26140
|
const comp = row ? breakingChanges.find((b) => b.componentName === row.componentName) : void 0;
|
|
26176
26141
|
if (!comp) return null;
|
|
26177
26142
|
return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
26178
|
-
/* @__PURE__ */
|
|
26179
|
-
comp.impact && /* @__PURE__ */
|
|
26180
|
-
comp.changes.length === 0 ? /* @__PURE__ */
|
|
26181
|
-
/* @__PURE__ */
|
|
26143
|
+
/* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
|
|
26144
|
+
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"}` }),
|
|
26145
|
+
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}`)),
|
|
26146
|
+
/* @__PURE__ */ jsx43(Text36, { children: "[D/Esc] close detail" })
|
|
26182
26147
|
] });
|
|
26183
26148
|
})(),
|
|
26184
|
-
!dialogOpen && /* @__PURE__ */
|
|
26149
|
+
!dialogOpen && /* @__PURE__ */ jsx43(
|
|
26185
26150
|
LivePreviewSummary,
|
|
26186
26151
|
{
|
|
26187
26152
|
enabled: livePreview,
|
|
@@ -26201,15 +26166,15 @@ function GenerateReviewStepView({
|
|
|
26201
26166
|
const members = stillRejected.filter((n) => participantSet.has(n)).sort();
|
|
26202
26167
|
const ancestors = stillRejected.filter((n) => !participantSet.has(n)).sort();
|
|
26203
26168
|
return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
|
|
26204
|
-
/* @__PURE__ */
|
|
26205
|
-
members.length > 0 && /* @__PURE__ */
|
|
26206
|
-
ancestors.length > 0 && /* @__PURE__ */
|
|
26207
|
-
/* @__PURE__ */
|
|
26169
|
+
/* @__PURE__ */ jsx43(Text36, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
|
|
26170
|
+
members.length > 0 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
|
|
26171
|
+
ancestors.length > 0 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
|
|
26172
|
+
/* @__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" })
|
|
26208
26173
|
] });
|
|
26209
26174
|
})(),
|
|
26210
|
-
/* @__PURE__ */
|
|
26211
|
-
/* @__PURE__ */
|
|
26212
|
-
!dialogOpen && breakPanel.isOpen && /* @__PURE__ */
|
|
26175
|
+
/* @__PURE__ */ jsx43(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
|
|
26176
|
+
/* @__PURE__ */ jsx43(ReviewFinalizeError, { message: finalizeError, hidden: dialogOpen }),
|
|
26177
|
+
!dialogOpen && breakPanel.isOpen && /* @__PURE__ */ jsx43(
|
|
26213
26178
|
BreakCyclePanel,
|
|
26214
26179
|
{
|
|
26215
26180
|
cycle: cycleRows[cyclesCursor],
|
|
@@ -26220,7 +26185,7 @@ function GenerateReviewStepView({
|
|
|
26220
26185
|
height: panelHeight
|
|
26221
26186
|
}
|
|
26222
26187
|
),
|
|
26223
|
-
!dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */
|
|
26188
|
+
!dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsx43(
|
|
26224
26189
|
CycleDetailPanel,
|
|
26225
26190
|
{
|
|
26226
26191
|
cycles: cycleRows,
|
|
@@ -26231,7 +26196,7 @@ function GenerateReviewStepView({
|
|
|
26231
26196
|
}
|
|
26232
26197
|
),
|
|
26233
26198
|
!dialogOpen && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs34(Box33, { children: [
|
|
26234
|
-
breakingPanel.isOpen ? /* @__PURE__ */
|
|
26199
|
+
breakingPanel.isOpen ? /* @__PURE__ */ jsx43(
|
|
26235
26200
|
GotoBanner,
|
|
26236
26201
|
{
|
|
26237
26202
|
title: `Breaking changes \u2014 ${breakingRows[breakingCursor]?.componentName ?? "unknown component"}`,
|
|
@@ -26244,7 +26209,7 @@ function GenerateReviewStepView({
|
|
|
26244
26209
|
width: sidebarWidth,
|
|
26245
26210
|
footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [D] detail \xB7 [Esc] close"
|
|
26246
26211
|
}
|
|
26247
|
-
) : /* @__PURE__ */
|
|
26212
|
+
) : /* @__PURE__ */ jsx43(
|
|
26248
26213
|
GroupedSidebar,
|
|
26249
26214
|
{
|
|
26250
26215
|
items: groupedItems,
|
|
@@ -26285,7 +26250,7 @@ function GenerateReviewStepView({
|
|
|
26285
26250
|
graph: sidebarGraph
|
|
26286
26251
|
}
|
|
26287
26252
|
),
|
|
26288
|
-
selected ? /* @__PURE__ */
|
|
26253
|
+
selected ? /* @__PURE__ */ jsx43(
|
|
26289
26254
|
ReviewComponentPanel,
|
|
26290
26255
|
{
|
|
26291
26256
|
selectedKey: selected.key,
|
|
@@ -26317,12 +26282,12 @@ function GenerateReviewStepView({
|
|
|
26317
26282
|
livePreview: livePreviewHook,
|
|
26318
26283
|
livePreviewSpinner
|
|
26319
26284
|
}
|
|
26320
|
-
) : /* @__PURE__ */
|
|
26285
|
+
) : /* @__PURE__ */ jsx43(ReviewNoSelection, {})
|
|
26321
26286
|
] }),
|
|
26322
26287
|
!dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", children: [
|
|
26323
|
-
/* @__PURE__ */
|
|
26288
|
+
/* @__PURE__ */ jsx43(Text36, { color: PALETTE.warning, children: `\u26A0 ${cycleRows.length} slot dependency cycle${cycleRows.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
|
|
26324
26289
|
cycleRows.slice(0, 3).map((cycle, idx) => {
|
|
26325
|
-
return /* @__PURE__ */
|
|
26290
|
+
return /* @__PURE__ */ jsx43(
|
|
26326
26291
|
CyclePathLine,
|
|
26327
26292
|
{
|
|
26328
26293
|
segments: formatCyclePathSegments2(cycle),
|
|
@@ -26333,10 +26298,10 @@ function GenerateReviewStepView({
|
|
|
26333
26298
|
`cyc-banner-${idx}`
|
|
26334
26299
|
);
|
|
26335
26300
|
}),
|
|
26336
|
-
cycleRows.length > 3 && /* @__PURE__ */
|
|
26337
|
-
/* @__PURE__ */
|
|
26301
|
+
cycleRows.length > 3 && /* @__PURE__ */ jsx43(Text36, { color: PALETTE.warning, children: ` \u2026${cycleRows.length - 3} more` }),
|
|
26302
|
+
/* @__PURE__ */ jsx43(Text36, { children: " press [c] for detail" })
|
|
26338
26303
|
] }),
|
|
26339
|
-
/* @__PURE__ */
|
|
26304
|
+
/* @__PURE__ */ jsx43(
|
|
26340
26305
|
SearchMatchSummary,
|
|
26341
26306
|
{
|
|
26342
26307
|
open: searchOpen,
|
|
@@ -26347,22 +26312,22 @@ function GenerateReviewStepView({
|
|
|
26347
26312
|
hidden: dialogOpen
|
|
26348
26313
|
}
|
|
26349
26314
|
),
|
|
26350
|
-
!dialogOpen && sidebarFocused && /* @__PURE__ */
|
|
26315
|
+
!dialogOpen && sidebarFocused && /* @__PURE__ */ jsx43(CompactControlBar, { hasGroupRoots, searchActive: searchOpen || searchQuery.length > 0 })
|
|
26351
26316
|
] });
|
|
26352
26317
|
}
|
|
26353
26318
|
|
|
26354
26319
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/CustomPromptBanner.tsx
|
|
26355
26320
|
import { Box as Box34, Text as Text37 } from "ink";
|
|
26356
|
-
import { jsx as
|
|
26321
|
+
import { jsx as jsx44, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
26357
26322
|
function CustomPromptBanner({ generatePromptPath }) {
|
|
26358
26323
|
if (!generatePromptPath) return null;
|
|
26359
26324
|
return /* @__PURE__ */ jsxs35(Box34, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
26360
|
-
/* @__PURE__ */
|
|
26325
|
+
/* @__PURE__ */ jsx44(Text37, { color: PALETTE.warning, bold: true, children: "WARNING: Custom prompt active" }),
|
|
26361
26326
|
generatePromptPath ? /* @__PURE__ */ jsxs35(Text37, { color: PALETTE.warning, children: [
|
|
26362
26327
|
"components: ",
|
|
26363
26328
|
generatePromptPath
|
|
26364
26329
|
] }) : null,
|
|
26365
|
-
/* @__PURE__ */
|
|
26330
|
+
/* @__PURE__ */ jsx44(Text37, { color: PALETTE.warning, children: "Bundled invariants (utility-wrapper rejection, description content rules) do NOT apply." })
|
|
26366
26331
|
] });
|
|
26367
26332
|
}
|
|
26368
26333
|
|
|
@@ -26384,25 +26349,25 @@ function buildPostPushUrl2({ host, spaceId, environmentId, view = "components" }
|
|
|
26384
26349
|
|
|
26385
26350
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/SpaceEnvironment.tsx
|
|
26386
26351
|
import { Box as Box35, Text as Text38 } from "ink";
|
|
26387
|
-
import { jsx as
|
|
26352
|
+
import { jsx as jsx45, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
26388
26353
|
function SpaceEnvironment({ spaceId, environmentId }) {
|
|
26389
26354
|
return /* @__PURE__ */ jsxs36(Box35, { gap: 1, marginTop: 1, children: [
|
|
26390
|
-
/* @__PURE__ */
|
|
26391
|
-
/* @__PURE__ */
|
|
26392
|
-
/* @__PURE__ */
|
|
26393
|
-
/* @__PURE__ */
|
|
26394
|
-
/* @__PURE__ */
|
|
26355
|
+
/* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: "Space:" }),
|
|
26356
|
+
/* @__PURE__ */ jsx45(Text38, { children: spaceId }),
|
|
26357
|
+
/* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: "/" }),
|
|
26358
|
+
/* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: "Environment:" }),
|
|
26359
|
+
/* @__PURE__ */ jsx45(Text38, { children: environmentId })
|
|
26395
26360
|
] });
|
|
26396
26361
|
}
|
|
26397
26362
|
|
|
26398
26363
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/DoneStep.tsx
|
|
26399
|
-
import { Fragment as Fragment14, jsx as
|
|
26364
|
+
import { Fragment as Fragment14, jsx as jsx46, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
26400
26365
|
var ACTIONS = ["created", "updated", "removed"];
|
|
26401
26366
|
function EntityRows({ entity, label }) {
|
|
26402
26367
|
const plural3 = (n) => `${n} ${label}${n !== 1 ? "s" : ""}`;
|
|
26403
26368
|
return /* @__PURE__ */ jsxs37(Fragment14, { children: [
|
|
26404
26369
|
ACTIONS.filter((action) => entity[action] > 0).map((action) => /* @__PURE__ */ jsxs37(Text39, { children: [
|
|
26405
|
-
/* @__PURE__ */
|
|
26370
|
+
/* @__PURE__ */ jsx46(Text39, { color: PALETTE.success, children: "\u2713" }),
|
|
26406
26371
|
" ",
|
|
26407
26372
|
plural3(entity[action]),
|
|
26408
26373
|
" ",
|
|
@@ -26417,8 +26382,8 @@ function EntityRows({ entity, label }) {
|
|
|
26417
26382
|
}
|
|
26418
26383
|
function LinkRow({ title, url }) {
|
|
26419
26384
|
return /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", children: [
|
|
26420
|
-
/* @__PURE__ */
|
|
26421
|
-
/* @__PURE__ */
|
|
26385
|
+
/* @__PURE__ */ jsx46(Text39, { color: PALETTE.muted, children: title }),
|
|
26386
|
+
/* @__PURE__ */ jsx46(Text39, { color: PALETTE.accent, children: url })
|
|
26422
26387
|
] });
|
|
26423
26388
|
}
|
|
26424
26389
|
function DoneStep({
|
|
@@ -26441,11 +26406,11 @@ function DoneStep({
|
|
|
26441
26406
|
const success = totalFailed === 0;
|
|
26442
26407
|
const urlArgs = { host: host ?? "api.contentful.com", spaceId, environmentId };
|
|
26443
26408
|
return /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
26444
|
-
success ? /* @__PURE__ */
|
|
26445
|
-
totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */
|
|
26446
|
-
/* @__PURE__ */
|
|
26447
|
-
/* @__PURE__ */
|
|
26448
|
-
summary && /* @__PURE__ */
|
|
26409
|
+
success ? /* @__PURE__ */ jsx46(Text39, { bold: true, color: PALETTE.success, children: "Done!" }) : /* @__PURE__ */ jsx46(Text39, { bold: true, color: PALETTE.warning, children: "\u26A0 Finished with errors" }),
|
|
26410
|
+
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: [
|
|
26411
|
+
/* @__PURE__ */ jsx46(EntityRows, { entity: componentTypes, label: "Component Type" }),
|
|
26412
|
+
/* @__PURE__ */ jsx46(EntityRows, { entity: designTokens, label: "Design Token" }),
|
|
26413
|
+
summary && /* @__PURE__ */ jsx46(Box36, { marginTop: 1, children: /* @__PURE__ */ jsxs37(Text39, { color: PALETTE.muted, children: [
|
|
26449
26414
|
"Push result: ",
|
|
26450
26415
|
summary.succeeded,
|
|
26451
26416
|
"/",
|
|
@@ -26459,7 +26424,7 @@ function DoneStep({
|
|
|
26459
26424
|
] }) })
|
|
26460
26425
|
] }),
|
|
26461
26426
|
failures.length > 0 && /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", children: [
|
|
26462
|
-
/* @__PURE__ */
|
|
26427
|
+
/* @__PURE__ */ jsx46(Text39, { bold: true, color: PALETTE.error, children: "Failure details" }),
|
|
26463
26428
|
failures.map((failure) => /* @__PURE__ */ jsxs37(Text39, { color: PALETTE.error, children: [
|
|
26464
26429
|
failure.entityType,
|
|
26465
26430
|
" ",
|
|
@@ -26468,11 +26433,11 @@ function DoneStep({
|
|
|
26468
26433
|
failure.message
|
|
26469
26434
|
] }, `${failure.entityType}:${failure.entityId}`))
|
|
26470
26435
|
] }),
|
|
26471
|
-
/* @__PURE__ */
|
|
26436
|
+
/* @__PURE__ */ jsx46(SpaceEnvironment, { spaceId, environmentId }),
|
|
26472
26437
|
success && totalPushed > 0 && /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", gap: 1, children: [
|
|
26473
|
-
/* @__PURE__ */
|
|
26474
|
-
/* @__PURE__ */
|
|
26475
|
-
/* @__PURE__ */
|
|
26438
|
+
/* @__PURE__ */ jsx46(Text39, { color: PALETTE.success, children: "Your design system is now in Contentful Experiences." }),
|
|
26439
|
+
/* @__PURE__ */ jsx46(LinkRow, { title: "View your components here:", url: buildPostPushUrl2(urlArgs) }),
|
|
26440
|
+
/* @__PURE__ */ jsx46(
|
|
26476
26441
|
LinkRow,
|
|
26477
26442
|
{
|
|
26478
26443
|
title: "View your design tokens here:",
|
|
@@ -26480,7 +26445,7 @@ function DoneStep({
|
|
|
26480
26445
|
}
|
|
26481
26446
|
)
|
|
26482
26447
|
] }),
|
|
26483
|
-
/* @__PURE__ */
|
|
26448
|
+
/* @__PURE__ */ jsx46(Text39, { children: "[Enter / q] Exit" })
|
|
26484
26449
|
] });
|
|
26485
26450
|
}
|
|
26486
26451
|
|
|
@@ -26520,7 +26485,7 @@ function useBlinkingCursor() {
|
|
|
26520
26485
|
}
|
|
26521
26486
|
|
|
26522
26487
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PathPrompt.tsx
|
|
26523
|
-
import { jsx as
|
|
26488
|
+
import { jsx as jsx47, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
26524
26489
|
function autocomplete(partial) {
|
|
26525
26490
|
if (!partial) return null;
|
|
26526
26491
|
const normalized = normalizePath(partial);
|
|
@@ -26579,18 +26544,18 @@ function PathPrompt({
|
|
|
26579
26544
|
const cursor = cursorVisible ? "\u2588" : " ";
|
|
26580
26545
|
return /* @__PURE__ */ jsxs38(Box37, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
26581
26546
|
/* @__PURE__ */ jsxs38(Box37, { gap: 1, children: [
|
|
26582
|
-
/* @__PURE__ */
|
|
26547
|
+
/* @__PURE__ */ jsx47(Text40, { color: PALETTE.accent, children: "?" }),
|
|
26583
26548
|
/* @__PURE__ */ jsxs38(Text40, { bold: true, children: [
|
|
26584
26549
|
label,
|
|
26585
26550
|
":"
|
|
26586
26551
|
] }),
|
|
26587
|
-
/* @__PURE__ */
|
|
26588
|
-
/* @__PURE__ */
|
|
26552
|
+
/* @__PURE__ */ jsx47(Text40, { color: isPlaceholder ? PALETTE.muted : void 0, children: shown }),
|
|
26553
|
+
/* @__PURE__ */ jsx47(Text40, { children: cursor })
|
|
26589
26554
|
] }),
|
|
26590
26555
|
/* @__PURE__ */ jsxs38(Box37, { gap: 3, children: [
|
|
26591
|
-
/* @__PURE__ */
|
|
26592
|
-
/* @__PURE__ */
|
|
26593
|
-
/* @__PURE__ */
|
|
26556
|
+
/* @__PURE__ */ jsx47(Text40, { children: "[Enter] Confirm" }),
|
|
26557
|
+
/* @__PURE__ */ jsx47(Text40, { children: "[Tab] Autocomplete" }),
|
|
26558
|
+
/* @__PURE__ */ jsx47(Text40, { children: "[Esc] Cancel" })
|
|
26594
26559
|
] })
|
|
26595
26560
|
] });
|
|
26596
26561
|
}
|
|
@@ -26601,10 +26566,10 @@ import { ProgressBar as ProgressBar2, ThemeProvider as ThemeProvider2 } from "@i
|
|
|
26601
26566
|
|
|
26602
26567
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/StepHeader.tsx
|
|
26603
26568
|
import { Box as Box38, Text as Text41 } from "ink";
|
|
26604
|
-
import { jsx as
|
|
26569
|
+
import { jsx as jsx48, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
26605
26570
|
function StepHeader({ stepNumber, totalSteps, title }) {
|
|
26606
26571
|
return /* @__PURE__ */ jsxs39(Box38, { flexDirection: "column", gap: 0, children: [
|
|
26607
|
-
/* @__PURE__ */
|
|
26572
|
+
/* @__PURE__ */ jsx48(Text41, { color: PALETTE.muted, children: "\u2500".repeat(40) }),
|
|
26608
26573
|
/* @__PURE__ */ jsxs39(Box38, { gap: 1, children: [
|
|
26609
26574
|
/* @__PURE__ */ jsxs39(Text41, { bold: true, children: [
|
|
26610
26575
|
"Step ",
|
|
@@ -26612,17 +26577,17 @@ function StepHeader({ stepNumber, totalSteps, title }) {
|
|
|
26612
26577
|
" of ",
|
|
26613
26578
|
totalSteps
|
|
26614
26579
|
] }),
|
|
26615
|
-
/* @__PURE__ */
|
|
26616
|
-
/* @__PURE__ */
|
|
26580
|
+
/* @__PURE__ */ jsx48(Text41, { bold: true, children: "\u2014" }),
|
|
26581
|
+
/* @__PURE__ */ jsx48(Text41, { bold: true, children: title })
|
|
26617
26582
|
] }),
|
|
26618
|
-
/* @__PURE__ */
|
|
26583
|
+
/* @__PURE__ */ jsx48(Text41, { color: PALETTE.muted, children: "\u2500".repeat(40) })
|
|
26619
26584
|
] });
|
|
26620
26585
|
}
|
|
26621
26586
|
|
|
26622
26587
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/use-timed-spinner.tsx
|
|
26623
26588
|
import { useEffect as useEffect18, useState as useState25 } from "react";
|
|
26624
26589
|
import { Spinner as Spinner2 } from "@inkjs/ui";
|
|
26625
|
-
import { jsx as
|
|
26590
|
+
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
26626
26591
|
function useTimedSpinner() {
|
|
26627
26592
|
const [elapsedSeconds, setElapsedSeconds] = useState25(0);
|
|
26628
26593
|
useEffect18(() => {
|
|
@@ -26634,27 +26599,27 @@ function useTimedSpinner() {
|
|
|
26634
26599
|
const mins = Math.floor(elapsedSeconds / 60);
|
|
26635
26600
|
const secs = elapsedSeconds % 60;
|
|
26636
26601
|
return {
|
|
26637
|
-
spinner: /* @__PURE__ */
|
|
26602
|
+
spinner: /* @__PURE__ */ jsx49(Spinner2, {}),
|
|
26638
26603
|
elapsed: mins > 0 ? `${mins}m ${secs}s` : `${secs}s`
|
|
26639
26604
|
};
|
|
26640
26605
|
}
|
|
26641
26606
|
|
|
26642
26607
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PushingStep.tsx
|
|
26643
|
-
import { jsx as
|
|
26608
|
+
import { jsx as jsx50, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
26644
26609
|
function PushingStep({ stepNumber, totalSteps, progress }) {
|
|
26645
26610
|
const { elapsed } = useTimedSpinner();
|
|
26646
26611
|
const operationId = progress && progress.kind === "queued" ? progress.operationId : null;
|
|
26647
26612
|
const showGlobal = progress && progress.kind === "progress";
|
|
26648
26613
|
const showCurrent = progress && progress.kind === "progress" && progress.current ? progress.current : null;
|
|
26649
26614
|
return /* @__PURE__ */ jsxs40(Box39, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
26650
|
-
/* @__PURE__ */
|
|
26651
|
-
/* @__PURE__ */
|
|
26615
|
+
/* @__PURE__ */ jsx50(StepHeader, { stepNumber, totalSteps, title: "Push to Contentful" }),
|
|
26616
|
+
/* @__PURE__ */ jsx50(Text42, { children: "Writing component types and design tokens to your Contentful space..." }),
|
|
26652
26617
|
operationId && /* @__PURE__ */ jsxs40(Box39, { gap: 1, children: [
|
|
26653
|
-
/* @__PURE__ */
|
|
26654
|
-
/* @__PURE__ */
|
|
26618
|
+
/* @__PURE__ */ jsx50(Text42, { color: PALETTE.muted, children: "Operation:" }),
|
|
26619
|
+
/* @__PURE__ */ jsx50(Text42, { children: operationId })
|
|
26655
26620
|
] }),
|
|
26656
|
-
showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */
|
|
26657
|
-
/* @__PURE__ */
|
|
26621
|
+
showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */ jsx50(Box39, { gap: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs40(Box39, { gap: 2, children: [
|
|
26622
|
+
/* @__PURE__ */ jsx50(Box39, { width: 40, children: /* @__PURE__ */ jsx50(ThemeProvider2, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx50(ProgressBar2, { value: Math.round(progress.processed / progress.total * 100) }) }) }),
|
|
26658
26623
|
/* @__PURE__ */ jsxs40(Text42, { color: PALETTE.muted, children: [
|
|
26659
26624
|
progress.processed,
|
|
26660
26625
|
"/",
|
|
@@ -26663,10 +26628,10 @@ function PushingStep({ stepNumber, totalSteps, progress }) {
|
|
|
26663
26628
|
] })
|
|
26664
26629
|
] }) }),
|
|
26665
26630
|
showCurrent && /* @__PURE__ */ jsxs40(Box39, { gap: 1, children: [
|
|
26666
|
-
/* @__PURE__ */
|
|
26667
|
-
/* @__PURE__ */
|
|
26631
|
+
/* @__PURE__ */ jsx50(Text42, { color: PALETTE.muted, children: "Now processing:" }),
|
|
26632
|
+
/* @__PURE__ */ jsx50(Text42, { children: showCurrent })
|
|
26668
26633
|
] }),
|
|
26669
|
-
/* @__PURE__ */
|
|
26634
|
+
/* @__PURE__ */ jsx50(Box39, { marginTop: 1, children: /* @__PURE__ */ jsxs40(Text42, { color: PALETTE.muted, children: [
|
|
26670
26635
|
"Elapsed: ",
|
|
26671
26636
|
elapsed
|
|
26672
26637
|
] }) })
|
|
@@ -26849,7 +26814,7 @@ function usePreviewConfirmationInput(breakingWithImpact, onConfirm) {
|
|
|
26849
26814
|
}
|
|
26850
26815
|
|
|
26851
26816
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/WizardPreviewStep.tsx
|
|
26852
|
-
import { Fragment as Fragment15, jsx as
|
|
26817
|
+
import { Fragment as Fragment15, jsx as jsx51, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
26853
26818
|
function buildPreviewSummaryLines(preview) {
|
|
26854
26819
|
const lines = [];
|
|
26855
26820
|
const { components, tokens } = preview;
|
|
@@ -27104,9 +27069,9 @@ function WizardPreviewStep({
|
|
|
27104
27069
|
}
|
|
27105
27070
|
});
|
|
27106
27071
|
return /* @__PURE__ */ jsxs41(Box40, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 2, children: [
|
|
27107
|
-
/* @__PURE__ */
|
|
27072
|
+
/* @__PURE__ */ jsx51(StepHeader, { stepNumber, totalSteps, title: "Push to Contentful" }),
|
|
27108
27073
|
hasAnything ? /* @__PURE__ */ jsxs41(Fragment15, { children: [
|
|
27109
|
-
/* @__PURE__ */
|
|
27074
|
+
/* @__PURE__ */ jsx51(Text43, { children: "Here's what will happen in your space:" }),
|
|
27110
27075
|
/* @__PURE__ */ jsxs41(
|
|
27111
27076
|
WindowedPanel,
|
|
27112
27077
|
{
|
|
@@ -27115,24 +27080,24 @@ function WizardPreviewStep({
|
|
|
27115
27080
|
title: diffExpanded ? `Diff (${diffLines.length} lines)` : "",
|
|
27116
27081
|
focused: false,
|
|
27117
27082
|
children: [
|
|
27118
|
-
activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */
|
|
27119
|
-
/* @__PURE__ */
|
|
27083
|
+
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)),
|
|
27084
|
+
/* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, wrap: "truncate-end", children: formatPreviewScrollIndicator(activeLines.length, boundedScrollOffset, viewportHeight) })
|
|
27120
27085
|
]
|
|
27121
27086
|
}
|
|
27122
27087
|
)
|
|
27123
|
-
] }) : /* @__PURE__ */
|
|
27124
|
-
breakingWithImpact && /* @__PURE__ */
|
|
27125
|
-
/* @__PURE__ */
|
|
27088
|
+
] }) : /* @__PURE__ */ jsx51(Text43, { color: PALETTE.muted, children: "Nothing to push \u2014 everything is already up to date." }),
|
|
27089
|
+
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." }) }),
|
|
27090
|
+
/* @__PURE__ */ jsx51(SpaceEnvironment, { spaceId, environmentId }),
|
|
27126
27091
|
/* @__PURE__ */ jsxs41(Box40, { gap: 3, marginTop: 1, children: [
|
|
27127
|
-
/* @__PURE__ */
|
|
27092
|
+
/* @__PURE__ */ jsx51(Text43, { children: "[Enter] Push to Contentful" }),
|
|
27128
27093
|
/* @__PURE__ */ jsxs41(Text43, { children: [
|
|
27129
27094
|
"[d] ",
|
|
27130
27095
|
diffExpanded ? "Hide" : "Show",
|
|
27131
27096
|
" diff"
|
|
27132
27097
|
] }),
|
|
27133
|
-
diffExpanded && /* @__PURE__ */
|
|
27134
|
-
onEdit && /* @__PURE__ */
|
|
27135
|
-
/* @__PURE__ */
|
|
27098
|
+
diffExpanded && /* @__PURE__ */ jsx51(Text43, { children: "[\u2191\u2193] Scroll [f/b] Page" }),
|
|
27099
|
+
onEdit && /* @__PURE__ */ jsx51(Text43, { children: "[e] Edit definitions" }),
|
|
27100
|
+
/* @__PURE__ */ jsx51(Text43, { children: "[q] Cancel" })
|
|
27136
27101
|
] })
|
|
27137
27102
|
] });
|
|
27138
27103
|
}
|
|
@@ -27144,7 +27109,7 @@ function buildRunTeaserLine(runId) {
|
|
|
27144
27109
|
}
|
|
27145
27110
|
|
|
27146
27111
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/screen.tsx
|
|
27147
|
-
import { jsx as
|
|
27112
|
+
import { jsx as jsx52, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
27148
27113
|
function totalStepsFor(state2) {
|
|
27149
27114
|
const hasTokenStage = !!state2.tokensPath || !!state2.rawTokensPath;
|
|
27150
27115
|
return 3 + (hasTokenStage ? 1 : 0) + 2 + (state2.mapTokensEligible === true ? 1 : 0);
|
|
@@ -27165,7 +27130,7 @@ function FlowScreen({
|
|
|
27165
27130
|
const content = (() => {
|
|
27166
27131
|
switch (state2.step) {
|
|
27167
27132
|
case "final-review":
|
|
27168
|
-
return /* @__PURE__ */
|
|
27133
|
+
return /* @__PURE__ */ jsx52(
|
|
27169
27134
|
GenerateReviewStep,
|
|
27170
27135
|
{
|
|
27171
27136
|
extractSessionId: state2.extractSessionId,
|
|
@@ -27182,7 +27147,7 @@ function FlowScreen({
|
|
|
27182
27147
|
}
|
|
27183
27148
|
);
|
|
27184
27149
|
case "previewing":
|
|
27185
|
-
return /* @__PURE__ */
|
|
27150
|
+
return /* @__PURE__ */ jsx52(
|
|
27186
27151
|
RunningStep,
|
|
27187
27152
|
{
|
|
27188
27153
|
stepNumber: totalSteps,
|
|
@@ -27193,7 +27158,7 @@ function FlowScreen({
|
|
|
27193
27158
|
);
|
|
27194
27159
|
case "preview-gate":
|
|
27195
27160
|
if (!state2.serverPreview) return null;
|
|
27196
|
-
return /* @__PURE__ */
|
|
27161
|
+
return /* @__PURE__ */ jsx52(
|
|
27197
27162
|
WizardPreviewStep,
|
|
27198
27163
|
{
|
|
27199
27164
|
preview: state2.serverPreview,
|
|
@@ -27207,9 +27172,9 @@ function FlowScreen({
|
|
|
27207
27172
|
}
|
|
27208
27173
|
);
|
|
27209
27174
|
case "pushing":
|
|
27210
|
-
return /* @__PURE__ */
|
|
27175
|
+
return /* @__PURE__ */ jsx52(PushingStep, { stepNumber: totalSteps, totalSteps, progress: state2.pushProgress });
|
|
27211
27176
|
case "path-prompt":
|
|
27212
|
-
return /* @__PURE__ */
|
|
27177
|
+
return /* @__PURE__ */ jsx52(
|
|
27213
27178
|
PathPrompt,
|
|
27214
27179
|
{
|
|
27215
27180
|
defaultPath: state2.outDir,
|
|
@@ -27218,7 +27183,7 @@ function FlowScreen({
|
|
|
27218
27183
|
}
|
|
27219
27184
|
);
|
|
27220
27185
|
case "printing":
|
|
27221
|
-
return /* @__PURE__ */
|
|
27186
|
+
return /* @__PURE__ */ jsx52(
|
|
27222
27187
|
RunningStep,
|
|
27223
27188
|
{
|
|
27224
27189
|
stepNumber: totalSteps,
|
|
@@ -27229,7 +27194,7 @@ function FlowScreen({
|
|
|
27229
27194
|
);
|
|
27230
27195
|
case "print-gate": {
|
|
27231
27196
|
const teaser = buildRunTeaserLine(state2.lastRunId);
|
|
27232
|
-
return /* @__PURE__ */
|
|
27197
|
+
return /* @__PURE__ */ jsx52(
|
|
27233
27198
|
GateStep,
|
|
27234
27199
|
{
|
|
27235
27200
|
message: "Files saved",
|
|
@@ -27243,7 +27208,7 @@ function FlowScreen({
|
|
|
27243
27208
|
}
|
|
27244
27209
|
case "done": {
|
|
27245
27210
|
const totalFailed = state2.pushResult.componentTypes.failed + state2.pushResult.designTokens.failed;
|
|
27246
|
-
return /* @__PURE__ */
|
|
27211
|
+
return /* @__PURE__ */ jsx52(
|
|
27247
27212
|
DoneStep,
|
|
27248
27213
|
{
|
|
27249
27214
|
componentTypes: state2.pushResult.componentTypes,
|
|
@@ -27258,7 +27223,7 @@ function FlowScreen({
|
|
|
27258
27223
|
);
|
|
27259
27224
|
}
|
|
27260
27225
|
case "preview-validation-error":
|
|
27261
|
-
return /* @__PURE__ */
|
|
27226
|
+
return /* @__PURE__ */ jsx52(
|
|
27262
27227
|
PreviewValidationErrorScreen,
|
|
27263
27228
|
{
|
|
27264
27229
|
errors: state2.previewValidationErrors,
|
|
@@ -27269,7 +27234,7 @@ function FlowScreen({
|
|
|
27269
27234
|
}
|
|
27270
27235
|
);
|
|
27271
27236
|
case "error":
|
|
27272
|
-
return /* @__PURE__ */
|
|
27237
|
+
return /* @__PURE__ */ jsx52(
|
|
27273
27238
|
ErrorStep,
|
|
27274
27239
|
{
|
|
27275
27240
|
stepName: state2.errorStep,
|
|
@@ -27281,13 +27246,13 @@ function FlowScreen({
|
|
|
27281
27246
|
}
|
|
27282
27247
|
})();
|
|
27283
27248
|
return /* @__PURE__ */ jsxs42(Box41, { flexDirection: "column", children: [
|
|
27284
|
-
/* @__PURE__ */
|
|
27249
|
+
/* @__PURE__ */ jsx52(CustomPromptBanner, { generatePromptPath }),
|
|
27285
27250
|
content
|
|
27286
27251
|
] });
|
|
27287
27252
|
}
|
|
27288
27253
|
|
|
27289
27254
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/use-flow.ts
|
|
27290
|
-
import { useEffect as useEffect20, useRef as
|
|
27255
|
+
import { useEffect as useEffect20, useRef as useRef12, useSyncExternalStore } from "react";
|
|
27291
27256
|
|
|
27292
27257
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/controller.ts
|
|
27293
27258
|
import { appendFileSync, writeFileSync } from "node:fs";
|
|
@@ -28024,7 +27989,7 @@ function createFlowController(start, deps) {
|
|
|
28024
27989
|
|
|
28025
27990
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/use-flow.ts
|
|
28026
27991
|
function useFlow(start, options = {}) {
|
|
28027
|
-
const controller =
|
|
27992
|
+
const controller = useRef12();
|
|
28028
27993
|
if (start && !controller.current) {
|
|
28029
27994
|
try {
|
|
28030
27995
|
startWizardLog();
|
|
@@ -28049,7 +28014,7 @@ function useFlow(start, options = {}) {
|
|
|
28049
28014
|
|
|
28050
28015
|
// packages/experience-design-system-cli/src/tui/help/PageContainer.tsx
|
|
28051
28016
|
import { useEffect as useEffect21, useState as useState27 } from "react";
|
|
28052
|
-
import { Box as Box42, Text as Text44, useInput as
|
|
28017
|
+
import { Box as Box42, Text as Text44, useInput as useInput9 } from "ink";
|
|
28053
28018
|
init_debug_store();
|
|
28054
28019
|
|
|
28055
28020
|
// packages/experience-design-system-cli/src/tui/help/help-info.ts
|
|
@@ -28110,13 +28075,13 @@ async function readHelpInfo() {
|
|
|
28110
28075
|
}
|
|
28111
28076
|
|
|
28112
28077
|
// packages/experience-design-system-cli/src/tui/help/PageContainer.tsx
|
|
28113
|
-
import { Fragment as Fragment16, jsx as
|
|
28078
|
+
import { Fragment as Fragment16, jsx as jsx53, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
28114
28079
|
function Section({ title, rows }) {
|
|
28115
28080
|
return /* @__PURE__ */ jsxs43(Box42, { flexDirection: "column", children: [
|
|
28116
|
-
/* @__PURE__ */
|
|
28081
|
+
/* @__PURE__ */ jsx53(Text44, { bold: true, color: PALETTE.accent, children: title }),
|
|
28117
28082
|
rows.map((row) => /* @__PURE__ */ jsxs43(Box42, { gap: 1, children: [
|
|
28118
|
-
/* @__PURE__ */
|
|
28119
|
-
/* @__PURE__ */
|
|
28083
|
+
/* @__PURE__ */ jsx53(Box42, { width: 16, flexShrink: 0, children: /* @__PURE__ */ jsx53(Text44, { color: PALETTE.muted, children: row.label }) }),
|
|
28084
|
+
/* @__PURE__ */ jsx53(Text44, { children: row.value })
|
|
28120
28085
|
] }, row.label))
|
|
28121
28086
|
] });
|
|
28122
28087
|
}
|
|
@@ -28130,7 +28095,7 @@ function HelpScreen({ onDone }) {
|
|
|
28130
28095
|
void finishDebugRun({ outputs: {}, status: "success", exitMethod });
|
|
28131
28096
|
onDone();
|
|
28132
28097
|
};
|
|
28133
|
-
|
|
28098
|
+
useInput9((input, key) => {
|
|
28134
28099
|
if (key.return) {
|
|
28135
28100
|
leave("saved");
|
|
28136
28101
|
return;
|
|
@@ -28141,13 +28106,13 @@ function HelpScreen({ onDone }) {
|
|
|
28141
28106
|
}
|
|
28142
28107
|
});
|
|
28143
28108
|
return /* @__PURE__ */ jsxs43(Box42, { flexDirection: "column", paddingX: 2, paddingY: 1, gap: 1, children: [
|
|
28144
|
-
/* @__PURE__ */
|
|
28109
|
+
/* @__PURE__ */ jsx53(Text44, { bold: true, children: "Help" }),
|
|
28145
28110
|
info ? /* @__PURE__ */ jsxs43(Fragment16, { children: [
|
|
28146
|
-
/* @__PURE__ */
|
|
28147
|
-
/* @__PURE__ */
|
|
28148
|
-
/* @__PURE__ */
|
|
28149
|
-
] }) : /* @__PURE__ */
|
|
28150
|
-
/* @__PURE__ */
|
|
28111
|
+
/* @__PURE__ */ jsx53(Section, { title: "Where things are stored", rows: info.storage }),
|
|
28112
|
+
/* @__PURE__ */ jsx53(Section, { title: "Troubleshooting", rows: info.troubleshooting }),
|
|
28113
|
+
/* @__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." })
|
|
28114
|
+
] }) : /* @__PURE__ */ jsx53(Text44, { color: PALETTE.accent, children: "Loading..." }),
|
|
28115
|
+
/* @__PURE__ */ jsx53(
|
|
28151
28116
|
ControlHints,
|
|
28152
28117
|
{
|
|
28153
28118
|
hints: [
|
|
@@ -28161,8 +28126,8 @@ function HelpScreen({ onDone }) {
|
|
|
28161
28126
|
|
|
28162
28127
|
// packages/experience-design-system-cli/src/tui/settings/PageContainer.tsx
|
|
28163
28128
|
import { useState as useState28 } from "react";
|
|
28164
|
-
import { Box as Box43, Text as Text45, useInput as
|
|
28165
|
-
import { jsx as
|
|
28129
|
+
import { Box as Box43, Text as Text45, useInput as useInput10 } from "ink";
|
|
28130
|
+
import { jsx as jsx54, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
28166
28131
|
function SettingsScreen({
|
|
28167
28132
|
onNavigate,
|
|
28168
28133
|
onBack
|
|
@@ -28173,7 +28138,7 @@ function SettingsScreen({
|
|
|
28173
28138
|
{ label: "Opt-in Analytics", screen: "settings-opt-in-analytics" },
|
|
28174
28139
|
{ label: "Debug Mode", screen: "settings-debug-mode" }
|
|
28175
28140
|
];
|
|
28176
|
-
|
|
28141
|
+
useInput10((input, key) => {
|
|
28177
28142
|
if (key.upArrow) {
|
|
28178
28143
|
setFocusIdx((i) => (i - 1 + items.length) % items.length);
|
|
28179
28144
|
return;
|
|
@@ -28194,14 +28159,14 @@ function SettingsScreen({
|
|
|
28194
28159
|
}
|
|
28195
28160
|
});
|
|
28196
28161
|
return /* @__PURE__ */ jsxs44(Box43, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
28197
|
-
/* @__PURE__ */
|
|
28198
|
-
/* @__PURE__ */
|
|
28162
|
+
/* @__PURE__ */ jsx54(Text45, { bold: true, children: "Settings" }),
|
|
28163
|
+
/* @__PURE__ */ jsx54(Text45, { color: PALETTE.muted, children: " " }),
|
|
28199
28164
|
items.map((item, i) => /* @__PURE__ */ jsxs44(Text45, { color: i === focusIdx ? PALETTE.accent : void 0, children: [
|
|
28200
28165
|
i === focusIdx ? "> " : " ",
|
|
28201
28166
|
item.label
|
|
28202
28167
|
] }, item.label)),
|
|
28203
|
-
/* @__PURE__ */
|
|
28204
|
-
/* @__PURE__ */
|
|
28168
|
+
/* @__PURE__ */ jsx54(Text45, { children: " " }),
|
|
28169
|
+
/* @__PURE__ */ jsx54(
|
|
28205
28170
|
ControlHints,
|
|
28206
28171
|
{
|
|
28207
28172
|
hints: [
|
|
@@ -28216,11 +28181,11 @@ function SettingsScreen({
|
|
|
28216
28181
|
|
|
28217
28182
|
// packages/experience-design-system-cli/src/tui/settings/configuration/ConfigurationScreen.tsx
|
|
28218
28183
|
import { useState as useState33 } from "react";
|
|
28219
|
-
import { Box as Box48, Text as Text51, useInput as
|
|
28184
|
+
import { Box as Box48, Text as Text51, useInput as useInput14 } from "ink";
|
|
28220
28185
|
|
|
28221
28186
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentsScreen.tsx
|
|
28222
|
-
import { useEffect as useEffect23, useRef as
|
|
28223
|
-
import { Box as Box46, Text as Text49, useInput as
|
|
28187
|
+
import { useEffect as useEffect23, useRef as useRef13, useState as useState31 } from "react";
|
|
28188
|
+
import { Box as Box46, Text as Text49, useInput as useInput12 } from "ink";
|
|
28224
28189
|
init_debug_store();
|
|
28225
28190
|
|
|
28226
28191
|
// packages/experience-design-system-cli/src/tui/settings/shared/debug-trail.ts
|
|
@@ -28553,8 +28518,9 @@ import { Box as Box45, Text as Text48 } from "ink";
|
|
|
28553
28518
|
|
|
28554
28519
|
// packages/experience-design-system-cli/src/tui/settings/shared/FieldForm.tsx
|
|
28555
28520
|
import { useState as useState29 } from "react";
|
|
28556
|
-
import { Box as Box44, Text as Text46, useInput as
|
|
28557
|
-
import
|
|
28521
|
+
import { Box as Box44, Text as Text46, useInput as useInput11 } from "ink";
|
|
28522
|
+
import TextInput4 from "ink-text-input";
|
|
28523
|
+
import { Fragment as Fragment17, jsx as jsx55, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
28558
28524
|
function formLabelWidth(rows) {
|
|
28559
28525
|
return Math.max(...rows.map((row) => row.label.length));
|
|
28560
28526
|
}
|
|
@@ -28564,8 +28530,8 @@ function FormReadOnlyRow({
|
|
|
28564
28530
|
children
|
|
28565
28531
|
}) {
|
|
28566
28532
|
return /* @__PURE__ */ jsxs45(Box44, { gap: 1, children: [
|
|
28567
|
-
/* @__PURE__ */
|
|
28568
|
-
/* @__PURE__ */
|
|
28533
|
+
/* @__PURE__ */ jsx55(Text46, { children: " " }),
|
|
28534
|
+
/* @__PURE__ */ jsx55(Box44, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: label }) }),
|
|
28569
28535
|
children
|
|
28570
28536
|
] });
|
|
28571
28537
|
}
|
|
@@ -28589,7 +28555,7 @@ function FieldForm({
|
|
|
28589
28555
|
const labelWidth = formLabelWidth([...fields2, ...actions]);
|
|
28590
28556
|
const currentField = active < fields2.length ? fields2[active] : void 0;
|
|
28591
28557
|
const currentAction = currentField ? void 0 : actions[active - fields2.length];
|
|
28592
|
-
|
|
28558
|
+
useInput11((input, key) => {
|
|
28593
28559
|
if (busy) return;
|
|
28594
28560
|
if (editing) {
|
|
28595
28561
|
if (key.escape && currentField) {
|
|
@@ -28606,7 +28572,7 @@ function FieldForm({
|
|
|
28606
28572
|
onSave();
|
|
28607
28573
|
return;
|
|
28608
28574
|
}
|
|
28609
|
-
if (
|
|
28575
|
+
if (input === "c" && currentField) {
|
|
28610
28576
|
onChange(currentField.key, "");
|
|
28611
28577
|
return;
|
|
28612
28578
|
}
|
|
@@ -28627,11 +28593,11 @@ function FieldForm({
|
|
|
28627
28593
|
}
|
|
28628
28594
|
}
|
|
28629
28595
|
});
|
|
28630
|
-
const pointer = (isActive) => /* @__PURE__ */
|
|
28596
|
+
const pointer = (isActive) => /* @__PURE__ */ jsx55(Text46, { color: isActive ? PALETTE.accent : void 0, children: isActive ? "\u276F" : " " });
|
|
28631
28597
|
return /* @__PURE__ */ jsxs45(Box44, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
28632
|
-
/* @__PURE__ */
|
|
28633
|
-
subtitle && /* @__PURE__ */
|
|
28634
|
-
/* @__PURE__ */
|
|
28598
|
+
/* @__PURE__ */ jsx55(Text46, { bold: true, children: title }),
|
|
28599
|
+
subtitle && /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: subtitle }),
|
|
28600
|
+
/* @__PURE__ */ jsx55(Text46, { children: " " }),
|
|
28635
28601
|
/* @__PURE__ */ jsxs45(Box44, { flexDirection: "column", children: [
|
|
28636
28602
|
fields2.map((field, index) => {
|
|
28637
28603
|
const isActive = index === active;
|
|
@@ -28639,34 +28605,34 @@ function FieldForm({
|
|
|
28639
28605
|
const display = field.masked ? "\u2022".repeat(value.length) : value;
|
|
28640
28606
|
return /* @__PURE__ */ jsxs45(Box44, { gap: 1, children: [
|
|
28641
28607
|
pointer(isActive),
|
|
28642
|
-
/* @__PURE__ */
|
|
28643
|
-
isActive && editing ? /* @__PURE__ */
|
|
28644
|
-
|
|
28608
|
+
/* @__PURE__ */ jsx55(Box44, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx55(Text46, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
|
|
28609
|
+
isActive && editing ? /* @__PURE__ */ jsx55(
|
|
28610
|
+
TextInput4,
|
|
28645
28611
|
{
|
|
28646
28612
|
value,
|
|
28647
28613
|
onChange: (next) => onChange(field.key, next),
|
|
28648
28614
|
onSubmit: () => setEditing(false),
|
|
28649
28615
|
mask: field.masked ? "\u2022" : void 0
|
|
28650
28616
|
}
|
|
28651
|
-
) : display ? /* @__PURE__ */
|
|
28617
|
+
) : display ? /* @__PURE__ */ jsx55(Text46, { bold: true, children: display }) : (
|
|
28652
28618
|
// An empty value shows its hint (or "(empty)") in the value's place, not after an empty element, so the
|
|
28653
28619
|
// text starts in the same column as every other row's.
|
|
28654
|
-
/* @__PURE__ */
|
|
28620
|
+
/* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: field.hint ?? "(empty)" })
|
|
28655
28621
|
),
|
|
28656
|
-
display && field.hint && /* @__PURE__ */
|
|
28622
|
+
display && field.hint && /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: field.hint })
|
|
28657
28623
|
] }, field.key);
|
|
28658
28624
|
}),
|
|
28659
28625
|
actions.map((action, index) => {
|
|
28660
28626
|
const isActive = fields2.length + index === active;
|
|
28661
28627
|
return /* @__PURE__ */ jsxs45(Box44, { gap: 1, children: [
|
|
28662
28628
|
pointer(isActive),
|
|
28663
|
-
/* @__PURE__ */
|
|
28664
|
-
/* @__PURE__ */
|
|
28629
|
+
/* @__PURE__ */ jsx55(Box44, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx55(Text46, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: action.label }) }),
|
|
28630
|
+
/* @__PURE__ */ jsx55(Text46, { color: action.running ? PALETTE.accent : PALETTE.muted, children: action.running ? action.runningText ?? "running..." : action.description })
|
|
28665
28631
|
] }, action.label);
|
|
28666
28632
|
})
|
|
28667
28633
|
] }),
|
|
28668
28634
|
notice && /* @__PURE__ */ jsxs45(Fragment17, { children: [
|
|
28669
|
-
/* @__PURE__ */
|
|
28635
|
+
/* @__PURE__ */ jsx55(Text46, { children: " " }),
|
|
28670
28636
|
/* @__PURE__ */ jsxs45(Text46, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
28671
28637
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
28672
28638
|
" ",
|
|
@@ -28674,20 +28640,19 @@ function FieldForm({
|
|
|
28674
28640
|
] })
|
|
28675
28641
|
] }),
|
|
28676
28642
|
children,
|
|
28677
|
-
/* @__PURE__ */
|
|
28678
|
-
/* @__PURE__ */
|
|
28643
|
+
/* @__PURE__ */ jsx55(Text46, { children: " " }),
|
|
28644
|
+
/* @__PURE__ */ jsx55(
|
|
28679
28645
|
ControlHints,
|
|
28680
28646
|
{
|
|
28681
28647
|
hints: editing ? [
|
|
28682
28648
|
{ keys: "type", label: "edit" },
|
|
28683
28649
|
{ keys: "\u2190/\u2192", label: "move cursor" },
|
|
28684
28650
|
{ keys: "\u23CE", label: "done" },
|
|
28685
|
-
{ keys: "Ctrl+D", label: "clear" },
|
|
28686
28651
|
{ keys: "Esc", label: "cancel edit" }
|
|
28687
28652
|
] : [
|
|
28688
28653
|
{ keys: "\u2191/\u2193", label: "move" },
|
|
28689
28654
|
{ keys: "\u23CE", label: currentAction ? currentAction.hint : "edit" },
|
|
28690
|
-
...currentField ? [{ keys: "
|
|
28655
|
+
...currentField ? [{ keys: "c", label: "clear" }] : [],
|
|
28691
28656
|
{ keys: "s", label: "save" },
|
|
28692
28657
|
{ keys: "Esc/q", label: "back without saving" }
|
|
28693
28658
|
]
|
|
@@ -28698,7 +28663,7 @@ function FieldForm({
|
|
|
28698
28663
|
|
|
28699
28664
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentStatusBadge.tsx
|
|
28700
28665
|
import { Text as Text47 } from "ink";
|
|
28701
|
-
import { jsx as
|
|
28666
|
+
import { jsx as jsx56 } from "react/jsx-runtime";
|
|
28702
28667
|
var TONE_COLOR = {
|
|
28703
28668
|
ok: PALETTE.success,
|
|
28704
28669
|
bad: PALETTE.error,
|
|
@@ -28710,7 +28675,7 @@ function AgentStatusBadge({
|
|
|
28710
28675
|
binary
|
|
28711
28676
|
}) {
|
|
28712
28677
|
const { symbol, text, tone } = LIST_STATUS[checks ? statusFromChecks(name, checks, binary) : "checking"];
|
|
28713
|
-
return /* @__PURE__ */
|
|
28678
|
+
return /* @__PURE__ */ jsx56(Text47, { color: TONE_COLOR[tone], children: `${symbol} ${text}` });
|
|
28714
28679
|
}
|
|
28715
28680
|
|
|
28716
28681
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/apply-binary-overrides.ts
|
|
@@ -28732,7 +28697,7 @@ function applyBinaryOverrides(config) {
|
|
|
28732
28697
|
}
|
|
28733
28698
|
|
|
28734
28699
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentDetail.tsx
|
|
28735
|
-
import { jsx as
|
|
28700
|
+
import { jsx as jsx57, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
28736
28701
|
var fields = (name) => [
|
|
28737
28702
|
{ key: "binary", label: "Command path", hint: `(empty: \`${AGENT_BINARIES[name]}\` from the PATH)` },
|
|
28738
28703
|
{ key: "model", label: "Model", hint: `(empty: ${defaultModelLabel(name)})` }
|
|
@@ -28740,8 +28705,8 @@ var fields = (name) => [
|
|
|
28740
28705
|
var INSPECT_DELAY_MS = 400;
|
|
28741
28706
|
function StatusHeading() {
|
|
28742
28707
|
return /* @__PURE__ */ jsxs46(Box45, { gap: 1, children: [
|
|
28743
|
-
/* @__PURE__ */
|
|
28744
|
-
/* @__PURE__ */
|
|
28708
|
+
/* @__PURE__ */ jsx57(Text48, { bold: true, color: PALETTE.muted, children: "STATUS" }),
|
|
28709
|
+
/* @__PURE__ */ jsx57(Text48, { color: PALETTE.muted, children: "\xB7 read only" })
|
|
28745
28710
|
] });
|
|
28746
28711
|
}
|
|
28747
28712
|
function AgentDetail({
|
|
@@ -28804,7 +28769,7 @@ function AgentDetail({
|
|
|
28804
28769
|
};
|
|
28805
28770
|
const formFields = fields(name);
|
|
28806
28771
|
const labelWidth = formLabelWidth([...formFields, action]);
|
|
28807
|
-
return /* @__PURE__ */
|
|
28772
|
+
return /* @__PURE__ */ jsx57(
|
|
28808
28773
|
FieldForm,
|
|
28809
28774
|
{
|
|
28810
28775
|
title: AGENT_LABELS[name],
|
|
@@ -28822,15 +28787,15 @@ function AgentDetail({
|
|
|
28822
28787
|
notice: testing ? null : notice,
|
|
28823
28788
|
busy: saving || testing,
|
|
28824
28789
|
children: /* @__PURE__ */ jsxs46(Box45, { flexDirection: "column", marginTop: 1, children: [
|
|
28825
|
-
/* @__PURE__ */
|
|
28826
|
-
statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */
|
|
28790
|
+
/* @__PURE__ */ jsx57(StatusHeading, {}),
|
|
28791
|
+
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))
|
|
28827
28792
|
] })
|
|
28828
28793
|
}
|
|
28829
28794
|
);
|
|
28830
28795
|
}
|
|
28831
28796
|
|
|
28832
28797
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentsScreen.tsx
|
|
28833
|
-
import { Fragment as Fragment18, jsx as
|
|
28798
|
+
import { Fragment as Fragment18, jsx as jsx58, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
28834
28799
|
var NAME_WIDTH = 16;
|
|
28835
28800
|
var PANEL_LABEL_WIDTH = "Command".length;
|
|
28836
28801
|
function AgentsScreen({ onDone }) {
|
|
@@ -28841,7 +28806,7 @@ function AgentsScreen({ onDone }) {
|
|
|
28841
28806
|
const [saving, setSaving] = useState31(false);
|
|
28842
28807
|
const [loadError, setLoadError] = useState31(null);
|
|
28843
28808
|
const [checks, setChecks] = useState31({});
|
|
28844
|
-
const visit =
|
|
28809
|
+
const visit = useRef13({
|
|
28845
28810
|
trail: createTrail(),
|
|
28846
28811
|
before: void 0,
|
|
28847
28812
|
environment: void 0,
|
|
@@ -28908,7 +28873,7 @@ function AgentsScreen({ onDone }) {
|
|
|
28908
28873
|
setNotice({ kind: "error", text: `Default agent not changed: ${visit.error}` });
|
|
28909
28874
|
}).finally(() => setSaving(false));
|
|
28910
28875
|
};
|
|
28911
|
-
|
|
28876
|
+
useInput12((input, key) => {
|
|
28912
28877
|
if (loadError && (key.escape || input === "q")) {
|
|
28913
28878
|
endVisit(null);
|
|
28914
28879
|
onDone();
|
|
@@ -28941,20 +28906,20 @@ function AgentsScreen({ onDone }) {
|
|
|
28941
28906
|
});
|
|
28942
28907
|
if (!config) {
|
|
28943
28908
|
return /* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
28944
|
-
/* @__PURE__ */
|
|
28945
|
-
/* @__PURE__ */
|
|
28909
|
+
/* @__PURE__ */ jsx58(Text49, { bold: true, children: "Agents" }),
|
|
28910
|
+
/* @__PURE__ */ jsx58(Text49, { children: " " }),
|
|
28946
28911
|
loadError ? /* @__PURE__ */ jsxs47(Fragment18, { children: [
|
|
28947
28912
|
/* @__PURE__ */ jsxs47(Text49, { color: PALETTE.error, children: [
|
|
28948
28913
|
"\u2717 Could not read the settings: ",
|
|
28949
28914
|
loadError
|
|
28950
28915
|
] }),
|
|
28951
|
-
/* @__PURE__ */
|
|
28952
|
-
/* @__PURE__ */
|
|
28953
|
-
] }) : /* @__PURE__ */
|
|
28916
|
+
/* @__PURE__ */ jsx58(Text49, { children: " " }),
|
|
28917
|
+
/* @__PURE__ */ jsx58(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
|
|
28918
|
+
] }) : /* @__PURE__ */ jsx58(Text49, { color: PALETTE.accent, children: "Loading..." })
|
|
28954
28919
|
] });
|
|
28955
28920
|
}
|
|
28956
28921
|
if (open) {
|
|
28957
|
-
return /* @__PURE__ */
|
|
28922
|
+
return /* @__PURE__ */ jsx58(
|
|
28958
28923
|
AgentDetail,
|
|
28959
28924
|
{
|
|
28960
28925
|
name: open,
|
|
@@ -28976,46 +28941,46 @@ function AgentsScreen({ onDone }) {
|
|
|
28976
28941
|
}
|
|
28977
28942
|
const focusedAgent = AGENT_NAMES[focus];
|
|
28978
28943
|
return /* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
28979
|
-
/* @__PURE__ */
|
|
28980
|
-
/* @__PURE__ */
|
|
28981
|
-
/* @__PURE__ */
|
|
28944
|
+
/* @__PURE__ */ jsx58(Text49, { bold: true, children: "Agents" }),
|
|
28945
|
+
/* @__PURE__ */ jsx58(Text49, { color: PALETTE.muted, children: "The coding agent the CLI runs, and what was found for each one." }),
|
|
28946
|
+
/* @__PURE__ */ jsx58(Text49, { children: " " }),
|
|
28982
28947
|
/* @__PURE__ */ jsxs47(Box46, { gap: 1, children: [
|
|
28983
|
-
/* @__PURE__ */
|
|
28984
|
-
/* @__PURE__ */
|
|
28985
|
-
saving && /* @__PURE__ */
|
|
28948
|
+
/* @__PURE__ */ jsx58(Text49, { color: PALETTE.muted, children: "Default agent" }),
|
|
28949
|
+
/* @__PURE__ */ jsx58(Text49, { bold: true, children: AGENT_LABELS[config.defaultAgent] }),
|
|
28950
|
+
saving && /* @__PURE__ */ jsx58(Text49, { color: PALETTE.accent, children: "\u2026 saving" })
|
|
28986
28951
|
] }),
|
|
28987
28952
|
/* @__PURE__ */ jsxs47(Box46, { marginTop: 1, gap: 1, children: [
|
|
28988
|
-
/* @__PURE__ */
|
|
28989
|
-
/* @__PURE__ */
|
|
28990
|
-
/* @__PURE__ */
|
|
28991
|
-
/* @__PURE__ */
|
|
28953
|
+
/* @__PURE__ */ jsx58(Text49, { children: " " }),
|
|
28954
|
+
/* @__PURE__ */ jsx58(Text49, { children: " " }),
|
|
28955
|
+
/* @__PURE__ */ jsx58(Box46, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx58(Text49, { color: PALETTE.muted, children: "AGENT" }) }),
|
|
28956
|
+
/* @__PURE__ */ jsx58(Text49, { color: PALETTE.muted, children: "STATUS" })
|
|
28992
28957
|
] }),
|
|
28993
28958
|
AGENT_NAMES.map((name) => {
|
|
28994
28959
|
const isFocused = focusedAgent === name;
|
|
28995
28960
|
return /* @__PURE__ */ jsxs47(Box46, { gap: 1, children: [
|
|
28996
|
-
/* @__PURE__ */
|
|
28997
|
-
/* @__PURE__ */
|
|
28998
|
-
/* @__PURE__ */
|
|
28999
|
-
/* @__PURE__ */
|
|
28961
|
+
/* @__PURE__ */ jsx58(Text49, { color: isFocused ? PALETTE.accent : void 0, children: isFocused ? "\u276F" : " " }),
|
|
28962
|
+
/* @__PURE__ */ jsx58(Text49, { color: PALETTE.success, children: name === config.defaultAgent ? "\u2605" : " " }),
|
|
28963
|
+
/* @__PURE__ */ jsx58(Box46, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx58(Text49, { bold: isFocused, color: isFocused ? PALETTE.accent : void 0, children: AGENT_LABELS[name] }) }),
|
|
28964
|
+
/* @__PURE__ */ jsx58(AgentStatusBadge, { name, checks: checks[name], binary: config.agents[name].binary })
|
|
29000
28965
|
] }, name);
|
|
29001
28966
|
}),
|
|
29002
28967
|
/* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", marginTop: 1, children: [
|
|
29003
|
-
/* @__PURE__ */
|
|
28968
|
+
/* @__PURE__ */ jsx58(Text49, { color: PALETTE.muted, children: `\u2500 ${AGENT_LABELS[focusedAgent]} ${"\u2500".repeat(30)}` }),
|
|
29004
28969
|
panelRows(focusedAgent, checks[focusedAgent], config.agents[focusedAgent]).map((row) => /* @__PURE__ */ jsxs47(Box46, { gap: 1, paddingLeft: 1, children: [
|
|
29005
|
-
/* @__PURE__ */
|
|
29006
|
-
/* @__PURE__ */
|
|
28970
|
+
/* @__PURE__ */ jsx58(Box46, { width: PANEL_LABEL_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx58(Text49, { color: PALETTE.muted, children: row.label }) }),
|
|
28971
|
+
/* @__PURE__ */ jsx58(Text49, { color: TONE_COLOR[row.tone], children: row.value })
|
|
29007
28972
|
] }, row.label))
|
|
29008
28973
|
] }),
|
|
29009
28974
|
notice && /* @__PURE__ */ jsxs47(Fragment18, { children: [
|
|
29010
|
-
/* @__PURE__ */
|
|
28975
|
+
/* @__PURE__ */ jsx58(Text49, { children: " " }),
|
|
29011
28976
|
/* @__PURE__ */ jsxs47(Text49, { bold: true, color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
29012
28977
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
29013
28978
|
" ",
|
|
29014
28979
|
notice.text
|
|
29015
28980
|
] })
|
|
29016
28981
|
] }),
|
|
29017
|
-
/* @__PURE__ */
|
|
29018
|
-
/* @__PURE__ */
|
|
28982
|
+
/* @__PURE__ */ jsx58(Text49, { children: " " }),
|
|
28983
|
+
/* @__PURE__ */ jsx58(
|
|
29019
28984
|
ControlHints,
|
|
29020
28985
|
{
|
|
29021
28986
|
hints: [
|
|
@@ -29030,8 +28995,8 @@ function AgentsScreen({ onDone }) {
|
|
|
29030
28995
|
}
|
|
29031
28996
|
|
|
29032
28997
|
// packages/experience-design-system-cli/src/tui/settings/configuration/project/ProjectScreen.tsx
|
|
29033
|
-
import { useEffect as useEffect24, useRef as
|
|
29034
|
-
import { Box as Box47, Text as Text50, useInput as
|
|
28998
|
+
import { useEffect as useEffect24, useRef as useRef14, useState as useState32 } from "react";
|
|
28999
|
+
import { Box as Box47, Text as Text50, useInput as useInput13 } from "ink";
|
|
29035
29000
|
init_debug_store();
|
|
29036
29001
|
|
|
29037
29002
|
// packages/experience-design-system-cli/src/tui/settings/configuration/project/project-store.ts
|
|
@@ -29060,7 +29025,7 @@ async function writeCredentials(config) {
|
|
|
29060
29025
|
}
|
|
29061
29026
|
|
|
29062
29027
|
// packages/experience-design-system-cli/src/tui/settings/configuration/project/ProjectScreen.tsx
|
|
29063
|
-
import { Fragment as Fragment19, jsx as
|
|
29028
|
+
import { Fragment as Fragment19, jsx as jsx59, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
29064
29029
|
var FIELDS2 = [
|
|
29065
29030
|
{ key: "spaceId", label: "Space ID" },
|
|
29066
29031
|
{ key: "environmentId", label: "Environment ID" },
|
|
@@ -29088,7 +29053,7 @@ function ProjectScreen({ onDone }) {
|
|
|
29088
29053
|
const [saving, setSaving] = useState32(false);
|
|
29089
29054
|
const [notice, setNotice] = useState32(null);
|
|
29090
29055
|
const [loadError, setLoadError] = useState32(null);
|
|
29091
|
-
const visit =
|
|
29056
|
+
const visit = useRef14({
|
|
29092
29057
|
trail: createTrail(),
|
|
29093
29058
|
before: void 0,
|
|
29094
29059
|
persisted: void 0,
|
|
@@ -29133,7 +29098,7 @@ function ProjectScreen({ onDone }) {
|
|
|
29133
29098
|
exitMethod: change.changed ? "saved" : "discarded"
|
|
29134
29099
|
});
|
|
29135
29100
|
};
|
|
29136
|
-
|
|
29101
|
+
useInput13((input, key) => {
|
|
29137
29102
|
if (!config && loadError && (key.escape || input === "q")) {
|
|
29138
29103
|
endVisit(null);
|
|
29139
29104
|
onDone();
|
|
@@ -29141,16 +29106,16 @@ function ProjectScreen({ onDone }) {
|
|
|
29141
29106
|
});
|
|
29142
29107
|
if (!config) {
|
|
29143
29108
|
return /* @__PURE__ */ jsxs48(Box47, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
29144
|
-
/* @__PURE__ */
|
|
29145
|
-
/* @__PURE__ */
|
|
29109
|
+
/* @__PURE__ */ jsx59(Text50, { bold: true, children: "Project" }),
|
|
29110
|
+
/* @__PURE__ */ jsx59(Text50, { children: " " }),
|
|
29146
29111
|
loadError ? /* @__PURE__ */ jsxs48(Fragment19, { children: [
|
|
29147
29112
|
/* @__PURE__ */ jsxs48(Text50, { color: PALETTE.error, children: [
|
|
29148
29113
|
"\u2717 Could not read the settings: ",
|
|
29149
29114
|
loadError
|
|
29150
29115
|
] }),
|
|
29151
|
-
/* @__PURE__ */
|
|
29152
|
-
/* @__PURE__ */
|
|
29153
|
-
] }) : /* @__PURE__ */
|
|
29116
|
+
/* @__PURE__ */ jsx59(Text50, { children: " " }),
|
|
29117
|
+
/* @__PURE__ */ jsx59(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
|
|
29118
|
+
] }) : /* @__PURE__ */ jsx59(Text50, { color: PALETTE.accent, children: "Loading..." })
|
|
29154
29119
|
] });
|
|
29155
29120
|
}
|
|
29156
29121
|
const save = () => {
|
|
@@ -29171,7 +29136,7 @@ function ProjectScreen({ onDone }) {
|
|
|
29171
29136
|
endVisit(config);
|
|
29172
29137
|
onDone();
|
|
29173
29138
|
};
|
|
29174
|
-
return /* @__PURE__ */
|
|
29139
|
+
return /* @__PURE__ */ jsx59(
|
|
29175
29140
|
FieldForm,
|
|
29176
29141
|
{
|
|
29177
29142
|
title: "Project",
|
|
@@ -29192,7 +29157,7 @@ function ProjectScreen({ onDone }) {
|
|
|
29192
29157
|
}
|
|
29193
29158
|
|
|
29194
29159
|
// packages/experience-design-system-cli/src/tui/settings/configuration/ConfigurationScreen.tsx
|
|
29195
|
-
import { jsx as
|
|
29160
|
+
import { jsx as jsx60, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
29196
29161
|
var SECTIONS = [
|
|
29197
29162
|
{
|
|
29198
29163
|
id: "project",
|
|
@@ -29205,7 +29170,7 @@ function ConfigurationScreen({ onDone }) {
|
|
|
29205
29170
|
const [focus, setFocus] = useState33(0);
|
|
29206
29171
|
const [open, setOpen] = useState33(null);
|
|
29207
29172
|
const close = () => setOpen(null);
|
|
29208
|
-
|
|
29173
|
+
useInput14((input, key) => {
|
|
29209
29174
|
if (open) return;
|
|
29210
29175
|
if (key.upArrow) {
|
|
29211
29176
|
setFocus((i) => (i - 1 + SECTIONS.length) % SECTIONS.length);
|
|
@@ -29221,18 +29186,18 @@ function ConfigurationScreen({ onDone }) {
|
|
|
29221
29186
|
}
|
|
29222
29187
|
if (key.escape || input === "q") onDone();
|
|
29223
29188
|
});
|
|
29224
|
-
if (open === "project") return /* @__PURE__ */
|
|
29225
|
-
if (open === "agents") return /* @__PURE__ */
|
|
29189
|
+
if (open === "project") return /* @__PURE__ */ jsx60(ProjectScreen, { onDone: close });
|
|
29190
|
+
if (open === "agents") return /* @__PURE__ */ jsx60(AgentsScreen, { onDone: close });
|
|
29226
29191
|
return /* @__PURE__ */ jsxs49(Box48, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
29227
|
-
/* @__PURE__ */
|
|
29228
|
-
/* @__PURE__ */
|
|
29192
|
+
/* @__PURE__ */ jsx60(Text51, { bold: true, children: "Configuration" }),
|
|
29193
|
+
/* @__PURE__ */ jsx60(Text51, { children: " " }),
|
|
29229
29194
|
SECTIONS.map((section, index) => /* @__PURE__ */ jsxs49(Box48, { gap: 1, children: [
|
|
29230
|
-
/* @__PURE__ */
|
|
29231
|
-
/* @__PURE__ */
|
|
29232
|
-
/* @__PURE__ */
|
|
29195
|
+
/* @__PURE__ */ jsx60(Text51, { color: index === focus ? PALETTE.accent : void 0, children: index === focus ? "\u276F" : " " }),
|
|
29196
|
+
/* @__PURE__ */ jsx60(Box48, { width: 9, flexShrink: 0, children: /* @__PURE__ */ jsx60(Text51, { bold: index === focus, color: index === focus ? PALETTE.accent : void 0, children: section.label }) }),
|
|
29197
|
+
/* @__PURE__ */ jsx60(Text51, { color: PALETTE.muted, children: section.description })
|
|
29233
29198
|
] }, section.id)),
|
|
29234
|
-
/* @__PURE__ */
|
|
29235
|
-
/* @__PURE__ */
|
|
29199
|
+
/* @__PURE__ */ jsx60(Text51, { children: " " }),
|
|
29200
|
+
/* @__PURE__ */ jsx60(
|
|
29236
29201
|
ControlHints,
|
|
29237
29202
|
{
|
|
29238
29203
|
hints: [
|
|
@@ -29247,7 +29212,7 @@ function ConfigurationScreen({ onDone }) {
|
|
|
29247
29212
|
|
|
29248
29213
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx
|
|
29249
29214
|
import { useEffect as useEffect25, useState as useState34 } from "react";
|
|
29250
|
-
import { Box as Box49, Text as Text52, useInput as
|
|
29215
|
+
import { Box as Box49, Text as Text52, useInput as useInput15 } from "ink";
|
|
29251
29216
|
|
|
29252
29217
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/analytics-store.ts
|
|
29253
29218
|
async function readAnalyticsSetting() {
|
|
@@ -29266,7 +29231,7 @@ async function writeAnalyticsSetting(setting) {
|
|
|
29266
29231
|
|
|
29267
29232
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx
|
|
29268
29233
|
init_debug_store();
|
|
29269
|
-
import { Fragment as Fragment20, jsx as
|
|
29234
|
+
import { Fragment as Fragment20, jsx as jsx61, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
29270
29235
|
function OptInAnalyticsScreen({ onDone }) {
|
|
29271
29236
|
const [loading, setLoading] = useState34(true);
|
|
29272
29237
|
const [enabled, setEnabled] = useState34(true);
|
|
@@ -29282,7 +29247,7 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
29282
29247
|
});
|
|
29283
29248
|
});
|
|
29284
29249
|
}, []);
|
|
29285
|
-
|
|
29250
|
+
useInput15((input, key) => {
|
|
29286
29251
|
if (loading) return;
|
|
29287
29252
|
if (key.return || input === " ") {
|
|
29288
29253
|
setEnabled((current) => {
|
|
@@ -29298,20 +29263,20 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
29298
29263
|
}
|
|
29299
29264
|
});
|
|
29300
29265
|
return /* @__PURE__ */ jsxs50(Box49, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
29301
|
-
/* @__PURE__ */
|
|
29302
|
-
/* @__PURE__ */
|
|
29303
|
-
loading ? /* @__PURE__ */
|
|
29266
|
+
/* @__PURE__ */ jsx61(Text52, { bold: true, children: "Settings \u203A Opt-in Analytics" }),
|
|
29267
|
+
/* @__PURE__ */ jsx61(Text52, { children: " " }),
|
|
29268
|
+
loading ? /* @__PURE__ */ jsx61(Text52, { color: PALETTE.muted, children: "Loading\u2026" }) : /* @__PURE__ */ jsxs50(Fragment20, { children: [
|
|
29304
29269
|
/* @__PURE__ */ jsxs50(Text52, { children: [
|
|
29305
29270
|
"Share anonymous usage data:",
|
|
29306
29271
|
" ",
|
|
29307
|
-
/* @__PURE__ */
|
|
29272
|
+
/* @__PURE__ */ jsx61(Text52, { bold: true, color: enabled ? PALETTE.success : PALETTE.muted, children: enabled ? "On" : "Off" })
|
|
29308
29273
|
] }),
|
|
29309
|
-
/* @__PURE__ */
|
|
29310
|
-
/* @__PURE__ */
|
|
29311
|
-
/* @__PURE__ */
|
|
29274
|
+
/* @__PURE__ */ jsx61(Text52, { children: " " }),
|
|
29275
|
+
/* @__PURE__ */ jsx61(Text52, { color: PALETTE.muted, children: "Shares which CLI commands are used and where imports succeed or fail." }),
|
|
29276
|
+
/* @__PURE__ */ jsx61(Text52, { color: PALETTE.muted, children: "Never includes source code, file paths, credentials, or authored content." })
|
|
29312
29277
|
] }),
|
|
29313
|
-
/* @__PURE__ */
|
|
29314
|
-
/* @__PURE__ */
|
|
29278
|
+
/* @__PURE__ */ jsx61(Text52, { children: " " }),
|
|
29279
|
+
/* @__PURE__ */ jsx61(
|
|
29315
29280
|
ControlHints,
|
|
29316
29281
|
{
|
|
29317
29282
|
hints: [
|
|
@@ -29324,11 +29289,11 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
29324
29289
|
}
|
|
29325
29290
|
|
|
29326
29291
|
// packages/experience-design-system-cli/src/tui/settings/debug-mode/screen.tsx
|
|
29327
|
-
import { useEffect as useEffect26, useRef as
|
|
29328
|
-
import { Box as Box50, Text as Text53, useInput as
|
|
29292
|
+
import { useEffect as useEffect26, useRef as useRef15, useState as useState35 } from "react";
|
|
29293
|
+
import { Box as Box50, Text as Text53, useInput as useInput16 } from "ink";
|
|
29329
29294
|
init_debug_mode_store();
|
|
29330
29295
|
init_debug_store();
|
|
29331
|
-
import { Fragment as Fragment21, jsx as
|
|
29296
|
+
import { Fragment as Fragment21, jsx as jsx62, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
29332
29297
|
var ROWS = ["enabled", "retentionDays"];
|
|
29333
29298
|
var snapshotOf2 = (setting) => ({
|
|
29334
29299
|
enabled: String(setting.enabled),
|
|
@@ -29341,7 +29306,7 @@ function DebugModeScreen({ onDone }) {
|
|
|
29341
29306
|
RETENTION_CHOICES[RETENTION_CHOICES.length - 1]
|
|
29342
29307
|
);
|
|
29343
29308
|
const [notice, setNotice] = useState35(null);
|
|
29344
|
-
const visit =
|
|
29309
|
+
const visit = useRef15({ trail: createTrail(), before: void 0, error: "" }).current;
|
|
29345
29310
|
useEffect26(() => {
|
|
29346
29311
|
readDebugModeSetting().then((loaded) => {
|
|
29347
29312
|
setSetting(loaded);
|
|
@@ -29382,7 +29347,7 @@ function DebugModeScreen({ onDone }) {
|
|
|
29382
29347
|
exitMethod: change.changed ? "saved" : "discarded"
|
|
29383
29348
|
});
|
|
29384
29349
|
};
|
|
29385
|
-
|
|
29350
|
+
useInput16((input, key) => {
|
|
29386
29351
|
if (!setting) return;
|
|
29387
29352
|
if (key.upArrow || key.downArrow) {
|
|
29388
29353
|
setFocus((current) => ROWS[(ROWS.indexOf(current) + (key.downArrow ? 1 : ROWS.length - 1)) % ROWS.length]);
|
|
@@ -29409,16 +29374,16 @@ function DebugModeScreen({ onDone }) {
|
|
|
29409
29374
|
onDone();
|
|
29410
29375
|
}
|
|
29411
29376
|
});
|
|
29412
|
-
const marker = (row) => /* @__PURE__ */
|
|
29413
|
-
const label = (row, text) => /* @__PURE__ */
|
|
29377
|
+
const marker = (row) => /* @__PURE__ */ jsx62(Text53, { color: focus === row ? PALETTE.accent : void 0, children: focus === row ? "\u276F" : " " });
|
|
29378
|
+
const label = (row, text) => /* @__PURE__ */ jsx62(Text53, { bold: focus === row, color: focus === row ? PALETTE.accent : PALETTE.muted, children: text });
|
|
29414
29379
|
return /* @__PURE__ */ jsxs51(Box50, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
29415
|
-
/* @__PURE__ */
|
|
29416
|
-
/* @__PURE__ */
|
|
29380
|
+
/* @__PURE__ */ jsx62(Text53, { bold: true, children: "Settings \u203A Debug Mode" }),
|
|
29381
|
+
/* @__PURE__ */ jsx62(Text53, { children: " " }),
|
|
29417
29382
|
setting ? /* @__PURE__ */ jsxs51(Fragment21, { children: [
|
|
29418
29383
|
/* @__PURE__ */ jsxs51(Box50, { gap: 1, children: [
|
|
29419
29384
|
marker("enabled"),
|
|
29420
29385
|
label("enabled", "Debug logging:"),
|
|
29421
|
-
/* @__PURE__ */
|
|
29386
|
+
/* @__PURE__ */ jsx62(Text53, { bold: true, color: setting.enabled ? PALETTE.success : PALETTE.muted, children: setting.enabled ? "On" : "Off" })
|
|
29422
29387
|
] }),
|
|
29423
29388
|
/* @__PURE__ */ jsxs51(Box50, { gap: 1, children: [
|
|
29424
29389
|
marker("retentionDays"),
|
|
@@ -29426,7 +29391,7 @@ function DebugModeScreen({ onDone }) {
|
|
|
29426
29391
|
RETENTION_CHOICES.map((days) => {
|
|
29427
29392
|
const highlighted = focus === "retentionDays" && days === pending;
|
|
29428
29393
|
const saved = days === setting.retentionDays;
|
|
29429
|
-
return /* @__PURE__ */
|
|
29394
|
+
return /* @__PURE__ */ jsx62(
|
|
29430
29395
|
Text53,
|
|
29431
29396
|
{
|
|
29432
29397
|
bold: highlighted || saved,
|
|
@@ -29438,15 +29403,15 @@ function DebugModeScreen({ onDone }) {
|
|
|
29438
29403
|
);
|
|
29439
29404
|
})
|
|
29440
29405
|
] }),
|
|
29441
|
-
/* @__PURE__ */
|
|
29406
|
+
/* @__PURE__ */ jsx62(Text53, { children: " " }),
|
|
29442
29407
|
notice ? /* @__PURE__ */ jsxs51(Text53, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
29443
29408
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
29444
29409
|
" ",
|
|
29445
29410
|
notice.text
|
|
29446
|
-
] }) : /* @__PURE__ */
|
|
29447
|
-
] }) : /* @__PURE__ */
|
|
29448
|
-
/* @__PURE__ */
|
|
29449
|
-
/* @__PURE__ */
|
|
29411
|
+
] }) : /* @__PURE__ */ jsx62(Text53, { color: PALETTE.muted, children: "\u2713 marks what is saved. Older logs are deleted the next time the CLI starts." })
|
|
29412
|
+
] }) : /* @__PURE__ */ jsx62(Text53, { color: PALETTE.muted, children: "Loading\u2026" }),
|
|
29413
|
+
/* @__PURE__ */ jsx62(Text53, { children: " " }),
|
|
29414
|
+
/* @__PURE__ */ jsx62(
|
|
29450
29415
|
ControlHints,
|
|
29451
29416
|
{
|
|
29452
29417
|
hints: [
|
|
@@ -29463,7 +29428,7 @@ function DebugModeScreen({ onDone }) {
|
|
|
29463
29428
|
}
|
|
29464
29429
|
|
|
29465
29430
|
// packages/experience-design-system-cli/app.tsx
|
|
29466
|
-
import { Fragment as Fragment22, jsx as
|
|
29431
|
+
import { Fragment as Fragment22, jsx as jsx63 } from "react/jsx-runtime";
|
|
29467
29432
|
function App({ importOptions, inkClear }) {
|
|
29468
29433
|
const [screen, setScreen] = useState36("start");
|
|
29469
29434
|
const [importExitCode, setImportExitCode] = useState36();
|
|
@@ -29620,9 +29585,9 @@ function App({ importOptions, inkClear }) {
|
|
|
29620
29585
|
};
|
|
29621
29586
|
switch (screen) {
|
|
29622
29587
|
case "import":
|
|
29623
|
-
if (showImportResult) return /* @__PURE__ */
|
|
29588
|
+
if (showImportResult) return /* @__PURE__ */ jsx63(ImportScreen, { exitCode: importExitCode, onDone: finishImportResult });
|
|
29624
29589
|
if (flow && flowStart) {
|
|
29625
|
-
return /* @__PURE__ */
|
|
29590
|
+
return /* @__PURE__ */ jsx63(
|
|
29626
29591
|
FlowScreen,
|
|
29627
29592
|
{
|
|
29628
29593
|
state: flow.state,
|
|
@@ -29632,12 +29597,12 @@ function App({ importOptions, inkClear }) {
|
|
|
29632
29597
|
}
|
|
29633
29598
|
);
|
|
29634
29599
|
}
|
|
29635
|
-
if (importDefaults === void 0) return /* @__PURE__ */
|
|
29600
|
+
if (importDefaults === void 0) return /* @__PURE__ */ jsx63(Fragment22, {});
|
|
29636
29601
|
if (projectPath === void 0) {
|
|
29637
|
-
return /* @__PURE__ */
|
|
29602
|
+
return /* @__PURE__ */ jsx63(WelcomeScreen, { onContinue: setProjectPath, onQuit: leaveImport, initialPath: importDefaults.componentDir });
|
|
29638
29603
|
}
|
|
29639
29604
|
if (tokensPath === void 0) {
|
|
29640
|
-
return /* @__PURE__ */
|
|
29605
|
+
return /* @__PURE__ */ jsx63(
|
|
29641
29606
|
TokenInputScreen,
|
|
29642
29607
|
{
|
|
29643
29608
|
initialPath: importDefaults.tokenFile,
|
|
@@ -29647,7 +29612,7 @@ function App({ importOptions, inkClear }) {
|
|
|
29647
29612
|
);
|
|
29648
29613
|
}
|
|
29649
29614
|
if (scannedFiles === void 0) {
|
|
29650
|
-
return /* @__PURE__ */
|
|
29615
|
+
return /* @__PURE__ */ jsx63(
|
|
29651
29616
|
PathValidationScreen,
|
|
29652
29617
|
{
|
|
29653
29618
|
projectPath,
|
|
@@ -29659,10 +29624,10 @@ function App({ importOptions, inkClear }) {
|
|
|
29659
29624
|
}
|
|
29660
29625
|
if (extractionRun) {
|
|
29661
29626
|
if (extraction?.status === "done" && !extraction.result.ok) {
|
|
29662
|
-
return /* @__PURE__ */
|
|
29627
|
+
return /* @__PURE__ */ jsx63(ErrorStep, { stepName: extraction.result.step, message: extraction.result.message, onExit: leaveImport });
|
|
29663
29628
|
}
|
|
29664
29629
|
if (extraction?.status === "running") {
|
|
29665
|
-
return /* @__PURE__ */
|
|
29630
|
+
return /* @__PURE__ */ jsx63(
|
|
29666
29631
|
ExtractionScreen,
|
|
29667
29632
|
{
|
|
29668
29633
|
progress: extraction.progress,
|
|
@@ -29671,14 +29636,14 @@ function App({ importOptions, inkClear }) {
|
|
|
29671
29636
|
}
|
|
29672
29637
|
);
|
|
29673
29638
|
}
|
|
29674
|
-
return /* @__PURE__ */
|
|
29639
|
+
return /* @__PURE__ */ jsx63(Fragment22, {});
|
|
29675
29640
|
}
|
|
29676
29641
|
if (scopeRun && scopeFlow) {
|
|
29677
29642
|
if (scopeFlow.status === "failed") {
|
|
29678
|
-
return /* @__PURE__ */
|
|
29643
|
+
return /* @__PURE__ */ jsx63(ErrorStep, { stepName: "scope gate", message: scopeFlow.message, onExit: leaveImport });
|
|
29679
29644
|
}
|
|
29680
29645
|
if (scopeFlow.status === "deciding") {
|
|
29681
|
-
return /* @__PURE__ */
|
|
29646
|
+
return /* @__PURE__ */ jsx63(
|
|
29682
29647
|
ScopeGateScreen,
|
|
29683
29648
|
{
|
|
29684
29649
|
components: scopeFlow.load.components,
|
|
@@ -29688,7 +29653,7 @@ function App({ importOptions, inkClear }) {
|
|
|
29688
29653
|
);
|
|
29689
29654
|
}
|
|
29690
29655
|
if (generation?.status === "done" && !generation.result.ok) {
|
|
29691
|
-
return /* @__PURE__ */
|
|
29656
|
+
return /* @__PURE__ */ jsx63(ErrorStep, { stepName: generation.result.step, message: generation.result.message, onExit: leaveImport });
|
|
29692
29657
|
}
|
|
29693
29658
|
if (generation?.status === "running") {
|
|
29694
29659
|
const hasRawTokens = scopeRun.input.rawTokensPath !== "";
|
|
@@ -29696,7 +29661,7 @@ function App({ importOptions, inkClear }) {
|
|
|
29696
29661
|
hasRawTokens,
|
|
29697
29662
|
mapTokensEligible: generation.progress.mapTokensEligible
|
|
29698
29663
|
});
|
|
29699
|
-
return /* @__PURE__ */
|
|
29664
|
+
return /* @__PURE__ */ jsx63(
|
|
29700
29665
|
GenerationScreen,
|
|
29701
29666
|
{
|
|
29702
29667
|
progress: generation.progress,
|
|
@@ -29708,10 +29673,10 @@ function App({ importOptions, inkClear }) {
|
|
|
29708
29673
|
}
|
|
29709
29674
|
);
|
|
29710
29675
|
}
|
|
29711
|
-
return /* @__PURE__ */
|
|
29676
|
+
return /* @__PURE__ */ jsx63(Fragment22, {});
|
|
29712
29677
|
}
|
|
29713
29678
|
if (pendingLaunch?.cached) {
|
|
29714
|
-
return /* @__PURE__ */
|
|
29679
|
+
return /* @__PURE__ */ jsx63(
|
|
29715
29680
|
TokenReuseScreen,
|
|
29716
29681
|
{
|
|
29717
29682
|
tokensPath: pendingLaunch.cached.tokensPath,
|
|
@@ -29722,7 +29687,7 @@ function App({ importOptions, inkClear }) {
|
|
|
29722
29687
|
}
|
|
29723
29688
|
);
|
|
29724
29689
|
}
|
|
29725
|
-
return /* @__PURE__ */
|
|
29690
|
+
return /* @__PURE__ */ jsx63(
|
|
29726
29691
|
CredentialsScreen,
|
|
29727
29692
|
{
|
|
29728
29693
|
initial: importDefaults.credentials,
|
|
@@ -29731,17 +29696,17 @@ function App({ importOptions, inkClear }) {
|
|
|
29731
29696
|
}
|
|
29732
29697
|
);
|
|
29733
29698
|
case "help":
|
|
29734
|
-
return /* @__PURE__ */
|
|
29699
|
+
return /* @__PURE__ */ jsx63(HelpScreen, { onDone: goToStart });
|
|
29735
29700
|
case "settings":
|
|
29736
|
-
return /* @__PURE__ */
|
|
29701
|
+
return /* @__PURE__ */ jsx63(SettingsScreen, { onNavigate: setScreen, onBack: goToStart });
|
|
29737
29702
|
case "settings-configuration":
|
|
29738
|
-
return /* @__PURE__ */
|
|
29703
|
+
return /* @__PURE__ */ jsx63(ConfigurationScreen, { onDone: goToSettings });
|
|
29739
29704
|
case "settings-opt-in-analytics":
|
|
29740
|
-
return /* @__PURE__ */
|
|
29705
|
+
return /* @__PURE__ */ jsx63(OptInAnalyticsScreen, { onDone: goToSettings });
|
|
29741
29706
|
case "settings-debug-mode":
|
|
29742
|
-
return /* @__PURE__ */
|
|
29707
|
+
return /* @__PURE__ */ jsx63(DebugModeScreen, { onDone: goToSettings });
|
|
29743
29708
|
case "start":
|
|
29744
|
-
return /* @__PURE__ */
|
|
29709
|
+
return /* @__PURE__ */ jsx63(HomeScreen, { onNavigate: setScreen });
|
|
29745
29710
|
}
|
|
29746
29711
|
}
|
|
29747
29712
|
async function runApp(renderApp, importOptions) {
|
|
@@ -29749,7 +29714,7 @@ async function runApp(renderApp, importOptions) {
|
|
|
29749
29714
|
instance.clear?.();
|
|
29750
29715
|
process.stdout.write("\x1B[H\x1B[0J");
|
|
29751
29716
|
};
|
|
29752
|
-
const instance = renderApp(/* @__PURE__ */
|
|
29717
|
+
const instance = renderApp(/* @__PURE__ */ jsx63(App, { importOptions, inkClear }));
|
|
29753
29718
|
await instance.waitUntilExit();
|
|
29754
29719
|
}
|
|
29755
29720
|
export {
|