@sketchmark/plugin-wireframe 0.1.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) sketchmark contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,59 @@
1
+ # @sketchmark/plugin-wireframe
2
+
3
+ Primitive UI wireframes for Sketchmark.
4
+
5
+ This plugin keeps the mental model small by compiling a handful of `wf.*` commands into ordinary Sketchmark groups, text, lines, boxes, and circles. It focuses on reusable primitives, not prebuilt app components.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install sketchmark @sketchmark/plugin-wireframe
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```ts
16
+ import { render } from "sketchmark";
17
+ import { wireframe } from "@sketchmark/plugin-wireframe";
18
+
19
+ render({
20
+ container: document.getElementById("diagram")!,
21
+ dsl: `
22
+ diagram
23
+ layout row
24
+ config gap=28
25
+
26
+ wf.screen mobile frame=phone width=390 height=640 items=[hero,form]
27
+ wf.panel hero label="Hero" items=[cover,title,body,cta] width=300 height=300
28
+ wf.media cover kind=image width=260 height=120
29
+ wf.text title kind=heading lines=2 width=220
30
+ wf.text body kind=body lines=3 width=240
31
+ wf.control cta kind=button label="Continue" width=140
32
+
33
+ wf.panel form label="Sign In" items=[email,password,remember,submit] width=300 height=240
34
+ wf.control email kind=input placeholder="Email"
35
+ wf.control password kind=input placeholder="Password"
36
+ wf.control remember kind=checkbox label="Remember me"
37
+ wf.control submit kind=button label="Sign In"
38
+ end
39
+ `.trim(),
40
+ plugins: [wireframe()],
41
+ });
42
+ ```
43
+
44
+ ## Supported Commands
45
+
46
+ - `wf.screen <id> [frame=browser|phone|plain] [items=[...]]`
47
+ - `wf.panel <id> [items=[...]]`
48
+ - `wf.text <id> [kind=heading|body|caption|label] [lines=<n>] [label="..."]`
49
+ - `wf.media <id> [kind=image|avatar|icon]`
50
+ - `wf.control <id> [kind=button|input|textarea|select|checkbox|radio]`
51
+ - `wf.divider <id> [orientation=horizontal|vertical] [label="..."]`
52
+
53
+ ## Notes
54
+
55
+ - `wf.screen` and `wf.panel` are visible group containers.
56
+ - `wf.text` can render authored text, or placeholder bars when no `label` is given.
57
+ - `wf.control` stays generic on purpose so compounds like navbars, forms, and cards can be built from a small primitive set.
58
+ - `wf.control kind=checkbox|radio` now auto-sizes short labels more tightly and lays them out as compact top-aligned inline rows; use `text-width=` when you want a wider label area.
59
+ - The plugin works with normal Sketchmark layouts and absolute positioning.
package/dist/index.cjs ADDED
@@ -0,0 +1,505 @@
1
+ 'use strict';
2
+
3
+ const SUPPORTED_COMMANDS = new Set([
4
+ "screen",
5
+ "panel",
6
+ "text",
7
+ "media",
8
+ "control",
9
+ "divider",
10
+ ]);
11
+ const DEFAULTS = {
12
+ surfaceFill: "#f7f0e3",
13
+ surfaceStroke: "#8b7156",
14
+ controlFill: "#fcf8ef",
15
+ mutedTextColor: "#6d5844",
16
+ placeholderStroke: "#7b6a58",
17
+ screenGap: 16,
18
+ screenPadding: 20,
19
+ panelGap: 12,
20
+ panelPadding: 16,
21
+ textGap: 8,
22
+ choiceGap: 12,
23
+ };
24
+ const TEXT_KIND_DEFAULTS = {
25
+ heading: { width: 280, lines: 2, fontSize: 24, fontWeight: 700 },
26
+ body: { width: 260, lines: 3, fontSize: 14, fontWeight: 400 },
27
+ caption: { width: 160, lines: 1, fontSize: 12, fontWeight: 400 },
28
+ label: { width: 120, lines: 1, fontSize: 12, fontWeight: 600 },
29
+ };
30
+ const TEXT_PLACEHOLDER_RATIOS = {
31
+ heading: [1, 0.72, 0.58],
32
+ body: [1, 0.93, 0.78, 0.62],
33
+ caption: [0.76, 0.58],
34
+ label: [0.54, 0.42],
35
+ };
36
+ const GROUP_PROP_KEYS = [
37
+ "layout",
38
+ "gap",
39
+ "padding",
40
+ "columns",
41
+ "align",
42
+ "justify",
43
+ "theme",
44
+ "fill",
45
+ "stroke",
46
+ "stroke-width",
47
+ "opacity",
48
+ "x",
49
+ "y",
50
+ "width",
51
+ "height",
52
+ "items",
53
+ ];
54
+ const TEXT_PROP_KEYS = [
55
+ "theme",
56
+ "opacity",
57
+ "font",
58
+ "letter-spacing",
59
+ "padding",
60
+ "vertical-align",
61
+ "line-height",
62
+ "x",
63
+ "y",
64
+ "height",
65
+ ];
66
+ const NODE_PROP_KEYS = [
67
+ "theme",
68
+ "color",
69
+ "opacity",
70
+ "font-size",
71
+ "font-weight",
72
+ "font",
73
+ "letter-spacing",
74
+ "padding",
75
+ "text-align",
76
+ "vertical-align",
77
+ "line-height",
78
+ "x",
79
+ "y",
80
+ "deg",
81
+ ];
82
+ function wireframe(options = {}) {
83
+ return {
84
+ name: "wireframe",
85
+ preprocess(source) {
86
+ return compileWireframe(source, options);
87
+ },
88
+ };
89
+ }
90
+ function compileWireframe(source, options = {}) {
91
+ const settings = { ...DEFAULTS, ...options };
92
+ const lines = source.split(/\r?\n/);
93
+ const commandByLine = new Map();
94
+ let hasWireframe = false;
95
+ let inTripleQuoteBlock = false;
96
+ for (let index = 0; index < lines.length; index += 1) {
97
+ const trimmed = lines[index]?.trim() ?? "";
98
+ if (trimmed === '"""') {
99
+ inTripleQuoteBlock = !inTripleQuoteBlock;
100
+ continue;
101
+ }
102
+ if (inTripleQuoteBlock || !trimmed.startsWith("wf."))
103
+ continue;
104
+ commandByLine.set(index, parseWireframeCommand(trimmed, index + 1));
105
+ hasWireframe = true;
106
+ }
107
+ if (!hasWireframe)
108
+ return source;
109
+ const output = [];
110
+ for (let index = 0; index < lines.length; index += 1) {
111
+ const command = commandByLine.get(index);
112
+ if (!command) {
113
+ output.push(lines[index] ?? "");
114
+ continue;
115
+ }
116
+ output.push(...emitCommand(command, settings));
117
+ }
118
+ return output.join("\n");
119
+ }
120
+ function parseWireframeCommand(line, lineNumber) {
121
+ const tokens = tokenizeLine(line);
122
+ if (tokens.length < 2) {
123
+ throw new Error(`Invalid wireframe command on line ${lineNumber}`);
124
+ }
125
+ const commandToken = tokens[0] ?? "";
126
+ const type = commandToken.slice("wf.".length);
127
+ if (!SUPPORTED_COMMANDS.has(type)) {
128
+ throw new Error(`Unsupported wireframe command "${commandToken}" on line ${lineNumber}`);
129
+ }
130
+ const id = tokens[1] ?? "";
131
+ if (!id || id.includes("=")) {
132
+ throw new Error(`Wireframe command "${commandToken}" requires an explicit id on line ${lineNumber}`);
133
+ }
134
+ const props = {};
135
+ for (const token of tokens.slice(2)) {
136
+ const eqIndex = token.indexOf("=");
137
+ if (eqIndex < 1) {
138
+ throw new Error(`Invalid wireframe property "${token}" on line ${lineNumber}`);
139
+ }
140
+ props[token.slice(0, eqIndex)] = stripWrapping(token.slice(eqIndex + 1));
141
+ }
142
+ return { type, id, props, lineNumber };
143
+ }
144
+ function tokenizeLine(line) {
145
+ const tokens = [];
146
+ let index = 0;
147
+ while (index < line.length) {
148
+ while (index < line.length && /\s/.test(line[index] ?? ""))
149
+ index += 1;
150
+ if (index >= line.length)
151
+ break;
152
+ const start = index;
153
+ let inQuote = false;
154
+ let listDepth = 0;
155
+ while (index < line.length) {
156
+ const ch = line[index] ?? "";
157
+ if (ch === '"' && line[index - 1] !== "\\") {
158
+ inQuote = !inQuote;
159
+ index += 1;
160
+ continue;
161
+ }
162
+ if (!inQuote) {
163
+ if (ch === "[")
164
+ listDepth += 1;
165
+ if (ch === "]" && listDepth > 0)
166
+ listDepth -= 1;
167
+ if (/\s/.test(ch) && listDepth === 0)
168
+ break;
169
+ }
170
+ index += 1;
171
+ }
172
+ tokens.push(line.slice(start, index));
173
+ }
174
+ return tokens;
175
+ }
176
+ function stripWrapping(value) {
177
+ if (value.length >= 2 && value[0] === '"' && value[value.length - 1] === '"') {
178
+ return value.slice(1, -1).replace(/\\"/g, '"');
179
+ }
180
+ return value;
181
+ }
182
+ function emitCommand(command, settings) {
183
+ switch (command.type) {
184
+ case "screen":
185
+ return [emitScreen(command, settings)];
186
+ case "panel":
187
+ return [emitPanel(command, settings)];
188
+ case "text":
189
+ return emitText(command, settings);
190
+ case "media":
191
+ return [emitMedia(command, settings)];
192
+ case "control":
193
+ return emitControl(command, settings);
194
+ case "divider":
195
+ return [emitDivider(command, settings)];
196
+ }
197
+ }
198
+ function emitScreen(command, settings) {
199
+ const frame = normalizeScreenFrame(command.props.frame ?? "browser", command.lineNumber);
200
+ const props = {
201
+ layout: command.props.layout ?? "column",
202
+ gap: command.props.gap ?? String(settings.screenGap),
203
+ padding: command.props.padding ?? String(settings.screenPadding),
204
+ width: command.props.width ?? String(defaultScreenWidth(frame)),
205
+ height: command.props.height ?? String(defaultScreenHeight(frame)),
206
+ fill: command.props.fill ?? settings.surfaceFill,
207
+ stroke: command.props.stroke ?? settings.surfaceStroke,
208
+ "stroke-width": command.props["stroke-width"] ?? "2",
209
+ };
210
+ copyPropsToObject(command.props, props, GROUP_PROP_KEYS);
211
+ const parts = ["group", command.id];
212
+ if (command.props.label)
213
+ appendProp(parts, "label", command.props.label);
214
+ appendKnownProps(parts, props, GROUP_PROP_KEYS);
215
+ return parts.join(" ");
216
+ }
217
+ function emitPanel(command, settings) {
218
+ const props = {
219
+ layout: command.props.layout ?? "column",
220
+ gap: command.props.gap ?? String(settings.panelGap),
221
+ padding: command.props.padding ?? String(settings.panelPadding),
222
+ width: command.props.width ?? "280",
223
+ height: command.props.height ?? "180",
224
+ fill: command.props.fill ?? settings.surfaceFill,
225
+ stroke: command.props.stroke ?? settings.surfaceStroke,
226
+ "stroke-width": command.props["stroke-width"] ?? "1.5",
227
+ };
228
+ copyPropsToObject(command.props, props, GROUP_PROP_KEYS);
229
+ const parts = ["group", command.id];
230
+ if (command.props.label)
231
+ appendProp(parts, "label", command.props.label);
232
+ appendKnownProps(parts, props, GROUP_PROP_KEYS);
233
+ return parts.join(" ");
234
+ }
235
+ function emitText(command, settings) {
236
+ const kind = normalizeTextKind(command.props.kind ?? "body", command.lineNumber);
237
+ const defaults = TEXT_KIND_DEFAULTS[kind];
238
+ if (command.props.label) {
239
+ const parts = ["text", command.id];
240
+ appendProp(parts, "label", command.props.label);
241
+ appendProp(parts, "width", command.props.width ?? String(defaults.width));
242
+ appendProp(parts, "font-size", command.props["font-size"] ?? String(defaults.fontSize));
243
+ appendProp(parts, "font-weight", command.props["font-weight"] ?? String(defaults.fontWeight));
244
+ appendProp(parts, "text-align", command.props["text-align"] ?? "left");
245
+ appendProp(parts, "color", command.props.color ?? (kind === "caption" || kind === "label" ? settings.mutedTextColor : undefined));
246
+ copyPropsToArray(command.props, parts, TEXT_PROP_KEYS);
247
+ return [parts.join(" ")];
248
+ }
249
+ const width = readNumber(command.props.width) ?? defaults.width;
250
+ const lineCount = Math.max(1, Math.round(readNumber(command.props.lines) ?? defaults.lines));
251
+ const ratios = buildPlaceholderRatios(kind, lineCount);
252
+ const gap = readNumber(command.props.gap) ?? settings.textGap;
253
+ const stroke = command.props.stroke ?? command.props.color ?? settings.placeholderStroke;
254
+ const opacity = command.props.opacity ?? "0.92";
255
+ const lineIds = [];
256
+ const output = [];
257
+ for (let index = 0; index < lineCount; index += 1) {
258
+ const lineId = helperId(command.id, `line${index + 1}`);
259
+ const lineWidth = Math.max(36, Math.round(width * (ratios[index] ?? 0.7)));
260
+ lineIds.push(lineId);
261
+ const parts = ["line", lineId];
262
+ appendProp(parts, "width", String(lineWidth));
263
+ appendProp(parts, "stroke", stroke);
264
+ appendProp(parts, "opacity", opacity);
265
+ output.push(parts.join(" "));
266
+ }
267
+ const groupParts = ["bare", command.id];
268
+ appendProp(groupParts, "layout", "column");
269
+ appendProp(groupParts, "align", "start");
270
+ appendProp(groupParts, "gap", String(gap));
271
+ appendProp(groupParts, "items", `[${lineIds.join(",")}]`);
272
+ copyPropsToArray(command.props, groupParts, ["x", "y"]);
273
+ output.push(groupParts.join(" "));
274
+ return output;
275
+ }
276
+ function emitMedia(command, settings) {
277
+ const kind = normalizeMediaKind(command.props.kind ?? "image", command.lineNumber);
278
+ const parts = [kind === "avatar" ? "circle" : "box", command.id];
279
+ if (kind === "image") {
280
+ appendProp(parts, "label", command.props.label ?? "Image");
281
+ appendProp(parts, "width", command.props.width ?? "220");
282
+ appendProp(parts, "height", command.props.height ?? "140");
283
+ }
284
+ else {
285
+ const size = command.props.size ?? command.props.width ?? "48";
286
+ appendProp(parts, "label", command.props.label ?? "");
287
+ appendProp(parts, "width", size);
288
+ appendProp(parts, "height", command.props.height ?? size);
289
+ }
290
+ appendProp(parts, "fill", command.props.fill ?? settings.controlFill);
291
+ appendProp(parts, "stroke", command.props.stroke ?? settings.surfaceStroke);
292
+ copyPropsToArray(command.props, parts, NODE_PROP_KEYS);
293
+ return parts.join(" ");
294
+ }
295
+ function emitControl(command, settings) {
296
+ const kind = normalizeControlKind(command.props.kind ?? "button", command.lineNumber);
297
+ if (kind === "checkbox" || kind === "radio") {
298
+ return emitChoiceControl(command, kind, settings);
299
+ }
300
+ const parts = ["box", command.id];
301
+ appendProp(parts, "label", controlLabel(command, kind));
302
+ appendProp(parts, "width", controlWidth(command, kind));
303
+ appendProp(parts, "height", controlHeight(command, kind));
304
+ appendProp(parts, "fill", command.props.fill ?? settings.controlFill);
305
+ appendProp(parts, "stroke", command.props.stroke ?? settings.surfaceStroke);
306
+ if (kind === "button") {
307
+ appendProp(parts, "font-weight", command.props["font-weight"] ?? "600");
308
+ }
309
+ else {
310
+ appendProp(parts, "text-align", command.props["text-align"] ?? "left");
311
+ appendProp(parts, "padding", command.props.padding ?? "12");
312
+ appendProp(parts, "color", command.props.color ?? settings.mutedTextColor);
313
+ if (kind === "textarea") {
314
+ appendProp(parts, "vertical-align", command.props["vertical-align"] ?? "top");
315
+ }
316
+ }
317
+ copyPropsToArray(command.props, parts, NODE_PROP_KEYS);
318
+ return [parts.join(" ")];
319
+ }
320
+ function emitChoiceControl(command, kind, settings) {
321
+ const markerId = helperId(command.id, "marker");
322
+ const labelId = helperId(command.id, "label");
323
+ const markerParts = [kind === "checkbox" ? "box" : "circle", markerId];
324
+ const labelParts = ["text", labelId];
325
+ const groupParts = ["bare", command.id];
326
+ const size = command.props.size ?? "18";
327
+ const labelFontSize = command.props["font-size"] ?? "14";
328
+ const labelHeight = String(Math.max(readNumber(size) ?? 18, Math.round((readNumber(labelFontSize) ?? 14) * 1.2)));
329
+ appendProp(markerParts, "label", command.props.checked === "true" ? "x" : "");
330
+ appendProp(markerParts, "width", size);
331
+ appendProp(markerParts, "height", size);
332
+ appendProp(markerParts, "fill", command.props.fill ?? settings.controlFill);
333
+ appendProp(markerParts, "stroke", command.props.stroke ?? settings.surfaceStroke);
334
+ appendProp(markerParts, "font-size", "11");
335
+ const label = command.props.label ?? "Option";
336
+ appendProp(labelParts, "label", label);
337
+ appendProp(labelParts, "width", command.props["text-width"] ?? compactChoiceLabelWidth(label, command.props));
338
+ appendProp(labelParts, "height", labelHeight);
339
+ appendProp(labelParts, "font-size", labelFontSize);
340
+ appendProp(labelParts, "text-align", "left");
341
+ appendProp(labelParts, "vertical-align", "middle");
342
+ appendProp(labelParts, "color", command.props.color ?? settings.mutedTextColor);
343
+ appendProp(groupParts, "layout", "row");
344
+ appendProp(groupParts, "align", "start");
345
+ appendProp(groupParts, "gap", command.props.gap ?? String(settings.choiceGap));
346
+ appendProp(groupParts, "items", `[${markerId},${labelId}]`);
347
+ copyPropsToArray(command.props, groupParts, ["x", "y"]);
348
+ return [markerParts.join(" "), labelParts.join(" "), groupParts.join(" ")];
349
+ }
350
+ function emitDivider(command, settings) {
351
+ const orientation = command.props.orientation ?? "horizontal";
352
+ if (orientation !== "horizontal" && orientation !== "vertical") {
353
+ throw new Error(`Unsupported wf.divider orientation "${orientation}" on line ${command.lineNumber}`);
354
+ }
355
+ const parts = ["line", command.id];
356
+ appendProp(parts, "label", command.props.label ?? "");
357
+ appendProp(parts, "width", command.props.width ?? command.props.length ?? "240");
358
+ appendProp(parts, "stroke", command.props.stroke ?? settings.placeholderStroke);
359
+ appendProp(parts, "opacity", command.props.opacity ?? "0.75");
360
+ if (orientation === "vertical") {
361
+ appendProp(parts, "deg", command.props.deg ?? "90");
362
+ }
363
+ copyPropsToArray(command.props, parts, NODE_PROP_KEYS);
364
+ return parts.join(" ");
365
+ }
366
+ function copyPropsToObject(source, target, keys) {
367
+ for (const key of keys) {
368
+ if (source[key] !== undefined)
369
+ target[key] = source[key];
370
+ }
371
+ }
372
+ function copyPropsToArray(source, target, keys) {
373
+ for (const key of keys) {
374
+ if (source[key] !== undefined)
375
+ appendProp(target, key, source[key]);
376
+ }
377
+ }
378
+ function appendKnownProps(parts, props, keys) {
379
+ for (const key of keys) {
380
+ if (props[key] !== undefined)
381
+ appendProp(parts, key, props[key]);
382
+ }
383
+ }
384
+ function appendProp(parts, key, value) {
385
+ if (value === undefined)
386
+ return;
387
+ parts.push(`${key}=${formatDslValue(value)}`);
388
+ }
389
+ function formatDslValue(value) {
390
+ if (/^-?\d+(?:\.\d+)?$/.test(value))
391
+ return value;
392
+ if (value === "true" || value === "false")
393
+ return value;
394
+ if (/^\[[^\]]*]$/.test(value))
395
+ return value;
396
+ if (/^[A-Za-z_][A-Za-z0-9_.-]*$/.test(value))
397
+ return value;
398
+ return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
399
+ }
400
+ function readNumber(value) {
401
+ if (value === undefined)
402
+ return undefined;
403
+ const parsed = Number(value);
404
+ return Number.isFinite(parsed) ? parsed : undefined;
405
+ }
406
+ function compactChoiceLabelWidth(label, props) {
407
+ const fontSize = readNumber(props["font-size"]) ?? 14;
408
+ const estimatedWidth = Math.round(label.length * fontSize * 0.58 + 12);
409
+ return String(Math.min(160, Math.max(48, estimatedWidth)));
410
+ }
411
+ function defaultScreenWidth(frame) {
412
+ switch (frame) {
413
+ case "browser":
414
+ return 960;
415
+ case "phone":
416
+ return 390;
417
+ case "plain":
418
+ return 360;
419
+ }
420
+ }
421
+ function defaultScreenHeight(frame) {
422
+ switch (frame) {
423
+ case "browser":
424
+ return 640;
425
+ case "phone":
426
+ return 844;
427
+ case "plain":
428
+ return 640;
429
+ }
430
+ }
431
+ function buildPlaceholderRatios(kind, lineCount) {
432
+ const seed = TEXT_PLACEHOLDER_RATIOS[kind];
433
+ return Array.from({ length: lineCount }, (_, index) => {
434
+ if (index < seed.length)
435
+ return seed[index];
436
+ return Math.max(0.38, 0.72 - index * 0.08);
437
+ });
438
+ }
439
+ function controlLabel(command, kind) {
440
+ if (kind === "button")
441
+ return command.props.label ?? "Button";
442
+ if (kind === "textarea") {
443
+ return command.props.placeholder ?? command.props.label ?? "Write something";
444
+ }
445
+ if (kind === "select") {
446
+ const base = command.props.placeholder ?? command.props.label ?? "Select";
447
+ return `${base} v`;
448
+ }
449
+ return command.props.placeholder ?? command.props.label ?? "Input";
450
+ }
451
+ function controlWidth(command, kind) {
452
+ if (command.props.width)
453
+ return command.props.width;
454
+ switch (kind) {
455
+ case "button":
456
+ return "120";
457
+ case "input":
458
+ return "240";
459
+ case "textarea":
460
+ return "280";
461
+ case "select":
462
+ return "220";
463
+ }
464
+ }
465
+ function controlHeight(command, kind) {
466
+ if (command.props.height)
467
+ return command.props.height;
468
+ return kind === "textarea" ? "96" : "44";
469
+ }
470
+ function normalizeTextKind(value, lineNumber) {
471
+ if (value === "heading" || value === "body" || value === "caption" || value === "label") {
472
+ return value;
473
+ }
474
+ throw new Error(`Unsupported wf.text kind "${value}" on line ${lineNumber}`);
475
+ }
476
+ function normalizeMediaKind(value, lineNumber) {
477
+ if (value === "image" || value === "avatar" || value === "icon") {
478
+ return value;
479
+ }
480
+ throw new Error(`Unsupported wf.media kind "${value}" on line ${lineNumber}`);
481
+ }
482
+ function normalizeControlKind(value, lineNumber) {
483
+ if (value === "button" ||
484
+ value === "input" ||
485
+ value === "textarea" ||
486
+ value === "select" ||
487
+ value === "checkbox" ||
488
+ value === "radio") {
489
+ return value;
490
+ }
491
+ throw new Error(`Unsupported wf.control kind "${value}" on line ${lineNumber}`);
492
+ }
493
+ function normalizeScreenFrame(value, lineNumber) {
494
+ if (value === "browser" || value === "phone" || value === "plain") {
495
+ return value;
496
+ }
497
+ throw new Error(`Unsupported wf.screen frame "${value}" on line ${lineNumber}`);
498
+ }
499
+ function helperId(baseId, suffix) {
500
+ return `__wf_${baseId.replace(/[^A-Za-z0-9_-]/g, "_")}_${suffix}`;
501
+ }
502
+
503
+ exports.compileWireframe = compileWireframe;
504
+ exports.wireframe = wireframe;
505
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { SketchmarkPlugin } from "sketchmark";
2
+ export interface WireframePluginOptions {
3
+ surfaceFill?: string;
4
+ surfaceStroke?: string;
5
+ controlFill?: string;
6
+ mutedTextColor?: string;
7
+ placeholderStroke?: string;
8
+ screenGap?: number;
9
+ screenPadding?: number;
10
+ panelGap?: number;
11
+ panelPadding?: number;
12
+ textGap?: number;
13
+ choiceGap?: number;
14
+ }
15
+ export declare function wireframe(options?: WireframePluginOptions): SketchmarkPlugin;
16
+ export declare function compileWireframe(source: string, options?: WireframePluginOptions): string;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+GD,wBAAgB,SAAS,CAAC,OAAO,GAAE,sBAA2B,GAAG,gBAAgB,CAOhF;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,sBAA2B,GACnC,MAAM,CAgCR"}
package/dist/index.js ADDED
@@ -0,0 +1,502 @@
1
+ const SUPPORTED_COMMANDS = new Set([
2
+ "screen",
3
+ "panel",
4
+ "text",
5
+ "media",
6
+ "control",
7
+ "divider",
8
+ ]);
9
+ const DEFAULTS = {
10
+ surfaceFill: "#f7f0e3",
11
+ surfaceStroke: "#8b7156",
12
+ controlFill: "#fcf8ef",
13
+ mutedTextColor: "#6d5844",
14
+ placeholderStroke: "#7b6a58",
15
+ screenGap: 16,
16
+ screenPadding: 20,
17
+ panelGap: 12,
18
+ panelPadding: 16,
19
+ textGap: 8,
20
+ choiceGap: 12,
21
+ };
22
+ const TEXT_KIND_DEFAULTS = {
23
+ heading: { width: 280, lines: 2, fontSize: 24, fontWeight: 700 },
24
+ body: { width: 260, lines: 3, fontSize: 14, fontWeight: 400 },
25
+ caption: { width: 160, lines: 1, fontSize: 12, fontWeight: 400 },
26
+ label: { width: 120, lines: 1, fontSize: 12, fontWeight: 600 },
27
+ };
28
+ const TEXT_PLACEHOLDER_RATIOS = {
29
+ heading: [1, 0.72, 0.58],
30
+ body: [1, 0.93, 0.78, 0.62],
31
+ caption: [0.76, 0.58],
32
+ label: [0.54, 0.42],
33
+ };
34
+ const GROUP_PROP_KEYS = [
35
+ "layout",
36
+ "gap",
37
+ "padding",
38
+ "columns",
39
+ "align",
40
+ "justify",
41
+ "theme",
42
+ "fill",
43
+ "stroke",
44
+ "stroke-width",
45
+ "opacity",
46
+ "x",
47
+ "y",
48
+ "width",
49
+ "height",
50
+ "items",
51
+ ];
52
+ const TEXT_PROP_KEYS = [
53
+ "theme",
54
+ "opacity",
55
+ "font",
56
+ "letter-spacing",
57
+ "padding",
58
+ "vertical-align",
59
+ "line-height",
60
+ "x",
61
+ "y",
62
+ "height",
63
+ ];
64
+ const NODE_PROP_KEYS = [
65
+ "theme",
66
+ "color",
67
+ "opacity",
68
+ "font-size",
69
+ "font-weight",
70
+ "font",
71
+ "letter-spacing",
72
+ "padding",
73
+ "text-align",
74
+ "vertical-align",
75
+ "line-height",
76
+ "x",
77
+ "y",
78
+ "deg",
79
+ ];
80
+ function wireframe(options = {}) {
81
+ return {
82
+ name: "wireframe",
83
+ preprocess(source) {
84
+ return compileWireframe(source, options);
85
+ },
86
+ };
87
+ }
88
+ function compileWireframe(source, options = {}) {
89
+ const settings = { ...DEFAULTS, ...options };
90
+ const lines = source.split(/\r?\n/);
91
+ const commandByLine = new Map();
92
+ let hasWireframe = false;
93
+ let inTripleQuoteBlock = false;
94
+ for (let index = 0; index < lines.length; index += 1) {
95
+ const trimmed = lines[index]?.trim() ?? "";
96
+ if (trimmed === '"""') {
97
+ inTripleQuoteBlock = !inTripleQuoteBlock;
98
+ continue;
99
+ }
100
+ if (inTripleQuoteBlock || !trimmed.startsWith("wf."))
101
+ continue;
102
+ commandByLine.set(index, parseWireframeCommand(trimmed, index + 1));
103
+ hasWireframe = true;
104
+ }
105
+ if (!hasWireframe)
106
+ return source;
107
+ const output = [];
108
+ for (let index = 0; index < lines.length; index += 1) {
109
+ const command = commandByLine.get(index);
110
+ if (!command) {
111
+ output.push(lines[index] ?? "");
112
+ continue;
113
+ }
114
+ output.push(...emitCommand(command, settings));
115
+ }
116
+ return output.join("\n");
117
+ }
118
+ function parseWireframeCommand(line, lineNumber) {
119
+ const tokens = tokenizeLine(line);
120
+ if (tokens.length < 2) {
121
+ throw new Error(`Invalid wireframe command on line ${lineNumber}`);
122
+ }
123
+ const commandToken = tokens[0] ?? "";
124
+ const type = commandToken.slice("wf.".length);
125
+ if (!SUPPORTED_COMMANDS.has(type)) {
126
+ throw new Error(`Unsupported wireframe command "${commandToken}" on line ${lineNumber}`);
127
+ }
128
+ const id = tokens[1] ?? "";
129
+ if (!id || id.includes("=")) {
130
+ throw new Error(`Wireframe command "${commandToken}" requires an explicit id on line ${lineNumber}`);
131
+ }
132
+ const props = {};
133
+ for (const token of tokens.slice(2)) {
134
+ const eqIndex = token.indexOf("=");
135
+ if (eqIndex < 1) {
136
+ throw new Error(`Invalid wireframe property "${token}" on line ${lineNumber}`);
137
+ }
138
+ props[token.slice(0, eqIndex)] = stripWrapping(token.slice(eqIndex + 1));
139
+ }
140
+ return { type, id, props, lineNumber };
141
+ }
142
+ function tokenizeLine(line) {
143
+ const tokens = [];
144
+ let index = 0;
145
+ while (index < line.length) {
146
+ while (index < line.length && /\s/.test(line[index] ?? ""))
147
+ index += 1;
148
+ if (index >= line.length)
149
+ break;
150
+ const start = index;
151
+ let inQuote = false;
152
+ let listDepth = 0;
153
+ while (index < line.length) {
154
+ const ch = line[index] ?? "";
155
+ if (ch === '"' && line[index - 1] !== "\\") {
156
+ inQuote = !inQuote;
157
+ index += 1;
158
+ continue;
159
+ }
160
+ if (!inQuote) {
161
+ if (ch === "[")
162
+ listDepth += 1;
163
+ if (ch === "]" && listDepth > 0)
164
+ listDepth -= 1;
165
+ if (/\s/.test(ch) && listDepth === 0)
166
+ break;
167
+ }
168
+ index += 1;
169
+ }
170
+ tokens.push(line.slice(start, index));
171
+ }
172
+ return tokens;
173
+ }
174
+ function stripWrapping(value) {
175
+ if (value.length >= 2 && value[0] === '"' && value[value.length - 1] === '"') {
176
+ return value.slice(1, -1).replace(/\\"/g, '"');
177
+ }
178
+ return value;
179
+ }
180
+ function emitCommand(command, settings) {
181
+ switch (command.type) {
182
+ case "screen":
183
+ return [emitScreen(command, settings)];
184
+ case "panel":
185
+ return [emitPanel(command, settings)];
186
+ case "text":
187
+ return emitText(command, settings);
188
+ case "media":
189
+ return [emitMedia(command, settings)];
190
+ case "control":
191
+ return emitControl(command, settings);
192
+ case "divider":
193
+ return [emitDivider(command, settings)];
194
+ }
195
+ }
196
+ function emitScreen(command, settings) {
197
+ const frame = normalizeScreenFrame(command.props.frame ?? "browser", command.lineNumber);
198
+ const props = {
199
+ layout: command.props.layout ?? "column",
200
+ gap: command.props.gap ?? String(settings.screenGap),
201
+ padding: command.props.padding ?? String(settings.screenPadding),
202
+ width: command.props.width ?? String(defaultScreenWidth(frame)),
203
+ height: command.props.height ?? String(defaultScreenHeight(frame)),
204
+ fill: command.props.fill ?? settings.surfaceFill,
205
+ stroke: command.props.stroke ?? settings.surfaceStroke,
206
+ "stroke-width": command.props["stroke-width"] ?? "2",
207
+ };
208
+ copyPropsToObject(command.props, props, GROUP_PROP_KEYS);
209
+ const parts = ["group", command.id];
210
+ if (command.props.label)
211
+ appendProp(parts, "label", command.props.label);
212
+ appendKnownProps(parts, props, GROUP_PROP_KEYS);
213
+ return parts.join(" ");
214
+ }
215
+ function emitPanel(command, settings) {
216
+ const props = {
217
+ layout: command.props.layout ?? "column",
218
+ gap: command.props.gap ?? String(settings.panelGap),
219
+ padding: command.props.padding ?? String(settings.panelPadding),
220
+ width: command.props.width ?? "280",
221
+ height: command.props.height ?? "180",
222
+ fill: command.props.fill ?? settings.surfaceFill,
223
+ stroke: command.props.stroke ?? settings.surfaceStroke,
224
+ "stroke-width": command.props["stroke-width"] ?? "1.5",
225
+ };
226
+ copyPropsToObject(command.props, props, GROUP_PROP_KEYS);
227
+ const parts = ["group", command.id];
228
+ if (command.props.label)
229
+ appendProp(parts, "label", command.props.label);
230
+ appendKnownProps(parts, props, GROUP_PROP_KEYS);
231
+ return parts.join(" ");
232
+ }
233
+ function emitText(command, settings) {
234
+ const kind = normalizeTextKind(command.props.kind ?? "body", command.lineNumber);
235
+ const defaults = TEXT_KIND_DEFAULTS[kind];
236
+ if (command.props.label) {
237
+ const parts = ["text", command.id];
238
+ appendProp(parts, "label", command.props.label);
239
+ appendProp(parts, "width", command.props.width ?? String(defaults.width));
240
+ appendProp(parts, "font-size", command.props["font-size"] ?? String(defaults.fontSize));
241
+ appendProp(parts, "font-weight", command.props["font-weight"] ?? String(defaults.fontWeight));
242
+ appendProp(parts, "text-align", command.props["text-align"] ?? "left");
243
+ appendProp(parts, "color", command.props.color ?? (kind === "caption" || kind === "label" ? settings.mutedTextColor : undefined));
244
+ copyPropsToArray(command.props, parts, TEXT_PROP_KEYS);
245
+ return [parts.join(" ")];
246
+ }
247
+ const width = readNumber(command.props.width) ?? defaults.width;
248
+ const lineCount = Math.max(1, Math.round(readNumber(command.props.lines) ?? defaults.lines));
249
+ const ratios = buildPlaceholderRatios(kind, lineCount);
250
+ const gap = readNumber(command.props.gap) ?? settings.textGap;
251
+ const stroke = command.props.stroke ?? command.props.color ?? settings.placeholderStroke;
252
+ const opacity = command.props.opacity ?? "0.92";
253
+ const lineIds = [];
254
+ const output = [];
255
+ for (let index = 0; index < lineCount; index += 1) {
256
+ const lineId = helperId(command.id, `line${index + 1}`);
257
+ const lineWidth = Math.max(36, Math.round(width * (ratios[index] ?? 0.7)));
258
+ lineIds.push(lineId);
259
+ const parts = ["line", lineId];
260
+ appendProp(parts, "width", String(lineWidth));
261
+ appendProp(parts, "stroke", stroke);
262
+ appendProp(parts, "opacity", opacity);
263
+ output.push(parts.join(" "));
264
+ }
265
+ const groupParts = ["bare", command.id];
266
+ appendProp(groupParts, "layout", "column");
267
+ appendProp(groupParts, "align", "start");
268
+ appendProp(groupParts, "gap", String(gap));
269
+ appendProp(groupParts, "items", `[${lineIds.join(",")}]`);
270
+ copyPropsToArray(command.props, groupParts, ["x", "y"]);
271
+ output.push(groupParts.join(" "));
272
+ return output;
273
+ }
274
+ function emitMedia(command, settings) {
275
+ const kind = normalizeMediaKind(command.props.kind ?? "image", command.lineNumber);
276
+ const parts = [kind === "avatar" ? "circle" : "box", command.id];
277
+ if (kind === "image") {
278
+ appendProp(parts, "label", command.props.label ?? "Image");
279
+ appendProp(parts, "width", command.props.width ?? "220");
280
+ appendProp(parts, "height", command.props.height ?? "140");
281
+ }
282
+ else {
283
+ const size = command.props.size ?? command.props.width ?? "48";
284
+ appendProp(parts, "label", command.props.label ?? "");
285
+ appendProp(parts, "width", size);
286
+ appendProp(parts, "height", command.props.height ?? size);
287
+ }
288
+ appendProp(parts, "fill", command.props.fill ?? settings.controlFill);
289
+ appendProp(parts, "stroke", command.props.stroke ?? settings.surfaceStroke);
290
+ copyPropsToArray(command.props, parts, NODE_PROP_KEYS);
291
+ return parts.join(" ");
292
+ }
293
+ function emitControl(command, settings) {
294
+ const kind = normalizeControlKind(command.props.kind ?? "button", command.lineNumber);
295
+ if (kind === "checkbox" || kind === "radio") {
296
+ return emitChoiceControl(command, kind, settings);
297
+ }
298
+ const parts = ["box", command.id];
299
+ appendProp(parts, "label", controlLabel(command, kind));
300
+ appendProp(parts, "width", controlWidth(command, kind));
301
+ appendProp(parts, "height", controlHeight(command, kind));
302
+ appendProp(parts, "fill", command.props.fill ?? settings.controlFill);
303
+ appendProp(parts, "stroke", command.props.stroke ?? settings.surfaceStroke);
304
+ if (kind === "button") {
305
+ appendProp(parts, "font-weight", command.props["font-weight"] ?? "600");
306
+ }
307
+ else {
308
+ appendProp(parts, "text-align", command.props["text-align"] ?? "left");
309
+ appendProp(parts, "padding", command.props.padding ?? "12");
310
+ appendProp(parts, "color", command.props.color ?? settings.mutedTextColor);
311
+ if (kind === "textarea") {
312
+ appendProp(parts, "vertical-align", command.props["vertical-align"] ?? "top");
313
+ }
314
+ }
315
+ copyPropsToArray(command.props, parts, NODE_PROP_KEYS);
316
+ return [parts.join(" ")];
317
+ }
318
+ function emitChoiceControl(command, kind, settings) {
319
+ const markerId = helperId(command.id, "marker");
320
+ const labelId = helperId(command.id, "label");
321
+ const markerParts = [kind === "checkbox" ? "box" : "circle", markerId];
322
+ const labelParts = ["text", labelId];
323
+ const groupParts = ["bare", command.id];
324
+ const size = command.props.size ?? "18";
325
+ const labelFontSize = command.props["font-size"] ?? "14";
326
+ const labelHeight = String(Math.max(readNumber(size) ?? 18, Math.round((readNumber(labelFontSize) ?? 14) * 1.2)));
327
+ appendProp(markerParts, "label", command.props.checked === "true" ? "x" : "");
328
+ appendProp(markerParts, "width", size);
329
+ appendProp(markerParts, "height", size);
330
+ appendProp(markerParts, "fill", command.props.fill ?? settings.controlFill);
331
+ appendProp(markerParts, "stroke", command.props.stroke ?? settings.surfaceStroke);
332
+ appendProp(markerParts, "font-size", "11");
333
+ const label = command.props.label ?? "Option";
334
+ appendProp(labelParts, "label", label);
335
+ appendProp(labelParts, "width", command.props["text-width"] ?? compactChoiceLabelWidth(label, command.props));
336
+ appendProp(labelParts, "height", labelHeight);
337
+ appendProp(labelParts, "font-size", labelFontSize);
338
+ appendProp(labelParts, "text-align", "left");
339
+ appendProp(labelParts, "vertical-align", "middle");
340
+ appendProp(labelParts, "color", command.props.color ?? settings.mutedTextColor);
341
+ appendProp(groupParts, "layout", "row");
342
+ appendProp(groupParts, "align", "start");
343
+ appendProp(groupParts, "gap", command.props.gap ?? String(settings.choiceGap));
344
+ appendProp(groupParts, "items", `[${markerId},${labelId}]`);
345
+ copyPropsToArray(command.props, groupParts, ["x", "y"]);
346
+ return [markerParts.join(" "), labelParts.join(" "), groupParts.join(" ")];
347
+ }
348
+ function emitDivider(command, settings) {
349
+ const orientation = command.props.orientation ?? "horizontal";
350
+ if (orientation !== "horizontal" && orientation !== "vertical") {
351
+ throw new Error(`Unsupported wf.divider orientation "${orientation}" on line ${command.lineNumber}`);
352
+ }
353
+ const parts = ["line", command.id];
354
+ appendProp(parts, "label", command.props.label ?? "");
355
+ appendProp(parts, "width", command.props.width ?? command.props.length ?? "240");
356
+ appendProp(parts, "stroke", command.props.stroke ?? settings.placeholderStroke);
357
+ appendProp(parts, "opacity", command.props.opacity ?? "0.75");
358
+ if (orientation === "vertical") {
359
+ appendProp(parts, "deg", command.props.deg ?? "90");
360
+ }
361
+ copyPropsToArray(command.props, parts, NODE_PROP_KEYS);
362
+ return parts.join(" ");
363
+ }
364
+ function copyPropsToObject(source, target, keys) {
365
+ for (const key of keys) {
366
+ if (source[key] !== undefined)
367
+ target[key] = source[key];
368
+ }
369
+ }
370
+ function copyPropsToArray(source, target, keys) {
371
+ for (const key of keys) {
372
+ if (source[key] !== undefined)
373
+ appendProp(target, key, source[key]);
374
+ }
375
+ }
376
+ function appendKnownProps(parts, props, keys) {
377
+ for (const key of keys) {
378
+ if (props[key] !== undefined)
379
+ appendProp(parts, key, props[key]);
380
+ }
381
+ }
382
+ function appendProp(parts, key, value) {
383
+ if (value === undefined)
384
+ return;
385
+ parts.push(`${key}=${formatDslValue(value)}`);
386
+ }
387
+ function formatDslValue(value) {
388
+ if (/^-?\d+(?:\.\d+)?$/.test(value))
389
+ return value;
390
+ if (value === "true" || value === "false")
391
+ return value;
392
+ if (/^\[[^\]]*]$/.test(value))
393
+ return value;
394
+ if (/^[A-Za-z_][A-Za-z0-9_.-]*$/.test(value))
395
+ return value;
396
+ return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
397
+ }
398
+ function readNumber(value) {
399
+ if (value === undefined)
400
+ return undefined;
401
+ const parsed = Number(value);
402
+ return Number.isFinite(parsed) ? parsed : undefined;
403
+ }
404
+ function compactChoiceLabelWidth(label, props) {
405
+ const fontSize = readNumber(props["font-size"]) ?? 14;
406
+ const estimatedWidth = Math.round(label.length * fontSize * 0.58 + 12);
407
+ return String(Math.min(160, Math.max(48, estimatedWidth)));
408
+ }
409
+ function defaultScreenWidth(frame) {
410
+ switch (frame) {
411
+ case "browser":
412
+ return 960;
413
+ case "phone":
414
+ return 390;
415
+ case "plain":
416
+ return 360;
417
+ }
418
+ }
419
+ function defaultScreenHeight(frame) {
420
+ switch (frame) {
421
+ case "browser":
422
+ return 640;
423
+ case "phone":
424
+ return 844;
425
+ case "plain":
426
+ return 640;
427
+ }
428
+ }
429
+ function buildPlaceholderRatios(kind, lineCount) {
430
+ const seed = TEXT_PLACEHOLDER_RATIOS[kind];
431
+ return Array.from({ length: lineCount }, (_, index) => {
432
+ if (index < seed.length)
433
+ return seed[index];
434
+ return Math.max(0.38, 0.72 - index * 0.08);
435
+ });
436
+ }
437
+ function controlLabel(command, kind) {
438
+ if (kind === "button")
439
+ return command.props.label ?? "Button";
440
+ if (kind === "textarea") {
441
+ return command.props.placeholder ?? command.props.label ?? "Write something";
442
+ }
443
+ if (kind === "select") {
444
+ const base = command.props.placeholder ?? command.props.label ?? "Select";
445
+ return `${base} v`;
446
+ }
447
+ return command.props.placeholder ?? command.props.label ?? "Input";
448
+ }
449
+ function controlWidth(command, kind) {
450
+ if (command.props.width)
451
+ return command.props.width;
452
+ switch (kind) {
453
+ case "button":
454
+ return "120";
455
+ case "input":
456
+ return "240";
457
+ case "textarea":
458
+ return "280";
459
+ case "select":
460
+ return "220";
461
+ }
462
+ }
463
+ function controlHeight(command, kind) {
464
+ if (command.props.height)
465
+ return command.props.height;
466
+ return kind === "textarea" ? "96" : "44";
467
+ }
468
+ function normalizeTextKind(value, lineNumber) {
469
+ if (value === "heading" || value === "body" || value === "caption" || value === "label") {
470
+ return value;
471
+ }
472
+ throw new Error(`Unsupported wf.text kind "${value}" on line ${lineNumber}`);
473
+ }
474
+ function normalizeMediaKind(value, lineNumber) {
475
+ if (value === "image" || value === "avatar" || value === "icon") {
476
+ return value;
477
+ }
478
+ throw new Error(`Unsupported wf.media kind "${value}" on line ${lineNumber}`);
479
+ }
480
+ function normalizeControlKind(value, lineNumber) {
481
+ if (value === "button" ||
482
+ value === "input" ||
483
+ value === "textarea" ||
484
+ value === "select" ||
485
+ value === "checkbox" ||
486
+ value === "radio") {
487
+ return value;
488
+ }
489
+ throw new Error(`Unsupported wf.control kind "${value}" on line ${lineNumber}`);
490
+ }
491
+ function normalizeScreenFrame(value, lineNumber) {
492
+ if (value === "browser" || value === "phone" || value === "plain") {
493
+ return value;
494
+ }
495
+ throw new Error(`Unsupported wf.screen frame "${value}" on line ${lineNumber}`);
496
+ }
497
+ function helperId(baseId, suffix) {
498
+ return `__wf_${baseId.replace(/[^A-Za-z0-9_-]/g, "_")}_${suffix}`;
499
+ }
500
+
501
+ export { compileWireframe, wireframe };
502
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@sketchmark/plugin-wireframe",
3
+ "version": "0.1.0",
4
+ "description": "Wireframe primitives for Sketchmark. Compiles lightweight wf.* commands into standard Sketchmark nodes and groups.",
5
+ "keywords": [
6
+ "sketchmark",
7
+ "plugin",
8
+ "wireframe",
9
+ "ui",
10
+ "mockup",
11
+ "diagram"
12
+ ],
13
+ "author": "sketchmark contributors",
14
+ "license": "MIT",
15
+ "type": "module",
16
+ "main": "./dist/index.cjs",
17
+ "module": "./dist/index.js",
18
+ "types": "./dist/index.d.ts",
19
+ "exports": {
20
+ ".": {
21
+ "import": "./dist/index.js",
22
+ "require": "./dist/index.cjs",
23
+ "types": "./dist/index.d.ts"
24
+ }
25
+ },
26
+ "files": [
27
+ "dist",
28
+ "README.md",
29
+ "LICENSE"
30
+ ],
31
+ "scripts": {
32
+ "build": "rollup -c rollup.config.js",
33
+ "typecheck": "tsc --noEmit -p tsconfig.json"
34
+ },
35
+ "peerDependencies": {
36
+ "sketchmark": "^1.1.6"
37
+ },
38
+ "sideEffects": false,
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/anmism/sketchmark"
42
+ },
43
+ "bugs": {
44
+ "url": "https://github.com/anmism/sketchmark/issues"
45
+ },
46
+ "homepage": "https://github.com/anmism/sketchmark#readme"
47
+ }