@popcraft/kit 0.30.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/dist/chunks/{agent-CGSIEC2R.js → agent-LNZDZLDR.js} +1 -1
  2. package/dist/chunks/{build-AUXXY3JX.js → build-AKMRSWRB.js} +2 -2
  3. package/dist/chunks/{builtin-Q5UN4DWS.js → builtin-KY56DU2Y.js} +3 -3
  4. package/dist/chunks/{check-template-2EKU4JL7.js → check-template-OYCBJNDF.js} +2 -2
  5. package/dist/chunks/{chunk-YT6TGRM4.js → chunk-2PEG56PC.js} +40 -26
  6. package/dist/chunks/{chunk-KOKO3HTP.js → chunk-3NI5OGFT.js} +1 -1
  7. package/dist/chunks/{chunk-TQPKOPCW.js → chunk-3ZO43HDI.js} +2 -2
  8. package/dist/chunks/{chunk-MJ6VIF3D.js → chunk-4X5G4QPZ.js} +1 -1
  9. package/dist/chunks/{chunk-3MAEAHID.js → chunk-6CRT7IDI.js} +2 -2
  10. package/dist/chunks/chunk-6S72I27Z.js +194 -0
  11. package/dist/chunks/chunk-7DKGI65Y.js +305 -0
  12. package/dist/chunks/chunk-APBRV4W6.js +71 -0
  13. package/dist/chunks/{chunk-AN3H4JWT.js → chunk-APVJKUJP.js} +4 -4
  14. package/dist/chunks/chunk-CGNNKKW7.js +70 -0
  15. package/dist/chunks/{chunk-IPEOO7PN.js → chunk-CKBPEGTH.js} +2 -2
  16. package/dist/chunks/chunk-COJM27N2.js +73 -0
  17. package/dist/chunks/chunk-CVB5F7FJ.js +92 -0
  18. package/dist/chunks/{chunk-DVX7UAKA.js → chunk-DQ7AF2R5.js} +1 -1
  19. package/dist/chunks/{chunk-UHQTNURS.js → chunk-DVD56API.js} +5 -5
  20. package/dist/chunks/{chunk-UM6QUOOH.js → chunk-DZIPU2Q4.js} +3 -3
  21. package/dist/chunks/{chunk-7QYQVENQ.js → chunk-FC2FGSU2.js} +5 -5
  22. package/dist/chunks/{chunk-T2GF6JE3.js → chunk-GAZ57RX2.js} +1 -1
  23. package/dist/chunks/{chunk-R3D5OMSG.js → chunk-GF6N47NL.js} +1 -1
  24. package/dist/chunks/{chunk-3DNAX4HN.js → chunk-HBPURYPZ.js} +2 -2
  25. package/dist/chunks/{chunk-7J4MGACN.js → chunk-HN2A65AT.js} +10 -10
  26. package/dist/chunks/{chunk-HST5H23G.js → chunk-JRQ4ZPRK.js} +1 -1
  27. package/dist/chunks/chunk-LP7LPUQJ.js +81 -0
  28. package/dist/chunks/chunk-M2LWLS56.js +65 -0
  29. package/dist/chunks/{chunk-GT5X67P7.js → chunk-MFPMMKHP.js} +7 -7
  30. package/dist/chunks/{chunk-LE33OZ4V.js → chunk-N2RBQBUE.js} +43 -43
  31. package/dist/chunks/{chunk-DUYDXAR5.js → chunk-O3W7HYS7.js} +1 -1
  32. package/dist/chunks/chunk-OXI222BA.js +54 -0
  33. package/dist/chunks/chunk-P23KECK3.js +57 -0
  34. package/dist/chunks/{chunk-LNQN4PGS.js → chunk-P5M5QCAJ.js} +24 -24
  35. package/dist/chunks/{chunk-X3HT5IHG.js → chunk-POZOGQG7.js} +11 -11
  36. package/dist/chunks/{chunk-K7OOOI7B.js → chunk-QGE2XW66.js} +4 -4
  37. package/dist/chunks/{chunk-STG7FEIQ.js → chunk-S4Y3VMQH.js} +3 -3
  38. package/dist/chunks/chunk-UBT4DZYW.js +304 -0
  39. package/dist/chunks/chunk-UJTTWR5P.js +71 -0
  40. package/dist/chunks/{chunk-652VC4P7.js → chunk-UNAAYJKD.js} +39 -39
  41. package/dist/chunks/{chunk-AXKXWL35.js → chunk-WKKHCEXN.js} +5 -5
  42. package/dist/chunks/chunk-X22CGIKE.js +75 -0
  43. package/dist/chunks/chunk-X4UI5JKC.js +74 -0
  44. package/dist/chunks/chunk-XQJ2VVC6.js +69 -0
  45. package/dist/chunks/{chunk-CQ6QGYKJ.js → chunk-YI7HCLNY.js} +1 -1
  46. package/dist/chunks/{chunk-CVWIMZTL.js → chunk-YOYWFBRJ.js} +53 -53
  47. package/dist/chunks/chunk-ZBFR7DBR.js +70 -0
  48. package/dist/chunks/{chunk-KO24NRJ5.js → chunk-ZW7KTUDU.js} +2 -2
  49. package/dist/chunks/chunk-ZY3DR3P6.js +63 -0
  50. package/dist/chunks/chunk-ZYNF7B6N.js +70 -0
  51. package/dist/chunks/{client-NBSGVJPN.js → client-ORABD53R.js} +2 -2
  52. package/dist/chunks/{client-5YPZUV5L.js → client-YF3PYAFZ.js} +2 -2
  53. package/dist/chunks/{client-3FYDPRVC.js → client-YOSPARZX.js} +1 -1
  54. package/dist/chunks/{client-actions-J2SQWW4O.js → client-actions-LYJHQ4IE.js} +4 -4
  55. package/dist/chunks/{dangerous-3EDPWONV.js → dangerous-VCZB63L6.js} +3 -3
  56. package/dist/chunks/{editor-seams-NG3BESM6.js → editor-seams-4PF6BD4R.js} +9 -9
  57. package/dist/chunks/{editor-store-NDV4IXDK.js → editor-store-UAEROYSB.js} +1 -1
  58. package/dist/chunks/{export-watermark-SNBNUS3L.js → export-watermark-2N7ALJXN.js} +5 -5
  59. package/dist/chunks/{eyedropper-L5DVFZV5.js → eyedropper-3P75IZGM.js} +1 -1
  60. package/dist/chunks/{generate-media-ASNNFDML.js → generate-media-DYXU4BZL.js} +2 -2
  61. package/dist/chunks/{host-5DYGKFJ7.js → host-J4QG5WB7.js} +6 -6
  62. package/dist/chunks/{integrations-2BG5XVX3.js → integrations-KGJ2HE6V.js} +1 -1
  63. package/dist/chunks/{kit-modules-NMONCEP4.js → kit-modules-4HQU5EI2.js} +1 -1
  64. package/dist/chunks/{libraries-QV4QPEYK.js → libraries-NIRTR2IA.js} +5 -5
  65. package/dist/chunks/{live-EI26E2RB.js → live-XZKNAJ2I.js} +3 -3
  66. package/dist/chunks/{media-tool-OVVKBD3N.js → media-tool-YFIYMYI5.js} +1 -1
  67. package/dist/chunks/{new-file-DX5L4NF6.js → new-file-RNWHN4S6.js} +3 -3
  68. package/dist/chunks/{plugin-P6FYIVKR.js → plugin-AN5GLVH5.js} +2 -2
  69. package/dist/chunks/{plugin-import-V2ORN2OW.js → plugin-import-J5ZNYSIY.js} +13 -13
  70. package/dist/chunks/{presence-YNIJGI73.js → presence-YNSLRFAM.js} +2 -2
  71. package/dist/chunks/{project-UK457FEX.js → project-HSN7DOPK.js} +1 -1
  72. package/dist/chunks/{publish-site-E4A557HC.js → publish-site-T2C4IDD2.js} +6 -6
  73. package/dist/chunks/{publish-store-U5SDQCU4.js → publish-store-I2FOGDDF.js} +4 -4
  74. package/dist/chunks/{raster-actions-4E7H3G62.js → raster-actions-IVIGDYQU.js} +1 -1
  75. package/dist/chunks/{runner-DHWGPGPD.js → runner-IOXTGHBT.js} +16 -16
  76. package/dist/chunks/{store-CUL3XS5L.js → store-ZVOK3773.js} +5 -5
  77. package/dist/chunks/{sync-U23VGFOY.js → sync-XT2ZCTVE.js} +5 -5
  78. package/dist/chunks/{tabs-K6MESOUX.js → tabs-RIIW7KNI.js} +8 -8
  79. package/dist/chunks/{team-7APVVP43.js → team-KM3FZ6AU.js} +1 -1
  80. package/dist/chunks/{team-client-XTH5DXVW.js → team-client-2EXJKRDB.js} +1 -1
  81. package/dist/chunks/{tools-PE6DEYSG.js → tools-5ISIPPXP.js} +2 -2
  82. package/dist/chunks/{ui-commands-WQJFLB5K.js → ui-commands-GYCIF7UQ.js} +11 -11
  83. package/dist/chunks/{versions-Y4F3IO37.js → versions-JCQTXXUB.js} +5 -5
  84. package/dist/fonts/chars.txt +1 -1
  85. package/dist/index.js +4 -4
  86. package/dist/seed/files.json +1 -1
  87. package/dist/seed/popcraft.comic-nested.json.gz +0 -0
  88. package/dist/seed/popcraft.comic-pinup.json.gz +0 -0
  89. package/dist/templates/count.js +1 -1
  90. package/dist/templates/index.js +226 -210
  91. package/dist/templates/index.json +663 -0
  92. package/dist/templates/motion/landing-hero/index.js +4 -4
  93. package/dist/templates/motion/launch-trailer/document.js +226 -210
  94. package/dist/templates/motion/launch-trailer/index.js +4 -4
  95. package/dist/templates/motion/launch-trailer/scenes.js +3 -3
  96. package/dist/templates/motion/template-wall.js +2 -2
  97. package/dist/templates/print/comic-hero-cascade.js +100 -0
  98. package/dist/templates/print/comic-hero-chase.js +100 -0
  99. package/dist/templates/print/comic-hero-cover-modern.js +100 -0
  100. package/dist/templates/print/comic-hero-grid-break.js +100 -0
  101. package/dist/templates/print/comic-hero-interrogation.js +100 -0
  102. package/dist/templates/print/comic-hero-issue.js +109 -0
  103. package/dist/templates/print/comic-hero-manga-action.js +100 -0
  104. package/dist/templates/print/comic-hero-nested.js +100 -0
  105. package/dist/templates/print/comic-hero-overlap.js +100 -0
  106. package/dist/templates/print/comic-hero-parallel.js +100 -0
  107. package/dist/templates/print/comic-hero-pinup.js +100 -0
  108. package/dist/templates/print/comic-hero-widescreen.js +100 -0
  109. package/dist/templates/print/comic-modern-issue.js +4 -4
  110. package/dist/templates/saas/email-decks.js +2 -2
  111. package/dist/templates/saas/index.js +62 -62
  112. package/dist/templates/saas/launch-kit.js +5 -5
  113. package/dist/templates/saas/launch-video.js +2 -2
  114. package/dist/templates/saas/stores.js +4 -4
  115. package/dist/templates/slideshow/index.js +3 -3
  116. package/dist/templates/themes/bauhaus.js +2 -2
  117. package/dist/templates/themes/black-friday-coupons.js +2 -2
  118. package/dist/templates/themes/blueprint.js +2 -2
  119. package/dist/templates/themes/claymation.js +2 -2
  120. package/dist/templates/themes/comic-book.js +5 -5
  121. package/dist/{chunks/chunk-ATEECJLR.js → templates/themes/comic-hero-art.js} +11 -9
  122. package/dist/templates/themes/comic-hero-page.js +67 -0
  123. package/dist/templates/themes/comic-hero.js +97 -1
  124. package/dist/{chunks/chunk-ODXZPZKI.js → templates/themes/comic-indie-art.js} +7 -9
  125. package/dist/templates/themes/comic-indie-page.js +47 -0
  126. package/dist/templates/themes/comic-indie.js +85 -1
  127. package/dist/templates/themes/cyberpunk.js +2 -2
  128. package/dist/templates/themes/everyday.js +2 -2
  129. package/dist/templates/themes/festival-presale-family-a.js +2 -2
  130. package/dist/templates/themes/festival-presale-family-b.js +2 -2
  131. package/dist/templates/themes/holidays.js +11 -11
  132. package/dist/templates/themes/index.js +127 -111
  133. package/dist/templates/themes/lunar-new-year.js +2 -2
  134. package/dist/templates/themes/manuscript.js +2 -2
  135. package/dist/templates/themes/memories.js +5 -5
  136. package/dist/templates/themes/noir.js +2 -2
  137. package/dist/templates/themes/printshop.js +14 -14
  138. package/dist/templates/themes/psychedelic.js +2 -2
  139. package/dist/templates/themes/space-opera.js +2 -2
  140. package/dist/templates/themes/studio.js +2 -2
  141. package/dist/templates/themes/tour-tickets.js +2 -2
  142. package/package.json +1 -1
  143. package/src/templates/print/comic-hero-cascade.ts +42 -0
  144. package/src/templates/print/comic-hero-chase.ts +42 -0
  145. package/src/templates/print/comic-hero-cover-modern.ts +34 -0
  146. package/src/templates/print/comic-hero-grid-break.ts +39 -0
  147. package/src/templates/print/comic-hero-interrogation.ts +41 -0
  148. package/src/templates/print/comic-hero-issue.ts +44 -0
  149. package/src/templates/print/comic-hero-manga-action.ts +38 -0
  150. package/src/templates/print/comic-hero-nested.ts +39 -0
  151. package/src/templates/print/comic-hero-overlap.ts +40 -0
  152. package/src/templates/print/comic-hero-parallel.ts +40 -0
  153. package/src/templates/print/comic-hero-pinup.ts +29 -0
  154. package/src/templates/print/comic-hero-widescreen.ts +35 -0
  155. package/src/templates/themes/comic-hero-art.ts +66 -0
  156. package/src/templates/themes/comic-hero-page.ts +326 -0
  157. package/src/templates/themes/comic-hero.ts +15 -2
  158. package/src/templates/themes/comic-indie-art.ts +73 -0
  159. package/src/templates/themes/comic-indie-page.ts +182 -0
  160. package/src/templates/themes/comic-indie.ts +280 -2
  161. package/types/templates/src/print/comic-hero-cascade.d.ts +5 -0
  162. package/types/templates/src/print/comic-hero-chase.d.ts +5 -0
  163. package/types/templates/src/print/comic-hero-cover-modern.d.ts +5 -0
  164. package/types/templates/src/print/comic-hero-grid-break.d.ts +5 -0
  165. package/types/templates/src/print/comic-hero-interrogation.d.ts +5 -0
  166. package/types/templates/src/print/comic-hero-issue.d.ts +2 -0
  167. package/types/templates/src/print/comic-hero-manga-action.d.ts +5 -0
  168. package/types/templates/src/print/comic-hero-nested.d.ts +5 -0
  169. package/types/templates/src/print/comic-hero-overlap.d.ts +5 -0
  170. package/types/templates/src/print/comic-hero-parallel.d.ts +5 -0
  171. package/types/templates/src/print/comic-hero-pinup.d.ts +5 -0
  172. package/types/templates/src/print/comic-hero-widescreen.d.ts +5 -0
  173. package/types/templates/src/themes/comic-hero-art.d.ts +318 -0
  174. package/types/templates/src/themes/comic-hero-page.d.ts +177 -0
  175. package/types/templates/src/themes/comic-indie-art.d.ts +371 -0
  176. package/types/templates/src/themes/comic-indie-page.d.ts +125 -0
  177. package/dist/chunks/{chunk-BAZUZXS6.js → chunk-2BVGM5PJ.js} +3 -3
  178. package/dist/chunks/{chunk-WXY6LWRB.js → chunk-2J3PCCBE.js} +3 -3
  179. package/dist/chunks/{chunk-RH6WJNB4.js → chunk-2ZOSBENB.js} +3 -3
  180. package/dist/chunks/{chunk-FLXSWF6O.js → chunk-5GSRWIV2.js} +3 -3
  181. package/dist/chunks/{chunk-2WCMIJSA.js → chunk-5NGWNEKU.js} +3 -3
  182. package/dist/chunks/{chunk-IUK367P7.js → chunk-5PSOLUKI.js} +0 -0
  183. package/dist/chunks/{chunk-RUBJMQMF.js → chunk-7A3MIEOO.js} +3 -3
  184. package/dist/chunks/{chunk-R66IPFG4.js → chunk-7D46BJKY.js} +32 -32
  185. package/dist/chunks/{chunk-6H5ULKBL.js → chunk-7KFQX6N5.js} +3 -3
  186. package/dist/chunks/{chunk-EWGXFNXM.js → chunk-DF5IDTZB.js} +3 -3
  187. package/dist/chunks/{chunk-VT7UU3UP.js → chunk-ESV3AAQ4.js} +3 -3
  188. package/dist/chunks/{chunk-UJORPKRW.js → chunk-GN5W7TJD.js} +3 -3
  189. package/dist/chunks/{chunk-HQAHQJHQ.js → chunk-IPRJUV2O.js} +9 -9
  190. package/dist/chunks/{chunk-JVKC6UFV.js → chunk-KWXWK2LA.js} +3 -3
  191. package/dist/chunks/{chunk-PN6KHUSF.js → chunk-LOQNCZFE.js} +3 -3
  192. package/dist/chunks/{chunk-AKCMEBIQ.js → chunk-MNN76UQS.js} +12 -12
  193. package/dist/chunks/{chunk-ZRK4E77C.js → chunk-OGZJE5X2.js} +3 -3
  194. package/dist/chunks/{chunk-OTJJNSLB.js → chunk-PEDQKANG.js} +3 -3
  195. package/dist/chunks/{chunk-LDIYJJ24.js → chunk-PTRN7H4N.js} +11 -11
  196. package/dist/chunks/{chunk-J3XCBROI.js → chunk-QQMSM7EK.js} +3 -3
  197. package/dist/chunks/{chunk-FRFW37G6.js → chunk-TBIZI5NH.js} +3 -3
  198. package/dist/chunks/{chunk-BSX52WVT.js → chunk-UTFC2DI3.js} +8 -8
  199. package/dist/chunks/{chunk-GTR25NJ5.js → chunk-XIIFQUWN.js} +3 -3
  200. package/dist/chunks/{chunk-PGUAHUFE.js → chunk-XTFV46GB.js} +9 -9
  201. package/dist/chunks/{chunk-4ENF3NH3.js → chunk-ZLVYZPUR.js} +28 -28
@@ -0,0 +1,318 @@
1
+ /** The style line every panel prompt starts with. */
2
+ export declare const STYLE = "Gritty energetic modern indie action comic art, rough expressive brush inks, scratchy hatching, explosive motion, raw kinetic linework.";
3
+ /** The cast, each a fixed sentence reused word for word in every prompt they appear in. */
4
+ export declare const CAST: {
5
+ readonly nightstar: "Nightstar is an original masked hero: a lean athletic man in a sleek midnight-blue bodysuit with a large gold five-pointed star emblem on the chest, a midnight-blue cowl mask covering the upper face, gold gloves and gold boots.";
6
+ readonly voltrix: "Voltrix is an original villain: a hulking bald man in scorched charcoal-grey armour plating with crackling green electric coils on his shoulders and round glowing green goggles.";
7
+ readonly rosa: "Rosa is an original young woman bike courier with a curly black ponytail, a bright yellow rain jacket, a red messenger bag and a white cycling helmet.";
8
+ };
9
+ export declare const ART: {
10
+ readonly cover: {
11
+ readonly hash: "0520923bafe128b0edbdcc30fd65a023";
12
+ readonly width: 768;
13
+ readonly height: 1152;
14
+ readonly subject: "Low-angle cover shot: Nightstar bursts upward through a shattering neon-lit night sky over a rain-soaked city, fist forward, while the giant shadowy figure of Voltrix looms behind him wreathed in green lightning.";
15
+ };
16
+ readonly 'chase-1': {
17
+ readonly hash: "5ef8494cf4126515d8fca8060f411195";
18
+ readonly width: 1152;
19
+ readonly height: 651;
20
+ readonly subject: "Establishing wide shot: a city power substation at midnight in the rain, Voltrix tearing a transformer open with his bare hands, green electricity arcing everywhere.";
21
+ };
22
+ readonly 'chase-2': {
23
+ readonly hash: "1365a184ce73877fc228f8990656c17d";
24
+ readonly width: 1024;
25
+ readonly height: 1024;
26
+ readonly subject: "Medium shot: Nightstar crouched on a gargoyle ledge high above the rainy city, looking down, cape-less, alert.";
27
+ };
28
+ readonly 'chase-3': {
29
+ readonly hash: "f1b38bcc56e2f6aa164528c7940fe9a8";
30
+ readonly width: 1152;
31
+ readonly height: 651;
32
+ readonly subject: "Action: Voltrix smashes through a brick wall onto a rooftop and runs, Nightstar sprinting after him across the rooftops, rain and debris flying.";
33
+ };
34
+ readonly 'chase-4': {
35
+ readonly hash: "40ef203c1fad0b155377653cc3ad6717";
36
+ readonly width: 1152;
37
+ readonly height: 651;
38
+ readonly subject: "Nightstar leaps across a wide gap between two skyscrapers, seen from below, the street far beneath, body stretched, explosive motion.";
39
+ };
40
+ readonly 'chase-5': {
41
+ readonly hash: "9e5b62ed93b6cf6a76edfbb87e74c09e";
42
+ readonly width: 1024;
43
+ readonly height: 1024;
44
+ readonly subject: "Close-up: Voltrix glancing back over his shoulder with a snarl, green goggles blazing, sparks in the rain.";
45
+ };
46
+ readonly 'chase-6': {
47
+ readonly hash: "c4fe9f3ce9be13c97f930513fca1e3bc";
48
+ readonly width: 1152;
49
+ readonly height: 651;
50
+ readonly subject: "Voltrix hurls a crackling bolt of green lightning backward at Nightstar, who twists mid-air to dodge it, a water tower exploding behind them.";
51
+ };
52
+ readonly 'wide-1': {
53
+ readonly hash: "02e36cd0fde4da676db1d5cbcd97e702";
54
+ readonly width: 1152;
55
+ readonly height: 651;
56
+ readonly subject: "Wide cinematic street shot at night: Rosa riding her bicycle down a wet neon avenue, headlights and reflections, unaware of danger.";
57
+ };
58
+ readonly 'wide-2': {
59
+ readonly hash: "d142ece06355008414409995bcc8efbe";
60
+ readonly width: 1152;
61
+ readonly height: 651;
62
+ readonly subject: "Wide shot: Voltrix crashes down from above into the middle of the avenue, the asphalt cracking in a crater, cars flipping, green lightning.";
63
+ };
64
+ readonly 'wide-3': {
65
+ readonly hash: "b5819cb6b068143e82a0130c5acfdf96";
66
+ readonly width: 1152;
67
+ readonly height: 651;
68
+ readonly subject: "Rosa flung from her bicycle, tumbling across the wet street, her bike spinning away, shards of glass in the air.";
69
+ };
70
+ readonly 'wide-4': {
71
+ readonly hash: "fd743798c2c8ac767c882c54aadfe879";
72
+ readonly width: 856;
73
+ readonly height: 1152;
74
+ readonly subject: "Voltrix towers over Rosa who scrambles backward on the wet street, terrified, the villain reaching for her with crackling hand.";
75
+ };
76
+ readonly 'break-1': {
77
+ readonly hash: "24864c9ff00eaad797ee689c1edceb68";
78
+ readonly width: 1024;
79
+ readonly height: 1024;
80
+ readonly subject: "Medium shot: Voltrix grabs Rosa, in her bright yellow rain jacket, by the red messenger bag strap, lifting her off the ground, green sparks crackling.";
81
+ };
82
+ readonly 'break-2': {
83
+ readonly hash: "db24fc4cb6ad05abf82015ab3808caec";
84
+ readonly width: 1024;
85
+ readonly height: 1024;
86
+ readonly subject: "Extreme close-up of Rosa's frightened eyes reflecting green lightning, rain on her face.";
87
+ };
88
+ readonly 'break-3': {
89
+ readonly hash: "788a368f7c91115beffba384edd6a8cb";
90
+ readonly width: 1152;
91
+ readonly height: 651;
92
+ readonly subject: "Explosive splash: Nightstar crashes feet-first down onto Voltrix from above, a huge shockwave of rain and debris, the gold star blazing, raw kinetic impact.";
93
+ };
94
+ readonly 'break-4': {
95
+ readonly hash: "a58e82a3827c6e8c1be23ad3e815955d";
96
+ readonly width: 1024;
97
+ readonly height: 1024;
98
+ readonly subject: "Rosa dropped free, landing hard on the pavement and rolling clear, debris raining around her.";
99
+ };
100
+ readonly 'break-5': {
101
+ readonly hash: "2da6d96fbb481845e780cf6240ece2d1";
102
+ readonly width: 1152;
103
+ readonly height: 651;
104
+ readonly subject: "Nightstar and Voltrix grappling in the crater, sparks and rain, faces close, straining.";
105
+ };
106
+ readonly 'cascade-1': {
107
+ readonly hash: "ba3f66a4535367034168b1f7c257f23a";
108
+ readonly width: 1152;
109
+ readonly height: 651;
110
+ readonly subject: "Voltrix slams both fists into a street lamp, sending a surge of green electricity up into a neon billboard on a building above.";
111
+ };
112
+ readonly 'cascade-2': {
113
+ readonly hash: "9c7d695c57cca051f10c4b4d1877c911";
114
+ readonly width: 856;
115
+ readonly height: 1152;
116
+ readonly subject: "Looking up from street level: a huge burning neon billboard and steel scaffolding breaking loose and falling toward Rosa below.";
117
+ };
118
+ readonly 'cascade-3': {
119
+ readonly hash: "60514687976f160868b3e94a4a57f890";
120
+ readonly width: 1024;
121
+ readonly height: 1024;
122
+ readonly subject: "Close-up: Rosa looking up in horror, arm raised, sparks falling around her.";
123
+ };
124
+ readonly 'cascade-4': {
125
+ readonly hash: "504c48cf772656d01816a0a0e3288b87";
126
+ readonly width: 1152;
127
+ readonly height: 651;
128
+ readonly subject: "Nightstar dives in and sweeps Rosa out of the way just as the falling billboard smashes into the street behind them, explosion of sparks and glass.";
129
+ };
130
+ readonly 'cascade-5': {
131
+ readonly hash: "5e76b5ac2000cee5fe5b2c0b5affc1a9";
132
+ readonly width: 1024;
133
+ readonly height: 1024;
134
+ readonly subject: "Nightstar kneels shielding Rosa with his body as burning debris settles, both covered in dust, rain hissing on embers.";
135
+ };
136
+ readonly 'cascade-6': {
137
+ readonly hash: "fa7831e2704e9b69b06136766d710406";
138
+ readonly width: 1152;
139
+ readonly height: 651;
140
+ readonly subject: "Wide: Voltrix standing in the flames on the street, laughing, green coils glowing brighter, the city lights flickering out behind him.";
141
+ };
142
+ readonly 'over-1': {
143
+ readonly hash: "c92e06d52a7587127ac2396136bfa0ef";
144
+ readonly width: 1152;
145
+ readonly height: 651;
146
+ readonly subject: "Nightstar charges at Voltrix through fire and rain, fist cocked back, heavy motion streaks.";
147
+ };
148
+ readonly 'over-2': {
149
+ readonly hash: "6569e01fd26e0ec21599d18239beeecb";
150
+ readonly width: 1024;
151
+ readonly height: 1024;
152
+ readonly subject: "Close impact: Nightstar's gold-gloved fist connects with Voltrix's jaw, shockwave, teeth and sparks flying.";
153
+ };
154
+ readonly 'over-3': {
155
+ readonly hash: "f18dc474dbb6f05a0ec0a1dd5f035373";
156
+ readonly width: 1024;
157
+ readonly height: 1024;
158
+ readonly subject: "Voltrix backhands Nightstar, sending him spinning backward through the air in a spray of rain.";
159
+ };
160
+ readonly 'over-4': {
161
+ readonly hash: "efccaca49150c0ffc3ff4d19751acf4b";
162
+ readonly width: 1152;
163
+ readonly height: 651;
164
+ readonly subject: "Nightstar crashes through the front window of a parked city bus, glass exploding outward, dynamic angle.";
165
+ };
166
+ readonly 'over-5': {
167
+ readonly hash: "8b715da4ff00f7d65667f4723ce20ed2";
168
+ readonly width: 1152;
169
+ readonly height: 651;
170
+ readonly subject: "Nightstar rising from the wrecked bus, bruised, gold star cracked and glinting, facing Voltrix across the burning street.";
171
+ };
172
+ readonly 'over-6': {
173
+ readonly hash: "20b922922d145451550a308ef18f058e";
174
+ readonly width: 1024;
175
+ readonly height: 1024;
176
+ readonly subject: "Close-up of Voltrix's grinning face, green goggles glowing, lightning crackling across his armour.";
177
+ };
178
+ readonly 'nest-1': {
179
+ readonly hash: "49804db37766dd3fbf8815741311bcdb";
180
+ readonly width: 1152;
181
+ readonly height: 651;
182
+ readonly subject: "Wide: Voltrix grabs a high-voltage power line with both hands, absorbing the whole city's electricity, a column of green lightning shooting into the clouds.";
183
+ };
184
+ readonly 'nest-2': {
185
+ readonly hash: "d04f29f9b8a27e12512e270abd239548";
186
+ readonly width: 1024;
187
+ readonly height: 1024;
188
+ readonly subject: "Close-up: Voltrix's armour coils overloading, glowing white-green, steam and sparks pouring off them.";
189
+ };
190
+ readonly 'nest-3': {
191
+ readonly hash: "0ae711478fafb2a9e7445ec561073121";
192
+ readonly width: 1024;
193
+ readonly height: 1024;
194
+ readonly subject: "Close-up: Nightstar shielding his masked eyes against the blinding green glare, wind whipping.";
195
+ };
196
+ readonly 'nest-4': {
197
+ readonly hash: "3c9ff7ef455e356c4b09fe598b2ca5e9";
198
+ readonly width: 1152;
199
+ readonly height: 651;
200
+ readonly subject: "Wide: the whole city skyline going dark block by block as the lights are drained, one green glow in the middle.";
201
+ };
202
+ readonly 'nest-5': {
203
+ readonly hash: "bb84d4f02a8f45c8904d06bb164f92b5";
204
+ readonly width: 1152;
205
+ readonly height: 651;
206
+ readonly subject: "Rosa crouched alone behind a wrecked car, clutching her red messenger bag, eyes fixed on a thick black power cable snaking across the empty wet street, green glow on the horizon. No creatures, no other people.";
207
+ };
208
+ readonly 'para-1': {
209
+ readonly hash: "58b0040a4025bda6c8fc77f2cf9b7d95";
210
+ readonly width: 1024;
211
+ readonly height: 1024;
212
+ readonly subject: "Nightstar battered and staggering forward into the glare toward Voltrix, who stands in the background wreathed in green lightning, one arm up against the energy storm.";
213
+ };
214
+ readonly 'para-2': {
215
+ readonly hash: "8252a932560a2e6eb96ce5e178e39063";
216
+ readonly width: 1024;
217
+ readonly height: 1024;
218
+ readonly subject: "Rosa sprinting low along the wet street toward a junction box where the thick power cable connects, yellow jacket bright.";
219
+ };
220
+ readonly 'para-3': {
221
+ readonly hash: "e03aca5703774849c89a6223d4bd3691";
222
+ readonly width: 1024;
223
+ readonly height: 1024;
224
+ readonly subject: "Voltrix blasts Nightstar with a beam of green lightning, Nightstar bracing behind crossed arms, being pushed back, feet dragging sparks.";
225
+ };
226
+ readonly 'para-4': {
227
+ readonly hash: "5e515e2b6f1e7715c17057f908858e09";
228
+ readonly width: 1024;
229
+ readonly height: 1024;
230
+ readonly subject: "Rosa yanking a big red emergency lever on the open junction box, sparks flying in her face, teeth gritted.";
231
+ };
232
+ readonly 'para-5': {
233
+ readonly hash: "70fdd68ee6f96ea603dede17f979cebf";
234
+ readonly width: 1024;
235
+ readonly height: 1024;
236
+ readonly subject: "Voltrix's lightning suddenly sputtering out, his coils dimming, shock on his face.";
237
+ };
238
+ readonly 'para-6': {
239
+ readonly hash: "7a7f8d301383756e74caeb6ae8c8ae1f";
240
+ readonly width: 1024;
241
+ readonly height: 1024;
242
+ readonly subject: "Nightstar glances back at Rosa by the junction box, she gives him a thumbs up, rain and smoke between them.";
243
+ };
244
+ readonly 'manga-1': {
245
+ readonly hash: "533e5dacbce7966d8b537ccb767d1460";
246
+ readonly width: 856;
247
+ readonly height: 1152;
248
+ readonly subject: "Extreme dynamic foreshortening: Nightstar launches himself straight at the viewer, fist leading, speed lines radiating, rain frozen around him.";
249
+ };
250
+ readonly 'manga-2': {
251
+ readonly hash: "89bf37366fabc1a9ce15b22e70eca072";
252
+ readonly width: 1024;
253
+ readonly height: 1024;
254
+ readonly subject: "Voltrix raising both armoured arms to block, terror in his face, coils dead.";
255
+ };
256
+ readonly 'manga-3': {
257
+ readonly hash: "e45832e1da6f3927ab09d0fe31a3aa8b";
258
+ readonly width: 1152;
259
+ readonly height: 651;
260
+ readonly subject: "The final punch: Nightstar's fist smashes through Voltrix's guard into his chest armour, the armour shattering into pieces, enormous radiating impact burst.";
261
+ };
262
+ readonly 'manga-4': {
263
+ readonly hash: "e781ad2b37fd73e79755868622eccd21";
264
+ readonly width: 1024;
265
+ readonly height: 1024;
266
+ readonly subject: "Close-up of Nightstar's masked eyes, intense, a trickle of blood, rain.";
267
+ };
268
+ readonly 'manga-5': {
269
+ readonly hash: "c6a44369f7251227f7161c5de7d001a1";
270
+ readonly width: 1152;
271
+ readonly height: 651;
272
+ readonly subject: "Voltrix flying backward and crashing through a parked delivery truck, armour pieces scattering, smoke.";
273
+ };
274
+ readonly 'interro-1': {
275
+ readonly hash: "67578b7d4a3caae86cc4501a7d8f5672";
276
+ readonly width: 1152;
277
+ readonly height: 651;
278
+ readonly subject: "Wide: an abandoned warehouse at dawn lit by one hanging bulb, Voltrix in broken armour chained to a steel chair, Nightstar standing over him.";
279
+ };
280
+ readonly 'interro-2': {
281
+ readonly hash: "835dd9bf563b21c08f02439d97ab2356";
282
+ readonly width: 1024;
283
+ readonly height: 1024;
284
+ readonly subject: "Close-up: Nightstar leaning in, masked face half in shadow under the bulb, stern.";
285
+ };
286
+ readonly 'interro-3': {
287
+ readonly hash: "56a8c320e8a651b852abb492a0e35029";
288
+ readonly width: 1024;
289
+ readonly height: 1024;
290
+ readonly subject: "Close-up: Voltrix in his chair, goggles cracked, smirking, a bruise on his cheek.";
291
+ };
292
+ readonly 'interro-4': {
293
+ readonly hash: "9cf91fa3b2d4853704f7d699b60d49eb";
294
+ readonly width: 1024;
295
+ readonly height: 1024;
296
+ readonly subject: "Nightstar slamming a gold-gloved fist on a metal table, the bulb swinging, shadows lurching.";
297
+ };
298
+ readonly 'interro-5': {
299
+ readonly hash: "21dd22e30cccfb6bb82925dd46ee7b1c";
300
+ readonly width: 1024;
301
+ readonly height: 1024;
302
+ readonly subject: "Extreme close-up of Voltrix's mouth as he grins, a single green spark on a broken tooth.";
303
+ };
304
+ readonly 'interro-6': {
305
+ readonly hash: "01d85a8b550d80743fbc01002c800ced";
306
+ readonly width: 1152;
307
+ readonly height: 651;
308
+ readonly subject: "Nightstar walking out of the warehouse doorway into morning light where Rosa waits with her bicycle, backlit silhouettes.";
309
+ };
310
+ readonly pinup: {
311
+ readonly hash: "7f2004bc780c91f788d95e68009147b1";
312
+ readonly width: 856;
313
+ readonly height: 1152;
314
+ readonly subject: "Pin-up: Nightstar standing heroically on the edge of a skyscraper rooftop at sunrise, wind in the scene, the city below washed in orange light, gold star gleaming.";
315
+ };
316
+ };
317
+ export type ArtId = keyof typeof ART;
318
+ export declare const art: (id: ArtId) => string;
@@ -0,0 +1,177 @@
1
+ import type { Kit } from '../kit.js';
2
+ import { type ArtId } from './comic-hero-art.js';
3
+ export interface Pt {
4
+ x: number;
5
+ y: number;
6
+ }
7
+ export interface Frame {
8
+ x: number;
9
+ y: number;
10
+ width: number;
11
+ height: number;
12
+ points: Pt[];
13
+ }
14
+ /** The story's title and issue, as brand fields a kit or a person can change. */
15
+ export declare const STORY: {
16
+ readonly title: "Nightstar";
17
+ readonly series: "Blackout";
18
+ readonly issue: "No. 1";
19
+ };
20
+ /** A comic page's brand, its style's palette, its type and its lettering components. */
21
+ export declare function comicSetup(k: Kit, o?: {
22
+ paper?: string;
23
+ }): void;
24
+ /** The display styles, each made the first time a page sets type in it (a style nobody uses is clutter). */
25
+ declare const DISPLAY: {
26
+ SFX: {
27
+ size: number;
28
+ fontWeight: number;
29
+ fontStyle: "italic";
30
+ lineHeight: number;
31
+ letterSpacing: number;
32
+ textAlign: "CENTER";
33
+ };
34
+ 'SFX big': {
35
+ size: number;
36
+ fontWeight: number;
37
+ fontStyle: "italic";
38
+ lineHeight: number;
39
+ letterSpacing: number;
40
+ textAlign: "CENTER";
41
+ };
42
+ Masthead: {
43
+ size: number;
44
+ fontWeight: number;
45
+ lineHeight: number;
46
+ letterSpacing: number;
47
+ textAlign: "CENTER";
48
+ };
49
+ Title: {
50
+ size: number;
51
+ fontWeight: number;
52
+ lineHeight: number;
53
+ letterSpacing: number;
54
+ };
55
+ Credit: {
56
+ size: number;
57
+ fontWeight: number;
58
+ lineHeight: number;
59
+ letterSpacing: number;
60
+ };
61
+ };
62
+ /** `name`, one of the display styles, made on first use. */
63
+ export declare function display(k: Kit, name: keyof typeof DISPLAY): string;
64
+ export declare const rectFrame: (x: number, y: number, width: number, height: number) => Frame;
65
+ /** A frame from corners in tier space: its box, and the corners made panel-local. */
66
+ export declare function frameOf(corners: Pt[]): Frame;
67
+ /** Widths filling `total` in the proportions `parts`, with `gutter` between them. */
68
+ export declare function shares(total: number, gutter: number, parts: number[]): number[];
69
+ /** A plain tier: rectangles side by side. */
70
+ export declare function tier(width: number, height: number, parts: number[], gutter?: number, y?: number): Frame[];
71
+ /** A tier cut by SLANTED gutters (each leans `lean` px): frames that share a diagonal edge read as motion. */
72
+ export declare function slantTier(width: number, height: number, parts: number[], lean?: number, gutter?: number, y?: number): Frame[];
73
+ /** A frame whose top and bottom edges tilt: `dy0` / `dy1` px down at the right end of each (a Dutch tier). */
74
+ export declare function tilted(x: number, y: number, w: number, h: number, dyTop: number, dyBot: number): Frame;
75
+ /** A slice of a ring around (cx, cy): the radial page. */
76
+ export declare function wedgeRing(cx: number, cy: number, rIn: number, rOut: number, from: number, to: number): Frame;
77
+ /** A circle (n-gon) frame: the radial page's hub. */
78
+ export declare function disc(cx: number, cy: number, r: number): Frame;
79
+ /** Grow a polygon from its centroid: the paper keyline an inset frame sits on. */
80
+ export declare function inflate(points: Pt[], by: number): Pt[];
81
+ /** A sheet as a column of tiers with `gutter` between them, inside `margin`. Returns the live area. */
82
+ export declare function pageGrid(k: Kit, sheet: string, margin: number, gutter: number): {
83
+ W: number;
84
+ H: number;
85
+ };
86
+ /** A tier: a fixed box in the sheet's column. */
87
+ export declare const tierBox: (k: Kit, sheet: string, W: number, h: number, name: string) => string;
88
+ /** Tier heights that fill `H` in proportion to `parts`, with `gutter` between. */
89
+ export declare const rows: (H: number, gutter: number, parts: number[]) => number[];
90
+ /**
91
+ * A panel at frame `f` in `tierId`: a mask group of [the frame's shape as mask, its ground, picture `pic`, the ink
92
+ * edge]. `ground` is the panel's own ground (touching panels must differ). Returns the group.
93
+ */
94
+ export declare function panel(k: Kit, tierId: string, f: Frame, pic: ArtId, o: {
95
+ ground: Ground;
96
+ name?: string;
97
+ keyline?: number;
98
+ edge?: boolean;
99
+ }): string;
100
+ /** The panel grounds: touching panels take different ones. */
101
+ export type Ground = 'heroG1' | 'heroG2' | 'heroG3';
102
+ /**
103
+ * A speech balloon at (x, y) in the tier, `width` wide, its tail running from inside the balloon to `to` (the
104
+ * speaker's mouth, in tier space). The tail is drawn first, so the balloon covers its root and only the point shows.
105
+ */
106
+ export declare function say(k: Kit, tierId: string, words: string, o: {
107
+ x: number;
108
+ y: number;
109
+ width?: number;
110
+ to?: Pt;
111
+ thought?: boolean;
112
+ name?: string;
113
+ }): string;
114
+ /** A caption box at (x, y): the narrator, in the corner where the reader's eye enters the panel. */
115
+ export declare function caption(k: Kit, tierId: string, words: string, o: {
116
+ x: number;
117
+ y: number;
118
+ width?: number;
119
+ name?: string;
120
+ }): string;
121
+ /**
122
+ * A sound effect drawn into the art: the word on an impact star (accent, inked, on a hard ink shadow), tilted.
123
+ * `big` for the one hit a page is built round.
124
+ */
125
+ export declare function sfx(k: Kit, tierId: string, words: string, o: {
126
+ x: number;
127
+ y: number;
128
+ w: number;
129
+ h: number;
130
+ deg?: number;
131
+ big?: boolean;
132
+ fill?: 'accent' | 'primary';
133
+ seed?: number;
134
+ name?: string;
135
+ }): string;
136
+ /** The folio: the series and page number in the foot margin, on paper (the one line read off the art). */
137
+ export declare const FOLIO = 24;
138
+ export declare function folio(k: Kit, sheet: string, words: string): void;
139
+ /** A full-bleed sheet's foot: a paper strip under the art with the line in it, so the line is read on paper. */
140
+ export declare function foot(k: Kit, tierId: string, w: number, h: number, words: string, name: string): string;
141
+ /** The meta every comic page shares: a print page in the comic category. */
142
+ export declare function comicMeta(name: string, description: string, tags: string[]): {
143
+ name: string;
144
+ description: string;
145
+ category: string;
146
+ tags: string[];
147
+ platforms: "print"[];
148
+ formats: "page"[];
149
+ useCases: "comic"[];
150
+ created: string;
151
+ updated: string;
152
+ };
153
+ /** A frame the size of the sheet plus its bleed on every side, for a tier at the sheet's origin. */
154
+ export declare function bleedFrame(k: Kit, w: number, h: number): Frame;
155
+ /** The comic page and spread sizes in px. */
156
+ export declare const SIZE: {
157
+ readonly page: {
158
+ readonly w: number;
159
+ readonly h: number;
160
+ };
161
+ readonly cover: {
162
+ readonly w: number;
163
+ readonly h: number;
164
+ };
165
+ readonly spread: {
166
+ readonly w: number;
167
+ readonly h: number;
168
+ };
169
+ };
170
+ /** A polygon (tier space) cut to the tier's box, as a frame. */
171
+ export declare function clipFrame(pts: Pt[], w: number, h: number): Frame;
172
+ /**
173
+ * A slice of the page around a hub at (cx, cy): from angle `from` to `to` (degrees, clockwise from +x), starting
174
+ * `rIn` out, with gutters of even width `g` along both radial edges, running out to the tier's edges.
175
+ */
176
+ export declare function radialSlice(cx: number, cy: number, rIn: number, from: number, to: number, g: number, w: number, h: number): Frame;
177
+ export {};