@omniharmonic/openspace-cli 0.1.2 → 0.1.4

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 (143) hide show
  1. package/README.md +11 -1
  2. package/dist/{agents-md-2DTXWUZQ.js → agents-md-3W4PIY4N.js} +2 -2
  3. package/dist/bin.js +2 -2
  4. package/dist/chunk-6NIIOHOX.js +39190 -0
  5. package/dist/chunk-6NIIOHOX.js.map +1 -0
  6. package/dist/{chunk-3F6TAUAT.js → chunk-7I6IJI6Z.js} +9184 -874
  7. package/dist/chunk-7I6IJI6Z.js.map +1 -0
  8. package/dist/index.d.ts +2 -0
  9. package/dist/index.js +2 -2
  10. package/dist/starter/site/AGENTS.md +11 -4
  11. package/dist/templates/beacon/content/collections/events/_collection.json +13 -0
  12. package/dist/templates/beacon/content/collections/events/keeper-training-november.mdoc +14 -0
  13. package/dist/templates/beacon/content/collections/events/planting-day-harbour-ward.mdoc +14 -0
  14. package/dist/templates/beacon/content/collections/events/planting-day-linden-north.mdoc +14 -0
  15. package/dist/templates/beacon/content/collections/news/2026-09-12-heat-map-2026.mdoc +13 -0
  16. package/dist/templates/beacon/content/collections/news/2026-09-30-school-gardens-harvest.mdoc +13 -0
  17. package/dist/templates/beacon/content/collections/news/2026-10-14-planting-season-begins.mdoc +13 -0
  18. package/dist/templates/beacon/content/collections/news/_collection.json +16 -0
  19. package/dist/templates/beacon/content/pages/about.json +572 -0
  20. package/dist/templates/beacon/content/pages/contact.json +260 -0
  21. package/dist/templates/beacon/content/pages/donate.json +406 -0
  22. package/dist/templates/beacon/content/pages/get-involved.json +412 -0
  23. package/dist/templates/beacon/content/pages/home.json +701 -0
  24. package/dist/templates/beacon/content/pages/our-work.json +855 -0
  25. package/dist/templates/beacon/content/site.json +363 -0
  26. package/dist/templates/beacon/content/styles.json +17 -0
  27. package/dist/templates/beacon/media/LICENSES.json +163 -0
  28. package/dist/templates/beacon/openspace.json +21 -0
  29. package/dist/templates/beacon/template.json +113 -0
  30. package/dist/templates/commons/content/pages/{members.json → directory.json} +15 -15
  31. package/dist/templates/commons/content/pages/home.json +1 -1
  32. package/dist/templates/commons/content/site.json +2 -2
  33. package/dist/templates/commons/template.json +2 -2
  34. package/dist/templates/darkroom/content/collections/work/_collection.json +13 -0
  35. package/dist/templates/darkroom/content/collections/work/after-hours.mdoc +28 -0
  36. package/dist/templates/darkroom/content/collections/work/dry-season.mdoc +28 -0
  37. package/dist/templates/darkroom/content/collections/work/faces-of-the-guild.mdoc +28 -0
  38. package/dist/templates/darkroom/content/collections/work/two-weddings.mdoc +28 -0
  39. package/dist/templates/darkroom/content/collections/work/white-lines.mdoc +28 -0
  40. package/dist/templates/darkroom/content/pages/about.json +449 -0
  41. package/dist/templates/darkroom/content/pages/contact.json +185 -0
  42. package/dist/templates/darkroom/content/pages/home.json +636 -0
  43. package/dist/templates/darkroom/content/pages/services.json +636 -0
  44. package/dist/templates/darkroom/content/site.json +264 -0
  45. package/dist/templates/darkroom/content/styles.json +17 -0
  46. package/dist/templates/darkroom/media/LICENSES.json +284 -0
  47. package/dist/templates/darkroom/openspace.json +21 -0
  48. package/dist/templates/darkroom/template.json +103 -0
  49. package/dist/templates/encore/content/pages/home.json +86 -0
  50. package/dist/templates/encore/media/LICENSES.json +22 -0
  51. package/dist/templates/field-notes/content/pages/home.json +94 -0
  52. package/dist/templates/fixwell/content/pages/about.json +508 -0
  53. package/dist/templates/fixwell/content/pages/contact.json +321 -0
  54. package/dist/templates/fixwell/content/pages/home.json +888 -0
  55. package/dist/templates/fixwell/content/pages/pricing.json +467 -0
  56. package/dist/templates/fixwell/content/pages/services.json +648 -0
  57. package/dist/templates/fixwell/content/site.json +293 -0
  58. package/dist/templates/fixwell/content/styles.json +17 -0
  59. package/dist/templates/fixwell/media/LICENSES.json +119 -0
  60. package/dist/templates/fixwell/openspace.json +21 -0
  61. package/dist/templates/fixwell/template.json +108 -0
  62. package/dist/templates/folio/content/collections/projects/_collection.json +13 -0
  63. package/dist/templates/folio/content/collections/projects/field-notes-app.mdoc +28 -0
  64. package/dist/templates/folio/content/collections/projects/harbour-health-dashboards.mdoc +28 -0
  65. package/dist/templates/folio/content/collections/projects/open-budget.mdoc +28 -0
  66. package/dist/templates/folio/content/collections/projects/transit-times.mdoc +28 -0
  67. package/dist/templates/folio/content/collections/writing/2026-08-30-designing-for-night-shifts.mdoc +9 -0
  68. package/dist/templates/folio/content/collections/writing/2026-09-20-testing-with-real-data.mdoc +9 -0
  69. package/dist/templates/folio/content/collections/writing/2026-10-12-one-honest-number.mdoc +9 -0
  70. package/dist/templates/folio/content/collections/writing/_collection.json +16 -0
  71. package/dist/templates/folio/content/pages/about.json +366 -0
  72. package/dist/templates/folio/content/pages/contact.json +218 -0
  73. package/dist/templates/folio/content/pages/experience.json +552 -0
  74. package/dist/templates/folio/content/pages/home.json +410 -0
  75. package/dist/templates/folio/content/site.json +186 -0
  76. package/dist/templates/folio/content/styles.json +17 -0
  77. package/dist/templates/folio/media/LICENSES.json +229 -0
  78. package/dist/templates/folio/openspace.json +21 -0
  79. package/dist/templates/folio/template.json +103 -0
  80. package/dist/templates/gather/content/collections/fringe/_collection.json +13 -0
  81. package/dist/templates/gather/content/collections/fringe/library-open-studio.mdoc +14 -0
  82. package/dist/templates/gather/content/collections/fringe/morning-run.mdoc +14 -0
  83. package/dist/templates/gather/content/collections/fringe/plain-language-pub-quiz.mdoc +14 -0
  84. package/dist/templates/gather/content/pages/about.json +435 -0
  85. package/dist/templates/gather/content/pages/contact.json +196 -0
  86. package/dist/templates/gather/content/pages/home.json +527 -0
  87. package/dist/templates/gather/content/pages/programme.json +449 -0
  88. package/dist/templates/gather/content/pages/speakers.json +225 -0
  89. package/dist/templates/gather/content/pages/tickets.json +495 -0
  90. package/dist/templates/gather/content/pages/venue.json +382 -0
  91. package/dist/templates/gather/content/site.json +222 -0
  92. package/dist/templates/gather/content/styles.json +17 -0
  93. package/dist/templates/gather/media/LICENSES.json +185 -0
  94. package/dist/templates/gather/openspace.json +21 -0
  95. package/dist/templates/gather/template.json +118 -0
  96. package/dist/templates/inkwell/content/collections/essays/2026-09-17-notebooks.mdoc +13 -0
  97. package/dist/templates/inkwell/content/collections/essays/2026-10-01-kitchen-radio.mdoc +13 -0
  98. package/dist/templates/inkwell/content/collections/essays/2026-10-15-the-same-mile.mdoc +13 -0
  99. package/dist/templates/inkwell/content/collections/essays/_collection.json +21 -0
  100. package/dist/templates/inkwell/content/pages/about.json +281 -0
  101. package/dist/templates/inkwell/content/pages/books.json +459 -0
  102. package/dist/templates/inkwell/content/pages/contact.json +201 -0
  103. package/dist/templates/inkwell/content/pages/home.json +457 -0
  104. package/dist/templates/inkwell/content/pages/speaking.json +522 -0
  105. package/dist/templates/inkwell/content/site.json +222 -0
  106. package/dist/templates/inkwell/content/styles.json +17 -0
  107. package/dist/templates/inkwell/media/LICENSES.json +119 -0
  108. package/dist/templates/inkwell/openspace.json +21 -0
  109. package/dist/templates/inkwell/template.json +108 -0
  110. package/dist/templates/keystone/content/collections/notes/2026-09-17-hard-conversations.mdoc +11 -0
  111. package/dist/templates/keystone/content/collections/notes/2026-10-01-weekly-rhythm.mdoc +11 -0
  112. package/dist/templates/keystone/content/collections/notes/2026-10-15-the-first-manager.mdoc +11 -0
  113. package/dist/templates/keystone/content/collections/notes/_collection.json +21 -0
  114. package/dist/templates/keystone/content/pages/about.json +371 -0
  115. package/dist/templates/keystone/content/pages/contact.json +207 -0
  116. package/dist/templates/keystone/content/pages/home.json +815 -0
  117. package/dist/templates/keystone/content/pages/results.json +396 -0
  118. package/dist/templates/keystone/content/pages/work-with-me.json +477 -0
  119. package/dist/templates/keystone/content/site.json +224 -0
  120. package/dist/templates/keystone/content/styles.json +17 -0
  121. package/dist/templates/keystone/media/LICENSES.json +75 -0
  122. package/dist/templates/keystone/openspace.json +21 -0
  123. package/dist/templates/keystone/template.json +108 -0
  124. package/dist/templates/ledger/content/pages/home.json +62 -0
  125. package/dist/templates/orbit/content/collections/changelog/2026-09-21-faster-attachments.mdoc +11 -0
  126. package/dist/templates/orbit/content/collections/changelog/2026-10-05-snooze-until-reply.mdoc +11 -0
  127. package/dist/templates/orbit/content/collections/changelog/2026-10-19-help-centre-search.mdoc +13 -0
  128. package/dist/templates/orbit/content/collections/changelog/_collection.json +39 -0
  129. package/dist/templates/orbit/content/pages/about.json +396 -0
  130. package/dist/templates/orbit/content/pages/contact.json +195 -0
  131. package/dist/templates/orbit/content/pages/features.json +603 -0
  132. package/dist/templates/orbit/content/pages/home.json +1273 -0
  133. package/dist/templates/orbit/content/pages/pricing.json +608 -0
  134. package/dist/templates/orbit/content/site.json +368 -0
  135. package/dist/templates/orbit/content/styles.json +17 -0
  136. package/dist/templates/orbit/media/LICENSES.json +141 -0
  137. package/dist/templates/orbit/openspace.json +21 -0
  138. package/dist/templates/orbit/template.json +108 -0
  139. package/package.json +9 -7
  140. package/dist/chunk-3F6TAUAT.js.map +0 -1
  141. package/dist/chunk-R3SYHQ5J.js +0 -17420
  142. package/dist/chunk-R3SYHQ5J.js.map +0 -1
  143. /package/dist/{agents-md-2DTXWUZQ.js.map → agents-md-3W4PIY4N.js.map} +0 -0
@@ -0,0 +1,396 @@
1
+ {
2
+ "$schema": "https://schema.openspace.dev/v1/page.json",
3
+ "id": "pg_e6gc55hpzq",
4
+ "title": "About",
5
+ "slug": "about",
6
+ "seo": {
7
+ "description": "Relay is a small, independent company building calm software for support teams. Meet the team and see where we're hiring."
8
+ },
9
+ "sections": [
10
+ {
11
+ "id": "sec_n76y06k18w",
12
+ "preset": "about/statement@1",
13
+ "label": "Mission statement",
14
+ "layout": {
15
+ "mode": "stack",
16
+ "columns": {
17
+ "d": [
18
+ 12
19
+ ]
20
+ },
21
+ "width": "content",
22
+ "gap": "lg"
23
+ },
24
+ "style": {
25
+ "colorTheme": "dark-accent",
26
+ "padding": {
27
+ "d": "2xl",
28
+ "m": "xl"
29
+ }
30
+ },
31
+ "blocks": [
32
+ {
33
+ "id": "blk_s1e4h6ne7v",
34
+ "type": "heading",
35
+ "v": 1,
36
+ "fields": {
37
+ "text": "We think good support is the best marketing a company can do.",
38
+ "level": "h1",
39
+ "size": "h1",
40
+ "eyebrow": "Our mission"
41
+ },
42
+ "variant": "plain",
43
+ "style": {
44
+ "align": {
45
+ "d": "center"
46
+ }
47
+ }
48
+ },
49
+ {
50
+ "id": "blk_2rcgm59ns3",
51
+ "type": "text",
52
+ "v": 1,
53
+ "fields": {
54
+ "content": {
55
+ "type": "doc",
56
+ "content": [
57
+ {
58
+ "type": "paragraph",
59
+ "content": [
60
+ {
61
+ "type": "text",
62
+ "text": "So we build tools that make it easier, and nothing else."
63
+ }
64
+ ]
65
+ }
66
+ ]
67
+ }
68
+ },
69
+ "variant": "default",
70
+ "style": {
71
+ "align": {
72
+ "d": "center"
73
+ }
74
+ }
75
+ }
76
+ ]
77
+ },
78
+ {
79
+ "id": "sec_72n8tvhg9a",
80
+ "preset": "about/team-photo-wide@1",
81
+ "label": "Team photo with three columns",
82
+ "layout": {
83
+ "mode": "stack",
84
+ "columns": {
85
+ "d": [
86
+ 12
87
+ ]
88
+ },
89
+ "width": "wide",
90
+ "gap": "xl"
91
+ },
92
+ "style": {
93
+ "colorTheme": "light"
94
+ },
95
+ "blocks": [
96
+ {
97
+ "id": "blk_ztacszh2q4",
98
+ "type": "heading",
99
+ "v": 1,
100
+ "fields": {
101
+ "text": "Eleven people, fully remote, still small on purpose",
102
+ "level": "h2",
103
+ "size": "auto",
104
+ "eyebrow": "Who we are"
105
+ },
106
+ "variant": "plain"
107
+ },
108
+ {
109
+ "id": "blk_7myawv67gd",
110
+ "type": "image",
111
+ "v": 1,
112
+ "fields": {
113
+ "image": {
114
+ "src": "https://images.unsplash.com/photo-1582005450386-52b25f82d9bb?w=2880&q=80",
115
+ "alt": "The Relay team working together at a meet-up",
116
+ "width": 2880,
117
+ "height": 1920
118
+ },
119
+ "aspect": "21:9",
120
+ "lightbox": false
121
+ },
122
+ "variant": "default"
123
+ },
124
+ {
125
+ "id": "blk_0s3yze2zeq",
126
+ "type": "columns",
127
+ "v": 1,
128
+ "fields": {
129
+ "items": [
130
+ {
131
+ "heading": "Profitable",
132
+ "body": {
133
+ "type": "doc",
134
+ "content": [
135
+ {
136
+ "type": "paragraph",
137
+ "content": [
138
+ {
139
+ "type": "text",
140
+ "text": "Funded by customers, not investors, since our second year."
141
+ }
142
+ ]
143
+ }
144
+ ]
145
+ }
146
+ },
147
+ {
148
+ "heading": "Support first",
149
+ "body": {
150
+ "type": "doc",
151
+ "content": [
152
+ {
153
+ "type": "paragraph",
154
+ "content": [
155
+ {
156
+ "type": "text",
157
+ "text": "Everyone, including engineers, answers customers each week."
158
+ }
159
+ ]
160
+ }
161
+ ]
162
+ }
163
+ },
164
+ {
165
+ "heading": "Calm hours",
166
+ "body": {
167
+ "type": "doc",
168
+ "content": [
169
+ {
170
+ "type": "paragraph",
171
+ "content": [
172
+ {
173
+ "type": "text",
174
+ "text": "No on-call heroics; we ship carefully and sleep well."
175
+ }
176
+ ]
177
+ }
178
+ ]
179
+ }
180
+ }
181
+ ],
182
+ "columns": "3",
183
+ "aspect": "3:2"
184
+ },
185
+ "variant": "plain"
186
+ }
187
+ ]
188
+ },
189
+ {
190
+ "id": "sec_021g05czmg",
191
+ "preset": "team/four-up@1",
192
+ "label": "Team of four",
193
+ "layout": {
194
+ "mode": "stack",
195
+ "columns": {
196
+ "d": [
197
+ 12
198
+ ]
199
+ },
200
+ "gap": "xl"
201
+ },
202
+ "style": {
203
+ "colorTheme": "light-accent"
204
+ },
205
+ "blocks": [
206
+ {
207
+ "id": "blk_jbm2ccfh8c",
208
+ "type": "heading",
209
+ "v": 1,
210
+ "fields": {
211
+ "text": "The founders and first hires",
212
+ "level": "h2",
213
+ "size": "auto",
214
+ "eyebrow": "Team",
215
+ "subheading": "Former support agents, engineers and one librarian."
216
+ },
217
+ "variant": "plain",
218
+ "style": {
219
+ "align": {
220
+ "d": "center"
221
+ }
222
+ }
223
+ },
224
+ {
225
+ "id": "blk_zwgmjkbvge",
226
+ "type": "team",
227
+ "v": 1,
228
+ "fields": {
229
+ "people": [
230
+ {
231
+ "name": "Lena Brandt",
232
+ "role": "Co-founder, product",
233
+ "photo": {
234
+ "src": "https://images.unsplash.com/photo-1614436201459-156d322d38c6?w=720&q=80",
235
+ "alt": "A smiling woman with a shoulder-length bob by the water",
236
+ "width": 720,
237
+ "height": 1080
238
+ }
239
+ },
240
+ {
241
+ "name": "Jonah Ellis",
242
+ "role": "Co-founder, engineering",
243
+ "photo": {
244
+ "src": "https://images.unsplash.com/photo-1522529599102-193c0d76b5b6?w=1320&q=80",
245
+ "alt": "A smiling man in a grey t-shirt outdoors",
246
+ "width": 1320,
247
+ "height": 880
248
+ }
249
+ },
250
+ {
251
+ "name": "Maya Chen",
252
+ "role": "Head of support",
253
+ "photo": {
254
+ "src": "https://images.unsplash.com/photo-1580489944761-15a19d654956?w=720&q=80",
255
+ "alt": "Portrait of a woman with dark hair pinned up, smiling",
256
+ "width": 720,
257
+ "height": 906
258
+ }
259
+ },
260
+ {
261
+ "name": "Rafael Costa",
262
+ "role": "Design",
263
+ "photo": {
264
+ "src": "https://images.unsplash.com/photo-1639747280804-dd2d6b3d88ac?w=720&q=80",
265
+ "alt": "A smiling man in a green shirt standing outdoors",
266
+ "width": 720,
267
+ "height": 1080
268
+ }
269
+ }
270
+ ],
271
+ "columns": "4"
272
+ },
273
+ "variant": "grid"
274
+ }
275
+ ]
276
+ },
277
+ {
278
+ "id": "sec_d0cpybg1xf",
279
+ "preset": "stats/brand-band@1",
280
+ "label": "Numbers on a brand band",
281
+ "layout": {
282
+ "mode": "stack",
283
+ "columns": {
284
+ "d": [
285
+ 12
286
+ ]
287
+ },
288
+ "gap": "lg"
289
+ },
290
+ "style": {
291
+ "colorTheme": "brand",
292
+ "padding": {
293
+ "d": "lg",
294
+ "m": "lg"
295
+ }
296
+ },
297
+ "blocks": [
298
+ {
299
+ "id": "blk_ec2vhh1chv",
300
+ "type": "stats",
301
+ "v": 1,
302
+ "fields": {
303
+ "items": [
304
+ {
305
+ "value": "3,200",
306
+ "label": "Teams on Relay"
307
+ },
308
+ {
309
+ "value": "4 min",
310
+ "label": "Median first reply"
311
+ },
312
+ {
313
+ "value": "11",
314
+ "label": "People on the team"
315
+ },
316
+ {
317
+ "value": "2019",
318
+ "label": "Founded"
319
+ }
320
+ ]
321
+ },
322
+ "variant": "row"
323
+ }
324
+ ]
325
+ },
326
+ {
327
+ "id": "sec_1f8rwkmefv",
328
+ "preset": "cta/split-photo@1",
329
+ "label": "Action beside photo",
330
+ "layout": {
331
+ "mode": "stack",
332
+ "columns": {
333
+ "d": [
334
+ 6,
335
+ 6
336
+ ],
337
+ "m": [
338
+ 12
339
+ ]
340
+ },
341
+ "align": "center",
342
+ "gap": "2xl"
343
+ },
344
+ "style": {
345
+ "colorTheme": "light-accent"
346
+ },
347
+ "blocks": [
348
+ {
349
+ "id": "blk_22qv9z4h9b",
350
+ "type": "heading",
351
+ "v": 1,
352
+ "fields": {
353
+ "text": "We're hiring a support engineer",
354
+ "level": "h2",
355
+ "size": "auto",
356
+ "subheading": "Remote within three hours of UTC. Four-day weeks, good tea budget."
357
+ },
358
+ "column": 0,
359
+ "variant": "plain"
360
+ },
361
+ {
362
+ "id": "blk_24x5t37t42",
363
+ "type": "button",
364
+ "v": 1,
365
+ "fields": {
366
+ "label": "Ask about the role",
367
+ "link": {
368
+ "type": "page",
369
+ "page": "pg_gk5sprgha6"
370
+ },
371
+ "role": "primary"
372
+ },
373
+ "column": 0,
374
+ "variant": "large"
375
+ },
376
+ {
377
+ "id": "blk_8az25avb49",
378
+ "type": "image",
379
+ "v": 1,
380
+ "fields": {
381
+ "image": {
382
+ "src": "https://images.unsplash.com/photo-1675716921224-e087a0cca69a?w=1280&q=80",
383
+ "alt": "Two colleagues talking at a team meet-up",
384
+ "width": 1280,
385
+ "height": 853
386
+ },
387
+ "aspect": "3:2",
388
+ "lightbox": false
389
+ },
390
+ "column": 1,
391
+ "variant": "default"
392
+ }
393
+ ]
394
+ }
395
+ ]
396
+ }
@@ -0,0 +1,195 @@
1
+ {
2
+ "$schema": "https://schema.openspace.dev/v1/page.json",
3
+ "id": "pg_gk5sprgha6",
4
+ "title": "Contact",
5
+ "slug": "contact",
6
+ "seo": {
7
+ "description": "Talk to the Relay team about demos, migrations, security reviews or anything else. We reply to every message within one working day."
8
+ },
9
+ "sections": [
10
+ {
11
+ "id": "sec_th7tny32pe",
12
+ "preset": "contact/quote-request@1",
13
+ "label": "Quote request",
14
+ "layout": {
15
+ "mode": "stack",
16
+ "columns": {
17
+ "d": [
18
+ 5,
19
+ 7
20
+ ],
21
+ "m": [
22
+ 12
23
+ ]
24
+ },
25
+ "gap": "2xl"
26
+ },
27
+ "style": {
28
+ "colorTheme": "light-accent"
29
+ },
30
+ "blocks": [
31
+ {
32
+ "id": "blk_jb9jqrr2ev",
33
+ "type": "heading",
34
+ "v": 1,
35
+ "fields": {
36
+ "text": "Talk to a human",
37
+ "level": "h1",
38
+ "size": "auto",
39
+ "eyebrow": "Contact"
40
+ },
41
+ "column": 0,
42
+ "variant": "plain"
43
+ },
44
+ {
45
+ "id": "blk_g8a9asdgaq",
46
+ "type": "icon-list",
47
+ "v": 1,
48
+ "fields": {
49
+ "items": [
50
+ {
51
+ "icon": "message-circle",
52
+ "title": "Replies within a working day",
53
+ "text": "Usually much faster."
54
+ },
55
+ {
56
+ "icon": "repeat",
57
+ "title": "Free migration help",
58
+ "text": "From any helpdesk or mailbox."
59
+ },
60
+ {
61
+ "icon": "shield-check",
62
+ "title": "Security reviews welcome",
63
+ "text": "Questionnaires answered in a week."
64
+ }
65
+ ],
66
+ "columns": "1"
67
+ },
68
+ "column": 0,
69
+ "variant": "list"
70
+ },
71
+ {
72
+ "id": "blk_j4pvgpkw9j",
73
+ "type": "form",
74
+ "v": 1,
75
+ "fields": {
76
+ "form": {
77
+ "id": "frm_y744bent5r",
78
+ "name": "Sales and support",
79
+ "fields": [
80
+ {
81
+ "type": "text",
82
+ "name": "name",
83
+ "label": "Your name",
84
+ "required": true,
85
+ "width": "half"
86
+ },
87
+ {
88
+ "type": "email",
89
+ "name": "email",
90
+ "label": "Work email",
91
+ "required": true,
92
+ "width": "half"
93
+ },
94
+ {
95
+ "type": "select",
96
+ "name": "topic",
97
+ "label": "What's it about?",
98
+ "required": true,
99
+ "width": "full",
100
+ "options": [
101
+ "A demo",
102
+ "Moving from another tool",
103
+ "Security and billing",
104
+ "Something else"
105
+ ]
106
+ },
107
+ {
108
+ "type": "textarea",
109
+ "name": "message",
110
+ "label": "How can we help?",
111
+ "required": true,
112
+ "maxLength": 3000
113
+ }
114
+ ],
115
+ "submitLabel": "Send message",
116
+ "success": {
117
+ "type": "message",
118
+ "message": "Thanks — a real person will reply within one working day."
119
+ },
120
+ "notifyOwner": true
121
+ }
122
+ },
123
+ "column": 1,
124
+ "variant": "card"
125
+ }
126
+ ]
127
+ },
128
+ {
129
+ "id": "sec_x45snh2cxc",
130
+ "preset": "contact/cards-row@1",
131
+ "label": "Contact options",
132
+ "layout": {
133
+ "mode": "stack",
134
+ "columns": {
135
+ "d": [
136
+ 4,
137
+ 4,
138
+ 4
139
+ ],
140
+ "m": [
141
+ 12
142
+ ]
143
+ },
144
+ "gap": "lg"
145
+ },
146
+ "style": {
147
+ "colorTheme": "light-accent"
148
+ },
149
+ "blocks": [
150
+ {
151
+ "id": "blk_kbby96evk5",
152
+ "type": "contact-info",
153
+ "v": 1,
154
+ "fields": {
155
+ "heading": "Support",
156
+ "headingLevel": "h2",
157
+ "directions": false,
158
+ "note": "For customers, any time",
159
+ "email": "help@relay.example"
160
+ },
161
+ "column": 0,
162
+ "variant": "card"
163
+ },
164
+ {
165
+ "id": "blk_jb1mex35z0",
166
+ "type": "contact-info",
167
+ "v": 1,
168
+ "fields": {
169
+ "heading": "Sales",
170
+ "headingLevel": "h2",
171
+ "email": "hello@relay.example",
172
+ "directions": false,
173
+ "note": "Demos and pricing"
174
+ },
175
+ "column": 1,
176
+ "variant": "card"
177
+ },
178
+ {
179
+ "id": "blk_wgf6vmjxhn",
180
+ "type": "contact-info",
181
+ "v": 1,
182
+ "fields": {
183
+ "heading": "Company",
184
+ "headingLevel": "h2",
185
+ "address": "Relay Software Ltd\n12 Wharf Road, London N1 7GR",
186
+ "directions": true,
187
+ "note": "Registered office only"
188
+ },
189
+ "column": 2,
190
+ "variant": "card"
191
+ }
192
+ ]
193
+ }
194
+ ]
195
+ }