@ikas/component-cli 1.4.0-beta.15 → 1.4.0-beta.150
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/build-tools.d.ts +11 -0
- package/dist/build-tools.d.ts.map +1 -0
- package/dist/build-tools.js +11 -0
- package/dist/build-tools.js.map +1 -0
- package/dist/commands/add-sections-to-page.d.ts +3 -0
- package/dist/commands/add-sections-to-page.d.ts.map +1 -0
- package/dist/commands/add-sections-to-page.js +39 -0
- package/dist/commands/add-sections-to-page.js.map +1 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +10 -1
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +5 -165
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/config.d.ts +35 -0
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +831 -116
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/create-design-tokens.d.ts +24 -0
- package/dist/commands/create-design-tokens.d.ts.map +1 -0
- package/dist/commands/create-design-tokens.js +327 -0
- package/dist/commands/create-design-tokens.js.map +1 -0
- package/dist/commands/create-global-variable.d.ts +3 -0
- package/dist/commands/create-global-variable.d.ts.map +1 -0
- package/dist/commands/create-global-variable.js +53 -0
- package/dist/commands/create-global-variable.js.map +1 -0
- package/dist/commands/create-page.d.ts +3 -0
- package/dist/commands/create-page.d.ts.map +1 -0
- package/dist/commands/create-page.js +31 -0
- package/dist/commands/create-page.js.map +1 -0
- package/dist/commands/create.d.ts +4 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +878 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/delete-theme-globals.d.ts +4 -0
- package/dist/commands/delete-theme-globals.d.ts.map +1 -0
- package/dist/commands/delete-theme-globals.js +48 -0
- package/dist/commands/delete-theme-globals.js.map +1 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +82 -12
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/get-component-props.d.ts +3 -0
- package/dist/commands/get-component-props.d.ts.map +1 -0
- package/dist/commands/get-component-props.js +32 -0
- package/dist/commands/get-component-props.js.map +1 -0
- package/dist/commands/get-page-by-type.d.ts +3 -0
- package/dist/commands/get-page-by-type.d.ts.map +1 -0
- package/dist/commands/get-page-by-type.js +25 -0
- package/dist/commands/get-page-by-type.js.map +1 -0
- package/dist/commands/get-section-values.d.ts +3 -0
- package/dist/commands/get-section-values.d.ts.map +1 -0
- package/dist/commands/get-section-values.js +39 -0
- package/dist/commands/get-section-values.js.map +1 -0
- package/dist/commands/list-entities.d.ts +3 -0
- package/dist/commands/list-entities.d.ts.map +1 -0
- package/dist/commands/list-entities.js +32 -0
- package/dist/commands/list-entities.js.map +1 -0
- package/dist/commands/list-page-sections.d.ts +3 -0
- package/dist/commands/list-page-sections.d.ts.map +1 -0
- package/dist/commands/list-page-sections.js +25 -0
- package/dist/commands/list-page-sections.js.map +1 -0
- package/dist/commands/list-theme-globals.d.ts +3 -0
- package/dist/commands/list-theme-globals.d.ts.map +1 -0
- package/dist/commands/list-theme-globals.js +22 -0
- package/dist/commands/list-theme-globals.js.map +1 -0
- package/dist/commands/publish-theme.d.ts +3 -0
- package/dist/commands/publish-theme.d.ts.map +1 -0
- package/dist/commands/publish-theme.js +29 -0
- package/dist/commands/publish-theme.js.map +1 -0
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +24 -2
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/search-products.d.ts +3 -0
- package/dist/commands/search-products.d.ts.map +1 -0
- package/dist/commands/search-products.js +40 -0
- package/dist/commands/search-products.js.map +1 -0
- package/dist/commands/update-global-variable.d.ts +3 -0
- package/dist/commands/update-global-variable.d.ts.map +1 -0
- package/dist/commands/update-global-variable.js +47 -0
- package/dist/commands/update-global-variable.js.map +1 -0
- package/dist/commands/update-page-sections.d.ts +3 -0
- package/dist/commands/update-page-sections.d.ts.map +1 -0
- package/dist/commands/update-page-sections.js +39 -0
- package/dist/commands/update-page-sections.js.map +1 -0
- package/dist/commands/update-section-prop.d.ts +3 -0
- package/dist/commands/update-section-prop.d.ts.map +1 -0
- package/dist/commands/update-section-prop.js +76 -0
- package/dist/commands/update-section-prop.js.map +1 -0
- package/dist/commands/upload-image.d.ts +3 -0
- package/dist/commands/upload-image.d.ts.map +1 -0
- package/dist/commands/upload-image.js +38 -0
- package/dist/commands/upload-image.js.map +1 -0
- package/dist/commands/upload-images.d.ts +3 -0
- package/dist/commands/upload-images.d.ts.map +1 -0
- package/dist/commands/upload-images.js +48 -0
- package/dist/commands/upload-images.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +17 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/compile.d.ts +4 -1
- package/dist/utils/compile.d.ts.map +1 -1
- package/dist/utils/compile.js +630 -102
- package/dist/utils/compile.js.map +1 -1
- package/dist/utils/component-helpers.d.ts +69 -2
- package/dist/utils/component-helpers.d.ts.map +1 -1
- package/dist/utils/component-helpers.js +193 -25
- package/dist/utils/component-helpers.js.map +1 -1
- package/dist/utils/editor-action-client.d.ts +1 -1
- package/dist/utils/editor-action-client.d.ts.map +1 -1
- package/dist/utils/editor-action-client.js +23 -8
- package/dist/utils/editor-action-client.js.map +1 -1
- package/dist/utils/forbid-deep-imports.d.ts +3 -0
- package/dist/utils/forbid-deep-imports.d.ts.map +1 -0
- package/dist/utils/forbid-deep-imports.js +54 -0
- package/dist/utils/forbid-deep-imports.js.map +1 -0
- package/dist/utils/forbid-external-packages.d.ts +16 -0
- package/dist/utils/forbid-external-packages.d.ts.map +1 -0
- package/dist/utils/forbid-external-packages.js +89 -0
- package/dist/utils/forbid-external-packages.js.map +1 -0
- package/dist/utils/load-image.d.ts +16 -0
- package/dist/utils/load-image.d.ts.map +1 -0
- package/dist/utils/load-image.js +50 -0
- package/dist/utils/load-image.js.map +1 -0
- package/dist/utils/websocket-server.d.ts +13 -4
- package/dist/utils/websocket-server.d.ts.map +1 -1
- package/dist/utils/websocket-server.js +1 -1
- package/dist/utils/websocket-server.js.map +1 -1
- package/package.json +13 -1
- package/templates/add/section.css +11 -0
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { printErrorAndExit, printResultAndExit, runEditorAction } from "../utils/editor-action-client.js";
|
|
3
|
+
function portOpts(options) {
|
|
4
|
+
const port = options.port ? parseInt(options.port, 10) : undefined;
|
|
5
|
+
return port ? { port } : {};
|
|
6
|
+
}
|
|
7
|
+
async function send(payload, options, action = "create-design-token") {
|
|
8
|
+
try {
|
|
9
|
+
const result = await runEditorAction(action, payload, portOpts(options));
|
|
10
|
+
printResultAndExit(result);
|
|
11
|
+
}
|
|
12
|
+
catch (e) {
|
|
13
|
+
printErrorAndExit(e);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** Parse a JSON-array flag value (must be present and a valid array; emptiness allowed). */
|
|
17
|
+
function parseJsonArrayValue(raw, flag) {
|
|
18
|
+
let parsed;
|
|
19
|
+
try {
|
|
20
|
+
parsed = JSON.parse(raw);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
printErrorAndExit(new Error(`${flag} must be valid JSON`));
|
|
24
|
+
}
|
|
25
|
+
if (!Array.isArray(parsed)) {
|
|
26
|
+
printErrorAndExit(new Error(`${flag} must be a JSON array`));
|
|
27
|
+
}
|
|
28
|
+
return parsed;
|
|
29
|
+
}
|
|
30
|
+
/** Parse a REQUIRED `--…` flag expected to be a NON-EMPTY JSON array. */
|
|
31
|
+
function parseJsonArray(raw, flag) {
|
|
32
|
+
if (!raw)
|
|
33
|
+
printErrorAndExit(new Error(`${flag} is required (a JSON array)`));
|
|
34
|
+
const parsed = parseJsonArrayValue(raw, flag);
|
|
35
|
+
if (parsed.length === 0)
|
|
36
|
+
printErrorAndExit(new Error(`${flag} must be a non-empty JSON array`));
|
|
37
|
+
return parsed;
|
|
38
|
+
}
|
|
39
|
+
/** Parse an OPTIONAL `--…` flag expected to be a JSON array (empty array allowed). Returns undefined when absent. */
|
|
40
|
+
function parseOptionalJsonArray(raw, flag) {
|
|
41
|
+
return raw === undefined ? undefined : parseJsonArrayValue(raw, flag);
|
|
42
|
+
}
|
|
43
|
+
/** Client-side fast-fail: every update command needs --id or --name to identify the token. */
|
|
44
|
+
function requireIdOrName(options, label) {
|
|
45
|
+
if (!options.id && !options.name) {
|
|
46
|
+
printErrorAndExit(new Error(`Provide --id or --name to identify the ${label}`));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// ---- color -----------------------------------------------------------------
|
|
50
|
+
export function createCreateColorCommand() {
|
|
51
|
+
const cmd = new Command("create-color");
|
|
52
|
+
cmd
|
|
53
|
+
.description("Create a theme color token in the connected editor")
|
|
54
|
+
.requiredOption("--name <name>", "Color name")
|
|
55
|
+
.requiredOption("--value <hex>", "Color value — a concrete color (e.g. #ff0000, rgb/hsl/name), not a var(...) reference")
|
|
56
|
+
.option("--port <port>", "Dev server WebSocket port", "5201")
|
|
57
|
+
.action((options) => {
|
|
58
|
+
if (!options.value)
|
|
59
|
+
printErrorAndExit(new Error("--value is required"));
|
|
60
|
+
return send({ tokenType: "color", name: options.name, value: options.value }, options);
|
|
61
|
+
});
|
|
62
|
+
return cmd;
|
|
63
|
+
}
|
|
64
|
+
/** Update an existing color token in place — keeps its id, so its cssVar stays stable. */
|
|
65
|
+
export function createUpdateColorCommand() {
|
|
66
|
+
const cmd = new Command("update-color");
|
|
67
|
+
cmd
|
|
68
|
+
.description("Update an existing theme color token IN PLACE (keeps its id/cssVar) in the connected editor")
|
|
69
|
+
.option("--id <id>", "Color id (from list-theme-globals; preferred)")
|
|
70
|
+
.option("--name <name>", "Color name (used to find it when --id is omitted; also renames when --id is given)")
|
|
71
|
+
.option("--value <hex>", "New color value — a concrete color (e.g. #ff0000, rgb/hsl/name), not a var(...) reference (omit to only rename)")
|
|
72
|
+
.option("--port <port>", "Dev server WebSocket port", "5201")
|
|
73
|
+
.action((options) => {
|
|
74
|
+
requireIdOrName(options, "color");
|
|
75
|
+
return send({
|
|
76
|
+
tokenType: "color",
|
|
77
|
+
id: options.id,
|
|
78
|
+
name: options.name,
|
|
79
|
+
...(options.value !== undefined ? { value: options.value } : {}),
|
|
80
|
+
}, options, "update-design-token");
|
|
81
|
+
});
|
|
82
|
+
return cmd;
|
|
83
|
+
}
|
|
84
|
+
// ---- typography (text style) -----------------------------------------------
|
|
85
|
+
/** Collect the supplied font-property flags into a { property, value }[] (omitted flags are dropped). */
|
|
86
|
+
function buildFontStylesFromOptions(options) {
|
|
87
|
+
const map = {
|
|
88
|
+
"font-family": options.fontFamily,
|
|
89
|
+
"font-size": options.fontSize,
|
|
90
|
+
"font-weight": options.fontWeight,
|
|
91
|
+
"line-height": options.lineHeight,
|
|
92
|
+
"letter-spacing": options.letterSpacing,
|
|
93
|
+
"text-decoration": options.textDecoration,
|
|
94
|
+
"text-transform": options.textTransform,
|
|
95
|
+
"text-overflow": options.textOverflow,
|
|
96
|
+
"white-space": options.whiteSpace,
|
|
97
|
+
"line-break": options.lineBreak,
|
|
98
|
+
"word-break": options.wordBreak,
|
|
99
|
+
"text-wrap-style": options.textWrapStyle,
|
|
100
|
+
};
|
|
101
|
+
return Object.entries(map)
|
|
102
|
+
.filter(([, value]) => value != null)
|
|
103
|
+
.map(([property, value]) => ({ property, value: value }));
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Register the shared text-style font-property flags. Kept in lock-step with the editor's
|
|
107
|
+
* "Update Text Style" modal fields — no color/text-align here, since that modal doesn't expose them.
|
|
108
|
+
* Each enum flag documents its accepted values so a bad value fails with a clear editor-side error.
|
|
109
|
+
*/
|
|
110
|
+
function addTextStyleFontOptions(cmd) {
|
|
111
|
+
return cmd
|
|
112
|
+
.option("--font-family <value>", "font-family")
|
|
113
|
+
.option("--font-size <value>", "font-size, e.g. 16px")
|
|
114
|
+
.option("--font-weight <value>", "font-weight as a number, e.g. 600; append i for italic, e.g. 600i; a plain number (no i) is upright and REMOVES italic; must be a weight the chosen font ships (error lists supported weights)")
|
|
115
|
+
.option("--line-height <value>", "line-height, e.g. 1.5")
|
|
116
|
+
.option("--letter-spacing <value>", "letter-spacing, e.g. 0.5px")
|
|
117
|
+
.option("--text-decoration <value>", "text-decoration: none | underline | line-through")
|
|
118
|
+
.option("--text-transform <value>", "text-transform: none | uppercase | lowercase | capitalize")
|
|
119
|
+
.option("--text-overflow <value>", "text-overflow: clip | ellipsis")
|
|
120
|
+
.option("--white-space <value>", "white-space: normal | pre | pre-wrap | pre-line | wrap | nowrap | collapse")
|
|
121
|
+
.option("--line-break <value>", "line-break: auto | loose | normal | strict | anywhere")
|
|
122
|
+
.option("--word-break <value>", "word-break: normal | break-all | keep-all")
|
|
123
|
+
.option("--text-wrap-style <value>", "text-wrap-style: auto | balance | pretty | stable");
|
|
124
|
+
}
|
|
125
|
+
// Human-readable list of the flags buildFontStylesFromOptions understands, for "provide at least one" errors.
|
|
126
|
+
const TEXT_STYLE_FONT_FLAGS = "--font-family/--font-size/--font-weight/--line-height/--letter-spacing/--text-decoration/" +
|
|
127
|
+
"--text-transform/--text-overflow/--white-space/--line-break/--word-break/--text-wrap-style";
|
|
128
|
+
export function createCreateTextStyleCommand() {
|
|
129
|
+
const cmd = new Command("create-text-style");
|
|
130
|
+
addTextStyleFontOptions(cmd)
|
|
131
|
+
.description("Create a theme typography token (text style) in the connected editor")
|
|
132
|
+
.requiredOption("--name <name>", "Text style name")
|
|
133
|
+
.option("--port <port>", "Dev server WebSocket port", "5201")
|
|
134
|
+
.action((options) => {
|
|
135
|
+
const styles = buildFontStylesFromOptions(options);
|
|
136
|
+
if (!styles.length) {
|
|
137
|
+
printErrorAndExit(new Error(`Provide at least one of ${TEXT_STYLE_FONT_FLAGS}`));
|
|
138
|
+
}
|
|
139
|
+
return send({ tokenType: "typography", name: options.name, styles }, options);
|
|
140
|
+
});
|
|
141
|
+
return cmd;
|
|
142
|
+
}
|
|
143
|
+
/** Update an existing text style in place — keeps its id, so the className (`_${id}`) stays stable. */
|
|
144
|
+
export function createUpdateTextStyleCommand() {
|
|
145
|
+
const cmd = new Command("update-text-style");
|
|
146
|
+
addTextStyleFontOptions(cmd)
|
|
147
|
+
.description("Update an existing theme typography token (text style) IN PLACE (keeps its id/className) in the connected editor")
|
|
148
|
+
.option("--id <id>", "Text style id (from list-theme-globals; preferred)")
|
|
149
|
+
.option("--name <name>", "Text style name (used to find it when --id is omitted; also renames when --id is given)")
|
|
150
|
+
.option("--default", "Make this text style the theme's default/global style (editor: right-click \"Make Default Style\"); clears any other default")
|
|
151
|
+
.option("--no-default", "Remove the default/global flag from this text style")
|
|
152
|
+
.option("--port <port>", "Dev server WebSocket port", "5201")
|
|
153
|
+
.action((options) => {
|
|
154
|
+
requireIdOrName(options, "text style");
|
|
155
|
+
// Only the font properties passed are changed; omitted ones keep their existing values.
|
|
156
|
+
const styles = buildFontStylesFromOptions(options);
|
|
157
|
+
// commander yields true for --default, false for --no-default, undefined when neither is passed.
|
|
158
|
+
const isDefault = options.default;
|
|
159
|
+
return send({
|
|
160
|
+
tokenType: "typography",
|
|
161
|
+
id: options.id,
|
|
162
|
+
name: options.name,
|
|
163
|
+
styles,
|
|
164
|
+
...(isDefault !== undefined ? { isDefault } : {}),
|
|
165
|
+
}, options, "update-design-token");
|
|
166
|
+
});
|
|
167
|
+
return cmd;
|
|
168
|
+
}
|
|
169
|
+
// ---- breakpoint ------------------------------------------------------------
|
|
170
|
+
export function createCreateBreakpointCommand() {
|
|
171
|
+
const cmd = new Command("create-breakpoint");
|
|
172
|
+
cmd
|
|
173
|
+
.description("Create a theme breakpoint in the connected editor")
|
|
174
|
+
.requiredOption("--name <name>", "Breakpoint name")
|
|
175
|
+
.requiredOption("--width <px>", "Breakpoint width in pixels")
|
|
176
|
+
.option("--port <port>", "Dev server WebSocket port", "5201")
|
|
177
|
+
.action((options) => {
|
|
178
|
+
const width = Number(options.width);
|
|
179
|
+
if (!Number.isInteger(width) || width <= 0) {
|
|
180
|
+
printErrorAndExit(new Error("--width must be a positive integer (in pixels, no decimals)"));
|
|
181
|
+
}
|
|
182
|
+
return send({ tokenType: "breakpoint", name: options.name, width }, options);
|
|
183
|
+
});
|
|
184
|
+
return cmd;
|
|
185
|
+
}
|
|
186
|
+
/** Update an existing breakpoint in place — keeps its id. */
|
|
187
|
+
export function createUpdateBreakpointCommand() {
|
|
188
|
+
const cmd = new Command("update-breakpoint");
|
|
189
|
+
cmd
|
|
190
|
+
.description("Update an existing theme breakpoint IN PLACE (keeps its id) in the connected editor")
|
|
191
|
+
.option("--id <id>", "Breakpoint id (from list-theme-globals; preferred)")
|
|
192
|
+
.option("--name <name>", "Breakpoint name (used to find it when --id is omitted; also renames when --id is given)")
|
|
193
|
+
.option("--width <px>", "New breakpoint width in pixels (omit to only rename)")
|
|
194
|
+
.option("--port <port>", "Dev server WebSocket port", "5201")
|
|
195
|
+
.action((options) => {
|
|
196
|
+
requireIdOrName(options, "breakpoint");
|
|
197
|
+
let width;
|
|
198
|
+
if (options.width !== undefined) {
|
|
199
|
+
width = Number(options.width);
|
|
200
|
+
if (!Number.isInteger(width) || width <= 0) {
|
|
201
|
+
printErrorAndExit(new Error("--width must be a positive integer (in pixels, no decimals)"));
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return send({ tokenType: "breakpoint", id: options.id, name: options.name, ...(width !== undefined ? { width } : {}) }, options, "update-design-token");
|
|
205
|
+
});
|
|
206
|
+
return cmd;
|
|
207
|
+
}
|
|
208
|
+
// ---- keyframe --------------------------------------------------------------
|
|
209
|
+
export function createCreateKeyframeCommand() {
|
|
210
|
+
const cmd = new Command("create-keyframe");
|
|
211
|
+
cmd
|
|
212
|
+
.description("Create a theme keyframe/transition animation in the connected editor")
|
|
213
|
+
.requiredOption("--name <name>", "Keyframe name")
|
|
214
|
+
.option("--type <type>", "keyframe | transition", "keyframe")
|
|
215
|
+
.requiredOption("--points <json>", 'JSON array of points, e.g. \'[{"point":"0%","styles":[{"property":"opacity","value":0}]}]\'')
|
|
216
|
+
.option("--settings <json>", 'JSON array of animation settings { property, value } — type-dependent. keyframe: animation-duration/-iteration-count/-play-state/-delay/-timing-function/-direction/-fill-mode/-timeline/-range, transform-origin, backface-visibility. transition: transition, backface-visibility. e.g. \'[{"property":"animation-duration","value":"1.4s"}]\'')
|
|
217
|
+
.option("--port <port>", "Dev server WebSocket port", "5201")
|
|
218
|
+
.action((options) => {
|
|
219
|
+
const type = (options.type ?? "keyframe").toLowerCase();
|
|
220
|
+
if (type !== "keyframe" && type !== "transition") {
|
|
221
|
+
printErrorAndExit(new Error('--type must be "keyframe" or "transition"'));
|
|
222
|
+
}
|
|
223
|
+
const points = parseJsonArray(options.points, "--points");
|
|
224
|
+
const settings = parseOptionalJsonArray(options.settings, "--settings");
|
|
225
|
+
return send({
|
|
226
|
+
tokenType: "keyframe",
|
|
227
|
+
name: options.name,
|
|
228
|
+
keyframeType: type,
|
|
229
|
+
points,
|
|
230
|
+
...(settings !== undefined ? { settings } : {}),
|
|
231
|
+
}, options);
|
|
232
|
+
});
|
|
233
|
+
return cmd;
|
|
234
|
+
}
|
|
235
|
+
/** Update an existing keyframe in place — keeps its id, so the `ref` (`_${id}`) stays stable. */
|
|
236
|
+
export function createUpdateKeyframeCommand() {
|
|
237
|
+
const cmd = new Command("update-keyframe");
|
|
238
|
+
cmd
|
|
239
|
+
.description("Update an existing theme keyframe IN PLACE (keeps its ref) in the connected editor")
|
|
240
|
+
.option("--id <id>", "Keyframe id (from list-theme-globals; preferred)")
|
|
241
|
+
.option("--name <name>", "Keyframe name (used to find it when --id is omitted; also renames when --id is given)")
|
|
242
|
+
.option("--type <type>", "keyframe | transition")
|
|
243
|
+
.requiredOption("--points <json>", 'JSON array of points, e.g. \'[{"point":"0%","styles":[{"property":"opacity","value":0}]}]\'')
|
|
244
|
+
.option("--settings <json>", 'JSON array of animation settings { property, value } (type-dependent — see create-keyframe). Omit to keep existing settings; pass [] to clear them.')
|
|
245
|
+
.option("--port <port>", "Dev server WebSocket port", "5201")
|
|
246
|
+
.action((options) => {
|
|
247
|
+
requireIdOrName(options, "keyframe");
|
|
248
|
+
const type = options.type?.toLowerCase();
|
|
249
|
+
if (type && type !== "keyframe" && type !== "transition") {
|
|
250
|
+
printErrorAndExit(new Error('--type must be "keyframe" or "transition"'));
|
|
251
|
+
}
|
|
252
|
+
const points = parseJsonArray(options.points, "--points");
|
|
253
|
+
const settings = parseOptionalJsonArray(options.settings, "--settings");
|
|
254
|
+
return send({
|
|
255
|
+
tokenType: "keyframe",
|
|
256
|
+
id: options.id,
|
|
257
|
+
name: options.name,
|
|
258
|
+
...(type ? { keyframeType: type } : {}),
|
|
259
|
+
points,
|
|
260
|
+
...(settings !== undefined ? { settings } : {}),
|
|
261
|
+
}, options, "update-design-token");
|
|
262
|
+
});
|
|
263
|
+
return cmd;
|
|
264
|
+
}
|
|
265
|
+
// ---- color scheme ----------------------------------------------------------
|
|
266
|
+
export function createCreateColorSchemeCommand() {
|
|
267
|
+
const cmd = new Command("create-color-scheme");
|
|
268
|
+
cmd
|
|
269
|
+
.description("Create a theme color scheme (palette) with its colors in the connected editor")
|
|
270
|
+
.requiredOption("--name <name>", "Color scheme name")
|
|
271
|
+
.requiredOption("--colors <json>", 'JSON array of { slotId? | newSlotName?, value } — target an existing slot by slotId (its id from list-theme-globals colorSchemes.schemes / colorsByScheme keys) OR create/reuse one by newSlotName (use the standard slot names, "/" to group e.g. "PrimaryButton/Background"); exactly one per entry. value is a literal color (hex/rgb/hsl/name) OR an existing theme color\'s cssVar "var(--<colorId>)" (from list-theme-globals) for a linked reference. e.g. \'[{"newSlotName":"Background","value":"#ffffff"},{"slotId":"AbC123","value":"var(--Xy9)"}]\'.')
|
|
272
|
+
.option("--port <port>", "Dev server WebSocket port", "5201")
|
|
273
|
+
.action((options) => {
|
|
274
|
+
const colors = parseJsonArray(options.colors, "--colors");
|
|
275
|
+
return send({ tokenType: "colorScheme", name: options.name, colors }, options);
|
|
276
|
+
});
|
|
277
|
+
return cmd;
|
|
278
|
+
}
|
|
279
|
+
/** Update an existing color scheme (palette) in place — keeps its id/className. Merges colors by slot. */
|
|
280
|
+
export function createUpdateColorSchemeCommand() {
|
|
281
|
+
const cmd = new Command("update-color-scheme");
|
|
282
|
+
cmd
|
|
283
|
+
.description("Update an existing theme color scheme (palette) IN PLACE (keeps its id/className) in the connected editor")
|
|
284
|
+
.option("--id <id>", "Color scheme id (from list-theme-globals; preferred)")
|
|
285
|
+
.option("--name <name>", "Color scheme name (used to find it when --id is omitted; also renames when --id is given)")
|
|
286
|
+
.option("--colors <json>", 'JSON array of { slotId? | newSlotName?, value } to set — target an existing slot by slotId (from list-theme-globals colorSchemes.schemes / colorsByScheme keys) OR create/reuse by newSlotName (use the standard slot names, "/" to group); exactly one per entry. value is a literal color (hex/rgb/hsl/name) OR an existing theme color\'s cssVar "var(--<colorId>)" (from list-theme-globals) for a linked reference. Only the slots you pass change. Omit to only rename.')
|
|
287
|
+
.option("--default", "Make this scheme the default for its group (clears any other default in the group)")
|
|
288
|
+
.option("--no-default", "Remove the default flag from this scheme")
|
|
289
|
+
.option("--port <port>", "Dev server WebSocket port", "5201")
|
|
290
|
+
.action((options) => {
|
|
291
|
+
requireIdOrName(options, "color scheme");
|
|
292
|
+
const colors = parseOptionalJsonArray(options.colors, "--colors");
|
|
293
|
+
// commander yields true for --default, false for --no-default, undefined when neither is passed.
|
|
294
|
+
const isDefault = options.default;
|
|
295
|
+
return send({
|
|
296
|
+
tokenType: "colorScheme",
|
|
297
|
+
id: options.id,
|
|
298
|
+
name: options.name,
|
|
299
|
+
...(colors !== undefined ? { colors } : {}),
|
|
300
|
+
...(isDefault !== undefined ? { isDefault } : {}),
|
|
301
|
+
}, options, "update-design-token");
|
|
302
|
+
});
|
|
303
|
+
return cmd;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Rename a color SLOT (a scheme key like "Background") in place. The slot id is stable, so the
|
|
307
|
+
* runtime references (`var(--<slotId>)`, `colorsByScheme[slotId]`) keep working — only the display
|
|
308
|
+
* name changes. Identify the slot by --id (a slot's only editable field is its name, so --name is the
|
|
309
|
+
* NEW name, never a finder). Only non-design-asset (user/theme) slots can be renamed.
|
|
310
|
+
*/
|
|
311
|
+
export function createRenameColorSchemeSlotCommand() {
|
|
312
|
+
const cmd = new Command("rename-color-scheme-slot");
|
|
313
|
+
cmd
|
|
314
|
+
.description("Rename a color scheme SLOT in place (keeps its id; only the display name changes) in the connected editor")
|
|
315
|
+
.requiredOption("--id <id>", "Slot id (from list-theme-globals colorSchemes.schemes[].id / colorsByScheme keys)")
|
|
316
|
+
.requiredOption("--name <name>", "New slot name (a \"/\" groups it in the editor UI, e.g. \"PrimaryButton/Background\")")
|
|
317
|
+
.option("--port <port>", "Dev server WebSocket port", "5201")
|
|
318
|
+
.action((options) => {
|
|
319
|
+
if (!options.id)
|
|
320
|
+
printErrorAndExit(new Error("--id is required"));
|
|
321
|
+
if (!options.name || !options.name.trim())
|
|
322
|
+
printErrorAndExit(new Error("--name is required (the new slot name)"));
|
|
323
|
+
return send({ tokenType: "colorSchemeSlot", id: options.id, name: options.name }, options, "update-design-token");
|
|
324
|
+
});
|
|
325
|
+
return cmd;
|
|
326
|
+
}
|
|
327
|
+
//# sourceMappingURL=create-design-tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-design-tokens.js","sourceRoot":"","sources":["../../src/commands/create-design-tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-global-variable.d.ts","sourceRoot":"","sources":["../../src/commands/create-global-variable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuDpC,wBAAgB,iCAAiC,IAAI,OAAO,CAc3D"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { printErrorAndExit, printResultAndExit, runEditorAction } from "../utils/editor-action-client.js";
|
|
3
|
+
const VALID_TYPES = ["TEXT", "RICH_TEXT", "IMAGE", "COLOR", "NUMBER", "BOOLEAN", "BORDER", "SHADOW"];
|
|
4
|
+
/**
|
|
5
|
+
* Parse a `--value` flag: accept JSON (for objects/null/numbers/booleans), and
|
|
6
|
+
* fall back to the raw string for convenience (so `--value "#ff0000"` works).
|
|
7
|
+
*/
|
|
8
|
+
function parseValue(raw) {
|
|
9
|
+
if (raw == null)
|
|
10
|
+
return null;
|
|
11
|
+
try {
|
|
12
|
+
return JSON.parse(raw);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return raw;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async function runCreateGlobalVariable(options) {
|
|
19
|
+
const { displayName, type } = options;
|
|
20
|
+
if (!displayName) {
|
|
21
|
+
printErrorAndExit(new Error("--display-name is required"));
|
|
22
|
+
}
|
|
23
|
+
if (!type || !VALID_TYPES.includes(type)) {
|
|
24
|
+
printErrorAndExit(new Error(`--type must be one of: ${VALID_TYPES.join(", ")}`));
|
|
25
|
+
}
|
|
26
|
+
const port = options.port ? parseInt(options.port, 10) : undefined;
|
|
27
|
+
try {
|
|
28
|
+
const result = await runEditorAction("create-global-variable", {
|
|
29
|
+
displayName,
|
|
30
|
+
type,
|
|
31
|
+
value: parseValue(options.value),
|
|
32
|
+
...(options.groupId ? { groupId: options.groupId } : {}),
|
|
33
|
+
}, port ? { port } : {});
|
|
34
|
+
printResultAndExit(result);
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
printErrorAndExit(e);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export function createCreateGlobalVariableCommand() {
|
|
41
|
+
const cmd = new Command("create-global-variable");
|
|
42
|
+
cmd
|
|
43
|
+
.description("Create a global variable (Theme Settings) in the connected editor. The runtime key is " +
|
|
44
|
+
"auto-generated; read it back with `list-theme-globals`.")
|
|
45
|
+
.requiredOption("--display-name <name>", "Human-facing label for the variable")
|
|
46
|
+
.requiredOption("--type <type>", `Value type: ${VALID_TYPES.join(" | ")}`)
|
|
47
|
+
.option("--value <json>", "Default value (JSON for objects/null; plain string also accepted)")
|
|
48
|
+
.option("--group-id <id>", "Existing group id to place the variable under")
|
|
49
|
+
.option("--port <port>", "Dev server WebSocket port", "5201")
|
|
50
|
+
.action(runCreateGlobalVariable);
|
|
51
|
+
return cmd;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=create-global-variable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-global-variable.js","sourceRoot":"","sources":["../../src/commands/create-global-variable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAE1G,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAUrG;;;GAGG;AACH,SAAS,UAAU,CAAC,GAAY;IAC9B,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,OAAoC;IACzE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEtC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,iBAAiB,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,iBAAiB,CAAC,IAAI,KAAK,CAAC,0BAA0B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,wBAAwB,EACxB;YACE,WAAW;YACX,IAAI;YACJ,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;YAChC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,EACD,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CACrB,CAAC;QACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iCAAiC;IAC/C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAClD,GAAG;SACA,WAAW,CACV,wFAAwF;QACtF,yDAAyD,CAC5D;SACA,cAAc,CAAC,uBAAuB,EAAE,qCAAqC,CAAC;SAC9E,cAAc,CAAC,eAAe,EAAE,eAAe,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;SACzE,MAAM,CAAC,gBAAgB,EAAE,mEAAmE,CAAC;SAC7F,MAAM,CAAC,iBAAiB,EAAE,+CAA+C,CAAC;SAC1E,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACnC,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-page.d.ts","sourceRoot":"","sources":["../../src/commands/create-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqCpC,wBAAgB,uBAAuB,IAAI,OAAO,CAYjD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
|
|
3
|
+
async function runCreatePage(options) {
|
|
4
|
+
if (!options.pageType || typeof options.pageType !== "string") {
|
|
5
|
+
printErrorAndExit(new Error("--page-type is required (e.g. CATEGORY, PRODUCT, BRAND, BLOG, BLOG_CATEGORY, CUSTOM)"));
|
|
6
|
+
}
|
|
7
|
+
const port = options.port ? parseInt(options.port, 10) : undefined;
|
|
8
|
+
try {
|
|
9
|
+
const result = await runEditorAction("create-page", {
|
|
10
|
+
pageType: options.pageType,
|
|
11
|
+
...(options.name ? { name: options.name } : {}),
|
|
12
|
+
...(options.slug ? { slug: options.slug } : {}),
|
|
13
|
+
}, port ? { port } : {});
|
|
14
|
+
printResultAndExit(result);
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
printErrorAndExit(e);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function createCreatePageCommand() {
|
|
21
|
+
const cmd = new Command("create-page");
|
|
22
|
+
cmd
|
|
23
|
+
.description("Create a theme page of the given pageType (CATEGORY, PRODUCT, BRAND, BLOG, BLOG_CATEGORY, INDEX, CUSTOM, …), so you can build a real PAGE link to its entities instead of guessing a slug/URL. Non-CUSTOM types are unique per theme — if one already exists it is returned as-is (alreadyExisted: true). CUSTOM requires --name and a unique --slug. Returns the page id.")
|
|
24
|
+
.requiredOption("--page-type <type>", "Page type to create (e.g. CATEGORY)")
|
|
25
|
+
.option("--name <name>", "Page name (required for CUSTOM pages)")
|
|
26
|
+
.option("--slug <slug>", "Page slug (required for CUSTOM pages)")
|
|
27
|
+
.option("--port <port>", "Dev server WebSocket port", "5201")
|
|
28
|
+
.action(runCreatePage);
|
|
29
|
+
return cmd;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=create-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-page.js","sourceRoot":"","sources":["../../src/commands/create-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAS1C,KAAK,UAAU,aAAa,CAAC,OAA0B;IACrD,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9D,iBAAiB,CACf,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAClG,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,aAAa,EACb;YACE,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD,EACD,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CACrB,CAAC;QACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,GAAG;SACA,WAAW,CACV,4WAA4W,CAC7W;SACA,cAAc,CAAC,oBAAoB,EAAE,qCAAqC,CAAC;SAC3E,MAAM,CAAC,eAAe,EAAE,uCAAuC,CAAC;SAChE,MAAM,CAAC,eAAe,EAAE,uCAAuC,CAAC;SAChE,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,aAAa,CAAC,CAAC;IACzB,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAy3BpC,wBAAgB,mBAAmB,IAAI,OAAO,CA4B7C;AAGD,wBAAsB,GAAG,kBAiCxB"}
|