@arraypress/covers 1.0.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 (246) hide show
  1. package/CHANGELOG.md +118 -0
  2. package/README.md +18 -524
  3. package/package.json +34 -5
  4. package/recipes/brand.json +1143 -0
  5. package/recipes/flyers/afterglow-motion.json +540 -0
  6. package/recipes/flyers/afterglow.json +70 -0
  7. package/recipes/flyers/arcfield-mirror-motion.json +397 -0
  8. package/recipes/flyers/arcfield-mirror.json +364 -0
  9. package/recipes/flyers/bauhaus-oktav.json +319 -0
  10. package/recipes/flyers/bauhaus-ritmo.json +735 -0
  11. package/recipes/flyers/bauhaus-volta.json +394 -0
  12. package/recipes/flyers/bloomfall.json +99 -0
  13. package/recipes/flyers/drag-solenne-motion.json +444 -0
  14. package/recipes/flyers/drag-solenne.json +426 -0
  15. package/recipes/flyers/fennick-patches.json +874 -0
  16. package/recipes/flyers/ferro-pass.json +398 -0
  17. package/recipes/flyers/ferrova.json +812 -0
  18. package/recipes/flyers/grid-rest-rhythm.json +125 -0
  19. package/recipes/flyers/groovy-honeycomb.json +816 -0
  20. package/recipes/flyers/groovy-marigold.json +479 -0
  21. package/recipes/flyers/groovy-peachfuzz.json +974 -0
  22. package/recipes/flyers/halden-orbit-motion.json +381 -0
  23. package/recipes/flyers/halden-orbit.json +356 -0
  24. package/recipes/flyers/halvard.json +120 -0
  25. package/recipes/flyers/kairo-weekender.json +696 -0
  26. package/recipes/flyers/linger-motion.json +518 -0
  27. package/recipes/flyers/linger.json +67 -0
  28. package/recipes/flyers/little-orchard.json +105 -0
  29. package/recipes/flyers/lofi-hexmoth.json +912 -0
  30. package/recipes/flyers/lofi-lowbit-motion.json +888 -0
  31. package/recipes/flyers/lofi-lowbit.json +880 -0
  32. package/recipes/flyers/lofi-nullpoint.json +3013 -0
  33. package/recipes/flyers/lumio-stack-motion.json +648 -0
  34. package/recipes/flyers/lumio-stack.json +438 -0
  35. package/recipes/flyers/magazine-cover.json +168 -0
  36. package/recipes/flyers/magazine-extended.json +269 -0
  37. package/recipes/flyers/magazine-knockout.json +40 -0
  38. package/recipes/flyers/northfold-varsity.json +618 -0
  39. package/recipes/flyers/open-studio.json +69 -0
  40. package/recipes/flyers/orrin-merch.json +715 -0
  41. package/recipes/flyers/oxyde.json +113 -0
  42. package/recipes/flyers/quiet-fields.json +610 -0
  43. package/recipes/flyers/scrapbook-halcyon.json +948 -0
  44. package/recipes/flyers/solenne-ticket.json +730 -0
  45. package/recipes/flyers/solvane-motion.json +576 -0
  46. package/recipes/flyers/solvane.json +98 -0
  47. package/recipes/flyers/subduct.json +99 -0
  48. package/recipes/flyers/sunvale-lineup.json +584 -0
  49. package/recipes/flyers/tidewell.json +91 -0
  50. package/recipes/flyers/tour-kairo.json +535 -0
  51. package/recipes/flyers/velora-stickers.json +885 -0
  52. package/recipes/flyers/wheatpaste-black.json +313 -0
  53. package/recipes/flyers/wheatpaste-mark.json +198 -0
  54. package/recipes/flyers/wheatpaste-torn.json +114 -0
  55. package/recipes/flyers/wheatpaste-wall.json +984 -0
  56. package/recipes/flyers/wheatpaste-words.json +233 -0
  57. package/recipes/release/aura.json +137 -0
  58. package/recipes/release/chrome.json +433 -0
  59. package/recipes/release/collage.json +372 -0
  60. package/recipes/release/duotone.json +113 -0
  61. package/recipes/release/film-still.json +102 -0
  62. package/recipes/release/headline.json +70 -0
  63. package/recipes/release/instant.json +170 -0
  64. package/recipes/release/label.json +364 -0
  65. package/recipes/release/liquid-glass.json +301 -0
  66. package/recipes/release/odd-tile-dark.json +688 -0
  67. package/recipes/release/odd-tile-dense.json +1056 -0
  68. package/recipes/release/odd-tile-shift.json +541 -0
  69. package/recipes/release/odd-tile-split.json +571 -0
  70. package/recipes/release/odd-tile.json +633 -0
  71. package/recipes/release/off-edge.json +96 -0
  72. package/recipes/release/plinth.json +794 -0
  73. package/recipes/release/riso.json +108 -0
  74. package/recipes/release/series/fluid-label.json +561 -0
  75. package/recipes/release/series/fluid-pixel.json +334 -0
  76. package/recipes/release/series/hairline.json +305 -0
  77. package/recipes/release/series/halo.json +282 -0
  78. package/recipes/release/series/mark-crop.json +135 -0
  79. package/recipes/release/series/mark-window.json +150 -0
  80. package/recipes/release/series/photo-label.json +475 -0
  81. package/recipes/release/series/smear-field.json +345 -0
  82. package/recipes/release/series/smear.json +202 -0
  83. package/recipes/release/series/spin.json +172 -0
  84. package/recipes/release/series/split-ghost.json +230 -0
  85. package/recipes/release/series/zoom.json +168 -0
  86. package/recipes/release/small-print.json +114 -0
  87. package/recipes/release/stack.json +156 -0
  88. package/recipes/release/swiss.json +117 -0
  89. package/schema/recipe.schema.json +7624 -827
  90. package/src/animate/index.d.ts +9 -0
  91. package/src/animate/index.js +11 -0
  92. package/src/animate/keyframes.d.ts +21 -0
  93. package/src/animate/keyframes.js +119 -0
  94. package/src/animate/marquee.d.ts +30 -0
  95. package/src/animate/marquee.js +93 -0
  96. package/src/animate/morph.d.ts +8 -0
  97. package/src/animate/morph.js +99 -0
  98. package/src/animate/motion.d.ts +59 -0
  99. package/src/animate/motion.js +63 -0
  100. package/src/animate/sheet.d.ts +19 -0
  101. package/src/animate/sheet.js +61 -0
  102. package/src/animate/timing.d.ts +28 -0
  103. package/src/animate/timing.js +146 -0
  104. package/src/animate/tracks.d.ts +18 -0
  105. package/src/animate/tracks.js +139 -0
  106. package/src/builtins.js +4 -0
  107. package/src/diagram.js +4 -3
  108. package/src/extract.js +6 -5
  109. package/src/fonts.d.ts +55 -0
  110. package/src/fonts.js +245 -53
  111. package/src/formats/cut.d.ts +10 -0
  112. package/src/formats/cut.js +77 -0
  113. package/src/formats/index.d.ts +6 -0
  114. package/src/formats/index.js +9 -0
  115. package/src/formats/presets.d.ts +41 -0
  116. package/src/formats/presets.js +89 -0
  117. package/src/formats/print.d.ts +25 -0
  118. package/src/formats/print.js +117 -0
  119. package/src/formats/zones.d.ts +10 -0
  120. package/src/formats/zones.js +64 -0
  121. package/src/geometry.js +5 -35
  122. package/src/grid.js +1 -1
  123. package/src/handmade.js +9 -7
  124. package/src/icons.js +42 -9
  125. package/src/index.d.ts +232 -55
  126. package/src/index.js +14 -6
  127. package/src/inter-data.js +27 -0
  128. package/src/json-recipe.js +201 -27
  129. package/src/kit/index.d.ts +20 -0
  130. package/src/kit/index.js +58 -0
  131. package/src/layer-options.js +43 -4
  132. package/src/layers/barcode.d.ts +19 -0
  133. package/src/layers/barcode.js +63 -0
  134. package/src/layers/code128.d.ts +4 -0
  135. package/src/layers/code128.js +28 -0
  136. package/src/layers/expr.d.ts +6 -0
  137. package/src/layers/expr.js +121 -0
  138. package/src/layers/geometry.d.ts +6 -0
  139. package/src/layers/geometry.js +238 -0
  140. package/src/layers/index.d.ts +18 -0
  141. package/src/layers/index.js +15 -0
  142. package/src/layers/perforation.d.ts +14 -0
  143. package/src/layers/perforation.js +47 -0
  144. package/src/layers/repeat.d.ts +29 -0
  145. package/src/layers/repeat.js +90 -0
  146. package/src/layers/shape.d.ts +46 -0
  147. package/src/layers/shape.js +115 -0
  148. package/src/layers/soft.d.ts +5 -0
  149. package/src/layers/soft.js +43 -0
  150. package/src/layers/svg.d.ts +23 -0
  151. package/src/layers/svg.js +108 -0
  152. package/src/layers/table.d.ts +25 -0
  153. package/src/layers/table.js +80 -0
  154. package/src/layers/tear.d.ts +21 -0
  155. package/src/layers/tear.js +74 -0
  156. package/src/layers/texture.d.ts +17 -0
  157. package/src/layers/texture.js +106 -0
  158. package/src/layers/util.d.ts +8 -0
  159. package/src/layers/util.js +61 -0
  160. package/src/layers.js +129 -61
  161. package/src/lint/image-size.d.ts +4 -0
  162. package/src/lint/image-size.js +34 -0
  163. package/src/lint/index.d.ts +16 -0
  164. package/src/lint/index.js +127 -0
  165. package/src/lint/rules.d.ts +5 -0
  166. package/src/lint/rules.js +19 -0
  167. package/src/node.d.ts +2 -0
  168. package/src/node.js +20 -0
  169. package/src/paint/index.d.ts +49 -0
  170. package/src/paint/index.js +66 -0
  171. package/src/paint/presets.d.ts +10 -0
  172. package/src/paint/presets.js +47 -0
  173. package/src/paint/tile.d.ts +7 -0
  174. package/src/paint/tile.js +55 -0
  175. package/src/palette.js +1 -1
  176. package/src/platform/files.d.ts +6 -0
  177. package/src/platform/files.js +41 -0
  178. package/src/platform/harfbuzz.d.ts +9 -0
  179. package/src/platform/harfbuzz.js +80 -0
  180. package/src/platform/index.d.ts +8 -0
  181. package/src/platform/index.js +15 -0
  182. package/src/platform/load.d.ts +6 -0
  183. package/src/platform/load.js +71 -0
  184. package/src/platform/no-harfbuzz.d.ts +2 -0
  185. package/src/platform/no-harfbuzz.js +11 -0
  186. package/src/platform/settings.d.ts +28 -0
  187. package/src/platform/settings.js +51 -0
  188. package/src/print.js +16 -13
  189. package/src/recipes.js +5 -4
  190. package/src/render/backdrop.d.ts +6 -0
  191. package/src/render/backdrop.js +55 -0
  192. package/src/render/context.d.ts +82 -0
  193. package/src/render/grain.d.ts +7 -0
  194. package/src/render/grain.js +113 -0
  195. package/src/render/group.d.ts +23 -0
  196. package/src/render/group.js +67 -0
  197. package/src/render/key.d.ts +5 -0
  198. package/src/render/key.js +90 -0
  199. package/src/render/report.d.ts +5 -0
  200. package/src/render/report.js +19 -0
  201. package/src/render/transform.d.ts +36 -0
  202. package/src/render/transform.js +139 -0
  203. package/src/render/use.d.ts +27 -0
  204. package/src/render/use.js +73 -0
  205. package/src/render/wrap.d.ts +14 -0
  206. package/src/render/wrap.js +144 -0
  207. package/src/render.js +343 -215
  208. package/src/text.d.ts +29 -0
  209. package/src/text.js +23 -16
  210. package/src/type/auto-color.d.ts +9 -0
  211. package/src/type/auto-color.js +44 -0
  212. package/src/type/fallback.d.ts +11 -0
  213. package/src/type/fallback.js +92 -0
  214. package/src/type/glyphs.d.ts +24 -0
  215. package/src/type/glyphs.js +87 -0
  216. package/src/type/index.d.ts +5 -0
  217. package/src/type/index.js +10 -0
  218. package/src/type/kern.d.ts +4 -0
  219. package/src/type/kern.js +144 -0
  220. package/src/type/layout-ref.d.ts +10 -0
  221. package/src/type/layout-ref.js +74 -0
  222. package/src/type/line.d.ts +11 -0
  223. package/src/type/line.js +105 -0
  224. package/src/type/live.d.ts +6 -0
  225. package/src/type/live.js +39 -0
  226. package/src/type/name.d.ts +4 -0
  227. package/src/type/name.js +32 -0
  228. package/src/type/path.d.ts +18 -0
  229. package/src/type/path.js +89 -0
  230. package/src/type/pixel.d.ts +7 -0
  231. package/src/type/pixel.js +85 -0
  232. package/src/type/sfnt.d.ts +20 -0
  233. package/src/type/sfnt.js +258 -0
  234. package/src/type/spans.d.ts +33 -0
  235. package/src/type/spans.js +138 -0
  236. package/src/type/symbols.d.ts +7 -0
  237. package/src/type/symbols.js +89 -0
  238. package/src/type/typeset.d.ts +10 -0
  239. package/src/type/typeset.js +363 -0
  240. package/src/type/woff2.d.ts +6 -0
  241. package/src/type/woff2.js +301 -0
  242. package/src/version.js +4 -0
  243. package/src/color.js +0 -246
  244. package/src/png.js +0 -77
  245. package/src/rng.js +0 -95
  246. package/src/svg.js +0 -69
@@ -0,0 +1,170 @@
1
+ {
2
+ "$schema": "../../schema/recipe.schema.json",
3
+ "name": "instant",
4
+ "description": "Instant photo, flat: a white instant-film frame tilted on a flat field of the accent, the photo in it slightly faded like the film, the title written on the strip in marker and the artist set clean above. Slots: {name} (artist), {title} (release), {photo}, the palette (accent = the field), `tilt`, `focus`. Fonts: Permanent Marker, Inter Tight (register them as TTF/WOFF; WOFF2 can't be outlined).",
5
+ "requires": [
6
+ "photo"
7
+ ],
8
+ "params": {
9
+ "tilt": -4,
10
+ "focus": "center"
11
+ },
12
+ "vars": {
13
+ "ink": {
14
+ "readable": "@accent"
15
+ }
16
+ },
17
+ "layers": [
18
+ {
19
+ "id": "field",
20
+ "type": "solid",
21
+ "color": "@accent"
22
+ },
23
+ {
24
+ "id": "cover",
25
+ "type": "group",
26
+ "viewBox": [
27
+ 0,
28
+ 0,
29
+ 1000,
30
+ 1000
31
+ ],
32
+ "fit": "cover",
33
+ "layers": [
34
+ {
35
+ "id": "name",
36
+ "type": "text",
37
+ "content": "{name}",
38
+ "font": "Inter Tight",
39
+ "weight": 700,
40
+ "size": 90,
41
+ "letterSpacing": -0.03,
42
+ "x": 500,
43
+ "y": 122,
44
+ "align": "center",
45
+ "maxWidth": 900,
46
+ "maxLines": 1,
47
+ "fit": "shrink",
48
+ "color": "$ink"
49
+ }
50
+ ]
51
+ },
52
+ {
53
+ "id": "print",
54
+ "type": "group",
55
+ "transform": {
56
+ "rotate": "{tilt}",
57
+ "origin": [
58
+ "50vmin",
59
+ "56.5vmin"
60
+ ]
61
+ },
62
+ "layers": [
63
+ {
64
+ "id": "under",
65
+ "type": "shape",
66
+ "kind": "rect",
67
+ "x": "21.2%",
68
+ "y": "18.2%",
69
+ "width": "60%",
70
+ "height": "79%",
71
+ "fill": "#000000",
72
+ "opacity": 0.12
73
+ },
74
+ {
75
+ "id": "frame",
76
+ "type": "shape",
77
+ "kind": "rect",
78
+ "x": "20%",
79
+ "y": "17%",
80
+ "width": "60%",
81
+ "height": "79%",
82
+ "radius": "0.6vmin",
83
+ "fill": "#f7f5ef"
84
+ },
85
+ {
86
+ "id": "photo",
87
+ "type": "image",
88
+ "src": "{photo}",
89
+ "x": "23%",
90
+ "y": "20%",
91
+ "width": "54%",
92
+ "height": "54%",
93
+ "fit": "cover",
94
+ "focus": "{focus}",
95
+ "effects": [
96
+ {
97
+ "kind": "levels",
98
+ "slope": 0.88,
99
+ "intercept": 0.06
100
+ },
101
+ {
102
+ "kind": "saturate",
103
+ "amount": 0.85
104
+ }
105
+ ]
106
+ },
107
+ {
108
+ "id": "sheen",
109
+ "type": "shape",
110
+ "kind": "rect",
111
+ "x": "23%",
112
+ "y": "20%",
113
+ "width": "54%",
114
+ "height": "54%",
115
+ "fill": {
116
+ "type": "linear",
117
+ "angle": 135,
118
+ "colors": [
119
+ "#ffffff",
120
+ "#ffffff"
121
+ ],
122
+ "opacities": [
123
+ 0.16,
124
+ 0
125
+ ]
126
+ }
127
+ },
128
+ {
129
+ "id": "strip",
130
+ "type": "group",
131
+ "viewBox": [
132
+ 0,
133
+ 0,
134
+ 1000,
135
+ 1000
136
+ ],
137
+ "fit": "cover",
138
+ "layers": [
139
+ {
140
+ "id": "title",
141
+ "type": "text",
142
+ "content": "{title}",
143
+ "font": "Permanent Marker",
144
+ "weight": 400,
145
+ "size": 92,
146
+ "minSize": 86,
147
+ "lineHeight": 0.98,
148
+ "letterSpacing": -0.02,
149
+ "anchor": "center",
150
+ "position": {
151
+ "x": 0.5,
152
+ "y": 0.852
153
+ },
154
+ "align": "center",
155
+ "maxWidth": 560,
156
+ "maxLines": 2,
157
+ "balance": true,
158
+ "color": "#1c1f2b"
159
+ }
160
+ ]
161
+ }
162
+ ]
163
+ },
164
+ {
165
+ "id": "grain",
166
+ "type": "grain",
167
+ "amount": 0.05
168
+ }
169
+ ]
170
+ }
@@ -0,0 +1,364 @@
1
+ {
2
+ "$schema": "../../schema/recipe.schema.json",
3
+ "name": "label",
4
+ "description": "The mark as a record label: a close-up of a black record (grooves, a sheen) with its centre label in the accent, the mark above the spindle hole, the artist set round the top of the label and the title straight across under the hole. Slots: {name} (artist), {title} (release), {mark}, the palette (accent = the label). Fonts: Space Grotesk (register them as TTF/WOFF; WOFF2 can't be outlined).",
5
+ "requires": [
6
+ "mark"
7
+ ],
8
+ "vars": {
9
+ "ink": {
10
+ "readable": "@accent"
11
+ }
12
+ },
13
+ "layers": [
14
+ {
15
+ "id": "vinyl",
16
+ "type": "solid",
17
+ "color": "#0c0c0d"
18
+ },
19
+ {
20
+ "id": "cover",
21
+ "type": "group",
22
+ "viewBox": [
23
+ 0,
24
+ 0,
25
+ 1000,
26
+ 1000
27
+ ],
28
+ "fit": "cover",
29
+ "layers": [
30
+ {
31
+ "id": "grooves",
32
+ "type": "shape",
33
+ "items": [
34
+ {
35
+ "kind": "circle",
36
+ "cx": 500,
37
+ "cy": 500,
38
+ "r": 420
39
+ },
40
+ {
41
+ "kind": "circle",
42
+ "cx": 500,
43
+ "cy": 500,
44
+ "r": 431
45
+ },
46
+ {
47
+ "kind": "circle",
48
+ "cx": 500,
49
+ "cy": 500,
50
+ "r": 442
51
+ },
52
+ {
53
+ "kind": "circle",
54
+ "cx": 500,
55
+ "cy": 500,
56
+ "r": 447
57
+ },
58
+ {
59
+ "kind": "circle",
60
+ "cx": 500,
61
+ "cy": 500,
62
+ "r": 458
63
+ },
64
+ {
65
+ "kind": "circle",
66
+ "cx": 500,
67
+ "cy": 500,
68
+ "r": 469
69
+ },
70
+ {
71
+ "kind": "circle",
72
+ "cx": 500,
73
+ "cy": 500,
74
+ "r": 474
75
+ },
76
+ {
77
+ "kind": "circle",
78
+ "cx": 500,
79
+ "cy": 500,
80
+ "r": 485
81
+ },
82
+ {
83
+ "kind": "circle",
84
+ "cx": 500,
85
+ "cy": 500,
86
+ "r": 496
87
+ },
88
+ {
89
+ "kind": "circle",
90
+ "cx": 500,
91
+ "cy": 500,
92
+ "r": 501
93
+ },
94
+ {
95
+ "kind": "circle",
96
+ "cx": 500,
97
+ "cy": 500,
98
+ "r": 512
99
+ },
100
+ {
101
+ "kind": "circle",
102
+ "cx": 500,
103
+ "cy": 500,
104
+ "r": 523
105
+ },
106
+ {
107
+ "kind": "circle",
108
+ "cx": 500,
109
+ "cy": 500,
110
+ "r": 528
111
+ },
112
+ {
113
+ "kind": "circle",
114
+ "cx": 500,
115
+ "cy": 500,
116
+ "r": 539
117
+ },
118
+ {
119
+ "kind": "circle",
120
+ "cx": 500,
121
+ "cy": 500,
122
+ "r": 550
123
+ },
124
+ {
125
+ "kind": "circle",
126
+ "cx": 500,
127
+ "cy": 500,
128
+ "r": 555
129
+ },
130
+ {
131
+ "kind": "circle",
132
+ "cx": 500,
133
+ "cy": 500,
134
+ "r": 566
135
+ },
136
+ {
137
+ "kind": "circle",
138
+ "cx": 500,
139
+ "cy": 500,
140
+ "r": 577
141
+ },
142
+ {
143
+ "kind": "circle",
144
+ "cx": 500,
145
+ "cy": 500,
146
+ "r": 582
147
+ },
148
+ {
149
+ "kind": "circle",
150
+ "cx": 500,
151
+ "cy": 500,
152
+ "r": 593
153
+ },
154
+ {
155
+ "kind": "circle",
156
+ "cx": 500,
157
+ "cy": 500,
158
+ "r": 604
159
+ },
160
+ {
161
+ "kind": "circle",
162
+ "cx": 500,
163
+ "cy": 500,
164
+ "r": 609
165
+ },
166
+ {
167
+ "kind": "circle",
168
+ "cx": 500,
169
+ "cy": 500,
170
+ "r": 620
171
+ },
172
+ {
173
+ "kind": "circle",
174
+ "cx": 500,
175
+ "cy": 500,
176
+ "r": 631
177
+ },
178
+ {
179
+ "kind": "circle",
180
+ "cx": 500,
181
+ "cy": 500,
182
+ "r": 636
183
+ },
184
+ {
185
+ "kind": "circle",
186
+ "cx": 500,
187
+ "cy": 500,
188
+ "r": 647
189
+ },
190
+ {
191
+ "kind": "circle",
192
+ "cx": 500,
193
+ "cy": 500,
194
+ "r": 658
195
+ },
196
+ {
197
+ "kind": "circle",
198
+ "cx": 500,
199
+ "cy": 500,
200
+ "r": 663
201
+ },
202
+ {
203
+ "kind": "circle",
204
+ "cx": 500,
205
+ "cy": 500,
206
+ "r": 674
207
+ },
208
+ {
209
+ "kind": "circle",
210
+ "cx": 500,
211
+ "cy": 500,
212
+ "r": 685
213
+ },
214
+ {
215
+ "kind": "circle",
216
+ "cx": 500,
217
+ "cy": 500,
218
+ "r": 690
219
+ },
220
+ {
221
+ "kind": "circle",
222
+ "cx": 500,
223
+ "cy": 500,
224
+ "r": 701
225
+ },
226
+ {
227
+ "kind": "circle",
228
+ "cx": 500,
229
+ "cy": 500,
230
+ "r": 712
231
+ },
232
+ {
233
+ "kind": "circle",
234
+ "cx": 500,
235
+ "cy": 500,
236
+ "r": 717
237
+ }
238
+ ],
239
+ "fill": "none",
240
+ "stroke": "#ffffff",
241
+ "strokeWidth": 1.4,
242
+ "opacity": 0.11
243
+ },
244
+ {
245
+ "id": "sheen",
246
+ "type": "shape",
247
+ "kind": "sector",
248
+ "cx": 500,
249
+ "cy": 500,
250
+ "r": 760,
251
+ "start": -62,
252
+ "end": -28,
253
+ "fill": "#ffffff",
254
+ "opacity": 0.14,
255
+ "effects": [
256
+ {
257
+ "kind": "blur",
258
+ "radius": 40
259
+ }
260
+ ]
261
+ },
262
+ {
263
+ "id": "sheen2",
264
+ "type": "shape",
265
+ "kind": "sector",
266
+ "cx": 500,
267
+ "cy": 500,
268
+ "r": 760,
269
+ "start": 118,
270
+ "end": 152,
271
+ "fill": "#ffffff",
272
+ "opacity": 0.06,
273
+ "effects": [
274
+ {
275
+ "kind": "blur",
276
+ "radius": 40
277
+ }
278
+ ]
279
+ },
280
+ {
281
+ "id": "label",
282
+ "type": "shape",
283
+ "kind": "circle",
284
+ "cx": 500,
285
+ "cy": 500,
286
+ "r": 400,
287
+ "fill": "@accent"
288
+ },
289
+ {
290
+ "id": "rim",
291
+ "type": "shape",
292
+ "kind": "circle",
293
+ "cx": 500,
294
+ "cy": 500,
295
+ "r": 372,
296
+ "fill": "none",
297
+ "stroke": "$ink",
298
+ "strokeWidth": 2,
299
+ "opacity": 0.45
300
+ },
301
+ {
302
+ "id": "mark",
303
+ "type": "icon",
304
+ "markup": "{mark}",
305
+ "x": 415,
306
+ "y": 250,
307
+ "size": 170,
308
+ "color": "$ink"
309
+ },
310
+ {
311
+ "id": "hole",
312
+ "type": "shape",
313
+ "kind": "circle",
314
+ "cx": 500,
315
+ "cy": 500,
316
+ "r": 17,
317
+ "fill": "#0c0c0d"
318
+ },
319
+ {
320
+ "id": "name",
321
+ "type": "text",
322
+ "content": {
323
+ "upper": "{name}"
324
+ },
325
+ "font": "Space Grotesk",
326
+ "weight": 700,
327
+ "size": 90,
328
+ "letterSpacing": 0.04,
329
+ "path": {
330
+ "kind": "arc",
331
+ "cx": 500,
332
+ "cy": 500,
333
+ "r": 285,
334
+ "start": -80,
335
+ "end": 80
336
+ },
337
+ "color": "$ink"
338
+ },
339
+ {
340
+ "id": "title",
341
+ "type": "text",
342
+ "content": "{title}",
343
+ "font": "Space Grotesk",
344
+ "weight": 500,
345
+ "size": 90,
346
+ "letterSpacing": -0.02,
347
+ "x": 500,
348
+ "y": 668,
349
+ "align": "center",
350
+ "maxWidth": 600,
351
+ "maxLines": 2,
352
+ "lineHeight": 1,
353
+ "balance": true,
354
+ "color": "$ink"
355
+ }
356
+ ]
357
+ },
358
+ {
359
+ "id": "grain",
360
+ "type": "grain",
361
+ "amount": 0.05
362
+ }
363
+ ]
364
+ }