@pinepaper.studio/mcp-server 1.6.7 → 1.6.9

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 (174) hide show
  1. package/README.de.md +9 -5
  2. package/README.es.md +9 -5
  3. package/README.fr.md +9 -5
  4. package/README.hi.md +8 -5
  5. package/README.ja.md +8 -5
  6. package/README.ko.md +8 -4
  7. package/README.md +256 -17
  8. package/README.pt-BR.md +9 -5
  9. package/README.zh-CN.md +6 -4
  10. package/dist/browser/index.d.ts +1 -1
  11. package/dist/browser/index.d.ts.map +1 -1
  12. package/dist/browser/index.js +1 -1
  13. package/dist/browser/index.js.map +1 -1
  14. package/dist/browser/puppeteer-controller.d.ts +86 -2
  15. package/dist/browser/puppeteer-controller.d.ts.map +1 -1
  16. package/dist/browser/puppeteer-controller.js +143 -60
  17. package/dist/browser/puppeteer-controller.js.map +1 -1
  18. package/dist/character/data/concepts.json +1 -0
  19. package/dist/character/data/depictions.json +1 -0
  20. package/dist/character/data/styles.json +1 -0
  21. package/dist/character/duration-scale.d.ts +13 -0
  22. package/dist/character/duration-scale.d.ts.map +1 -0
  23. package/dist/character/duration-scale.js +13 -0
  24. package/dist/character/duration-scale.js.map +1 -0
  25. package/dist/character/path-bbox.d.ts +82 -0
  26. package/dist/character/path-bbox.d.ts.map +1 -0
  27. package/dist/character/path-bbox.js +496 -0
  28. package/dist/character/path-bbox.js.map +1 -0
  29. package/dist/character/perform.d.ts +149 -0
  30. package/dist/character/perform.d.ts.map +1 -0
  31. package/dist/character/perform.js +626 -0
  32. package/dist/character/perform.js.map +1 -0
  33. package/dist/character/resolve.d.ts +51 -0
  34. package/dist/character/resolve.d.ts.map +1 -0
  35. package/dist/character/resolve.js +239 -0
  36. package/dist/character/resolve.js.map +1 -0
  37. package/dist/cli.js +12 -0
  38. package/dist/cli.js.map +1 -1
  39. package/dist/design/design-systems.d.ts +224 -0
  40. package/dist/design/design-systems.d.ts.map +1 -0
  41. package/dist/design/design-systems.js +434 -0
  42. package/dist/design/design-systems.js.map +1 -0
  43. package/dist/execution/canvas-state.d.ts +7 -0
  44. package/dist/execution/canvas-state.d.ts.map +1 -1
  45. package/dist/execution/canvas-state.js +20 -8
  46. package/dist/execution/canvas-state.js.map +1 -1
  47. package/dist/index.d.ts +20 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +12 -4
  50. package/dist/index.js.map +1 -1
  51. package/dist/ontology/design-graph.d.ts +9 -0
  52. package/dist/ontology/design-graph.d.ts.map +1 -1
  53. package/dist/ontology/design-graph.js +98 -3
  54. package/dist/ontology/design-graph.js.map +1 -1
  55. package/dist/ontology/types.d.ts +42 -0
  56. package/dist/ontology/types.d.ts.map +1 -1
  57. package/dist/ontology/vocabulary.d.ts.map +1 -1
  58. package/dist/ontology/vocabulary.js +20 -0
  59. package/dist/ontology/vocabulary.js.map +1 -1
  60. package/dist/tools/compact-descriptions.d.ts.map +1 -1
  61. package/dist/tools/compact-descriptions.js +25 -0
  62. package/dist/tools/compact-descriptions.js.map +1 -1
  63. package/dist/tools/definitions.d.ts +1 -1
  64. package/dist/tools/definitions.d.ts.map +1 -1
  65. package/dist/tools/definitions.js +404 -25
  66. package/dist/tools/definitions.js.map +1 -1
  67. package/dist/tools/engine-methods.d.ts +18 -0
  68. package/dist/tools/engine-methods.d.ts.map +1 -0
  69. package/dist/tools/engine-methods.js +241 -0
  70. package/dist/tools/engine-methods.js.map +1 -0
  71. package/dist/tools/handlers/character.d.ts +121 -0
  72. package/dist/tools/handlers/character.d.ts.map +1 -0
  73. package/dist/tools/handlers/character.js +315 -0
  74. package/dist/tools/handlers/character.js.map +1 -0
  75. package/dist/tools/handlers.d.ts +2 -0
  76. package/dist/tools/handlers.d.ts.map +1 -1
  77. package/dist/tools/handlers.js +522 -18
  78. package/dist/tools/handlers.js.map +1 -1
  79. package/dist/tools/minimal-descriptions.d.ts.map +1 -1
  80. package/dist/tools/minimal-descriptions.js +15 -3
  81. package/dist/tools/minimal-descriptions.js.map +1 -1
  82. package/dist/tools/toolkits.d.ts.map +1 -1
  83. package/dist/tools/toolkits.js +8 -0
  84. package/dist/tools/toolkits.js.map +1 -1
  85. package/dist/types/code-generator.d.ts +106 -1
  86. package/dist/types/code-generator.d.ts.map +1 -1
  87. package/dist/types/code-generator.js +1273 -18
  88. package/dist/types/code-generator.js.map +1 -1
  89. package/dist/types/schemas.d.ts +6805 -124
  90. package/dist/types/schemas.d.ts.map +1 -1
  91. package/dist/types/schemas.js +627 -17
  92. package/dist/types/schemas.js.map +1 -1
  93. package/dist/vendor/design/art-deco-generator.d.ts +52 -0
  94. package/dist/vendor/design/art-deco-generator.d.ts.map +1 -0
  95. package/dist/vendor/design/art-deco-generator.js +144 -0
  96. package/dist/vendor/design/art-deco-generator.js.map +1 -0
  97. package/dist/vendor/design/art-nouveau-generator.d.ts +46 -0
  98. package/dist/vendor/design/art-nouveau-generator.d.ts.map +1 -0
  99. package/dist/vendor/design/art-nouveau-generator.js +134 -0
  100. package/dist/vendor/design/art-nouveau-generator.js.map +1 -0
  101. package/dist/vendor/design/bauhaus-generator.d.ts +53 -0
  102. package/dist/vendor/design/bauhaus-generator.d.ts.map +1 -0
  103. package/dist/vendor/design/bauhaus-generator.js +126 -0
  104. package/dist/vendor/design/bauhaus-generator.js.map +1 -0
  105. package/dist/vendor/design/brutalist-generator.d.ts +53 -0
  106. package/dist/vendor/design/brutalist-generator.d.ts.map +1 -0
  107. package/dist/vendor/design/brutalist-generator.js +148 -0
  108. package/dist/vendor/design/brutalist-generator.js.map +1 -0
  109. package/dist/vendor/design/claymorphism-generator.d.ts +46 -0
  110. package/dist/vendor/design/claymorphism-generator.d.ts.map +1 -0
  111. package/dist/vendor/design/claymorphism-generator.js +135 -0
  112. package/dist/vendor/design/claymorphism-generator.js.map +1 -0
  113. package/dist/vendor/design/corporate-memphis-generator.d.ts +47 -0
  114. package/dist/vendor/design/corporate-memphis-generator.d.ts.map +1 -0
  115. package/dist/vendor/design/corporate-memphis-generator.js +144 -0
  116. package/dist/vendor/design/corporate-memphis-generator.js.map +1 -0
  117. package/dist/vendor/design/cyberpunk-generator.d.ts +52 -0
  118. package/dist/vendor/design/cyberpunk-generator.d.ts.map +1 -0
  119. package/dist/vendor/design/cyberpunk-generator.js +162 -0
  120. package/dist/vendor/design/cyberpunk-generator.js.map +1 -0
  121. package/dist/vendor/design/de-stijl-generator.d.ts +50 -0
  122. package/dist/vendor/design/de-stijl-generator.d.ts.map +1 -0
  123. package/dist/vendor/design/de-stijl-generator.js +154 -0
  124. package/dist/vendor/design/de-stijl-generator.js.map +1 -0
  125. package/dist/vendor/design/design-style.d.ts +3 -0
  126. package/dist/vendor/design/design-style.d.ts.map +1 -0
  127. package/dist/vendor/design/design-style.js +12 -0
  128. package/dist/vendor/design/design-style.js.map +1 -0
  129. package/dist/vendor/design/design-systems-dtcg.d.ts +59 -0
  130. package/dist/vendor/design/design-systems-dtcg.d.ts.map +1 -0
  131. package/dist/vendor/design/design-systems-dtcg.js +571 -0
  132. package/dist/vendor/design/design-systems-dtcg.js.map +1 -0
  133. package/dist/vendor/design/frutiger-aero-generator.d.ts +46 -0
  134. package/dist/vendor/design/frutiger-aero-generator.d.ts.map +1 -0
  135. package/dist/vendor/design/frutiger-aero-generator.js +133 -0
  136. package/dist/vendor/design/frutiger-aero-generator.js.map +1 -0
  137. package/dist/vendor/design/memphis-generator.d.ts +56 -0
  138. package/dist/vendor/design/memphis-generator.d.ts.map +1 -0
  139. package/dist/vendor/design/memphis-generator.js +158 -0
  140. package/dist/vendor/design/memphis-generator.js.map +1 -0
  141. package/dist/vendor/design/mid-century-upa-generator.d.ts +46 -0
  142. package/dist/vendor/design/mid-century-upa-generator.d.ts.map +1 -0
  143. package/dist/vendor/design/mid-century-upa-generator.js +137 -0
  144. package/dist/vendor/design/mid-century-upa-generator.js.map +1 -0
  145. package/dist/vendor/design/neumorphic-generator.d.ts +53 -0
  146. package/dist/vendor/design/neumorphic-generator.d.ts.map +1 -0
  147. package/dist/vendor/design/neumorphic-generator.js +182 -0
  148. package/dist/vendor/design/neumorphic-generator.js.map +1 -0
  149. package/dist/vendor/design/op-art-generator.d.ts +45 -0
  150. package/dist/vendor/design/op-art-generator.d.ts.map +1 -0
  151. package/dist/vendor/design/op-art-generator.js +116 -0
  152. package/dist/vendor/design/op-art-generator.js.map +1 -0
  153. package/dist/vendor/design/pixel-art-generator.d.ts +45 -0
  154. package/dist/vendor/design/pixel-art-generator.d.ts.map +1 -0
  155. package/dist/vendor/design/pixel-art-generator.js +143 -0
  156. package/dist/vendor/design/pixel-art-generator.js.map +1 -0
  157. package/dist/vendor/design/pop-art-generator.d.ts +53 -0
  158. package/dist/vendor/design/pop-art-generator.d.ts.map +1 -0
  159. package/dist/vendor/design/pop-art-generator.js +164 -0
  160. package/dist/vendor/design/pop-art-generator.js.map +1 -0
  161. package/dist/vendor/design/risograph-generator.d.ts +53 -0
  162. package/dist/vendor/design/risograph-generator.d.ts.map +1 -0
  163. package/dist/vendor/design/risograph-generator.js +170 -0
  164. package/dist/vendor/design/risograph-generator.js.map +1 -0
  165. package/dist/vendor/design/swiss-style-generator.d.ts +55 -0
  166. package/dist/vendor/design/swiss-style-generator.d.ts.map +1 -0
  167. package/dist/vendor/design/swiss-style-generator.js +147 -0
  168. package/dist/vendor/design/swiss-style-generator.js.map +1 -0
  169. package/dist/vendor/design/vaporwave-generator.d.ts +51 -0
  170. package/dist/vendor/design/vaporwave-generator.d.ts.map +1 -0
  171. package/dist/vendor/design/vaporwave-generator.js +139 -0
  172. package/dist/vendor/design/vaporwave-generator.js.map +1 -0
  173. package/manifest.json +33 -1
  174. package/package.json +13 -5
@@ -0,0 +1,164 @@
1
+ export const POP_ART_PALETTE = {
2
+ yellowCanary: "#ffee00",
3
+ cyanBlue: "#00b4d8",
4
+ magentaElectric: "#ff007f",
5
+ white: "#ffffff",
6
+ blackInk: "#000000",
7
+ };
8
+ /**
9
+ * Procedurally generates a Pop Art comic expression poster layout with Ben-Day dots, speech bubbles, and starburst badges.
10
+ */
11
+ export function generatePopArtPoster(options) {
12
+ const width = options.width ?? 1080;
13
+ const height = options.height ?? 1350;
14
+ const backgroundHex = options.cyanVariant ? POP_ART_PALETTE.cyanBlue : POP_ART_PALETTE.yellowCanary;
15
+ const elements = [];
16
+ // 1. Ben-Day Dot Pattern Overlay
17
+ elements.push({
18
+ id: "pop-art-benday-dots",
19
+ type: "benday_overlay",
20
+ shapeType: "benday_dots",
21
+ fillHex: POP_ART_PALETTE.magentaElectric,
22
+ x: 0,
23
+ y: 0,
24
+ width,
25
+ height,
26
+ });
27
+ // 2. Comic Speech Bubble Container for Main Title
28
+ elements.push({
29
+ id: "pop-art-speech-bubble",
30
+ type: "speech_bubble",
31
+ shapeType: "speech_bubble",
32
+ fillHex: POP_ART_PALETTE.white,
33
+ strokeHex: POP_ART_PALETTE.blackInk,
34
+ strokeWidthPx: 5,
35
+ x: Math.round(width * 0.08),
36
+ y: Math.round(height * 0.1),
37
+ width: Math.round(width * 0.84),
38
+ height: 180,
39
+ rotationDegrees: -3,
40
+ });
41
+ // 3. Bold Comic Headline Typography
42
+ elements.push({
43
+ id: "pop-art-title-text",
44
+ type: "text",
45
+ content: options.title.toUpperCase(),
46
+ fontSize: 58,
47
+ fontWeight: "900",
48
+ fontFamily: "Bangers, Impact, 'Comic Neue', sans-serif",
49
+ fillHex: POP_ART_PALETTE.blackInk,
50
+ x: Math.round(width * 0.1),
51
+ y: Math.round(height * 0.13),
52
+ width: Math.round(width * 0.8),
53
+ height: 110,
54
+ textAlign: "center",
55
+ });
56
+ // 4. Halftone Starburst Badge Accent
57
+ elements.push({
58
+ id: "pop-art-starburst-badge",
59
+ type: "starburst",
60
+ shapeType: "starburst",
61
+ fillHex: options.cyanVariant ? POP_ART_PALETTE.yellowCanary : POP_ART_PALETTE.cyanBlue,
62
+ strokeHex: POP_ART_PALETTE.blackInk,
63
+ strokeWidthPx: 4,
64
+ x: Math.round(width * 0.65),
65
+ y: Math.round(height * 0.38),
66
+ width: 260,
67
+ height: 260,
68
+ rotationDegrees: 12,
69
+ });
70
+ // 5. Text Inside Starburst Badge
71
+ elements.push({
72
+ id: "pop-art-badge-text",
73
+ type: "text",
74
+ content: "BOOM!",
75
+ fontSize: 36,
76
+ fontWeight: "900",
77
+ fontFamily: "Bangers, sans-serif",
78
+ fillHex: POP_ART_PALETTE.magentaElectric,
79
+ strokeHex: POP_ART_PALETTE.blackInk,
80
+ strokeWidthPx: 2,
81
+ x: Math.round(width * 0.67),
82
+ y: Math.round(height * 0.46),
83
+ width: 220,
84
+ height: 60,
85
+ textAlign: "center",
86
+ });
87
+ // 6. Subtitle Card Container
88
+ elements.push({
89
+ id: "pop-art-subtitle-card",
90
+ type: "shape",
91
+ shapeType: "rectangle",
92
+ fillHex: POP_ART_PALETTE.magentaElectric,
93
+ strokeHex: POP_ART_PALETTE.blackInk,
94
+ strokeWidthPx: 4,
95
+ x: Math.round(width * 0.1),
96
+ y: Math.round(height * 0.45),
97
+ width: Math.round(width * 0.5),
98
+ height: 90,
99
+ });
100
+ elements.push({
101
+ id: "pop-art-subtitle-text",
102
+ type: "text",
103
+ content: options.subtitle.toUpperCase(),
104
+ fontSize: 24,
105
+ fontWeight: "900",
106
+ fontFamily: "Bangers, sans-serif",
107
+ fillHex: POP_ART_PALETTE.white,
108
+ x: Math.round(width * 0.12),
109
+ y: Math.round(height * 0.475),
110
+ width: Math.round(width * 0.46),
111
+ height: 50,
112
+ textAlign: "center",
113
+ });
114
+ // 7. Optional Body Copy Block
115
+ if (options.body) {
116
+ elements.push({
117
+ id: "pop-art-body-card",
118
+ type: "shape",
119
+ shapeType: "rectangle",
120
+ fillHex: POP_ART_PALETTE.white,
121
+ strokeHex: POP_ART_PALETTE.blackInk,
122
+ strokeWidthPx: 4,
123
+ x: Math.round(width * 0.1),
124
+ y: Math.round(height * 0.68),
125
+ width: Math.round(width * 0.8),
126
+ height: 180,
127
+ });
128
+ elements.push({
129
+ id: "pop-art-body-text",
130
+ type: "text",
131
+ content: options.body,
132
+ fontSize: 18,
133
+ fontWeight: "700",
134
+ fontFamily: "'Comic Neue', sans-serif",
135
+ fillHex: POP_ART_PALETTE.blackInk,
136
+ x: Math.round(width * 0.12),
137
+ y: Math.round(height * 0.705),
138
+ width: Math.round(width * 0.76),
139
+ height: 140,
140
+ textAlign: "left",
141
+ });
142
+ }
143
+ return {
144
+ id: `pop-art-poster-${Date.now()}`,
145
+ style: "pop_art_expression",
146
+ width,
147
+ height,
148
+ backgroundHex,
149
+ elements,
150
+ metadata: {
151
+ title: options.title,
152
+ createdAt: new Date().toISOString(),
153
+ compositionType: "pop_art_lichtenstein_comic",
154
+ palette: [
155
+ POP_ART_PALETTE.yellowCanary,
156
+ POP_ART_PALETTE.cyanBlue,
157
+ POP_ART_PALETTE.magentaElectric,
158
+ POP_ART_PALETTE.white,
159
+ POP_ART_PALETTE.blackInk,
160
+ ],
161
+ },
162
+ };
163
+ }
164
+ //# sourceMappingURL=pop-art-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pop-art-generator.js","sourceRoot":"","sources":["../../../src/vendor/design/pop-art-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * RISOGRAPH & VINTAGE PRINT STYLE LAYOUT GENERATOR
3
+ *
4
+ * Implements procedural generation of misaligned spot-color ink plates,
5
+ * halftone dot matrix overlays, organic ink bleed, and warm textured paper grain.
6
+ */
7
+ export interface RisographLayoutInput {
8
+ title: string;
9
+ subtitle?: string;
10
+ body?: string;
11
+ imageUri?: string;
12
+ canvasWidth?: number;
13
+ canvasHeight?: number;
14
+ spotInkColorHex?: string;
15
+ }
16
+ export interface RisographLayoutItem {
17
+ id: string;
18
+ type: "text" | "rect" | "image" | "ink_plate" | "halftone_overlay";
19
+ text?: string;
20
+ x: number;
21
+ y: number;
22
+ width?: number;
23
+ height?: number;
24
+ fontSize?: number;
25
+ fontFamily: string;
26
+ fontWeight?: string | number;
27
+ fill: string;
28
+ colorOffsetPx?: number;
29
+ halftonePattern?: boolean;
30
+ paperTexture?: boolean;
31
+ opacity?: number;
32
+ src?: string;
33
+ zIndex: number;
34
+ }
35
+ export interface RisographLayoutResult {
36
+ style: "risograph_print";
37
+ canvas: {
38
+ width: number;
39
+ height: number;
40
+ };
41
+ items: RisographLayoutItem[];
42
+ palette: string[];
43
+ }
44
+ /**
45
+ * Generate a Risograph & Vintage Print Style layout scene graph.
46
+ */
47
+ export declare function generateRisographLayout(input: RisographLayoutInput): RisographLayoutResult;
48
+ export declare function generateRisographArt(options: {
49
+ title: string;
50
+ subtitle?: string;
51
+ body?: string;
52
+ }): RisographLayoutResult;
53
+ //# sourceMappingURL=risograph-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"risograph-generator.d.ts","sourceRoot":"","sources":["../../../src/vendor/design/risograph-generator.ts"],"names":[],"mappings":"AAUA;;;;;GAKG;AAEH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,kBAAkB,CAAC;IACnE,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,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CA2J1F;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,qBAAqB,CAMxH"}
@@ -0,0 +1,170 @@
1
+ /* GENERATED — DO NOT EDIT.
2
+ *
3
+ * Source: mcp-cloud/src/services/risograph-generator.ts
4
+ * sha256: 4a93708b0622d7efa9ef1ab5475359c4c75646306bc1f2005f2339e7adde8028
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
+ * RISOGRAPH & VINTAGE PRINT STYLE LAYOUT GENERATOR
13
+ *
14
+ * Implements procedural generation of misaligned spot-color ink plates,
15
+ * halftone dot matrix overlays, organic ink bleed, and warm textured paper grain.
16
+ */
17
+ /**
18
+ * Generate a Risograph & Vintage Print Style layout scene graph.
19
+ */
20
+ export function generateRisographLayout(input) {
21
+ const width = input.canvasWidth || 1280;
22
+ const height = input.canvasHeight || 720;
23
+ const paperCream = "#fefae0";
24
+ const spotPink = input.spotInkColorHex || "#ff007f"; // Fluorescent Pink spot ink
25
+ const spotBlue = "#0077b6"; // Bright Blue spot ink
26
+ const charcoalInk = "#1d3557";
27
+ const items = [];
28
+ // Background Warm Paper Texture
29
+ items.push({
30
+ id: "riso_paper_bg",
31
+ type: "rect",
32
+ x: 0,
33
+ y: 0,
34
+ width,
35
+ height,
36
+ fontFamily: "Courier Prime, Georgia, serif",
37
+ fill: paperCream,
38
+ paperTexture: true,
39
+ zIndex: 0,
40
+ });
41
+ const marginX = 80;
42
+ const marginY = 64;
43
+ // 1. MISALIGNED SPOT-COLOR BACKGROUND ACCENT PLATE (Pink offset x:+3, y:+2)
44
+ items.push({
45
+ id: "riso_spot_bg_plate",
46
+ type: "ink_plate",
47
+ x: marginX + 3,
48
+ y: marginY + 32 + 2,
49
+ width: Math.round(width * 0.55),
50
+ height: 120,
51
+ fontFamily: "Courier Prime, Georgia, serif",
52
+ fill: spotPink,
53
+ opacity: 0.85,
54
+ colorOffsetPx: 3.5,
55
+ halftonePattern: true,
56
+ zIndex: 1,
57
+ });
58
+ // 2. MAIN CHARCOAL INK TITLE (Overlaying spot plate with slight offset)
59
+ items.push({
60
+ id: "riso_title_plate",
61
+ type: "text",
62
+ text: input.title,
63
+ x: marginX,
64
+ y: marginY + 32,
65
+ width: Math.round(width * 0.6),
66
+ fontSize: 52,
67
+ fontFamily: "Courier Prime, Georgia, serif",
68
+ fontWeight: "bold",
69
+ fill: charcoalInk,
70
+ colorOffsetPx: 2.0,
71
+ zIndex: 2,
72
+ });
73
+ let currentY = marginY + 160;
74
+ // Subtitle in Bright Blue Spot Ink
75
+ if (input.subtitle) {
76
+ // Misaligned shadow layer for subtitle
77
+ items.push({
78
+ id: "riso_subtitle_shadow",
79
+ type: "text",
80
+ text: input.subtitle,
81
+ x: marginX - 3,
82
+ y: currentY - 2,
83
+ width: Math.round(width * 0.5),
84
+ fontSize: 24,
85
+ fontFamily: "Courier Prime, Georgia, serif",
86
+ fontWeight: "bold",
87
+ fill: spotPink,
88
+ opacity: 0.6,
89
+ colorOffsetPx: 3.0,
90
+ zIndex: 2,
91
+ });
92
+ items.push({
93
+ id: "riso_subtitle",
94
+ type: "text",
95
+ text: input.subtitle,
96
+ x: marginX,
97
+ y: currentY,
98
+ width: Math.round(width * 0.5),
99
+ fontSize: 24,
100
+ fontFamily: "Courier Prime, Georgia, serif",
101
+ fontWeight: "bold",
102
+ fill: spotBlue,
103
+ colorOffsetPx: 2.0,
104
+ zIndex: 3,
105
+ });
106
+ currentY += 48;
107
+ }
108
+ // Body Copy in Charcoal Ink
109
+ if (input.body) {
110
+ items.push({
111
+ id: "riso_body",
112
+ type: "text",
113
+ text: input.body,
114
+ x: marginX,
115
+ y: currentY,
116
+ width: Math.round(width * 0.5),
117
+ fontSize: 16,
118
+ fontFamily: "Courier Prime, Georgia, serif",
119
+ fontWeight: "normal",
120
+ fill: charcoalInk,
121
+ zIndex: 3,
122
+ });
123
+ }
124
+ // Optional Image with Halftone Dot Overlay
125
+ if (input.imageUri) {
126
+ const imgX = marginX + Math.round(width * 0.5) + 32;
127
+ items.push({
128
+ id: "riso_image_plate",
129
+ type: "image",
130
+ src: input.imageUri,
131
+ x: imgX,
132
+ y: marginY + 32,
133
+ width: Math.round(width * 0.35),
134
+ height: Math.round(height * 0.65),
135
+ fontFamily: "Courier Prime, Georgia, serif",
136
+ fill: charcoalInk,
137
+ colorOffsetPx: 4.0,
138
+ halftonePattern: true,
139
+ zIndex: 2,
140
+ });
141
+ }
142
+ // Halftone Dot Matrix Texture Overlay
143
+ items.push({
144
+ id: "riso_halftone_overlay",
145
+ type: "halftone_overlay",
146
+ x: 0,
147
+ y: 0,
148
+ width,
149
+ height,
150
+ fontFamily: "Courier Prime, Georgia, serif",
151
+ fill: "rgba(29, 53, 87, 0.12)",
152
+ halftonePattern: true,
153
+ paperTexture: true,
154
+ zIndex: 10,
155
+ });
156
+ return {
157
+ style: "risograph_print",
158
+ canvas: { width, height },
159
+ items,
160
+ palette: [paperCream, spotPink, spotBlue, charcoalInk, "#ffb703"],
161
+ };
162
+ }
163
+ export function generateRisographArt(options) {
164
+ return generateRisographLayout({
165
+ title: options.title,
166
+ subtitle: options.subtitle,
167
+ body: options.body,
168
+ });
169
+ }
170
+ //# sourceMappingURL=risograph-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"risograph-generator.js","sourceRoot":"","sources":["../../../src/vendor/design/risograph-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * SWISS / INTERNATIONAL TYPOGRAPHIC STYLE LAYOUT GENERATOR
3
+ *
4
+ * Implements procedural generation of asymmetric, mathematically balanced layouts based on:
5
+ * - 8pt / 16pt / 32pt grid columns.
6
+ * - Modular font size scale (16, 24, 36, 54, 81).
7
+ * - Flush-left, rag-right typography.
8
+ * - High-contrast Swiss Red (#e63946), Black (#000000), White (#ffffff) palette.
9
+ */
10
+ export interface SwissLayoutInput {
11
+ title: string;
12
+ subtitle?: string;
13
+ body?: string;
14
+ imageUri?: string;
15
+ canvasWidth?: number;
16
+ canvasHeight?: number;
17
+ accentColor?: string;
18
+ }
19
+ export interface SwissLayoutItem {
20
+ id: string;
21
+ type: "text" | "rect" | "image";
22
+ text?: string;
23
+ x: number;
24
+ y: number;
25
+ width?: number;
26
+ height?: number;
27
+ fontSize?: number;
28
+ fontFamily: string;
29
+ fontWeight?: string | number;
30
+ textAlign: "left";
31
+ fill: string;
32
+ src?: string;
33
+ zIndex: number;
34
+ }
35
+ export interface SwissLayoutResult {
36
+ style: "swiss_typographic";
37
+ canvas: {
38
+ width: number;
39
+ height: number;
40
+ };
41
+ gridColumns: number;
42
+ gutterPx: number;
43
+ items: SwissLayoutItem[];
44
+ palette: string[];
45
+ }
46
+ /**
47
+ * Generate a Swiss International Typographic layout scene graph.
48
+ */
49
+ export declare function generateSwissStyleLayout(input: SwissLayoutInput): SwissLayoutResult;
50
+ export declare function generateSwissPoster(options: {
51
+ title: string;
52
+ subtitle?: string;
53
+ body?: string;
54
+ }): SwissLayoutResult;
55
+ //# sourceMappingURL=swiss-style-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swiss-style-generator.d.ts","sourceRoot":"","sources":["../../../src/vendor/design/swiss-style-generator.ts"],"names":[],"mappings":"AAUA;;;;;;;;GAQG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAChC,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,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CA+HnF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAMnH"}
@@ -0,0 +1,147 @@
1
+ /* GENERATED — DO NOT EDIT.
2
+ *
3
+ * Source: mcp-cloud/src/services/swiss-style-generator.ts
4
+ * sha256: 6d132e15a6bdd2c508c2171e6c8260044efb5b10e470a4ac1315b1555cb23ba5
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
+ * SWISS / INTERNATIONAL TYPOGRAPHIC STYLE LAYOUT GENERATOR
13
+ *
14
+ * Implements procedural generation of asymmetric, mathematically balanced layouts based on:
15
+ * - 8pt / 16pt / 32pt grid columns.
16
+ * - Modular font size scale (16, 24, 36, 54, 81).
17
+ * - Flush-left, rag-right typography.
18
+ * - High-contrast Swiss Red (#e63946), Black (#000000), White (#ffffff) palette.
19
+ */
20
+ /**
21
+ * Generate a Swiss International Typographic layout scene graph.
22
+ */
23
+ export function generateSwissStyleLayout(input) {
24
+ const width = input.canvasWidth || 1280;
25
+ const height = input.canvasHeight || 720;
26
+ const accentColor = input.accentColor || "#e63946"; // Swiss Red
27
+ const primaryColor = "#000000";
28
+ const bgColor = "#f8fafc";
29
+ // Grid setup: 12-column grid snapped to 8pt multiples
30
+ const marginX = 64; // 8 * 8
31
+ const marginY = 64;
32
+ const gutterPx = 16; // 8 * 2
33
+ const gridColumns = 12;
34
+ const contentWidth = width - marginX * 2;
35
+ const items = [];
36
+ // Background card / canvas fill
37
+ items.push({
38
+ id: "swiss_bg",
39
+ type: "rect",
40
+ x: 0,
41
+ y: 0,
42
+ width,
43
+ height,
44
+ fontFamily: "Inter, Helvetica, sans-serif",
45
+ textAlign: "left",
46
+ fill: bgColor,
47
+ zIndex: 0,
48
+ });
49
+ // Top accent rules line (Swiss architectural grid mark)
50
+ items.push({
51
+ id: "swiss_accent_bar",
52
+ type: "rect",
53
+ x: marginX,
54
+ y: marginY,
55
+ width: 64, // 8 * 8
56
+ height: 8,
57
+ fontFamily: "Inter, Helvetica, sans-serif",
58
+ textAlign: "left",
59
+ fill: accentColor,
60
+ zIndex: 1,
61
+ });
62
+ // Main Headline (large display size 54px or 81px on modular scale)
63
+ const titleY = marginY + 32;
64
+ items.push({
65
+ id: "swiss_title",
66
+ type: "text",
67
+ text: input.title,
68
+ x: marginX,
69
+ y: titleY,
70
+ width: Math.round((contentWidth * 0.6) / 8) * 8, // ~60% column width on 8pt grid
71
+ fontSize: 54,
72
+ fontFamily: "Inter, Helvetica, sans-serif",
73
+ fontWeight: "bold",
74
+ textAlign: "left",
75
+ fill: primaryColor,
76
+ zIndex: 2,
77
+ });
78
+ let currentY = titleY + 80;
79
+ // Optional Subtitle
80
+ if (input.subtitle) {
81
+ items.push({
82
+ id: "swiss_subtitle",
83
+ type: "text",
84
+ text: input.subtitle,
85
+ x: marginX,
86
+ y: currentY,
87
+ width: Math.round((contentWidth * 0.5) / 8) * 8,
88
+ fontSize: 24,
89
+ fontFamily: "Inter, Helvetica, sans-serif",
90
+ fontWeight: "medium",
91
+ textAlign: "left",
92
+ fill: accentColor,
93
+ zIndex: 2,
94
+ });
95
+ currentY += 48;
96
+ }
97
+ // Optional Body Copy Column
98
+ if (input.body) {
99
+ items.push({
100
+ id: "swiss_body",
101
+ type: "text",
102
+ text: input.body,
103
+ x: marginX,
104
+ y: currentY,
105
+ width: Math.round((contentWidth * 0.45) / 8) * 8,
106
+ fontSize: 16,
107
+ fontFamily: "Inter, Helvetica, sans-serif",
108
+ fontWeight: "normal",
109
+ textAlign: "left",
110
+ fill: primaryColor,
111
+ zIndex: 2,
112
+ });
113
+ }
114
+ // Optional Right-Aligned Asymmetric Image Block
115
+ if (input.imageUri) {
116
+ const imgX = marginX + Math.round((contentWidth * 0.5) / 8) * 8 + gutterPx;
117
+ items.push({
118
+ id: "swiss_image",
119
+ type: "image",
120
+ src: input.imageUri,
121
+ x: Math.round(imgX / 8) * 8,
122
+ y: marginY + 32,
123
+ width: Math.round((contentWidth * 0.45) / 8) * 8,
124
+ height: Math.round((height - marginY * 2 - 32) / 8) * 8,
125
+ fontFamily: "Inter, Helvetica, sans-serif",
126
+ textAlign: "left",
127
+ fill: primaryColor,
128
+ zIndex: 2,
129
+ });
130
+ }
131
+ return {
132
+ style: "swiss_typographic",
133
+ canvas: { width, height },
134
+ gridColumns,
135
+ gutterPx,
136
+ items,
137
+ palette: [primaryColor, bgColor, accentColor, "#ffffff"],
138
+ };
139
+ }
140
+ export function generateSwissPoster(options) {
141
+ return generateSwissStyleLayout({
142
+ title: options.title,
143
+ subtitle: options.subtitle,
144
+ body: options.body,
145
+ });
146
+ }
147
+ //# sourceMappingURL=swiss-style-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swiss-style-generator.js","sourceRoot":"","sources":["../../../src/vendor/design/swiss-style-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH;;;;;;;;GAQG;AAsCH;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAuB;IAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC;IACzC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC,YAAY;IAChE,MAAM,YAAY,GAAG,SAAS,CAAC;IAC/B,MAAM,OAAO,GAAG,SAAS,CAAC;IAE1B,sDAAsD;IACtD,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ;IAC5B,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,QAAQ;IAC7B,MAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC;IAEzC,MAAM,KAAK,GAAsB,EAAE,CAAC;IAEpC,gCAAgC;IAChC,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,MAAM;QACZ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,KAAK;QACL,MAAM;QACN,UAAU,EAAE,8BAA8B;QAC1C,SAAS,EAAE,MAAM;QACjB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,wDAAwD;IACxD,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,MAAM;QACZ,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,OAAO;QACV,KAAK,EAAE,EAAE,EAAE,QAAQ;QACnB,MAAM,EAAE,CAAC;QACT,UAAU,EAAE,8BAA8B;QAC1C,SAAS,EAAE,MAAM;QACjB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,mEAAmE;IACnE,MAAM,MAAM,GAAG,OAAO,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC;QACT,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,KAAK,CAAC,KAAK;QACjB,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,MAAM;QACT,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,gCAAgC;QACjF,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,8BAA8B;QAC1C,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,MAAM;QACjB,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,CAAC;KACV,CAAC,CAAC;IAEH,IAAI,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC;IAE3B,oBAAoB;IACpB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,gBAAgB;YACpB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,CAAC,QAAQ;YACpB,CAAC,EAAE,OAAO;YACV,CAAC,EAAE,QAAQ;YACX,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;YAC/C,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,8BAA8B;YAC1C,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QACH,QAAQ,IAAI,EAAE,CAAC;IACjB,CAAC;IAED,4BAA4B;IAC5B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,CAAC,EAAE,OAAO;YACV,CAAC,EAAE,QAAQ;YACX,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;YAChD,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,8BAA8B;YAC1C,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;IACL,CAAC;IAED,gDAAgD;IAChD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;QAC3E,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,aAAa;YACjB,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,KAAK,CAAC,QAAQ;YACnB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;YAC3B,CAAC,EAAE,OAAO,GAAG,EAAE;YACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;YAChD,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;YACvD,UAAU,EAAE,8BAA8B;YAC1C,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QACzB,WAAW;QACX,QAAQ;QACR,KAAK;QACL,OAAO,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAA4D;IAC9F,OAAO,wBAAwB,CAAC;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,51 @@
1
+ import type { DesignStyle } from "./design-style.js";
2
+ export interface VaporwaveElement {
3
+ id: string;
4
+ type: "text" | "shape" | "sun_disk" | "wireframe_grid" | "kanji_subtitle";
5
+ shapeType?: "sun_disk" | "perspective_grid" | "chrome_bar" | "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
+ textAlign?: "left" | "center" | "right";
18
+ }
19
+ export interface VaporwavePosterOptions {
20
+ title: string;
21
+ subtitle: string;
22
+ body?: string;
23
+ width?: number;
24
+ height?: number;
25
+ }
26
+ export interface VaporwaveDesignScene {
27
+ id: string;
28
+ style: DesignStyle;
29
+ width: number;
30
+ height: number;
31
+ backgroundHex: string;
32
+ elements: VaporwaveElement[];
33
+ metadata: {
34
+ title: string;
35
+ createdAt: string;
36
+ compositionType: "vaporwave_synthwave_retro";
37
+ palette: string[];
38
+ };
39
+ }
40
+ export declare const VAPORWAVE_PALETTE: {
41
+ deepPurpleVoid: string;
42
+ neonPink: string;
43
+ cyanGlow: string;
44
+ sunsetMagenta: string;
45
+ yellowCanary: string;
46
+ };
47
+ /**
48
+ * Procedurally generates a Vaporwave & Synthwave retro poster layout with a digital sunset disk and 3D wireframe grid.
49
+ */
50
+ export declare function generateVaporwavePoster(options: VaporwavePosterOptions): VaporwaveDesignScene;
51
+ //# sourceMappingURL=vaporwave-generator.d.ts.map