@pinepaper.studio/mcp-server 1.6.10 → 1.6.12

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.
Files changed (63) hide show
  1. package/README.md +94 -1
  2. package/dist/design/design-systems.d.ts +12 -3
  3. package/dist/design/design-systems.d.ts.map +1 -1
  4. package/dist/design/design-systems.js +12 -11
  5. package/dist/design/design-systems.js.map +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +6 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/tools/compact-descriptions.js +1 -1
  10. package/dist/tools/compact-descriptions.js.map +1 -1
  11. package/dist/tools/definitions.d.ts +1 -1
  12. package/dist/tools/definitions.d.ts.map +1 -1
  13. package/dist/tools/definitions.js +189 -55
  14. package/dist/tools/definitions.js.map +1 -1
  15. package/dist/tools/engine-methods.d.ts.map +1 -1
  16. package/dist/tools/engine-methods.js +7 -0
  17. package/dist/tools/engine-methods.js.map +1 -1
  18. package/dist/tools/engine-surface.d.ts +1 -1
  19. package/dist/tools/engine-surface.d.ts.map +1 -1
  20. package/dist/tools/engine-surface.js +25 -6
  21. package/dist/tools/engine-surface.js.map +1 -1
  22. package/dist/tools/handlers.js +9 -0
  23. package/dist/tools/handlers.js.map +1 -1
  24. package/dist/tools/minimal-descriptions.js +1 -1
  25. package/dist/tools/minimal-descriptions.js.map +1 -1
  26. package/dist/tools/shape-params.d.ts +36 -0
  27. package/dist/tools/shape-params.d.ts.map +1 -0
  28. package/dist/tools/shape-params.js +159 -0
  29. package/dist/tools/shape-params.js.map +1 -0
  30. package/dist/tools/stick-vocabulary.d.ts +26 -0
  31. package/dist/tools/stick-vocabulary.d.ts.map +1 -0
  32. package/dist/tools/stick-vocabulary.js +102 -0
  33. package/dist/tools/stick-vocabulary.js.map +1 -0
  34. package/dist/types/code-generator.d.ts +15 -0
  35. package/dist/types/code-generator.d.ts.map +1 -1
  36. package/dist/types/code-generator.js +556 -76
  37. package/dist/types/code-generator.js.map +1 -1
  38. package/dist/types/schemas.d.ts +97 -26
  39. package/dist/types/schemas.d.ts.map +1 -1
  40. package/dist/types/schemas.js +18 -11
  41. package/dist/types/schemas.js.map +1 -1
  42. package/dist/vendor/design/design-style.d.ts +3 -1
  43. package/dist/vendor/design/design-style.d.ts.map +1 -1
  44. package/dist/vendor/design/design-style.js +37 -2
  45. package/dist/vendor/design/design-style.js.map +1 -1
  46. package/dist/vendor/design/design-systems-dtcg.d.ts +9 -0
  47. package/dist/vendor/design/design-systems-dtcg.d.ts.map +1 -1
  48. package/dist/vendor/design/design-systems-dtcg.js +53 -1
  49. package/dist/vendor/design/design-systems-dtcg.js.map +1 -1
  50. package/dist/vendor/design/device-mockup-generator.d.ts +83 -0
  51. package/dist/vendor/design/device-mockup-generator.d.ts.map +1 -0
  52. package/dist/vendor/design/device-mockup-generator.js +634 -0
  53. package/dist/vendor/design/device-mockup-generator.js.map +1 -0
  54. package/dist/vendor/design/recursive-subdivision-generator.d.ts +79 -0
  55. package/dist/vendor/design/recursive-subdivision-generator.d.ts.map +1 -0
  56. package/dist/vendor/design/recursive-subdivision-generator.js +319 -0
  57. package/dist/vendor/design/recursive-subdivision-generator.js.map +1 -0
  58. package/dist/vendor/design/textile-weave-generator.d.ts +140 -0
  59. package/dist/vendor/design/textile-weave-generator.d.ts.map +1 -0
  60. package/dist/vendor/design/textile-weave-generator.js +568 -0
  61. package/dist/vendor/design/textile-weave-generator.js.map +1 -0
  62. package/manifest.json +1 -1
  63. package/package.json +8 -2
@@ -0,0 +1,634 @@
1
+ /* GENERATED — DO NOT EDIT.
2
+ *
3
+ * Source: mcp-cloud/src/services/device-mockup-generator.ts
4
+ * sha256: 5f0fd41709f1f4f34bec9b8f3d497e07b0e8aee8791e50db411c5da42e1c7b6a
5
+ * Generator: scripts/sync-design-systems.mjs
6
+ *
7
+ * Edit the TypeScript upstream and re-run the generator. A hand edit here is
8
+ * the second copy of the same design vocabulary that the generator exists to
9
+ * prevent, and the provenance test will fail on it.
10
+ */
11
+ /**
12
+ * PROCEDURAL DEVICE MOCKUP & UI SIMULATION ENGINE
13
+ *
14
+ * Generates vector browser windows, laptop frames, simulated typing inputs,
15
+ * animated mouse cursors, and UI layout mockups directly in Paper.js.
16
+ */
17
+ /**
18
+ * EVERYTHING BELOW IS PASTED INTO GENERATED CODE, so every value is cleaned where it enters.
19
+ * Review of 2026-09-21: a product URL containing a quote and an expression ran that expression, and
20
+ * a stray backslash made the whole generated program throw. Numbers must be finite, colours must be
21
+ * a real colour, and text travels as a JSON string literal (with < and line separators escaped).
22
+ */
23
+ const num = (v, fallback, lo = -1e5, hi = 1e5) => { const n = Number(v); return Number.isFinite(n) ? Math.max(lo, Math.min(hi, n)) : fallback; };
24
+ const COLOUR = /^(#[0-9a-f]{3,8}|rgba?\(\s*[\d.]+%?\s*,\s*[\d.]+%?\s*,\s*[\d.]+%?\s*(,\s*[\d.]+\s*)?\))$/i;
25
+ const colour = (v, fallback) => (typeof v === "string" && COLOUR.test(v.trim()) ? v.trim() : fallback);
26
+ /** A JS string literal that cannot end the string, the statement or a script element. */
27
+ export const lit = (v) => JSON.stringify(String(v ?? "").slice(0, 500)).replace(/</g, "\\u003c").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
28
+ /**
29
+ * Generates Paper.js code for a modern browser window mockup.
30
+ */
31
+ export function generateBrowserWindowCode(opts) {
32
+ const w = num(opts.width, 1280, 1, 8000);
33
+ const h = num(opts.height, 720, 1, 8000);
34
+ const cx = num(opts.x, w / 2);
35
+ const cy = num(opts.y, h / 2);
36
+ const isDark = (opts.theme ?? "dark") === "dark";
37
+ const radius = num(opts.cornerRadius, 12, 0, 200);
38
+ const headerHeight = Math.max(36, Math.round(h * 0.07));
39
+ const bgWindow = isDark ? "#161b22" : "#ffffff";
40
+ const bgHeader = isDark ? "#0d1117" : "#f1f5f9";
41
+ const bgUrlBar = isDark ? "#21262d" : "#e2e8f0";
42
+ const textUrl = isDark ? "#8b949e" : "#64748b";
43
+ const borderColor = isDark ? "#30363d" : "#cbd5e1";
44
+ const urlDisplay = opts.urlBarText || "https://pinepaper.studio/editor";
45
+ const dotR = 5;
46
+ const dotStartX = Math.round(cx - w / 2 + 18);
47
+ const dotY = Math.round(cy - h / 2 + headerHeight / 2);
48
+ const pillW = Math.min(Math.round(w * 0.55), 480);
49
+ const pillH = Math.round(headerHeight * 0.65);
50
+ const pillX = Math.round(cx - pillW / 2);
51
+ const pillY = Math.round(cy - h / 2 + (headerHeight - pillH) / 2);
52
+ return `
53
+ // Browser Window Mockup Frame
54
+ var frameGroup = new paper.Group();
55
+
56
+ // Outer ambient shadow
57
+ ${opts.dropShadow !== false ? `
58
+ var shadow = new paper.Path.Rectangle({
59
+ point: [${cx - w / 2 + 6}, ${cy - h / 2 + 10}],
60
+ size: [${w}, ${h}],
61
+ radius: ${radius},
62
+ fillColor: '${isDark ? "rgba(0,0,0,0.6)" : "rgba(0,0,0,0.15)"}'
63
+ });
64
+ frameGroup.addChild(shadow);
65
+ ` : ""}
66
+
67
+ // Window Main Body
68
+ var windowBody = new paper.Path.Rectangle({
69
+ point: [${cx - w / 2}, ${cy - h / 2}],
70
+ size: [${w}, ${h}],
71
+ radius: ${radius},
72
+ fillColor: '${bgWindow}',
73
+ strokeColor: '${borderColor}',
74
+ strokeWidth: 1.5
75
+ });
76
+ frameGroup.addChild(windowBody);
77
+
78
+ // Header Titlebar
79
+ var header = new paper.Path.Rectangle({
80
+ point: [${cx - w / 2}, ${cy - h / 2}],
81
+ size: [${w}, ${headerHeight}],
82
+ radius: ${radius},
83
+ fillColor: '${bgHeader}'
84
+ });
85
+ // Clip header bottom corners to keep top rounded
86
+ var headerCut = new paper.Path.Rectangle({
87
+ point: [${cx - w / 2}, ${cy - h / 2 + headerHeight - radius}],
88
+ size: [${w}, ${radius}],
89
+ fillColor: '${bgHeader}'
90
+ });
91
+ var fullHeader = header.unite(headerCut);
92
+ fullHeader.strokeColor = '${borderColor}';
93
+ fullHeader.strokeWidth = 1;
94
+ frameGroup.addChild(fullHeader);
95
+
96
+ // Traffic Light Window Controls
97
+ var closeDot = new paper.Path.Circle({ center: [${dotStartX}, ${dotY}], radius: ${dotR}, fillColor: '#ff5f56' });
98
+ var minDot = new paper.Path.Circle({ center: [${dotStartX + 14}, ${dotY}], radius: ${dotR}, fillColor: '#ffbd2e' });
99
+ var maxDot = new paper.Path.Circle({ center: [${dotStartX + 28}, ${dotY}], radius: ${dotR}, fillColor: '#27c93f' });
100
+
101
+ frameGroup.addChild(closeDot);
102
+ frameGroup.addChild(minDot);
103
+ frameGroup.addChild(maxDot);
104
+
105
+ // Address Bar Pill
106
+ var urlPill = new paper.Path.Rectangle({
107
+ point: [${pillX}, ${pillY}],
108
+ size: [${pillW}, ${pillH}],
109
+ radius: ${pillH / 2},
110
+ fillColor: '${bgUrlBar}',
111
+ strokeColor: '${borderColor}',
112
+ strokeWidth: 1
113
+ });
114
+ frameGroup.addChild(urlPill);
115
+
116
+ // SSL Lock Icon
117
+ var lockIcon = new paper.PointText({
118
+ point: [${pillX + 12}, ${pillY + pillH / 2 + 4}],
119
+ content: '🔒',
120
+ fontSize: 10,
121
+ fillColor: '${textUrl}'
122
+ });
123
+ frameGroup.addChild(lockIcon);
124
+
125
+ // Address Bar Text
126
+ var urlText = new paper.PointText({
127
+ point: [${pillX + 28}, ${pillY + pillH / 2 + 4}],
128
+ content: ${lit(urlDisplay)},
129
+ fontFamily: 'Inter, system-ui, sans-serif',
130
+ fontSize: 12,
131
+ fontWeight: 'normal',
132
+ fillColor: '${textUrl}'
133
+ });
134
+ frameGroup.addChild(urlText);
135
+ `;
136
+ }
137
+ /**
138
+ * Generates Paper.js code for a simulated interactive prompt input box.
139
+ */
140
+ export function generateSimulatedPromptInputCode(opts) {
141
+ const x = num(opts.containerX, 0);
142
+ const y = num(opts.containerY, 0);
143
+ const w = num(opts.containerWidth, 600, 1, 8000);
144
+ const h = num(opts.containerHeight, 60, 1, 2000);
145
+ const textColor = colour(opts.textColor, "#f0f6fc");
146
+ // "#rrggbb" only: the code below appends a two-digit alpha ("${accent}22").
147
+ const accent = /^#[0-9a-f]{6}$/i.test(String(opts.accentColor ?? "").trim()) ? String(opts.accentColor).trim() : "#2bb3c0";
148
+ const text = opts.promptText || "A retro robot walking in cyberpunk rain";
149
+ const btnText = opts.buttonText || "Generate";
150
+ // Submit / Generate Button Pill
151
+ const btnH = Math.round(h * 0.72);
152
+ const btnFontSize = Math.max(12, Math.round(btnH * 0.38));
153
+ return `
154
+ // Simulated Interactive Prompt Bar
155
+ var promptGroup = new paper.Group();
156
+
157
+ // Outer glowing aura
158
+ var glow = new paper.Path.Rectangle({
159
+ point: [${x - 2}, ${y - 2}],
160
+ size: [${w + 4}, ${h + 4}],
161
+ radius: ${Math.round(h * 0.35) + 2},
162
+ fillColor: '${accent}22',
163
+ strokeColor: '${accent}55',
164
+ strokeWidth: 1.5
165
+ });
166
+ promptGroup.addChild(glow);
167
+
168
+ // Input background container
169
+ var inputBg = new paper.Path.Rectangle({
170
+ point: [${x}, ${y}],
171
+ size: [${w}, ${h}],
172
+ radius: ${Math.round(h * 0.35)},
173
+ fillColor: '#090d13',
174
+ strokeColor: '${accent}',
175
+ strokeWidth: 1.5
176
+ });
177
+ promptGroup.addChild(inputBg);
178
+
179
+ // Prompt Prefix Icon
180
+ var sparkleIcon = new paper.PointText({
181
+ point: [${x + 18}, ${y + h / 2 + 5}],
182
+ content: '✦',
183
+ fontFamily: 'system-ui',
184
+ fontSize: ${Math.max(14, Math.round(h * 0.32))},
185
+ fillColor: '${accent}'
186
+ });
187
+ promptGroup.addChild(sparkleIcon);
188
+
189
+ // Prompt Text Content
190
+ var promptContent = new paper.PointText({
191
+ point: [${x + 44}, ${y + h / 2 + 5}],
192
+ content: ${lit(text)},
193
+ fontFamily: 'Inter, -apple-system, sans-serif',
194
+ fontSize: ${Math.max(13, Math.round(h * 0.28))},
195
+ fontWeight: '500',
196
+ fillColor: '${textColor}'
197
+ });
198
+ promptGroup.addChild(promptContent);
199
+
200
+ // Blinking Caret Cursor
201
+ ${opts.showCursor !== false ? `
202
+ var textBounds = promptContent.bounds;
203
+ var caret = new paper.Path.Line({
204
+ from: [textBounds.right + 3, ${y + h * 0.25}],
205
+ to: [textBounds.right + 3, ${y + h * 0.75}],
206
+ strokeColor: '${accent}',
207
+ strokeWidth: 2
208
+ });
209
+ promptGroup.addChild(caret);
210
+ ` : ""}
211
+
212
+ // Submit / Generate Button Pill
213
+ var btnW = ${Math.max(90, Math.round(w * 0.18))};
214
+ var btnH = ${btnH};
215
+ var btnX = ${x + w} - btnW - ${Math.round(h * 0.14)};
216
+ var btnY = ${y} + (${h} - btnH) / 2;
217
+
218
+ var submitBtn = new paper.Path.Rectangle({
219
+ point: [btnX, btnY],
220
+ size: [btnW, btnH],
221
+ radius: btnH / 2,
222
+ fillColor: '${accent}'
223
+ });
224
+ promptGroup.addChild(submitBtn);
225
+
226
+ var btnLabel = new paper.PointText({
227
+ point: [btnX + btnW / 2, btnY + btnH / 2 + 4],
228
+ content: ${lit(btnText)},
229
+ fontFamily: 'Inter, system-ui, sans-serif',
230
+ fontSize: ${btnFontSize},
231
+ fontWeight: 'bold',
232
+ fillColor: '#090d13',
233
+ justification: 'center'
234
+ });
235
+ promptGroup.addChild(btnLabel);
236
+ `;
237
+ }
238
+ /**
239
+ * Generates Paper.js code for an animated cursor with optional click pulse.
240
+ */
241
+ export function generateSimulatedCursorCode(opts) {
242
+ const x = num(opts.x, 0);
243
+ const y = num(opts.y, 0);
244
+ const color = colour(opts.cursorColor, "#ffffff");
245
+ const s = num(opts.scale, 1.0, 0.1, 10);
246
+ return `
247
+ // Animated Mouse Cursor
248
+ var cursorGroup = new paper.Group();
249
+
250
+ ${opts.clicking ? `
251
+ // Click pulse ring
252
+ var clickRing = new paper.Path.Circle({
253
+ center: [${x}, ${y}],
254
+ radius: ${16 * s},
255
+ strokeColor: '${color}88',
256
+ strokeWidth: 2,
257
+ fillColor: '${color}22'
258
+ });
259
+ cursorGroup.addChild(clickRing);
260
+ ` : ""}
261
+
262
+ // Pointer Arrow SVG Path
263
+ var arrow = new paper.Path({
264
+ segments: [
265
+ [${x}, ${y}],
266
+ [${x}, ${y + 17 * s}],
267
+ [${x + 4.5 * s}, ${y + 12.5 * s}],
268
+ [${x + 8.5 * s}, ${y + 18.5 * s}],
269
+ [${x + 11.5 * s}, ${y + 16.5 * s}],
270
+ [${x + 7.5 * s}, ${y + 10.5 * s}],
271
+ [${x + 13.5 * s}, ${y + 10.5 * s}]
272
+ ],
273
+ closed: true,
274
+ fillColor: '${color}',
275
+ strokeColor: '#000000',
276
+ strokeWidth: 1.5
277
+ });
278
+ cursorGroup.addChild(arrow);
279
+ `;
280
+ }
281
+ /**
282
+ * Complete procedural mockup scene generator.
283
+ */
284
+ export function generateMockupSceneCode(options) {
285
+ return `(function() {
286
+ if (typeof paper === 'undefined') return { error: 'Paper.js not loaded' };
287
+
288
+ // Background Plate
289
+ var bg = new paper.Path.Rectangle({
290
+ point: [0, 0],
291
+ size: [${num(options.canvasWidth, 1280, 1, 8000)}, ${num(options.canvasHeight, 720, 1, 8000)}],
292
+ fillColor: '${colour(options.browser.backgroundColor, "#0a0e14")}'
293
+ });
294
+
295
+ ${generateBrowserWindowCode({
296
+ ...options.browser,
297
+ width: options.browser.width,
298
+ height: options.browser.height,
299
+ })}
300
+
301
+ ${options.prompt ? generateSimulatedPromptInputCode(options.prompt) : ""}
302
+
303
+ ${options.cursor ? generateSimulatedCursorCode(options.cursor) : ""}
304
+
305
+ return { success: true };
306
+ })();`;
307
+ }
308
+ /**
309
+ * Compiles a procedural device mockup directly into standard native PinePaperOps.
310
+ * This guarantees offline vector SVG projection, SMIL animation, and Resvg rasterization.
311
+ */
312
+ export function generateDeviceMockupOps(options) {
313
+ const ops = [];
314
+ const opts = options.browser;
315
+ const w = num(opts.width, 1280, 1, 8000);
316
+ const h = num(opts.height, 720, 1, 8000);
317
+ const cx = num(opts.x, w / 2);
318
+ const cy = num(opts.y, h / 2);
319
+ const isDark = (opts.theme ?? "dark") === "dark";
320
+ const radius = num(opts.cornerRadius, 12, 0, 200);
321
+ const bornAt = options.bornAt ?? 0;
322
+ const ttl = options.ttl ?? 10;
323
+ const fadeIn = options.fadeIn ?? 0.2;
324
+ const fadeOut = options.fadeOut ?? 0.2;
325
+ const headerHeight = Math.max(36, Math.round(h * 0.07));
326
+ const bgWindow = isDark ? "#161b22" : "#ffffff";
327
+ const bgHeader = isDark ? "#0d1117" : "#f1f5f9";
328
+ const bgUrlBar = isDark ? "#21262d" : "#e2e8f0";
329
+ const textUrl = isDark ? "#8b949e" : "#64748b";
330
+ const borderColor = isDark ? "#30363d" : "#cbd5e1";
331
+ const urlDisplay = opts.urlBarText || "https://pinepaper.studio/editor";
332
+ const dotR = 5;
333
+ const dotStartX = Math.round(cx - w / 2 + 18);
334
+ const dotY = Math.round(cy - h / 2 + headerHeight / 2);
335
+ const pillW = Math.min(Math.round(w * 0.55), 480);
336
+ const pillH = Math.round(headerHeight * 0.65);
337
+ const pillY = Math.round(cy - h / 2 + (headerHeight - pillH) / 2);
338
+ const prefix = `mockup_${Math.round(bornAt * 10)}`;
339
+ // 1. Ambient Drop Shadow
340
+ if (opts.dropShadow !== false) {
341
+ ops.push({
342
+ tool: "pinepaper_create_item",
343
+ args: {
344
+ id: `${prefix}_shadow`,
345
+ type: "rectangle",
346
+ x: cx + 6,
347
+ y: cy + 10,
348
+ width: w,
349
+ height: h,
350
+ cornerRadius: radius,
351
+ fill: isDark ? "rgba(0,0,0,0.5)" : "rgba(0,0,0,0.15)",
352
+ bornAt,
353
+ ttl,
354
+ fadeIn,
355
+ fadeOut,
356
+ },
357
+ });
358
+ }
359
+ // 2. Window Main Body
360
+ ops.push({
361
+ tool: "pinepaper_create_item",
362
+ args: {
363
+ id: `${prefix}_window`,
364
+ type: "rectangle",
365
+ x: cx,
366
+ y: cy,
367
+ width: w,
368
+ height: h,
369
+ cornerRadius: radius,
370
+ fill: bgWindow,
371
+ stroke: borderColor,
372
+ strokeWidth: 1.5,
373
+ bornAt,
374
+ ttl,
375
+ fadeIn,
376
+ fadeOut,
377
+ },
378
+ });
379
+ // 3. Header Titlebar
380
+ ops.push({
381
+ tool: "pinepaper_create_item",
382
+ args: {
383
+ id: `${prefix}_header`,
384
+ type: "rectangle",
385
+ x: cx,
386
+ y: Math.round(cy - h / 2 + headerHeight / 2),
387
+ width: w,
388
+ height: headerHeight,
389
+ cornerRadius: radius,
390
+ fill: bgHeader,
391
+ stroke: borderColor,
392
+ strokeWidth: 1,
393
+ bornAt,
394
+ ttl,
395
+ fadeIn,
396
+ fadeOut,
397
+ },
398
+ });
399
+ // 4. Traffic Lights
400
+ ops.push({
401
+ tool: "pinepaper_create_item",
402
+ args: {
403
+ id: `${prefix}_dot_close`,
404
+ type: "circle",
405
+ x: dotStartX,
406
+ y: dotY,
407
+ radius: dotR,
408
+ fill: "#ff5f56",
409
+ bornAt,
410
+ ttl,
411
+ fadeIn,
412
+ fadeOut,
413
+ },
414
+ }, {
415
+ tool: "pinepaper_create_item",
416
+ args: {
417
+ id: `${prefix}_dot_min`,
418
+ type: "circle",
419
+ x: dotStartX + 14,
420
+ y: dotY,
421
+ radius: dotR,
422
+ fill: "#ffbd2e",
423
+ bornAt,
424
+ ttl,
425
+ fadeIn,
426
+ fadeOut,
427
+ },
428
+ }, {
429
+ tool: "pinepaper_create_item",
430
+ args: {
431
+ id: `${prefix}_dot_max`,
432
+ type: "circle",
433
+ x: dotStartX + 28,
434
+ y: dotY,
435
+ radius: dotR,
436
+ fill: "#27c93f",
437
+ bornAt,
438
+ ttl,
439
+ fadeIn,
440
+ fadeOut,
441
+ },
442
+ });
443
+ // 5. Address Bar Pill
444
+ ops.push({
445
+ tool: "pinepaper_create_item",
446
+ args: {
447
+ id: `${prefix}_urlpill`,
448
+ type: "rectangle",
449
+ x: cx,
450
+ y: Math.round(pillY + pillH / 2),
451
+ width: pillW,
452
+ height: pillH,
453
+ cornerRadius: Math.round(pillH / 2),
454
+ fill: bgUrlBar,
455
+ stroke: borderColor,
456
+ strokeWidth: 1,
457
+ bornAt,
458
+ ttl,
459
+ fadeIn,
460
+ fadeOut,
461
+ },
462
+ });
463
+ // 6. Address Bar Text
464
+ ops.push({
465
+ tool: "pinepaper_create_item",
466
+ args: {
467
+ id: `${prefix}_urltext`,
468
+ type: "text",
469
+ text: `🔒 ${urlDisplay}`,
470
+ x: cx,
471
+ y: Math.round(pillY + pillH / 2),
472
+ fontSize: 12,
473
+ fontFamily: "Inter, system-ui, sans-serif",
474
+ fill: textUrl,
475
+ textAlign: "center",
476
+ bornAt,
477
+ ttl,
478
+ fadeIn,
479
+ fadeOut,
480
+ },
481
+ });
482
+ // 7. Prompt Bar Simulation (if present)
483
+ if (options.prompt) {
484
+ const p = options.prompt;
485
+ const px = p.containerX;
486
+ const py = p.containerY;
487
+ const pw = p.containerWidth;
488
+ const ph = p.containerHeight;
489
+ const accent = p.accentColor || "#2bb3c0";
490
+ const textColor = p.textColor || "#f0f6fc";
491
+ const btnText = p.buttonText || "Generate";
492
+ const btnW = Math.max(90, Math.round(pw * 0.18));
493
+ const btnH = Math.round(ph * 0.72);
494
+ const btnX = px + pw - btnW - Math.round(ph * 0.14);
495
+ const btnY = py + (ph - btnH) / 2;
496
+ // Glowing Aura
497
+ ops.push({
498
+ tool: "pinepaper_create_item",
499
+ args: {
500
+ id: `${prefix}_prompt_glow`,
501
+ type: "rectangle",
502
+ x: px + pw / 2,
503
+ y: py + ph / 2,
504
+ width: pw + 6,
505
+ height: ph + 6,
506
+ cornerRadius: Math.round(ph * 0.35) + 3,
507
+ fill: `${accent}18`,
508
+ stroke: `${accent}44`,
509
+ strokeWidth: 1.5,
510
+ bornAt,
511
+ ttl,
512
+ fadeIn,
513
+ fadeOut,
514
+ },
515
+ });
516
+ // Input Background Container
517
+ ops.push({
518
+ tool: "pinepaper_create_item",
519
+ args: {
520
+ id: `${prefix}_prompt_bg`,
521
+ type: "rectangle",
522
+ x: px + pw / 2,
523
+ y: py + ph / 2,
524
+ width: pw,
525
+ height: ph,
526
+ cornerRadius: Math.round(ph * 0.35),
527
+ fill: "#090d13",
528
+ stroke: accent,
529
+ strokeWidth: 1.5,
530
+ bornAt,
531
+ ttl,
532
+ fadeIn,
533
+ fadeOut,
534
+ },
535
+ });
536
+ // Prompt Text
537
+ ops.push({
538
+ tool: "pinepaper_create_item",
539
+ args: {
540
+ id: `${prefix}_prompt_text`,
541
+ type: "text",
542
+ text: `✦ ${p.promptText}`,
543
+ x: Math.round(px + pw * 0.38),
544
+ y: Math.round(py + ph / 2),
545
+ fontSize: Math.max(13, Math.round(ph * 0.28)),
546
+ fontFamily: "Inter, system-ui, sans-serif",
547
+ fill: textColor,
548
+ bornAt,
549
+ ttl,
550
+ fadeIn,
551
+ fadeOut,
552
+ },
553
+ });
554
+ // Button Pill
555
+ ops.push({
556
+ tool: "pinepaper_create_item",
557
+ args: {
558
+ id: `${prefix}_btn_pill`,
559
+ type: "rectangle",
560
+ x: Math.round(btnX + btnW / 2),
561
+ y: Math.round(btnY + btnH / 2),
562
+ width: btnW,
563
+ height: btnH,
564
+ cornerRadius: Math.round(btnH / 2),
565
+ fill: accent,
566
+ bornAt,
567
+ ttl,
568
+ fadeIn,
569
+ fadeOut,
570
+ },
571
+ });
572
+ // Button Label
573
+ ops.push({
574
+ tool: "pinepaper_create_item",
575
+ args: {
576
+ id: `${prefix}_btn_label`,
577
+ type: "text",
578
+ text: btnText,
579
+ x: Math.round(btnX + btnW / 2),
580
+ y: Math.round(btnY + btnH / 2),
581
+ fontSize: Math.max(12, Math.round(btnH * 0.38)),
582
+ fontFamily: "Inter, system-ui, sans-serif",
583
+ fontWeight: "bold",
584
+ fill: "#090d13",
585
+ bornAt,
586
+ ttl,
587
+ fadeIn,
588
+ fadeOut,
589
+ },
590
+ });
591
+ }
592
+ // 8. Animated Mouse Cursor (if present)
593
+ if (options.cursor) {
594
+ const c = options.cursor;
595
+ const s = c.scale ?? 1.0;
596
+ const curColor = c.cursorColor || "#ffffff";
597
+ if (c.clicking) {
598
+ ops.push({
599
+ tool: "pinepaper_create_item",
600
+ args: {
601
+ id: `${prefix}_cursor_ring`,
602
+ type: "circle",
603
+ x: c.x,
604
+ y: c.y,
605
+ radius: Math.round(16 * s),
606
+ fill: "rgba(255,255,255,0.15)",
607
+ stroke: "rgba(255,255,255,0.6)",
608
+ strokeWidth: 1.5,
609
+ bornAt,
610
+ ttl,
611
+ fadeIn,
612
+ fadeOut,
613
+ },
614
+ });
615
+ }
616
+ ops.push({
617
+ tool: "pinepaper_create_item",
618
+ args: {
619
+ id: `${prefix}_cursor_arrow`,
620
+ type: "path",
621
+ path: `M ${c.x} ${c.y} L ${c.x} ${c.y + 17 * s} L ${c.x + 4.5 * s} ${c.y + 12.5 * s} L ${c.x + 8.5 * s} ${c.y + 18.5 * s} L ${c.x + 11.5 * s} ${c.y + 16.5 * s} L ${c.x + 7.5 * s} ${c.y + 10.5 * s} L ${c.x + 13.5 * s} ${c.y + 10.5 * s} Z`,
622
+ fill: curColor,
623
+ stroke: "#000000",
624
+ strokeWidth: 1.5,
625
+ bornAt,
626
+ ttl,
627
+ fadeIn,
628
+ fadeOut,
629
+ },
630
+ });
631
+ }
632
+ return ops;
633
+ }
634
+ //# sourceMappingURL=device-mockup-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-mockup-generator.js","sourceRoot":"","sources":["../../../src/vendor/design/device-mockup-generator.ts"],"names":[],"mappings":"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"}