@arraypress/covers 1.1.0 → 1.3.1

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 (244) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +18 -809
  3. package/package.json +2 -1
  4. package/recipes/flyers/afterglow-motion.json +540 -0
  5. package/recipes/flyers/afterglow.json +70 -0
  6. package/recipes/flyers/arcfield-mirror-motion.json +397 -0
  7. package/recipes/flyers/arcfield-mirror.json +364 -0
  8. package/recipes/flyers/bauhaus-oktav.json +319 -0
  9. package/recipes/flyers/bauhaus-ritmo.json +735 -0
  10. package/recipes/flyers/bauhaus-volta.json +394 -0
  11. package/recipes/flyers/bloomfall.json +99 -0
  12. package/recipes/flyers/drag-solenne-motion.json +444 -0
  13. package/recipes/flyers/drag-solenne.json +426 -0
  14. package/recipes/flyers/fennick-patches.json +874 -0
  15. package/recipes/flyers/ferro-pass.json +398 -0
  16. package/recipes/flyers/ferrova.json +812 -0
  17. package/recipes/flyers/grid-rest-rhythm.json +125 -0
  18. package/recipes/flyers/groovy-honeycomb.json +816 -0
  19. package/recipes/flyers/groovy-marigold.json +479 -0
  20. package/recipes/flyers/groovy-peachfuzz.json +974 -0
  21. package/recipes/flyers/halden-orbit-motion.json +381 -0
  22. package/recipes/flyers/halden-orbit.json +356 -0
  23. package/recipes/flyers/halvard.json +120 -0
  24. package/recipes/flyers/kairo-weekender.json +696 -0
  25. package/recipes/flyers/linger-motion.json +518 -0
  26. package/recipes/flyers/linger.json +67 -0
  27. package/recipes/flyers/little-orchard.json +105 -0
  28. package/recipes/flyers/lofi-hexmoth.json +912 -0
  29. package/recipes/flyers/lofi-lowbit-motion.json +888 -0
  30. package/recipes/flyers/lofi-lowbit.json +880 -0
  31. package/recipes/flyers/lofi-nullpoint.json +3013 -0
  32. package/recipes/flyers/lumio-stack-motion.json +648 -0
  33. package/recipes/flyers/lumio-stack.json +438 -0
  34. package/recipes/flyers/magazine-cover.json +168 -0
  35. package/recipes/flyers/magazine-extended.json +269 -0
  36. package/recipes/flyers/magazine-knockout.json +40 -0
  37. package/recipes/flyers/northfold-varsity.json +618 -0
  38. package/recipes/flyers/open-studio.json +69 -0
  39. package/recipes/flyers/orrin-merch.json +715 -0
  40. package/recipes/flyers/oxyde.json +113 -0
  41. package/recipes/flyers/quiet-fields.json +610 -0
  42. package/recipes/flyers/scrapbook-halcyon.json +948 -0
  43. package/recipes/flyers/solenne-ticket.json +730 -0
  44. package/recipes/flyers/solvane-motion.json +576 -0
  45. package/recipes/flyers/solvane.json +98 -0
  46. package/recipes/flyers/subduct.json +99 -0
  47. package/recipes/flyers/sunvale-lineup.json +584 -0
  48. package/recipes/flyers/tidewell.json +91 -0
  49. package/recipes/flyers/tour-kairo.json +535 -0
  50. package/recipes/flyers/velora-stickers.json +885 -0
  51. package/recipes/flyers/wheatpaste-black.json +313 -0
  52. package/recipes/flyers/wheatpaste-mark.json +198 -0
  53. package/recipes/flyers/wheatpaste-torn.json +114 -0
  54. package/recipes/flyers/wheatpaste-wall.json +984 -0
  55. package/recipes/flyers/wheatpaste-words.json +233 -0
  56. package/recipes/release/aura.json +137 -0
  57. package/recipes/release/chrome.json +433 -0
  58. package/recipes/release/collage.json +372 -0
  59. package/recipes/release/duotone.json +113 -0
  60. package/recipes/release/film-still.json +102 -0
  61. package/recipes/release/headline.json +70 -0
  62. package/recipes/release/instant.json +170 -0
  63. package/recipes/release/label.json +364 -0
  64. package/recipes/release/liquid-glass.json +301 -0
  65. package/recipes/release/odd-tile-dark.json +688 -0
  66. package/recipes/release/odd-tile-dense.json +1056 -0
  67. package/recipes/release/odd-tile-shift.json +541 -0
  68. package/recipes/release/odd-tile-split.json +571 -0
  69. package/recipes/release/odd-tile.json +633 -0
  70. package/recipes/release/off-edge.json +96 -0
  71. package/recipes/release/plinth.json +794 -0
  72. package/recipes/release/riso.json +108 -0
  73. package/recipes/release/series/fluid-label.json +561 -0
  74. package/recipes/release/series/fluid-pixel.json +334 -0
  75. package/recipes/release/series/hairline.json +305 -0
  76. package/recipes/release/series/halo.json +282 -0
  77. package/recipes/release/series/mark-crop.json +135 -0
  78. package/recipes/release/series/mark-window.json +150 -0
  79. package/recipes/release/series/photo-label.json +475 -0
  80. package/recipes/release/series/smear-field.json +345 -0
  81. package/recipes/release/series/smear.json +202 -0
  82. package/recipes/release/series/spin.json +172 -0
  83. package/recipes/release/series/split-ghost.json +230 -0
  84. package/recipes/release/series/zoom.json +168 -0
  85. package/recipes/release/small-print.json +114 -0
  86. package/recipes/release/stack.json +156 -0
  87. package/recipes/release/swiss.json +117 -0
  88. package/schema/recipe.schema.json +332 -65
  89. package/src/animate/index.d.ts +9 -19
  90. package/src/animate/index.js +6 -111
  91. package/src/animate/keyframes.d.ts +21 -0
  92. package/src/animate/keyframes.js +119 -0
  93. package/src/animate/marquee.d.ts +30 -0
  94. package/src/animate/marquee.js +93 -0
  95. package/src/animate/morph.d.ts +8 -0
  96. package/src/animate/morph.js +99 -0
  97. package/src/animate/motion.d.ts +59 -0
  98. package/src/animate/motion.js +63 -0
  99. package/src/animate/sheet.d.ts +19 -0
  100. package/src/animate/sheet.js +61 -0
  101. package/src/animate/timing.d.ts +28 -0
  102. package/src/animate/timing.js +146 -0
  103. package/src/animate/tracks.d.ts +18 -0
  104. package/src/animate/tracks.js +139 -0
  105. package/src/diagram.js +4 -3
  106. package/src/extract.js +2 -2
  107. package/src/fonts.js +1 -2
  108. package/src/geometry.js +4 -34
  109. package/src/grid.js +1 -1
  110. package/src/handmade.js +9 -7
  111. package/src/icons.js +1 -2
  112. package/src/index.d.ts +39 -48
  113. package/src/index.js +5 -5
  114. package/src/inter-data.js +1 -1
  115. package/src/json-recipe.js +23 -7
  116. package/src/layer-options.js +21 -1
  117. package/src/layers/barcode.js +3 -3
  118. package/src/layers/geometry.js +5 -5
  119. package/src/layers/perforation.js +3 -3
  120. package/src/layers/repeat.js +2 -2
  121. package/src/layers/shape.d.ts +2 -2
  122. package/src/layers/shape.js +5 -5
  123. package/src/layers/soft.js +2 -2
  124. package/src/layers/svg.js +2 -3
  125. package/src/layers/table.js +3 -3
  126. package/src/layers/tear.d.ts +1 -1
  127. package/src/layers/tear.js +4 -4
  128. package/src/layers/texture.js +3 -3
  129. package/src/layers/util.js +15 -2
  130. package/src/layers.js +10 -26
  131. package/src/{effects/paint.js → paint/index.js} +5 -5
  132. package/src/{effects/paint-presets.d.ts → paint/presets.d.ts} +1 -1
  133. package/src/{effects/paint-presets.js → paint/presets.js} +1 -1
  134. package/src/{effects → paint}/tile.d.ts +1 -1
  135. package/src/{effects → paint}/tile.js +4 -4
  136. package/src/palette.js +1 -1
  137. package/src/platform/files.d.ts +6 -0
  138. package/src/platform/files.js +41 -0
  139. package/src/platform/harfbuzz.js +1 -1
  140. package/src/platform/index.d.ts +3 -3
  141. package/src/platform/index.js +6 -4
  142. package/src/platform/load.js +1 -2
  143. package/src/print.js +9 -7
  144. package/src/recipes.js +1 -1
  145. package/src/render/backdrop.js +2 -2
  146. package/src/render/grain.js +1 -1
  147. package/src/render/group.js +3 -3
  148. package/src/render/key.js +1 -2
  149. package/src/{effects → render}/transform.d.ts +2 -1
  150. package/src/{effects → render}/transform.js +17 -5
  151. package/src/render/use.d.ts +1 -1
  152. package/src/render/use.js +2 -2
  153. package/src/render/wrap.js +5 -60
  154. package/src/render.js +55 -18
  155. package/src/text.js +1 -1
  156. package/src/type/auto-color.js +1 -1
  157. package/src/type/glyphs.js +2 -2
  158. package/src/type/line.js +1 -1
  159. package/src/type/live.js +1 -1
  160. package/src/type/path.js +2 -2
  161. package/src/type/pixel.d.ts +0 -2
  162. package/src/type/pixel.js +3 -33
  163. package/src/type/spans.js +2 -2
  164. package/src/type/typeset.js +19 -8
  165. package/src/version.js +1 -1
  166. package/src/color.js +0 -246
  167. package/src/effects/ascii.d.ts +0 -7
  168. package/src/effects/ascii.js +0 -93
  169. package/src/effects/buffer.d.ts +0 -60
  170. package/src/effects/buffer.js +0 -472
  171. package/src/effects/detail.d.ts +0 -12
  172. package/src/effects/detail.js +0 -124
  173. package/src/effects/digital.d.ts +0 -14
  174. package/src/effects/digital.js +0 -216
  175. package/src/effects/distort.d.ts +0 -20
  176. package/src/effects/distort.js +0 -314
  177. package/src/effects/dither.d.ts +0 -8
  178. package/src/effects/dither.js +0 -147
  179. package/src/effects/drop-shadow.d.ts +0 -4
  180. package/src/effects/drop-shadow.js +0 -45
  181. package/src/effects/extrude.d.ts +0 -5
  182. package/src/effects/extrude.js +0 -55
  183. package/src/effects/film.d.ts +0 -11
  184. package/src/effects/film.js +0 -204
  185. package/src/effects/glow.d.ts +0 -8
  186. package/src/effects/glow.js +0 -56
  187. package/src/effects/grade.d.ts +0 -30
  188. package/src/effects/grade.js +0 -274
  189. package/src/effects/halftone.d.ts +0 -8
  190. package/src/effects/halftone.js +0 -95
  191. package/src/effects/index.d.ts +0 -125
  192. package/src/effects/index.js +0 -277
  193. package/src/effects/ink.d.ts +0 -12
  194. package/src/effects/ink.js +0 -70
  195. package/src/effects/lens.d.ts +0 -14
  196. package/src/effects/lens.js +0 -277
  197. package/src/effects/light.d.ts +0 -10
  198. package/src/effects/light.js +0 -59
  199. package/src/effects/looks.d.ts +0 -9
  200. package/src/effects/looks.js +0 -74
  201. package/src/effects/mask.d.ts +0 -52
  202. package/src/effects/mask.js +0 -314
  203. package/src/effects/motion.d.ts +0 -6
  204. package/src/effects/motion.js +0 -60
  205. package/src/effects/newsprint.d.ts +0 -6
  206. package/src/effects/newsprint.js +0 -89
  207. package/src/effects/optics.d.ts +0 -10
  208. package/src/effects/optics.js +0 -213
  209. package/src/effects/options.d.ts +0 -6
  210. package/src/effects/options.js +0 -106
  211. package/src/effects/pixels.d.ts +0 -24
  212. package/src/effects/pixels.js +0 -138
  213. package/src/effects/polar.d.ts +0 -10
  214. package/src/effects/polar.js +0 -265
  215. package/src/effects/region.d.ts +0 -8
  216. package/src/effects/region.js +0 -136
  217. package/src/effects/round-border.d.ts +0 -5
  218. package/src/effects/round-border.js +0 -62
  219. package/src/effects/screen.d.ts +0 -14
  220. package/src/effects/screen.js +0 -212
  221. package/src/effects/sort.d.ts +0 -8
  222. package/src/effects/sort.js +0 -125
  223. package/src/effects/symmetry.d.ts +0 -6
  224. package/src/effects/symmetry.js +0 -74
  225. package/src/effects/tone.d.ts +0 -16
  226. package/src/effects/tone.js +0 -117
  227. package/src/effects/util.d.ts +0 -16
  228. package/src/effects/util.js +0 -85
  229. package/src/platform/bytes.d.ts +0 -22
  230. package/src/platform/bytes.js +0 -103
  231. package/src/platform/compress.d.ts +0 -12
  232. package/src/platform/compress.js +0 -81
  233. package/src/platform/node.d.ts +0 -26
  234. package/src/platform/node.js +0 -86
  235. package/src/png.js +0 -126
  236. package/src/raster/index.d.ts +0 -24
  237. package/src/raster/index.js +0 -171
  238. package/src/render/content.d.ts +0 -5
  239. package/src/render/content.js +0 -58
  240. package/src/render/tiles.d.ts +0 -6
  241. package/src/render/tiles.js +0 -77
  242. package/src/rng.js +0 -95
  243. package/src/svg.js +0 -69
  244. /package/src/{effects/paint.d.ts → paint/index.d.ts} +0 -0
@@ -0,0 +1,91 @@
1
+ {
2
+ "$schema": "../../schema/recipe.schema.json",
3
+ "name": "tidewell",
4
+ "description": "Riso, orange + teal: two misregistered drums on cream paper. The mark in solid teal over an orange halftone fade (a black-to-white ramp screened at 75°, dots growing toward the top), so it prints dark where they cross; a chunky title in teal between two rules, an italic serif word and a tracklist in orange, a catalogue line in the foot. With format 'release' it re-composes for a 3000×3000 cover: the mark over the fade, the name, and the release title as the italic word. Re-expressed from the Logomarks scenes lab (FlyerCards, 'Riso · orange + teal').",
5
+ "params": {
6
+ "paper": "#f4efe4",
7
+ "orange": "#ff6c2f",
8
+ "teal": "#00838a",
9
+ "name": "Tidewell",
10
+ "word": "tapes",
11
+ "sides": [
12
+ [{ "content": "Side A", "weight": 800 }, { "content": "Side B", "weight": 800 }],
13
+ ["Low tide, high noon", "Kelp radio"],
14
+ ["Salt in the wires", "Harbour lights, slow"]
15
+ ],
16
+ "catalogue": "TW—012",
17
+ "details": " · cassette, 40 min · out 3 March",
18
+ "url": "tidewell-tapes.net",
19
+ "artist": "Tidewell",
20
+ "release": "Kelp Radio"
21
+ },
22
+ "layers": [
23
+ { "id": "paper", "type": "solid", "color": "{paper}" },
24
+ { "id": "fibres", "type": "texture", "kind": "paper" },
25
+ {
26
+ "id": "poster",
27
+ "type": "group",
28
+ "when": { "not": { "format": "release" } },
29
+ "viewBox": [0, 0, 400, 500],
30
+ "fit": "contain",
31
+ "layers": [
32
+ {
33
+ "id": "orange",
34
+ "type": "group",
35
+ "blend": "multiply",
36
+ "transform": { "translate": [-1.4, 1.6], "rotate": -0.3, "origin": [200, 250] },
37
+ "effects": [{ "kind": "wear", "rough": 1.3 }],
38
+ "layers": [
39
+ { "id": "fade", "type": "shape", "kind": "rect", "x": 16, "y": 16, "width": 368, "height": 300, "fill": { "type": "linear", "angle": 180, "colors": ["#000000", "#ffffff"] }, "effects": [{ "kind": "halftone", "ink": "{orange}", "cell": 6, "angle": 75, "contrast": 1.15, "lift": -0.05 }] },
40
+ { "id": "word", "type": "text", "content": "{word}", "font": "Instrument Serif", "style": "italic", "weight": 400, "size": 60, "letterSpacing": 0, "x": 386, "y": 456, "align": "right", "color": "{orange}" },
41
+ { "id": "sides", "type": "table", "font": "Bricolage Grotesque", "weight": 600, "size": 10, "color": "{orange}", "y": 436, "rowHeight": 12, "columns": [{ "x": 16 }, { "x": 124 }], "rows": "{sides}" }
42
+ ]
43
+ },
44
+ {
45
+ "id": "teal",
46
+ "type": "group",
47
+ "blend": "multiply",
48
+ "effects": [{ "kind": "wear", "rough": 1.3 }],
49
+ "layers": [
50
+ { "id": "mark", "type": "icon", "markup": "{mark}", "x": 74, "y": 48, "size": 252, "color": "{teal}", "when": "mark" },
51
+ { "id": "title", "type": "text", "content": "{name}", "font": "Bricolage Grotesque", "weight": 800, "size": 112, "letterSpacing": -0.0446, "x": 15, "y": 396, "width": 370, "color": "{teal}" },
52
+ { "id": "rules", "type": "shape", "stroke": "{teal}", "items": [{ "kind": "line", "x1": 16, "y1": 414, "x2": 384, "y2": 414, "strokeWidth": 1.2 }, { "kind": "line", "x1": 16, "y1": 474, "x2": 384, "y2": 474, "strokeWidth": 0.6 }] },
53
+ { "id": "foot", "type": "table", "font": "Bricolage Grotesque", "weight": 600, "size": 9, "color": "{teal}", "y": 488, "columns": [{ "x": 16, "weight": 800 }, { "x": 52.47 }, { "x": 384, "align": "right" }], "rows": [["{catalogue}", "{details}", "{url}"]] }
54
+ ]
55
+ }
56
+ ]
57
+ },
58
+ {
59
+ "id": "cover",
60
+ "type": "group",
61
+ "when": { "format": "release" },
62
+ "viewBox": [0, 0, 400, 400],
63
+ "fit": "contain",
64
+ "layers": [
65
+ {
66
+ "id": "orange",
67
+ "type": "group",
68
+ "blend": "multiply",
69
+ "transform": { "translate": [-1.4, 1.6], "rotate": -0.3, "origin": [200, 200] },
70
+ "effects": [{ "kind": "wear", "rough": 1.3 }],
71
+ "layers": [
72
+ { "id": "fade", "type": "shape", "kind": "rect", "x": 16, "y": 16, "width": 368, "height": 228, "fill": { "type": "linear", "angle": 180, "colors": ["#000000", "#ffffff"] }, "effects": [{ "kind": "halftone", "ink": "{orange}", "cell": 6, "angle": 75, "contrast": 1.15, "lift": -0.05 }] },
73
+ { "id": "title", "type": "text", "content": "{release}", "font": "Instrument Serif", "style": "italic", "weight": 400, "size": 56, "letterSpacing": 0, "x": 386, "y": 388, "align": "right", "color": "{orange}" }
74
+ ]
75
+ },
76
+ {
77
+ "id": "teal",
78
+ "type": "group",
79
+ "blend": "multiply",
80
+ "effects": [{ "kind": "wear", "rough": 1.3 }],
81
+ "layers": [
82
+ { "id": "mark", "type": "icon", "markup": "{mark}", "x": 100, "y": 28, "size": 200, "color": "{teal}", "when": "mark" },
83
+ { "id": "artist", "type": "text", "content": "{artist}", "font": "Bricolage Grotesque", "weight": 800, "size": 112, "letterSpacing": -0.0446, "x": 15, "y": 320, "width": 370, "color": "{teal}" },
84
+ { "id": "rule", "type": "shape", "kind": "line", "x1": 16, "y1": 336, "x2": 384, "y2": 336, "stroke": "{teal}", "strokeWidth": 1.2 }
85
+ ]
86
+ }
87
+ ]
88
+ },
89
+ { "id": "print", "type": "grain", "amount": 0.04, "size": 1.5, "blend": "multiply" }
90
+ ]
91
+ }
@@ -0,0 +1,535 @@
1
+ {
2
+ "$schema": "../../schema/recipe.schema.json",
3
+ "name": "tour-kairo",
4
+ "description": "Tour poster: pink paper, everything in photocopied black (rough edges, toner dropout, dust), two xeroxed photos, a dates grid with SOLD OUT bars, the name stacked in Unbounded and Bebas Neue, each line justified to its width, the top and bottom halves alike. Square (release): the stack re-set larger round the name, PART I. beside one photo, no dates. Re-expressed from the Logomarks scenes lab (ZineCards, 'Tour poster').",
5
+ "params": {
6
+ "artist": "Kairo",
7
+ "release": "Part I",
8
+ "part": "PART",
9
+ "partNo": "I.",
10
+ "dates": [
11
+ [
12
+ "11/14",
13
+ "SHOW ADDED",
14
+ "LONDON",
15
+ "THE HALF MOON"
16
+ ],
17
+ [
18
+ "11/15",
19
+ {
20
+ "content": "SOLD OUT",
21
+ "color": "#e8399a"
22
+ },
23
+ "LONDON",
24
+ "THE HALF MOON"
25
+ ],
26
+ [
27
+ "11/21",
28
+ {
29
+ "content": "SOLD OUT",
30
+ "color": "#e8399a"
31
+ },
32
+ "NEW YORK",
33
+ "SALLE ROSE"
34
+ ],
35
+ [
36
+ "11/28",
37
+ {
38
+ "content": "SOLD OUT",
39
+ "color": "#e8399a"
40
+ },
41
+ "LOS ANGELES",
42
+ "THE ORCHID"
43
+ ]
44
+ ],
45
+ "paper": "#e8399a",
46
+ "ink": "#16040d"
47
+ },
48
+ "layers": [
49
+ {
50
+ "id": "paper",
51
+ "type": "solid",
52
+ "color": "{paper}"
53
+ },
54
+ {
55
+ "id": "poster",
56
+ "type": "group",
57
+ "viewBox": [
58
+ 0,
59
+ 0,
60
+ 400,
61
+ 500
62
+ ],
63
+ "fit": "contain",
64
+ "when": {
65
+ "not": {
66
+ "aspect": "square"
67
+ }
68
+ },
69
+ "layers": [
70
+ {
71
+ "id": "ink",
72
+ "type": "group",
73
+ "effects": [
74
+ {
75
+ "kind": "xerox",
76
+ "rough": 1.6
77
+ }
78
+ ],
79
+ "layers": [
80
+ {
81
+ "id": "barsTop",
82
+ "type": "shape",
83
+ "fill": "{ink}",
84
+ "items": [
85
+ {
86
+ "kind": "rect",
87
+ "x": 56,
88
+ "y": 29.5,
89
+ "width": 72,
90
+ "height": 13
91
+ },
92
+ {
93
+ "kind": "rect",
94
+ "x": 56,
95
+ "y": 43.5,
96
+ "width": 72,
97
+ "height": 13
98
+ },
99
+ {
100
+ "kind": "rect",
101
+ "x": 56,
102
+ "y": 57.5,
103
+ "width": 72,
104
+ "height": 13
105
+ }
106
+ ]
107
+ },
108
+ {
109
+ "id": "datesTop",
110
+ "type": "table",
111
+ "font": "Geist",
112
+ "weight": 800,
113
+ "letterSpacing": -0.032,
114
+ "size": 12.5,
115
+ "color": "{ink}",
116
+ "y": 26,
117
+ "rowHeight": 14,
118
+ "columns": [
119
+ {
120
+ "x": 14
121
+ },
122
+ {
123
+ "x": 58
124
+ },
125
+ {
126
+ "x": 204,
127
+ "align": "center"
128
+ },
129
+ {
130
+ "x": 386,
131
+ "align": "right"
132
+ }
133
+ ],
134
+ "rows": "{dates}"
135
+ },
136
+ {
137
+ "id": "partTop",
138
+ "type": "text",
139
+ "content": "{part}",
140
+ "font": "Geist",
141
+ "weight": 800,
142
+ "letterSpacing": -0.032,
143
+ "size": 15,
144
+ "x": 14,
145
+ "y": 124,
146
+ "color": "{ink}"
147
+ },
148
+ {
149
+ "id": "numTop",
150
+ "type": "text",
151
+ "content": "{partNo}",
152
+ "font": "Geist",
153
+ "weight": 800,
154
+ "letterSpacing": -0.032,
155
+ "size": 15,
156
+ "x": 386,
157
+ "y": 124,
158
+ "align": "right",
159
+ "color": "{ink}"
160
+ },
161
+ {
162
+ "id": "photoTop",
163
+ "type": "group",
164
+ "x": 164,
165
+ "y": 80,
166
+ "width": 72,
167
+ "height": 72,
168
+ "viewBox": [
169
+ 0,
170
+ 0,
171
+ 576,
172
+ 576
173
+ ],
174
+ "when": "photo",
175
+ "layers": [
176
+ {
177
+ "type": "image",
178
+ "src": "{photo}",
179
+ "x": 0,
180
+ "y": 0,
181
+ "width": 576,
182
+ "height": 576,
183
+ "fit": "cover",
184
+ "effects": [
185
+ {
186
+ "kind": "photocopy",
187
+ "ink": "{ink}",
188
+ "frequency": 0.1062
189
+ }
190
+ ]
191
+ }
192
+ ]
193
+ },
194
+ {
195
+ "id": "barsBottom",
196
+ "type": "shape",
197
+ "fill": "{ink}",
198
+ "items": [
199
+ {
200
+ "kind": "rect",
201
+ "x": 56,
202
+ "y": 449.5,
203
+ "width": 72,
204
+ "height": 13
205
+ },
206
+ {
207
+ "kind": "rect",
208
+ "x": 56,
209
+ "y": 463.5,
210
+ "width": 72,
211
+ "height": 13
212
+ },
213
+ {
214
+ "kind": "rect",
215
+ "x": 56,
216
+ "y": 477.5,
217
+ "width": 72,
218
+ "height": 13
219
+ }
220
+ ]
221
+ },
222
+ {
223
+ "id": "datesBottom",
224
+ "type": "table",
225
+ "font": "Geist",
226
+ "weight": 800,
227
+ "letterSpacing": -0.032,
228
+ "size": 12.5,
229
+ "color": "{ink}",
230
+ "y": 446,
231
+ "rowHeight": 14,
232
+ "columns": [
233
+ {
234
+ "x": 14
235
+ },
236
+ {
237
+ "x": 58
238
+ },
239
+ {
240
+ "x": 204,
241
+ "align": "center"
242
+ },
243
+ {
244
+ "x": 386,
245
+ "align": "right"
246
+ }
247
+ ],
248
+ "rows": "{dates}"
249
+ },
250
+ {
251
+ "id": "partBottom",
252
+ "type": "text",
253
+ "content": "{part}",
254
+ "font": "Geist",
255
+ "weight": 800,
256
+ "letterSpacing": -0.032,
257
+ "size": 15,
258
+ "x": 14,
259
+ "y": 404,
260
+ "color": "{ink}"
261
+ },
262
+ {
263
+ "id": "numBottom",
264
+ "type": "text",
265
+ "content": "{partNo}",
266
+ "font": "Geist",
267
+ "weight": 800,
268
+ "letterSpacing": -0.032,
269
+ "size": 15,
270
+ "x": 386,
271
+ "y": 404,
272
+ "align": "right",
273
+ "color": "{ink}"
274
+ },
275
+ {
276
+ "id": "photoBottom",
277
+ "type": "group",
278
+ "x": 164,
279
+ "y": 360,
280
+ "width": 72,
281
+ "height": 72,
282
+ "viewBox": [
283
+ 0,
284
+ 0,
285
+ 576,
286
+ 576
287
+ ],
288
+ "when": "photo",
289
+ "layers": [
290
+ {
291
+ "type": "image",
292
+ "src": "{photo}",
293
+ "x": 0,
294
+ "y": 0,
295
+ "width": 576,
296
+ "height": 576,
297
+ "fit": "cover",
298
+ "effects": [
299
+ {
300
+ "kind": "photocopy",
301
+ "ink": "{ink}",
302
+ "frequency": 0.1062
303
+ }
304
+ ]
305
+ }
306
+ ]
307
+ },
308
+ {
309
+ "id": "kairoTop",
310
+ "type": "text",
311
+ "content": {
312
+ "upper": "{artist}"
313
+ },
314
+ "font": "Unbounded",
315
+ "weight": 900,
316
+ "letterSpacing": 0,
317
+ "color": "{ink}",
318
+ "size": 22,
319
+ "x": 75,
320
+ "y": 176,
321
+ "width": 250
322
+ },
323
+ {
324
+ "id": "the",
325
+ "type": "text",
326
+ "content": "THE",
327
+ "font": "Bebas Neue",
328
+ "weight": 400,
329
+ "letterSpacing": 0,
330
+ "color": "{ink}",
331
+ "size": 54,
332
+ "x": 125,
333
+ "y": 218,
334
+ "width": 150
335
+ },
336
+ {
337
+ "id": "name",
338
+ "type": "text",
339
+ "content": {
340
+ "upper": "{artist}"
341
+ },
342
+ "font": "Bebas Neue",
343
+ "weight": 400,
344
+ "letterSpacing": 0,
345
+ "color": "{ink}",
346
+ "size": 86,
347
+ "x": 14,
348
+ "y": 290,
349
+ "width": 372
350
+ },
351
+ {
352
+ "id": "tour",
353
+ "type": "text",
354
+ "content": "TOUR",
355
+ "font": "Bebas Neue",
356
+ "weight": 400,
357
+ "letterSpacing": 0,
358
+ "color": "{ink}",
359
+ "size": 54,
360
+ "x": 105,
361
+ "y": 330,
362
+ "width": 190
363
+ },
364
+ {
365
+ "id": "kairoBottom",
366
+ "type": "text",
367
+ "content": {
368
+ "upper": "{artist}"
369
+ },
370
+ "font": "Unbounded",
371
+ "weight": 900,
372
+ "letterSpacing": 0,
373
+ "color": "{ink}",
374
+ "size": 22,
375
+ "x": 75,
376
+ "y": 352,
377
+ "width": 250
378
+ },
379
+ {
380
+ "id": "dust",
381
+ "type": "texture",
382
+ "kind": "dust",
383
+ "count": 70,
384
+ "color": "{ink}"
385
+ }
386
+ ]
387
+ }
388
+ ]
389
+ },
390
+ {
391
+ "id": "cover",
392
+ "type": "group",
393
+ "viewBox": [
394
+ 0,
395
+ 0,
396
+ 400,
397
+ 400
398
+ ],
399
+ "fit": "contain",
400
+ "when": {
401
+ "aspect": "square"
402
+ },
403
+ "layers": [
404
+ {
405
+ "id": "ink",
406
+ "type": "group",
407
+ "effects": [
408
+ {
409
+ "kind": "xerox",
410
+ "rough": 1.6
411
+ }
412
+ ],
413
+ "layers": [
414
+ {
415
+ "id": "part",
416
+ "type": "text",
417
+ "content": "PART",
418
+ "font": "Geist",
419
+ "weight": 800,
420
+ "letterSpacing": -0.032,
421
+ "size": 38,
422
+ "x": 16,
423
+ "y": 92,
424
+ "color": "{ink}"
425
+ },
426
+ {
427
+ "id": "num",
428
+ "type": "text",
429
+ "content": "I.",
430
+ "font": "Geist",
431
+ "weight": 800,
432
+ "letterSpacing": -0.032,
433
+ "size": 38,
434
+ "x": 384,
435
+ "y": 92,
436
+ "align": "right",
437
+ "color": "{ink}"
438
+ },
439
+ {
440
+ "id": "photo",
441
+ "type": "group",
442
+ "x": 150,
443
+ "y": 14,
444
+ "width": 100,
445
+ "height": 100,
446
+ "viewBox": [
447
+ 0,
448
+ 0,
449
+ 800,
450
+ 800
451
+ ],
452
+ "when": "photo",
453
+ "layers": [
454
+ {
455
+ "type": "image",
456
+ "src": "{photo}",
457
+ "x": 0,
458
+ "y": 0,
459
+ "width": 800,
460
+ "height": 800,
461
+ "fit": "cover",
462
+ "effects": [
463
+ {
464
+ "kind": "photocopy",
465
+ "ink": "{ink}",
466
+ "frequency": 0.1062
467
+ }
468
+ ]
469
+ }
470
+ ]
471
+ },
472
+ {
473
+ "id": "kairoTop",
474
+ "type": "text",
475
+ "content": {
476
+ "upper": "{artist}"
477
+ },
478
+ "font": "Unbounded",
479
+ "weight": 900,
480
+ "letterSpacing": 0,
481
+ "color": "{ink}",
482
+ "size": 40,
483
+ "x": 50,
484
+ "y": 168,
485
+ "width": 300
486
+ },
487
+ {
488
+ "id": "name",
489
+ "type": "text",
490
+ "content": {
491
+ "upper": "{artist}"
492
+ },
493
+ "font": "Bebas Neue",
494
+ "weight": 400,
495
+ "letterSpacing": 0,
496
+ "color": "{ink}",
497
+ "size": 176,
498
+ "x": 12,
499
+ "y": 318,
500
+ "width": 376
501
+ },
502
+ {
503
+ "id": "kairoBottom",
504
+ "type": "text",
505
+ "content": {
506
+ "upper": "{artist}"
507
+ },
508
+ "font": "Unbounded",
509
+ "weight": 900,
510
+ "letterSpacing": 0,
511
+ "color": "{ink}",
512
+ "size": 40,
513
+ "x": 50,
514
+ "y": 384,
515
+ "width": 300
516
+ },
517
+ {
518
+ "id": "dust",
519
+ "type": "texture",
520
+ "kind": "dust",
521
+ "count": 60,
522
+ "color": "{ink}"
523
+ }
524
+ ]
525
+ }
526
+ ]
527
+ },
528
+ {
529
+ "id": "grain",
530
+ "type": "grain",
531
+ "amount": 0.05,
532
+ "blend": "multiply"
533
+ }
534
+ ]
535
+ }