@omniharmonic/openspace-cli 0.1.3 → 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 (140) hide show
  1. package/dist/{agents-md-7DESZGEN.js → agents-md-3W4PIY4N.js} +2 -2
  2. package/dist/bin.js +2 -2
  3. package/dist/{chunk-TQZ5F7VG.js → chunk-6NIIOHOX.js} +91 -3
  4. package/dist/chunk-6NIIOHOX.js.map +1 -0
  5. package/dist/{chunk-AAMRGTSI.js → chunk-7I6IJI6Z.js} +9166 -874
  6. package/dist/chunk-7I6IJI6Z.js.map +1 -0
  7. package/dist/index.js +2 -2
  8. package/dist/starter/site/AGENTS.md +11 -4
  9. package/dist/templates/beacon/content/collections/events/_collection.json +13 -0
  10. package/dist/templates/beacon/content/collections/events/keeper-training-november.mdoc +14 -0
  11. package/dist/templates/beacon/content/collections/events/planting-day-harbour-ward.mdoc +14 -0
  12. package/dist/templates/beacon/content/collections/events/planting-day-linden-north.mdoc +14 -0
  13. package/dist/templates/beacon/content/collections/news/2026-09-12-heat-map-2026.mdoc +13 -0
  14. package/dist/templates/beacon/content/collections/news/2026-09-30-school-gardens-harvest.mdoc +13 -0
  15. package/dist/templates/beacon/content/collections/news/2026-10-14-planting-season-begins.mdoc +13 -0
  16. package/dist/templates/beacon/content/collections/news/_collection.json +16 -0
  17. package/dist/templates/beacon/content/pages/about.json +572 -0
  18. package/dist/templates/beacon/content/pages/contact.json +260 -0
  19. package/dist/templates/beacon/content/pages/donate.json +406 -0
  20. package/dist/templates/beacon/content/pages/get-involved.json +412 -0
  21. package/dist/templates/beacon/content/pages/home.json +701 -0
  22. package/dist/templates/beacon/content/pages/our-work.json +855 -0
  23. package/dist/templates/beacon/content/site.json +363 -0
  24. package/dist/templates/beacon/content/styles.json +17 -0
  25. package/dist/templates/beacon/media/LICENSES.json +163 -0
  26. package/dist/templates/beacon/openspace.json +21 -0
  27. package/dist/templates/beacon/template.json +113 -0
  28. package/dist/templates/commons/content/pages/{members.json → directory.json} +15 -15
  29. package/dist/templates/commons/content/pages/home.json +1 -1
  30. package/dist/templates/commons/content/site.json +2 -2
  31. package/dist/templates/commons/template.json +2 -2
  32. package/dist/templates/darkroom/content/collections/work/_collection.json +13 -0
  33. package/dist/templates/darkroom/content/collections/work/after-hours.mdoc +28 -0
  34. package/dist/templates/darkroom/content/collections/work/dry-season.mdoc +28 -0
  35. package/dist/templates/darkroom/content/collections/work/faces-of-the-guild.mdoc +28 -0
  36. package/dist/templates/darkroom/content/collections/work/two-weddings.mdoc +28 -0
  37. package/dist/templates/darkroom/content/collections/work/white-lines.mdoc +28 -0
  38. package/dist/templates/darkroom/content/pages/about.json +449 -0
  39. package/dist/templates/darkroom/content/pages/contact.json +185 -0
  40. package/dist/templates/darkroom/content/pages/home.json +636 -0
  41. package/dist/templates/darkroom/content/pages/services.json +636 -0
  42. package/dist/templates/darkroom/content/site.json +264 -0
  43. package/dist/templates/darkroom/content/styles.json +17 -0
  44. package/dist/templates/darkroom/media/LICENSES.json +284 -0
  45. package/dist/templates/darkroom/openspace.json +21 -0
  46. package/dist/templates/darkroom/template.json +103 -0
  47. package/dist/templates/encore/content/pages/home.json +86 -0
  48. package/dist/templates/encore/media/LICENSES.json +22 -0
  49. package/dist/templates/field-notes/content/pages/home.json +94 -0
  50. package/dist/templates/fixwell/content/pages/about.json +508 -0
  51. package/dist/templates/fixwell/content/pages/contact.json +321 -0
  52. package/dist/templates/fixwell/content/pages/home.json +888 -0
  53. package/dist/templates/fixwell/content/pages/pricing.json +467 -0
  54. package/dist/templates/fixwell/content/pages/services.json +648 -0
  55. package/dist/templates/fixwell/content/site.json +293 -0
  56. package/dist/templates/fixwell/content/styles.json +17 -0
  57. package/dist/templates/fixwell/media/LICENSES.json +119 -0
  58. package/dist/templates/fixwell/openspace.json +21 -0
  59. package/dist/templates/fixwell/template.json +108 -0
  60. package/dist/templates/folio/content/collections/projects/_collection.json +13 -0
  61. package/dist/templates/folio/content/collections/projects/field-notes-app.mdoc +28 -0
  62. package/dist/templates/folio/content/collections/projects/harbour-health-dashboards.mdoc +28 -0
  63. package/dist/templates/folio/content/collections/projects/open-budget.mdoc +28 -0
  64. package/dist/templates/folio/content/collections/projects/transit-times.mdoc +28 -0
  65. package/dist/templates/folio/content/collections/writing/2026-08-30-designing-for-night-shifts.mdoc +9 -0
  66. package/dist/templates/folio/content/collections/writing/2026-09-20-testing-with-real-data.mdoc +9 -0
  67. package/dist/templates/folio/content/collections/writing/2026-10-12-one-honest-number.mdoc +9 -0
  68. package/dist/templates/folio/content/collections/writing/_collection.json +16 -0
  69. package/dist/templates/folio/content/pages/about.json +366 -0
  70. package/dist/templates/folio/content/pages/contact.json +218 -0
  71. package/dist/templates/folio/content/pages/experience.json +552 -0
  72. package/dist/templates/folio/content/pages/home.json +410 -0
  73. package/dist/templates/folio/content/site.json +186 -0
  74. package/dist/templates/folio/content/styles.json +17 -0
  75. package/dist/templates/folio/media/LICENSES.json +229 -0
  76. package/dist/templates/folio/openspace.json +21 -0
  77. package/dist/templates/folio/template.json +103 -0
  78. package/dist/templates/gather/content/collections/fringe/_collection.json +13 -0
  79. package/dist/templates/gather/content/collections/fringe/library-open-studio.mdoc +14 -0
  80. package/dist/templates/gather/content/collections/fringe/morning-run.mdoc +14 -0
  81. package/dist/templates/gather/content/collections/fringe/plain-language-pub-quiz.mdoc +14 -0
  82. package/dist/templates/gather/content/pages/about.json +435 -0
  83. package/dist/templates/gather/content/pages/contact.json +196 -0
  84. package/dist/templates/gather/content/pages/home.json +527 -0
  85. package/dist/templates/gather/content/pages/programme.json +449 -0
  86. package/dist/templates/gather/content/pages/speakers.json +225 -0
  87. package/dist/templates/gather/content/pages/tickets.json +495 -0
  88. package/dist/templates/gather/content/pages/venue.json +382 -0
  89. package/dist/templates/gather/content/site.json +222 -0
  90. package/dist/templates/gather/content/styles.json +17 -0
  91. package/dist/templates/gather/media/LICENSES.json +185 -0
  92. package/dist/templates/gather/openspace.json +21 -0
  93. package/dist/templates/gather/template.json +118 -0
  94. package/dist/templates/inkwell/content/collections/essays/2026-09-17-notebooks.mdoc +13 -0
  95. package/dist/templates/inkwell/content/collections/essays/2026-10-01-kitchen-radio.mdoc +13 -0
  96. package/dist/templates/inkwell/content/collections/essays/2026-10-15-the-same-mile.mdoc +13 -0
  97. package/dist/templates/inkwell/content/collections/essays/_collection.json +21 -0
  98. package/dist/templates/inkwell/content/pages/about.json +281 -0
  99. package/dist/templates/inkwell/content/pages/books.json +459 -0
  100. package/dist/templates/inkwell/content/pages/contact.json +201 -0
  101. package/dist/templates/inkwell/content/pages/home.json +457 -0
  102. package/dist/templates/inkwell/content/pages/speaking.json +522 -0
  103. package/dist/templates/inkwell/content/site.json +222 -0
  104. package/dist/templates/inkwell/content/styles.json +17 -0
  105. package/dist/templates/inkwell/media/LICENSES.json +119 -0
  106. package/dist/templates/inkwell/openspace.json +21 -0
  107. package/dist/templates/inkwell/template.json +108 -0
  108. package/dist/templates/keystone/content/collections/notes/2026-09-17-hard-conversations.mdoc +11 -0
  109. package/dist/templates/keystone/content/collections/notes/2026-10-01-weekly-rhythm.mdoc +11 -0
  110. package/dist/templates/keystone/content/collections/notes/2026-10-15-the-first-manager.mdoc +11 -0
  111. package/dist/templates/keystone/content/collections/notes/_collection.json +21 -0
  112. package/dist/templates/keystone/content/pages/about.json +371 -0
  113. package/dist/templates/keystone/content/pages/contact.json +207 -0
  114. package/dist/templates/keystone/content/pages/home.json +815 -0
  115. package/dist/templates/keystone/content/pages/results.json +396 -0
  116. package/dist/templates/keystone/content/pages/work-with-me.json +477 -0
  117. package/dist/templates/keystone/content/site.json +224 -0
  118. package/dist/templates/keystone/content/styles.json +17 -0
  119. package/dist/templates/keystone/media/LICENSES.json +75 -0
  120. package/dist/templates/keystone/openspace.json +21 -0
  121. package/dist/templates/keystone/template.json +108 -0
  122. package/dist/templates/ledger/content/pages/home.json +62 -0
  123. package/dist/templates/orbit/content/collections/changelog/2026-09-21-faster-attachments.mdoc +11 -0
  124. package/dist/templates/orbit/content/collections/changelog/2026-10-05-snooze-until-reply.mdoc +11 -0
  125. package/dist/templates/orbit/content/collections/changelog/2026-10-19-help-centre-search.mdoc +13 -0
  126. package/dist/templates/orbit/content/collections/changelog/_collection.json +39 -0
  127. package/dist/templates/orbit/content/pages/about.json +396 -0
  128. package/dist/templates/orbit/content/pages/contact.json +195 -0
  129. package/dist/templates/orbit/content/pages/features.json +603 -0
  130. package/dist/templates/orbit/content/pages/home.json +1273 -0
  131. package/dist/templates/orbit/content/pages/pricing.json +608 -0
  132. package/dist/templates/orbit/content/site.json +368 -0
  133. package/dist/templates/orbit/content/styles.json +17 -0
  134. package/dist/templates/orbit/media/LICENSES.json +141 -0
  135. package/dist/templates/orbit/openspace.json +21 -0
  136. package/dist/templates/orbit/template.json +108 -0
  137. package/package.json +6 -6
  138. package/dist/chunk-AAMRGTSI.js.map +0 -1
  139. package/dist/chunk-TQZ5F7VG.js.map +0 -1
  140. /package/dist/{agents-md-7DESZGEN.js.map → agents-md-3W4PIY4N.js.map} +0 -0
@@ -0,0 +1,701 @@
1
+ {
2
+ "$schema": "https://schema.openspace.dev/v1/page.json",
3
+ "id": "pg_nq67de47fc",
4
+ "title": "Home",
5
+ "slug": "",
6
+ "seo": {
7
+ "description": "Shade Street Trust plants and cares for street trees on the hottest blocks in Eastport, with the neighbours who live there. Donate or volunteer."
8
+ },
9
+ "sections": [
10
+ {
11
+ "id": "sec_qeche61h2v",
12
+ "preset": "hero/cause@1",
13
+ "label": "Cause with donate button",
14
+ "layout": {
15
+ "mode": "stack",
16
+ "columns": {
17
+ "d": [
18
+ 5,
19
+ 7
20
+ ],
21
+ "m": [
22
+ 12
23
+ ]
24
+ },
25
+ "order": {
26
+ "m": [
27
+ 1,
28
+ 0
29
+ ],
30
+ "t": [
31
+ 1,
32
+ 0
33
+ ]
34
+ },
35
+ "align": "center",
36
+ "gap": "2xl"
37
+ },
38
+ "style": {
39
+ "colorTheme": "light-accent",
40
+ "padding": {
41
+ "d": "xl",
42
+ "m": "lg"
43
+ }
44
+ },
45
+ "blocks": [
46
+ {
47
+ "id": "blk_7j4cryaxr1",
48
+ "type": "image",
49
+ "v": 1,
50
+ "fields": {
51
+ "image": {
52
+ "src": "https://images.unsplash.com/photo-1544928938-6852c1925194?w=1040&q=80",
53
+ "alt": "Two volunteers with shovels at a planting day",
54
+ "width": 1040,
55
+ "height": 1387
56
+ },
57
+ "aspect": "4:5",
58
+ "lightbox": false
59
+ },
60
+ "column": 0,
61
+ "variant": "default"
62
+ },
63
+ {
64
+ "id": "blk_2he81khsxw",
65
+ "type": "heading",
66
+ "v": 1,
67
+ "fields": {
68
+ "text": "Shade for every street in Eastport",
69
+ "level": "h1",
70
+ "size": "h1",
71
+ "eyebrow": "Shade Street Trust",
72
+ "subheading": "We plant trees on the hottest blocks first and teach neighbours to care for them. Sixty dollars plants and waters one for three years."
73
+ },
74
+ "column": 1,
75
+ "variant": "plain"
76
+ },
77
+ {
78
+ "id": "blk_12j3s4v2a6",
79
+ "type": "button",
80
+ "v": 1,
81
+ "fields": {
82
+ "label": "Plant a tree",
83
+ "link": {
84
+ "type": "page",
85
+ "page": "pg_aa79ztc7zb"
86
+ },
87
+ "role": "primary",
88
+ "secondaryLabel": "How we work",
89
+ "secondaryLink": {
90
+ "type": "page",
91
+ "page": "pg_zxh6325yyt"
92
+ }
93
+ },
94
+ "column": 1,
95
+ "variant": "large"
96
+ },
97
+ {
98
+ "id": "blk_571j3ktwag",
99
+ "type": "stats",
100
+ "v": 1,
101
+ "fields": {
102
+ "items": [
103
+ {
104
+ "value": "4,820",
105
+ "label": "Street trees planted since 2015"
106
+ }
107
+ ]
108
+ },
109
+ "column": 1,
110
+ "variant": "row"
111
+ }
112
+ ]
113
+ },
114
+ {
115
+ "id": "sec_5ypm31t1k0",
116
+ "preset": "impact/numbers-over-photo@1",
117
+ "label": "Impact numbers over photo",
118
+ "layout": {
119
+ "mode": "stack",
120
+ "columns": {
121
+ "d": [
122
+ 12
123
+ ]
124
+ },
125
+ "gap": "xl"
126
+ },
127
+ "style": {
128
+ "colorTheme": "dark",
129
+ "padding": {
130
+ "d": "2xl",
131
+ "m": "xl"
132
+ },
133
+ "background": {
134
+ "type": "image",
135
+ "src": "https://images.unsplash.com/photo-1631195414013-85b70ff2c180?w=3236&q=80",
136
+ "focal": [
137
+ 0.5,
138
+ 0.5
139
+ ],
140
+ "overlay": {
141
+ "color": "background",
142
+ "opacity": 0.8
143
+ }
144
+ }
145
+ },
146
+ "blocks": [
147
+ {
148
+ "id": "blk_b1a4j0cvfk",
149
+ "type": "heading",
150
+ "v": 1,
151
+ "fields": {
152
+ "text": "A greener year, together",
153
+ "level": "h2",
154
+ "size": "auto",
155
+ "eyebrow": "2025 in numbers"
156
+ },
157
+ "variant": "plain",
158
+ "style": {
159
+ "align": {
160
+ "d": "center"
161
+ }
162
+ }
163
+ },
164
+ {
165
+ "id": "blk_pe90e6gjnc",
166
+ "type": "stats",
167
+ "v": 1,
168
+ "fields": {
169
+ "items": [
170
+ {
171
+ "value": "940",
172
+ "label": "Trees planted this year"
173
+ },
174
+ {
175
+ "value": "93%",
176
+ "label": "Still thriving after summer"
177
+ },
178
+ {
179
+ "value": "310",
180
+ "label": "Neighbours trained as keepers"
181
+ }
182
+ ]
183
+ },
184
+ "variant": "row",
185
+ "style": {
186
+ "align": {
187
+ "d": "center"
188
+ }
189
+ }
190
+ }
191
+ ]
192
+ },
193
+ {
194
+ "id": "sec_29qak3cp3p",
195
+ "preset": "impact/program-stories@1",
196
+ "label": "Programme stories",
197
+ "layout": {
198
+ "mode": "grid",
199
+ "rows": {
200
+ "d": 22,
201
+ "m": 56
202
+ },
203
+ "items": {
204
+ "blk_8kkxd9kcfh": {
205
+ "d": {
206
+ "x": 1,
207
+ "y": 1,
208
+ "w": 16,
209
+ "h": 7
210
+ },
211
+ "m": {
212
+ "x": 1,
213
+ "y": 1,
214
+ "w": 8,
215
+ "h": 8
216
+ }
217
+ },
218
+ "blk_nyp529twy1": {
219
+ "d": {
220
+ "x": 1,
221
+ "y": 9,
222
+ "w": 8,
223
+ "h": 14
224
+ },
225
+ "m": {
226
+ "x": 1,
227
+ "y": 10,
228
+ "w": 8,
229
+ "h": 15
230
+ }
231
+ },
232
+ "blk_ada2jfr29e": {
233
+ "d": {
234
+ "x": 9,
235
+ "y": 9,
236
+ "w": 8,
237
+ "h": 14
238
+ },
239
+ "m": {
240
+ "x": 1,
241
+ "y": 26,
242
+ "w": 8,
243
+ "h": 15
244
+ }
245
+ },
246
+ "blk_adzzm1r1n3": {
247
+ "d": {
248
+ "x": 17,
249
+ "y": 9,
250
+ "w": 8,
251
+ "h": 14
252
+ },
253
+ "m": {
254
+ "x": 1,
255
+ "y": 42,
256
+ "w": 8,
257
+ "h": 15
258
+ }
259
+ }
260
+ }
261
+ },
262
+ "style": {
263
+ "colorTheme": "light"
264
+ },
265
+ "blocks": [
266
+ {
267
+ "id": "blk_8kkxd9kcfh",
268
+ "type": "heading",
269
+ "v": 1,
270
+ "fields": {
271
+ "text": "Three ways we cool a city",
272
+ "level": "h2",
273
+ "size": "auto",
274
+ "eyebrow": "Our work",
275
+ "subheading": "Each programme is run with residents, schools and the city's parks team."
276
+ },
277
+ "variant": "plain"
278
+ },
279
+ {
280
+ "id": "blk_nyp529twy1",
281
+ "type": "card",
282
+ "v": 1,
283
+ "fields": {
284
+ "image": {
285
+ "src": "https://images.unsplash.com/photo-1777150895644-2ca253ee1c93?w=800&q=80",
286
+ "alt": "Hands holding a young tree seedling",
287
+ "width": 800,
288
+ "height": 640
289
+ },
290
+ "aspect": "3:2",
291
+ "eyebrow": "940 this year",
292
+ "heading": "Trees on hot blocks",
293
+ "body": {
294
+ "type": "doc",
295
+ "content": [
296
+ {
297
+ "type": "paragraph",
298
+ "content": [
299
+ {
300
+ "type": "text",
301
+ "text": "We map surface temperatures and plant where shade is missing most."
302
+ }
303
+ ]
304
+ }
305
+ ]
306
+ },
307
+ "link": {
308
+ "type": "page",
309
+ "page": "pg_zxh6325yyt"
310
+ },
311
+ "linkLabel": "See the map"
312
+ },
313
+ "variant": "stacked"
314
+ },
315
+ {
316
+ "id": "blk_ada2jfr29e",
317
+ "type": "card",
318
+ "v": 1,
319
+ "fields": {
320
+ "image": {
321
+ "src": "https://images.unsplash.com/photo-1631195414013-85b70ff2c180?w=800&q=80",
322
+ "alt": "Raised flower beds in a community garden",
323
+ "width": 800,
324
+ "height": 534
325
+ },
326
+ "aspect": "3:2",
327
+ "eyebrow": "Twelve schools",
328
+ "heading": "Gardens at school",
329
+ "body": {
330
+ "type": "doc",
331
+ "content": [
332
+ {
333
+ "type": "paragraph",
334
+ "content": [
335
+ {
336
+ "type": "text",
337
+ "text": "Raised beds and weekly lessons that end with a harvest lunch."
338
+ }
339
+ ]
340
+ }
341
+ ]
342
+ },
343
+ "link": {
344
+ "type": "page",
345
+ "page": "pg_zxh6325yyt",
346
+ "anchor": "schools"
347
+ },
348
+ "linkLabel": "Visit a garden"
349
+ },
350
+ "variant": "stacked"
351
+ },
352
+ {
353
+ "id": "blk_adzzm1r1n3",
354
+ "type": "card",
355
+ "v": 1,
356
+ "fields": {
357
+ "image": {
358
+ "src": "https://images.unsplash.com/photo-1524247108137-732e0f642303?w=800&q=80",
359
+ "alt": "A volunteer planting flowers in a bed",
360
+ "width": 800,
361
+ "height": 533
362
+ },
363
+ "aspect": "3:2",
364
+ "eyebrow": "310 keepers",
365
+ "heading": "Keepers on every block",
366
+ "body": {
367
+ "type": "doc",
368
+ "content": [
369
+ {
370
+ "type": "paragraph",
371
+ "content": [
372
+ {
373
+ "type": "text",
374
+ "text": "We train neighbours to water, mulch and prune the trees outside their door."
375
+ }
376
+ ]
377
+ }
378
+ ]
379
+ },
380
+ "link": {
381
+ "type": "page",
382
+ "page": "pg_rpwvmy6qxn"
383
+ },
384
+ "linkLabel": "Become a keeper"
385
+ },
386
+ "variant": "stacked"
387
+ }
388
+ ]
389
+ },
390
+ {
391
+ "id": "sec_7g91c60076",
392
+ "preset": "testimonials/split-portrait@1",
393
+ "label": "Portrait and quote",
394
+ "layout": {
395
+ "mode": "stack",
396
+ "columns": {
397
+ "d": [
398
+ 5,
399
+ 7
400
+ ],
401
+ "m": [
402
+ 12
403
+ ]
404
+ },
405
+ "align": "center",
406
+ "gap": "2xl"
407
+ },
408
+ "style": {
409
+ "colorTheme": "light"
410
+ },
411
+ "blocks": [
412
+ {
413
+ "id": "blk_jcfcxebdmf",
414
+ "type": "image",
415
+ "v": 1,
416
+ "fields": {
417
+ "image": {
418
+ "src": "https://images.unsplash.com/photo-1573497019940-1c28c88b4f3e?w=960&q=80",
419
+ "alt": "Rosa Delgado, a tree keeper on Linden Avenue",
420
+ "width": 960,
421
+ "height": 1440
422
+ },
423
+ "aspect": "4:5",
424
+ "lightbox": false
425
+ },
426
+ "column": 0,
427
+ "variant": "default"
428
+ },
429
+ {
430
+ "id": "blk_sv86zj6sjj",
431
+ "type": "testimonial",
432
+ "v": 1,
433
+ "fields": {
434
+ "quote": {
435
+ "type": "doc",
436
+ "content": [
437
+ {
438
+ "type": "paragraph",
439
+ "content": [
440
+ {
441
+ "type": "text",
442
+ "text": "Our block used to be the hottest on the map. Five summers later the kids play outside in July, and I know every tree by name."
443
+ }
444
+ ]
445
+ }
446
+ ]
447
+ },
448
+ "name": "Rosa Delgado",
449
+ "role": "Tree keeper, Linden Avenue"
450
+ },
451
+ "column": 1,
452
+ "variant": "large"
453
+ },
454
+ {
455
+ "id": "blk_wx1vhj4431",
456
+ "type": "button",
457
+ "v": 1,
458
+ "fields": {
459
+ "label": "Read our story",
460
+ "link": {
461
+ "type": "page",
462
+ "page": "pg_96z8gajatg"
463
+ },
464
+ "role": "tertiary"
465
+ },
466
+ "column": 1,
467
+ "variant": "default",
468
+ "style": {
469
+ "align": {
470
+ "d": "center"
471
+ }
472
+ }
473
+ }
474
+ ]
475
+ },
476
+ {
477
+ "id": "sec_9k21zgvtb2",
478
+ "preset": "impact/campaign-goal@1",
479
+ "label": "Campaign goal",
480
+ "layout": {
481
+ "mode": "stack",
482
+ "columns": {
483
+ "d": [
484
+ 12
485
+ ]
486
+ },
487
+ "width": "content",
488
+ "gap": "lg"
489
+ },
490
+ "style": {
491
+ "colorTheme": "brand",
492
+ "padding": {
493
+ "d": "xl",
494
+ "m": "lg"
495
+ }
496
+ },
497
+ "blocks": [
498
+ {
499
+ "id": "blk_ps00f7q9r8",
500
+ "type": "heading",
501
+ "v": 1,
502
+ "fields": {
503
+ "text": "Two hundred trees for Harbour Ward",
504
+ "level": "h2",
505
+ "size": "auto",
506
+ "eyebrow": "Spring appeal",
507
+ "subheading": "Help us plant the ward with the least shade in the city before the summer heat arrives."
508
+ },
509
+ "variant": "plain",
510
+ "style": {
511
+ "align": {
512
+ "d": "center"
513
+ }
514
+ }
515
+ },
516
+ {
517
+ "id": "blk_c1h06vzrge",
518
+ "type": "stats",
519
+ "v": 1,
520
+ "fields": {
521
+ "items": [
522
+ {
523
+ "value": "$8,450",
524
+ "label": "Raised so far"
525
+ },
526
+ {
527
+ "value": "$12,000",
528
+ "label": "Our goal"
529
+ },
530
+ {
531
+ "value": "214",
532
+ "label": "Neighbours have given"
533
+ }
534
+ ]
535
+ },
536
+ "variant": "row",
537
+ "style": {
538
+ "align": {
539
+ "d": "center"
540
+ }
541
+ }
542
+ },
543
+ {
544
+ "id": "blk_f8p9s5drdc",
545
+ "type": "countdown",
546
+ "v": 1,
547
+ "fields": {
548
+ "headingLevel": "h3",
549
+ "target": "2027-04-30T23:59:00-05:00",
550
+ "showSeconds": false,
551
+ "doneMessage": "The spring appeal has closed. Thank you!"
552
+ },
553
+ "variant": "inline",
554
+ "style": {
555
+ "align": {
556
+ "d": "center"
557
+ }
558
+ }
559
+ },
560
+ {
561
+ "id": "blk_98q6mraw69",
562
+ "type": "button",
563
+ "v": 1,
564
+ "fields": {
565
+ "label": "Give to the appeal",
566
+ "link": {
567
+ "type": "page",
568
+ "page": "pg_aa79ztc7zb"
569
+ },
570
+ "role": "primary"
571
+ },
572
+ "variant": "large",
573
+ "style": {
574
+ "align": {
575
+ "d": "center"
576
+ }
577
+ }
578
+ }
579
+ ]
580
+ },
581
+ {
582
+ "id": "sec_h4gjb50ktn",
583
+ "preset": "blog/latest-grid@1",
584
+ "label": "Latest posts",
585
+ "layout": {
586
+ "mode": "stack",
587
+ "columns": {
588
+ "d": [
589
+ 12
590
+ ]
591
+ }
592
+ },
593
+ "style": {
594
+ "colorTheme": "light"
595
+ },
596
+ "blocks": [
597
+ {
598
+ "id": "blk_fp18k2tpfr",
599
+ "type": "summary",
600
+ "v": 1,
601
+ "fields": {
602
+ "heading": "News from the street",
603
+ "headingLevel": "h2",
604
+ "source": {
605
+ "collection": "news",
606
+ "sort": "date-desc",
607
+ "limit": 3
608
+ },
609
+ "columns": "3",
610
+ "showImage": true,
611
+ "showDate": true,
612
+ "showExcerpt": true,
613
+ "showMeta": false,
614
+ "linkLabel": "All news",
615
+ "link": {
616
+ "type": "url",
617
+ "url": "/news/"
618
+ },
619
+ "emptyMessage": "News from planting season is on its way."
620
+ },
621
+ "variant": "grid"
622
+ }
623
+ ]
624
+ },
625
+ {
626
+ "id": "sec_6177n0rbh0",
627
+ "preset": "newsletter/with-benefits@1",
628
+ "label": "Signup with benefits",
629
+ "layout": {
630
+ "mode": "stack",
631
+ "columns": {
632
+ "d": [
633
+ 6,
634
+ 6
635
+ ],
636
+ "m": [
637
+ 12
638
+ ]
639
+ },
640
+ "align": "center",
641
+ "gap": "2xl"
642
+ },
643
+ "style": {
644
+ "colorTheme": "light-accent"
645
+ },
646
+ "blocks": [
647
+ {
648
+ "id": "blk_nmj87y7g90",
649
+ "type": "heading",
650
+ "v": 1,
651
+ "fields": {
652
+ "text": "Get the seasonal letter",
653
+ "level": "h2",
654
+ "size": "auto",
655
+ "eyebrow": "Newsletter"
656
+ },
657
+ "column": 0,
658
+ "variant": "plain"
659
+ },
660
+ {
661
+ "id": "blk_50v1mj34re",
662
+ "type": "icon-list",
663
+ "v": 1,
664
+ "fields": {
665
+ "items": [
666
+ {
667
+ "icon": "calendar",
668
+ "title": "Planting days before anyone else"
669
+ },
670
+ {
671
+ "icon": "sprout",
672
+ "title": "Care tips for your street tree"
673
+ },
674
+ {
675
+ "icon": "heart",
676
+ "title": "Stories from the blocks"
677
+ }
678
+ ],
679
+ "columns": "1"
680
+ },
681
+ "column": 0,
682
+ "variant": "checklist"
683
+ },
684
+ {
685
+ "id": "blk_pj7bv9ns86",
686
+ "type": "newsletter",
687
+ "v": 1,
688
+ "fields": {
689
+ "heading": "Four letters a year",
690
+ "askName": true,
691
+ "placeholder": "you@example.com",
692
+ "buttonLabel": "Sign me up",
693
+ "successMessage": "Thank you — the next letter goes out with the season."
694
+ },
695
+ "column": 1,
696
+ "variant": "card"
697
+ }
698
+ ]
699
+ }
700
+ ]
701
+ }