@contentful/experience-design-system-cli 2.37.1-dev-build-8f86e838.0 → 2.37.1-dev-build-7e007460.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 +1190 -1173
- package/dist/index.js +1626 -1598
- package/dist/package.json +1 -1
- package/dist/src/tui/import/shared/index.d.ts +1 -0
- package/dist/src/tui/import/shared/overview-box/overview-box.d.ts +10 -0
- package/dist/src/tui/import/steps/00-preflight/logic.d.ts +5 -0
- package/dist/src/tui/import/steps/02-token-input/screen.d.ts +4 -1
- package/package.json +3 -3
package/dist/app.js
CHANGED
|
@@ -2623,6 +2623,11 @@ var IMPORT_TARGET_OPTIONS = [
|
|
|
2623
2623
|
{ target: "tokens", label: "Tokens only" },
|
|
2624
2624
|
{ target: "components", label: "Components only" }
|
|
2625
2625
|
];
|
|
2626
|
+
var TOKENS_ONLY_OVERVIEW = [
|
|
2627
|
+
{ description: "Generate design tokens from your token file", ai: true },
|
|
2628
|
+
{ description: "Push to Contentful", ai: false }
|
|
2629
|
+
];
|
|
2630
|
+
var TOKENS_ONLY_STEP_COUNT = TOKENS_ONLY_OVERVIEW.length;
|
|
2626
2631
|
var STEPS = {
|
|
2627
2632
|
both: [
|
|
2628
2633
|
"project",
|
|
@@ -2729,8 +2734,8 @@ function PreflightScreen({ onChoose, onQuit }) {
|
|
|
2729
2734
|
}
|
|
2730
2735
|
|
|
2731
2736
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx
|
|
2732
|
-
import { useState as
|
|
2733
|
-
import { Box as
|
|
2737
|
+
import { useState as useState5 } from "react";
|
|
2738
|
+
import { Box as Box8, Text as Text9 } from "ink";
|
|
2734
2739
|
|
|
2735
2740
|
// packages/experience-design-system-cli/src/tui/ClearableTextInput.tsx
|
|
2736
2741
|
import { useRef } from "react";
|
|
@@ -2761,9 +2766,264 @@ function ClearableTextInput({ onChange, ...props }) {
|
|
|
2761
2766
|
);
|
|
2762
2767
|
}
|
|
2763
2768
|
|
|
2764
|
-
// packages/experience-design-system-cli/src/tui/import/
|
|
2769
|
+
// packages/experience-design-system-cli/src/tui/import/shared/error-step/error-step.tsx
|
|
2770
|
+
import { Box as Box4, Text as Text5 } from "ink";
|
|
2771
|
+
|
|
2772
|
+
// packages/experience-design-system-cli/src/tui/import/shared/error-step/controls.ts
|
|
2765
2773
|
import { useInput as useInput5 } from "ink";
|
|
2766
2774
|
|
|
2775
|
+
// packages/experience-design-system-cli/src/tui/import/shared/error-step/logic.ts
|
|
2776
|
+
function errorAction(input, key, available) {
|
|
2777
|
+
if (key.return && available.canAcknowledge) return "acknowledge";
|
|
2778
|
+
if (input === "r" && available.canRetry) return "retry";
|
|
2779
|
+
if (key.return || key.escape) return "exit";
|
|
2780
|
+
return null;
|
|
2781
|
+
}
|
|
2782
|
+
function errorControls(available) {
|
|
2783
|
+
return [
|
|
2784
|
+
available.canAcknowledge ? { keys: "Enter", label: "Acknowledge and apply" } : { keys: "Enter", label: "Exit" },
|
|
2785
|
+
...available.canAcknowledge ? [{ keys: "Esc", label: "Exit" }] : [],
|
|
2786
|
+
...available.canRetry ? [{ keys: "r", label: "Re-enter credentials" }] : []
|
|
2787
|
+
];
|
|
2788
|
+
}
|
|
2789
|
+
|
|
2790
|
+
// packages/experience-design-system-cli/src/tui/import/shared/error-step/controls.ts
|
|
2791
|
+
function useErrorControls(handlers) {
|
|
2792
|
+
useInput5((input, key) => {
|
|
2793
|
+
const action = errorAction(input, key, {
|
|
2794
|
+
canRetry: handlers.onRetry !== void 0,
|
|
2795
|
+
canAcknowledge: handlers.onAcknowledge !== void 0
|
|
2796
|
+
});
|
|
2797
|
+
if (action === "acknowledge") handlers.onAcknowledge?.();
|
|
2798
|
+
else if (action === "retry") handlers.onRetry?.();
|
|
2799
|
+
else if (action === "exit") handlers.onExit();
|
|
2800
|
+
});
|
|
2801
|
+
}
|
|
2802
|
+
|
|
2803
|
+
// packages/experience-design-system-cli/src/tui/import/shared/error-step/error-step.tsx
|
|
2804
|
+
import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
2805
|
+
function ErrorStep({
|
|
2806
|
+
stepName,
|
|
2807
|
+
message,
|
|
2808
|
+
onExit,
|
|
2809
|
+
onRetryCredentials,
|
|
2810
|
+
onAcknowledgeBreakingChanges
|
|
2811
|
+
}) {
|
|
2812
|
+
useErrorControls({ onExit, onRetry: onRetryCredentials, onAcknowledge: onAcknowledgeBreakingChanges });
|
|
2813
|
+
const controls = errorControls({
|
|
2814
|
+
canRetry: onRetryCredentials !== void 0,
|
|
2815
|
+
canAcknowledge: onAcknowledgeBreakingChanges !== void 0
|
|
2816
|
+
});
|
|
2817
|
+
return /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
2818
|
+
/* @__PURE__ */ jsxs4(Text5, { bold: true, color: PALETTE.error, children: [
|
|
2819
|
+
"\u2717 ",
|
|
2820
|
+
stepName,
|
|
2821
|
+
" failed"
|
|
2822
|
+
] }),
|
|
2823
|
+
/* @__PURE__ */ jsx6(Text5, { color: PALETTE.error, children: message }),
|
|
2824
|
+
/* @__PURE__ */ jsx6(Box4, { marginTop: 1, gap: 3, children: controls.map((control) => /* @__PURE__ */ jsxs4(Text5, { color: PALETTE.muted, children: [
|
|
2825
|
+
"[",
|
|
2826
|
+
control.keys,
|
|
2827
|
+
"] ",
|
|
2828
|
+
control.label
|
|
2829
|
+
] }, control.keys)) })
|
|
2830
|
+
] });
|
|
2831
|
+
}
|
|
2832
|
+
|
|
2833
|
+
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/gate-step.tsx
|
|
2834
|
+
import { Box as Box5, Text as Text6 } from "ink";
|
|
2835
|
+
|
|
2836
|
+
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/controls.ts
|
|
2837
|
+
import { useInput as useInput6 } from "ink";
|
|
2838
|
+
|
|
2839
|
+
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/logic.ts
|
|
2840
|
+
function gateAction(input, key, canSkip) {
|
|
2841
|
+
if (key.return) return "continue";
|
|
2842
|
+
if (input === "a" && canSkip) return "skip";
|
|
2843
|
+
if (key.escape) return "quit";
|
|
2844
|
+
return null;
|
|
2845
|
+
}
|
|
2846
|
+
function gateControls(continueLabel, skipLabel2, canSkip) {
|
|
2847
|
+
return [
|
|
2848
|
+
{ keys: "Enter", label: continueLabel },
|
|
2849
|
+
...canSkip ? [{ keys: "a", label: skipLabel2 }] : [],
|
|
2850
|
+
{ keys: "Esc", label: "Quit" }
|
|
2851
|
+
];
|
|
2852
|
+
}
|
|
2853
|
+
|
|
2854
|
+
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/controls.ts
|
|
2855
|
+
function useGateControls(handlers) {
|
|
2856
|
+
useInput6((input, key) => {
|
|
2857
|
+
const action = gateAction(input, key, handlers.canSkip);
|
|
2858
|
+
if (action === "continue") handlers.onContinue();
|
|
2859
|
+
else if (action === "skip") handlers.onSkip();
|
|
2860
|
+
else if (action === "quit") handlers.onQuit();
|
|
2861
|
+
});
|
|
2862
|
+
}
|
|
2863
|
+
|
|
2864
|
+
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/gate-step.tsx
|
|
2865
|
+
import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
2866
|
+
function GateStep({
|
|
2867
|
+
message,
|
|
2868
|
+
onContinue,
|
|
2869
|
+
onQuit,
|
|
2870
|
+
summary,
|
|
2871
|
+
context,
|
|
2872
|
+
continueLabel = "Continue",
|
|
2873
|
+
skipLabel: skipLabel2 = "Approve all and skip",
|
|
2874
|
+
onSkip,
|
|
2875
|
+
intent = "success"
|
|
2876
|
+
}) {
|
|
2877
|
+
useGateControls({ canSkip: onSkip !== void 0, onContinue, onSkip: onSkip ?? (() => {
|
|
2878
|
+
}), onQuit });
|
|
2879
|
+
const color = intent === "error" ? PALETTE.error : PALETTE.success;
|
|
2880
|
+
const icon = intent === "error" ? "\u2717" : "\u2713";
|
|
2881
|
+
return /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
2882
|
+
/* @__PURE__ */ jsxs5(Text6, { color, children: [
|
|
2883
|
+
icon,
|
|
2884
|
+
" ",
|
|
2885
|
+
message
|
|
2886
|
+
] }),
|
|
2887
|
+
summary && /* @__PURE__ */ jsx7(Text6, { color: PALETTE.muted, children: summary }),
|
|
2888
|
+
context && /* @__PURE__ */ jsx7(Box5, { marginTop: 1, children: /* @__PURE__ */ jsx7(Text6, { children: context }) }),
|
|
2889
|
+
/* @__PURE__ */ jsx7(Box5, { marginTop: 1, gap: 3, children: gateControls(continueLabel, skipLabel2, onSkip !== void 0).map((control) => /* @__PURE__ */ jsxs5(Text6, { color: PALETTE.muted, children: [
|
|
2890
|
+
"[",
|
|
2891
|
+
control.keys,
|
|
2892
|
+
"] ",
|
|
2893
|
+
control.label
|
|
2894
|
+
] }, control.keys)) })
|
|
2895
|
+
] });
|
|
2896
|
+
}
|
|
2897
|
+
|
|
2898
|
+
// packages/experience-design-system-cli/src/tui/import/shared/overview-box/overview-box.tsx
|
|
2899
|
+
import { Box as Box6, Text as Text7 } from "ink";
|
|
2900
|
+
import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
2901
|
+
var OVERVIEW_BOX_MAX_WIDTH = 90;
|
|
2902
|
+
var AI_MARKER = "\u273B";
|
|
2903
|
+
var AI_DISCLOSURE = [
|
|
2904
|
+
"Steps marked \u273B use your local AI agent, which may send relevant code to your AI provider under your agreement with them. Contentful does not receive that code, or the prompts and responses. AI suggestions can be wrong or incomplete, so review and edit them before importing."
|
|
2905
|
+
];
|
|
2906
|
+
function OverviewBox({ steps }) {
|
|
2907
|
+
return /* @__PURE__ */ jsx8(Box6, { flexDirection: "row", children: /* @__PURE__ */ jsxs6(
|
|
2908
|
+
Box6,
|
|
2909
|
+
{
|
|
2910
|
+
flexDirection: "column",
|
|
2911
|
+
borderStyle: "round",
|
|
2912
|
+
borderColor: PALETTE.border,
|
|
2913
|
+
paddingX: 2,
|
|
2914
|
+
paddingY: 1,
|
|
2915
|
+
width: OVERVIEW_BOX_MAX_WIDTH,
|
|
2916
|
+
flexShrink: 1,
|
|
2917
|
+
children: [
|
|
2918
|
+
steps.map((step, index) => /* @__PURE__ */ jsxs6(Box6, { gap: 1, children: [
|
|
2919
|
+
/* @__PURE__ */ jsx8(Box6, { flexShrink: 0, children: /* @__PURE__ */ jsxs6(Text7, { bold: true, children: [
|
|
2920
|
+
"Step ",
|
|
2921
|
+
index + 1
|
|
2922
|
+
] }) }),
|
|
2923
|
+
/* @__PURE__ */ jsx8(Text7, { color: PALETTE.muted, wrap: "truncate-end", children: step.description }),
|
|
2924
|
+
step.ai && /* @__PURE__ */ jsx8(Text7, { bold: true, color: PALETTE.accent, children: AI_MARKER })
|
|
2925
|
+
] }, step.description)),
|
|
2926
|
+
/* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", marginTop: 1, children: [
|
|
2927
|
+
/* @__PURE__ */ jsxs6(Text7, { bold: true, children: [
|
|
2928
|
+
/* @__PURE__ */ jsx8(Text7, { color: PALETTE.accent, children: AI_MARKER }),
|
|
2929
|
+
" AI disclosure"
|
|
2930
|
+
] }),
|
|
2931
|
+
AI_DISCLOSURE.map((paragraph) => /* @__PURE__ */ jsx8(Text7, { color: PALETTE.muted, children: paragraph }, paragraph))
|
|
2932
|
+
] })
|
|
2933
|
+
]
|
|
2934
|
+
}
|
|
2935
|
+
) });
|
|
2936
|
+
}
|
|
2937
|
+
|
|
2938
|
+
// packages/experience-design-system-cli/src/tui/import/shared/running-step/running-step.tsx
|
|
2939
|
+
import { Box as Box7, Text as Text8 } from "ink";
|
|
2940
|
+
import { ProgressBar, Spinner, ThemeProvider } from "@inkjs/ui";
|
|
2941
|
+
|
|
2942
|
+
// packages/experience-design-system-cli/src/tui/import/shared/running-step/logic.ts
|
|
2943
|
+
function progressPercent(progress) {
|
|
2944
|
+
if (progress.total <= 0) return 0;
|
|
2945
|
+
return Math.min(100, Math.max(0, Math.round(progress.done / progress.total * 100)));
|
|
2946
|
+
}
|
|
2947
|
+
function formatElapsed(totalSeconds) {
|
|
2948
|
+
const minutes = Math.floor(totalSeconds / 60);
|
|
2949
|
+
const seconds = totalSeconds % 60;
|
|
2950
|
+
return minutes > 0 ? `${minutes}m ${seconds}s` : `${seconds}s`;
|
|
2951
|
+
}
|
|
2952
|
+
function stepLabel(stepNumber, totalSteps, title) {
|
|
2953
|
+
return `Step ${stepNumber} of ${totalSteps} \u2014 ${title}`;
|
|
2954
|
+
}
|
|
2955
|
+
|
|
2956
|
+
// packages/experience-design-system-cli/src/tui/import/shared/running-step/theme.ts
|
|
2957
|
+
import { defaultTheme, extendTheme } from "@inkjs/ui";
|
|
2958
|
+
var PROGRESS_THEME = extendTheme(defaultTheme, {
|
|
2959
|
+
components: {
|
|
2960
|
+
ProgressBar: {
|
|
2961
|
+
styles: {
|
|
2962
|
+
completed: () => ({ color: PALETTE.accent })
|
|
2963
|
+
}
|
|
2964
|
+
}
|
|
2965
|
+
}
|
|
2966
|
+
});
|
|
2967
|
+
|
|
2968
|
+
// packages/experience-design-system-cli/src/tui/import/shared/running-step/use-elapsed.ts
|
|
2969
|
+
import { useEffect as useEffect3, useState as useState4 } from "react";
|
|
2970
|
+
function useElapsed() {
|
|
2971
|
+
const [seconds, setSeconds] = useState4(0);
|
|
2972
|
+
useEffect3(() => {
|
|
2973
|
+
const timer = setInterval(() => setSeconds((current) => current + 1), 1e3);
|
|
2974
|
+
return () => clearInterval(timer);
|
|
2975
|
+
}, []);
|
|
2976
|
+
return formatElapsed(seconds);
|
|
2977
|
+
}
|
|
2978
|
+
|
|
2979
|
+
// packages/experience-design-system-cli/src/tui/import/shared/running-step/running-step.tsx
|
|
2980
|
+
import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2981
|
+
var RULE = "\u2500".repeat(40);
|
|
2982
|
+
function Line({ line }) {
|
|
2983
|
+
if (line.progress) {
|
|
2984
|
+
return /* @__PURE__ */ jsxs7(Box7, { flexDirection: "column", gap: 1, children: [
|
|
2985
|
+
/* @__PURE__ */ jsxs7(Box7, { gap: 2, children: [
|
|
2986
|
+
/* @__PURE__ */ jsx9(Box7, { width: 40, children: /* @__PURE__ */ jsx9(ThemeProvider, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx9(ProgressBar, { value: progressPercent(line.progress) }) }) }),
|
|
2987
|
+
/* @__PURE__ */ jsxs7(Text8, { color: PALETTE.muted, children: [
|
|
2988
|
+
line.progress.done,
|
|
2989
|
+
"/",
|
|
2990
|
+
line.progress.total
|
|
2991
|
+
] })
|
|
2992
|
+
] }),
|
|
2993
|
+
/* @__PURE__ */ jsx9(Text8, { color: PALETTE.muted, children: line.text })
|
|
2994
|
+
] });
|
|
2995
|
+
}
|
|
2996
|
+
return /* @__PURE__ */ jsxs7(Box7, { gap: 1, children: [
|
|
2997
|
+
line.complete ? /* @__PURE__ */ jsx9(Text8, { color: PALETTE.success, children: "\u2713" }) : /* @__PURE__ */ jsx9(Spinner, {}),
|
|
2998
|
+
/* @__PURE__ */ jsx9(Text8, { color: PALETTE.muted, children: line.text })
|
|
2999
|
+
] });
|
|
3000
|
+
}
|
|
3001
|
+
function RunningStep({
|
|
3002
|
+
stepNumber,
|
|
3003
|
+
totalSteps,
|
|
3004
|
+
title,
|
|
3005
|
+
description,
|
|
3006
|
+
lines = [{ text: "Running..." }]
|
|
3007
|
+
}) {
|
|
3008
|
+
const elapsed = useElapsed();
|
|
3009
|
+
return /* @__PURE__ */ jsxs7(Box7, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
3010
|
+
/* @__PURE__ */ jsxs7(Box7, { flexDirection: "column", children: [
|
|
3011
|
+
/* @__PURE__ */ jsx9(Text8, { color: PALETTE.muted, children: RULE }),
|
|
3012
|
+
/* @__PURE__ */ jsx9(Text8, { bold: true, children: stepLabel(stepNumber, totalSteps, title) }),
|
|
3013
|
+
/* @__PURE__ */ jsx9(Text8, { color: PALETTE.muted, children: RULE })
|
|
3014
|
+
] }),
|
|
3015
|
+
/* @__PURE__ */ jsx9(Text8, { children: description }),
|
|
3016
|
+
/* @__PURE__ */ jsx9(Box7, { marginTop: 1, flexDirection: "column", gap: 1, children: lines.map((line, index) => /* @__PURE__ */ jsx9(Line, { line }, index)) }),
|
|
3017
|
+
/* @__PURE__ */ jsx9(Box7, { marginTop: 1, children: /* @__PURE__ */ jsxs7(Text8, { color: PALETTE.muted, children: [
|
|
3018
|
+
"Elapsed: ",
|
|
3019
|
+
elapsed
|
|
3020
|
+
] }) })
|
|
3021
|
+
] });
|
|
3022
|
+
}
|
|
3023
|
+
|
|
3024
|
+
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/controls.ts
|
|
3025
|
+
import { useInput as useInput7 } from "ink";
|
|
3026
|
+
|
|
2767
3027
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/logic.ts
|
|
2768
3028
|
function shouldQuit(key) {
|
|
2769
3029
|
return key.escape;
|
|
@@ -2780,77 +3040,39 @@ var WELCOME_CONTROLS = [
|
|
|
2780
3040
|
{ keys: "Esc", label: "Back" }
|
|
2781
3041
|
];
|
|
2782
3042
|
function useWelcomeControls(onQuit) {
|
|
2783
|
-
|
|
3043
|
+
useInput7((_input, key) => {
|
|
2784
3044
|
if (shouldQuit(key)) onQuit();
|
|
2785
3045
|
});
|
|
2786
3046
|
}
|
|
2787
3047
|
|
|
2788
3048
|
// packages/experience-design-system-cli/src/tui/import/steps/01-welcome/screen.tsx
|
|
2789
|
-
import { jsx as
|
|
2790
|
-
var OVERVIEW_BOX_MAX_WIDTH = 90;
|
|
2791
|
-
var AI_MARKER = "\u273B";
|
|
3049
|
+
import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
2792
3050
|
var OVERVIEW = [
|
|
2793
|
-
{
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
}
|
|
2798
|
-
{ label: "Step 2", description: "Review what was extracted", ai: false },
|
|
2799
|
-
{
|
|
2800
|
-
label: "Step 3",
|
|
2801
|
-
description: "Generate component definitions",
|
|
2802
|
-
ai: true
|
|
2803
|
-
},
|
|
2804
|
-
{ label: "Step 4", description: "Review generated definitions", ai: false },
|
|
2805
|
-
{ label: "Step 5", description: "Push to Contentful", ai: false }
|
|
2806
|
-
];
|
|
2807
|
-
var AI_DISCLOSURE = [
|
|
2808
|
-
"Steps marked \u273B use your local AI agent, which may send relevant code to your AI provider under your agreement with them. Contentful does not receive that code, or the prompts and responses. AI suggestions can be wrong or incomplete, so review and edit them before importing."
|
|
3051
|
+
{ description: "Extract components from your codebase", ai: true },
|
|
3052
|
+
{ description: "Review what was extracted", ai: false },
|
|
3053
|
+
{ description: "Generate component definitions", ai: true },
|
|
3054
|
+
{ description: "Review generated definitions", ai: false },
|
|
3055
|
+
{ description: "Push to Contentful", ai: false }
|
|
2809
3056
|
];
|
|
2810
3057
|
function WelcomeScreen({ onContinue, onQuit, initialPath = "" }) {
|
|
2811
|
-
const [projectPath, setProjectPath] =
|
|
3058
|
+
const [projectPath, setProjectPath] = useState5(initialPath);
|
|
2812
3059
|
useWelcomeControls(onQuit);
|
|
2813
3060
|
const submit = (value) => {
|
|
2814
3061
|
const path5 = toProjectPath(value);
|
|
2815
3062
|
if (path5) onContinue(path5);
|
|
2816
3063
|
};
|
|
2817
|
-
return /* @__PURE__ */
|
|
2818
|
-
/* @__PURE__ */
|
|
2819
|
-
/* @__PURE__ */
|
|
2820
|
-
|
|
2821
|
-
{
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
paddingY: 1,
|
|
2827
|
-
width: OVERVIEW_BOX_MAX_WIDTH,
|
|
2828
|
-
flexShrink: 1,
|
|
2829
|
-
children: [
|
|
2830
|
-
OVERVIEW.map((item) => /* @__PURE__ */ jsxs4(Box4, { gap: 1, children: [
|
|
2831
|
-
/* @__PURE__ */ jsx6(Box4, { flexShrink: 0, children: /* @__PURE__ */ jsx6(Text5, { bold: true, children: item.label }) }),
|
|
2832
|
-
/* @__PURE__ */ jsx6(Text5, { color: PALETTE.muted, wrap: "truncate-end", children: item.description }),
|
|
2833
|
-
item.ai && /* @__PURE__ */ jsx6(Text5, { bold: true, color: PALETTE.accent, children: AI_MARKER })
|
|
2834
|
-
] }, item.label)),
|
|
2835
|
-
/* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", marginTop: 1, children: [
|
|
2836
|
-
/* @__PURE__ */ jsxs4(Text5, { bold: true, children: [
|
|
2837
|
-
/* @__PURE__ */ jsx6(Text5, { color: PALETTE.accent, children: AI_MARKER }),
|
|
2838
|
-
" AI disclosure"
|
|
2839
|
-
] }),
|
|
2840
|
-
AI_DISCLOSURE.map((paragraph) => /* @__PURE__ */ jsx6(Text5, { color: PALETTE.muted, children: paragraph }, paragraph))
|
|
2841
|
-
] })
|
|
2842
|
-
]
|
|
2843
|
-
}
|
|
2844
|
-
) }),
|
|
2845
|
-
/* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", gap: 1, children: [
|
|
2846
|
-
/* @__PURE__ */ jsx6(Text5, { children: "Where is your component library?" }),
|
|
2847
|
-
/* @__PURE__ */ jsxs4(Box4, { children: [
|
|
2848
|
-
/* @__PURE__ */ jsx6(Text5, { color: PALETTE.accent, children: "? " }),
|
|
2849
|
-
/* @__PURE__ */ jsx6(Text5, { children: "Project path: " }),
|
|
2850
|
-
/* @__PURE__ */ jsx6(ClearableTextInput, { value: projectPath, onChange: setProjectPath, onSubmit: submit })
|
|
3064
|
+
return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
3065
|
+
/* @__PURE__ */ jsx10(Text9, { bold: true, color: PALETTE.accent, children: "Let's import your design system into Contentful." }),
|
|
3066
|
+
/* @__PURE__ */ jsx10(OverviewBox, { steps: OVERVIEW }),
|
|
3067
|
+
/* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", gap: 1, children: [
|
|
3068
|
+
/* @__PURE__ */ jsx10(Text9, { children: "Where is your component library?" }),
|
|
3069
|
+
/* @__PURE__ */ jsxs8(Box8, { children: [
|
|
3070
|
+
/* @__PURE__ */ jsx10(Text9, { color: PALETTE.accent, children: "? " }),
|
|
3071
|
+
/* @__PURE__ */ jsx10(Text9, { children: "Project path: " }),
|
|
3072
|
+
/* @__PURE__ */ jsx10(ClearableTextInput, { value: projectPath, onChange: setProjectPath, onSubmit: submit })
|
|
2851
3073
|
] })
|
|
2852
3074
|
] }),
|
|
2853
|
-
/* @__PURE__ */
|
|
3075
|
+
/* @__PURE__ */ jsx10(Box8, { gap: 3, children: WELCOME_CONTROLS.map((control) => /* @__PURE__ */ jsxs8(Text9, { children: [
|
|
2854
3076
|
"[",
|
|
2855
3077
|
control.keys,
|
|
2856
3078
|
"] ",
|
|
@@ -2860,11 +3082,11 @@ function WelcomeScreen({ onContinue, onQuit, initialPath = "" }) {
|
|
|
2860
3082
|
}
|
|
2861
3083
|
|
|
2862
3084
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx
|
|
2863
|
-
import { useState as
|
|
2864
|
-
import { Box as
|
|
3085
|
+
import { useState as useState6 } from "react";
|
|
3086
|
+
import { Box as Box9, Text as Text10 } from "ink";
|
|
2865
3087
|
|
|
2866
3088
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/controls.ts
|
|
2867
|
-
import { useInput as
|
|
3089
|
+
import { useInput as useInput8 } from "ink";
|
|
2868
3090
|
|
|
2869
3091
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/logic.ts
|
|
2870
3092
|
function shouldGoBack(key) {
|
|
@@ -2882,7 +3104,7 @@ var TOKEN_INPUT_CONTROLS = [
|
|
|
2882
3104
|
{ keys: "Esc", label: "Back" }
|
|
2883
3105
|
];
|
|
2884
3106
|
function useTokenInputControls(onBack) {
|
|
2885
|
-
|
|
3107
|
+
useInput8((_input, key) => {
|
|
2886
3108
|
if (shouldGoBack(key)) onBack();
|
|
2887
3109
|
});
|
|
2888
3110
|
}
|
|
@@ -2927,10 +3149,15 @@ function validateTokenPath(rawPath) {
|
|
|
2927
3149
|
}
|
|
2928
3150
|
|
|
2929
3151
|
// packages/experience-design-system-cli/src/tui/import/steps/02-token-input/screen.tsx
|
|
2930
|
-
import { jsx as
|
|
2931
|
-
function TokenInputScreen({
|
|
2932
|
-
|
|
2933
|
-
|
|
3152
|
+
import { Fragment, jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
3153
|
+
function TokenInputScreen({
|
|
3154
|
+
onConfirm,
|
|
3155
|
+
onBack,
|
|
3156
|
+
initialPath = "",
|
|
3157
|
+
overview
|
|
3158
|
+
}) {
|
|
3159
|
+
const [tokenPath, setTokenPath] = useState6(initialPath);
|
|
3160
|
+
const [failure, setFailure] = useState6(null);
|
|
2934
3161
|
useTokenInputControls(onBack);
|
|
2935
3162
|
const change = (value) => {
|
|
2936
3163
|
setTokenPath(value);
|
|
@@ -2946,27 +3173,31 @@ function TokenInputScreen({ onConfirm, onBack, initialPath = "" }) {
|
|
|
2946
3173
|
if (check.ok) onConfirm(check.path);
|
|
2947
3174
|
else setFailure({ error: check.error, resolvedPath: check.resolvedPath });
|
|
2948
3175
|
};
|
|
2949
|
-
return /* @__PURE__ */
|
|
2950
|
-
/* @__PURE__ */
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
3176
|
+
return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
3177
|
+
overview && /* @__PURE__ */ jsxs9(Fragment, { children: [
|
|
3178
|
+
/* @__PURE__ */ jsx11(Text10, { bold: true, color: PALETTE.accent, children: "Let's import your design tokens into Contentful." }),
|
|
3179
|
+
/* @__PURE__ */ jsx11(OverviewBox, { steps: overview })
|
|
3180
|
+
] }),
|
|
3181
|
+
/* @__PURE__ */ jsx11(Text10, { bold: true, children: "Design tokens" }),
|
|
3182
|
+
/* @__PURE__ */ jsx11(Text10, { 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)." }),
|
|
3183
|
+
/* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
|
|
3184
|
+
/* @__PURE__ */ jsxs9(Box9, { gap: 1, children: [
|
|
3185
|
+
/* @__PURE__ */ jsx11(Text10, { color: PALETTE.accent, children: "?" }),
|
|
3186
|
+
/* @__PURE__ */ jsx11(Text10, { children: "Token path:" }),
|
|
3187
|
+
/* @__PURE__ */ jsx11(ClearableTextInput, { value: tokenPath, onChange: change, onSubmit: submit })
|
|
2957
3188
|
] }),
|
|
2958
|
-
failure && /* @__PURE__ */
|
|
2959
|
-
/* @__PURE__ */
|
|
3189
|
+
failure && /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
|
|
3190
|
+
/* @__PURE__ */ jsxs9(Text10, { color: PALETTE.error, children: [
|
|
2960
3191
|
"\u2717 ",
|
|
2961
3192
|
failure.error
|
|
2962
3193
|
] }),
|
|
2963
|
-
failure.resolvedPath && /* @__PURE__ */
|
|
3194
|
+
failure.resolvedPath && /* @__PURE__ */ jsxs9(Text10, { color: PALETTE.muted, children: [
|
|
2964
3195
|
" Resolved to: ",
|
|
2965
3196
|
failure.resolvedPath
|
|
2966
3197
|
] })
|
|
2967
3198
|
] })
|
|
2968
3199
|
] }),
|
|
2969
|
-
/* @__PURE__ */
|
|
3200
|
+
/* @__PURE__ */ jsx11(Box9, { marginTop: 1, gap: 3, children: TOKEN_INPUT_CONTROLS.map((control) => /* @__PURE__ */ jsxs9(Text10, { children: [
|
|
2970
3201
|
"[",
|
|
2971
3202
|
control.keys,
|
|
2972
3203
|
"] ",
|
|
@@ -2976,11 +3207,11 @@ function TokenInputScreen({ onConfirm, onBack, initialPath = "" }) {
|
|
|
2976
3207
|
}
|
|
2977
3208
|
|
|
2978
3209
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/screen.tsx
|
|
2979
|
-
import { useEffect as
|
|
2980
|
-
import { Box as
|
|
3210
|
+
import { useEffect as useEffect4, useMemo, useState as useState7 } from "react";
|
|
3211
|
+
import { Box as Box10, Text as Text11 } from "ink";
|
|
2981
3212
|
|
|
2982
3213
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/controls.ts
|
|
2983
|
-
import { useInput as
|
|
3214
|
+
import { useInput as useInput9 } from "ink";
|
|
2984
3215
|
|
|
2985
3216
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/logic.ts
|
|
2986
3217
|
var COMPONENT_CATEGORIES = ["tsx", "ts", "vue", "astro", "jsx", "js"];
|
|
@@ -3068,7 +3299,7 @@ function controlsFor(phase) {
|
|
|
3068
3299
|
return CONTROLS[phase];
|
|
3069
3300
|
}
|
|
3070
3301
|
function usePathValidationControls(phase, handlers) {
|
|
3071
|
-
|
|
3302
|
+
useInput9((input, key) => {
|
|
3072
3303
|
const action = keyAction(phase, input, key);
|
|
3073
3304
|
if (action === "confirm") handlers.onConfirm();
|
|
3074
3305
|
else if (action === "change-path") handlers.onChangePath();
|
|
@@ -16854,9 +17085,9 @@ function foldSvelteAndMdIntoOther(counts) {
|
|
|
16854
17085
|
}
|
|
16855
17086
|
|
|
16856
17087
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/screen.tsx
|
|
16857
|
-
import { jsx as
|
|
17088
|
+
import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
16858
17089
|
function Row({ row }) {
|
|
16859
|
-
return /* @__PURE__ */
|
|
17090
|
+
return /* @__PURE__ */ jsxs10(Text11, { color: row.tone === "accent" ? PALETTE.accent : row.tone === "muted" ? PALETTE.muted : void 0, children: [
|
|
16860
17091
|
" \u2022 ",
|
|
16861
17092
|
String(row.count).padStart(3),
|
|
16862
17093
|
" ",
|
|
@@ -16865,34 +17096,34 @@ function Row({ row }) {
|
|
|
16865
17096
|
}
|
|
16866
17097
|
function Failure({ scan, path: path5 }) {
|
|
16867
17098
|
const { headline, hints } = describeFailure(scan.failure, path5);
|
|
16868
|
-
return /* @__PURE__ */
|
|
16869
|
-
/* @__PURE__ */
|
|
17099
|
+
return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
|
|
17100
|
+
/* @__PURE__ */ jsxs10(Text11, { color: PALETTE.error, children: [
|
|
16870
17101
|
"\u2717 ",
|
|
16871
17102
|
headline
|
|
16872
17103
|
] }),
|
|
16873
|
-
hints.map((hint) => /* @__PURE__ */
|
|
17104
|
+
hints.map((hint) => /* @__PURE__ */ jsx12(Text11, { color: PALETTE.muted, children: hint }, hint))
|
|
16874
17105
|
] });
|
|
16875
17106
|
}
|
|
16876
17107
|
function Summary({ scan, path: path5 }) {
|
|
16877
17108
|
const { total, rows, warning } = summarize(scan.counts);
|
|
16878
|
-
return /* @__PURE__ */
|
|
16879
|
-
/* @__PURE__ */
|
|
17109
|
+
return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", gap: 1, children: [
|
|
17110
|
+
/* @__PURE__ */ jsxs10(Text11, { children: [
|
|
16880
17111
|
"Scanned ",
|
|
16881
|
-
/* @__PURE__ */
|
|
17112
|
+
/* @__PURE__ */ jsx12(Text11, { bold: true, children: path5 })
|
|
16882
17113
|
] }),
|
|
16883
|
-
/* @__PURE__ */
|
|
16884
|
-
/* @__PURE__ */
|
|
17114
|
+
/* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
|
|
17115
|
+
/* @__PURE__ */ jsxs10(Text11, { color: PALETTE.success, children: [
|
|
16885
17116
|
"\u2713 Found ",
|
|
16886
17117
|
total,
|
|
16887
17118
|
" files:"
|
|
16888
17119
|
] }),
|
|
16889
|
-
rows.map((row) => /* @__PURE__ */
|
|
17120
|
+
rows.map((row) => /* @__PURE__ */ jsx12(Row, { row }, row.label))
|
|
16890
17121
|
] }),
|
|
16891
|
-
warning && /* @__PURE__ */
|
|
17122
|
+
warning && /* @__PURE__ */ jsxs10(Text11, { color: PALETTE.warning, children: [
|
|
16892
17123
|
"\u26A0 ",
|
|
16893
17124
|
warning
|
|
16894
17125
|
] }),
|
|
16895
|
-
/* @__PURE__ */
|
|
17126
|
+
/* @__PURE__ */ jsx12(Text11, { children: "Does this look right?" })
|
|
16896
17127
|
] });
|
|
16897
17128
|
}
|
|
16898
17129
|
function PathValidationScreen({
|
|
@@ -16902,8 +17133,8 @@ function PathValidationScreen({
|
|
|
16902
17133
|
onBack
|
|
16903
17134
|
}) {
|
|
16904
17135
|
const resolvedPath = useMemo(() => resolveUserPath(projectPath), [projectPath]);
|
|
16905
|
-
const [scan, setScan] =
|
|
16906
|
-
|
|
17136
|
+
const [scan, setScan] = useState7();
|
|
17137
|
+
useEffect4(() => {
|
|
16907
17138
|
setScan(scanFiles(resolvedPath));
|
|
16908
17139
|
}, [resolvedPath]);
|
|
16909
17140
|
const phase = phaseOf(scan);
|
|
@@ -16914,15 +17145,15 @@ function PathValidationScreen({
|
|
|
16914
17145
|
onChangePath,
|
|
16915
17146
|
onBack
|
|
16916
17147
|
});
|
|
16917
|
-
return /* @__PURE__ */
|
|
16918
|
-
scan === void 0 && /* @__PURE__ */
|
|
17148
|
+
return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
17149
|
+
scan === void 0 && /* @__PURE__ */ jsxs10(Text11, { color: PALETTE.muted, children: [
|
|
16919
17150
|
"Scanning ",
|
|
16920
|
-
/* @__PURE__ */
|
|
17151
|
+
/* @__PURE__ */ jsx12(Text11, { bold: true, children: resolvedPath }),
|
|
16921
17152
|
"..."
|
|
16922
17153
|
] }),
|
|
16923
|
-
scan?.ok === false && /* @__PURE__ */
|
|
16924
|
-
scan?.ok === true && /* @__PURE__ */
|
|
16925
|
-
/* @__PURE__ */
|
|
17154
|
+
scan?.ok === false && /* @__PURE__ */ jsx12(Failure, { scan, path: resolvedPath }),
|
|
17155
|
+
scan?.ok === true && /* @__PURE__ */ jsx12(Summary, { scan, path: resolvedPath }),
|
|
17156
|
+
/* @__PURE__ */ jsx12(Box10, { marginTop: 1, gap: 3, children: controlsFor(phase).map((control) => /* @__PURE__ */ jsxs10(Text11, { color: PALETTE.muted, children: [
|
|
16926
17157
|
"[",
|
|
16927
17158
|
control.keys,
|
|
16928
17159
|
"] ",
|
|
@@ -16932,12 +17163,12 @@ function PathValidationScreen({
|
|
|
16932
17163
|
}
|
|
16933
17164
|
|
|
16934
17165
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/screen.tsx
|
|
16935
|
-
import { useRef as useRef2, useState as
|
|
16936
|
-
import { Box as
|
|
17166
|
+
import { useRef as useRef2, useState as useState8 } from "react";
|
|
17167
|
+
import { Box as Box11, Text as Text12 } from "ink";
|
|
16937
17168
|
import TextInput2 from "ink-text-input";
|
|
16938
17169
|
|
|
16939
17170
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/controls.ts
|
|
16940
|
-
import { useInput as
|
|
17171
|
+
import { useInput as useInput10 } from "ink";
|
|
16941
17172
|
|
|
16942
17173
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/logic.ts
|
|
16943
17174
|
var FIELDS = ["spaceId", "environmentId", "cmaToken", "host"];
|
|
@@ -16973,7 +17204,7 @@ var CREDENTIALS_CONTROLS = [
|
|
|
16973
17204
|
{ keys: "Esc", label: "Back" }
|
|
16974
17205
|
];
|
|
16975
17206
|
function useCredentialsControls(handlers) {
|
|
16976
|
-
|
|
17207
|
+
useInput10((input, key) => {
|
|
16977
17208
|
if (handlers.disabled) return;
|
|
16978
17209
|
const action = keyAction2(input, key);
|
|
16979
17210
|
if (action === "back") handlers.onBack();
|
|
@@ -17017,7 +17248,7 @@ function toUserError(error, host) {
|
|
|
17017
17248
|
}
|
|
17018
17249
|
|
|
17019
17250
|
// packages/experience-design-system-cli/src/tui/import/steps/04-credentials/screen.tsx
|
|
17020
|
-
import { Fragment, jsx as
|
|
17251
|
+
import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
17021
17252
|
var LABELS = {
|
|
17022
17253
|
spaceId: "Space ID",
|
|
17023
17254
|
environmentId: "Environment",
|
|
@@ -17038,10 +17269,10 @@ function CredentialsScreen({
|
|
|
17038
17269
|
host: initial.host ?? ""
|
|
17039
17270
|
})
|
|
17040
17271
|
).current;
|
|
17041
|
-
const [values, setValues] =
|
|
17042
|
-
const [active, setActive] =
|
|
17043
|
-
const [error, setError] =
|
|
17044
|
-
const [validating, setValidating] =
|
|
17272
|
+
const [values, setValues] = useState8(initialValues);
|
|
17273
|
+
const [active, setActive] = useState8("spaceId");
|
|
17274
|
+
const [error, setError] = useState8(null);
|
|
17275
|
+
const [validating, setValidating] = useState8(false);
|
|
17045
17276
|
const prefilled = initialValues.spaceId !== "" && initialValues.cmaToken !== "";
|
|
17046
17277
|
useCredentialsControls({
|
|
17047
17278
|
disabled: validating,
|
|
@@ -17069,22 +17300,22 @@ function CredentialsScreen({
|
|
|
17069
17300
|
if (result.ok) onDone({ skipped: false, credentials });
|
|
17070
17301
|
else setError(result.error);
|
|
17071
17302
|
};
|
|
17072
|
-
return /* @__PURE__ */
|
|
17073
|
-
/* @__PURE__ */
|
|
17074
|
-
/* @__PURE__ */
|
|
17075
|
-
/* @__PURE__ */
|
|
17076
|
-
!prefilled && /* @__PURE__ */
|
|
17077
|
-
/* @__PURE__ */
|
|
17078
|
-
/* @__PURE__ */
|
|
17303
|
+
return /* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
17304
|
+
/* @__PURE__ */ jsxs11(Box11, { flexDirection: "column", children: [
|
|
17305
|
+
/* @__PURE__ */ jsx13(Text12, { bold: true, children: "Contentful credentials" }),
|
|
17306
|
+
/* @__PURE__ */ jsx13(Text12, { children: prefilled ? "Credentials pre-filled from the configuration settings." : "Enter the Contentful space you want to import into." }),
|
|
17307
|
+
!prefilled && /* @__PURE__ */ jsxs11(Fragment2, { children: [
|
|
17308
|
+
/* @__PURE__ */ jsx13(Text12, { 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." }),
|
|
17309
|
+
/* @__PURE__ */ jsx13(Text12, { color: PALETTE.muted, children: "Tip: save these under Settings \u2192 Configuration so they pre-fill here." })
|
|
17079
17310
|
] })
|
|
17080
17311
|
] }),
|
|
17081
|
-
/* @__PURE__ */
|
|
17082
|
-
/* @__PURE__ */
|
|
17083
|
-
/* @__PURE__ */
|
|
17312
|
+
/* @__PURE__ */ jsx13(Box11, { flexDirection: "column", children: FIELDS.map((field) => /* @__PURE__ */ jsxs11(Box11, { gap: 1, children: [
|
|
17313
|
+
/* @__PURE__ */ jsx13(Text12, { color: active === field ? PALETTE.accent : void 0, children: "?" }),
|
|
17314
|
+
/* @__PURE__ */ jsxs11(Text12, { bold: active === field, children: [
|
|
17084
17315
|
LABELS[field],
|
|
17085
17316
|
":"
|
|
17086
17317
|
] }),
|
|
17087
|
-
/* @__PURE__ */
|
|
17318
|
+
/* @__PURE__ */ jsx13(
|
|
17088
17319
|
TextInput2,
|
|
17089
17320
|
{
|
|
17090
17321
|
value: values[field],
|
|
@@ -17096,143 +17327,14 @@ function CredentialsScreen({
|
|
|
17096
17327
|
}
|
|
17097
17328
|
)
|
|
17098
17329
|
] }, field)) }),
|
|
17099
|
-
active === "host" && /* @__PURE__ */
|
|
17100
|
-
error && /* @__PURE__ */
|
|
17330
|
+
active === "host" && /* @__PURE__ */ jsx13(Text12, { color: PALETTE.muted, children: "Default: api.contentful.com \xB7 EU spaces: api.eu.contentful.com" }),
|
|
17331
|
+
error && /* @__PURE__ */ jsxs11(Text12, { color: PALETTE.error, children: [
|
|
17101
17332
|
"\u2717 ",
|
|
17102
17333
|
error
|
|
17103
17334
|
] }),
|
|
17104
|
-
validating && /* @__PURE__ */
|
|
17105
|
-
!validating && !error && !isUnchanged(normalize(values), initialValues) && /* @__PURE__ */
|
|
17106
|
-
/* @__PURE__ */
|
|
17107
|
-
"[",
|
|
17108
|
-
control.keys,
|
|
17109
|
-
"] ",
|
|
17110
|
-
control.label
|
|
17111
|
-
] }, control.keys)) })
|
|
17112
|
-
] });
|
|
17113
|
-
}
|
|
17114
|
-
|
|
17115
|
-
// packages/experience-design-system-cli/src/tui/import/shared/error-step/error-step.tsx
|
|
17116
|
-
import { Box as Box8, Text as Text9 } from "ink";
|
|
17117
|
-
|
|
17118
|
-
// packages/experience-design-system-cli/src/tui/import/shared/error-step/controls.ts
|
|
17119
|
-
import { useInput as useInput9 } from "ink";
|
|
17120
|
-
|
|
17121
|
-
// packages/experience-design-system-cli/src/tui/import/shared/error-step/logic.ts
|
|
17122
|
-
function errorAction(input, key, available) {
|
|
17123
|
-
if (key.return && available.canAcknowledge) return "acknowledge";
|
|
17124
|
-
if (input === "r" && available.canRetry) return "retry";
|
|
17125
|
-
if (key.return || key.escape) return "exit";
|
|
17126
|
-
return null;
|
|
17127
|
-
}
|
|
17128
|
-
function errorControls(available) {
|
|
17129
|
-
return [
|
|
17130
|
-
available.canAcknowledge ? { keys: "Enter", label: "Acknowledge and apply" } : { keys: "Enter", label: "Exit" },
|
|
17131
|
-
...available.canAcknowledge ? [{ keys: "Esc", label: "Exit" }] : [],
|
|
17132
|
-
...available.canRetry ? [{ keys: "r", label: "Re-enter credentials" }] : []
|
|
17133
|
-
];
|
|
17134
|
-
}
|
|
17135
|
-
|
|
17136
|
-
// packages/experience-design-system-cli/src/tui/import/shared/error-step/controls.ts
|
|
17137
|
-
function useErrorControls(handlers) {
|
|
17138
|
-
useInput9((input, key) => {
|
|
17139
|
-
const action = errorAction(input, key, {
|
|
17140
|
-
canRetry: handlers.onRetry !== void 0,
|
|
17141
|
-
canAcknowledge: handlers.onAcknowledge !== void 0
|
|
17142
|
-
});
|
|
17143
|
-
if (action === "acknowledge") handlers.onAcknowledge?.();
|
|
17144
|
-
else if (action === "retry") handlers.onRetry?.();
|
|
17145
|
-
else if (action === "exit") handlers.onExit();
|
|
17146
|
-
});
|
|
17147
|
-
}
|
|
17148
|
-
|
|
17149
|
-
// packages/experience-design-system-cli/src/tui/import/shared/error-step/error-step.tsx
|
|
17150
|
-
import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
17151
|
-
function ErrorStep({
|
|
17152
|
-
stepName,
|
|
17153
|
-
message,
|
|
17154
|
-
onExit,
|
|
17155
|
-
onRetryCredentials,
|
|
17156
|
-
onAcknowledgeBreakingChanges
|
|
17157
|
-
}) {
|
|
17158
|
-
useErrorControls({ onExit, onRetry: onRetryCredentials, onAcknowledge: onAcknowledgeBreakingChanges });
|
|
17159
|
-
const controls = errorControls({
|
|
17160
|
-
canRetry: onRetryCredentials !== void 0,
|
|
17161
|
-
canAcknowledge: onAcknowledgeBreakingChanges !== void 0
|
|
17162
|
-
});
|
|
17163
|
-
return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
17164
|
-
/* @__PURE__ */ jsxs8(Text9, { bold: true, color: PALETTE.error, children: [
|
|
17165
|
-
"\u2717 ",
|
|
17166
|
-
stepName,
|
|
17167
|
-
" failed"
|
|
17168
|
-
] }),
|
|
17169
|
-
/* @__PURE__ */ jsx10(Text9, { color: PALETTE.error, children: message }),
|
|
17170
|
-
/* @__PURE__ */ jsx10(Box8, { marginTop: 1, gap: 3, children: controls.map((control) => /* @__PURE__ */ jsxs8(Text9, { color: PALETTE.muted, children: [
|
|
17171
|
-
"[",
|
|
17172
|
-
control.keys,
|
|
17173
|
-
"] ",
|
|
17174
|
-
control.label
|
|
17175
|
-
] }, control.keys)) })
|
|
17176
|
-
] });
|
|
17177
|
-
}
|
|
17178
|
-
|
|
17179
|
-
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/gate-step.tsx
|
|
17180
|
-
import { Box as Box9, Text as Text10 } from "ink";
|
|
17181
|
-
|
|
17182
|
-
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/controls.ts
|
|
17183
|
-
import { useInput as useInput10 } from "ink";
|
|
17184
|
-
|
|
17185
|
-
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/logic.ts
|
|
17186
|
-
function gateAction(input, key, canSkip) {
|
|
17187
|
-
if (key.return) return "continue";
|
|
17188
|
-
if (input === "a" && canSkip) return "skip";
|
|
17189
|
-
if (key.escape) return "quit";
|
|
17190
|
-
return null;
|
|
17191
|
-
}
|
|
17192
|
-
function gateControls(continueLabel, skipLabel2, canSkip) {
|
|
17193
|
-
return [
|
|
17194
|
-
{ keys: "Enter", label: continueLabel },
|
|
17195
|
-
...canSkip ? [{ keys: "a", label: skipLabel2 }] : [],
|
|
17196
|
-
{ keys: "Esc", label: "Quit" }
|
|
17197
|
-
];
|
|
17198
|
-
}
|
|
17199
|
-
|
|
17200
|
-
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/controls.ts
|
|
17201
|
-
function useGateControls(handlers) {
|
|
17202
|
-
useInput10((input, key) => {
|
|
17203
|
-
const action = gateAction(input, key, handlers.canSkip);
|
|
17204
|
-
if (action === "continue") handlers.onContinue();
|
|
17205
|
-
else if (action === "skip") handlers.onSkip();
|
|
17206
|
-
else if (action === "quit") handlers.onQuit();
|
|
17207
|
-
});
|
|
17208
|
-
}
|
|
17209
|
-
|
|
17210
|
-
// packages/experience-design-system-cli/src/tui/import/shared/gate-step/gate-step.tsx
|
|
17211
|
-
import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
17212
|
-
function GateStep({
|
|
17213
|
-
message,
|
|
17214
|
-
onContinue,
|
|
17215
|
-
onQuit,
|
|
17216
|
-
summary,
|
|
17217
|
-
context,
|
|
17218
|
-
continueLabel = "Continue",
|
|
17219
|
-
skipLabel: skipLabel2 = "Approve all and skip",
|
|
17220
|
-
onSkip,
|
|
17221
|
-
intent = "success"
|
|
17222
|
-
}) {
|
|
17223
|
-
useGateControls({ canSkip: onSkip !== void 0, onContinue, onSkip: onSkip ?? (() => {
|
|
17224
|
-
}), onQuit });
|
|
17225
|
-
const color = intent === "error" ? PALETTE.error : PALETTE.success;
|
|
17226
|
-
const icon = intent === "error" ? "\u2717" : "\u2713";
|
|
17227
|
-
return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
17228
|
-
/* @__PURE__ */ jsxs9(Text10, { color, children: [
|
|
17229
|
-
icon,
|
|
17230
|
-
" ",
|
|
17231
|
-
message
|
|
17232
|
-
] }),
|
|
17233
|
-
summary && /* @__PURE__ */ jsx11(Text10, { color: PALETTE.muted, children: summary }),
|
|
17234
|
-
context && /* @__PURE__ */ jsx11(Box9, { marginTop: 1, children: /* @__PURE__ */ jsx11(Text10, { children: context }) }),
|
|
17235
|
-
/* @__PURE__ */ jsx11(Box9, { marginTop: 1, gap: 3, children: gateControls(continueLabel, skipLabel2, onSkip !== void 0).map((control) => /* @__PURE__ */ jsxs9(Text10, { color: PALETTE.muted, children: [
|
|
17335
|
+
validating && /* @__PURE__ */ jsx13(Text12, { color: PALETTE.accent, children: "Validating credentials..." }),
|
|
17336
|
+
!validating && !error && !isUnchanged(normalize(values), initialValues) && /* @__PURE__ */ jsx13(Text12, { color: PALETTE.muted, children: "Changed values are saved after they validate." }),
|
|
17337
|
+
/* @__PURE__ */ jsx13(Box11, { marginTop: 1, gap: 3, children: CREDENTIALS_CONTROLS.map((control) => /* @__PURE__ */ jsxs11(Text12, { color: PALETTE.muted, children: [
|
|
17236
17338
|
"[",
|
|
17237
17339
|
control.keys,
|
|
17238
17340
|
"] ",
|
|
@@ -17241,92 +17343,6 @@ function GateStep({
|
|
|
17241
17343
|
] });
|
|
17242
17344
|
}
|
|
17243
17345
|
|
|
17244
|
-
// packages/experience-design-system-cli/src/tui/import/shared/running-step/running-step.tsx
|
|
17245
|
-
import { Box as Box10, Text as Text11 } from "ink";
|
|
17246
|
-
import { ProgressBar, Spinner, ThemeProvider } from "@inkjs/ui";
|
|
17247
|
-
|
|
17248
|
-
// packages/experience-design-system-cli/src/tui/import/shared/running-step/logic.ts
|
|
17249
|
-
function progressPercent(progress) {
|
|
17250
|
-
if (progress.total <= 0) return 0;
|
|
17251
|
-
return Math.min(100, Math.max(0, Math.round(progress.done / progress.total * 100)));
|
|
17252
|
-
}
|
|
17253
|
-
function formatElapsed(totalSeconds) {
|
|
17254
|
-
const minutes = Math.floor(totalSeconds / 60);
|
|
17255
|
-
const seconds = totalSeconds % 60;
|
|
17256
|
-
return minutes > 0 ? `${minutes}m ${seconds}s` : `${seconds}s`;
|
|
17257
|
-
}
|
|
17258
|
-
function stepLabel(stepNumber, totalSteps, title) {
|
|
17259
|
-
return `Step ${stepNumber} of ${totalSteps} \u2014 ${title}`;
|
|
17260
|
-
}
|
|
17261
|
-
|
|
17262
|
-
// packages/experience-design-system-cli/src/tui/import/shared/running-step/theme.ts
|
|
17263
|
-
import { defaultTheme, extendTheme } from "@inkjs/ui";
|
|
17264
|
-
var PROGRESS_THEME = extendTheme(defaultTheme, {
|
|
17265
|
-
components: {
|
|
17266
|
-
ProgressBar: {
|
|
17267
|
-
styles: {
|
|
17268
|
-
completed: () => ({ color: PALETTE.accent })
|
|
17269
|
-
}
|
|
17270
|
-
}
|
|
17271
|
-
}
|
|
17272
|
-
});
|
|
17273
|
-
|
|
17274
|
-
// packages/experience-design-system-cli/src/tui/import/shared/running-step/use-elapsed.ts
|
|
17275
|
-
import { useEffect as useEffect4, useState as useState8 } from "react";
|
|
17276
|
-
function useElapsed() {
|
|
17277
|
-
const [seconds, setSeconds] = useState8(0);
|
|
17278
|
-
useEffect4(() => {
|
|
17279
|
-
const timer = setInterval(() => setSeconds((current) => current + 1), 1e3);
|
|
17280
|
-
return () => clearInterval(timer);
|
|
17281
|
-
}, []);
|
|
17282
|
-
return formatElapsed(seconds);
|
|
17283
|
-
}
|
|
17284
|
-
|
|
17285
|
-
// packages/experience-design-system-cli/src/tui/import/shared/running-step/running-step.tsx
|
|
17286
|
-
import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
17287
|
-
var RULE = "\u2500".repeat(40);
|
|
17288
|
-
function Line({ line }) {
|
|
17289
|
-
if (line.progress) {
|
|
17290
|
-
return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", gap: 1, children: [
|
|
17291
|
-
/* @__PURE__ */ jsxs10(Box10, { gap: 2, children: [
|
|
17292
|
-
/* @__PURE__ */ jsx12(Box10, { width: 40, children: /* @__PURE__ */ jsx12(ThemeProvider, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx12(ProgressBar, { value: progressPercent(line.progress) }) }) }),
|
|
17293
|
-
/* @__PURE__ */ jsxs10(Text11, { color: PALETTE.muted, children: [
|
|
17294
|
-
line.progress.done,
|
|
17295
|
-
"/",
|
|
17296
|
-
line.progress.total
|
|
17297
|
-
] })
|
|
17298
|
-
] }),
|
|
17299
|
-
/* @__PURE__ */ jsx12(Text11, { color: PALETTE.muted, children: line.text })
|
|
17300
|
-
] });
|
|
17301
|
-
}
|
|
17302
|
-
return /* @__PURE__ */ jsxs10(Box10, { gap: 1, children: [
|
|
17303
|
-
line.complete ? /* @__PURE__ */ jsx12(Text11, { color: PALETTE.success, children: "\u2713" }) : /* @__PURE__ */ jsx12(Spinner, {}),
|
|
17304
|
-
/* @__PURE__ */ jsx12(Text11, { color: PALETTE.muted, children: line.text })
|
|
17305
|
-
] });
|
|
17306
|
-
}
|
|
17307
|
-
function RunningStep({
|
|
17308
|
-
stepNumber,
|
|
17309
|
-
totalSteps,
|
|
17310
|
-
title,
|
|
17311
|
-
description,
|
|
17312
|
-
lines = [{ text: "Running..." }]
|
|
17313
|
-
}) {
|
|
17314
|
-
const elapsed = useElapsed();
|
|
17315
|
-
return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
17316
|
-
/* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
|
|
17317
|
-
/* @__PURE__ */ jsx12(Text11, { color: PALETTE.muted, children: RULE }),
|
|
17318
|
-
/* @__PURE__ */ jsx12(Text11, { bold: true, children: stepLabel(stepNumber, totalSteps, title) }),
|
|
17319
|
-
/* @__PURE__ */ jsx12(Text11, { color: PALETTE.muted, children: RULE })
|
|
17320
|
-
] }),
|
|
17321
|
-
/* @__PURE__ */ jsx12(Text11, { children: description }),
|
|
17322
|
-
/* @__PURE__ */ jsx12(Box10, { marginTop: 1, flexDirection: "column", gap: 1, children: lines.map((line, index) => /* @__PURE__ */ jsx12(Line, { line }, index)) }),
|
|
17323
|
-
/* @__PURE__ */ jsx12(Box10, { marginTop: 1, children: /* @__PURE__ */ jsxs10(Text11, { color: PALETTE.muted, children: [
|
|
17324
|
-
"Elapsed: ",
|
|
17325
|
-
elapsed
|
|
17326
|
-
] }) })
|
|
17327
|
-
] });
|
|
17328
|
-
}
|
|
17329
|
-
|
|
17330
17346
|
// packages/experience-design-system-cli/src/tui/import/steps/06-extraction/logic.ts
|
|
17331
17347
|
function initialProgress(input) {
|
|
17332
17348
|
return {
|
|
@@ -17416,14 +17432,14 @@ function resolveAgentChoice(flag, stored) {
|
|
|
17416
17432
|
}
|
|
17417
17433
|
|
|
17418
17434
|
// packages/experience-design-system-cli/src/tui/import/steps/06-extraction/screen.tsx
|
|
17419
|
-
import { jsx as
|
|
17435
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
17420
17436
|
function ExtractionScreen({
|
|
17421
17437
|
progress,
|
|
17422
17438
|
agent,
|
|
17423
17439
|
stepNumber,
|
|
17424
17440
|
totalSteps
|
|
17425
17441
|
}) {
|
|
17426
|
-
return /* @__PURE__ */
|
|
17442
|
+
return /* @__PURE__ */ jsx14(
|
|
17427
17443
|
RunningStep,
|
|
17428
17444
|
{
|
|
17429
17445
|
stepNumber,
|
|
@@ -17778,11 +17794,11 @@ function useTokensOnly(input) {
|
|
|
17778
17794
|
}
|
|
17779
17795
|
|
|
17780
17796
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/screen.tsx
|
|
17781
|
-
import { Box as
|
|
17797
|
+
import { Box as Box22, Text as Text24 } from "ink";
|
|
17782
17798
|
|
|
17783
17799
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/added-column.tsx
|
|
17784
17800
|
import React8 from "react";
|
|
17785
|
-
import { Box as
|
|
17801
|
+
import { Box as Box13, Text as Text14 } from "ink";
|
|
17786
17802
|
import figures from "figures";
|
|
17787
17803
|
|
|
17788
17804
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/theme.ts
|
|
@@ -17899,8 +17915,8 @@ function computeColumnWindow(total, cursor, visibleCount) {
|
|
|
17899
17915
|
}
|
|
17900
17916
|
|
|
17901
17917
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/windowed-panel.tsx
|
|
17902
|
-
import { Box as
|
|
17903
|
-
import { jsx as
|
|
17918
|
+
import { Box as Box12, Text as Text13 } from "ink";
|
|
17919
|
+
import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
17904
17920
|
var MIN_TERMINAL_PANEL_HEIGHT = 5;
|
|
17905
17921
|
function terminalPanelHeight(rows, reservedRows = 4) {
|
|
17906
17922
|
return Math.max(MIN_TERMINAL_PANEL_HEIGHT, rows - reservedRows);
|
|
@@ -17916,8 +17932,8 @@ function FixedPanel({
|
|
|
17916
17932
|
clipOverflow = true,
|
|
17917
17933
|
children
|
|
17918
17934
|
}) {
|
|
17919
|
-
return /* @__PURE__ */
|
|
17920
|
-
|
|
17935
|
+
return /* @__PURE__ */ jsx15(
|
|
17936
|
+
Box12,
|
|
17921
17937
|
{
|
|
17922
17938
|
flexDirection: "column",
|
|
17923
17939
|
width,
|
|
@@ -17933,7 +17949,7 @@ function FixedPanel({
|
|
|
17933
17949
|
);
|
|
17934
17950
|
}
|
|
17935
17951
|
function WindowedPanel({ width, height, title, focused, children }) {
|
|
17936
|
-
return /* @__PURE__ */
|
|
17952
|
+
return /* @__PURE__ */ jsxs12(
|
|
17937
17953
|
FixedPanel,
|
|
17938
17954
|
{
|
|
17939
17955
|
width,
|
|
@@ -17942,7 +17958,7 @@ function WindowedPanel({ width, height, title, focused, children }) {
|
|
|
17942
17958
|
...height === void 0 ? {} : { height },
|
|
17943
17959
|
focused,
|
|
17944
17960
|
children: [
|
|
17945
|
-
title && /* @__PURE__ */
|
|
17961
|
+
title && /* @__PURE__ */ jsx15(WindowedPanelHeader, { title, width, focused }),
|
|
17946
17962
|
children
|
|
17947
17963
|
]
|
|
17948
17964
|
}
|
|
@@ -17953,9 +17969,9 @@ function WindowedPanelHeader({
|
|
|
17953
17969
|
width,
|
|
17954
17970
|
focused
|
|
17955
17971
|
}) {
|
|
17956
|
-
return /* @__PURE__ */
|
|
17957
|
-
/* @__PURE__ */
|
|
17958
|
-
/* @__PURE__ */
|
|
17972
|
+
return /* @__PURE__ */ jsxs12(Box12, { flexDirection: "column", children: [
|
|
17973
|
+
/* @__PURE__ */ jsx15(Text13, { bold: true, color: PALETTE2.info, inverse: focused, children: title }),
|
|
17974
|
+
/* @__PURE__ */ jsx15(Text13, { color: PALETTE2.muted, children: "\u2500".repeat(Math.max(0, width - 2)) })
|
|
17959
17975
|
] });
|
|
17960
17976
|
}
|
|
17961
17977
|
function formatWindowIndicator(direction, count) {
|
|
@@ -17963,33 +17979,33 @@ function formatWindowIndicator(direction, count) {
|
|
|
17963
17979
|
return `${direction === "up" ? "\u2191" : "\u2193"} ${count} more`;
|
|
17964
17980
|
}
|
|
17965
17981
|
function WindowIndicator({ direction, count }) {
|
|
17966
|
-
return /* @__PURE__ */
|
|
17982
|
+
return /* @__PURE__ */ jsx15(Text13, { color: PALETTE2.muted, children: formatWindowIndicator(direction, count) });
|
|
17967
17983
|
}
|
|
17968
17984
|
|
|
17969
17985
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/added-column.tsx
|
|
17970
|
-
import { jsx as
|
|
17986
|
+
import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
17971
17987
|
function AddedColumn(props) {
|
|
17972
17988
|
const { title, width, height, entries, cursor, focused, aiFlaggedByKey, visibleCount } = props;
|
|
17973
17989
|
const reserveAiBadge = entries.some((e) => aiFlaggedByKey?.get(e.name) === true);
|
|
17974
17990
|
const firstNonCycleIdx = entries.findIndex((e) => !e.isCycle);
|
|
17975
17991
|
const window = computeColumnWindow(entries.length, cursor, Math.max(1, visibleCount));
|
|
17976
|
-
return /* @__PURE__ */
|
|
17977
|
-
/* @__PURE__ */
|
|
17978
|
-
entries.length === 0 ? /* @__PURE__ */
|
|
17992
|
+
return /* @__PURE__ */ jsxs13(WindowedPanel, { width, height, title, focused, children: [
|
|
17993
|
+
/* @__PURE__ */ jsx16(WindowIndicator, { direction: "up", count: window.above }),
|
|
17994
|
+
entries.length === 0 ? /* @__PURE__ */ jsx16(Text14, { color: PALETTE2.muted, children: "(none)" }) : entries.slice(window.start, window.end).map((entry, vi) => {
|
|
17979
17995
|
const i = window.start + vi;
|
|
17980
17996
|
const isSelected = i === cursor;
|
|
17981
17997
|
const isCursor = focused && isSelected;
|
|
17982
17998
|
const aiFlagged = aiFlaggedByKey?.get(entry.name) === true;
|
|
17983
17999
|
const showSeparator = firstNonCycleIdx > 0 && i === firstNonCycleIdx;
|
|
17984
18000
|
const style = sideColumnLabelStyle({ isCycle: entry.isCycle, isSelected, focused });
|
|
17985
|
-
return /* @__PURE__ */
|
|
17986
|
-
showSeparator && /* @__PURE__ */
|
|
17987
|
-
/* @__PURE__ */
|
|
17988
|
-
isCursor ? /* @__PURE__ */
|
|
17989
|
-
reserveAiBadge && (aiFlagged ? /* @__PURE__ */
|
|
17990
|
-
entry.isCycle && /* @__PURE__ */
|
|
17991
|
-
/* @__PURE__ */
|
|
17992
|
-
|
|
18001
|
+
return /* @__PURE__ */ jsxs13(React8.Fragment, { children: [
|
|
18002
|
+
showSeparator && /* @__PURE__ */ jsx16(Text14, { color: PALETTE2.muted, children: "\u2500".repeat(Math.max(0, width - 2)) }),
|
|
18003
|
+
/* @__PURE__ */ jsxs13(Box13, { children: [
|
|
18004
|
+
isCursor ? /* @__PURE__ */ jsx16(Text14, { color: PALETTE2.info, bold: true, children: figures.pointer }) : /* @__PURE__ */ jsx16(Text14, { children: " " }),
|
|
18005
|
+
reserveAiBadge && (aiFlagged ? /* @__PURE__ */ jsx16(Text14, { color: PALETTE2.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx16(Text14, { children: " " })),
|
|
18006
|
+
entry.isCycle && /* @__PURE__ */ jsx16(Text14, { color: isCursor ? PALETTE2.info : PALETTE2.warning, bold: true, underline: style.nameUnderline, children: " \u26A0" }),
|
|
18007
|
+
/* @__PURE__ */ jsx16(
|
|
18008
|
+
Text14,
|
|
17993
18009
|
{
|
|
17994
18010
|
color: style.nameColor,
|
|
17995
18011
|
bold: style.nameBold,
|
|
@@ -18002,14 +18018,14 @@ function AddedColumn(props) {
|
|
|
18002
18018
|
] })
|
|
18003
18019
|
] }, entry.name);
|
|
18004
18020
|
}),
|
|
18005
|
-
/* @__PURE__ */
|
|
18021
|
+
/* @__PURE__ */ jsx16(WindowIndicator, { direction: "down", count: window.below })
|
|
18006
18022
|
] });
|
|
18007
18023
|
}
|
|
18008
18024
|
|
|
18009
18025
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/cycles-panel.tsx
|
|
18010
|
-
import { Box as
|
|
18026
|
+
import { Box as Box14, Text as Text15 } from "ink";
|
|
18011
18027
|
import figures2 from "figures";
|
|
18012
|
-
import { jsx as
|
|
18028
|
+
import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
18013
18029
|
function cycleLabel(cycle, index) {
|
|
18014
18030
|
const parts = [];
|
|
18015
18031
|
for (let i = 0; i < cycle.edges.length; i++) {
|
|
@@ -18020,49 +18036,49 @@ function cycleLabel(cycle, index) {
|
|
|
18020
18036
|
return `Cycle ${index + 1}: ${parts.join(" \u2192 ")}`;
|
|
18021
18037
|
}
|
|
18022
18038
|
function CyclesPanel({ cycles, cursor }) {
|
|
18023
|
-
return /* @__PURE__ */
|
|
18024
|
-
/* @__PURE__ */
|
|
18025
|
-
/* @__PURE__ */
|
|
18039
|
+
return /* @__PURE__ */ jsxs14(Box14, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE2.warning, paddingX: 1, marginTop: 1, children: [
|
|
18040
|
+
/* @__PURE__ */ jsx17(Text15, { bold: true, color: PALETTE2.warning, children: `Cycles detected (${cycles.length}):` }),
|
|
18041
|
+
/* @__PURE__ */ jsx17(Text15, { children: " " }),
|
|
18026
18042
|
cycles.map((cycle, i) => {
|
|
18027
18043
|
const isCursor = i === cursor;
|
|
18028
|
-
return /* @__PURE__ */
|
|
18029
|
-
isCursor ? /* @__PURE__ */
|
|
18030
|
-
/* @__PURE__ */
|
|
18044
|
+
return /* @__PURE__ */ jsxs14(Text15, { children: [
|
|
18045
|
+
isCursor ? /* @__PURE__ */ jsx17(Text15, { color: PALETTE2.info, bold: true, children: figures2.pointer }) : /* @__PURE__ */ jsx17(Text15, { children: " " }),
|
|
18046
|
+
/* @__PURE__ */ jsx17(Text15, { color: PALETTE2.warning, inverse: isCursor, children: " " + cycleLabel(cycle, i) })
|
|
18031
18047
|
] }, i);
|
|
18032
18048
|
}),
|
|
18033
|
-
/* @__PURE__ */
|
|
18049
|
+
/* @__PURE__ */ jsx17(Text15, { children: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [c/Esc] close" })
|
|
18034
18050
|
] });
|
|
18035
18051
|
}
|
|
18036
18052
|
|
|
18037
18053
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/reject-prompt.tsx
|
|
18038
|
-
import { Box as
|
|
18039
|
-
import { jsx as
|
|
18054
|
+
import { Box as Box15, Text as Text16 } from "ink";
|
|
18055
|
+
import { jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
18040
18056
|
function RejectPrompt({ pending }) {
|
|
18041
|
-
return /* @__PURE__ */
|
|
18042
|
-
/* @__PURE__ */
|
|
18043
|
-
pending.ancestors.length > 0 && /* @__PURE__ */
|
|
18044
|
-
pending.descendants.length > 0 && /* @__PURE__ */
|
|
18045
|
-
/* @__PURE__ */
|
|
18057
|
+
return /* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE2.warning, paddingX: 1, marginTop: 1, children: [
|
|
18058
|
+
/* @__PURE__ */ jsx18(Text16, { bold: true, color: PALETTE2.warning, children: `Rejecting ${pending.target} will:` }),
|
|
18059
|
+
pending.ancestors.length > 0 && /* @__PURE__ */ jsx18(Text16, { children: `- Reject ancestors: ${pending.ancestors.join(", ")}` }),
|
|
18060
|
+
pending.descendants.length > 0 && /* @__PURE__ */ jsx18(Text16, { children: `- Deselect descendants: ${pending.descendants.join(", ")}` }),
|
|
18061
|
+
/* @__PURE__ */ jsx18(Text16, { children: "[y] confirm \xB7 [n]/[Esc] cancel" })
|
|
18046
18062
|
] });
|
|
18047
18063
|
}
|
|
18048
18064
|
|
|
18049
18065
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CompactControlBar.tsx
|
|
18050
|
-
import { Box as
|
|
18066
|
+
import { Box as Box16 } from "ink";
|
|
18051
18067
|
|
|
18052
18068
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/LegendEntry.tsx
|
|
18053
|
-
import { Text as
|
|
18054
|
-
import { jsx as
|
|
18069
|
+
import { Text as Text17 } from "ink";
|
|
18070
|
+
import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
18055
18071
|
function legendEntry(keyBracket, label, active = false) {
|
|
18056
|
-
return /* @__PURE__ */
|
|
18057
|
-
/* @__PURE__ */
|
|
18058
|
-
/* @__PURE__ */
|
|
18072
|
+
return /* @__PURE__ */ jsxs16(Text17, { children: [
|
|
18073
|
+
/* @__PURE__ */ jsx19(Text17, { color: active ? PALETTE2.warning : PALETTE2.info, inverse: active, children: keyBracket }),
|
|
18074
|
+
/* @__PURE__ */ jsx19(Text17, { color: active ? PALETTE2.warning : void 0, inverse: active, children: " " + label })
|
|
18059
18075
|
] }, keyBracket + label);
|
|
18060
18076
|
}
|
|
18061
18077
|
|
|
18062
18078
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CompactControlBar.tsx
|
|
18063
|
-
import { jsxs as
|
|
18079
|
+
import { jsxs as jsxs17 } from "react/jsx-runtime";
|
|
18064
18080
|
function CompactControlBar({ hasGroupRoots, searchActive }) {
|
|
18065
|
-
return /* @__PURE__ */
|
|
18081
|
+
return /* @__PURE__ */ jsxs17(Box16, { borderStyle: "single", borderColor: PALETTE2.border, paddingX: 1, flexWrap: "wrap", columnGap: 2, children: [
|
|
18066
18082
|
legendEntry("[\u2191/\u2193]", "move"),
|
|
18067
18083
|
legendEntry("[a/r]", "accept/reject"),
|
|
18068
18084
|
legendEntry("[f]", "continue/finalize"),
|
|
@@ -18074,8 +18090,8 @@ function CompactControlBar({ hasGroupRoots, searchActive }) {
|
|
|
18074
18090
|
}
|
|
18075
18091
|
|
|
18076
18092
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/CounterStrip.tsx
|
|
18077
|
-
import { Box as
|
|
18078
|
-
import { jsx as
|
|
18093
|
+
import { Box as Box17, Text as Text18 } from "ink";
|
|
18094
|
+
import { jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
18079
18095
|
function CounterStrip(props) {
|
|
18080
18096
|
const { counters, totalWidth } = props;
|
|
18081
18097
|
const condensed = totalWidth < 60;
|
|
@@ -18083,32 +18099,32 @@ function CounterStrip(props) {
|
|
|
18083
18099
|
const labelRej = condensed ? "Rej" : "Rejected";
|
|
18084
18100
|
const labelUnd = condensed ? "Und" : "Undecided";
|
|
18085
18101
|
const sep = condensed ? " | " : " ";
|
|
18086
|
-
return /* @__PURE__ */
|
|
18087
|
-
/* @__PURE__ */
|
|
18102
|
+
return /* @__PURE__ */ jsx20(Box17, { children: /* @__PURE__ */ jsxs18(Text18, { children: [
|
|
18103
|
+
/* @__PURE__ */ jsxs18(Text18, { color: PALETTE2.muted, children: [
|
|
18088
18104
|
labelGrp,
|
|
18089
18105
|
" "
|
|
18090
18106
|
] }),
|
|
18091
|
-
/* @__PURE__ */
|
|
18092
|
-
/* @__PURE__ */
|
|
18093
|
-
/* @__PURE__ */
|
|
18107
|
+
/* @__PURE__ */ jsx20(Text18, { bold: true, children: counters.groups }),
|
|
18108
|
+
/* @__PURE__ */ jsx20(Text18, { color: PALETTE2.muted, children: sep }),
|
|
18109
|
+
/* @__PURE__ */ jsxs18(Text18, { color: PALETTE2.muted, children: [
|
|
18094
18110
|
labelRej,
|
|
18095
18111
|
" "
|
|
18096
18112
|
] }),
|
|
18097
|
-
/* @__PURE__ */
|
|
18098
|
-
/* @__PURE__ */
|
|
18099
|
-
/* @__PURE__ */
|
|
18113
|
+
/* @__PURE__ */ jsx20(Text18, { bold: true, children: counters.rejected }),
|
|
18114
|
+
/* @__PURE__ */ jsx20(Text18, { color: PALETTE2.muted, children: sep }),
|
|
18115
|
+
/* @__PURE__ */ jsxs18(Text18, { color: PALETTE2.muted, children: [
|
|
18100
18116
|
labelUnd,
|
|
18101
18117
|
" "
|
|
18102
18118
|
] }),
|
|
18103
|
-
/* @__PURE__ */
|
|
18104
|
-
/* @__PURE__ */
|
|
18119
|
+
/* @__PURE__ */ jsx20(Text18, { bold: true, children: counters.undecided }),
|
|
18120
|
+
/* @__PURE__ */ jsx20(Text18, { color: PALETTE2.muted, children: sep })
|
|
18105
18121
|
] }) });
|
|
18106
18122
|
}
|
|
18107
18123
|
|
|
18108
18124
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GotoBanner.tsx
|
|
18109
18125
|
import figures3 from "figures";
|
|
18110
|
-
import { Box as
|
|
18111
|
-
import { jsx as
|
|
18126
|
+
import { Box as Box18, Text as Text19 } from "ink";
|
|
18127
|
+
import { jsx as jsx21, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
18112
18128
|
var DEFAULT_MAX_ROWS = 15;
|
|
18113
18129
|
function windowStart(rowCount, highlightIndex, maxRows) {
|
|
18114
18130
|
if (rowCount <= maxRows) return 0;
|
|
@@ -18119,9 +18135,9 @@ function windowStart(rowCount, highlightIndex, maxRows) {
|
|
|
18119
18135
|
return start;
|
|
18120
18136
|
}
|
|
18121
18137
|
function defaultRenderRow(row, index, isCursor) {
|
|
18122
|
-
return /* @__PURE__ */
|
|
18123
|
-
isCursor ? /* @__PURE__ */
|
|
18124
|
-
/* @__PURE__ */
|
|
18138
|
+
return /* @__PURE__ */ jsxs19(Text19, { children: [
|
|
18139
|
+
isCursor ? /* @__PURE__ */ jsx21(Text19, { color: PALETTE2.info, bold: true, children: figures3.pointer }) : /* @__PURE__ */ jsx21(Text19, { children: " " }),
|
|
18140
|
+
/* @__PURE__ */ jsx21(Text19, { inverse: isCursor, children: " " + row.label })
|
|
18125
18141
|
] }, index);
|
|
18126
18142
|
}
|
|
18127
18143
|
function GotoBanner({
|
|
@@ -18140,8 +18156,8 @@ function GotoBanner({
|
|
|
18140
18156
|
const visible = rows.slice(start, end);
|
|
18141
18157
|
const moreAbove = start;
|
|
18142
18158
|
const moreBelow = rows.length - end;
|
|
18143
|
-
return /* @__PURE__ */
|
|
18144
|
-
|
|
18159
|
+
return /* @__PURE__ */ jsxs19(
|
|
18160
|
+
Box18,
|
|
18145
18161
|
{
|
|
18146
18162
|
flexDirection: "column",
|
|
18147
18163
|
borderStyle: "single",
|
|
@@ -18151,14 +18167,14 @@ function GotoBanner({
|
|
|
18151
18167
|
width,
|
|
18152
18168
|
flexShrink: 0,
|
|
18153
18169
|
children: [
|
|
18154
|
-
/* @__PURE__ */
|
|
18155
|
-
moreAbove > 0 && /* @__PURE__ */
|
|
18170
|
+
/* @__PURE__ */ jsx21(Text19, { bold: true, children: title }),
|
|
18171
|
+
moreAbove > 0 && /* @__PURE__ */ jsx21(Text19, { color: PALETTE2.muted, children: ` \u25B2 ${moreAbove} more` }),
|
|
18156
18172
|
visible.map((row, vi) => {
|
|
18157
18173
|
const i = start + vi;
|
|
18158
18174
|
return renderRow(row, i, i === highlightIndex);
|
|
18159
18175
|
}),
|
|
18160
|
-
moreBelow > 0 && /* @__PURE__ */
|
|
18161
|
-
footerHint !== void 0 && /* @__PURE__ */
|
|
18176
|
+
moreBelow > 0 && /* @__PURE__ */ jsx21(Text19, { color: PALETTE2.muted, children: ` \u25BC ${moreBelow} more` }),
|
|
18177
|
+
footerHint !== void 0 && /* @__PURE__ */ jsx21(Text19, { color: PALETTE2.muted, children: footerHint })
|
|
18162
18178
|
]
|
|
18163
18179
|
}
|
|
18164
18180
|
);
|
|
@@ -18166,7 +18182,7 @@ function GotoBanner({
|
|
|
18166
18182
|
|
|
18167
18183
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GroupedSidebar.tsx
|
|
18168
18184
|
import figures4 from "figures";
|
|
18169
|
-
import { Box as
|
|
18185
|
+
import { Box as Box19, Text as Text21 } from "ink";
|
|
18170
18186
|
|
|
18171
18187
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/graph/cycle-detection.ts
|
|
18172
18188
|
function buildGraph(components) {
|
|
@@ -18506,8 +18522,8 @@ function findSharedDeps(closures) {
|
|
|
18506
18522
|
}
|
|
18507
18523
|
|
|
18508
18524
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/badge.tsx
|
|
18509
|
-
import { Text as
|
|
18510
|
-
import { jsx as
|
|
18525
|
+
import { Text as Text20 } from "ink";
|
|
18526
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
18511
18527
|
function previewBadge(annotation) {
|
|
18512
18528
|
switch (annotation) {
|
|
18513
18529
|
case "new":
|
|
@@ -18526,11 +18542,11 @@ function PreviewBadge({
|
|
|
18526
18542
|
badge,
|
|
18527
18543
|
highlighted = false
|
|
18528
18544
|
}) {
|
|
18529
|
-
return badge ? /* @__PURE__ */
|
|
18545
|
+
return badge ? /* @__PURE__ */ jsx22(Text20, { color: !highlighted && badge.dim ? PALETTE2.muted : badge.color, bold: badge.bold, children: badge.char }) : /* @__PURE__ */ jsx22(Text20, { children: " " });
|
|
18530
18546
|
}
|
|
18531
18547
|
|
|
18532
18548
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/GroupedSidebar.tsx
|
|
18533
|
-
import { jsx as
|
|
18549
|
+
import { jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
18534
18550
|
var GLYPH_EXPAND_COLLAPSED = "\u25B8";
|
|
18535
18551
|
var GLYPH_EXPAND_EXPANDED = "\u25BE";
|
|
18536
18552
|
var GLYPH_TREE_MID = "\u251C\u2500";
|
|
@@ -18955,12 +18971,12 @@ function GroupedSidebar(props) {
|
|
|
18955
18971
|
const start = windowed ? Math.max(0, scrollOffset ?? 0) : 0;
|
|
18956
18972
|
const end = windowed ? start + (visibleCount ?? allRows.length) : allRows.length;
|
|
18957
18973
|
const rows = windowed ? allRows.slice(start, end) : allRows;
|
|
18958
|
-
return /* @__PURE__ */
|
|
18959
|
-
allRows.length === 0 && emptyMessage !== void 0 && /* @__PURE__ */
|
|
18974
|
+
return /* @__PURE__ */ jsxs20(WindowedPanel, { width, height: props.height, title, focused, children: [
|
|
18975
|
+
allRows.length === 0 && emptyMessage !== void 0 && /* @__PURE__ */ jsxs20(Text21, { color: PALETTE2.warning, children: [
|
|
18960
18976
|
" ",
|
|
18961
18977
|
emptyMessage
|
|
18962
18978
|
] }),
|
|
18963
|
-
windowed && /* @__PURE__ */
|
|
18979
|
+
windowed && /* @__PURE__ */ jsx23(WindowIndicator, { direction: "up", count: start }),
|
|
18964
18980
|
rows.map((row, i) => {
|
|
18965
18981
|
const absoluteRowIdx = start + i;
|
|
18966
18982
|
const isSelected = selectedRowIdx !== void 0 ? absoluteRowIdx === selectedRowIdx && row.itemIdx >= 0 : row.itemIdx >= 0 && row.itemIdx === selectedIdx;
|
|
@@ -18987,13 +19003,13 @@ function GroupedSidebar(props) {
|
|
|
18987
19003
|
isOwn: rs?.isOwn ?? false,
|
|
18988
19004
|
isCursor
|
|
18989
19005
|
});
|
|
18990
|
-
return /* @__PURE__ */
|
|
18991
|
-
isCursor ? /* @__PURE__ */
|
|
18992
|
-
/* @__PURE__ */
|
|
18993
|
-
selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */
|
|
18994
|
-
aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */
|
|
18995
|
-
/* @__PURE__ */
|
|
18996
|
-
|
|
19006
|
+
return /* @__PURE__ */ jsxs20(Box19, { children: [
|
|
19007
|
+
isCursor ? /* @__PURE__ */ jsx23(Text21, { color: PALETTE2.info, bold: true, children: figures4.pointer }) : /* @__PURE__ */ jsx23(Text21, { children: " " }),
|
|
19008
|
+
/* @__PURE__ */ jsx23(PreviewBadge, { badge, highlighted: isSelected }),
|
|
19009
|
+
selectionStateByKey !== void 0 && (selGlyph && !isSynthetic ? /* @__PURE__ */ jsx23(Text21, { color: !isSelected && selDim ? PALETTE2.muted : selColor, bold: selBold, children: " " + selGlyph }) : /* @__PURE__ */ jsx23(Text21, { children: " " })),
|
|
19010
|
+
aiFlaggedByKey !== void 0 && (aiFlagged ? /* @__PURE__ */ jsx23(Text21, { color: PALETTE2.warning, bold: true, children: " [\xD7]" }) : /* @__PURE__ */ jsx23(Text21, { children: " " })),
|
|
19011
|
+
/* @__PURE__ */ jsxs20(
|
|
19012
|
+
Text21,
|
|
18997
19013
|
{
|
|
18998
19014
|
color: isSelected ? PALETTE2.info : labelStyle.dim ? PALETTE2.muted : labelStyle.color,
|
|
18999
19015
|
bold: isSelected || labelStyle.bold,
|
|
@@ -19006,16 +19022,16 @@ function GroupedSidebar(props) {
|
|
|
19006
19022
|
]
|
|
19007
19023
|
}
|
|
19008
19024
|
),
|
|
19009
|
-
inheritanceStyle.glyph && /* @__PURE__ */
|
|
19025
|
+
inheritanceStyle.glyph && /* @__PURE__ */ jsx23(Text21, { color: inheritanceStyle.dim ? PALETTE2.muted : inheritanceStyle.color, bold: inheritanceStyle.bold, children: " " + inheritanceStyle.glyph })
|
|
19010
19026
|
] }, row.key);
|
|
19011
19027
|
}),
|
|
19012
|
-
windowed && /* @__PURE__ */
|
|
19028
|
+
windowed && /* @__PURE__ */ jsx23(WindowIndicator, { direction: "down", count: allRows.length - end })
|
|
19013
19029
|
] });
|
|
19014
19030
|
}
|
|
19015
19031
|
|
|
19016
19032
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/HelpOverlay.tsx
|
|
19017
19033
|
import React9 from "react";
|
|
19018
|
-
import { Box as
|
|
19034
|
+
import { Box as Box20, Text as Text22 } from "ink";
|
|
19019
19035
|
|
|
19020
19036
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/hooks/useImmediateInput.ts
|
|
19021
19037
|
import { useLayoutEffect, useRef as useRef5 } from "react";
|
|
@@ -19114,7 +19130,7 @@ function useTerminalSize() {
|
|
|
19114
19130
|
}
|
|
19115
19131
|
|
|
19116
19132
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/HelpOverlay.tsx
|
|
19117
|
-
import { Fragment as
|
|
19133
|
+
import { Fragment as Fragment3, jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
19118
19134
|
function HelpOverlay(props) {
|
|
19119
19135
|
const { onClose } = props;
|
|
19120
19136
|
const { columns: terminalColumns, rows: terminalRows } = useTerminalSize();
|
|
@@ -19125,8 +19141,8 @@ function HelpOverlay(props) {
|
|
|
19125
19141
|
if (input === "h" || key.escape) onClose();
|
|
19126
19142
|
}, props.handleInput !== false);
|
|
19127
19143
|
if (props.sections) {
|
|
19128
|
-
return /* @__PURE__ */
|
|
19129
|
-
|
|
19144
|
+
return /* @__PURE__ */ jsxs21(
|
|
19145
|
+
Box20,
|
|
19130
19146
|
{
|
|
19131
19147
|
flexDirection: "column",
|
|
19132
19148
|
borderStyle: "round",
|
|
@@ -19135,19 +19151,19 @@ function HelpOverlay(props) {
|
|
|
19135
19151
|
height: panelHeight,
|
|
19136
19152
|
overflowY: "hidden",
|
|
19137
19153
|
children: [
|
|
19138
|
-
/* @__PURE__ */
|
|
19139
|
-
props.sections.map((section) => /* @__PURE__ */
|
|
19140
|
-
/* @__PURE__ */
|
|
19141
|
-
/* @__PURE__ */
|
|
19142
|
-
section.entries.map((entry) => /* @__PURE__ */
|
|
19154
|
+
/* @__PURE__ */ jsx24(Text22, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
|
|
19155
|
+
props.sections.map((section) => /* @__PURE__ */ jsxs21(React9.Fragment, { children: [
|
|
19156
|
+
/* @__PURE__ */ jsx24(Text22, { children: " " }),
|
|
19157
|
+
/* @__PURE__ */ jsx24(Text22, { bold: true, children: section.title }),
|
|
19158
|
+
section.entries.map((entry) => /* @__PURE__ */ jsx24(Text22, { children: entry.keys ? " " + entry.keys.padEnd(16) + " " + entry.label : " " + entry.label }, entry.keys + entry.label))
|
|
19143
19159
|
] }, section.title))
|
|
19144
19160
|
]
|
|
19145
19161
|
}
|
|
19146
19162
|
);
|
|
19147
19163
|
}
|
|
19148
19164
|
const mode = props.mode;
|
|
19149
|
-
return /* @__PURE__ */
|
|
19150
|
-
|
|
19165
|
+
return /* @__PURE__ */ jsxs21(
|
|
19166
|
+
Box20,
|
|
19151
19167
|
{
|
|
19152
19168
|
flexDirection: "column",
|
|
19153
19169
|
borderStyle: "round",
|
|
@@ -19156,38 +19172,38 @@ function HelpOverlay(props) {
|
|
|
19156
19172
|
height: panelHeight,
|
|
19157
19173
|
overflowY: "hidden",
|
|
19158
19174
|
children: [
|
|
19159
|
-
/* @__PURE__ */
|
|
19160
|
-
/* @__PURE__ */
|
|
19161
|
-
/* @__PURE__ */
|
|
19162
|
-
/* @__PURE__ */
|
|
19163
|
-
/* @__PURE__ */
|
|
19164
|
-
/* @__PURE__ */
|
|
19165
|
-
/* @__PURE__ */
|
|
19166
|
-
mode === "review" && /* @__PURE__ */
|
|
19167
|
-
/* @__PURE__ */
|
|
19168
|
-
/* @__PURE__ */
|
|
19169
|
-
/* @__PURE__ */
|
|
19170
|
-
/* @__PURE__ */
|
|
19171
|
-
/* @__PURE__ */
|
|
19172
|
-
/* @__PURE__ */
|
|
19173
|
-
/* @__PURE__ */
|
|
19174
|
-
/* @__PURE__ */
|
|
19175
|
-
/* @__PURE__ */
|
|
19176
|
-
/* @__PURE__ */
|
|
19177
|
-
/* @__PURE__ */
|
|
19178
|
-
/* @__PURE__ */
|
|
19179
|
-
/* @__PURE__ */
|
|
19175
|
+
/* @__PURE__ */ jsx24(Text22, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
|
|
19176
|
+
/* @__PURE__ */ jsx24(Text22, { children: " " }),
|
|
19177
|
+
/* @__PURE__ */ jsx24(Text22, { bold: true, children: "Navigation" }),
|
|
19178
|
+
/* @__PURE__ */ jsx24(Text22, { children: " \u2191 / k / PgUp Scroll up" }),
|
|
19179
|
+
/* @__PURE__ */ jsx24(Text22, { children: " \u2193 / j / PgDn Scroll down" }),
|
|
19180
|
+
/* @__PURE__ */ jsx24(Text22, { children: " g / Home Jump to top" }),
|
|
19181
|
+
/* @__PURE__ */ jsx24(Text22, { children: " G / End Jump to bottom" }),
|
|
19182
|
+
mode === "review" && /* @__PURE__ */ jsxs21(Fragment3, { children: [
|
|
19183
|
+
/* @__PURE__ */ jsx24(Text22, { children: " " }),
|
|
19184
|
+
/* @__PURE__ */ jsx24(Text22, { bold: true, children: "[Review mode only]" }),
|
|
19185
|
+
/* @__PURE__ */ jsx24(Text22, { children: " Tab Toggle sidebar/detail" }),
|
|
19186
|
+
/* @__PURE__ */ jsx24(Text22, { children: " a Accept component" }),
|
|
19187
|
+
/* @__PURE__ */ jsx24(Text22, { children: " r Reject component" }),
|
|
19188
|
+
/* @__PURE__ */ jsx24(Text22, { children: " e Edit proposal" }),
|
|
19189
|
+
/* @__PURE__ */ jsx24(Text22, { children: " s Toggle source code" }),
|
|
19190
|
+
/* @__PURE__ */ jsx24(Text22, { children: " A Approve all" }),
|
|
19191
|
+
/* @__PURE__ */ jsx24(Text22, { children: " F Open finalize dialog" }),
|
|
19192
|
+
/* @__PURE__ */ jsx24(Text22, { children: " Ctrl+S Save draft" }),
|
|
19193
|
+
/* @__PURE__ */ jsx24(Text22, { children: " Ctrl+Z Undo" }),
|
|
19194
|
+
/* @__PURE__ */ jsx24(Text22, { children: " Ctrl+Y Redo" }),
|
|
19195
|
+
/* @__PURE__ */ jsx24(Text22, { children: " Esc Exit edit / close" })
|
|
19180
19196
|
] }),
|
|
19181
|
-
/* @__PURE__ */
|
|
19182
|
-
/* @__PURE__ */
|
|
19183
|
-
/* @__PURE__ */
|
|
19197
|
+
/* @__PURE__ */ jsx24(Text22, { children: " " }),
|
|
19198
|
+
/* @__PURE__ */ jsx24(Text22, { children: " h Close help" }),
|
|
19199
|
+
/* @__PURE__ */ jsx24(Text22, { children: " q Quit" })
|
|
19184
19200
|
]
|
|
19185
19201
|
}
|
|
19186
19202
|
);
|
|
19187
19203
|
}
|
|
19188
19204
|
|
|
19189
19205
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/SearchMatchSummary.tsx
|
|
19190
|
-
import { Box as
|
|
19206
|
+
import { Box as Box21, Text as Text23 } from "ink";
|
|
19191
19207
|
|
|
19192
19208
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/autocomplete.ts
|
|
19193
19209
|
function longestCommonPrefix(names) {
|
|
@@ -19244,7 +19260,7 @@ function formatSearchMatchSummary(matches, total) {
|
|
|
19244
19260
|
}
|
|
19245
19261
|
|
|
19246
19262
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/SearchMatchSummary.tsx
|
|
19247
|
-
import { Fragment as
|
|
19263
|
+
import { Fragment as Fragment4, jsx as jsx25, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
19248
19264
|
function SearchMatchSummary({
|
|
19249
19265
|
open,
|
|
19250
19266
|
query,
|
|
@@ -19255,17 +19271,17 @@ function SearchMatchSummary({
|
|
|
19255
19271
|
marginTop
|
|
19256
19272
|
}) {
|
|
19257
19273
|
if (hidden) return null;
|
|
19258
|
-
return /* @__PURE__ */
|
|
19259
|
-
open && /* @__PURE__ */
|
|
19260
|
-
/* @__PURE__ */
|
|
19274
|
+
return /* @__PURE__ */ jsxs22(Fragment4, { children: [
|
|
19275
|
+
open && /* @__PURE__ */ jsxs22(Box21, { marginTop, flexDirection: "column", children: [
|
|
19276
|
+
/* @__PURE__ */ jsxs22(Text23, { children: [
|
|
19261
19277
|
`/${query}`,
|
|
19262
|
-
/* @__PURE__ */
|
|
19263
|
-
query && /* @__PURE__ */
|
|
19264
|
-
/* @__PURE__ */
|
|
19278
|
+
/* @__PURE__ */ jsx25(Text23, { color: PALETTE2.info, children: "\u258E" }),
|
|
19279
|
+
query && /* @__PURE__ */ jsx25(Text23, { color: PALETTE2.muted, children: formatSearchMatchSummary(matches, total) }),
|
|
19280
|
+
/* @__PURE__ */ jsx25(Text23, { children: " \xB7 [Esc] leave" })
|
|
19265
19281
|
] }),
|
|
19266
|
-
autocompleteCandidates.length > 1 && /* @__PURE__ */
|
|
19282
|
+
autocompleteCandidates.length > 1 && /* @__PURE__ */ jsx25(Text23, { color: PALETTE2.muted, children: ` possibilities: ${autocompleteCandidates.join(" \xB7 ").slice(0, 120)}` })
|
|
19267
19283
|
] }),
|
|
19268
|
-
!open && query && /* @__PURE__ */
|
|
19284
|
+
!open && query && /* @__PURE__ */ jsx25(Box21, { marginTop, children: /* @__PURE__ */ jsx25(Text23, { children: `/${query}${formatSearchMatchSummary(matches, total)} \xB7 [Esc] clear` }) })
|
|
19269
19285
|
] });
|
|
19270
19286
|
}
|
|
19271
19287
|
|
|
@@ -20402,7 +20418,7 @@ function useScopeGate({ components, onConfirm, onQuit }) {
|
|
|
20402
20418
|
}
|
|
20403
20419
|
|
|
20404
20420
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/screen.tsx
|
|
20405
|
-
import { Fragment as
|
|
20421
|
+
import { Fragment as Fragment5, jsx as jsx26, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
20406
20422
|
var HELP_SECTIONS = [
|
|
20407
20423
|
{
|
|
20408
20424
|
title: "Navigation",
|
|
@@ -20442,27 +20458,27 @@ var HELP_SECTIONS = [
|
|
|
20442
20458
|
];
|
|
20443
20459
|
function ScopeGateScreen(props) {
|
|
20444
20460
|
if (props.components.length === 0) {
|
|
20445
|
-
return /* @__PURE__ */
|
|
20461
|
+
return /* @__PURE__ */ jsx26(Box22, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx26(Text24, { color: PALETTE2.error, children: "Error: no components found for this session \u2014 please re-run analyze extract." }) });
|
|
20446
20462
|
}
|
|
20447
|
-
return /* @__PURE__ */
|
|
20463
|
+
return /* @__PURE__ */ jsx26(ScopeGateView, { ...props });
|
|
20448
20464
|
}
|
|
20449
20465
|
function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
20450
20466
|
const gate = useScopeGate({ components, onConfirm, onQuit });
|
|
20451
20467
|
const { search, graph, columnPlan, panelLayout, counters } = gate;
|
|
20452
20468
|
if (gate.showHelp) {
|
|
20453
|
-
return /* @__PURE__ */
|
|
20469
|
+
return /* @__PURE__ */ jsx26(HelpOverlay, { sections: HELP_SECTIONS, handleInput: false, onClose: gate.closeHelp });
|
|
20454
20470
|
}
|
|
20455
|
-
return /* @__PURE__ */
|
|
20456
|
-
/* @__PURE__ */
|
|
20457
|
-
/* @__PURE__ */
|
|
20458
|
-
gate.aiExcludedCount > 0 && /* @__PURE__ */
|
|
20471
|
+
return /* @__PURE__ */ jsxs23(Box22, { flexDirection: "column", paddingX: 2, children: [
|
|
20472
|
+
/* @__PURE__ */ jsxs23(Box22, { flexDirection: "row", flexWrap: "wrap", children: [
|
|
20473
|
+
/* @__PURE__ */ jsx26(CounterStrip, { counters, totalWidth: gate.totalWidth }),
|
|
20474
|
+
gate.aiExcludedCount > 0 && /* @__PURE__ */ jsxs23(Text24, { color: PALETTE2.muted, children: [
|
|
20459
20475
|
`${gate.aiExcludedCount} component${gate.aiExcludedCount === 1 ? "" : "s"} flagged by AI`,
|
|
20460
|
-
gate.aiRows.length > 0 && /* @__PURE__ */
|
|
20476
|
+
gate.aiRows.length > 0 && /* @__PURE__ */ jsx26(Text24, { color: PALETTE2.info, children: " \u2014 press [x] to see why" })
|
|
20461
20477
|
] })
|
|
20462
20478
|
] }),
|
|
20463
|
-
graph.cycles.length > 0 && /* @__PURE__ */
|
|
20464
|
-
/* @__PURE__ */
|
|
20465
|
-
gate.aiRationalePanelOpen ? /* @__PURE__ */
|
|
20479
|
+
graph.cycles.length > 0 && /* @__PURE__ */ jsx26(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx26(Text24, { 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." }) }),
|
|
20480
|
+
/* @__PURE__ */ jsxs23(Box22, { flexDirection: "row", alignItems: "stretch", children: [
|
|
20481
|
+
gate.aiRationalePanelOpen ? /* @__PURE__ */ jsx26(
|
|
20466
20482
|
GotoBanner,
|
|
20467
20483
|
{
|
|
20468
20484
|
title: `Review flags (${gate.aiExcludedCount})`,
|
|
@@ -20472,7 +20488,7 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
20472
20488
|
width: columnPlan.main,
|
|
20473
20489
|
footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [x/Esc] close"
|
|
20474
20490
|
}
|
|
20475
|
-
) : /* @__PURE__ */
|
|
20491
|
+
) : /* @__PURE__ */ jsx26(
|
|
20476
20492
|
GroupedSidebar,
|
|
20477
20493
|
{
|
|
20478
20494
|
items: gate.groupedItems,
|
|
@@ -20500,9 +20516,9 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
20500
20516
|
graph: graph.nodes
|
|
20501
20517
|
}
|
|
20502
20518
|
),
|
|
20503
|
-
columnPlan.layout === "two-column" && /* @__PURE__ */
|
|
20504
|
-
/* @__PURE__ */
|
|
20505
|
-
/* @__PURE__ */
|
|
20519
|
+
columnPlan.layout === "two-column" && /* @__PURE__ */ jsxs23(Fragment5, { children: [
|
|
20520
|
+
/* @__PURE__ */ jsx26(Box22, { width: 2, flexShrink: 0 }),
|
|
20521
|
+
/* @__PURE__ */ jsx26(
|
|
20506
20522
|
AddedColumn,
|
|
20507
20523
|
{
|
|
20508
20524
|
width: columnPlan.added,
|
|
@@ -20517,9 +20533,9 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
20517
20533
|
)
|
|
20518
20534
|
] })
|
|
20519
20535
|
] }),
|
|
20520
|
-
gate.cyclesPanelOpen && /* @__PURE__ */
|
|
20521
|
-
gate.pendingRejectCascade && /* @__PURE__ */
|
|
20522
|
-
/* @__PURE__ */
|
|
20536
|
+
gate.cyclesPanelOpen && /* @__PURE__ */ jsx26(CyclesPanel, { cycles: gate.slotCycles, cursor: gate.cyclesCursor }),
|
|
20537
|
+
gate.pendingRejectCascade && /* @__PURE__ */ jsx26(RejectPrompt, { pending: gate.pendingRejectCascade }),
|
|
20538
|
+
/* @__PURE__ */ jsx26(
|
|
20523
20539
|
SearchMatchSummary,
|
|
20524
20540
|
{
|
|
20525
20541
|
open: search.searchOpen,
|
|
@@ -20530,7 +20546,7 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
20530
20546
|
marginTop: 1
|
|
20531
20547
|
}
|
|
20532
20548
|
),
|
|
20533
|
-
/* @__PURE__ */
|
|
20549
|
+
/* @__PURE__ */ jsx26(
|
|
20534
20550
|
CompactControlBar,
|
|
20535
20551
|
{
|
|
20536
20552
|
hasGroupRoots: gate.hasGroupRoots,
|
|
@@ -20639,7 +20655,7 @@ function progressRows2(progress, agent) {
|
|
|
20639
20655
|
}
|
|
20640
20656
|
|
|
20641
20657
|
// packages/experience-design-system-cli/src/tui/import/steps/08-generation/screen.tsx
|
|
20642
|
-
import { jsx as
|
|
20658
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
20643
20659
|
function GenerationScreen({
|
|
20644
20660
|
progress,
|
|
20645
20661
|
agent,
|
|
@@ -20648,7 +20664,7 @@ function GenerationScreen({
|
|
|
20648
20664
|
stepNumber,
|
|
20649
20665
|
totalSteps
|
|
20650
20666
|
}) {
|
|
20651
|
-
return /* @__PURE__ */
|
|
20667
|
+
return /* @__PURE__ */ jsx27(
|
|
20652
20668
|
RunningStep,
|
|
20653
20669
|
{
|
|
20654
20670
|
stepNumber,
|
|
@@ -20874,7 +20890,7 @@ function buildFlowStart(input) {
|
|
|
20874
20890
|
}
|
|
20875
20891
|
|
|
20876
20892
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/screen.tsx
|
|
20877
|
-
import { Box as
|
|
20893
|
+
import { Box as Box43 } from "ink";
|
|
20878
20894
|
|
|
20879
20895
|
// packages/experience-design-system-types/dist/src/cdf/validate.js
|
|
20880
20896
|
import { Ajv as Ajv2 } from "ajv";
|
|
@@ -21194,7 +21210,7 @@ function skipLabel(matchedNames) {
|
|
|
21194
21210
|
}
|
|
21195
21211
|
|
|
21196
21212
|
// packages/experience-design-system-cli/src/tui/import/steps/preview-validation-error/screen.tsx
|
|
21197
|
-
import { jsx as
|
|
21213
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
21198
21214
|
function PreviewValidationErrorScreen({
|
|
21199
21215
|
errors,
|
|
21200
21216
|
missingNames,
|
|
@@ -21203,7 +21219,7 @@ function PreviewValidationErrorScreen({
|
|
|
21203
21219
|
onQuit
|
|
21204
21220
|
}) {
|
|
21205
21221
|
const matchedNames = matchedComponentNames(errors, missingNames);
|
|
21206
|
-
return /* @__PURE__ */
|
|
21222
|
+
return /* @__PURE__ */ jsx28(
|
|
21207
21223
|
GateStep,
|
|
21208
21224
|
{
|
|
21209
21225
|
intent: "error",
|
|
@@ -21239,7 +21255,7 @@ function getReviewJsonPanelValue(selected, showHiddenProps) {
|
|
|
21239
21255
|
}
|
|
21240
21256
|
|
|
21241
21257
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx
|
|
21242
|
-
import { Box as
|
|
21258
|
+
import { Box as Box35, Text as Text38 } from "ink";
|
|
21243
21259
|
|
|
21244
21260
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/graph/cycle-view.ts
|
|
21245
21261
|
function computeCycleView(components) {
|
|
@@ -21478,12 +21494,12 @@ function enumerateCycleBreaks(cycle, components) {
|
|
|
21478
21494
|
}
|
|
21479
21495
|
|
|
21480
21496
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewComponentPanel.tsx
|
|
21481
|
-
import { Box as
|
|
21497
|
+
import { Box as Box29, Text as Text32 } from "ink";
|
|
21482
21498
|
|
|
21483
21499
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx
|
|
21484
21500
|
import React10, { useEffect as useEffect11, useLayoutEffect as useLayoutEffect2, useState as useState17 } from "react";
|
|
21485
21501
|
import figures5 from "figures";
|
|
21486
|
-
import { Box as
|
|
21502
|
+
import { Box as Box23, measureElement, Text as Text25 } from "ink";
|
|
21487
21503
|
|
|
21488
21504
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/scroll-offset.ts
|
|
21489
21505
|
function computeNextScrollOffset(current, input, key, totalLines, panelHeight) {
|
|
@@ -21514,7 +21530,7 @@ function computeNextScrollOffset(current, input, key, totalLines, panelHeight) {
|
|
|
21514
21530
|
}
|
|
21515
21531
|
|
|
21516
21532
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx
|
|
21517
|
-
import { Fragment as
|
|
21533
|
+
import { Fragment as Fragment6, jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
21518
21534
|
function createCommonRowProps(selected, focusLevel, editingField, textCursor, valueCursor, cursorVisible, editingValue, valueText, width) {
|
|
21519
21535
|
return {
|
|
21520
21536
|
selected,
|
|
@@ -21652,14 +21668,14 @@ function serializeState(state2, originalJson) {
|
|
|
21652
21668
|
return JSON.stringify(entry, null, 2);
|
|
21653
21669
|
}
|
|
21654
21670
|
function Picker({ value, active }) {
|
|
21655
|
-
return /* @__PURE__ */
|
|
21656
|
-
active && /* @__PURE__ */
|
|
21657
|
-
/* @__PURE__ */
|
|
21658
|
-
active && /* @__PURE__ */
|
|
21671
|
+
return /* @__PURE__ */ jsxs24(Box23, { children: [
|
|
21672
|
+
active && /* @__PURE__ */ jsx29(Text25, { color: PALETTE.warning, children: "\u2039" }),
|
|
21673
|
+
/* @__PURE__ */ jsx29(Text25, { color: active ? PALETTE.warning : void 0, bold: active, children: value }),
|
|
21674
|
+
active && /* @__PURE__ */ jsx29(Text25, { color: PALETTE.warning, children: "\u203A" })
|
|
21659
21675
|
] });
|
|
21660
21676
|
}
|
|
21661
21677
|
function Toggle({ value, active }) {
|
|
21662
|
-
return /* @__PURE__ */
|
|
21678
|
+
return /* @__PURE__ */ jsx29(Box23, { children: /* @__PURE__ */ jsx29(Text25, { color: active ? PALETTE.warning : value ? PALETTE.success : PALETTE.border, children: value ? "[\u2713]" : "[ ]" }) });
|
|
21663
21679
|
}
|
|
21664
21680
|
function InlinePropField({
|
|
21665
21681
|
label,
|
|
@@ -21668,8 +21684,8 @@ function InlinePropField({
|
|
|
21668
21684
|
flexible = false,
|
|
21669
21685
|
width
|
|
21670
21686
|
}) {
|
|
21671
|
-
return /* @__PURE__ */
|
|
21672
|
-
/* @__PURE__ */
|
|
21687
|
+
return /* @__PURE__ */ jsxs24(Box23, { width, gap: 1, flexShrink: flexible ? 1 : 0, flexGrow: flexible ? 1 : 0, flexWrap: "wrap", children: [
|
|
21688
|
+
/* @__PURE__ */ jsxs24(Text25, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, wrap: "truncate-end", children: [
|
|
21673
21689
|
focused ? "\u203A " : " ",
|
|
21674
21690
|
label
|
|
21675
21691
|
] }),
|
|
@@ -21682,19 +21698,19 @@ function RequiredField({
|
|
|
21682
21698
|
editingField,
|
|
21683
21699
|
activeField
|
|
21684
21700
|
}) {
|
|
21685
|
-
return /* @__PURE__ */
|
|
21701
|
+
return /* @__PURE__ */ jsx29(InlinePropField, { label: "req:", focused, children: /* @__PURE__ */ jsx29(Toggle, { value, active: editingField && activeField === "required" }) });
|
|
21686
21702
|
}
|
|
21687
21703
|
function DefaultValueRow({
|
|
21688
21704
|
display,
|
|
21689
21705
|
active,
|
|
21690
21706
|
focused
|
|
21691
21707
|
}) {
|
|
21692
|
-
return /* @__PURE__ */
|
|
21693
|
-
/* @__PURE__ */
|
|
21708
|
+
return /* @__PURE__ */ jsxs24(Box23, { gap: 1, flexWrap: "wrap", flexShrink: 0, children: [
|
|
21709
|
+
/* @__PURE__ */ jsxs24(Text25, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
21694
21710
|
focused ? "\u203A " : " ",
|
|
21695
21711
|
"default:"
|
|
21696
21712
|
] }),
|
|
21697
|
-
active ? /* @__PURE__ */
|
|
21713
|
+
active ? /* @__PURE__ */ jsx29(Picker, { value: display, active: true }) : /* @__PURE__ */ jsx29(Text25, { wrap: "wrap", children: display })
|
|
21698
21714
|
] });
|
|
21699
21715
|
}
|
|
21700
21716
|
function RowLabel({
|
|
@@ -21702,8 +21718,8 @@ function RowLabel({
|
|
|
21702
21718
|
selected,
|
|
21703
21719
|
trailing = true
|
|
21704
21720
|
}) {
|
|
21705
|
-
return /* @__PURE__ */
|
|
21706
|
-
|
|
21721
|
+
return /* @__PURE__ */ jsxs24(
|
|
21722
|
+
Text25,
|
|
21707
21723
|
{
|
|
21708
21724
|
color: selected ? "#FFFFFF" : PALETTE.accent,
|
|
21709
21725
|
bold: selected,
|
|
@@ -21722,10 +21738,10 @@ function ValueInputRow({
|
|
|
21722
21738
|
valueText,
|
|
21723
21739
|
cursorVisible
|
|
21724
21740
|
}) {
|
|
21725
|
-
return /* @__PURE__ */
|
|
21726
|
-
/* @__PURE__ */
|
|
21727
|
-
/* @__PURE__ */
|
|
21728
|
-
/* @__PURE__ */
|
|
21741
|
+
return /* @__PURE__ */ jsxs24(Box23, { paddingLeft: 2, children: [
|
|
21742
|
+
/* @__PURE__ */ jsx29(Text25, { color: PALETTE.accent, children: mode === "edit" ? "\u270E " : "+ " }),
|
|
21743
|
+
/* @__PURE__ */ jsx29(Text25, { children: valueText }),
|
|
21744
|
+
/* @__PURE__ */ jsx29(Text25, { inverse: cursorVisible, children: " " })
|
|
21729
21745
|
] });
|
|
21730
21746
|
}
|
|
21731
21747
|
function EditableListItem({
|
|
@@ -21738,9 +21754,9 @@ function EditableListItem({
|
|
|
21738
21754
|
}) {
|
|
21739
21755
|
const isBeingEdited = editingValue?.mode === "edit" && editingValue.index === index;
|
|
21740
21756
|
if (isBeingEdited) {
|
|
21741
|
-
return /* @__PURE__ */
|
|
21757
|
+
return /* @__PURE__ */ jsx29(ValueInputRow, { mode: "edit", valueText, cursorVisible });
|
|
21742
21758
|
}
|
|
21743
|
-
return /* @__PURE__ */
|
|
21759
|
+
return /* @__PURE__ */ jsx29(Box23, { gap: 1, paddingLeft: 2, children: /* @__PURE__ */ jsx29(Text25, { color: active ? PALETTE.accent : void 0, children: active ? `${figures5.pointer} ${value}` : ` ${value}` }) });
|
|
21744
21760
|
}
|
|
21745
21761
|
function EditableValueList({
|
|
21746
21762
|
values,
|
|
@@ -21753,9 +21769,9 @@ function EditableValueList({
|
|
|
21753
21769
|
emptyPaddingLeft,
|
|
21754
21770
|
showAddInput
|
|
21755
21771
|
}) {
|
|
21756
|
-
return /* @__PURE__ */
|
|
21757
|
-
values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */
|
|
21758
|
-
values.map((value, index) => /* @__PURE__ */
|
|
21772
|
+
return /* @__PURE__ */ jsxs24(Fragment6, { children: [
|
|
21773
|
+
values.length === 0 && !editingValue && (emptyPaddingLeft === void 0 ? /* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, children: emptyMessage }) : /* @__PURE__ */ jsx29(Box23, { paddingLeft: emptyPaddingLeft, children: /* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, children: emptyMessage }) })),
|
|
21774
|
+
values.map((value, index) => /* @__PURE__ */ jsx29(
|
|
21759
21775
|
EditableListItem,
|
|
21760
21776
|
{
|
|
21761
21777
|
value,
|
|
@@ -21767,7 +21783,7 @@ function EditableValueList({
|
|
|
21767
21783
|
},
|
|
21768
21784
|
index
|
|
21769
21785
|
)),
|
|
21770
|
-
showAddInput && editingValue?.mode === "add" && /* @__PURE__ */
|
|
21786
|
+
showAddInput && editingValue?.mode === "add" && /* @__PURE__ */ jsx29(ValueInputRow, { mode: "add", valueText, cursorVisible })
|
|
21771
21787
|
] });
|
|
21772
21788
|
}
|
|
21773
21789
|
function DefaultSubRow({
|
|
@@ -21779,51 +21795,51 @@ function DefaultSubRow({
|
|
|
21779
21795
|
}) {
|
|
21780
21796
|
const cursor = cursorVisible ? "\u2588" : " ";
|
|
21781
21797
|
if (prop.type === "richtext" || prop.type === "media" || prop.type === "link") {
|
|
21782
|
-
return /* @__PURE__ */
|
|
21783
|
-
/* @__PURE__ */
|
|
21798
|
+
return /* @__PURE__ */ jsxs24(Box23, { gap: 1, flexShrink: 0, children: [
|
|
21799
|
+
/* @__PURE__ */ jsxs24(Text25, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
21784
21800
|
focused ? "\u203A " : " ",
|
|
21785
21801
|
"default:"
|
|
21786
21802
|
] }),
|
|
21787
|
-
/* @__PURE__ */
|
|
21803
|
+
/* @__PURE__ */ jsx29(Text25, { color: focused ? void 0 : PALETTE.muted, children: "(not applicable)" })
|
|
21788
21804
|
] });
|
|
21789
21805
|
}
|
|
21790
21806
|
if (prop.type === "boolean") {
|
|
21791
21807
|
const display = prop.default === true ? "true" : prop.default === false ? "false" : "(unset)";
|
|
21792
|
-
return /* @__PURE__ */
|
|
21808
|
+
return /* @__PURE__ */ jsx29(DefaultValueRow, { display, active, focused });
|
|
21793
21809
|
}
|
|
21794
21810
|
if (prop.type === "enum") {
|
|
21795
21811
|
if (prop.values.length === 0) {
|
|
21796
|
-
return /* @__PURE__ */
|
|
21797
|
-
/* @__PURE__ */
|
|
21812
|
+
return /* @__PURE__ */ jsxs24(Box23, { gap: 1, flexShrink: 0, children: [
|
|
21813
|
+
/* @__PURE__ */ jsxs24(Text25, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
21798
21814
|
focused ? "\u203A " : " ",
|
|
21799
21815
|
"default:"
|
|
21800
21816
|
] }),
|
|
21801
|
-
/* @__PURE__ */
|
|
21817
|
+
/* @__PURE__ */ jsx29(Text25, { color: focused ? void 0 : PALETTE.muted, children: "(no values defined)" })
|
|
21802
21818
|
] });
|
|
21803
21819
|
}
|
|
21804
21820
|
const display = typeof prop.default === "string" && prop.default !== "" ? prop.default : "(unset)";
|
|
21805
|
-
return /* @__PURE__ */
|
|
21821
|
+
return /* @__PURE__ */ jsx29(DefaultValueRow, { display, active, focused });
|
|
21806
21822
|
}
|
|
21807
21823
|
const value = typeof prop.default === "string" ? prop.default : "";
|
|
21808
21824
|
if (active) {
|
|
21809
|
-
return /* @__PURE__ */
|
|
21810
|
-
/* @__PURE__ */
|
|
21825
|
+
return /* @__PURE__ */ jsxs24(Box23, { flexDirection: "row", flexShrink: 0, children: [
|
|
21826
|
+
/* @__PURE__ */ jsxs24(Text25, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
21811
21827
|
focused ? "\u203A " : " ",
|
|
21812
21828
|
"default:"
|
|
21813
21829
|
] }),
|
|
21814
|
-
/* @__PURE__ */
|
|
21815
|
-
/* @__PURE__ */
|
|
21816
|
-
/* @__PURE__ */
|
|
21817
|
-
/* @__PURE__ */
|
|
21830
|
+
/* @__PURE__ */ jsxs24(Box23, { flexGrow: 1, borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
21831
|
+
/* @__PURE__ */ jsx29(Text25, { children: value.slice(0, textCursor) }),
|
|
21832
|
+
/* @__PURE__ */ jsx29(Text25, { inverse: cursorVisible, children: value[textCursor] ?? cursor }),
|
|
21833
|
+
/* @__PURE__ */ jsx29(Text25, { children: value.slice(textCursor + 1) })
|
|
21818
21834
|
] })
|
|
21819
21835
|
] });
|
|
21820
21836
|
}
|
|
21821
|
-
return /* @__PURE__ */
|
|
21822
|
-
/* @__PURE__ */
|
|
21837
|
+
return /* @__PURE__ */ jsxs24(Box23, { gap: 1, flexShrink: 0, children: [
|
|
21838
|
+
/* @__PURE__ */ jsxs24(Text25, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
21823
21839
|
focused ? "\u203A " : " ",
|
|
21824
21840
|
"default:"
|
|
21825
21841
|
] }),
|
|
21826
|
-
/* @__PURE__ */
|
|
21842
|
+
/* @__PURE__ */ jsx29(Text25, { color: focused || value ? void 0 : PALETTE.muted, children: value || "(none)" })
|
|
21827
21843
|
] });
|
|
21828
21844
|
}
|
|
21829
21845
|
function DescriptionField({
|
|
@@ -21838,20 +21854,20 @@ function DescriptionField({
|
|
|
21838
21854
|
paddingLeft = 2
|
|
21839
21855
|
}) {
|
|
21840
21856
|
if (compact) {
|
|
21841
|
-
return /* @__PURE__ */
|
|
21842
|
-
/* @__PURE__ */
|
|
21857
|
+
return /* @__PURE__ */ jsxs24(Box23, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
21858
|
+
/* @__PURE__ */ jsxs24(Text25, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
21843
21859
|
focused ? "\u203A " : " ",
|
|
21844
21860
|
label
|
|
21845
21861
|
] }),
|
|
21846
|
-
/* @__PURE__ */
|
|
21862
|
+
/* @__PURE__ */ jsx29(Text25, { wrap: "truncate-end", color: value ? void 0 : PALETTE.muted, children: value || "\u2014" })
|
|
21847
21863
|
] });
|
|
21848
21864
|
}
|
|
21849
|
-
return /* @__PURE__ */
|
|
21850
|
-
/* @__PURE__ */
|
|
21865
|
+
return /* @__PURE__ */ jsxs24(Box23, { paddingLeft, flexDirection: "column", width, flexShrink: 0, children: [
|
|
21866
|
+
/* @__PURE__ */ jsxs24(Text25, { color: focused ? PALETTE.warning : PALETTE.muted, bold: focused, children: [
|
|
21851
21867
|
focused ? "\u203A " : " ",
|
|
21852
21868
|
label
|
|
21853
21869
|
] }),
|
|
21854
|
-
editing ? /* @__PURE__ */
|
|
21870
|
+
editing ? /* @__PURE__ */ jsx29(EditableDescription, { cursorVisible, value, textCursor }) : /* @__PURE__ */ jsx29(Text25, { wrap: "wrap", children: value || "\u2014" })
|
|
21855
21871
|
] });
|
|
21856
21872
|
}
|
|
21857
21873
|
function EditableDescription({
|
|
@@ -21859,9 +21875,9 @@ function EditableDescription({
|
|
|
21859
21875
|
value,
|
|
21860
21876
|
textCursor
|
|
21861
21877
|
}) {
|
|
21862
|
-
return /* @__PURE__ */
|
|
21878
|
+
return /* @__PURE__ */ jsxs24(Text25, { wrap: "wrap", children: [
|
|
21863
21879
|
value.slice(0, textCursor),
|
|
21864
|
-
/* @__PURE__ */
|
|
21880
|
+
/* @__PURE__ */ jsx29(Text25, { inverse: cursorVisible, children: value[textCursor] ?? " " }),
|
|
21865
21881
|
value.slice(textCursor + 1)
|
|
21866
21882
|
] });
|
|
21867
21883
|
}
|
|
@@ -21882,9 +21898,9 @@ function PropRow({
|
|
|
21882
21898
|
}) {
|
|
21883
21899
|
const descFocused = activeField === "description";
|
|
21884
21900
|
const descActive = editingField && descFocused;
|
|
21885
|
-
return /* @__PURE__ */
|
|
21886
|
-
/* @__PURE__ */
|
|
21887
|
-
/* @__PURE__ */
|
|
21901
|
+
return /* @__PURE__ */ jsxs24(Box23, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
21902
|
+
/* @__PURE__ */ jsx29(Box23, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx29(RowLabel, { name: prop.name, selected }) }),
|
|
21903
|
+
/* @__PURE__ */ jsx29(
|
|
21888
21904
|
DescriptionField,
|
|
21889
21905
|
{
|
|
21890
21906
|
value: prop.description,
|
|
@@ -21897,8 +21913,8 @@ function PropRow({
|
|
|
21897
21913
|
paddingLeft: 0
|
|
21898
21914
|
}
|
|
21899
21915
|
),
|
|
21900
|
-
/* @__PURE__ */
|
|
21901
|
-
/* @__PURE__ */
|
|
21916
|
+
/* @__PURE__ */ jsxs24(Box23, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
21917
|
+
/* @__PURE__ */ jsx29(
|
|
21902
21918
|
RequiredField,
|
|
21903
21919
|
{
|
|
21904
21920
|
value: prop.required,
|
|
@@ -21907,21 +21923,21 @@ function PropRow({
|
|
|
21907
21923
|
activeField
|
|
21908
21924
|
}
|
|
21909
21925
|
),
|
|
21910
|
-
/* @__PURE__ */
|
|
21926
|
+
/* @__PURE__ */ jsx29(InlinePropField, { label: "type:", focused: activeField === "type", children: editingField && activeField === "type" ? /* @__PURE__ */ jsx29(Picker, { value: prop.type, active: true }) : /* @__PURE__ */ jsx29(Text25, { children: prop.type }) })
|
|
21911
21927
|
] }),
|
|
21912
|
-
prop.type === "token" && /* @__PURE__ */
|
|
21913
|
-
prop.type === "enum" && /* @__PURE__ */
|
|
21914
|
-
/* @__PURE__ */
|
|
21928
|
+
prop.type === "token" && /* @__PURE__ */ jsx29(InlinePropField, { label: "kind:", focused: activeField === "tokenKind", width, children: editingField && activeField === "tokenKind" ? /* @__PURE__ */ jsx29(Picker, { value: prop.tokenKind || DESIGN_TOKEN_TYPES2[0], active: true }) : /* @__PURE__ */ jsx29(Text25, { wrap: "wrap", children: prop.tokenKind || "\u2014" }) }),
|
|
21929
|
+
prop.type === "enum" && /* @__PURE__ */ jsxs24(Box23, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
21930
|
+
/* @__PURE__ */ jsxs24(Text25, { color: activeField === "values" ? PALETTE.warning : PALETTE.muted, bold: activeField === "values", children: [
|
|
21915
21931
|
activeField === "values" ? "\u203A " : " ",
|
|
21916
21932
|
"values:"
|
|
21917
21933
|
] }),
|
|
21918
|
-
/* @__PURE__ */
|
|
21934
|
+
/* @__PURE__ */ jsxs24(Text25, { wrap: "wrap", children: [
|
|
21919
21935
|
"[",
|
|
21920
21936
|
prop.values.join(", "),
|
|
21921
21937
|
"]"
|
|
21922
21938
|
] })
|
|
21923
21939
|
] }),
|
|
21924
|
-
/* @__PURE__ */
|
|
21940
|
+
/* @__PURE__ */ jsx29(
|
|
21925
21941
|
DefaultSubRow,
|
|
21926
21942
|
{
|
|
21927
21943
|
prop,
|
|
@@ -21931,13 +21947,13 @@ function PropRow({
|
|
|
21931
21947
|
cursorVisible
|
|
21932
21948
|
}
|
|
21933
21949
|
),
|
|
21934
|
-
prop.type === "token" && prop.category === "design" && /* @__PURE__ */
|
|
21935
|
-
/* @__PURE__ */
|
|
21950
|
+
prop.type === "token" && prop.category === "design" && /* @__PURE__ */ jsxs24(Box23, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
21951
|
+
/* @__PURE__ */ jsxs24(Text25, { color: activeField === "allowed" ? PALETTE.warning : PALETTE.muted, bold: activeField === "allowed", children: [
|
|
21936
21952
|
activeField === "allowed" ? "\u203A " : " ",
|
|
21937
21953
|
"allowed:"
|
|
21938
21954
|
] }),
|
|
21939
|
-
editingField && activeField === "allowed" ? /* @__PURE__ */
|
|
21940
|
-
|
|
21955
|
+
editingField && activeField === "allowed" ? /* @__PURE__ */ jsx29(Box23, { width: Math.max(1, width - 4), borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: /* @__PURE__ */ jsx29(Text25, { children: "press [t] to edit allowed tokens" }) }) : /* @__PURE__ */ jsx29(
|
|
21956
|
+
Text25,
|
|
21941
21957
|
{
|
|
21942
21958
|
color: activeField !== "allowed" && prop.allowed.length === 0 ? PALETTE.muted : void 0,
|
|
21943
21959
|
wrap: "wrap",
|
|
@@ -21945,17 +21961,17 @@ function PropRow({
|
|
|
21945
21961
|
}
|
|
21946
21962
|
)
|
|
21947
21963
|
] }),
|
|
21948
|
-
selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */
|
|
21964
|
+
selected && showRationale && rationale && rationale.trim().length > 0 && /* @__PURE__ */ jsx29(Box23, { paddingLeft: 2, children: /* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, children: (() => {
|
|
21949
21965
|
const max = Math.max(8, width - 8);
|
|
21950
21966
|
const text = `~ ${rationale}`;
|
|
21951
21967
|
return text.length > max ? text.slice(0, max - 1) + "\u2026" : text;
|
|
21952
21968
|
})() }) }, rowKey ? `rationale-${rowKey}` : void 0),
|
|
21953
|
-
selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */
|
|
21954
|
-
/* @__PURE__ */
|
|
21955
|
-
/* @__PURE__ */
|
|
21956
|
-
activeField === "values" && /* @__PURE__ */
|
|
21969
|
+
selected && prop.type === "enum" && activeField === "values" && /* @__PURE__ */ jsxs24(Box23, { paddingLeft: 2, flexDirection: "column", children: [
|
|
21970
|
+
/* @__PURE__ */ jsxs24(Box23, { children: [
|
|
21971
|
+
/* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, children: "values:" }),
|
|
21972
|
+
activeField === "values" && /* @__PURE__ */ jsx29(Text25, { children: " [a] add [e] edit [r] remove [\u2191\u2193] navigate [K/J] reorder" })
|
|
21957
21973
|
] }),
|
|
21958
|
-
/* @__PURE__ */
|
|
21974
|
+
/* @__PURE__ */ jsx29(
|
|
21959
21975
|
EditableValueList,
|
|
21960
21976
|
{
|
|
21961
21977
|
values: prop.values,
|
|
@@ -21985,9 +22001,9 @@ function SlotRow({
|
|
|
21985
22001
|
pickerCandidates,
|
|
21986
22002
|
pickerCursor
|
|
21987
22003
|
}) {
|
|
21988
|
-
return /* @__PURE__ */
|
|
21989
|
-
/* @__PURE__ */
|
|
21990
|
-
/* @__PURE__ */
|
|
22004
|
+
return /* @__PURE__ */ jsxs24(Box23, { flexDirection: "column", width, flexShrink: 0, children: [
|
|
22005
|
+
/* @__PURE__ */ jsx29(Box23, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx29(RowLabel, { name: slot.name, selected, trailing: false }) }),
|
|
22006
|
+
/* @__PURE__ */ jsx29(
|
|
21991
22007
|
DescriptionField,
|
|
21992
22008
|
{
|
|
21993
22009
|
value: slot.description,
|
|
@@ -22000,7 +22016,7 @@ function SlotRow({
|
|
|
22000
22016
|
paddingLeft: 0
|
|
22001
22017
|
}
|
|
22002
22018
|
),
|
|
22003
|
-
/* @__PURE__ */
|
|
22019
|
+
/* @__PURE__ */ jsx29(Box23, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: /* @__PURE__ */ jsx29(
|
|
22004
22020
|
RequiredField,
|
|
22005
22021
|
{
|
|
22006
22022
|
value: slot.required,
|
|
@@ -22009,9 +22025,9 @@ function SlotRow({
|
|
|
22009
22025
|
activeField
|
|
22010
22026
|
}
|
|
22011
22027
|
) }),
|
|
22012
|
-
!(selected && editingField && activeField === "allowedComponents") && /* @__PURE__ */
|
|
22013
|
-
/* @__PURE__ */
|
|
22014
|
-
|
|
22028
|
+
!(selected && editingField && activeField === "allowedComponents") && /* @__PURE__ */ jsxs24(Box23, { gap: 1, flexWrap: "wrap", width, flexShrink: 0, children: [
|
|
22029
|
+
/* @__PURE__ */ jsxs24(
|
|
22030
|
+
Text25,
|
|
22015
22031
|
{
|
|
22016
22032
|
color: activeField === "allowedComponents" ? PALETTE.warning : PALETTE.muted,
|
|
22017
22033
|
bold: activeField === "allowedComponents",
|
|
@@ -22021,12 +22037,12 @@ function SlotRow({
|
|
|
22021
22037
|
]
|
|
22022
22038
|
}
|
|
22023
22039
|
),
|
|
22024
|
-
slot.allowedComponents.length === 0 ? /* @__PURE__ */
|
|
22040
|
+
slot.allowedComponents.length === 0 ? /* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, children: "(any)" }) : /* @__PURE__ */ jsx29(Text25, { wrap: "wrap", children: slot.allowedComponents.join(", ") })
|
|
22025
22041
|
] }),
|
|
22026
|
-
selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */
|
|
22027
|
-
/* @__PURE__ */
|
|
22028
|
-
/* @__PURE__ */
|
|
22029
|
-
|
|
22042
|
+
selected && editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsxs24(Box23, { flexDirection: "column", children: [
|
|
22043
|
+
/* @__PURE__ */ jsxs24(Box23, { children: [
|
|
22044
|
+
/* @__PURE__ */ jsxs24(
|
|
22045
|
+
Text25,
|
|
22030
22046
|
{
|
|
22031
22047
|
color: activeField === "allowedComponents" ? PALETTE.warning : PALETTE.muted,
|
|
22032
22048
|
bold: activeField === "allowedComponents",
|
|
@@ -22036,9 +22052,9 @@ function SlotRow({
|
|
|
22036
22052
|
]
|
|
22037
22053
|
}
|
|
22038
22054
|
),
|
|
22039
|
-
editingField && activeField === "allowedComponents" && /* @__PURE__ */
|
|
22055
|
+
editingField && activeField === "allowedComponents" && /* @__PURE__ */ jsx29(Text25, { 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" })
|
|
22040
22056
|
] }),
|
|
22041
|
-
/* @__PURE__ */
|
|
22057
|
+
/* @__PURE__ */ jsx29(
|
|
22042
22058
|
EditableValueList,
|
|
22043
22059
|
{
|
|
22044
22060
|
values: slot.allowedComponents,
|
|
@@ -22052,21 +22068,21 @@ function SlotRow({
|
|
|
22052
22068
|
showAddInput: editingField && activeField === "allowedComponents"
|
|
22053
22069
|
}
|
|
22054
22070
|
),
|
|
22055
|
-
editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */
|
|
22071
|
+
editingField && editingValue?.mode === "add" && activeField === "allowedComponents" && pickerCandidates !== null && /* @__PURE__ */ jsx29(Box23, { paddingLeft: 2, flexDirection: "column", children: pickerCandidates.length === 0 ? /* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, children: "(no valid components to add \u2014 all remaining candidates would create cycles)" }) : (() => {
|
|
22056
22072
|
const filtered = valueText.length === 0 ? pickerCandidates : pickerCandidates.filter((n) => n.toLowerCase().includes(valueText.toLowerCase()));
|
|
22057
22073
|
if (filtered.length === 0) {
|
|
22058
|
-
return /* @__PURE__ */
|
|
22074
|
+
return /* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, children: "(no candidates match \u2014 Enter to add as free text)" });
|
|
22059
22075
|
}
|
|
22060
22076
|
const cursor = pickerCursor % filtered.length;
|
|
22061
22077
|
const MAX_VISIBLE = 5;
|
|
22062
22078
|
const start = Math.max(0, Math.min(filtered.length - MAX_VISIBLE, cursor - 2));
|
|
22063
22079
|
const slice = filtered.slice(start, start + MAX_VISIBLE);
|
|
22064
|
-
return /* @__PURE__ */
|
|
22065
|
-
/* @__PURE__ */
|
|
22080
|
+
return /* @__PURE__ */ jsxs24(Box23, { flexDirection: "column", children: [
|
|
22081
|
+
/* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, children: " candidates (\u2191\u2193 cycle, Enter to add):" }),
|
|
22066
22082
|
slice.map((name, i) => {
|
|
22067
22083
|
const absIdx = start + i;
|
|
22068
22084
|
const isCursor = absIdx === cursor;
|
|
22069
|
-
return /* @__PURE__ */
|
|
22085
|
+
return /* @__PURE__ */ jsx29(Text25, { color: isCursor ? PALETTE.accent : PALETTE.muted, children: isCursor ? ` ${figures5.pointer} ${name}` : ` ${name}` }, name);
|
|
22070
22086
|
})
|
|
22071
22087
|
] });
|
|
22072
22088
|
})() })
|
|
@@ -22895,18 +22911,18 @@ function FieldEditor({
|
|
|
22895
22911
|
});
|
|
22896
22912
|
const innerWidth = Math.max(1, width - 2);
|
|
22897
22913
|
if (parseErr) {
|
|
22898
|
-
return /* @__PURE__ */
|
|
22899
|
-
/* @__PURE__ */
|
|
22900
|
-
/* @__PURE__ */
|
|
22901
|
-
/* @__PURE__ */
|
|
22914
|
+
return /* @__PURE__ */ jsxs24(Box23, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.error, children: [
|
|
22915
|
+
/* @__PURE__ */ jsx29(Text25, { bold: true, color: PALETTE.error, children: "FIELD EDITOR \u2014 parse error" }),
|
|
22916
|
+
/* @__PURE__ */ jsx29(Text25, { color: PALETTE.error, children: parseErr }),
|
|
22917
|
+
/* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, children: "Cannot display structured editor. Fix the JSON first." })
|
|
22902
22918
|
] });
|
|
22903
22919
|
}
|
|
22904
22920
|
if (props.length === 0 && slots.length === 0) {
|
|
22905
|
-
return /* @__PURE__ */
|
|
22906
|
-
/* @__PURE__ */
|
|
22907
|
-
/* @__PURE__ */
|
|
22908
|
-
/* @__PURE__ */
|
|
22909
|
-
/* @__PURE__ */
|
|
22921
|
+
return /* @__PURE__ */ jsxs24(Box23, { flexDirection: "column", width, borderStyle: "single", borderColor: PALETTE.warning, children: [
|
|
22922
|
+
/* @__PURE__ */ jsx29(Text25, { bold: true, color: PALETTE.warning, children: "FIELD EDITOR \u2014 no fields" }),
|
|
22923
|
+
/* @__PURE__ */ jsx29(Text25, { color: PALETTE.warning, children: "\u26A0 No properties classified for this component. The LLM didn't find anything to classify." }),
|
|
22924
|
+
/* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, children: "You can add fields manually below or reject this component." }),
|
|
22925
|
+
/* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, children: "Enter to save \xB7 Esc to discard" })
|
|
22910
22926
|
] });
|
|
22911
22927
|
}
|
|
22912
22928
|
const hasEmptyProperties = props.length === 0 && slots.length === 0;
|
|
@@ -23035,12 +23051,12 @@ function FieldEditor({
|
|
|
23035
23051
|
const renderRow = (row, index) => {
|
|
23036
23052
|
const key = rowKey(row, index);
|
|
23037
23053
|
if (row.kind === "header") {
|
|
23038
|
-
return /* @__PURE__ */
|
|
23054
|
+
return /* @__PURE__ */ jsx29(Box23, { flexDirection: "column", paddingTop: 1, children: /* @__PURE__ */ jsx29(Text25, { bold: true, color: PALETTE.success, children: row.label }) }, key);
|
|
23039
23055
|
}
|
|
23040
23056
|
if (row.kind === "component-description") {
|
|
23041
23057
|
const isSelected2 = inComponentDesc && active;
|
|
23042
23058
|
const isEditing = isSelected2 && focusLevel === "field" && editingField && activeField === "description";
|
|
23043
|
-
return /* @__PURE__ */
|
|
23059
|
+
return /* @__PURE__ */ jsx29(
|
|
23044
23060
|
DescriptionField,
|
|
23045
23061
|
{
|
|
23046
23062
|
value: editorState.componentDescription,
|
|
@@ -23071,7 +23087,7 @@ function FieldEditor({
|
|
|
23071
23087
|
valueText,
|
|
23072
23088
|
innerWidth
|
|
23073
23089
|
);
|
|
23074
|
-
return /* @__PURE__ */
|
|
23090
|
+
return /* @__PURE__ */ jsx29(
|
|
23075
23091
|
PropRow,
|
|
23076
23092
|
{
|
|
23077
23093
|
prop: p,
|
|
@@ -23098,7 +23114,7 @@ function FieldEditor({
|
|
|
23098
23114
|
valueText,
|
|
23099
23115
|
innerWidth
|
|
23100
23116
|
);
|
|
23101
|
-
return /* @__PURE__ */
|
|
23117
|
+
return /* @__PURE__ */ jsx29(
|
|
23102
23118
|
SlotRow,
|
|
23103
23119
|
{
|
|
23104
23120
|
slot: s,
|
|
@@ -23110,7 +23126,7 @@ function FieldEditor({
|
|
|
23110
23126
|
key
|
|
23111
23127
|
);
|
|
23112
23128
|
};
|
|
23113
|
-
return /* @__PURE__ */
|
|
23129
|
+
return /* @__PURE__ */ jsxs24(
|
|
23114
23130
|
FixedPanel,
|
|
23115
23131
|
{
|
|
23116
23132
|
width,
|
|
@@ -23119,9 +23135,9 @@ function FieldEditor({
|
|
|
23119
23135
|
borderStyle: "single",
|
|
23120
23136
|
borderColor: hasEmptyProperties ? PALETTE.warning : active ? PALETTE.accent : PALETTE.border,
|
|
23121
23137
|
children: [
|
|
23122
|
-
hasEmptyProperties && /* @__PURE__ */
|
|
23138
|
+
hasEmptyProperties && /* @__PURE__ */ jsx29(Text25, { 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." }),
|
|
23123
23139
|
header,
|
|
23124
|
-
/* @__PURE__ */
|
|
23140
|
+
/* @__PURE__ */ jsx29(Box23, { flexDirection: "column", width: innerWidth, flexShrink: 0, children: focusLevel === "field" && !inComponentDesc && currentProp ? /* @__PURE__ */ jsx29(
|
|
23125
23141
|
PropRow,
|
|
23126
23142
|
{
|
|
23127
23143
|
prop: currentProp,
|
|
@@ -23137,7 +23153,7 @@ function FieldEditor({
|
|
|
23137
23153
|
rationale: metadata?.props?.[currentProp.name]?.rationale ?? null,
|
|
23138
23154
|
showRationale: showInlineRationales
|
|
23139
23155
|
}
|
|
23140
|
-
) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */
|
|
23156
|
+
) : focusLevel === "field" && inSlots && currentSlot ? /* @__PURE__ */ jsx29(
|
|
23141
23157
|
SlotRow,
|
|
23142
23158
|
{
|
|
23143
23159
|
slot: currentSlot,
|
|
@@ -23156,8 +23172,8 @@ function FieldEditor({
|
|
|
23156
23172
|
) : visibleRowSlice.map((row, index) => {
|
|
23157
23173
|
const absoluteIndex = scrollStart + index;
|
|
23158
23174
|
const key = rowKey(row, absoluteIndex);
|
|
23159
|
-
return /* @__PURE__ */
|
|
23160
|
-
|
|
23175
|
+
return /* @__PURE__ */ jsx29(
|
|
23176
|
+
Box23,
|
|
23161
23177
|
{
|
|
23162
23178
|
ref: (node) => {
|
|
23163
23179
|
if (node) rowMeasureRefs.current.set(key, node);
|
|
@@ -23170,7 +23186,7 @@ function FieldEditor({
|
|
|
23170
23186
|
`visible-${key}`
|
|
23171
23187
|
);
|
|
23172
23188
|
}) }),
|
|
23173
|
-
categoryBelow && /* @__PURE__ */
|
|
23189
|
+
categoryBelow && /* @__PURE__ */ jsx29(Text25, { color: PALETTE.success, bold: true, children: `(${categoryBelow} below)` }),
|
|
23174
23190
|
sourceOpen && !onToggleSourceExternal && (() => {
|
|
23175
23191
|
const propMeta = !inSlots && !inComponentDesc && currentProp ? metadata?.props?.[currentProp.name] : void 0;
|
|
23176
23192
|
const start = propMeta?.sourceStartLine ?? null;
|
|
@@ -23179,59 +23195,59 @@ function FieldEditor({
|
|
|
23179
23195
|
const src = metadata?.componentSource ?? null;
|
|
23180
23196
|
const headerPath = path5 ?? "<unknown source path>";
|
|
23181
23197
|
if (!start || !end2 || !src) {
|
|
23182
|
-
return /* @__PURE__ */
|
|
23183
|
-
/* @__PURE__ */
|
|
23184
|
-
/* @__PURE__ */
|
|
23185
|
-
/* @__PURE__ */
|
|
23198
|
+
return /* @__PURE__ */ jsxs24(Box23, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
|
|
23199
|
+
/* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, bold: true, children: `source: ${headerPath}` }),
|
|
23200
|
+
/* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, children: "(no source location captured for this prop)" }),
|
|
23201
|
+
/* @__PURE__ */ jsx29(Text25, { children: "[s] close" })
|
|
23186
23202
|
] });
|
|
23187
23203
|
}
|
|
23188
23204
|
const lines = src.split("\n").slice(Math.max(0, start - 1), end2);
|
|
23189
|
-
return /* @__PURE__ */
|
|
23190
|
-
/* @__PURE__ */
|
|
23191
|
-
lines.map((ln, i) => /* @__PURE__ */
|
|
23192
|
-
/* @__PURE__ */
|
|
23205
|
+
return /* @__PURE__ */ jsxs24(Box23, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [
|
|
23206
|
+
/* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, bold: true, children: `${headerPath}: lines ${start}\u2013${end2}` }),
|
|
23207
|
+
lines.map((ln, i) => /* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, children: ln }, `source-line-${i}`)),
|
|
23208
|
+
/* @__PURE__ */ jsx29(Text25, { children: "[s] close \xB7 [Esc] close" })
|
|
23193
23209
|
] });
|
|
23194
23210
|
})(),
|
|
23195
|
-
showHelp && /* @__PURE__ */
|
|
23196
|
-
/* @__PURE__ */
|
|
23197
|
-
/* @__PURE__ */
|
|
23198
|
-
/* @__PURE__ */
|
|
23199
|
-
/* @__PURE__ */
|
|
23200
|
-
/* @__PURE__ */
|
|
23201
|
-
/* @__PURE__ */
|
|
23202
|
-
/* @__PURE__ */
|
|
23203
|
-
/* @__PURE__ */
|
|
23204
|
-
/* @__PURE__ */
|
|
23205
|
-
/* @__PURE__ */
|
|
23206
|
-
/* @__PURE__ */
|
|
23207
|
-
/* @__PURE__ */
|
|
23208
|
-
/* @__PURE__ */
|
|
23209
|
-
/* @__PURE__ */
|
|
23210
|
-
/* @__PURE__ */
|
|
23211
|
-
/* @__PURE__ */
|
|
23212
|
-
/* @__PURE__ */
|
|
23213
|
-
/* @__PURE__ */
|
|
23214
|
-
/* @__PURE__ */
|
|
23215
|
-
/* @__PURE__ */
|
|
23216
|
-
/* @__PURE__ */
|
|
23217
|
-
/* @__PURE__ */
|
|
23218
|
-
/* @__PURE__ */
|
|
23219
|
-
/* @__PURE__ */
|
|
23220
|
-
/* @__PURE__ */
|
|
23221
|
-
/* @__PURE__ */
|
|
23211
|
+
showHelp && /* @__PURE__ */ jsxs24(Box23, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.accent, paddingX: 1, children: [
|
|
23212
|
+
/* @__PURE__ */ jsx29(Text25, { bold: true, color: PALETTE.accent, children: "Keybindings" }),
|
|
23213
|
+
/* @__PURE__ */ jsx29(Text25, { children: " " }),
|
|
23214
|
+
/* @__PURE__ */ jsx29(Text25, { bold: true, children: "Row navigation" }),
|
|
23215
|
+
/* @__PURE__ */ jsx29(Text25, { children: " \u2191/\u2193 move between rows" }),
|
|
23216
|
+
/* @__PURE__ */ jsx29(Text25, { children: " Enter edit fields on the current row" }),
|
|
23217
|
+
/* @__PURE__ */ jsx29(Text25, { children: " Esc exit the panel" }),
|
|
23218
|
+
/* @__PURE__ */ jsx29(Text25, { children: " " }),
|
|
23219
|
+
/* @__PURE__ */ jsx29(Text25, { bold: true, children: "Field editing" }),
|
|
23220
|
+
/* @__PURE__ */ jsx29(Text25, { children: " \u2191/\u2193/\u2190\u2192 cycle through fields" }),
|
|
23221
|
+
/* @__PURE__ */ jsx29(Text25, { children: " \u2190/\u2192 cycle picker values \xB7 move cursor in text inputs" }),
|
|
23222
|
+
/* @__PURE__ */ jsx29(Text25, { children: " Space/Enter toggle required" }),
|
|
23223
|
+
/* @__PURE__ */ jsx29(Text25, { children: " Type edit description / string default" }),
|
|
23224
|
+
/* @__PURE__ */ jsx29(Text25, { children: " Esc exit field-edit back to the row" }),
|
|
23225
|
+
/* @__PURE__ */ jsx29(Text25, { children: " " }),
|
|
23226
|
+
/* @__PURE__ */ jsx29(Text25, { bold: true, children: "Values / allowedComponents" }),
|
|
23227
|
+
/* @__PURE__ */ jsx29(Text25, { children: " a / e / r add \xB7 edit \xB7 remove" }),
|
|
23228
|
+
/* @__PURE__ */ jsx29(Text25, { children: " \u2191\u2193 navigate the list" }),
|
|
23229
|
+
/* @__PURE__ */ jsx29(Text25, { children: " K / J reorder up \xB7 down" }),
|
|
23230
|
+
/* @__PURE__ */ jsx29(Text25, { children: " " }),
|
|
23231
|
+
/* @__PURE__ */ jsx29(Text25, { bold: true, children: "Panels" }),
|
|
23232
|
+
/* @__PURE__ */ jsx29(Text25, { children: " s toggle source-view for the current prop" }),
|
|
23233
|
+
/* @__PURE__ */ jsx29(Text25, { children: " " + propRationaleKey.padEnd(16) + " toggle prop rationale panel" }),
|
|
23234
|
+
/* @__PURE__ */ jsx29(Text25, { children: " " + componentRationaleKey.padEnd(16) + " toggle component rationale panel" }),
|
|
23235
|
+
/* @__PURE__ */ jsx29(Text25, { children: " ? toggle this overlay" }),
|
|
23236
|
+
/* @__PURE__ */ jsx29(Text25, { children: " " }),
|
|
23237
|
+
/* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, children: "press ? or Esc to close" })
|
|
23222
23238
|
] }),
|
|
23223
|
-
validationError && /* @__PURE__ */
|
|
23224
|
-
/* @__PURE__ */
|
|
23239
|
+
validationError && /* @__PURE__ */ jsx29(Text25, { color: PALETTE.error, children: "\u2717 " + validationError }),
|
|
23240
|
+
/* @__PURE__ */ jsx29(Box23, { paddingTop: 1, children: /* @__PURE__ */ jsx29(Text25, { color: PALETTE.muted, children: modeLabel }) })
|
|
23225
23241
|
]
|
|
23226
23242
|
}
|
|
23227
23243
|
);
|
|
23228
23244
|
}
|
|
23229
23245
|
|
|
23230
23246
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx
|
|
23231
|
-
import { Text as
|
|
23247
|
+
import { Text as Text31 } from "ink";
|
|
23232
23248
|
|
|
23233
23249
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ComponentRationalePanel.tsx
|
|
23234
|
-
import { Box as
|
|
23250
|
+
import { Box as Box25, Text as Text27 } from "ink";
|
|
23235
23251
|
|
|
23236
23252
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/wrap-text.ts
|
|
23237
23253
|
function appendLongWordChunks(word, width, lines) {
|
|
@@ -23266,27 +23282,27 @@ function wrapText(text, innerWidth) {
|
|
|
23266
23282
|
}
|
|
23267
23283
|
|
|
23268
23284
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationaleLine.tsx
|
|
23269
|
-
import { Box as
|
|
23270
|
-
import { jsx as
|
|
23285
|
+
import { Box as Box24, Text as Text26 } from "ink";
|
|
23286
|
+
import { jsx as jsx30, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
23271
23287
|
function RationaleLine({ line, active }) {
|
|
23272
23288
|
if (line.kind === "blank") {
|
|
23273
|
-
return /* @__PURE__ */
|
|
23289
|
+
return /* @__PURE__ */ jsx30(Box24, { children: /* @__PURE__ */ jsx30(Text26, { children: " " }) });
|
|
23274
23290
|
}
|
|
23275
23291
|
if (line.kind === "heading") {
|
|
23276
|
-
return /* @__PURE__ */
|
|
23292
|
+
return /* @__PURE__ */ jsx30(Box24, { children: /* @__PURE__ */ jsx30(Text26, { bold: true, color: active ? PALETTE.accent : PALETTE.muted, children: line.text }) });
|
|
23277
23293
|
}
|
|
23278
23294
|
if (line.kind === "label") {
|
|
23279
|
-
return /* @__PURE__ */
|
|
23280
|
-
line.prefix && /* @__PURE__ */
|
|
23281
|
-
/* @__PURE__ */
|
|
23282
|
-
line.suffix && /* @__PURE__ */
|
|
23295
|
+
return /* @__PURE__ */ jsxs25(Box24, { children: [
|
|
23296
|
+
line.prefix && /* @__PURE__ */ jsx30(Text26, { children: line.prefix }),
|
|
23297
|
+
/* @__PURE__ */ jsx30(Text26, { bold: true, color: active ? line.color : PALETTE.muted, children: line.text }),
|
|
23298
|
+
line.suffix && /* @__PURE__ */ jsx30(Text26, { color: PALETTE.muted, children: line.suffix })
|
|
23283
23299
|
] });
|
|
23284
23300
|
}
|
|
23285
|
-
return /* @__PURE__ */
|
|
23301
|
+
return /* @__PURE__ */ jsx30(Box24, { children: /* @__PURE__ */ jsx30(Text26, { color: !active || line.dim ? PALETTE.muted : void 0, children: line.text }) });
|
|
23286
23302
|
}
|
|
23287
23303
|
|
|
23288
23304
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ComponentRationalePanel.tsx
|
|
23289
|
-
import { jsx as
|
|
23305
|
+
import { jsx as jsx31, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
23290
23306
|
var PLACEHOLDER = "(no rationale captured)";
|
|
23291
23307
|
function renderComponentRationaleLines(data, innerWidth) {
|
|
23292
23308
|
const out = [];
|
|
@@ -23354,8 +23370,8 @@ function ComponentRationalePanel({
|
|
|
23354
23370
|
const overflowed = totalLines > contentHeight;
|
|
23355
23371
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
23356
23372
|
const visibleEnd = Math.min(totalLines, scrollOffset + contentHeight);
|
|
23357
|
-
return /* @__PURE__ */
|
|
23358
|
-
|
|
23373
|
+
return /* @__PURE__ */ jsxs26(
|
|
23374
|
+
Box25,
|
|
23359
23375
|
{
|
|
23360
23376
|
flexDirection: "column",
|
|
23361
23377
|
width,
|
|
@@ -23363,27 +23379,27 @@ function ComponentRationalePanel({
|
|
|
23363
23379
|
borderStyle: "single",
|
|
23364
23380
|
borderColor: active ? PALETTE.text : void 0,
|
|
23365
23381
|
children: [
|
|
23366
|
-
/* @__PURE__ */
|
|
23367
|
-
visible.map((line, i) => /* @__PURE__ */
|
|
23368
|
-
/* @__PURE__ */
|
|
23382
|
+
/* @__PURE__ */ jsx31(Box25, { children: /* @__PURE__ */ jsx31(Text27, { bold: true, color: active ? void 0 : PALETTE.muted, children: `Component rationale: ${data.name}` }) }),
|
|
23383
|
+
visible.map((line, i) => /* @__PURE__ */ jsx31(RationaleLine, { line, active }, i)),
|
|
23384
|
+
/* @__PURE__ */ jsx31(Box25, { children: overflowed ? /* @__PURE__ */ jsx31(Text27, { children: `${visibleStart}-${visibleEnd}/${totalLines} [\u2191\u2193] scroll [I/Esc] close` }) : /* @__PURE__ */ jsx31(Text27, { children: "[I/Esc] close" }) })
|
|
23369
23385
|
]
|
|
23370
23386
|
}
|
|
23371
23387
|
);
|
|
23372
23388
|
}
|
|
23373
23389
|
|
|
23374
23390
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/JsonPanel.tsx
|
|
23375
|
-
import { Box as
|
|
23391
|
+
import { Box as Box27 } from "ink";
|
|
23376
23392
|
|
|
23377
23393
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/HighlightedLine.tsx
|
|
23378
|
-
import { Text as
|
|
23379
|
-
import { Fragment as
|
|
23394
|
+
import { Text as Text28 } from "ink";
|
|
23395
|
+
import { Fragment as Fragment7, jsx as jsx32 } from "react/jsx-runtime";
|
|
23380
23396
|
function HighlightedLine({ parts }) {
|
|
23381
|
-
return /* @__PURE__ */
|
|
23397
|
+
return /* @__PURE__ */ jsx32(Fragment7, { children: parts.map((part, i) => /* @__PURE__ */ jsx32(Text28, { color: part.dim ? PALETTE.muted : part.color, children: part.text }, i)) });
|
|
23382
23398
|
}
|
|
23383
23399
|
|
|
23384
23400
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ScrollablePanel.tsx
|
|
23385
|
-
import { Box as
|
|
23386
|
-
import { Fragment as
|
|
23401
|
+
import { Box as Box26, Text as Text29 } from "ink";
|
|
23402
|
+
import { Fragment as Fragment8, jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
23387
23403
|
function ScrollablePanel({
|
|
23388
23404
|
title,
|
|
23389
23405
|
width,
|
|
@@ -23396,12 +23412,12 @@ function ScrollablePanel({
|
|
|
23396
23412
|
children
|
|
23397
23413
|
}) {
|
|
23398
23414
|
const overflowed = totalLines > height;
|
|
23399
|
-
return /* @__PURE__ */
|
|
23400
|
-
/* @__PURE__ */
|
|
23401
|
-
/* @__PURE__ */
|
|
23402
|
-
overflowed && /* @__PURE__ */
|
|
23403
|
-
/* @__PURE__ */
|
|
23404
|
-
/* @__PURE__ */
|
|
23415
|
+
return /* @__PURE__ */ jsxs27(Box26, { flexDirection: "column", width, height: height + 2, borderStyle: "single", borderColor, children: [
|
|
23416
|
+
/* @__PURE__ */ jsxs27(Box26, { children: [
|
|
23417
|
+
/* @__PURE__ */ jsx33(Text29, { bold: true, color: active ? void 0 : PALETTE.muted, children: title }),
|
|
23418
|
+
overflowed && /* @__PURE__ */ jsxs27(Fragment8, { children: [
|
|
23419
|
+
/* @__PURE__ */ jsx33(Box26, { flexGrow: 1 }),
|
|
23420
|
+
/* @__PURE__ */ jsx33(Text29, { color: active ? void 0 : PALETTE.muted, children: `\u2195 ${visibleStart}-${visibleEnd}/${totalLines}` })
|
|
23405
23421
|
] })
|
|
23406
23422
|
] }),
|
|
23407
23423
|
children
|
|
@@ -23409,7 +23425,7 @@ function ScrollablePanel({
|
|
|
23409
23425
|
}
|
|
23410
23426
|
|
|
23411
23427
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/JsonPanel.tsx
|
|
23412
|
-
import { jsx as
|
|
23428
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
23413
23429
|
function highlightJson(line) {
|
|
23414
23430
|
const parts = [];
|
|
23415
23431
|
let remaining = line;
|
|
@@ -23447,7 +23463,7 @@ function highlightJson(line) {
|
|
|
23447
23463
|
parts.push({ text: remaining[0] });
|
|
23448
23464
|
remaining = remaining.slice(1);
|
|
23449
23465
|
}
|
|
23450
|
-
return /* @__PURE__ */
|
|
23466
|
+
return /* @__PURE__ */ jsx34(HighlightedLine, { parts });
|
|
23451
23467
|
}
|
|
23452
23468
|
function truncateLine(line, maxWidth) {
|
|
23453
23469
|
if (line.length <= maxWidth) return line;
|
|
@@ -23460,7 +23476,7 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
|
|
|
23460
23476
|
const totalLines = allLines.length;
|
|
23461
23477
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
23462
23478
|
const visibleEnd = Math.min(totalLines, scrollOffset + height);
|
|
23463
|
-
return /* @__PURE__ */
|
|
23479
|
+
return /* @__PURE__ */ jsx34(
|
|
23464
23480
|
ScrollablePanel,
|
|
23465
23481
|
{
|
|
23466
23482
|
title: label,
|
|
@@ -23473,14 +23489,14 @@ function JsonPanel({ label, value, scrollOffset, width, height, active }) {
|
|
|
23473
23489
|
borderColor: active ? "white" : void 0,
|
|
23474
23490
|
children: visibleLines.map((line, i) => {
|
|
23475
23491
|
const truncated = truncateLine(line, innerWidth);
|
|
23476
|
-
return /* @__PURE__ */
|
|
23492
|
+
return /* @__PURE__ */ jsx34(Box27, { children: highlightJson(truncated) }, i);
|
|
23477
23493
|
})
|
|
23478
23494
|
}
|
|
23479
23495
|
);
|
|
23480
23496
|
}
|
|
23481
23497
|
|
|
23482
23498
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/RationalePanel.tsx
|
|
23483
|
-
import { jsx as
|
|
23499
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
23484
23500
|
function renderRationaleLines(rows, innerWidth) {
|
|
23485
23501
|
const out = [];
|
|
23486
23502
|
rows.forEach((row, idx) => {
|
|
@@ -23513,7 +23529,7 @@ function RationalePanel({
|
|
|
23513
23529
|
const visible = allLines.slice(scrollOffset, scrollOffset + height);
|
|
23514
23530
|
const visibleStart = totalLines === 0 ? 0 : scrollOffset + 1;
|
|
23515
23531
|
const visibleEnd = Math.min(totalLines, scrollOffset + height);
|
|
23516
|
-
return /* @__PURE__ */
|
|
23532
|
+
return /* @__PURE__ */ jsx35(
|
|
23517
23533
|
ScrollablePanel,
|
|
23518
23534
|
{
|
|
23519
23535
|
title: `RATIONALE \u2014 ${componentName}`,
|
|
@@ -23524,15 +23540,15 @@ function RationalePanel({
|
|
|
23524
23540
|
visibleStart,
|
|
23525
23541
|
visibleEnd,
|
|
23526
23542
|
borderColor: active ? PALETTE.text : void 0,
|
|
23527
|
-
children: visible.map((line, i) => /* @__PURE__ */
|
|
23543
|
+
children: visible.map((line, i) => /* @__PURE__ */ jsx35(RationaleLine, { line, active }, i))
|
|
23528
23544
|
}
|
|
23529
23545
|
);
|
|
23530
23546
|
}
|
|
23531
23547
|
|
|
23532
23548
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/TokenReviewPanel.tsx
|
|
23533
23549
|
import figures6 from "figures";
|
|
23534
|
-
import { Box as
|
|
23535
|
-
import { jsx as
|
|
23550
|
+
import { Box as Box28, Text as Text30 } from "ink";
|
|
23551
|
+
import { jsx as jsx36, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
23536
23552
|
function TokenReviewPanel({
|
|
23537
23553
|
componentName,
|
|
23538
23554
|
suggestions,
|
|
@@ -23551,8 +23567,8 @@ function TokenReviewPanel({
|
|
|
23551
23567
|
const scrollStart = Math.max(0, Math.min(editCursor - Math.floor(visibleCount / 2), maxStart));
|
|
23552
23568
|
const visiblePaths = current.paths.slice(scrollStart, scrollStart + visibleCount);
|
|
23553
23569
|
const rangeLabel = current.paths.length === 0 ? "no compatible tokens" : `${scrollStart + 1}-${scrollStart + visiblePaths.length} of ${current.paths.length}`;
|
|
23554
|
-
return /* @__PURE__ */
|
|
23555
|
-
|
|
23570
|
+
return /* @__PURE__ */ jsxs28(
|
|
23571
|
+
Box28,
|
|
23556
23572
|
{
|
|
23557
23573
|
flexDirection: "column",
|
|
23558
23574
|
width,
|
|
@@ -23560,16 +23576,16 @@ function TokenReviewPanel({
|
|
|
23560
23576
|
borderStyle: "single",
|
|
23561
23577
|
borderColor: active ? PALETTE.text : void 0,
|
|
23562
23578
|
children: [
|
|
23563
|
-
/* @__PURE__ */
|
|
23564
|
-
/* @__PURE__ */
|
|
23565
|
-
/* @__PURE__ */
|
|
23566
|
-
current.paths.length === 0 && /* @__PURE__ */
|
|
23579
|
+
/* @__PURE__ */ jsx36(Text30, { bold: true, color: active ? void 0 : PALETTE.muted, wrap: "truncate", children: `TOKEN REVIEW \u2014 ${componentName} \xB7 ${current.propName} (edit allowed)` }),
|
|
23580
|
+
/* @__PURE__ */ jsx36(Text30, { color: PALETTE.muted, wrap: "truncate", children: `select which tokens are allowed (${rangeLabel})` }),
|
|
23581
|
+
/* @__PURE__ */ jsx36(Text30, { children: " " }),
|
|
23582
|
+
current.paths.length === 0 && /* @__PURE__ */ jsx36(Text30, { color: PALETTE.muted, children: "(no compatible tokens found for this token kind)" }),
|
|
23567
23583
|
visiblePaths.map((path5, i) => {
|
|
23568
23584
|
const pathIndex = scrollStart + i;
|
|
23569
23585
|
const checked = editSelection.has(path5);
|
|
23570
23586
|
const focused = pathIndex === editCursor;
|
|
23571
|
-
return /* @__PURE__ */
|
|
23572
|
-
|
|
23587
|
+
return /* @__PURE__ */ jsx36(Box28, { children: /* @__PURE__ */ jsx36(
|
|
23588
|
+
Text30,
|
|
23573
23589
|
{
|
|
23574
23590
|
color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted,
|
|
23575
23591
|
bold: focused,
|
|
@@ -23578,15 +23594,15 @@ function TokenReviewPanel({
|
|
|
23578
23594
|
}
|
|
23579
23595
|
) }, path5);
|
|
23580
23596
|
}),
|
|
23581
|
-
/* @__PURE__ */
|
|
23582
|
-
/* @__PURE__ */
|
|
23583
|
-
/* @__PURE__ */
|
|
23597
|
+
/* @__PURE__ */ jsx36(Text30, { children: " " }),
|
|
23598
|
+
/* @__PURE__ */ jsx36(Text30, { color: PALETTE.muted, wrap: "truncate", children: "[\u2191/\u2193] move [Space] toggle" }),
|
|
23599
|
+
/* @__PURE__ */ jsx36(Text30, { color: PALETTE.muted, wrap: "truncate", children: "[Ctrl+S] save [Esc] cancel" })
|
|
23584
23600
|
]
|
|
23585
23601
|
}
|
|
23586
23602
|
);
|
|
23587
23603
|
}
|
|
23588
|
-
return /* @__PURE__ */
|
|
23589
|
-
|
|
23604
|
+
return /* @__PURE__ */ jsxs28(
|
|
23605
|
+
Box28,
|
|
23590
23606
|
{
|
|
23591
23607
|
flexDirection: "column",
|
|
23592
23608
|
width,
|
|
@@ -23594,25 +23610,25 @@ function TokenReviewPanel({
|
|
|
23594
23610
|
borderStyle: "single",
|
|
23595
23611
|
borderColor: active ? PALETTE.text : void 0,
|
|
23596
23612
|
children: [
|
|
23597
|
-
/* @__PURE__ */
|
|
23598
|
-
suggestions.length === 0 && /* @__PURE__ */
|
|
23613
|
+
/* @__PURE__ */ jsx36(Text30, { bold: true, color: active ? void 0 : PALETTE.muted, children: `TOKEN REVIEW \u2014 ${componentName}` }),
|
|
23614
|
+
suggestions.length === 0 && /* @__PURE__ */ jsx36(Text30, { color: PALETTE.muted, children: "(no token suggestions for this component)" }),
|
|
23599
23615
|
suggestions.map((s, i) => {
|
|
23600
23616
|
const focused = i === selectedRow;
|
|
23601
|
-
return /* @__PURE__ */
|
|
23602
|
-
/* @__PURE__ */
|
|
23603
|
-
/* @__PURE__ */
|
|
23604
|
-
/* @__PURE__ */
|
|
23617
|
+
return /* @__PURE__ */ jsxs28(Box28, { flexDirection: "column", children: [
|
|
23618
|
+
/* @__PURE__ */ jsx36(Box28, { children: /* @__PURE__ */ jsx36(Text30, { color: focused ? PALETTE.accent : active ? void 0 : PALETTE.muted, bold: focused, children: `${focused ? figures6.pointer : " "} ${s.propName}` }) }),
|
|
23619
|
+
/* @__PURE__ */ jsx36(Text30, { color: PALETTE.muted, children: ` suggested: ${s.suggested.join(", ")}` }),
|
|
23620
|
+
/* @__PURE__ */ jsx36(Text30, { color: PALETTE.muted, children: ` allowed: ${s.allowed.join(", ")}` })
|
|
23605
23621
|
] }, s.propName);
|
|
23606
23622
|
}),
|
|
23607
|
-
/* @__PURE__ */
|
|
23608
|
-
/* @__PURE__ */
|
|
23623
|
+
/* @__PURE__ */ jsx36(Text30, { children: " " }),
|
|
23624
|
+
/* @__PURE__ */ jsx36(Text30, { children: "[\u2191/\u2193] move [Enter] edit allowed [Esc] close" })
|
|
23609
23625
|
]
|
|
23610
23626
|
}
|
|
23611
23627
|
);
|
|
23612
23628
|
}
|
|
23613
23629
|
|
|
23614
23630
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/review-details-panel.tsx
|
|
23615
|
-
import { Fragment as
|
|
23631
|
+
import { Fragment as Fragment9, jsx as jsx37, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
23616
23632
|
function ReviewDetailsPanel({
|
|
23617
23633
|
selectedKey,
|
|
23618
23634
|
panelOpen,
|
|
@@ -23647,7 +23663,7 @@ function ReviewDetailsPanel({
|
|
|
23647
23663
|
rationale: s.rationale ?? ""
|
|
23648
23664
|
}))
|
|
23649
23665
|
];
|
|
23650
|
-
return /* @__PURE__ */
|
|
23666
|
+
return /* @__PURE__ */ jsx37(
|
|
23651
23667
|
RationalePanel,
|
|
23652
23668
|
{
|
|
23653
23669
|
componentName: componentRationale?.name ?? selectedKey,
|
|
@@ -23660,7 +23676,7 @@ function ReviewDetailsPanel({
|
|
|
23660
23676
|
);
|
|
23661
23677
|
}
|
|
23662
23678
|
if (panelOpen === "component-rationale") {
|
|
23663
|
-
return /* @__PURE__ */
|
|
23679
|
+
return /* @__PURE__ */ jsx37(
|
|
23664
23680
|
ComponentRationalePanel,
|
|
23665
23681
|
{
|
|
23666
23682
|
data: componentRationale ?? {
|
|
@@ -23685,14 +23701,14 @@ function ReviewDetailsPanel({
|
|
|
23685
23701
|
const headerPath = path5 ?? "<unknown source path>";
|
|
23686
23702
|
const sourceLineCount = Math.max(1, height - 4);
|
|
23687
23703
|
const lines = source ? source.split("\n").slice(panelScrollOffset, panelScrollOffset + sourceLineCount) : [];
|
|
23688
|
-
return /* @__PURE__ */
|
|
23689
|
-
/* @__PURE__ */
|
|
23690
|
-
source ? lines.map((line, index) => /* @__PURE__ */
|
|
23691
|
-
/* @__PURE__ */
|
|
23704
|
+
return /* @__PURE__ */ jsxs29(FixedPanel, { width, height, borderStyle: "single", borderColor: sourceBorderColor, paddingLeft: 1, children: [
|
|
23705
|
+
/* @__PURE__ */ jsx37(Text31, { color: PALETTE.muted, bold: true, wrap: "truncate-end", children: `source: ${headerPath}` }),
|
|
23706
|
+
source ? lines.map((line, index) => /* @__PURE__ */ jsx37(Text31, { color: PALETTE.muted, wrap: "truncate-end", children: line }, `source-line-${index}`)) : /* @__PURE__ */ jsx37(Text31, { color: PALETTE.muted, children: "(no source captured)" }),
|
|
23707
|
+
/* @__PURE__ */ jsx37(Text31, { color: PALETTE.muted, wrap: "truncate-end", children: "[s/Esc] close" })
|
|
23692
23708
|
] });
|
|
23693
23709
|
}
|
|
23694
23710
|
if (panelOpen === "token-review") {
|
|
23695
|
-
return /* @__PURE__ */
|
|
23711
|
+
return /* @__PURE__ */ jsx37(
|
|
23696
23712
|
TokenReviewPanel,
|
|
23697
23713
|
{
|
|
23698
23714
|
componentName: selectedKey,
|
|
@@ -23708,7 +23724,7 @@ function ReviewDetailsPanel({
|
|
|
23708
23724
|
);
|
|
23709
23725
|
}
|
|
23710
23726
|
if (showJson) {
|
|
23711
|
-
return /* @__PURE__ */
|
|
23727
|
+
return /* @__PURE__ */ jsx37(
|
|
23712
23728
|
JsonPanel,
|
|
23713
23729
|
{
|
|
23714
23730
|
label: "GENERATED DEFINITION (read-only)",
|
|
@@ -23720,11 +23736,11 @@ function ReviewDetailsPanel({
|
|
|
23720
23736
|
}
|
|
23721
23737
|
);
|
|
23722
23738
|
}
|
|
23723
|
-
return /* @__PURE__ */
|
|
23739
|
+
return /* @__PURE__ */ jsx37(Fragment9, { children: editor });
|
|
23724
23740
|
}
|
|
23725
23741
|
|
|
23726
23742
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDetailsEditor.tsx
|
|
23727
|
-
import { jsx as
|
|
23743
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
23728
23744
|
import { createElement } from "react";
|
|
23729
23745
|
function toFieldEditorMetadata(reviewMetadata) {
|
|
23730
23746
|
if (!reviewMetadata) return void 0;
|
|
@@ -23758,7 +23774,7 @@ function ReviewDetailsEditor({
|
|
|
23758
23774
|
jsonScrollOffset,
|
|
23759
23775
|
currentTokenSuggestions
|
|
23760
23776
|
} = reviewEditor;
|
|
23761
|
-
return /* @__PURE__ */
|
|
23777
|
+
return /* @__PURE__ */ jsx38(
|
|
23762
23778
|
ReviewDetailsPanel,
|
|
23763
23779
|
{
|
|
23764
23780
|
selectedKey,
|
|
@@ -23798,7 +23814,7 @@ function ReviewDetailsEditor({
|
|
|
23798
23814
|
}
|
|
23799
23815
|
|
|
23800
23816
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewComponentPanel.tsx
|
|
23801
|
-
import { Fragment as
|
|
23817
|
+
import { Fragment as Fragment10, jsx as jsx39, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
23802
23818
|
function buildReviewFieldEditor(reviewEditor, selectedJson, onExit, overrides = {}) {
|
|
23803
23819
|
return {
|
|
23804
23820
|
value: reviewEditor.draftValue || selectedJson,
|
|
@@ -23838,17 +23854,17 @@ function ReviewEmptyComponentsWarning({
|
|
|
23838
23854
|
hidden
|
|
23839
23855
|
}) {
|
|
23840
23856
|
if (hidden || count === 0) return null;
|
|
23841
|
-
return /* @__PURE__ */
|
|
23857
|
+
return /* @__PURE__ */ jsx39(Text32, { color: PALETTE.warning, children: `\u26A0 ${count} component${count === 1 ? "" : "s"} had no classifiable props \u2014 review with care` });
|
|
23842
23858
|
}
|
|
23843
23859
|
function ReviewNoSelection() {
|
|
23844
|
-
return /* @__PURE__ */
|
|
23860
|
+
return /* @__PURE__ */ jsx39(Box29, { flexGrow: 1, paddingLeft: 1, flexDirection: "column", children: /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, children: "No component selected" }) });
|
|
23845
23861
|
}
|
|
23846
23862
|
function ReviewFinalizeError({
|
|
23847
23863
|
message,
|
|
23848
23864
|
hidden
|
|
23849
23865
|
}) {
|
|
23850
23866
|
if (hidden || !message) return null;
|
|
23851
|
-
return /* @__PURE__ */
|
|
23867
|
+
return /* @__PURE__ */ jsx39(Text32, { color: PALETTE.error, children: `\u26A0 ${message}` });
|
|
23852
23868
|
}
|
|
23853
23869
|
function ReviewPanelFooter({
|
|
23854
23870
|
reviewEditor,
|
|
@@ -23857,10 +23873,10 @@ function ReviewPanelFooter({
|
|
|
23857
23873
|
livePreview,
|
|
23858
23874
|
livePreviewSpinner
|
|
23859
23875
|
}) {
|
|
23860
|
-
return /* @__PURE__ */
|
|
23876
|
+
return /* @__PURE__ */ jsxs30(Fragment10, { children: [
|
|
23861
23877
|
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" : ""),
|
|
23862
|
-
livePreview.status === "running" && /* @__PURE__ */
|
|
23863
|
-
livePreview.disabled && /* @__PURE__ */
|
|
23878
|
+
livePreview.status === "running" && /* @__PURE__ */ jsx39(Text32, { children: ` ${livePreviewSpinner} live preview` }),
|
|
23879
|
+
livePreview.disabled && /* @__PURE__ */ jsx39(Text32, { children: " \xB7 live preview disabled" })
|
|
23864
23880
|
] });
|
|
23865
23881
|
}
|
|
23866
23882
|
function ReviewComponentTitle({
|
|
@@ -23869,10 +23885,10 @@ function ReviewComponentTitle({
|
|
|
23869
23885
|
slotCount,
|
|
23870
23886
|
sidebarFocused
|
|
23871
23887
|
}) {
|
|
23872
|
-
return /* @__PURE__ */
|
|
23873
|
-
/* @__PURE__ */
|
|
23874
|
-
/* @__PURE__ */
|
|
23875
|
-
/* @__PURE__ */
|
|
23888
|
+
return /* @__PURE__ */ jsxs30(Box29, { paddingLeft: 2, paddingBottom: 1, children: [
|
|
23889
|
+
/* @__PURE__ */ jsx39(Text32, { bold: true, wrap: "truncate-end", children: selectedKey }),
|
|
23890
|
+
/* @__PURE__ */ jsx39(Box29, { flexGrow: 1 }),
|
|
23891
|
+
/* @__PURE__ */ jsxs30(Text32, { color: PALETTE.muted, wrap: "truncate-end", children: [
|
|
23876
23892
|
propCount,
|
|
23877
23893
|
" prop",
|
|
23878
23894
|
propCount !== 1 ? "s" : "",
|
|
@@ -23903,8 +23919,8 @@ function ReviewComponentPanel({
|
|
|
23903
23919
|
const slotCount = selectedEntry.$slots ? Object.keys(selectedEntry.$slots).length : 0;
|
|
23904
23920
|
const contentHeight = Math.max(1, height - 2);
|
|
23905
23921
|
const contentWidth = Math.max(1, width - 1);
|
|
23906
|
-
return /* @__PURE__ */
|
|
23907
|
-
/* @__PURE__ */
|
|
23922
|
+
return /* @__PURE__ */ jsx39(FixedPanel, { width, height, borderStyle: void 0, paddingLeft: 1, children: /* @__PURE__ */ jsxs30(Box29, { flexDirection: "column", width: contentWidth, height, flexShrink: 0, overflowY: "hidden", children: [
|
|
23923
|
+
/* @__PURE__ */ jsx39(Box29, { width: contentWidth, height: contentHeight, flexShrink: 0, overflowY: "hidden", children: /* @__PURE__ */ jsx39(
|
|
23908
23924
|
ReviewDetailsEditor,
|
|
23909
23925
|
{
|
|
23910
23926
|
selectedKey,
|
|
@@ -23917,7 +23933,7 @@ function ReviewComponentPanel({
|
|
|
23917
23933
|
jsonValue,
|
|
23918
23934
|
sidebarFocused,
|
|
23919
23935
|
fieldEditor,
|
|
23920
|
-
header: /* @__PURE__ */
|
|
23936
|
+
header: /* @__PURE__ */ jsx39(
|
|
23921
23937
|
ReviewComponentTitle,
|
|
23922
23938
|
{
|
|
23923
23939
|
selectedKey,
|
|
@@ -23928,8 +23944,8 @@ function ReviewComponentPanel({
|
|
|
23928
23944
|
)
|
|
23929
23945
|
}
|
|
23930
23946
|
) }),
|
|
23931
|
-
/* @__PURE__ */
|
|
23932
|
-
/* @__PURE__ */
|
|
23947
|
+
/* @__PURE__ */ jsx39(Box29, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx39(Text32, { color: saveError ? PALETTE.error : void 0, wrap: "truncate-end", children: saveError ? "\u2717 " + saveError : " " }) }),
|
|
23948
|
+
/* @__PURE__ */ jsx39(Box29, { width: contentWidth, height: 1, flexShrink: 0, children: /* @__PURE__ */ jsx39(Text32, { color: PALETTE.muted, wrap: "truncate-end", children: /* @__PURE__ */ jsx39(
|
|
23933
23949
|
ReviewPanelFooter,
|
|
23934
23950
|
{
|
|
23935
23951
|
reviewEditor,
|
|
@@ -23943,8 +23959,8 @@ function ReviewComponentPanel({
|
|
|
23943
23959
|
}
|
|
23944
23960
|
|
|
23945
23961
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewStatus.tsx
|
|
23946
|
-
import { Box as
|
|
23947
|
-
import { jsx as
|
|
23962
|
+
import { Box as Box30, Text as Text33 } from "ink";
|
|
23963
|
+
import { jsx as jsx40, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
23948
23964
|
function countReviewStatuses(entries) {
|
|
23949
23965
|
return entries.reduce(
|
|
23950
23966
|
(counts, entry) => {
|
|
@@ -23957,13 +23973,13 @@ function countReviewStatuses(entries) {
|
|
|
23957
23973
|
);
|
|
23958
23974
|
}
|
|
23959
23975
|
function ReviewLoadingState() {
|
|
23960
|
-
return /* @__PURE__ */
|
|
23976
|
+
return /* @__PURE__ */ jsx40(Box30, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx40(Text33, { color: PALETTE.muted, children: "Loading generated definitions..." }) });
|
|
23961
23977
|
}
|
|
23962
23978
|
function ReviewLoadError({ message }) {
|
|
23963
|
-
return /* @__PURE__ */
|
|
23964
|
-
/* @__PURE__ */
|
|
23965
|
-
/* @__PURE__ */
|
|
23966
|
-
/* @__PURE__ */
|
|
23979
|
+
return /* @__PURE__ */ jsxs31(Box30, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
23980
|
+
/* @__PURE__ */ jsx40(Text33, { color: PALETTE.error, children: message }),
|
|
23981
|
+
/* @__PURE__ */ jsx40(Text33, { children: " " }),
|
|
23982
|
+
/* @__PURE__ */ jsx40(Text33, { children: "[q / Enter / Esc] Quit" })
|
|
23967
23983
|
] });
|
|
23968
23984
|
}
|
|
23969
23985
|
|
|
@@ -24163,8 +24179,8 @@ async function runLivePreview(opts) {
|
|
|
24163
24179
|
}
|
|
24164
24180
|
|
|
24165
24181
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FinalizeDialog.tsx
|
|
24166
|
-
import { Box as
|
|
24167
|
-
import { Fragment as
|
|
24182
|
+
import { Box as Box31, Text as Text34 } from "ink";
|
|
24183
|
+
import { Fragment as Fragment11, jsx as jsx41, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
24168
24184
|
var FINALIZE_REMOVED_WINDOW = 6;
|
|
24169
24185
|
function FinalizeDialog({
|
|
24170
24186
|
accepted,
|
|
@@ -24193,51 +24209,51 @@ function FinalizeDialog({
|
|
|
24193
24209
|
const windowed = removed.slice(offset, offset + FINALIZE_REMOVED_WINDOW);
|
|
24194
24210
|
const hasMoreBelow = offset + FINALIZE_REMOVED_WINDOW < removed.length;
|
|
24195
24211
|
const hasMoreAbove = offset > 0;
|
|
24196
|
-
return /* @__PURE__ */
|
|
24197
|
-
/* @__PURE__ */
|
|
24198
|
-
/* @__PURE__ */
|
|
24199
|
-
/* @__PURE__ */
|
|
24200
|
-
/* @__PURE__ */
|
|
24212
|
+
return /* @__PURE__ */ jsx41(Box31, { width: "100%", justifyContent: "center", children: /* @__PURE__ */ jsxs32(Box31, { flexDirection: "column", alignItems: "center", borderStyle: "round", padding: 1, width: 58, children: [
|
|
24213
|
+
/* @__PURE__ */ jsx41(Text34, { bold: true, children: "\u2500".repeat(22) + " Finalize " + "\u2500".repeat(22) }),
|
|
24214
|
+
/* @__PURE__ */ jsx41(Text34, { children: " " }),
|
|
24215
|
+
/* @__PURE__ */ jsxs32(Text34, { children: [
|
|
24216
|
+
/* @__PURE__ */ jsxs32(Text34, { color: PALETTE.success, children: [
|
|
24201
24217
|
accepted,
|
|
24202
24218
|
" accepted"
|
|
24203
24219
|
] }),
|
|
24204
|
-
/* @__PURE__ */
|
|
24205
|
-
/* @__PURE__ */
|
|
24220
|
+
/* @__PURE__ */ jsx41(Text34, { children: " \xB7 " }),
|
|
24221
|
+
/* @__PURE__ */ jsxs32(Text34, { color: PALETTE.error, children: [
|
|
24206
24222
|
rejected,
|
|
24207
24223
|
" rejected"
|
|
24208
24224
|
] }),
|
|
24209
|
-
/* @__PURE__ */
|
|
24210
|
-
/* @__PURE__ */
|
|
24225
|
+
/* @__PURE__ */ jsx41(Text34, { children: " \xB7 " }),
|
|
24226
|
+
/* @__PURE__ */ jsxs32(Text34, { color: PALETTE.muted, children: [
|
|
24211
24227
|
needsReview,
|
|
24212
24228
|
" unresolved"
|
|
24213
24229
|
] })
|
|
24214
24230
|
] }),
|
|
24215
|
-
/* @__PURE__ */
|
|
24216
|
-
noneAccepted && /* @__PURE__ */
|
|
24217
|
-
/* @__PURE__ */
|
|
24218
|
-
/* @__PURE__ */
|
|
24219
|
-
/* @__PURE__ */
|
|
24231
|
+
/* @__PURE__ */ jsx41(Text34, { children: " " }),
|
|
24232
|
+
noneAccepted && /* @__PURE__ */ jsxs32(Fragment11, { children: [
|
|
24233
|
+
/* @__PURE__ */ jsx41(Text34, { bold: true, color: PALETTE.warning, children: "\u26A0 No components are accepted \u2014 nothing will be pushed." }),
|
|
24234
|
+
/* @__PURE__ */ jsx41(Text34, { color: PALETTE.warning, children: "Accept at least one component ([a] a row, [A] accept all) to push." }),
|
|
24235
|
+
/* @__PURE__ */ jsx41(Text34, { children: " " })
|
|
24220
24236
|
] }),
|
|
24221
|
-
!allResolved && /* @__PURE__ */
|
|
24222
|
-
/* @__PURE__ */
|
|
24223
|
-
/* @__PURE__ */
|
|
24224
|
-
/* @__PURE__ */
|
|
24237
|
+
!allResolved && /* @__PURE__ */ jsxs32(Fragment11, { children: [
|
|
24238
|
+
/* @__PURE__ */ jsx41(Text34, { color: PALETTE.warning, children: "\u26A0 " + needsReview + " unresolved component" + (needsReview === 1 ? "" : "s") + " will not be pushed." }),
|
|
24239
|
+
/* @__PURE__ */ jsx41(Text34, { color: PALETTE.warning, children: "Only explicitly accepted components ship." }),
|
|
24240
|
+
/* @__PURE__ */ jsx41(Text34, { children: " " })
|
|
24225
24241
|
] }),
|
|
24226
|
-
/* @__PURE__ */
|
|
24227
|
-
previewStatus === "running" ? /* @__PURE__ */
|
|
24228
|
-
/* @__PURE__ */
|
|
24242
|
+
/* @__PURE__ */ jsxs32(Box31, { flexDirection: "column", height: 2, children: [
|
|
24243
|
+
previewStatus === "running" ? /* @__PURE__ */ jsx41(Text34, { color: PALETTE.muted, children: "Previewing deletions against the target space\u2026" }) : previewStatus === "error" ? /* @__PURE__ */ jsx41(Text34, { color: PALETTE.warning, children: "\u26A0 Could not preview deletions (the push will still proceed)." }) : /* @__PURE__ */ jsx41(Text34, { children: " " }),
|
|
24244
|
+
/* @__PURE__ */ jsx41(Text34, { children: " " })
|
|
24229
24245
|
] }),
|
|
24230
|
-
previewStatus === "done" && removed.length > 0 && /* @__PURE__ */
|
|
24231
|
-
/* @__PURE__ */
|
|
24232
|
-
hasMoreAbove && /* @__PURE__ */
|
|
24233
|
-
windowed.map((rc) => /* @__PURE__ */
|
|
24234
|
-
hasMoreBelow && /* @__PURE__ */
|
|
24235
|
-
removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */
|
|
24236
|
-
/* @__PURE__ */
|
|
24246
|
+
previewStatus === "done" && removed.length > 0 && /* @__PURE__ */ jsxs32(Fragment11, { children: [
|
|
24247
|
+
/* @__PURE__ */ jsx41(Text34, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removed.length, false) }),
|
|
24248
|
+
hasMoreAbove && /* @__PURE__ */ jsx41(Text34, { color: PALETTE.muted, children: "\u2191 more above" }),
|
|
24249
|
+
windowed.map((rc) => /* @__PURE__ */ jsx41(Text34, { color: PALETTE.error, children: removedComponentLine(rc) }, rc.id)),
|
|
24250
|
+
hasMoreBelow && /* @__PURE__ */ jsx41(Text34, { color: PALETTE.muted, children: "\u2193 more below" }),
|
|
24251
|
+
removed.length > FINALIZE_REMOVED_WINDOW && /* @__PURE__ */ jsx41(Text34, { children: "[\u2191\u2193] scroll deletions" }),
|
|
24252
|
+
/* @__PURE__ */ jsx41(Text34, { children: " " })
|
|
24237
24253
|
] }),
|
|
24238
|
-
/* @__PURE__ */
|
|
24239
|
-
/* @__PURE__ */
|
|
24240
|
-
/* @__PURE__ */
|
|
24254
|
+
/* @__PURE__ */ jsx41(Text34, { children: noneAccepted ? "Confirm exit with nothing accepted?" : allResolved ? "Save decisions and exit? All components resolved." : "Save decisions and exit?" }),
|
|
24255
|
+
/* @__PURE__ */ jsx41(Text34, { children: " " }),
|
|
24256
|
+
/* @__PURE__ */ jsx41(Text34, { children: "[y / Enter] Confirm [n / Esc] Cancel" })
|
|
24241
24257
|
] }) });
|
|
24242
24258
|
}
|
|
24243
24259
|
|
|
@@ -24642,11 +24658,11 @@ function useReviewSurfaceState(initialFinalizeError = null) {
|
|
|
24642
24658
|
}
|
|
24643
24659
|
|
|
24644
24660
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDialogs.tsx
|
|
24645
|
-
import { Box as
|
|
24661
|
+
import { Box as Box33, Text as Text36 } from "ink";
|
|
24646
24662
|
|
|
24647
24663
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/QuitDialog.tsx
|
|
24648
|
-
import { Box as
|
|
24649
|
-
import { Fragment as
|
|
24664
|
+
import { Box as Box32, Text as Text35 } from "ink";
|
|
24665
|
+
import { Fragment as Fragment12, jsx as jsx42, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
24650
24666
|
function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
24651
24667
|
useImmediateInput((input, key) => {
|
|
24652
24668
|
if (input === "y" || key.return) {
|
|
@@ -24655,21 +24671,21 @@ function QuitDialog({ hasUnsavedDrafts, onConfirm, onCancel }) {
|
|
|
24655
24671
|
onCancel();
|
|
24656
24672
|
}
|
|
24657
24673
|
});
|
|
24658
|
-
return /* @__PURE__ */
|
|
24659
|
-
/* @__PURE__ */
|
|
24660
|
-
/* @__PURE__ */
|
|
24661
|
-
hasUnsavedDrafts ? /* @__PURE__ */
|
|
24662
|
-
/* @__PURE__ */
|
|
24663
|
-
/* @__PURE__ */
|
|
24664
|
-
/* @__PURE__ */
|
|
24665
|
-
] }) : /* @__PURE__ */
|
|
24666
|
-
/* @__PURE__ */
|
|
24667
|
-
/* @__PURE__ */
|
|
24674
|
+
return /* @__PURE__ */ jsxs33(Box32, { flexDirection: "column", borderStyle: "round", padding: 1, width: 50, children: [
|
|
24675
|
+
/* @__PURE__ */ jsx42(Text35, { bold: true, children: "\u2500".repeat(19) + " Quit " + "\u2500".repeat(19) }),
|
|
24676
|
+
/* @__PURE__ */ jsx42(Text35, { children: " " }),
|
|
24677
|
+
hasUnsavedDrafts ? /* @__PURE__ */ jsxs33(Fragment12, { children: [
|
|
24678
|
+
/* @__PURE__ */ jsx42(Text35, { children: "You have unsaved draft edits." }),
|
|
24679
|
+
/* @__PURE__ */ jsx42(Text35, { children: "Session state is preserved \u2014 you can resume" }),
|
|
24680
|
+
/* @__PURE__ */ jsx42(Text35, { children: "by running the same review command again." })
|
|
24681
|
+
] }) : /* @__PURE__ */ jsx42(Text35, { children: "Session is saved. Quit without finalizing?" }),
|
|
24682
|
+
/* @__PURE__ */ jsx42(Text35, { children: " " }),
|
|
24683
|
+
/* @__PURE__ */ jsx42(Text35, { children: " [y / Enter] Quit [n / Esc] Stay" })
|
|
24668
24684
|
] });
|
|
24669
24685
|
}
|
|
24670
24686
|
|
|
24671
24687
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/ReviewDialogs.tsx
|
|
24672
|
-
import { Fragment as
|
|
24688
|
+
import { Fragment as Fragment13, jsx as jsx43, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
24673
24689
|
function ReviewFinalizeDialogs({
|
|
24674
24690
|
showFinalize,
|
|
24675
24691
|
showQuit,
|
|
@@ -24683,8 +24699,8 @@ function ReviewFinalizeDialogs({
|
|
|
24683
24699
|
onQuitCancel
|
|
24684
24700
|
}) {
|
|
24685
24701
|
const { accepted, rejected, needsReview } = countReviewStatuses(components);
|
|
24686
|
-
return /* @__PURE__ */
|
|
24687
|
-
showFinalize && /* @__PURE__ */
|
|
24702
|
+
return /* @__PURE__ */ jsxs34(Fragment13, { children: [
|
|
24703
|
+
showFinalize && /* @__PURE__ */ jsx43(
|
|
24688
24704
|
FinalizeDialog,
|
|
24689
24705
|
{
|
|
24690
24706
|
accepted,
|
|
@@ -24697,7 +24713,7 @@ function ReviewFinalizeDialogs({
|
|
|
24697
24713
|
onCancel: onFinalizeCancel
|
|
24698
24714
|
}
|
|
24699
24715
|
),
|
|
24700
|
-
showQuit && /* @__PURE__ */
|
|
24716
|
+
showQuit && /* @__PURE__ */ jsx43(QuitDialog, { hasUnsavedDrafts: false, onConfirm: onQuitConfirm, onCancel: onQuitCancel })
|
|
24701
24717
|
] });
|
|
24702
24718
|
}
|
|
24703
24719
|
function ReviewStepDialogs({
|
|
@@ -24707,7 +24723,7 @@ function ReviewStepDialogs({
|
|
|
24707
24723
|
onFinalize,
|
|
24708
24724
|
onQuit
|
|
24709
24725
|
}) {
|
|
24710
|
-
return /* @__PURE__ */
|
|
24726
|
+
return /* @__PURE__ */ jsx43(
|
|
24711
24727
|
ReviewFinalizeDialogs,
|
|
24712
24728
|
{
|
|
24713
24729
|
showFinalize: surfaceState.showFinalize,
|
|
@@ -24725,12 +24741,12 @@ function ReviewStepDialogs({
|
|
|
24725
24741
|
}
|
|
24726
24742
|
function ReviewReloadDialog({ open }) {
|
|
24727
24743
|
if (!open) return null;
|
|
24728
|
-
return /* @__PURE__ */
|
|
24729
|
-
/* @__PURE__ */
|
|
24730
|
-
/* @__PURE__ */
|
|
24731
|
-
/* @__PURE__ */
|
|
24732
|
-
/* @__PURE__ */
|
|
24733
|
-
/* @__PURE__ */
|
|
24744
|
+
return /* @__PURE__ */ jsxs34(Box33, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
24745
|
+
/* @__PURE__ */ jsx43(Text36, { bold: true, color: PALETTE.warning, children: "Reload from saved state?" }),
|
|
24746
|
+
/* @__PURE__ */ jsx43(Text36, { children: "Unsaved in-memory changes will be lost." }),
|
|
24747
|
+
/* @__PURE__ */ jsx43(Text36, { children: " " }),
|
|
24748
|
+
/* @__PURE__ */ jsx43(Text36, { children: " [Enter] Confirm" }),
|
|
24749
|
+
/* @__PURE__ */ jsx43(Text36, { children: " [Esc] Cancel" })
|
|
24734
24750
|
] });
|
|
24735
24751
|
}
|
|
24736
24752
|
|
|
@@ -25097,8 +25113,8 @@ function useReviewPreview({
|
|
|
25097
25113
|
}
|
|
25098
25114
|
|
|
25099
25115
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/LivePreviewSummary.tsx
|
|
25100
|
-
import { Box as
|
|
25101
|
-
import { jsx as
|
|
25116
|
+
import { Box as Box34, Text as Text37 } from "ink";
|
|
25117
|
+
import { jsx as jsx44, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
25102
25118
|
function LivePreviewSummary({
|
|
25103
25119
|
enabled,
|
|
25104
25120
|
previewAnnotations,
|
|
@@ -25112,24 +25128,24 @@ function LivePreviewSummary({
|
|
|
25112
25128
|
const counts = { new: 0, changed: 0, removed: 0, breaking: 0 };
|
|
25113
25129
|
for (const annotation of previewAnnotations.values()) counts[annotation] += 1;
|
|
25114
25130
|
const hasCounts = counts.new + counts.changed + counts.removed + counts.breaking > 0;
|
|
25115
|
-
if (disabled) return /* @__PURE__ */
|
|
25116
|
-
if (status === "running" && !hasCounts) return /* @__PURE__ */
|
|
25131
|
+
if (disabled) return /* @__PURE__ */ jsx44(Text37, { color: PALETTE.muted, children: "Preview: disabled (creds rejected)" });
|
|
25132
|
+
if (status === "running" && !hasCounts) return /* @__PURE__ */ jsx44(Text37, { color: PALETTE.muted, children: `Preview: ${spinner} running...` });
|
|
25117
25133
|
if (!hasCounts) return null;
|
|
25118
|
-
return /* @__PURE__ */
|
|
25119
|
-
/* @__PURE__ */
|
|
25120
|
-
/* @__PURE__ */
|
|
25121
|
-
/* @__PURE__ */
|
|
25122
|
-
/* @__PURE__ */
|
|
25123
|
-
/* @__PURE__ */
|
|
25124
|
-
/* @__PURE__ */
|
|
25125
|
-
showRemovedListHint && removedCount > 0 && /* @__PURE__ */
|
|
25126
|
-
/* @__PURE__ */
|
|
25127
|
-
/* @__PURE__ */
|
|
25134
|
+
return /* @__PURE__ */ jsxs35(Box34, { children: [
|
|
25135
|
+
/* @__PURE__ */ jsx44(Text37, { children: "Preview: " }),
|
|
25136
|
+
/* @__PURE__ */ jsx44(Text37, { color: PALETTE.success, children: `${counts.new} new` }),
|
|
25137
|
+
/* @__PURE__ */ jsx44(Text37, { children: " \xB7 " }),
|
|
25138
|
+
/* @__PURE__ */ jsx44(Text37, { color: PALETTE.warning, children: `${counts.changed} changed` }),
|
|
25139
|
+
/* @__PURE__ */ jsx44(Text37, { children: " \xB7 " }),
|
|
25140
|
+
/* @__PURE__ */ jsx44(Text37, { color: PALETTE.muted, children: `${counts.removed} removed` }),
|
|
25141
|
+
showRemovedListHint && removedCount > 0 && /* @__PURE__ */ jsx44(Text37, { children: " ([d] removed list)" }),
|
|
25142
|
+
/* @__PURE__ */ jsx44(Text37, { children: " \xB7 " }),
|
|
25143
|
+
/* @__PURE__ */ jsx44(Text37, { color: PALETTE.error, bold: true, children: `${counts.breaking} breaking` })
|
|
25128
25144
|
] });
|
|
25129
25145
|
}
|
|
25130
25146
|
|
|
25131
25147
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx
|
|
25132
|
-
import { Fragment as
|
|
25148
|
+
import { Fragment as Fragment14, jsx as jsx45, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
25133
25149
|
function sortComponentsForSidebar(components, cycleParticipants) {
|
|
25134
25150
|
const isEmpty2 = (entry) => Object.keys(entry.$properties ?? {}).length === 0 && Object.keys(entry.$slots ?? {}).length === 0;
|
|
25135
25151
|
const tier = (c2) => {
|
|
@@ -25170,10 +25186,10 @@ function CyclePathLine({
|
|
|
25170
25186
|
highlightComponents = false,
|
|
25171
25187
|
highlightLine = false
|
|
25172
25188
|
}) {
|
|
25173
|
-
return /* @__PURE__ */
|
|
25189
|
+
return /* @__PURE__ */ jsxs36(Text38, { color: highlightLine ? PALETTE.warning : void 0, children: [
|
|
25174
25190
|
prefix,
|
|
25175
25191
|
segments.map(
|
|
25176
|
-
(segment, index) => segment.kind === "slot" ? /* @__PURE__ */
|
|
25192
|
+
(segment, index) => segment.kind === "slot" ? /* @__PURE__ */ jsx45(Text38, { color: PALETTE.accent, children: segment.text }, index) : segment.kind === "arrow" ? /* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: segment.text }, index) : /* @__PURE__ */ jsx45(Text38, { color: highlightComponents ? PALETTE.warning : void 0, children: segment.text }, index)
|
|
25177
25193
|
)
|
|
25178
25194
|
] });
|
|
25179
25195
|
}
|
|
@@ -25185,31 +25201,31 @@ function CycleDetailPanel({
|
|
|
25185
25201
|
height
|
|
25186
25202
|
}) {
|
|
25187
25203
|
const lines = [
|
|
25188
|
-
/* @__PURE__ */
|
|
25189
|
-
/* @__PURE__ */
|
|
25190
|
-
/* @__PURE__ */
|
|
25191
|
-
/* @__PURE__ */
|
|
25204
|
+
/* @__PURE__ */ jsx45(Text38, { bold: true, color: PALETTE.warning, children: `SLOT DEPENDENCY CYCLES (${cycles.length})` }, "cyc-title"),
|
|
25205
|
+
/* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: "push will fail until these are resolved" }, "cyc-sub"),
|
|
25206
|
+
/* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: "Reject a cycle member or remove a slot edge to break the cycle." }, "cyc-guidance"),
|
|
25207
|
+
/* @__PURE__ */ jsx45(Text38, { children: " " }, "cyc-space")
|
|
25192
25208
|
];
|
|
25193
25209
|
cycles.forEach((cycle, index) => {
|
|
25194
25210
|
const nodeCount = new Set(cycle.path).size;
|
|
25195
25211
|
const isCursor = index === cursor;
|
|
25196
25212
|
lines.push(
|
|
25197
|
-
/* @__PURE__ */
|
|
25198
|
-
/* @__PURE__ */
|
|
25213
|
+
/* @__PURE__ */ jsx45(Text38, { bold: true, inverse: isCursor, children: `${isCursor ? figures7.pointer : " "} Cycle ${index + 1} (${nodeCount} component${nodeCount === 1 ? "" : "s"}):` }, `cyc-h-${index}`),
|
|
25214
|
+
/* @__PURE__ */ jsx45(CyclePathLine, { segments: formatCyclePathSegments2(cycle, 16), prefix: " " }, `cyc-p-${index}`)
|
|
25199
25215
|
);
|
|
25200
25216
|
if (cycle.suggestedBreak) {
|
|
25201
25217
|
lines.push(
|
|
25202
|
-
/* @__PURE__ */
|
|
25218
|
+
/* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: ` Suggested fix: remove [${cycle.suggestedBreak.slotName}] from ${cycle.suggestedBreak.fromComponent}` }, `cyc-fix-${index}`)
|
|
25203
25219
|
);
|
|
25204
25220
|
}
|
|
25205
|
-
lines.push(/* @__PURE__ */
|
|
25221
|
+
lines.push(/* @__PURE__ */ jsx45(Text38, { children: " " }, `cyc-s-${index}`));
|
|
25206
25222
|
});
|
|
25207
25223
|
const footer = "[\u2191\u2193] move [Enter] fix cycle [c/q/Esc] close";
|
|
25208
25224
|
const viewportHeight = Math.max(1, height - 3);
|
|
25209
25225
|
const visible = lines.slice(scrollOffset, scrollOffset + viewportHeight - 1);
|
|
25210
|
-
return /* @__PURE__ */
|
|
25226
|
+
return /* @__PURE__ */ jsxs36(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
|
|
25211
25227
|
visible,
|
|
25212
|
-
/* @__PURE__ */
|
|
25228
|
+
/* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: footer })
|
|
25213
25229
|
] });
|
|
25214
25230
|
}
|
|
25215
25231
|
function BreakCyclePanel({
|
|
@@ -25220,14 +25236,14 @@ function BreakCyclePanel({
|
|
|
25220
25236
|
width,
|
|
25221
25237
|
height
|
|
25222
25238
|
}) {
|
|
25223
|
-
return /* @__PURE__ */
|
|
25224
|
-
/* @__PURE__ */
|
|
25225
|
-
cycle && /* @__PURE__ */
|
|
25226
|
-
/* @__PURE__ */
|
|
25227
|
-
/* @__PURE__ */
|
|
25228
|
-
edges.length > 0 && /* @__PURE__ */
|
|
25229
|
-
edges.map((edge, index) => /* @__PURE__ */
|
|
25230
|
-
confirming ? /* @__PURE__ */
|
|
25239
|
+
return /* @__PURE__ */ jsxs36(FixedPanel, { width, height, borderStyle: "round", borderColor: PALETTE.warning, paddingLeft: 1, children: [
|
|
25240
|
+
/* @__PURE__ */ jsx45(Text38, { bold: true, color: PALETTE.warning, children: "BREAK CYCLE \u2014 remove a slot edge" }),
|
|
25241
|
+
cycle && /* @__PURE__ */ jsx45(CyclePathLine, { segments: formatCyclePathSegments2(cycle), prefix: " ", highlightComponents: true }),
|
|
25242
|
+
/* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: cycle ? "Deleting an edge removes it from $allowedComponents (undo with Ctrl+Z)." : "No cycle highlighted." }),
|
|
25243
|
+
/* @__PURE__ */ jsx45(Text38, { children: " " }),
|
|
25244
|
+
edges.length > 0 && /* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: "remove slot edge:" }),
|
|
25245
|
+
edges.map((edge, index) => /* @__PURE__ */ jsx45(Text38, { inverse: index === cursor, children: `${index === cursor ? figures7.pointer : " "} remove '${edge.toComponent}' from ${edge.fromComponent}.$slots.${edge.slotName}.$allowedComponents` }, `${edge.fromComponent}-${edge.slotName}-${edge.toComponent}`)),
|
|
25246
|
+
confirming ? /* @__PURE__ */ jsx45(Text38, { bold: true, color: PALETTE.warning, children: "Delete this slot edge? [y] confirm [n] cancel" }) : /* @__PURE__ */ jsx45(Text38, { children: "[\u2191\u2193] move [Enter] delete [x/Esc] close" })
|
|
25231
25247
|
] });
|
|
25232
25248
|
}
|
|
25233
25249
|
var HELP_SECTIONS2 = [
|
|
@@ -25333,9 +25349,9 @@ function deriveBreakingChanges(response) {
|
|
|
25333
25349
|
}
|
|
25334
25350
|
function GenerateReviewStep(props) {
|
|
25335
25351
|
if (!props.extractSessionId) {
|
|
25336
|
-
return /* @__PURE__ */
|
|
25352
|
+
return /* @__PURE__ */ jsx45(Box35, { paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsx45(Text38, { color: PALETTE.error, children: "Error: no session ID \u2014 cannot load generated definitions." }) });
|
|
25337
25353
|
}
|
|
25338
|
-
return /* @__PURE__ */
|
|
25354
|
+
return /* @__PURE__ */ jsx45(GenerateReviewStepView, { ...props, extractSessionId: props.extractSessionId });
|
|
25339
25355
|
}
|
|
25340
25356
|
function GenerateReviewStepView({
|
|
25341
25357
|
extractSessionId,
|
|
@@ -26192,13 +26208,13 @@ function GenerateReviewStepView({
|
|
|
26192
26208
|
}
|
|
26193
26209
|
});
|
|
26194
26210
|
if (loading) {
|
|
26195
|
-
return /* @__PURE__ */
|
|
26211
|
+
return /* @__PURE__ */ jsx45(ReviewLoadingState, {});
|
|
26196
26212
|
}
|
|
26197
26213
|
if (loadError) {
|
|
26198
|
-
return /* @__PURE__ */
|
|
26214
|
+
return /* @__PURE__ */ jsx45(ReviewLoadError, { message: loadError });
|
|
26199
26215
|
}
|
|
26200
26216
|
if (showHelp) {
|
|
26201
|
-
return /* @__PURE__ */
|
|
26217
|
+
return /* @__PURE__ */ jsx45(HelpOverlay, { sections: HELP_SECTIONS2, handleInput: false, onClose: () => setShowHelp(false) });
|
|
26202
26218
|
}
|
|
26203
26219
|
const { selected, selectedJson, visibleJsonPanelValue } = getReviewSelectionState(
|
|
26204
26220
|
components,
|
|
@@ -26238,8 +26254,8 @@ function GenerateReviewStepView({
|
|
|
26238
26254
|
for (const c2 of closures.values()) if (c2.nodes.length > 1) return true;
|
|
26239
26255
|
return false;
|
|
26240
26256
|
})();
|
|
26241
|
-
return /* @__PURE__ */
|
|
26242
|
-
/* @__PURE__ */
|
|
26257
|
+
return /* @__PURE__ */ jsxs36(Box35, { flexDirection: "column", children: [
|
|
26258
|
+
/* @__PURE__ */ jsx45(
|
|
26243
26259
|
ReviewStepDialogs,
|
|
26244
26260
|
{
|
|
26245
26261
|
surfaceState: reviewSurface,
|
|
@@ -26249,16 +26265,16 @@ function GenerateReviewStepView({
|
|
|
26249
26265
|
onQuit
|
|
26250
26266
|
}
|
|
26251
26267
|
),
|
|
26252
|
-
/* @__PURE__ */
|
|
26253
|
-
removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */
|
|
26254
|
-
/* @__PURE__ */
|
|
26255
|
-
!removedBannerCollapsed && /* @__PURE__ */
|
|
26256
|
-
/* @__PURE__ */
|
|
26257
|
-
removedComponents.map((rc) => /* @__PURE__ */
|
|
26268
|
+
/* @__PURE__ */ jsx45(ReviewReloadDialog, { open: showReloadDialog && !dialogOpen }),
|
|
26269
|
+
removedComponents.length > 0 && !dialogOpen && /* @__PURE__ */ jsxs36(Box35, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.error, paddingX: 1, children: [
|
|
26270
|
+
/* @__PURE__ */ jsx45(Text38, { bold: true, color: PALETTE.error, children: removedComponentsHeader(removedComponents.length, true) }),
|
|
26271
|
+
!removedBannerCollapsed && /* @__PURE__ */ jsxs36(Fragment14, { children: [
|
|
26272
|
+
/* @__PURE__ */ jsx45(Text38, { children: " " }),
|
|
26273
|
+
removedComponents.map((rc) => /* @__PURE__ */ jsx45(Text38, { children: removedComponentLine(rc) }, rc.id))
|
|
26258
26274
|
] })
|
|
26259
26275
|
] }),
|
|
26260
|
-
breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */
|
|
26261
|
-
|
|
26276
|
+
breakingChanges.length > 0 && !dialogOpen && /* @__PURE__ */ jsx45(Box35, { paddingX: 1, children: /* @__PURE__ */ jsx45(
|
|
26277
|
+
Text38,
|
|
26262
26278
|
{
|
|
26263
26279
|
color: PALETTE.warning,
|
|
26264
26280
|
children: `[b] ${breakingChanges.length} breaking change${breakingChanges.length === 1 ? "" : "s"}`
|
|
@@ -26268,14 +26284,14 @@ function GenerateReviewStepView({
|
|
|
26268
26284
|
const row = breakingRows[breakingCursor];
|
|
26269
26285
|
const comp = row ? breakingChanges.find((b) => b.componentName === row.componentName) : void 0;
|
|
26270
26286
|
if (!comp) return null;
|
|
26271
|
-
return /* @__PURE__ */
|
|
26272
|
-
/* @__PURE__ */
|
|
26273
|
-
comp.impact && /* @__PURE__ */
|
|
26274
|
-
comp.changes.length === 0 ? /* @__PURE__ */
|
|
26275
|
-
/* @__PURE__ */
|
|
26287
|
+
return /* @__PURE__ */ jsxs36(Box35, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
26288
|
+
/* @__PURE__ */ jsx45(Text38, { bold: true, color: PALETTE.warning, children: `Breaking changes \u2014 ${comp.componentName}` }),
|
|
26289
|
+
comp.impact && /* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: ` affects ${comp.impact.affectedExperiences} experience${comp.impact.affectedExperiences === 1 ? "" : "s"}, ${comp.impact.affectedFragments} fragment${comp.impact.affectedFragments === 1 ? "" : "s"}` }),
|
|
26290
|
+
comp.changes.length === 0 ? /* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: " (no enumerated changes)" }) : comp.changes.map((change, ci) => /* @__PURE__ */ jsx45(Text38, { children: ` \u2022 ${formatBreakingChange(change, comp.current)}` }, `bd-detail-${ci}`)),
|
|
26291
|
+
/* @__PURE__ */ jsx45(Text38, { children: "[D/Esc] close detail" })
|
|
26276
26292
|
] });
|
|
26277
26293
|
})(),
|
|
26278
|
-
!dialogOpen && /* @__PURE__ */
|
|
26294
|
+
!dialogOpen && /* @__PURE__ */ jsx45(
|
|
26279
26295
|
LivePreviewSummary,
|
|
26280
26296
|
{
|
|
26281
26297
|
enabled: livePreview,
|
|
@@ -26294,16 +26310,16 @@ function GenerateReviewStepView({
|
|
|
26294
26310
|
const participantSet = cycleView.structural;
|
|
26295
26311
|
const members = stillRejected.filter((n) => participantSet.has(n)).sort();
|
|
26296
26312
|
const ancestors = stillRejected.filter((n) => !participantSet.has(n)).sort();
|
|
26297
|
-
return /* @__PURE__ */
|
|
26298
|
-
/* @__PURE__ */
|
|
26299
|
-
members.length > 0 && /* @__PURE__ */
|
|
26300
|
-
ancestors.length > 0 && /* @__PURE__ */
|
|
26301
|
-
/* @__PURE__ */
|
|
26313
|
+
return /* @__PURE__ */ jsxs36(Box35, { flexDirection: "column", borderStyle: "single", borderColor: PALETTE.error, paddingX: 1, children: [
|
|
26314
|
+
/* @__PURE__ */ jsx45(Text38, { color: PALETTE.error, bold: true, children: `Cyclic component graph \u2014 auto-rejected ${stillRejected.length} component${stillRejected.length === 1 ? "" : "s"}:` }),
|
|
26315
|
+
members.length > 0 && /* @__PURE__ */ jsx45(Text38, { color: PALETTE.error, children: ` Cycle members: ${members.join(", ")}` }),
|
|
26316
|
+
ancestors.length > 0 && /* @__PURE__ */ jsx45(Text38, { color: PALETTE.error, children: ` Ancestors: ${ancestors.join(", ")}` }),
|
|
26317
|
+
/* @__PURE__ */ jsx45(Text38, { color: PALETTE.muted, children: undoSnapshot ? " [Ctrl+Z] undo \xB7 [r]/[a] manually toggle \xB7 [F] continue" : " [r]/[a] manually toggle \xB7 [F] continue" })
|
|
26302
26318
|
] });
|
|
26303
26319
|
})(),
|
|
26304
|
-
/* @__PURE__ */
|
|
26305
|
-
/* @__PURE__ */
|
|
26306
|
-
!dialogOpen && breakPanel.isOpen && /* @__PURE__ */
|
|
26320
|
+
/* @__PURE__ */ jsx45(ReviewEmptyComponentsWarning, { count: emptyCount, hidden: dialogOpen }),
|
|
26321
|
+
/* @__PURE__ */ jsx45(ReviewFinalizeError, { message: finalizeError, hidden: dialogOpen }),
|
|
26322
|
+
!dialogOpen && breakPanel.isOpen && /* @__PURE__ */ jsx45(
|
|
26307
26323
|
BreakCyclePanel,
|
|
26308
26324
|
{
|
|
26309
26325
|
cycle: cycleRows[cyclesCursor],
|
|
@@ -26314,7 +26330,7 @@ function GenerateReviewStepView({
|
|
|
26314
26330
|
height: panelHeight
|
|
26315
26331
|
}
|
|
26316
26332
|
),
|
|
26317
|
-
!dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */
|
|
26333
|
+
!dialogOpen && cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsx45(
|
|
26318
26334
|
CycleDetailPanel,
|
|
26319
26335
|
{
|
|
26320
26336
|
cycles: cycleRows,
|
|
@@ -26324,8 +26340,8 @@ function GenerateReviewStepView({
|
|
|
26324
26340
|
height: panelHeight
|
|
26325
26341
|
}
|
|
26326
26342
|
),
|
|
26327
|
-
!dialogOpen && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */
|
|
26328
|
-
breakingPanel.isOpen ? /* @__PURE__ */
|
|
26343
|
+
!dialogOpen && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs36(Box35, { children: [
|
|
26344
|
+
breakingPanel.isOpen ? /* @__PURE__ */ jsx45(
|
|
26329
26345
|
GotoBanner,
|
|
26330
26346
|
{
|
|
26331
26347
|
title: `Breaking changes \u2014 ${breakingRows[breakingCursor]?.componentName ?? "unknown component"}`,
|
|
@@ -26338,7 +26354,7 @@ function GenerateReviewStepView({
|
|
|
26338
26354
|
width: sidebarWidth,
|
|
26339
26355
|
footerHint: "[\u2191/\u2193] move \xB7 [Enter] jump \xB7 [D] detail \xB7 [Esc] close"
|
|
26340
26356
|
}
|
|
26341
|
-
) : /* @__PURE__ */
|
|
26357
|
+
) : /* @__PURE__ */ jsx45(
|
|
26342
26358
|
GroupedSidebar,
|
|
26343
26359
|
{
|
|
26344
26360
|
items: groupedItems,
|
|
@@ -26379,7 +26395,7 @@ function GenerateReviewStepView({
|
|
|
26379
26395
|
graph: sidebarGraph
|
|
26380
26396
|
}
|
|
26381
26397
|
),
|
|
26382
|
-
selected ? /* @__PURE__ */
|
|
26398
|
+
selected ? /* @__PURE__ */ jsx45(
|
|
26383
26399
|
ReviewComponentPanel,
|
|
26384
26400
|
{
|
|
26385
26401
|
selectedKey: selected.key,
|
|
@@ -26411,12 +26427,12 @@ function GenerateReviewStepView({
|
|
|
26411
26427
|
livePreview: livePreviewHook,
|
|
26412
26428
|
livePreviewSpinner
|
|
26413
26429
|
}
|
|
26414
|
-
) : /* @__PURE__ */
|
|
26430
|
+
) : /* @__PURE__ */ jsx45(ReviewNoSelection, {})
|
|
26415
26431
|
] }),
|
|
26416
|
-
!dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */
|
|
26417
|
-
/* @__PURE__ */
|
|
26432
|
+
!dialogOpen && cycleRows.length > 0 && !cyclePanel.isOpen && !breakPanel.isOpen && /* @__PURE__ */ jsxs36(Box35, { flexDirection: "column", children: [
|
|
26433
|
+
/* @__PURE__ */ jsx45(Text38, { color: PALETTE.warning, children: `\u26A0 ${cycleRows.length} slot dependency cycle${cycleRows.length === 1 ? "" : "s"} detected \u2014 push will fail` }),
|
|
26418
26434
|
cycleRows.slice(0, 3).map((cycle, idx) => {
|
|
26419
|
-
return /* @__PURE__ */
|
|
26435
|
+
return /* @__PURE__ */ jsx45(
|
|
26420
26436
|
CyclePathLine,
|
|
26421
26437
|
{
|
|
26422
26438
|
segments: formatCyclePathSegments2(cycle),
|
|
@@ -26427,10 +26443,10 @@ function GenerateReviewStepView({
|
|
|
26427
26443
|
`cyc-banner-${idx}`
|
|
26428
26444
|
);
|
|
26429
26445
|
}),
|
|
26430
|
-
cycleRows.length > 3 && /* @__PURE__ */
|
|
26431
|
-
/* @__PURE__ */
|
|
26446
|
+
cycleRows.length > 3 && /* @__PURE__ */ jsx45(Text38, { color: PALETTE.warning, children: ` \u2026${cycleRows.length - 3} more` }),
|
|
26447
|
+
/* @__PURE__ */ jsx45(Text38, { children: " press [c] for detail" })
|
|
26432
26448
|
] }),
|
|
26433
|
-
/* @__PURE__ */
|
|
26449
|
+
/* @__PURE__ */ jsx45(
|
|
26434
26450
|
SearchMatchSummary,
|
|
26435
26451
|
{
|
|
26436
26452
|
open: searchOpen,
|
|
@@ -26441,27 +26457,27 @@ function GenerateReviewStepView({
|
|
|
26441
26457
|
hidden: dialogOpen
|
|
26442
26458
|
}
|
|
26443
26459
|
),
|
|
26444
|
-
!dialogOpen && sidebarFocused && /* @__PURE__ */
|
|
26460
|
+
!dialogOpen && sidebarFocused && /* @__PURE__ */ jsx45(CompactControlBar, { hasGroupRoots, searchActive: searchOpen || searchQuery.length > 0 })
|
|
26445
26461
|
] });
|
|
26446
26462
|
}
|
|
26447
26463
|
|
|
26448
26464
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/CustomPromptBanner.tsx
|
|
26449
|
-
import { Box as
|
|
26450
|
-
import { jsx as
|
|
26465
|
+
import { Box as Box36, Text as Text39 } from "ink";
|
|
26466
|
+
import { jsx as jsx46, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
26451
26467
|
function CustomPromptBanner({ generatePromptPath }) {
|
|
26452
26468
|
if (!generatePromptPath) return null;
|
|
26453
|
-
return /* @__PURE__ */
|
|
26454
|
-
/* @__PURE__ */
|
|
26455
|
-
generatePromptPath ? /* @__PURE__ */
|
|
26469
|
+
return /* @__PURE__ */ jsxs37(Box36, { flexDirection: "column", borderStyle: "round", borderColor: PALETTE.warning, paddingX: 1, children: [
|
|
26470
|
+
/* @__PURE__ */ jsx46(Text39, { color: PALETTE.warning, bold: true, children: "WARNING: Custom prompt active" }),
|
|
26471
|
+
generatePromptPath ? /* @__PURE__ */ jsxs37(Text39, { color: PALETTE.warning, children: [
|
|
26456
26472
|
"components: ",
|
|
26457
26473
|
generatePromptPath
|
|
26458
26474
|
] }) : null,
|
|
26459
|
-
/* @__PURE__ */
|
|
26475
|
+
/* @__PURE__ */ jsx46(Text39, { color: PALETTE.warning, children: "Bundled invariants (utility-wrapper rejection, description content rules) do NOT apply." })
|
|
26460
26476
|
] });
|
|
26461
26477
|
}
|
|
26462
26478
|
|
|
26463
26479
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/DoneStep.tsx
|
|
26464
|
-
import { Box as
|
|
26480
|
+
import { Box as Box38, Text as Text41 } from "ink";
|
|
26465
26481
|
|
|
26466
26482
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/contentful-urls.ts
|
|
26467
26483
|
function normalizeHost(host) {
|
|
@@ -26477,32 +26493,32 @@ function buildPostPushUrl2({ host, spaceId, environmentId, view = "components" }
|
|
|
26477
26493
|
}
|
|
26478
26494
|
|
|
26479
26495
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/SpaceEnvironment.tsx
|
|
26480
|
-
import { Box as
|
|
26481
|
-
import { jsx as
|
|
26496
|
+
import { Box as Box37, Text as Text40 } from "ink";
|
|
26497
|
+
import { jsx as jsx47, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
26482
26498
|
function SpaceEnvironment({ spaceId, environmentId }) {
|
|
26483
|
-
return /* @__PURE__ */
|
|
26484
|
-
/* @__PURE__ */
|
|
26485
|
-
/* @__PURE__ */
|
|
26486
|
-
/* @__PURE__ */
|
|
26487
|
-
/* @__PURE__ */
|
|
26488
|
-
/* @__PURE__ */
|
|
26499
|
+
return /* @__PURE__ */ jsxs38(Box37, { gap: 1, marginTop: 1, children: [
|
|
26500
|
+
/* @__PURE__ */ jsx47(Text40, { color: PALETTE.muted, children: "Space:" }),
|
|
26501
|
+
/* @__PURE__ */ jsx47(Text40, { children: spaceId }),
|
|
26502
|
+
/* @__PURE__ */ jsx47(Text40, { color: PALETTE.muted, children: "/" }),
|
|
26503
|
+
/* @__PURE__ */ jsx47(Text40, { color: PALETTE.muted, children: "Environment:" }),
|
|
26504
|
+
/* @__PURE__ */ jsx47(Text40, { children: environmentId })
|
|
26489
26505
|
] });
|
|
26490
26506
|
}
|
|
26491
26507
|
|
|
26492
26508
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/DoneStep.tsx
|
|
26493
|
-
import { Fragment as
|
|
26509
|
+
import { Fragment as Fragment15, jsx as jsx48, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
26494
26510
|
var ACTIONS = ["created", "updated", "removed"];
|
|
26495
26511
|
function EntityRows({ entity, label }) {
|
|
26496
26512
|
const plural3 = (n) => `${n} ${label}${n !== 1 ? "s" : ""}`;
|
|
26497
|
-
return /* @__PURE__ */
|
|
26498
|
-
ACTIONS.filter((action) => entity[action] > 0).map((action) => /* @__PURE__ */
|
|
26499
|
-
/* @__PURE__ */
|
|
26513
|
+
return /* @__PURE__ */ jsxs39(Fragment15, { children: [
|
|
26514
|
+
ACTIONS.filter((action) => entity[action] > 0).map((action) => /* @__PURE__ */ jsxs39(Text41, { children: [
|
|
26515
|
+
/* @__PURE__ */ jsx48(Text41, { color: PALETTE.success, children: "\u2713" }),
|
|
26500
26516
|
" ",
|
|
26501
26517
|
plural3(entity[action]),
|
|
26502
26518
|
" ",
|
|
26503
26519
|
action
|
|
26504
26520
|
] }, action)),
|
|
26505
|
-
entity.failed > 0 && /* @__PURE__ */
|
|
26521
|
+
entity.failed > 0 && /* @__PURE__ */ jsxs39(Text41, { color: PALETTE.error, children: [
|
|
26506
26522
|
"\u2717 ",
|
|
26507
26523
|
plural3(entity.failed),
|
|
26508
26524
|
" failed \u2014 check logs above"
|
|
@@ -26510,9 +26526,9 @@ function EntityRows({ entity, label }) {
|
|
|
26510
26526
|
] });
|
|
26511
26527
|
}
|
|
26512
26528
|
function LinkRow({ title, url }) {
|
|
26513
|
-
return /* @__PURE__ */
|
|
26514
|
-
/* @__PURE__ */
|
|
26515
|
-
/* @__PURE__ */
|
|
26529
|
+
return /* @__PURE__ */ jsxs39(Box38, { flexDirection: "column", children: [
|
|
26530
|
+
/* @__PURE__ */ jsx48(Text41, { color: PALETTE.muted, children: title }),
|
|
26531
|
+
/* @__PURE__ */ jsx48(Text41, { color: PALETTE.accent, children: url })
|
|
26516
26532
|
] });
|
|
26517
26533
|
}
|
|
26518
26534
|
function DoneStep({
|
|
@@ -26534,27 +26550,27 @@ function DoneStep({
|
|
|
26534
26550
|
const totalPushed = componentTypes.created + componentTypes.updated + componentTypes.removed + designTokens.created + designTokens.updated + designTokens.removed;
|
|
26535
26551
|
const success = totalFailed === 0;
|
|
26536
26552
|
const urlArgs = { host: host ?? "api.contentful.com", spaceId, environmentId };
|
|
26537
|
-
return /* @__PURE__ */
|
|
26538
|
-
success ? /* @__PURE__ */
|
|
26539
|
-
totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */
|
|
26540
|
-
/* @__PURE__ */
|
|
26541
|
-
/* @__PURE__ */
|
|
26542
|
-
summary && /* @__PURE__ */
|
|
26553
|
+
return /* @__PURE__ */ jsxs39(Box38, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
26554
|
+
success ? /* @__PURE__ */ jsx48(Text41, { bold: true, color: PALETTE.success, children: "Done!" }) : /* @__PURE__ */ jsx48(Text41, { bold: true, color: PALETTE.warning, children: "\u26A0 Finished with errors" }),
|
|
26555
|
+
totalPushed === 0 && totalFailed === 0 && !summary ? /* @__PURE__ */ jsx48(Text41, { color: PALETTE.muted, children: "Nothing was pushed \u2014 everything was already up to date." }) : /* @__PURE__ */ jsxs39(Box38, { flexDirection: "column", children: [
|
|
26556
|
+
/* @__PURE__ */ jsx48(EntityRows, { entity: componentTypes, label: "Component Type" }),
|
|
26557
|
+
/* @__PURE__ */ jsx48(EntityRows, { entity: designTokens, label: "Design Token" }),
|
|
26558
|
+
summary && /* @__PURE__ */ jsx48(Box38, { marginTop: 1, children: /* @__PURE__ */ jsxs39(Text41, { color: PALETTE.muted, children: [
|
|
26543
26559
|
"Push result: ",
|
|
26544
26560
|
summary.succeeded,
|
|
26545
26561
|
"/",
|
|
26546
26562
|
summary.total,
|
|
26547
26563
|
" succeeded",
|
|
26548
|
-
summary.failed > 0 && /* @__PURE__ */
|
|
26564
|
+
summary.failed > 0 && /* @__PURE__ */ jsxs39(Text41, { color: PALETTE.error, children: [
|
|
26549
26565
|
", ",
|
|
26550
26566
|
summary.failed,
|
|
26551
26567
|
" failed"
|
|
26552
26568
|
] })
|
|
26553
26569
|
] }) })
|
|
26554
26570
|
] }),
|
|
26555
|
-
failures.length > 0 && /* @__PURE__ */
|
|
26556
|
-
/* @__PURE__ */
|
|
26557
|
-
failures.map((failure) => /* @__PURE__ */
|
|
26571
|
+
failures.length > 0 && /* @__PURE__ */ jsxs39(Box38, { flexDirection: "column", children: [
|
|
26572
|
+
/* @__PURE__ */ jsx48(Text41, { bold: true, color: PALETTE.error, children: "Failure details" }),
|
|
26573
|
+
failures.map((failure) => /* @__PURE__ */ jsxs39(Text41, { color: PALETTE.error, children: [
|
|
26558
26574
|
failure.entityType,
|
|
26559
26575
|
" ",
|
|
26560
26576
|
failure.entityId,
|
|
@@ -26562,11 +26578,11 @@ function DoneStep({
|
|
|
26562
26578
|
failure.message
|
|
26563
26579
|
] }, `${failure.entityType}:${failure.entityId}`))
|
|
26564
26580
|
] }),
|
|
26565
|
-
/* @__PURE__ */
|
|
26566
|
-
success && totalPushed > 0 && /* @__PURE__ */
|
|
26567
|
-
/* @__PURE__ */
|
|
26568
|
-
/* @__PURE__ */
|
|
26569
|
-
/* @__PURE__ */
|
|
26581
|
+
/* @__PURE__ */ jsx48(SpaceEnvironment, { spaceId, environmentId }),
|
|
26582
|
+
success && totalPushed > 0 && /* @__PURE__ */ jsxs39(Box38, { flexDirection: "column", gap: 1, children: [
|
|
26583
|
+
/* @__PURE__ */ jsx48(Text41, { color: PALETTE.success, children: "Your design system is now in Contentful Experiences." }),
|
|
26584
|
+
/* @__PURE__ */ jsx48(LinkRow, { title: "View your components here:", url: buildPostPushUrl2(urlArgs) }),
|
|
26585
|
+
/* @__PURE__ */ jsx48(
|
|
26570
26586
|
LinkRow,
|
|
26571
26587
|
{
|
|
26572
26588
|
title: "View your design tokens here:",
|
|
@@ -26574,13 +26590,13 @@ function DoneStep({
|
|
|
26574
26590
|
}
|
|
26575
26591
|
)
|
|
26576
26592
|
] }),
|
|
26577
|
-
/* @__PURE__ */
|
|
26593
|
+
/* @__PURE__ */ jsx48(Text41, { children: "[Enter / q] Exit" })
|
|
26578
26594
|
] });
|
|
26579
26595
|
}
|
|
26580
26596
|
|
|
26581
26597
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PathPrompt.tsx
|
|
26582
26598
|
import { useState as useState26 } from "react";
|
|
26583
|
-
import { Box as
|
|
26599
|
+
import { Box as Box39, Text as Text42 } from "ink";
|
|
26584
26600
|
import { readdirSync as readdirSync3 } from "node:fs";
|
|
26585
26601
|
import { dirname as dirname15, basename as basename6, join as join20 } from "node:path";
|
|
26586
26602
|
|
|
@@ -26614,7 +26630,7 @@ function useBlinkingCursor() {
|
|
|
26614
26630
|
}
|
|
26615
26631
|
|
|
26616
26632
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PathPrompt.tsx
|
|
26617
|
-
import { jsx as
|
|
26633
|
+
import { jsx as jsx49, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
26618
26634
|
function autocomplete(partial) {
|
|
26619
26635
|
if (!partial) return null;
|
|
26620
26636
|
const normalized = normalizePath(partial);
|
|
@@ -26671,52 +26687,52 @@ function PathPrompt({
|
|
|
26671
26687
|
const shown = input || defaultPath;
|
|
26672
26688
|
const isPlaceholder = input === "";
|
|
26673
26689
|
const cursor = cursorVisible ? "\u2588" : " ";
|
|
26674
|
-
return /* @__PURE__ */
|
|
26675
|
-
/* @__PURE__ */
|
|
26676
|
-
/* @__PURE__ */
|
|
26677
|
-
/* @__PURE__ */
|
|
26690
|
+
return /* @__PURE__ */ jsxs40(Box39, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
26691
|
+
/* @__PURE__ */ jsxs40(Box39, { gap: 1, children: [
|
|
26692
|
+
/* @__PURE__ */ jsx49(Text42, { color: PALETTE.accent, children: "?" }),
|
|
26693
|
+
/* @__PURE__ */ jsxs40(Text42, { bold: true, children: [
|
|
26678
26694
|
label,
|
|
26679
26695
|
":"
|
|
26680
26696
|
] }),
|
|
26681
|
-
/* @__PURE__ */
|
|
26682
|
-
/* @__PURE__ */
|
|
26697
|
+
/* @__PURE__ */ jsx49(Text42, { color: isPlaceholder ? PALETTE.muted : void 0, children: shown }),
|
|
26698
|
+
/* @__PURE__ */ jsx49(Text42, { children: cursor })
|
|
26683
26699
|
] }),
|
|
26684
|
-
/* @__PURE__ */
|
|
26685
|
-
/* @__PURE__ */
|
|
26686
|
-
/* @__PURE__ */
|
|
26687
|
-
/* @__PURE__ */
|
|
26700
|
+
/* @__PURE__ */ jsxs40(Box39, { gap: 3, children: [
|
|
26701
|
+
/* @__PURE__ */ jsx49(Text42, { children: "[Enter] Confirm" }),
|
|
26702
|
+
/* @__PURE__ */ jsx49(Text42, { children: "[Tab] Autocomplete" }),
|
|
26703
|
+
/* @__PURE__ */ jsx49(Text42, { children: "[Esc] Cancel" })
|
|
26688
26704
|
] })
|
|
26689
26705
|
] });
|
|
26690
26706
|
}
|
|
26691
26707
|
|
|
26692
26708
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PushingStep.tsx
|
|
26693
|
-
import { Box as
|
|
26709
|
+
import { Box as Box41, Text as Text44 } from "ink";
|
|
26694
26710
|
import { ProgressBar as ProgressBar2, ThemeProvider as ThemeProvider2 } from "@inkjs/ui";
|
|
26695
26711
|
|
|
26696
26712
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/components/StepHeader.tsx
|
|
26697
|
-
import { Box as
|
|
26698
|
-
import { jsx as
|
|
26713
|
+
import { Box as Box40, Text as Text43 } from "ink";
|
|
26714
|
+
import { jsx as jsx50, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
26699
26715
|
function StepHeader({ stepNumber, totalSteps, title }) {
|
|
26700
|
-
return /* @__PURE__ */
|
|
26701
|
-
/* @__PURE__ */
|
|
26702
|
-
/* @__PURE__ */
|
|
26703
|
-
/* @__PURE__ */
|
|
26716
|
+
return /* @__PURE__ */ jsxs41(Box40, { flexDirection: "column", gap: 0, children: [
|
|
26717
|
+
/* @__PURE__ */ jsx50(Text43, { color: PALETTE.muted, children: "\u2500".repeat(40) }),
|
|
26718
|
+
/* @__PURE__ */ jsxs41(Box40, { gap: 1, children: [
|
|
26719
|
+
/* @__PURE__ */ jsxs41(Text43, { bold: true, children: [
|
|
26704
26720
|
"Step ",
|
|
26705
26721
|
stepNumber,
|
|
26706
26722
|
" of ",
|
|
26707
26723
|
totalSteps
|
|
26708
26724
|
] }),
|
|
26709
|
-
/* @__PURE__ */
|
|
26710
|
-
/* @__PURE__ */
|
|
26725
|
+
/* @__PURE__ */ jsx50(Text43, { bold: true, children: "\u2014" }),
|
|
26726
|
+
/* @__PURE__ */ jsx50(Text43, { bold: true, children: title })
|
|
26711
26727
|
] }),
|
|
26712
|
-
/* @__PURE__ */
|
|
26728
|
+
/* @__PURE__ */ jsx50(Text43, { color: PALETTE.muted, children: "\u2500".repeat(40) })
|
|
26713
26729
|
] });
|
|
26714
26730
|
}
|
|
26715
26731
|
|
|
26716
26732
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/use-timed-spinner.tsx
|
|
26717
26733
|
import { useEffect as useEffect19, useState as useState27 } from "react";
|
|
26718
26734
|
import { Spinner as Spinner2 } from "@inkjs/ui";
|
|
26719
|
-
import { jsx as
|
|
26735
|
+
import { jsx as jsx51 } from "react/jsx-runtime";
|
|
26720
26736
|
function useTimedSpinner() {
|
|
26721
26737
|
const [elapsedSeconds, setElapsedSeconds] = useState27(0);
|
|
26722
26738
|
useEffect19(() => {
|
|
@@ -26728,39 +26744,39 @@ function useTimedSpinner() {
|
|
|
26728
26744
|
const mins = Math.floor(elapsedSeconds / 60);
|
|
26729
26745
|
const secs = elapsedSeconds % 60;
|
|
26730
26746
|
return {
|
|
26731
|
-
spinner: /* @__PURE__ */
|
|
26747
|
+
spinner: /* @__PURE__ */ jsx51(Spinner2, {}),
|
|
26732
26748
|
elapsed: mins > 0 ? `${mins}m ${secs}s` : `${secs}s`
|
|
26733
26749
|
};
|
|
26734
26750
|
}
|
|
26735
26751
|
|
|
26736
26752
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/PushingStep.tsx
|
|
26737
|
-
import { jsx as
|
|
26753
|
+
import { jsx as jsx52, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
26738
26754
|
function PushingStep({ stepNumber, totalSteps, progress }) {
|
|
26739
26755
|
const { elapsed } = useTimedSpinner();
|
|
26740
26756
|
const operationId = progress && progress.kind === "queued" ? progress.operationId : null;
|
|
26741
26757
|
const showGlobal = progress && progress.kind === "progress";
|
|
26742
26758
|
const showCurrent = progress && progress.kind === "progress" && progress.current ? progress.current : null;
|
|
26743
|
-
return /* @__PURE__ */
|
|
26744
|
-
/* @__PURE__ */
|
|
26745
|
-
/* @__PURE__ */
|
|
26746
|
-
operationId && /* @__PURE__ */
|
|
26747
|
-
/* @__PURE__ */
|
|
26748
|
-
/* @__PURE__ */
|
|
26759
|
+
return /* @__PURE__ */ jsxs42(Box41, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 1, children: [
|
|
26760
|
+
/* @__PURE__ */ jsx52(StepHeader, { stepNumber, totalSteps, title: "Push to Contentful" }),
|
|
26761
|
+
/* @__PURE__ */ jsx52(Text44, { children: "Writing component types and design tokens to your Contentful space..." }),
|
|
26762
|
+
operationId && /* @__PURE__ */ jsxs42(Box41, { gap: 1, children: [
|
|
26763
|
+
/* @__PURE__ */ jsx52(Text44, { color: PALETTE.muted, children: "Operation:" }),
|
|
26764
|
+
/* @__PURE__ */ jsx52(Text44, { children: operationId })
|
|
26749
26765
|
] }),
|
|
26750
|
-
showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */
|
|
26751
|
-
/* @__PURE__ */
|
|
26752
|
-
/* @__PURE__ */
|
|
26766
|
+
showGlobal && progress && progress.kind === "progress" && /* @__PURE__ */ jsx52(Box41, { gap: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs42(Box41, { gap: 2, children: [
|
|
26767
|
+
/* @__PURE__ */ jsx52(Box41, { width: 40, children: /* @__PURE__ */ jsx52(ThemeProvider2, { theme: PROGRESS_THEME, children: /* @__PURE__ */ jsx52(ProgressBar2, { value: Math.round(progress.processed / progress.total * 100) }) }) }),
|
|
26768
|
+
/* @__PURE__ */ jsxs42(Text44, { color: PALETTE.muted, children: [
|
|
26753
26769
|
progress.processed,
|
|
26754
26770
|
"/",
|
|
26755
26771
|
progress.total,
|
|
26756
26772
|
" entities"
|
|
26757
26773
|
] })
|
|
26758
26774
|
] }) }),
|
|
26759
|
-
showCurrent && /* @__PURE__ */
|
|
26760
|
-
/* @__PURE__ */
|
|
26761
|
-
/* @__PURE__ */
|
|
26775
|
+
showCurrent && /* @__PURE__ */ jsxs42(Box41, { gap: 1, children: [
|
|
26776
|
+
/* @__PURE__ */ jsx52(Text44, { color: PALETTE.muted, children: "Now processing:" }),
|
|
26777
|
+
/* @__PURE__ */ jsx52(Text44, { children: showCurrent })
|
|
26762
26778
|
] }),
|
|
26763
|
-
/* @__PURE__ */
|
|
26779
|
+
/* @__PURE__ */ jsx52(Box41, { marginTop: 1, children: /* @__PURE__ */ jsxs42(Text44, { color: PALETTE.muted, children: [
|
|
26764
26780
|
"Elapsed: ",
|
|
26765
26781
|
elapsed
|
|
26766
26782
|
] }) })
|
|
@@ -26769,7 +26785,7 @@ function PushingStep({ stepNumber, totalSteps, progress }) {
|
|
|
26769
26785
|
|
|
26770
26786
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/WizardPreviewStep.tsx
|
|
26771
26787
|
import { useEffect as useEffect20, useState as useState28, useMemo as useMemo5 } from "react";
|
|
26772
|
-
import { Box as
|
|
26788
|
+
import { Box as Box42, Text as Text45 } from "ink";
|
|
26773
26789
|
|
|
26774
26790
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/preview-diff.ts
|
|
26775
26791
|
function computeComponentDiffLines(current, proposed, changeClassification) {
|
|
@@ -26943,7 +26959,7 @@ function usePreviewConfirmationInput(breakingWithImpact, onConfirm) {
|
|
|
26943
26959
|
}
|
|
26944
26960
|
|
|
26945
26961
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/WizardPreviewStep.tsx
|
|
26946
|
-
import { Fragment as
|
|
26962
|
+
import { Fragment as Fragment16, jsx as jsx53, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
26947
26963
|
function buildPreviewSummaryLines(preview) {
|
|
26948
26964
|
const lines = [];
|
|
26949
26965
|
const { components, tokens } = preview;
|
|
@@ -27197,11 +27213,11 @@ function WizardPreviewStep({
|
|
|
27197
27213
|
return;
|
|
27198
27214
|
}
|
|
27199
27215
|
});
|
|
27200
|
-
return /* @__PURE__ */
|
|
27201
|
-
/* @__PURE__ */
|
|
27202
|
-
hasAnything ? /* @__PURE__ */
|
|
27203
|
-
/* @__PURE__ */
|
|
27204
|
-
/* @__PURE__ */
|
|
27216
|
+
return /* @__PURE__ */ jsxs43(Box42, { flexDirection: "column", gap: 1, paddingX: 2, paddingY: 2, children: [
|
|
27217
|
+
/* @__PURE__ */ jsx53(StepHeader, { stepNumber, totalSteps, title: "Push to Contentful" }),
|
|
27218
|
+
hasAnything ? /* @__PURE__ */ jsxs43(Fragment16, { children: [
|
|
27219
|
+
/* @__PURE__ */ jsx53(Text45, { children: "Here's what will happen in your space:" }),
|
|
27220
|
+
/* @__PURE__ */ jsxs43(
|
|
27205
27221
|
WindowedPanel,
|
|
27206
27222
|
{
|
|
27207
27223
|
width: Math.max(20, terminalColumns - 4),
|
|
@@ -27209,24 +27225,24 @@ function WizardPreviewStep({
|
|
|
27209
27225
|
title: diffExpanded ? `Diff (${diffLines.length} lines)` : "",
|
|
27210
27226
|
focused: false,
|
|
27211
27227
|
children: [
|
|
27212
|
-
activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */
|
|
27213
|
-
/* @__PURE__ */
|
|
27228
|
+
activeLines.slice(boundedScrollOffset, boundedScrollOffset + viewportHeight).map((line) => /* @__PURE__ */ jsx53(Text45, { color: line.color === "gray" ? PALETTE.muted : line.color, wrap: "truncate-end", children: line.text }, line.key)),
|
|
27229
|
+
/* @__PURE__ */ jsx53(Text45, { color: PALETTE.muted, wrap: "truncate-end", children: formatPreviewScrollIndicator(activeLines.length, boundedScrollOffset, viewportHeight) })
|
|
27214
27230
|
]
|
|
27215
27231
|
}
|
|
27216
27232
|
)
|
|
27217
|
-
] }) : /* @__PURE__ */
|
|
27218
|
-
breakingWithImpact && /* @__PURE__ */
|
|
27219
|
-
/* @__PURE__ */
|
|
27220
|
-
/* @__PURE__ */
|
|
27221
|
-
/* @__PURE__ */
|
|
27222
|
-
/* @__PURE__ */
|
|
27233
|
+
] }) : /* @__PURE__ */ jsx53(Text45, { color: PALETTE.muted, children: "Nothing to push \u2014 everything is already up to date." }),
|
|
27234
|
+
breakingWithImpact && /* @__PURE__ */ jsx53(Box42, { marginTop: 1, children: /* @__PURE__ */ jsx53(Text45, { color: PALETTE.error, bold: true, children: "\u26A0 Breaking changes will affect downstream entities. Press Enter to acknowledge and apply." }) }),
|
|
27235
|
+
/* @__PURE__ */ jsx53(SpaceEnvironment, { spaceId, environmentId }),
|
|
27236
|
+
/* @__PURE__ */ jsxs43(Box42, { gap: 3, marginTop: 1, children: [
|
|
27237
|
+
/* @__PURE__ */ jsx53(Text45, { children: "[Enter] Push to Contentful" }),
|
|
27238
|
+
/* @__PURE__ */ jsxs43(Text45, { children: [
|
|
27223
27239
|
"[d] ",
|
|
27224
27240
|
diffExpanded ? "Hide" : "Show",
|
|
27225
27241
|
" diff"
|
|
27226
27242
|
] }),
|
|
27227
|
-
diffExpanded && /* @__PURE__ */
|
|
27228
|
-
onEdit && /* @__PURE__ */
|
|
27229
|
-
/* @__PURE__ */
|
|
27243
|
+
diffExpanded && /* @__PURE__ */ jsx53(Text45, { children: "[\u2191\u2193] Scroll [f/b] Page" }),
|
|
27244
|
+
onEdit && /* @__PURE__ */ jsx53(Text45, { children: "[e] Edit definitions" }),
|
|
27245
|
+
/* @__PURE__ */ jsx53(Text45, { children: "[q] Cancel" })
|
|
27230
27246
|
] })
|
|
27231
27247
|
] });
|
|
27232
27248
|
}
|
|
@@ -27238,9 +27254,9 @@ function buildRunTeaserLine(runId) {
|
|
|
27238
27254
|
}
|
|
27239
27255
|
|
|
27240
27256
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/screen.tsx
|
|
27241
|
-
import { jsx as
|
|
27257
|
+
import { jsx as jsx54, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
27242
27258
|
function totalStepsFor(state2) {
|
|
27243
|
-
if (!state2.extractSessionId) return
|
|
27259
|
+
if (!state2.extractSessionId) return TOKENS_ONLY_STEP_COUNT;
|
|
27244
27260
|
const hasTokenStage = !!state2.tokensPath || !!state2.rawTokensPath;
|
|
27245
27261
|
return 3 + (hasTokenStage ? 1 : 0) + 2 + (state2.mapTokensEligible === true ? 1 : 0);
|
|
27246
27262
|
}
|
|
@@ -27260,7 +27276,7 @@ function FlowScreen({
|
|
|
27260
27276
|
const content = (() => {
|
|
27261
27277
|
switch (state2.step) {
|
|
27262
27278
|
case "final-review":
|
|
27263
|
-
return /* @__PURE__ */
|
|
27279
|
+
return /* @__PURE__ */ jsx54(
|
|
27264
27280
|
GenerateReviewStep,
|
|
27265
27281
|
{
|
|
27266
27282
|
extractSessionId: state2.extractSessionId,
|
|
@@ -27277,7 +27293,7 @@ function FlowScreen({
|
|
|
27277
27293
|
}
|
|
27278
27294
|
);
|
|
27279
27295
|
case "previewing":
|
|
27280
|
-
return /* @__PURE__ */
|
|
27296
|
+
return /* @__PURE__ */ jsx54(
|
|
27281
27297
|
RunningStep,
|
|
27282
27298
|
{
|
|
27283
27299
|
stepNumber: totalSteps,
|
|
@@ -27288,7 +27304,7 @@ function FlowScreen({
|
|
|
27288
27304
|
);
|
|
27289
27305
|
case "preview-gate":
|
|
27290
27306
|
if (!state2.serverPreview) return null;
|
|
27291
|
-
return /* @__PURE__ */
|
|
27307
|
+
return /* @__PURE__ */ jsx54(
|
|
27292
27308
|
WizardPreviewStep,
|
|
27293
27309
|
{
|
|
27294
27310
|
preview: state2.serverPreview,
|
|
@@ -27302,9 +27318,9 @@ function FlowScreen({
|
|
|
27302
27318
|
}
|
|
27303
27319
|
);
|
|
27304
27320
|
case "pushing":
|
|
27305
|
-
return /* @__PURE__ */
|
|
27321
|
+
return /* @__PURE__ */ jsx54(PushingStep, { stepNumber: totalSteps, totalSteps, progress: state2.pushProgress });
|
|
27306
27322
|
case "path-prompt":
|
|
27307
|
-
return /* @__PURE__ */
|
|
27323
|
+
return /* @__PURE__ */ jsx54(
|
|
27308
27324
|
PathPrompt,
|
|
27309
27325
|
{
|
|
27310
27326
|
defaultPath: state2.outDir,
|
|
@@ -27313,7 +27329,7 @@ function FlowScreen({
|
|
|
27313
27329
|
}
|
|
27314
27330
|
);
|
|
27315
27331
|
case "printing":
|
|
27316
|
-
return /* @__PURE__ */
|
|
27332
|
+
return /* @__PURE__ */ jsx54(
|
|
27317
27333
|
RunningStep,
|
|
27318
27334
|
{
|
|
27319
27335
|
stepNumber: totalSteps,
|
|
@@ -27324,7 +27340,7 @@ function FlowScreen({
|
|
|
27324
27340
|
);
|
|
27325
27341
|
case "print-gate": {
|
|
27326
27342
|
const teaser = buildRunTeaserLine(state2.lastRunId);
|
|
27327
|
-
return /* @__PURE__ */
|
|
27343
|
+
return /* @__PURE__ */ jsx54(
|
|
27328
27344
|
GateStep,
|
|
27329
27345
|
{
|
|
27330
27346
|
message: "Files saved",
|
|
@@ -27338,7 +27354,7 @@ function FlowScreen({
|
|
|
27338
27354
|
}
|
|
27339
27355
|
case "done": {
|
|
27340
27356
|
const totalFailed = state2.pushResult.componentTypes.failed + state2.pushResult.designTokens.failed;
|
|
27341
|
-
return /* @__PURE__ */
|
|
27357
|
+
return /* @__PURE__ */ jsx54(
|
|
27342
27358
|
DoneStep,
|
|
27343
27359
|
{
|
|
27344
27360
|
componentTypes: state2.pushResult.componentTypes,
|
|
@@ -27353,7 +27369,7 @@ function FlowScreen({
|
|
|
27353
27369
|
);
|
|
27354
27370
|
}
|
|
27355
27371
|
case "preview-validation-error":
|
|
27356
|
-
return /* @__PURE__ */
|
|
27372
|
+
return /* @__PURE__ */ jsx54(
|
|
27357
27373
|
PreviewValidationErrorScreen,
|
|
27358
27374
|
{
|
|
27359
27375
|
errors: state2.previewValidationErrors,
|
|
@@ -27364,7 +27380,7 @@ function FlowScreen({
|
|
|
27364
27380
|
}
|
|
27365
27381
|
);
|
|
27366
27382
|
case "error":
|
|
27367
|
-
return /* @__PURE__ */
|
|
27383
|
+
return /* @__PURE__ */ jsx54(
|
|
27368
27384
|
ErrorStep,
|
|
27369
27385
|
{
|
|
27370
27386
|
stepName: state2.errorStep,
|
|
@@ -27375,8 +27391,8 @@ function FlowScreen({
|
|
|
27375
27391
|
);
|
|
27376
27392
|
}
|
|
27377
27393
|
})();
|
|
27378
|
-
return /* @__PURE__ */
|
|
27379
|
-
/* @__PURE__ */
|
|
27394
|
+
return /* @__PURE__ */ jsxs44(Box43, { flexDirection: "column", children: [
|
|
27395
|
+
/* @__PURE__ */ jsx54(CustomPromptBanner, { generatePromptPath }),
|
|
27380
27396
|
content
|
|
27381
27397
|
] });
|
|
27382
27398
|
}
|
|
@@ -28149,7 +28165,7 @@ function useFlow(start, options = {}) {
|
|
|
28149
28165
|
|
|
28150
28166
|
// packages/experience-design-system-cli/src/tui/help/PageContainer.tsx
|
|
28151
28167
|
import { useEffect as useEffect22, useState as useState29 } from "react";
|
|
28152
|
-
import { Box as
|
|
28168
|
+
import { Box as Box44, Text as Text46, useInput as useInput11 } from "ink";
|
|
28153
28169
|
init_debug_store();
|
|
28154
28170
|
|
|
28155
28171
|
// packages/experience-design-system-cli/src/tui/help/help-info.ts
|
|
@@ -28210,13 +28226,13 @@ async function readHelpInfo() {
|
|
|
28210
28226
|
}
|
|
28211
28227
|
|
|
28212
28228
|
// packages/experience-design-system-cli/src/tui/help/PageContainer.tsx
|
|
28213
|
-
import { Fragment as
|
|
28229
|
+
import { Fragment as Fragment17, jsx as jsx55, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
28214
28230
|
function Section({ title, rows }) {
|
|
28215
|
-
return /* @__PURE__ */
|
|
28216
|
-
/* @__PURE__ */
|
|
28217
|
-
rows.map((row) => /* @__PURE__ */
|
|
28218
|
-
/* @__PURE__ */
|
|
28219
|
-
/* @__PURE__ */
|
|
28231
|
+
return /* @__PURE__ */ jsxs45(Box44, { flexDirection: "column", children: [
|
|
28232
|
+
/* @__PURE__ */ jsx55(Text46, { bold: true, color: PALETTE.accent, children: title }),
|
|
28233
|
+
rows.map((row) => /* @__PURE__ */ jsxs45(Box44, { gap: 1, children: [
|
|
28234
|
+
/* @__PURE__ */ jsx55(Box44, { width: 16, flexShrink: 0, children: /* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: row.label }) }),
|
|
28235
|
+
/* @__PURE__ */ jsx55(Text46, { children: row.value })
|
|
28220
28236
|
] }, row.label))
|
|
28221
28237
|
] });
|
|
28222
28238
|
}
|
|
@@ -28240,14 +28256,14 @@ function HelpScreen({ onDone }) {
|
|
|
28240
28256
|
return;
|
|
28241
28257
|
}
|
|
28242
28258
|
});
|
|
28243
|
-
return /* @__PURE__ */
|
|
28244
|
-
/* @__PURE__ */
|
|
28245
|
-
info ? /* @__PURE__ */
|
|
28246
|
-
/* @__PURE__ */
|
|
28247
|
-
/* @__PURE__ */
|
|
28248
|
-
/* @__PURE__ */
|
|
28249
|
-
] }) : /* @__PURE__ */
|
|
28250
|
-
/* @__PURE__ */
|
|
28259
|
+
return /* @__PURE__ */ jsxs45(Box44, { flexDirection: "column", paddingX: 2, paddingY: 1, gap: 1, children: [
|
|
28260
|
+
/* @__PURE__ */ jsx55(Text46, { bold: true, children: "Help" }),
|
|
28261
|
+
info ? /* @__PURE__ */ jsxs45(Fragment17, { children: [
|
|
28262
|
+
/* @__PURE__ */ jsx55(Section, { title: "Where things are stored", rows: info.storage }),
|
|
28263
|
+
/* @__PURE__ */ jsx55(Section, { title: "Troubleshooting", rows: info.troubleshooting }),
|
|
28264
|
+
/* @__PURE__ */ jsx55(Text46, { color: PALETTE.muted, children: "Hit a problem? Turn on Debug Mode in Settings, reproduce it, then share the session folder above. The CMA token is redacted from those logs." })
|
|
28265
|
+
] }) : /* @__PURE__ */ jsx55(Text46, { color: PALETTE.accent, children: "Loading..." }),
|
|
28266
|
+
/* @__PURE__ */ jsx55(
|
|
28251
28267
|
ControlHints,
|
|
28252
28268
|
{
|
|
28253
28269
|
hints: [
|
|
@@ -28261,8 +28277,8 @@ function HelpScreen({ onDone }) {
|
|
|
28261
28277
|
|
|
28262
28278
|
// packages/experience-design-system-cli/src/tui/settings/PageContainer.tsx
|
|
28263
28279
|
import { useState as useState30 } from "react";
|
|
28264
|
-
import { Box as
|
|
28265
|
-
import { jsx as
|
|
28280
|
+
import { Box as Box45, Text as Text47, useInput as useInput12 } from "ink";
|
|
28281
|
+
import { jsx as jsx56, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
28266
28282
|
function SettingsScreen({
|
|
28267
28283
|
onNavigate,
|
|
28268
28284
|
onBack
|
|
@@ -28293,15 +28309,15 @@ function SettingsScreen({
|
|
|
28293
28309
|
onBack();
|
|
28294
28310
|
}
|
|
28295
28311
|
});
|
|
28296
|
-
return /* @__PURE__ */
|
|
28297
|
-
/* @__PURE__ */
|
|
28298
|
-
/* @__PURE__ */
|
|
28299
|
-
items.map((item, i) => /* @__PURE__ */
|
|
28312
|
+
return /* @__PURE__ */ jsxs46(Box45, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
28313
|
+
/* @__PURE__ */ jsx56(Text47, { bold: true, children: "Settings" }),
|
|
28314
|
+
/* @__PURE__ */ jsx56(Text47, { color: PALETTE.muted, children: " " }),
|
|
28315
|
+
items.map((item, i) => /* @__PURE__ */ jsxs46(Text47, { color: i === focusIdx ? PALETTE.accent : void 0, children: [
|
|
28300
28316
|
i === focusIdx ? "> " : " ",
|
|
28301
28317
|
item.label
|
|
28302
28318
|
] }, item.label)),
|
|
28303
|
-
/* @__PURE__ */
|
|
28304
|
-
/* @__PURE__ */
|
|
28319
|
+
/* @__PURE__ */ jsx56(Text47, { children: " " }),
|
|
28320
|
+
/* @__PURE__ */ jsx56(
|
|
28305
28321
|
ControlHints,
|
|
28306
28322
|
{
|
|
28307
28323
|
hints: [
|
|
@@ -28316,11 +28332,11 @@ function SettingsScreen({
|
|
|
28316
28332
|
|
|
28317
28333
|
// packages/experience-design-system-cli/src/tui/settings/configuration/ConfigurationScreen.tsx
|
|
28318
28334
|
import { useState as useState35 } from "react";
|
|
28319
|
-
import { Box as
|
|
28335
|
+
import { Box as Box50, Text as Text53, useInput as useInput16 } from "ink";
|
|
28320
28336
|
|
|
28321
28337
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentsScreen.tsx
|
|
28322
28338
|
import { useEffect as useEffect24, useRef as useRef15, useState as useState33 } from "react";
|
|
28323
|
-
import { Box as
|
|
28339
|
+
import { Box as Box48, Text as Text51, useInput as useInput14 } from "ink";
|
|
28324
28340
|
init_debug_store();
|
|
28325
28341
|
|
|
28326
28342
|
// packages/experience-design-system-cli/src/tui/settings/shared/debug-trail.ts
|
|
@@ -28649,12 +28665,12 @@ async function writeAgentConfig(config) {
|
|
|
28649
28665
|
|
|
28650
28666
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentDetail.tsx
|
|
28651
28667
|
import { useEffect as useEffect23, useState as useState32 } from "react";
|
|
28652
|
-
import { Box as
|
|
28668
|
+
import { Box as Box47, Text as Text50 } from "ink";
|
|
28653
28669
|
|
|
28654
28670
|
// packages/experience-design-system-cli/src/tui/settings/shared/FieldForm.tsx
|
|
28655
28671
|
import { useState as useState31 } from "react";
|
|
28656
|
-
import { Box as
|
|
28657
|
-
import { Fragment as
|
|
28672
|
+
import { Box as Box46, Text as Text48, useInput as useInput13 } from "ink";
|
|
28673
|
+
import { Fragment as Fragment18, jsx as jsx57, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
28658
28674
|
function formLabelWidth(rows) {
|
|
28659
28675
|
return Math.max(...rows.map((row) => row.label.length));
|
|
28660
28676
|
}
|
|
@@ -28663,9 +28679,9 @@ function FormReadOnlyRow({
|
|
|
28663
28679
|
labelWidth,
|
|
28664
28680
|
children
|
|
28665
28681
|
}) {
|
|
28666
|
-
return /* @__PURE__ */
|
|
28667
|
-
/* @__PURE__ */
|
|
28668
|
-
/* @__PURE__ */
|
|
28682
|
+
return /* @__PURE__ */ jsxs47(Box46, { gap: 1, children: [
|
|
28683
|
+
/* @__PURE__ */ jsx57(Text48, { children: " " }),
|
|
28684
|
+
/* @__PURE__ */ jsx57(Box46, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx57(Text48, { color: PALETTE.muted, children: label }) }),
|
|
28669
28685
|
children
|
|
28670
28686
|
] });
|
|
28671
28687
|
}
|
|
@@ -28727,20 +28743,20 @@ function FieldForm({
|
|
|
28727
28743
|
}
|
|
28728
28744
|
}
|
|
28729
28745
|
});
|
|
28730
|
-
const pointer = (isActive) => /* @__PURE__ */
|
|
28731
|
-
return /* @__PURE__ */
|
|
28732
|
-
/* @__PURE__ */
|
|
28733
|
-
subtitle && /* @__PURE__ */
|
|
28734
|
-
/* @__PURE__ */
|
|
28735
|
-
/* @__PURE__ */
|
|
28746
|
+
const pointer = (isActive) => /* @__PURE__ */ jsx57(Text48, { color: isActive ? PALETTE.accent : void 0, children: isActive ? "\u276F" : " " });
|
|
28747
|
+
return /* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
28748
|
+
/* @__PURE__ */ jsx57(Text48, { bold: true, children: title }),
|
|
28749
|
+
subtitle && /* @__PURE__ */ jsx57(Text48, { color: PALETTE.muted, children: subtitle }),
|
|
28750
|
+
/* @__PURE__ */ jsx57(Text48, { children: " " }),
|
|
28751
|
+
/* @__PURE__ */ jsxs47(Box46, { flexDirection: "column", children: [
|
|
28736
28752
|
fields2.map((field, index) => {
|
|
28737
28753
|
const isActive = index === active;
|
|
28738
28754
|
const value = values[field.key];
|
|
28739
28755
|
const display = field.masked ? "\u2022".repeat(value.length) : value;
|
|
28740
|
-
return /* @__PURE__ */
|
|
28756
|
+
return /* @__PURE__ */ jsxs47(Box46, { gap: 1, children: [
|
|
28741
28757
|
pointer(isActive),
|
|
28742
|
-
/* @__PURE__ */
|
|
28743
|
-
isActive && editing ? /* @__PURE__ */
|
|
28758
|
+
/* @__PURE__ */ jsx57(Box46, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx57(Text48, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: field.label }) }),
|
|
28759
|
+
isActive && editing ? /* @__PURE__ */ jsx57(
|
|
28744
28760
|
ClearableTextInput,
|
|
28745
28761
|
{
|
|
28746
28762
|
value,
|
|
@@ -28748,34 +28764,34 @@ function FieldForm({
|
|
|
28748
28764
|
onSubmit: () => setEditing(false),
|
|
28749
28765
|
mask: field.masked ? "\u2022" : void 0
|
|
28750
28766
|
}
|
|
28751
|
-
) : display ? /* @__PURE__ */
|
|
28767
|
+
) : display ? /* @__PURE__ */ jsx57(Text48, { bold: true, children: display }) : (
|
|
28752
28768
|
// An empty value shows its hint (or "(empty)") in the value's place, not after an empty element, so the
|
|
28753
28769
|
// text starts in the same column as every other row's.
|
|
28754
|
-
/* @__PURE__ */
|
|
28770
|
+
/* @__PURE__ */ jsx57(Text48, { color: PALETTE.muted, children: field.hint ?? "(empty)" })
|
|
28755
28771
|
),
|
|
28756
|
-
display && field.hint && /* @__PURE__ */
|
|
28772
|
+
display && field.hint && /* @__PURE__ */ jsx57(Text48, { color: PALETTE.muted, children: field.hint })
|
|
28757
28773
|
] }, field.key);
|
|
28758
28774
|
}),
|
|
28759
28775
|
actions.map((action, index) => {
|
|
28760
28776
|
const isActive = fields2.length + index === active;
|
|
28761
|
-
return /* @__PURE__ */
|
|
28777
|
+
return /* @__PURE__ */ jsxs47(Box46, { gap: 1, children: [
|
|
28762
28778
|
pointer(isActive),
|
|
28763
|
-
/* @__PURE__ */
|
|
28764
|
-
/* @__PURE__ */
|
|
28779
|
+
/* @__PURE__ */ jsx57(Box46, { width: labelWidth, flexShrink: 0, children: /* @__PURE__ */ jsx57(Text48, { bold: isActive, color: isActive ? PALETTE.accent : PALETTE.muted, children: action.label }) }),
|
|
28780
|
+
/* @__PURE__ */ jsx57(Text48, { color: action.running ? PALETTE.accent : PALETTE.muted, children: action.running ? action.runningText ?? "running..." : action.description })
|
|
28765
28781
|
] }, action.label);
|
|
28766
28782
|
})
|
|
28767
28783
|
] }),
|
|
28768
|
-
notice && /* @__PURE__ */
|
|
28769
|
-
/* @__PURE__ */
|
|
28770
|
-
/* @__PURE__ */
|
|
28784
|
+
notice && /* @__PURE__ */ jsxs47(Fragment18, { children: [
|
|
28785
|
+
/* @__PURE__ */ jsx57(Text48, { children: " " }),
|
|
28786
|
+
/* @__PURE__ */ jsxs47(Text48, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
28771
28787
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
28772
28788
|
" ",
|
|
28773
28789
|
notice.text
|
|
28774
28790
|
] })
|
|
28775
28791
|
] }),
|
|
28776
28792
|
children,
|
|
28777
|
-
/* @__PURE__ */
|
|
28778
|
-
/* @__PURE__ */
|
|
28793
|
+
/* @__PURE__ */ jsx57(Text48, { children: " " }),
|
|
28794
|
+
/* @__PURE__ */ jsx57(
|
|
28779
28795
|
ControlHints,
|
|
28780
28796
|
{
|
|
28781
28797
|
hints: editing ? [
|
|
@@ -28797,8 +28813,8 @@ function FieldForm({
|
|
|
28797
28813
|
}
|
|
28798
28814
|
|
|
28799
28815
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentStatusBadge.tsx
|
|
28800
|
-
import { Text as
|
|
28801
|
-
import { jsx as
|
|
28816
|
+
import { Text as Text49 } from "ink";
|
|
28817
|
+
import { jsx as jsx58 } from "react/jsx-runtime";
|
|
28802
28818
|
var TONE_COLOR = {
|
|
28803
28819
|
ok: PALETTE.success,
|
|
28804
28820
|
bad: PALETTE.error,
|
|
@@ -28810,7 +28826,7 @@ function AgentStatusBadge({
|
|
|
28810
28826
|
binary
|
|
28811
28827
|
}) {
|
|
28812
28828
|
const { symbol, text, tone } = LIST_STATUS[checks ? statusFromChecks(name, checks, binary) : "checking"];
|
|
28813
|
-
return /* @__PURE__ */
|
|
28829
|
+
return /* @__PURE__ */ jsx58(Text49, { color: TONE_COLOR[tone], children: `${symbol} ${text}` });
|
|
28814
28830
|
}
|
|
28815
28831
|
|
|
28816
28832
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/apply-binary-overrides.ts
|
|
@@ -28832,16 +28848,16 @@ function applyBinaryOverrides(config) {
|
|
|
28832
28848
|
}
|
|
28833
28849
|
|
|
28834
28850
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentDetail.tsx
|
|
28835
|
-
import { jsx as
|
|
28851
|
+
import { jsx as jsx59, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
28836
28852
|
var fields = (name) => [
|
|
28837
28853
|
{ key: "binary", label: "Command path", hint: `(empty: \`${AGENT_BINARIES[name]}\` from the PATH)` },
|
|
28838
28854
|
{ key: "model", label: "Model", hint: `(empty: ${defaultModelLabel(name)})` }
|
|
28839
28855
|
];
|
|
28840
28856
|
var INSPECT_DELAY_MS = 400;
|
|
28841
28857
|
function StatusHeading() {
|
|
28842
|
-
return /* @__PURE__ */
|
|
28843
|
-
/* @__PURE__ */
|
|
28844
|
-
/* @__PURE__ */
|
|
28858
|
+
return /* @__PURE__ */ jsxs48(Box47, { gap: 1, children: [
|
|
28859
|
+
/* @__PURE__ */ jsx59(Text50, { bold: true, color: PALETTE.muted, children: "STATUS" }),
|
|
28860
|
+
/* @__PURE__ */ jsx59(Text50, { color: PALETTE.muted, children: "\xB7 read only" })
|
|
28845
28861
|
] });
|
|
28846
28862
|
}
|
|
28847
28863
|
function AgentDetail({
|
|
@@ -28904,7 +28920,7 @@ function AgentDetail({
|
|
|
28904
28920
|
};
|
|
28905
28921
|
const formFields = fields(name);
|
|
28906
28922
|
const labelWidth = formLabelWidth([...formFields, action]);
|
|
28907
|
-
return /* @__PURE__ */
|
|
28923
|
+
return /* @__PURE__ */ jsx59(
|
|
28908
28924
|
FieldForm,
|
|
28909
28925
|
{
|
|
28910
28926
|
title: AGENT_LABELS[name],
|
|
@@ -28921,16 +28937,16 @@ function AgentDetail({
|
|
|
28921
28937
|
actions: [action],
|
|
28922
28938
|
notice: testing ? null : notice,
|
|
28923
28939
|
busy: saving || testing,
|
|
28924
|
-
children: /* @__PURE__ */
|
|
28925
|
-
/* @__PURE__ */
|
|
28926
|
-
statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */
|
|
28940
|
+
children: /* @__PURE__ */ jsxs48(Box47, { flexDirection: "column", marginTop: 1, children: [
|
|
28941
|
+
/* @__PURE__ */ jsx59(StatusHeading, {}),
|
|
28942
|
+
statusRows(name, checks, settings.binary).map((row) => /* @__PURE__ */ jsx59(FormReadOnlyRow, { label: row.label, labelWidth, children: /* @__PURE__ */ jsx59(Text50, { color: TONE_COLOR[row.tone], children: row.value }) }, row.label))
|
|
28927
28943
|
] })
|
|
28928
28944
|
}
|
|
28929
28945
|
);
|
|
28930
28946
|
}
|
|
28931
28947
|
|
|
28932
28948
|
// packages/experience-design-system-cli/src/tui/settings/configuration/agents/AgentsScreen.tsx
|
|
28933
|
-
import { Fragment as
|
|
28949
|
+
import { Fragment as Fragment19, jsx as jsx60, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
28934
28950
|
var NAME_WIDTH = 16;
|
|
28935
28951
|
var PANEL_LABEL_WIDTH = "Command".length;
|
|
28936
28952
|
function AgentsScreen({ onDone }) {
|
|
@@ -29040,21 +29056,21 @@ function AgentsScreen({ onDone }) {
|
|
|
29040
29056
|
}
|
|
29041
29057
|
});
|
|
29042
29058
|
if (!config) {
|
|
29043
|
-
return /* @__PURE__ */
|
|
29044
|
-
/* @__PURE__ */
|
|
29045
|
-
/* @__PURE__ */
|
|
29046
|
-
loadError ? /* @__PURE__ */
|
|
29047
|
-
/* @__PURE__ */
|
|
29059
|
+
return /* @__PURE__ */ jsxs49(Box48, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
29060
|
+
/* @__PURE__ */ jsx60(Text51, { bold: true, children: "Agents" }),
|
|
29061
|
+
/* @__PURE__ */ jsx60(Text51, { children: " " }),
|
|
29062
|
+
loadError ? /* @__PURE__ */ jsxs49(Fragment19, { children: [
|
|
29063
|
+
/* @__PURE__ */ jsxs49(Text51, { color: PALETTE.error, children: [
|
|
29048
29064
|
"\u2717 Could not read the settings: ",
|
|
29049
29065
|
loadError
|
|
29050
29066
|
] }),
|
|
29051
|
-
/* @__PURE__ */
|
|
29052
|
-
/* @__PURE__ */
|
|
29053
|
-
] }) : /* @__PURE__ */
|
|
29067
|
+
/* @__PURE__ */ jsx60(Text51, { children: " " }),
|
|
29068
|
+
/* @__PURE__ */ jsx60(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
|
|
29069
|
+
] }) : /* @__PURE__ */ jsx60(Text51, { color: PALETTE.accent, children: "Loading..." })
|
|
29054
29070
|
] });
|
|
29055
29071
|
}
|
|
29056
29072
|
if (open) {
|
|
29057
|
-
return /* @__PURE__ */
|
|
29073
|
+
return /* @__PURE__ */ jsx60(
|
|
29058
29074
|
AgentDetail,
|
|
29059
29075
|
{
|
|
29060
29076
|
name: open,
|
|
@@ -29075,47 +29091,47 @@ function AgentsScreen({ onDone }) {
|
|
|
29075
29091
|
);
|
|
29076
29092
|
}
|
|
29077
29093
|
const focusedAgent = AGENT_NAMES[focus];
|
|
29078
|
-
return /* @__PURE__ */
|
|
29079
|
-
/* @__PURE__ */
|
|
29080
|
-
/* @__PURE__ */
|
|
29081
|
-
/* @__PURE__ */
|
|
29082
|
-
/* @__PURE__ */
|
|
29083
|
-
/* @__PURE__ */
|
|
29084
|
-
/* @__PURE__ */
|
|
29085
|
-
saving && /* @__PURE__ */
|
|
29094
|
+
return /* @__PURE__ */ jsxs49(Box48, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
29095
|
+
/* @__PURE__ */ jsx60(Text51, { bold: true, children: "Agents" }),
|
|
29096
|
+
/* @__PURE__ */ jsx60(Text51, { color: PALETTE.muted, children: "The coding agent the CLI runs, and what was found for each one." }),
|
|
29097
|
+
/* @__PURE__ */ jsx60(Text51, { children: " " }),
|
|
29098
|
+
/* @__PURE__ */ jsxs49(Box48, { gap: 1, children: [
|
|
29099
|
+
/* @__PURE__ */ jsx60(Text51, { color: PALETTE.muted, children: "Default agent" }),
|
|
29100
|
+
/* @__PURE__ */ jsx60(Text51, { bold: true, children: AGENT_LABELS[config.defaultAgent] }),
|
|
29101
|
+
saving && /* @__PURE__ */ jsx60(Text51, { color: PALETTE.accent, children: "\u2026 saving" })
|
|
29086
29102
|
] }),
|
|
29087
|
-
/* @__PURE__ */
|
|
29088
|
-
/* @__PURE__ */
|
|
29089
|
-
/* @__PURE__ */
|
|
29090
|
-
/* @__PURE__ */
|
|
29091
|
-
/* @__PURE__ */
|
|
29103
|
+
/* @__PURE__ */ jsxs49(Box48, { marginTop: 1, gap: 1, children: [
|
|
29104
|
+
/* @__PURE__ */ jsx60(Text51, { children: " " }),
|
|
29105
|
+
/* @__PURE__ */ jsx60(Text51, { children: " " }),
|
|
29106
|
+
/* @__PURE__ */ jsx60(Box48, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx60(Text51, { color: PALETTE.muted, children: "AGENT" }) }),
|
|
29107
|
+
/* @__PURE__ */ jsx60(Text51, { color: PALETTE.muted, children: "STATUS" })
|
|
29092
29108
|
] }),
|
|
29093
29109
|
AGENT_NAMES.map((name) => {
|
|
29094
29110
|
const isFocused = focusedAgent === name;
|
|
29095
|
-
return /* @__PURE__ */
|
|
29096
|
-
/* @__PURE__ */
|
|
29097
|
-
/* @__PURE__ */
|
|
29098
|
-
/* @__PURE__ */
|
|
29099
|
-
/* @__PURE__ */
|
|
29111
|
+
return /* @__PURE__ */ jsxs49(Box48, { gap: 1, children: [
|
|
29112
|
+
/* @__PURE__ */ jsx60(Text51, { color: isFocused ? PALETTE.accent : void 0, children: isFocused ? "\u276F" : " " }),
|
|
29113
|
+
/* @__PURE__ */ jsx60(Text51, { color: PALETTE.success, children: name === config.defaultAgent ? "\u2605" : " " }),
|
|
29114
|
+
/* @__PURE__ */ jsx60(Box48, { width: NAME_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx60(Text51, { bold: isFocused, color: isFocused ? PALETTE.accent : void 0, children: AGENT_LABELS[name] }) }),
|
|
29115
|
+
/* @__PURE__ */ jsx60(AgentStatusBadge, { name, checks: checks[name], binary: config.agents[name].binary })
|
|
29100
29116
|
] }, name);
|
|
29101
29117
|
}),
|
|
29102
|
-
/* @__PURE__ */
|
|
29103
|
-
/* @__PURE__ */
|
|
29104
|
-
panelRows(focusedAgent, checks[focusedAgent], config.agents[focusedAgent]).map((row) => /* @__PURE__ */
|
|
29105
|
-
/* @__PURE__ */
|
|
29106
|
-
/* @__PURE__ */
|
|
29118
|
+
/* @__PURE__ */ jsxs49(Box48, { flexDirection: "column", marginTop: 1, children: [
|
|
29119
|
+
/* @__PURE__ */ jsx60(Text51, { color: PALETTE.muted, children: `\u2500 ${AGENT_LABELS[focusedAgent]} ${"\u2500".repeat(30)}` }),
|
|
29120
|
+
panelRows(focusedAgent, checks[focusedAgent], config.agents[focusedAgent]).map((row) => /* @__PURE__ */ jsxs49(Box48, { gap: 1, paddingLeft: 1, children: [
|
|
29121
|
+
/* @__PURE__ */ jsx60(Box48, { width: PANEL_LABEL_WIDTH, flexShrink: 0, children: /* @__PURE__ */ jsx60(Text51, { color: PALETTE.muted, children: row.label }) }),
|
|
29122
|
+
/* @__PURE__ */ jsx60(Text51, { color: TONE_COLOR[row.tone], children: row.value })
|
|
29107
29123
|
] }, row.label))
|
|
29108
29124
|
] }),
|
|
29109
|
-
notice && /* @__PURE__ */
|
|
29110
|
-
/* @__PURE__ */
|
|
29111
|
-
/* @__PURE__ */
|
|
29125
|
+
notice && /* @__PURE__ */ jsxs49(Fragment19, { children: [
|
|
29126
|
+
/* @__PURE__ */ jsx60(Text51, { children: " " }),
|
|
29127
|
+
/* @__PURE__ */ jsxs49(Text51, { bold: true, color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
29112
29128
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
29113
29129
|
" ",
|
|
29114
29130
|
notice.text
|
|
29115
29131
|
] })
|
|
29116
29132
|
] }),
|
|
29117
|
-
/* @__PURE__ */
|
|
29118
|
-
/* @__PURE__ */
|
|
29133
|
+
/* @__PURE__ */ jsx60(Text51, { children: " " }),
|
|
29134
|
+
/* @__PURE__ */ jsx60(
|
|
29119
29135
|
ControlHints,
|
|
29120
29136
|
{
|
|
29121
29137
|
hints: [
|
|
@@ -29131,7 +29147,7 @@ function AgentsScreen({ onDone }) {
|
|
|
29131
29147
|
|
|
29132
29148
|
// packages/experience-design-system-cli/src/tui/settings/configuration/project/ProjectScreen.tsx
|
|
29133
29149
|
import { useEffect as useEffect25, useRef as useRef16, useState as useState34 } from "react";
|
|
29134
|
-
import { Box as
|
|
29150
|
+
import { Box as Box49, Text as Text52, useInput as useInput15 } from "ink";
|
|
29135
29151
|
init_debug_store();
|
|
29136
29152
|
|
|
29137
29153
|
// packages/experience-design-system-cli/src/tui/settings/configuration/project/project-store.ts
|
|
@@ -29160,7 +29176,7 @@ async function writeCredentials(config) {
|
|
|
29160
29176
|
}
|
|
29161
29177
|
|
|
29162
29178
|
// packages/experience-design-system-cli/src/tui/settings/configuration/project/ProjectScreen.tsx
|
|
29163
|
-
import { Fragment as
|
|
29179
|
+
import { Fragment as Fragment20, jsx as jsx61, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
29164
29180
|
var FIELDS2 = [
|
|
29165
29181
|
{ key: "spaceId", label: "Space ID" },
|
|
29166
29182
|
{ key: "environmentId", label: "Environment ID" },
|
|
@@ -29240,17 +29256,17 @@ function ProjectScreen({ onDone }) {
|
|
|
29240
29256
|
}
|
|
29241
29257
|
});
|
|
29242
29258
|
if (!config) {
|
|
29243
|
-
return /* @__PURE__ */
|
|
29244
|
-
/* @__PURE__ */
|
|
29245
|
-
/* @__PURE__ */
|
|
29246
|
-
loadError ? /* @__PURE__ */
|
|
29247
|
-
/* @__PURE__ */
|
|
29259
|
+
return /* @__PURE__ */ jsxs50(Box49, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
29260
|
+
/* @__PURE__ */ jsx61(Text52, { bold: true, children: "Project" }),
|
|
29261
|
+
/* @__PURE__ */ jsx61(Text52, { children: " " }),
|
|
29262
|
+
loadError ? /* @__PURE__ */ jsxs50(Fragment20, { children: [
|
|
29263
|
+
/* @__PURE__ */ jsxs50(Text52, { color: PALETTE.error, children: [
|
|
29248
29264
|
"\u2717 Could not read the settings: ",
|
|
29249
29265
|
loadError
|
|
29250
29266
|
] }),
|
|
29251
|
-
/* @__PURE__ */
|
|
29252
|
-
/* @__PURE__ */
|
|
29253
|
-
] }) : /* @__PURE__ */
|
|
29267
|
+
/* @__PURE__ */ jsx61(Text52, { children: " " }),
|
|
29268
|
+
/* @__PURE__ */ jsx61(ControlHints, { hints: [{ keys: "Esc/q", label: "back" }] })
|
|
29269
|
+
] }) : /* @__PURE__ */ jsx61(Text52, { color: PALETTE.accent, children: "Loading..." })
|
|
29254
29270
|
] });
|
|
29255
29271
|
}
|
|
29256
29272
|
const save = () => {
|
|
@@ -29271,7 +29287,7 @@ function ProjectScreen({ onDone }) {
|
|
|
29271
29287
|
endVisit(config);
|
|
29272
29288
|
onDone();
|
|
29273
29289
|
};
|
|
29274
|
-
return /* @__PURE__ */
|
|
29290
|
+
return /* @__PURE__ */ jsx61(
|
|
29275
29291
|
FieldForm,
|
|
29276
29292
|
{
|
|
29277
29293
|
title: "Project",
|
|
@@ -29292,7 +29308,7 @@ function ProjectScreen({ onDone }) {
|
|
|
29292
29308
|
}
|
|
29293
29309
|
|
|
29294
29310
|
// packages/experience-design-system-cli/src/tui/settings/configuration/ConfigurationScreen.tsx
|
|
29295
|
-
import { jsx as
|
|
29311
|
+
import { jsx as jsx62, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
29296
29312
|
var SECTIONS = [
|
|
29297
29313
|
{
|
|
29298
29314
|
id: "project",
|
|
@@ -29321,18 +29337,18 @@ function ConfigurationScreen({ onDone }) {
|
|
|
29321
29337
|
}
|
|
29322
29338
|
if (key.escape || input === "q") onDone();
|
|
29323
29339
|
});
|
|
29324
|
-
if (open === "project") return /* @__PURE__ */
|
|
29325
|
-
if (open === "agents") return /* @__PURE__ */
|
|
29326
|
-
return /* @__PURE__ */
|
|
29327
|
-
/* @__PURE__ */
|
|
29328
|
-
/* @__PURE__ */
|
|
29329
|
-
SECTIONS.map((section, index) => /* @__PURE__ */
|
|
29330
|
-
/* @__PURE__ */
|
|
29331
|
-
/* @__PURE__ */
|
|
29332
|
-
/* @__PURE__ */
|
|
29340
|
+
if (open === "project") return /* @__PURE__ */ jsx62(ProjectScreen, { onDone: close });
|
|
29341
|
+
if (open === "agents") return /* @__PURE__ */ jsx62(AgentsScreen, { onDone: close });
|
|
29342
|
+
return /* @__PURE__ */ jsxs51(Box50, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
29343
|
+
/* @__PURE__ */ jsx62(Text53, { bold: true, children: "Configuration" }),
|
|
29344
|
+
/* @__PURE__ */ jsx62(Text53, { children: " " }),
|
|
29345
|
+
SECTIONS.map((section, index) => /* @__PURE__ */ jsxs51(Box50, { gap: 1, children: [
|
|
29346
|
+
/* @__PURE__ */ jsx62(Text53, { color: index === focus ? PALETTE.accent : void 0, children: index === focus ? "\u276F" : " " }),
|
|
29347
|
+
/* @__PURE__ */ jsx62(Box50, { width: 9, flexShrink: 0, children: /* @__PURE__ */ jsx62(Text53, { bold: index === focus, color: index === focus ? PALETTE.accent : void 0, children: section.label }) }),
|
|
29348
|
+
/* @__PURE__ */ jsx62(Text53, { color: PALETTE.muted, children: section.description })
|
|
29333
29349
|
] }, section.id)),
|
|
29334
|
-
/* @__PURE__ */
|
|
29335
|
-
/* @__PURE__ */
|
|
29350
|
+
/* @__PURE__ */ jsx62(Text53, { children: " " }),
|
|
29351
|
+
/* @__PURE__ */ jsx62(
|
|
29336
29352
|
ControlHints,
|
|
29337
29353
|
{
|
|
29338
29354
|
hints: [
|
|
@@ -29347,7 +29363,7 @@ function ConfigurationScreen({ onDone }) {
|
|
|
29347
29363
|
|
|
29348
29364
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx
|
|
29349
29365
|
import { useEffect as useEffect26, useState as useState36 } from "react";
|
|
29350
|
-
import { Box as
|
|
29366
|
+
import { Box as Box51, Text as Text54, useInput as useInput17 } from "ink";
|
|
29351
29367
|
|
|
29352
29368
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/analytics-store.ts
|
|
29353
29369
|
async function readAnalyticsSetting() {
|
|
@@ -29366,7 +29382,7 @@ async function writeAnalyticsSetting(setting) {
|
|
|
29366
29382
|
|
|
29367
29383
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx
|
|
29368
29384
|
init_debug_store();
|
|
29369
|
-
import { Fragment as
|
|
29385
|
+
import { Fragment as Fragment21, jsx as jsx63, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
29370
29386
|
function OptInAnalyticsScreen({ onDone }) {
|
|
29371
29387
|
const [loading, setLoading] = useState36(true);
|
|
29372
29388
|
const [enabled, setEnabled] = useState36(true);
|
|
@@ -29397,21 +29413,21 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
29397
29413
|
onDone();
|
|
29398
29414
|
}
|
|
29399
29415
|
});
|
|
29400
|
-
return /* @__PURE__ */
|
|
29401
|
-
/* @__PURE__ */
|
|
29402
|
-
/* @__PURE__ */
|
|
29403
|
-
loading ? /* @__PURE__ */
|
|
29404
|
-
/* @__PURE__ */
|
|
29416
|
+
return /* @__PURE__ */ jsxs52(Box51, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
29417
|
+
/* @__PURE__ */ jsx63(Text54, { bold: true, children: "Settings \u203A Opt-in Analytics" }),
|
|
29418
|
+
/* @__PURE__ */ jsx63(Text54, { children: " " }),
|
|
29419
|
+
loading ? /* @__PURE__ */ jsx63(Text54, { color: PALETTE.muted, children: "Loading\u2026" }) : /* @__PURE__ */ jsxs52(Fragment21, { children: [
|
|
29420
|
+
/* @__PURE__ */ jsxs52(Text54, { children: [
|
|
29405
29421
|
"Share anonymous usage data:",
|
|
29406
29422
|
" ",
|
|
29407
|
-
/* @__PURE__ */
|
|
29423
|
+
/* @__PURE__ */ jsx63(Text54, { bold: true, color: enabled ? PALETTE.success : PALETTE.muted, children: enabled ? "On" : "Off" })
|
|
29408
29424
|
] }),
|
|
29409
|
-
/* @__PURE__ */
|
|
29410
|
-
/* @__PURE__ */
|
|
29411
|
-
/* @__PURE__ */
|
|
29425
|
+
/* @__PURE__ */ jsx63(Text54, { children: " " }),
|
|
29426
|
+
/* @__PURE__ */ jsx63(Text54, { color: PALETTE.muted, children: "Shares which CLI commands are used and where imports succeed or fail." }),
|
|
29427
|
+
/* @__PURE__ */ jsx63(Text54, { color: PALETTE.muted, children: "Never includes source code, file paths, credentials, or authored content." })
|
|
29412
29428
|
] }),
|
|
29413
|
-
/* @__PURE__ */
|
|
29414
|
-
/* @__PURE__ */
|
|
29429
|
+
/* @__PURE__ */ jsx63(Text54, { children: " " }),
|
|
29430
|
+
/* @__PURE__ */ jsx63(
|
|
29415
29431
|
ControlHints,
|
|
29416
29432
|
{
|
|
29417
29433
|
hints: [
|
|
@@ -29425,10 +29441,10 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
29425
29441
|
|
|
29426
29442
|
// packages/experience-design-system-cli/src/tui/settings/debug-mode/screen.tsx
|
|
29427
29443
|
import { useEffect as useEffect27, useRef as useRef17, useState as useState37 } from "react";
|
|
29428
|
-
import { Box as
|
|
29444
|
+
import { Box as Box52, Text as Text55, useInput as useInput18 } from "ink";
|
|
29429
29445
|
init_debug_mode_store();
|
|
29430
29446
|
init_debug_store();
|
|
29431
|
-
import { Fragment as
|
|
29447
|
+
import { Fragment as Fragment22, jsx as jsx64, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
29432
29448
|
var ROWS = ["enabled", "retentionDays"];
|
|
29433
29449
|
var snapshotOf2 = (setting) => ({
|
|
29434
29450
|
enabled: String(setting.enabled),
|
|
@@ -29509,25 +29525,25 @@ function DebugModeScreen({ onDone }) {
|
|
|
29509
29525
|
onDone();
|
|
29510
29526
|
}
|
|
29511
29527
|
});
|
|
29512
|
-
const marker = (row) => /* @__PURE__ */
|
|
29513
|
-
const label = (row, text) => /* @__PURE__ */
|
|
29514
|
-
return /* @__PURE__ */
|
|
29515
|
-
/* @__PURE__ */
|
|
29516
|
-
/* @__PURE__ */
|
|
29517
|
-
setting ? /* @__PURE__ */
|
|
29518
|
-
/* @__PURE__ */
|
|
29528
|
+
const marker = (row) => /* @__PURE__ */ jsx64(Text55, { color: focus === row ? PALETTE.accent : void 0, children: focus === row ? "\u276F" : " " });
|
|
29529
|
+
const label = (row, text) => /* @__PURE__ */ jsx64(Text55, { bold: focus === row, color: focus === row ? PALETTE.accent : PALETTE.muted, children: text });
|
|
29530
|
+
return /* @__PURE__ */ jsxs53(Box52, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
|
|
29531
|
+
/* @__PURE__ */ jsx64(Text55, { bold: true, children: "Settings \u203A Debug Mode" }),
|
|
29532
|
+
/* @__PURE__ */ jsx64(Text55, { children: " " }),
|
|
29533
|
+
setting ? /* @__PURE__ */ jsxs53(Fragment22, { children: [
|
|
29534
|
+
/* @__PURE__ */ jsxs53(Box52, { gap: 1, children: [
|
|
29519
29535
|
marker("enabled"),
|
|
29520
29536
|
label("enabled", "Debug logging:"),
|
|
29521
|
-
/* @__PURE__ */
|
|
29537
|
+
/* @__PURE__ */ jsx64(Text55, { bold: true, color: setting.enabled ? PALETTE.success : PALETTE.muted, children: setting.enabled ? "On" : "Off" })
|
|
29522
29538
|
] }),
|
|
29523
|
-
/* @__PURE__ */
|
|
29539
|
+
/* @__PURE__ */ jsxs53(Box52, { gap: 1, children: [
|
|
29524
29540
|
marker("retentionDays"),
|
|
29525
29541
|
label("retentionDays", "Delete logs after:"),
|
|
29526
29542
|
RETENTION_CHOICES.map((days) => {
|
|
29527
29543
|
const highlighted = focus === "retentionDays" && days === pending;
|
|
29528
29544
|
const saved = days === setting.retentionDays;
|
|
29529
|
-
return /* @__PURE__ */
|
|
29530
|
-
|
|
29545
|
+
return /* @__PURE__ */ jsx64(
|
|
29546
|
+
Text55,
|
|
29531
29547
|
{
|
|
29532
29548
|
bold: highlighted || saved,
|
|
29533
29549
|
underline: highlighted,
|
|
@@ -29538,15 +29554,15 @@ function DebugModeScreen({ onDone }) {
|
|
|
29538
29554
|
);
|
|
29539
29555
|
})
|
|
29540
29556
|
] }),
|
|
29541
|
-
/* @__PURE__ */
|
|
29542
|
-
notice ? /* @__PURE__ */
|
|
29557
|
+
/* @__PURE__ */ jsx64(Text55, { children: " " }),
|
|
29558
|
+
notice ? /* @__PURE__ */ jsxs53(Text55, { color: notice.kind === "success" ? PALETTE.success : PALETTE.error, children: [
|
|
29543
29559
|
notice.kind === "success" ? "\u2713" : "\u2717",
|
|
29544
29560
|
" ",
|
|
29545
29561
|
notice.text
|
|
29546
|
-
] }) : /* @__PURE__ */
|
|
29547
|
-
] }) : /* @__PURE__ */
|
|
29548
|
-
/* @__PURE__ */
|
|
29549
|
-
/* @__PURE__ */
|
|
29562
|
+
] }) : /* @__PURE__ */ jsx64(Text55, { color: PALETTE.muted, children: "\u2713 marks what is saved. Older logs are deleted the next time the CLI starts." })
|
|
29563
|
+
] }) : /* @__PURE__ */ jsx64(Text55, { color: PALETTE.muted, children: "Loading\u2026" }),
|
|
29564
|
+
/* @__PURE__ */ jsx64(Text55, { children: " " }),
|
|
29565
|
+
/* @__PURE__ */ jsx64(
|
|
29550
29566
|
ControlHints,
|
|
29551
29567
|
{
|
|
29552
29568
|
hints: [
|
|
@@ -29563,7 +29579,7 @@ function DebugModeScreen({ onDone }) {
|
|
|
29563
29579
|
}
|
|
29564
29580
|
|
|
29565
29581
|
// packages/experience-design-system-cli/app.tsx
|
|
29566
|
-
import { Fragment as
|
|
29582
|
+
import { Fragment as Fragment23, jsx as jsx65 } from "react/jsx-runtime";
|
|
29567
29583
|
function App({ importOptions, inkClear }) {
|
|
29568
29584
|
const [screen, setScreen] = useState38("start");
|
|
29569
29585
|
const [importExitCode, setImportExitCode] = useState38();
|
|
@@ -29755,9 +29771,9 @@ function App({ importOptions, inkClear }) {
|
|
|
29755
29771
|
};
|
|
29756
29772
|
switch (screen) {
|
|
29757
29773
|
case "import":
|
|
29758
|
-
if (showImportResult) return /* @__PURE__ */
|
|
29774
|
+
if (showImportResult) return /* @__PURE__ */ jsx65(ImportScreen, { exitCode: importExitCode, onDone: finishImportResult });
|
|
29759
29775
|
if (flow && flowStart) {
|
|
29760
|
-
return /* @__PURE__ */
|
|
29776
|
+
return /* @__PURE__ */ jsx65(
|
|
29761
29777
|
FlowScreen,
|
|
29762
29778
|
{
|
|
29763
29779
|
state: flow.state,
|
|
@@ -29767,15 +29783,15 @@ function App({ importOptions, inkClear }) {
|
|
|
29767
29783
|
}
|
|
29768
29784
|
);
|
|
29769
29785
|
}
|
|
29770
|
-
if (importDefaults === void 0) return /* @__PURE__ */
|
|
29786
|
+
if (importDefaults === void 0) return /* @__PURE__ */ jsx65(Fragment23, {});
|
|
29771
29787
|
if (target === void 0) {
|
|
29772
|
-
return /* @__PURE__ */
|
|
29788
|
+
return /* @__PURE__ */ jsx65(PreflightScreen, { onChoose: setTarget, onQuit: leaveImport });
|
|
29773
29789
|
}
|
|
29774
29790
|
const inputStep = currentInputStep(target, answers);
|
|
29775
29791
|
if (!extractionRun && !tokensOnlyRun && inputStep !== "credentials") {
|
|
29776
29792
|
switch (inputStep) {
|
|
29777
29793
|
case "project":
|
|
29778
|
-
return /* @__PURE__ */
|
|
29794
|
+
return /* @__PURE__ */ jsx65(
|
|
29779
29795
|
WelcomeScreen,
|
|
29780
29796
|
{
|
|
29781
29797
|
onContinue: (projectPath) => answer({ projectPath }),
|
|
@@ -29784,16 +29800,17 @@ function App({ importOptions, inkClear }) {
|
|
|
29784
29800
|
}
|
|
29785
29801
|
);
|
|
29786
29802
|
case "token-file":
|
|
29787
|
-
return /* @__PURE__ */
|
|
29803
|
+
return /* @__PURE__ */ jsx65(
|
|
29788
29804
|
TokenInputScreen,
|
|
29789
29805
|
{
|
|
29806
|
+
...target === "tokens" ? { overview: TOKENS_ONLY_OVERVIEW } : {},
|
|
29790
29807
|
initialPath: importDefaults.tokenFile,
|
|
29791
29808
|
onConfirm: (tokensPath) => answer({ tokensPath }),
|
|
29792
29809
|
onBack: () => goBackFrom("token-file")
|
|
29793
29810
|
}
|
|
29794
29811
|
);
|
|
29795
29812
|
case "path-validation":
|
|
29796
|
-
return /* @__PURE__ */
|
|
29813
|
+
return /* @__PURE__ */ jsx65(
|
|
29797
29814
|
PathValidationScreen,
|
|
29798
29815
|
{
|
|
29799
29816
|
projectPath: answers.projectPath ?? "",
|
|
@@ -29806,13 +29823,13 @@ function App({ importOptions, inkClear }) {
|
|
|
29806
29823
|
}
|
|
29807
29824
|
if (tokensOnlyRun) {
|
|
29808
29825
|
if (tokensOnly?.status === "done" && !tokensOnly.result.ok) {
|
|
29809
|
-
return /* @__PURE__ */
|
|
29826
|
+
return /* @__PURE__ */ jsx65(ErrorStep, { stepName: tokensOnly.result.step, message: tokensOnly.result.message, onExit: leaveImport });
|
|
29810
29827
|
}
|
|
29811
|
-
return /* @__PURE__ */
|
|
29828
|
+
return /* @__PURE__ */ jsx65(
|
|
29812
29829
|
RunningStep,
|
|
29813
29830
|
{
|
|
29814
29831
|
stepNumber: 1,
|
|
29815
|
-
totalSteps:
|
|
29832
|
+
totalSteps: TOKENS_ONLY_STEP_COUNT,
|
|
29816
29833
|
title: "Generating design tokens",
|
|
29817
29834
|
description: "Generating design tokens from your token file.",
|
|
29818
29835
|
lines: [{ text: `Generating token definitions via ${tokensOnlyRun.input.agent}...`, complete: false }]
|
|
@@ -29821,10 +29838,10 @@ function App({ importOptions, inkClear }) {
|
|
|
29821
29838
|
}
|
|
29822
29839
|
if (extractionRun) {
|
|
29823
29840
|
if (extraction?.status === "done" && !extraction.result.ok) {
|
|
29824
|
-
return /* @__PURE__ */
|
|
29841
|
+
return /* @__PURE__ */ jsx65(ErrorStep, { stepName: extraction.result.step, message: extraction.result.message, onExit: leaveImport });
|
|
29825
29842
|
}
|
|
29826
29843
|
if (extraction?.status === "running") {
|
|
29827
|
-
return /* @__PURE__ */
|
|
29844
|
+
return /* @__PURE__ */ jsx65(
|
|
29828
29845
|
ExtractionScreen,
|
|
29829
29846
|
{
|
|
29830
29847
|
progress: extraction.progress,
|
|
@@ -29833,14 +29850,14 @@ function App({ importOptions, inkClear }) {
|
|
|
29833
29850
|
}
|
|
29834
29851
|
);
|
|
29835
29852
|
}
|
|
29836
|
-
return /* @__PURE__ */
|
|
29853
|
+
return /* @__PURE__ */ jsx65(Fragment23, {});
|
|
29837
29854
|
}
|
|
29838
29855
|
if (scopeRun && scopeFlow) {
|
|
29839
29856
|
if (scopeFlow.status === "failed") {
|
|
29840
|
-
return /* @__PURE__ */
|
|
29857
|
+
return /* @__PURE__ */ jsx65(ErrorStep, { stepName: "scope gate", message: scopeFlow.message, onExit: leaveImport });
|
|
29841
29858
|
}
|
|
29842
29859
|
if (scopeFlow.status === "deciding") {
|
|
29843
|
-
return /* @__PURE__ */
|
|
29860
|
+
return /* @__PURE__ */ jsx65(
|
|
29844
29861
|
ScopeGateScreen,
|
|
29845
29862
|
{
|
|
29846
29863
|
components: scopeFlow.load.components,
|
|
@@ -29850,7 +29867,7 @@ function App({ importOptions, inkClear }) {
|
|
|
29850
29867
|
);
|
|
29851
29868
|
}
|
|
29852
29869
|
if (generation?.status === "done" && !generation.result.ok) {
|
|
29853
|
-
return /* @__PURE__ */
|
|
29870
|
+
return /* @__PURE__ */ jsx65(ErrorStep, { stepName: generation.result.step, message: generation.result.message, onExit: leaveImport });
|
|
29854
29871
|
}
|
|
29855
29872
|
if (generation?.status === "running") {
|
|
29856
29873
|
const hasRawTokens = scopeRun.input.rawTokensPath !== "";
|
|
@@ -29858,7 +29875,7 @@ function App({ importOptions, inkClear }) {
|
|
|
29858
29875
|
hasRawTokens,
|
|
29859
29876
|
mapTokensEligible: generation.progress.mapTokensEligible
|
|
29860
29877
|
});
|
|
29861
|
-
return /* @__PURE__ */
|
|
29878
|
+
return /* @__PURE__ */ jsx65(
|
|
29862
29879
|
GenerationScreen,
|
|
29863
29880
|
{
|
|
29864
29881
|
progress: generation.progress,
|
|
@@ -29870,9 +29887,9 @@ function App({ importOptions, inkClear }) {
|
|
|
29870
29887
|
}
|
|
29871
29888
|
);
|
|
29872
29889
|
}
|
|
29873
|
-
return /* @__PURE__ */
|
|
29890
|
+
return /* @__PURE__ */ jsx65(Fragment23, {});
|
|
29874
29891
|
}
|
|
29875
|
-
return /* @__PURE__ */
|
|
29892
|
+
return /* @__PURE__ */ jsx65(
|
|
29876
29893
|
CredentialsScreen,
|
|
29877
29894
|
{
|
|
29878
29895
|
initial: importDefaults.credentials,
|
|
@@ -29881,17 +29898,17 @@ function App({ importOptions, inkClear }) {
|
|
|
29881
29898
|
}
|
|
29882
29899
|
);
|
|
29883
29900
|
case "help":
|
|
29884
|
-
return /* @__PURE__ */
|
|
29901
|
+
return /* @__PURE__ */ jsx65(HelpScreen, { onDone: goToStart });
|
|
29885
29902
|
case "settings":
|
|
29886
|
-
return /* @__PURE__ */
|
|
29903
|
+
return /* @__PURE__ */ jsx65(SettingsScreen, { onNavigate: setScreen, onBack: goToStart });
|
|
29887
29904
|
case "settings-configuration":
|
|
29888
|
-
return /* @__PURE__ */
|
|
29905
|
+
return /* @__PURE__ */ jsx65(ConfigurationScreen, { onDone: goToSettings });
|
|
29889
29906
|
case "settings-opt-in-analytics":
|
|
29890
|
-
return /* @__PURE__ */
|
|
29907
|
+
return /* @__PURE__ */ jsx65(OptInAnalyticsScreen, { onDone: goToSettings });
|
|
29891
29908
|
case "settings-debug-mode":
|
|
29892
|
-
return /* @__PURE__ */
|
|
29909
|
+
return /* @__PURE__ */ jsx65(DebugModeScreen, { onDone: goToSettings });
|
|
29893
29910
|
case "start":
|
|
29894
|
-
return /* @__PURE__ */
|
|
29911
|
+
return /* @__PURE__ */ jsx65(HomeScreen, { onNavigate: setScreen });
|
|
29895
29912
|
}
|
|
29896
29913
|
}
|
|
29897
29914
|
async function runApp(renderApp, importOptions) {
|
|
@@ -29899,7 +29916,7 @@ async function runApp(renderApp, importOptions) {
|
|
|
29899
29916
|
instance.clear?.();
|
|
29900
29917
|
process.stdout.write("\x1B[H\x1B[0J");
|
|
29901
29918
|
};
|
|
29902
|
-
const instance = renderApp(/* @__PURE__ */
|
|
29919
|
+
const instance = renderApp(/* @__PURE__ */ jsx65(App, { importOptions, inkClear }));
|
|
29903
29920
|
await instance.waitUntilExit();
|
|
29904
29921
|
}
|
|
29905
29922
|
export {
|