@pinepaper.studio/mcp-server 1.6.6 → 1.6.8
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/README.de.md +24 -1
- package/README.es.md +24 -1
- package/README.fr.md +24 -1
- package/README.hi.md +21 -1
- package/README.ja.md +22 -1
- package/README.ko.md +22 -1
- package/README.md +329 -14
- package/README.pt-BR.md +24 -1
- package/README.zh-CN.md +20 -1
- package/assets/edit-whenever.svg +75 -0
- package/dist/agent/export-manager.d.ts.map +1 -1
- package/dist/agent/export-manager.js +2 -2
- package/dist/agent/export-manager.js.map +1 -1
- package/dist/agent/session-manager.d.ts.map +1 -1
- package/dist/agent/session-manager.js.map +1 -1
- package/dist/assets/repositories/fontawesome.d.ts.map +1 -1
- package/dist/assets/repositories/fontawesome.js.map +1 -1
- package/dist/assets/repositories/openclipart.d.ts.map +1 -1
- package/dist/character/data/concepts.json +1 -0
- package/dist/character/data/depictions.json +1 -0
- package/dist/character/data/styles.json +1 -0
- package/dist/character/duration-scale.d.ts +13 -0
- package/dist/character/duration-scale.d.ts.map +1 -0
- package/dist/character/duration-scale.js +13 -0
- package/dist/character/duration-scale.js.map +1 -0
- package/dist/character/path-bbox.d.ts +82 -0
- package/dist/character/path-bbox.d.ts.map +1 -0
- package/dist/character/path-bbox.js +496 -0
- package/dist/character/path-bbox.js.map +1 -0
- package/dist/character/perform.d.ts +149 -0
- package/dist/character/perform.d.ts.map +1 -0
- package/dist/character/perform.js +626 -0
- package/dist/character/perform.js.map +1 -0
- package/dist/character/resolve.d.ts +51 -0
- package/dist/character/resolve.d.ts.map +1 -0
- package/dist/character/resolve.js +239 -0
- package/dist/character/resolve.js.map +1 -0
- package/dist/design/design-systems.d.ts +126 -0
- package/dist/design/design-systems.d.ts.map +1 -0
- package/dist/design/design-systems.js +240 -0
- package/dist/design/design-systems.js.map +1 -0
- package/dist/execution/canvas-state.d.ts +7 -0
- package/dist/execution/canvas-state.d.ts.map +1 -1
- package/dist/execution/canvas-state.js +20 -8
- package/dist/execution/canvas-state.js.map +1 -1
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -5
- package/dist/index.js.map +1 -1
- package/dist/ontology/design-graph.d.ts +9 -0
- package/dist/ontology/design-graph.d.ts.map +1 -1
- package/dist/ontology/design-graph.js +98 -4
- package/dist/ontology/design-graph.js.map +1 -1
- package/dist/ontology/types.d.ts +42 -0
- package/dist/ontology/types.d.ts.map +1 -1
- package/dist/ontology/vocabulary.d.ts.map +1 -1
- package/dist/ontology/vocabulary.js +139 -0
- package/dist/ontology/vocabulary.js.map +1 -1
- package/dist/taxonomy/classifier.js +1 -1
- package/dist/taxonomy/classifier.js.map +1 -1
- package/dist/taxonomy/error-recovery.d.ts.map +1 -1
- package/dist/taxonomy/matcher.d.ts.map +1 -1
- package/dist/taxonomy/matcher.js.map +1 -1
- package/dist/tools/compact-descriptions.d.ts.map +1 -1
- package/dist/tools/compact-descriptions.js +25 -0
- package/dist/tools/compact-descriptions.js.map +1 -1
- package/dist/tools/definitions.d.ts +1 -1
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +1236 -45
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/engine-methods.d.ts +18 -0
- package/dist/tools/engine-methods.d.ts.map +1 -0
- package/dist/tools/engine-methods.js +239 -0
- package/dist/tools/engine-methods.js.map +1 -0
- package/dist/tools/handlers/character.d.ts +121 -0
- package/dist/tools/handlers/character.d.ts.map +1 -0
- package/dist/tools/handlers/character.js +315 -0
- package/dist/tools/handlers/character.js.map +1 -0
- package/dist/tools/handlers.d.ts +2 -0
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +386 -22
- package/dist/tools/handlers.js.map +1 -1
- package/dist/tools/minimal-descriptions.d.ts.map +1 -1
- package/dist/tools/minimal-descriptions.js +24 -4
- package/dist/tools/minimal-descriptions.js.map +1 -1
- package/dist/tools/toolkits.d.ts.map +1 -1
- package/dist/tools/toolkits.js +21 -0
- package/dist/tools/toolkits.js.map +1 -1
- package/dist/types/code-generator.d.ts +141 -2
- package/dist/types/code-generator.d.ts.map +1 -1
- package/dist/types/code-generator.js +2246 -78
- package/dist/types/code-generator.js.map +1 -1
- package/dist/types/schemas.d.ts +9295 -603
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +1134 -61
- package/dist/types/schemas.js.map +1 -1
- package/dist/vendor/design/art-deco-generator.d.ts +52 -0
- package/dist/vendor/design/art-deco-generator.d.ts.map +1 -0
- package/dist/vendor/design/art-deco-generator.js +144 -0
- package/dist/vendor/design/art-deco-generator.js.map +1 -0
- package/dist/vendor/design/art-nouveau-generator.d.ts +46 -0
- package/dist/vendor/design/art-nouveau-generator.d.ts.map +1 -0
- package/dist/vendor/design/art-nouveau-generator.js +134 -0
- package/dist/vendor/design/art-nouveau-generator.js.map +1 -0
- package/dist/vendor/design/bauhaus-generator.d.ts +53 -0
- package/dist/vendor/design/bauhaus-generator.d.ts.map +1 -0
- package/dist/vendor/design/bauhaus-generator.js +126 -0
- package/dist/vendor/design/bauhaus-generator.js.map +1 -0
- package/dist/vendor/design/brutalist-generator.d.ts +53 -0
- package/dist/vendor/design/brutalist-generator.d.ts.map +1 -0
- package/dist/vendor/design/brutalist-generator.js +148 -0
- package/dist/vendor/design/brutalist-generator.js.map +1 -0
- package/dist/vendor/design/claymorphism-generator.d.ts +46 -0
- package/dist/vendor/design/claymorphism-generator.d.ts.map +1 -0
- package/dist/vendor/design/claymorphism-generator.js +135 -0
- package/dist/vendor/design/claymorphism-generator.js.map +1 -0
- package/dist/vendor/design/corporate-memphis-generator.d.ts +47 -0
- package/dist/vendor/design/corporate-memphis-generator.d.ts.map +1 -0
- package/dist/vendor/design/corporate-memphis-generator.js +144 -0
- package/dist/vendor/design/corporate-memphis-generator.js.map +1 -0
- package/dist/vendor/design/cyberpunk-generator.d.ts +52 -0
- package/dist/vendor/design/cyberpunk-generator.d.ts.map +1 -0
- package/dist/vendor/design/cyberpunk-generator.js +162 -0
- package/dist/vendor/design/cyberpunk-generator.js.map +1 -0
- package/dist/vendor/design/de-stijl-generator.d.ts +50 -0
- package/dist/vendor/design/de-stijl-generator.d.ts.map +1 -0
- package/dist/vendor/design/de-stijl-generator.js +154 -0
- package/dist/vendor/design/de-stijl-generator.js.map +1 -0
- package/dist/vendor/design/design-style.d.ts +3 -0
- package/dist/vendor/design/design-style.d.ts.map +1 -0
- package/dist/vendor/design/design-style.js +12 -0
- package/dist/vendor/design/design-style.js.map +1 -0
- package/dist/vendor/design/design-systems-dtcg.d.ts +59 -0
- package/dist/vendor/design/design-systems-dtcg.d.ts.map +1 -0
- package/dist/vendor/design/design-systems-dtcg.js +571 -0
- package/dist/vendor/design/design-systems-dtcg.js.map +1 -0
- package/dist/vendor/design/frutiger-aero-generator.d.ts +46 -0
- package/dist/vendor/design/frutiger-aero-generator.d.ts.map +1 -0
- package/dist/vendor/design/frutiger-aero-generator.js +133 -0
- package/dist/vendor/design/frutiger-aero-generator.js.map +1 -0
- package/dist/vendor/design/memphis-generator.d.ts +56 -0
- package/dist/vendor/design/memphis-generator.d.ts.map +1 -0
- package/dist/vendor/design/memphis-generator.js +158 -0
- package/dist/vendor/design/memphis-generator.js.map +1 -0
- package/dist/vendor/design/mid-century-upa-generator.d.ts +46 -0
- package/dist/vendor/design/mid-century-upa-generator.d.ts.map +1 -0
- package/dist/vendor/design/mid-century-upa-generator.js +137 -0
- package/dist/vendor/design/mid-century-upa-generator.js.map +1 -0
- package/dist/vendor/design/neumorphic-generator.d.ts +53 -0
- package/dist/vendor/design/neumorphic-generator.d.ts.map +1 -0
- package/dist/vendor/design/neumorphic-generator.js +182 -0
- package/dist/vendor/design/neumorphic-generator.js.map +1 -0
- package/dist/vendor/design/op-art-generator.d.ts +45 -0
- package/dist/vendor/design/op-art-generator.d.ts.map +1 -0
- package/dist/vendor/design/op-art-generator.js +116 -0
- package/dist/vendor/design/op-art-generator.js.map +1 -0
- package/dist/vendor/design/pixel-art-generator.d.ts +45 -0
- package/dist/vendor/design/pixel-art-generator.d.ts.map +1 -0
- package/dist/vendor/design/pixel-art-generator.js +143 -0
- package/dist/vendor/design/pixel-art-generator.js.map +1 -0
- package/dist/vendor/design/pop-art-generator.d.ts +53 -0
- package/dist/vendor/design/pop-art-generator.d.ts.map +1 -0
- package/dist/vendor/design/pop-art-generator.js +164 -0
- package/dist/vendor/design/pop-art-generator.js.map +1 -0
- package/dist/vendor/design/risograph-generator.d.ts +53 -0
- package/dist/vendor/design/risograph-generator.d.ts.map +1 -0
- package/dist/vendor/design/risograph-generator.js +170 -0
- package/dist/vendor/design/risograph-generator.js.map +1 -0
- package/dist/vendor/design/swiss-style-generator.d.ts +55 -0
- package/dist/vendor/design/swiss-style-generator.d.ts.map +1 -0
- package/dist/vendor/design/swiss-style-generator.js +147 -0
- package/dist/vendor/design/swiss-style-generator.js.map +1 -0
- package/dist/vendor/design/vaporwave-generator.d.ts +51 -0
- package/dist/vendor/design/vaporwave-generator.d.ts.map +1 -0
- package/dist/vendor/design/vaporwave-generator.js +139 -0
- package/dist/vendor/design/vaporwave-generator.js.map +1 -0
- package/manifest.json +65 -1
- package/package.json +18 -9
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/* GENERATED — DO NOT EDIT.
|
|
2
|
+
*
|
|
3
|
+
* Source: mcp-cloud/src/services/neumorphic-generator.ts
|
|
4
|
+
* sha256: 652ce047ee45738858a3d2595dc9a67668c9bf027ee5d53badbd5c9f95f59ebe
|
|
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
|
+
* NEUMORPHIC & GLASSMORPHIC SOFT UI LAYOUT GENERATOR
|
|
13
|
+
*
|
|
14
|
+
* Implements procedural generation of soft 3D extruded containers, dual shadows,
|
|
15
|
+
* frosted glass panels, and rounded tactile UI elements.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Generate a Neumorphic & Glassmorphic Soft UI layout scene graph.
|
|
19
|
+
*/
|
|
20
|
+
export function generateNeumorphicLayout(input) {
|
|
21
|
+
const width = input.canvasWidth || 1280;
|
|
22
|
+
const height = input.canvasHeight || 720;
|
|
23
|
+
const bgSoft = "#e0e5ec";
|
|
24
|
+
const lightHighlight = "#ffffff";
|
|
25
|
+
const shadowDepth = "#a3b1c6";
|
|
26
|
+
const accentIndigo = input.accentColor || "#6366f1";
|
|
27
|
+
const textColor = "#1e293b";
|
|
28
|
+
const items = [];
|
|
29
|
+
// Background Canvas
|
|
30
|
+
items.push({
|
|
31
|
+
id: "neu_bg",
|
|
32
|
+
type: "rect",
|
|
33
|
+
x: 0,
|
|
34
|
+
y: 0,
|
|
35
|
+
width,
|
|
36
|
+
height,
|
|
37
|
+
fontFamily: "Outfit, Inter, sans-serif",
|
|
38
|
+
fill: bgSoft,
|
|
39
|
+
borderRadius: 0,
|
|
40
|
+
zIndex: 0,
|
|
41
|
+
});
|
|
42
|
+
// Main Soft Extruded Card Container
|
|
43
|
+
const mainCardW = Math.round(width * 0.85);
|
|
44
|
+
const mainCardH = Math.round(height * 0.8);
|
|
45
|
+
const mainCardX = Math.round((width - mainCardW) / 2);
|
|
46
|
+
const mainCardY = Math.round((height - mainCardH) / 2);
|
|
47
|
+
items.push({
|
|
48
|
+
id: "neu_main_card",
|
|
49
|
+
type: "rect",
|
|
50
|
+
x: mainCardX,
|
|
51
|
+
y: mainCardY,
|
|
52
|
+
width: mainCardW,
|
|
53
|
+
height: mainCardH,
|
|
54
|
+
fontFamily: "Outfit, Inter, sans-serif",
|
|
55
|
+
fill: bgSoft,
|
|
56
|
+
borderRadius: 24,
|
|
57
|
+
boxShadow: `9px 9px 18px ${shadowDepth}, -9px -9px 18px ${lightHighlight}`,
|
|
58
|
+
zIndex: 1,
|
|
59
|
+
});
|
|
60
|
+
// Header Title Text
|
|
61
|
+
let currentY = mainCardY + 48;
|
|
62
|
+
items.push({
|
|
63
|
+
id: "neu_title",
|
|
64
|
+
type: "text",
|
|
65
|
+
text: input.title,
|
|
66
|
+
x: mainCardX + 48,
|
|
67
|
+
y: currentY,
|
|
68
|
+
width: mainCardW - 96,
|
|
69
|
+
height: 60,
|
|
70
|
+
fontSize: 40,
|
|
71
|
+
fontFamily: "Outfit, Inter, sans-serif",
|
|
72
|
+
fontWeight: "bold",
|
|
73
|
+
fill: textColor,
|
|
74
|
+
borderRadius: 0,
|
|
75
|
+
zIndex: 2,
|
|
76
|
+
});
|
|
77
|
+
currentY += 64;
|
|
78
|
+
if (input.subtitle) {
|
|
79
|
+
items.push({
|
|
80
|
+
id: "neu_subtitle",
|
|
81
|
+
type: "text",
|
|
82
|
+
text: input.subtitle,
|
|
83
|
+
x: mainCardX + 48,
|
|
84
|
+
y: currentY,
|
|
85
|
+
width: mainCardW - 96,
|
|
86
|
+
height: 32,
|
|
87
|
+
fontSize: 20,
|
|
88
|
+
fontFamily: "Outfit, Inter, sans-serif",
|
|
89
|
+
fontWeight: "medium",
|
|
90
|
+
fill: accentIndigo,
|
|
91
|
+
borderRadius: 0,
|
|
92
|
+
zIndex: 2,
|
|
93
|
+
});
|
|
94
|
+
currentY += 48;
|
|
95
|
+
}
|
|
96
|
+
// Frosted Glassmorphic Overlay Panel
|
|
97
|
+
const glassW = Math.round(mainCardW - 96);
|
|
98
|
+
const glassH = 180;
|
|
99
|
+
items.push({
|
|
100
|
+
id: "glass_panel",
|
|
101
|
+
type: "glass_card",
|
|
102
|
+
x: mainCardX + 48,
|
|
103
|
+
y: currentY,
|
|
104
|
+
width: glassW,
|
|
105
|
+
height: glassH,
|
|
106
|
+
fontFamily: "Outfit, Inter, sans-serif",
|
|
107
|
+
fill: "rgba(255, 255, 255, 0.35)",
|
|
108
|
+
borderRadius: 20,
|
|
109
|
+
backdropFilter: "blur(16px)",
|
|
110
|
+
border: "1px solid rgba(255, 255, 255, 0.6)",
|
|
111
|
+
boxShadow: `0 8px 32px 0 rgba(31, 38, 135, 0.15)`,
|
|
112
|
+
zIndex: 3,
|
|
113
|
+
});
|
|
114
|
+
if (input.cardTitle) {
|
|
115
|
+
items.push({
|
|
116
|
+
id: "glass_card_title",
|
|
117
|
+
type: "text",
|
|
118
|
+
text: input.cardTitle,
|
|
119
|
+
x: mainCardX + 72,
|
|
120
|
+
y: currentY + 24,
|
|
121
|
+
width: glassW - 48,
|
|
122
|
+
height: 36,
|
|
123
|
+
fontSize: 24,
|
|
124
|
+
fontFamily: "Outfit, Inter, sans-serif",
|
|
125
|
+
fontWeight: "bold",
|
|
126
|
+
fill: textColor,
|
|
127
|
+
borderRadius: 0,
|
|
128
|
+
zIndex: 4,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
if (input.cardBody) {
|
|
132
|
+
items.push({
|
|
133
|
+
id: "glass_card_body",
|
|
134
|
+
type: "text",
|
|
135
|
+
text: input.cardBody,
|
|
136
|
+
x: mainCardX + 72,
|
|
137
|
+
y: currentY + 68,
|
|
138
|
+
width: glassW - 48,
|
|
139
|
+
height: 80,
|
|
140
|
+
fontSize: 16,
|
|
141
|
+
fontFamily: "Outfit, Inter, sans-serif",
|
|
142
|
+
fontWeight: "normal",
|
|
143
|
+
fill: textColor,
|
|
144
|
+
borderRadius: 0,
|
|
145
|
+
zIndex: 4,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
currentY += glassH + 32;
|
|
149
|
+
// Tactile Neumorphic Soft Button CTA
|
|
150
|
+
items.push({
|
|
151
|
+
id: "neu_cta_button",
|
|
152
|
+
type: "neumorphic_button",
|
|
153
|
+
text: "Explore Tactile Soft UI",
|
|
154
|
+
x: mainCardX + 48,
|
|
155
|
+
y: currentY,
|
|
156
|
+
width: 240,
|
|
157
|
+
height: 52,
|
|
158
|
+
fontSize: 16,
|
|
159
|
+
fontFamily: "Outfit, Inter, sans-serif",
|
|
160
|
+
fontWeight: "bold",
|
|
161
|
+
fill: bgSoft,
|
|
162
|
+
borderRadius: 16,
|
|
163
|
+
boxShadow: `4px 4px 8px ${shadowDepth}, -4px -4px 8px ${lightHighlight}`,
|
|
164
|
+
border: `2px solid ${accentIndigo}`,
|
|
165
|
+
zIndex: 3,
|
|
166
|
+
});
|
|
167
|
+
return {
|
|
168
|
+
style: "neumorphic_glass",
|
|
169
|
+
canvas: { width, height },
|
|
170
|
+
items,
|
|
171
|
+
palette: [bgSoft, lightHighlight, shadowDepth, accentIndigo, textColor],
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
export function generateNeumorphicDashboard(options) {
|
|
175
|
+
return generateNeumorphicLayout({
|
|
176
|
+
title: options.title,
|
|
177
|
+
subtitle: options.subtitle,
|
|
178
|
+
cardTitle: "System Telemetry",
|
|
179
|
+
cardBody: options.body,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=neumorphic-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"neumorphic-generator.js","sourceRoot":"","sources":["../../../src/vendor/design/neumorphic-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH;;;;;GAKG;AAuCH;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAA4B;IACnE,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC;IACzC,MAAM,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,cAAc,GAAG,SAAS,CAAC;IACjC,MAAM,WAAW,GAAG,SAAS,CAAC;IAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC;IACpD,MAAM,SAAS,GAAG,SAAS,CAAC;IAE5B,MAAM,KAAK,GAA2B,EAAE,CAAC;IAEzC,oBAAoB;IACpB,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,MAAM;QACZ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,KAAK;QACL,MAAM;QACN,UAAU,EAAE,2BAA2B;QACvC,IAAI,EAAE,MAAM;QACZ,YAAY,EAAE,CAAC;QACf,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,oCAAoC;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAEvD,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,MAAM;QACZ,CAAC,EAAE,SAAS;QACZ,CAAC,EAAE,SAAS;QACZ,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,2BAA2B;QACvC,IAAI,EAAE,MAAM;QACZ,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,gBAAgB,WAAW,oBAAoB,cAAc,EAAE;QAC1E,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,oBAAoB;IACpB,IAAI,QAAQ,GAAG,SAAS,GAAG,EAAE,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,KAAK,CAAC,KAAK;QACjB,CAAC,EAAE,SAAS,GAAG,EAAE;QACjB,CAAC,EAAE,QAAQ;QACX,KAAK,EAAE,SAAS,GAAG,EAAE;QACrB,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,2BAA2B;QACvC,UAAU,EAAE,MAAM;QAClB,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,CAAC;QACf,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,QAAQ,IAAI,EAAE,CAAC;IAEf,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,cAAc;YAClB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,CAAC,QAAQ;YACpB,CAAC,EAAE,SAAS,GAAG,EAAE;YACjB,CAAC,EAAE,QAAQ;YACX,KAAK,EAAE,SAAS,GAAG,EAAE;YACrB,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,2BAA2B;YACvC,UAAU,EAAE,QAAQ;YACpB,IAAI,EAAE,YAAY;YAClB,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QACH,QAAQ,IAAI,EAAE,CAAC;IACjB,CAAC;IAED,qCAAqC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,GAAG,CAAC;IACnB,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,YAAY;QAClB,CAAC,EAAE,SAAS,GAAG,EAAE;QACjB,CAAC,EAAE,QAAQ;QACX,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,2BAA2B;QACvC,IAAI,EAAE,2BAA2B;QACjC,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,YAAY;QAC5B,MAAM,EAAE,oCAAoC;QAC5C,SAAS,EAAE,sCAAsC;QACjD,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,kBAAkB;YACtB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,CAAC,SAAS;YACrB,CAAC,EAAE,SAAS,GAAG,EAAE;YACjB,CAAC,EAAE,QAAQ,GAAG,EAAE;YAChB,KAAK,EAAE,MAAM,GAAG,EAAE;YAClB,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,2BAA2B;YACvC,UAAU,EAAE,MAAM;YAClB,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,iBAAiB;YACrB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,CAAC,QAAQ;YACpB,CAAC,EAAE,SAAS,GAAG,EAAE;YACjB,CAAC,EAAE,QAAQ,GAAG,EAAE;YAChB,KAAK,EAAE,MAAM,GAAG,EAAE;YAClB,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,2BAA2B;YACvC,UAAU,EAAE,QAAQ;YACpB,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;IAExB,qCAAqC;IACrC,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,yBAAyB;QAC/B,CAAC,EAAE,SAAS,GAAG,EAAE;QACjB,CAAC,EAAE,QAAQ;QACX,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,2BAA2B;QACvC,UAAU,EAAE,MAAM;QAClB,IAAI,EAAE,MAAM;QACZ,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,eAAe,WAAW,mBAAmB,cAAc,EAAE;QACxE,MAAM,EAAE,aAAa,YAAY,EAAE;QACnC,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,kBAAkB;QACzB,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QACzB,KAAK;QACL,OAAO,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAA4D;IACtG,OAAO,wBAAwB,CAAC;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,kBAAkB;QAC7B,QAAQ,EAAE,OAAO,CAAC,IAAI;KACvB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OP ART / PSYCHEDELIC OPTICAL ILLUSION PROCEDURAL GENERATOR
|
|
3
|
+
*
|
|
4
|
+
* Implements Victor Vasarely / Bridget Riley Op Art aesthetics:
|
|
5
|
+
* - High-contrast concentric geometric moiré patterns & optical illusion warping.
|
|
6
|
+
* - Monochrome (#000000, #ffffff) or high-contrast psychedelic neon (#ff0055, #00f0ff, #7000ff).
|
|
7
|
+
* - Kinetic visual depth & pulsating focal points.
|
|
8
|
+
* - Bold geometric display typography (Syne, Archivo Black).
|
|
9
|
+
*/
|
|
10
|
+
export interface OpArtInput {
|
|
11
|
+
title: string;
|
|
12
|
+
subtitle?: string;
|
|
13
|
+
body?: string;
|
|
14
|
+
canvasWidth?: number;
|
|
15
|
+
canvasHeight?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface OpArtItem {
|
|
18
|
+
id: string;
|
|
19
|
+
type: "text" | "rect" | "circle";
|
|
20
|
+
text?: string;
|
|
21
|
+
x: number;
|
|
22
|
+
y: number;
|
|
23
|
+
width?: number;
|
|
24
|
+
height?: number;
|
|
25
|
+
radius?: number;
|
|
26
|
+
fontSize?: number;
|
|
27
|
+
fontFamily: string;
|
|
28
|
+
fontWeight?: string | number;
|
|
29
|
+
textAlign: "left" | "center";
|
|
30
|
+
fill: string;
|
|
31
|
+
stroke?: string;
|
|
32
|
+
strokeWidth?: number;
|
|
33
|
+
zIndex: number;
|
|
34
|
+
}
|
|
35
|
+
export interface OpArtResult {
|
|
36
|
+
style: "op_art_psychedelic";
|
|
37
|
+
canvas: {
|
|
38
|
+
width: number;
|
|
39
|
+
height: number;
|
|
40
|
+
};
|
|
41
|
+
items: OpArtItem[];
|
|
42
|
+
palette: string[];
|
|
43
|
+
}
|
|
44
|
+
export declare function generateOpArtPoster(input: OpArtInput): OpArtResult;
|
|
45
|
+
//# sourceMappingURL=op-art-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"op-art-generator.d.ts","sourceRoot":"","sources":["../../../src/vendor/design/op-art-generator.ts"],"names":[],"mappings":"AAUA;;;;;;;;GAQG;AAEH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,oBAAoB,CAAC;IAC5B,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAwGlE"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/* GENERATED — DO NOT EDIT.
|
|
2
|
+
*
|
|
3
|
+
* Source: mcp-cloud/src/services/op-art-generator.ts
|
|
4
|
+
* sha256: 762fdfab688d977ed8289ef4c99a532bee5fe1a3ffc3f858f241e3c2ab542ee6
|
|
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
|
+
* OP ART / PSYCHEDELIC OPTICAL ILLUSION PROCEDURAL GENERATOR
|
|
13
|
+
*
|
|
14
|
+
* Implements Victor Vasarely / Bridget Riley Op Art aesthetics:
|
|
15
|
+
* - High-contrast concentric geometric moiré patterns & optical illusion warping.
|
|
16
|
+
* - Monochrome (#000000, #ffffff) or high-contrast psychedelic neon (#ff0055, #00f0ff, #7000ff).
|
|
17
|
+
* - Kinetic visual depth & pulsating focal points.
|
|
18
|
+
* - Bold geometric display typography (Syne, Archivo Black).
|
|
19
|
+
*/
|
|
20
|
+
export function generateOpArtPoster(input) {
|
|
21
|
+
const width = input.canvasWidth || 1080;
|
|
22
|
+
const height = input.canvasHeight || 1350;
|
|
23
|
+
const bgBlack = "#050508";
|
|
24
|
+
const whiteHex = "#ffffff";
|
|
25
|
+
const neonPink = "#ff0055";
|
|
26
|
+
const neonCyan = "#00f0ff";
|
|
27
|
+
const purpleHex = "#7000ff";
|
|
28
|
+
const items = [];
|
|
29
|
+
// Black background
|
|
30
|
+
items.push({
|
|
31
|
+
id: "op_bg",
|
|
32
|
+
type: "rect",
|
|
33
|
+
x: 0,
|
|
34
|
+
y: 0,
|
|
35
|
+
width,
|
|
36
|
+
height,
|
|
37
|
+
fontFamily: "Syne, Archivo Black, sans-serif",
|
|
38
|
+
textAlign: "left",
|
|
39
|
+
fill: bgBlack,
|
|
40
|
+
zIndex: 0,
|
|
41
|
+
});
|
|
42
|
+
// Concentric Op Art Optical Illusion Rings
|
|
43
|
+
const ringCenterX = width / 2;
|
|
44
|
+
const ringCenterY = height * 0.4;
|
|
45
|
+
const ringCount = 7;
|
|
46
|
+
for (let i = ringCount; i >= 1; i--) {
|
|
47
|
+
const r = i * 36;
|
|
48
|
+
const isEven = i % 2 === 0;
|
|
49
|
+
items.push({
|
|
50
|
+
id: `op_ring_${i}`,
|
|
51
|
+
type: "circle",
|
|
52
|
+
x: ringCenterX,
|
|
53
|
+
y: ringCenterY,
|
|
54
|
+
radius: r,
|
|
55
|
+
fontFamily: "Syne, sans-serif",
|
|
56
|
+
textAlign: "center",
|
|
57
|
+
fill: isEven ? whiteHex : bgBlack,
|
|
58
|
+
stroke: isEven ? neonPink : neonCyan,
|
|
59
|
+
strokeWidth: 4,
|
|
60
|
+
zIndex: ringCount - i + 1,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
// Title
|
|
64
|
+
items.push({
|
|
65
|
+
id: "op_title",
|
|
66
|
+
type: "text",
|
|
67
|
+
text: input.title,
|
|
68
|
+
x: width * 0.1,
|
|
69
|
+
y: height * 0.72,
|
|
70
|
+
fontSize: 56,
|
|
71
|
+
fontFamily: "Syne, Archivo Black, sans-serif",
|
|
72
|
+
fontWeight: 800,
|
|
73
|
+
textAlign: "left",
|
|
74
|
+
fill: whiteHex,
|
|
75
|
+
zIndex: 10,
|
|
76
|
+
});
|
|
77
|
+
// Subtitle
|
|
78
|
+
if (input.subtitle) {
|
|
79
|
+
items.push({
|
|
80
|
+
id: "op_subtitle",
|
|
81
|
+
type: "text",
|
|
82
|
+
text: input.subtitle,
|
|
83
|
+
x: width * 0.1,
|
|
84
|
+
y: height * 0.79,
|
|
85
|
+
fontSize: 28,
|
|
86
|
+
fontFamily: "Syne, sans-serif",
|
|
87
|
+
fontWeight: 700,
|
|
88
|
+
textAlign: "left",
|
|
89
|
+
fill: neonCyan,
|
|
90
|
+
zIndex: 10,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
// Body
|
|
94
|
+
if (input.body) {
|
|
95
|
+
items.push({
|
|
96
|
+
id: "op_body",
|
|
97
|
+
type: "text",
|
|
98
|
+
text: input.body,
|
|
99
|
+
x: width * 0.1,
|
|
100
|
+
y: height * 0.84,
|
|
101
|
+
fontSize: 20,
|
|
102
|
+
fontFamily: "Archivo, sans-serif",
|
|
103
|
+
fontWeight: 400,
|
|
104
|
+
textAlign: "left",
|
|
105
|
+
fill: "#a1a1aa",
|
|
106
|
+
zIndex: 10,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
style: "op_art_psychedelic",
|
|
111
|
+
canvas: { width, height },
|
|
112
|
+
items,
|
|
113
|
+
palette: [bgBlack, whiteHex, neonPink, neonCyan, purpleHex],
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=op-art-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"op-art-generator.js","sourceRoot":"","sources":["../../../src/vendor/design/op-art-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH;;;;;;;;GAQG;AAoCH,MAAM,UAAU,mBAAmB,CAAC,KAAiB;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC;IAE1C,MAAM,OAAO,GAAG,SAAS,CAAC;IAC1B,MAAM,QAAQ,GAAG,SAAS,CAAC;IAC3B,MAAM,QAAQ,GAAG,SAAS,CAAC;IAC3B,MAAM,QAAQ,GAAG,SAAS,CAAC;IAC3B,MAAM,SAAS,GAAG,SAAS,CAAC;IAE5B,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,mBAAmB;IACnB,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,MAAM;QACZ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,KAAK;QACL,MAAM;QACN,UAAU,EAAE,iCAAiC;QAC7C,SAAS,EAAE,MAAM;QACjB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,2CAA2C;IAC3C,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC;IAC9B,MAAM,WAAW,GAAG,MAAM,GAAG,GAAG,CAAC;IACjC,MAAM,SAAS,GAAG,CAAC,CAAC;IAEpB,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,WAAW,CAAC,EAAE;YAClB,IAAI,EAAE,QAAQ;YACd,CAAC,EAAE,WAAW;YACd,CAAC,EAAE,WAAW;YACd,MAAM,EAAE,CAAC;YACT,UAAU,EAAE,kBAAkB;YAC9B,SAAS,EAAE,QAAQ;YACnB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;YACjC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;YACpC,WAAW,EAAE,CAAC;YACd,MAAM,EAAE,SAAS,GAAG,CAAC,GAAG,CAAC;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;IACR,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,KAAK,CAAC,KAAK;QACjB,CAAC,EAAE,KAAK,GAAG,GAAG;QACd,CAAC,EAAE,MAAM,GAAG,IAAI;QAChB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,iCAAiC;QAC7C,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,MAAM;QACjB,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,EAAE;KACX,CAAC,CAAC;IAEH,WAAW;IACX,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,aAAa;YACjB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,CAAC,QAAQ;YACpB,CAAC,EAAE,KAAK,GAAG,GAAG;YACd,CAAC,EAAE,MAAM,GAAG,IAAI;YAChB,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,kBAAkB;YAC9B,UAAU,EAAE,GAAG;YACf,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;IACL,CAAC;IAED,OAAO;IACP,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,CAAC,EAAE,KAAK,GAAG,GAAG;YACd,CAAC,EAAE,MAAM,GAAG,IAAI;YAChB,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,qBAAqB;YACjC,UAAU,EAAE,GAAG;YACf,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QACzB,KAAK;QACL,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;KAC5D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PIXEL ART 8-BIT RETRO ARCADE STYLE PROCEDURAL GENERATOR
|
|
3
|
+
*
|
|
4
|
+
* Implements 8-bit/16-bit retro video game sprite aesthetic:
|
|
5
|
+
* - Crisp pixel grid alignment & stepped stair-step geometry.
|
|
6
|
+
* - Retro arcade palette (black #000000, cyan #38b6ff, red #ff5757, yellow #ffde59, green #7ed957).
|
|
7
|
+
* - Pixelated bounding box frames & heart/coin HUD icons.
|
|
8
|
+
* - Pixel display typography ("Press Start 2P" / "VT323" / Monospace).
|
|
9
|
+
*/
|
|
10
|
+
export interface PixelArtInput {
|
|
11
|
+
title: string;
|
|
12
|
+
subtitle?: string;
|
|
13
|
+
body?: string;
|
|
14
|
+
canvasWidth?: number;
|
|
15
|
+
canvasHeight?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface PixelArtItem {
|
|
18
|
+
id: string;
|
|
19
|
+
type: "text" | "rect";
|
|
20
|
+
text?: string;
|
|
21
|
+
x: number;
|
|
22
|
+
y: number;
|
|
23
|
+
width?: number;
|
|
24
|
+
height?: number;
|
|
25
|
+
fontSize?: number;
|
|
26
|
+
fontFamily: string;
|
|
27
|
+
fontWeight?: string | number;
|
|
28
|
+
textAlign: "left" | "center";
|
|
29
|
+
fill: string;
|
|
30
|
+
stroke?: string;
|
|
31
|
+
strokeWidth?: number;
|
|
32
|
+
zIndex: number;
|
|
33
|
+
}
|
|
34
|
+
export interface PixelArtResult {
|
|
35
|
+
style: "pixel_art_8bit";
|
|
36
|
+
canvas: {
|
|
37
|
+
width: number;
|
|
38
|
+
height: number;
|
|
39
|
+
};
|
|
40
|
+
pixelSize: number;
|
|
41
|
+
items: PixelArtItem[];
|
|
42
|
+
palette: string[];
|
|
43
|
+
}
|
|
44
|
+
export declare function generatePixelArtPoster(input: PixelArtInput): PixelArtResult;
|
|
45
|
+
//# sourceMappingURL=pixel-art-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pixel-art-generator.d.ts","sourceRoot":"","sources":["../../../src/vendor/design/pixel-art-generator.ts"],"names":[],"mappings":"AAUA;;;;;;;;GAQG;AAEH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAoI3E"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/* GENERATED — DO NOT EDIT.
|
|
2
|
+
*
|
|
3
|
+
* Source: mcp-cloud/src/services/pixel-art-generator.ts
|
|
4
|
+
* sha256: 47ee971991d886f71eb32ca122a5f1af210b3285075b28d9b37ae4ea6db26b45
|
|
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
|
+
* PIXEL ART 8-BIT RETRO ARCADE STYLE PROCEDURAL GENERATOR
|
|
13
|
+
*
|
|
14
|
+
* Implements 8-bit/16-bit retro video game sprite aesthetic:
|
|
15
|
+
* - Crisp pixel grid alignment & stepped stair-step geometry.
|
|
16
|
+
* - Retro arcade palette (black #000000, cyan #38b6ff, red #ff5757, yellow #ffde59, green #7ed957).
|
|
17
|
+
* - Pixelated bounding box frames & heart/coin HUD icons.
|
|
18
|
+
* - Pixel display typography ("Press Start 2P" / "VT323" / Monospace).
|
|
19
|
+
*/
|
|
20
|
+
export function generatePixelArtPoster(input) {
|
|
21
|
+
const width = input.canvasWidth || 1080;
|
|
22
|
+
const height = input.canvasHeight || 1350;
|
|
23
|
+
const pixelSize = 16; // Pixel grid step
|
|
24
|
+
const bgBlack = "#0d0d11";
|
|
25
|
+
const cyanHex = "#38b6ff";
|
|
26
|
+
const redHex = "#ff5757";
|
|
27
|
+
const yellowHex = "#ffde59";
|
|
28
|
+
const greenHex = "#7ed957";
|
|
29
|
+
const whiteHex = "#ffffff";
|
|
30
|
+
const items = [];
|
|
31
|
+
// Black background
|
|
32
|
+
items.push({
|
|
33
|
+
id: "pa_bg",
|
|
34
|
+
type: "rect",
|
|
35
|
+
x: 0,
|
|
36
|
+
y: 0,
|
|
37
|
+
width,
|
|
38
|
+
height,
|
|
39
|
+
fontFamily: "Courier New, monospace",
|
|
40
|
+
textAlign: "left",
|
|
41
|
+
fill: bgBlack,
|
|
42
|
+
zIndex: 0,
|
|
43
|
+
});
|
|
44
|
+
// Pixelated border frame (stepped corners)
|
|
45
|
+
items.push({
|
|
46
|
+
id: "pa_border_outer",
|
|
47
|
+
type: "rect",
|
|
48
|
+
x: pixelSize * 2,
|
|
49
|
+
y: pixelSize * 2,
|
|
50
|
+
width: width - pixelSize * 4,
|
|
51
|
+
height: height - pixelSize * 4,
|
|
52
|
+
fontFamily: "Courier New, monospace",
|
|
53
|
+
textAlign: "left",
|
|
54
|
+
fill: "transparent",
|
|
55
|
+
stroke: cyanHex,
|
|
56
|
+
strokeWidth: pixelSize / 2,
|
|
57
|
+
zIndex: 1,
|
|
58
|
+
});
|
|
59
|
+
// Pixel art heart / sprite representation (grid blocks)
|
|
60
|
+
const spriteCenterX = width / 2;
|
|
61
|
+
const spriteCenterY = height * 0.4;
|
|
62
|
+
const blocks = [
|
|
63
|
+
{ dx: -1, dy: -1, color: redHex },
|
|
64
|
+
{ dx: 1, dy: -1, color: redHex },
|
|
65
|
+
{ dx: -2, dy: 0, color: redHex },
|
|
66
|
+
{ dx: -1, dy: 0, color: redHex },
|
|
67
|
+
{ dx: 0, dy: 0, color: redHex },
|
|
68
|
+
{ dx: 1, dy: 0, color: redHex },
|
|
69
|
+
{ dx: 2, dy: 0, color: redHex },
|
|
70
|
+
{ dx: -1, dy: 1, color: redHex },
|
|
71
|
+
{ dx: 0, dy: 1, color: redHex },
|
|
72
|
+
{ dx: 1, dy: 1, color: redHex },
|
|
73
|
+
{ dx: 0, dy: 2, color: redHex },
|
|
74
|
+
];
|
|
75
|
+
blocks.forEach((b, idx) => {
|
|
76
|
+
items.push({
|
|
77
|
+
id: `pa_sprite_block_${idx}`,
|
|
78
|
+
type: "rect",
|
|
79
|
+
x: spriteCenterX + b.dx * pixelSize * 3,
|
|
80
|
+
y: spriteCenterY + b.dy * pixelSize * 3,
|
|
81
|
+
width: pixelSize * 3,
|
|
82
|
+
height: pixelSize * 3,
|
|
83
|
+
fontFamily: "Courier New, monospace",
|
|
84
|
+
textAlign: "left",
|
|
85
|
+
fill: b.color,
|
|
86
|
+
zIndex: 2,
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
// Title
|
|
90
|
+
items.push({
|
|
91
|
+
id: "pa_title",
|
|
92
|
+
type: "text",
|
|
93
|
+
text: input.title,
|
|
94
|
+
x: width * 0.1,
|
|
95
|
+
y: height * 0.72,
|
|
96
|
+
fontSize: 48,
|
|
97
|
+
fontFamily: "Press Start 2P, Courier New, monospace",
|
|
98
|
+
fontWeight: 700,
|
|
99
|
+
textAlign: "left",
|
|
100
|
+
fill: yellowHex,
|
|
101
|
+
zIndex: 5,
|
|
102
|
+
});
|
|
103
|
+
// Subtitle
|
|
104
|
+
if (input.subtitle) {
|
|
105
|
+
items.push({
|
|
106
|
+
id: "pa_subtitle",
|
|
107
|
+
type: "text",
|
|
108
|
+
text: input.subtitle,
|
|
109
|
+
x: width * 0.1,
|
|
110
|
+
y: height * 0.8,
|
|
111
|
+
fontSize: 24,
|
|
112
|
+
fontFamily: "VT323, Courier New, monospace",
|
|
113
|
+
fontWeight: 400,
|
|
114
|
+
textAlign: "left",
|
|
115
|
+
fill: cyanHex,
|
|
116
|
+
zIndex: 5,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
// Body
|
|
120
|
+
if (input.body) {
|
|
121
|
+
items.push({
|
|
122
|
+
id: "pa_body",
|
|
123
|
+
type: "text",
|
|
124
|
+
text: input.body,
|
|
125
|
+
x: width * 0.1,
|
|
126
|
+
y: height * 0.86,
|
|
127
|
+
fontSize: 18,
|
|
128
|
+
fontFamily: "Courier New, monospace",
|
|
129
|
+
fontWeight: 400,
|
|
130
|
+
textAlign: "left",
|
|
131
|
+
fill: greenHex,
|
|
132
|
+
zIndex: 5,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
style: "pixel_art_8bit",
|
|
137
|
+
canvas: { width, height },
|
|
138
|
+
pixelSize,
|
|
139
|
+
items,
|
|
140
|
+
palette: [bgBlack, cyanHex, redHex, yellowHex, greenHex, whiteHex],
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=pixel-art-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pixel-art-generator.js","sourceRoot":"","sources":["../../../src/vendor/design/pixel-art-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { DesignStyle } from "./design-style.js";
|
|
2
|
+
export interface PopArtElement {
|
|
3
|
+
id: string;
|
|
4
|
+
type: "text" | "shape" | "speech_bubble" | "starburst" | "benday_overlay";
|
|
5
|
+
shapeType?: "speech_bubble" | "starburst" | "benday_dots" | "rectangle";
|
|
6
|
+
content?: string;
|
|
7
|
+
fontSize?: number;
|
|
8
|
+
fontWeight?: string;
|
|
9
|
+
fontFamily?: string;
|
|
10
|
+
fillHex: string;
|
|
11
|
+
strokeHex?: string;
|
|
12
|
+
strokeWidthPx?: number;
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
rotationDegrees?: number;
|
|
18
|
+
textAlign?: "left" | "center" | "right";
|
|
19
|
+
}
|
|
20
|
+
export interface PopArtPosterOptions {
|
|
21
|
+
title: string;
|
|
22
|
+
subtitle: string;
|
|
23
|
+
body?: string;
|
|
24
|
+
width?: number;
|
|
25
|
+
height?: number;
|
|
26
|
+
cyanVariant?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface PopArtDesignScene {
|
|
29
|
+
id: string;
|
|
30
|
+
style: DesignStyle;
|
|
31
|
+
width: number;
|
|
32
|
+
height: number;
|
|
33
|
+
backgroundHex: string;
|
|
34
|
+
elements: PopArtElement[];
|
|
35
|
+
metadata: {
|
|
36
|
+
title: string;
|
|
37
|
+
createdAt: string;
|
|
38
|
+
compositionType: "pop_art_lichtenstein_comic";
|
|
39
|
+
palette: string[];
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export declare const POP_ART_PALETTE: {
|
|
43
|
+
yellowCanary: string;
|
|
44
|
+
cyanBlue: string;
|
|
45
|
+
magentaElectric: string;
|
|
46
|
+
white: string;
|
|
47
|
+
blackInk: string;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Procedurally generates a Pop Art comic expression poster layout with Ben-Day dots, speech bubbles, and starburst badges.
|
|
51
|
+
*/
|
|
52
|
+
export declare function generatePopArtPoster(options: PopArtPosterOptions): PopArtDesignScene;
|
|
53
|
+
//# sourceMappingURL=pop-art-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pop-art-generator.d.ts","sourceRoot":"","sources":["../../../src/vendor/design/pop-art-generator.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,eAAe,GAAG,WAAW,GAAG,gBAAgB,CAAC;IAC1E,SAAS,CAAC,EAAE,eAAe,GAAG,WAAW,GAAG,aAAa,GAAG,WAAW,CAAC;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,4BAA4B,CAAC;QAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAED,eAAO,MAAM,eAAe;;;;;;CAM3B,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,iBAAiB,CAmKpF"}
|