@omniharmonic/openspace-cli 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +74 -2
  3. package/dist/agents-md-2DTXWUZQ.js +8 -0
  4. package/dist/agents-md-2DTXWUZQ.js.map +1 -0
  5. package/dist/agents-md-TX6V4M64.js +8 -0
  6. package/dist/agents-md-TX6V4M64.js.map +1 -0
  7. package/dist/bin.d.ts +1 -0
  8. package/dist/bin.js +11 -0
  9. package/dist/bin.js.map +1 -0
  10. package/dist/chunk-2KUIUUKV.js +41167 -0
  11. package/dist/chunk-2KUIUUKV.js.map +1 -0
  12. package/dist/chunk-3F6TAUAT.js +41167 -0
  13. package/dist/chunk-3F6TAUAT.js.map +1 -0
  14. package/dist/chunk-LPHUKIJU.js +17120 -0
  15. package/dist/chunk-LPHUKIJU.js.map +1 -0
  16. package/dist/chunk-LTJEM3DN.js +17161 -0
  17. package/dist/chunk-LTJEM3DN.js.map +1 -0
  18. package/dist/index.d.ts +83 -0
  19. package/dist/index.js +23 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/starter/site/.github/workflows/publish.yml +38 -0
  22. package/dist/starter/site/AGENTS.md +392 -0
  23. package/dist/starter/site/astro.config.mjs +8 -0
  24. package/dist/starter/site/package.json +21 -0
  25. package/dist/starter/site/public/.gitkeep +0 -0
  26. package/dist/starter/site/src/pages/[...slug].astro +10 -0
  27. package/dist/starter/site/tsconfig.json +5 -0
  28. package/dist/starter/variants/cloudflare/.github/openspace/gated-sync.mjs +121 -0
  29. package/dist/starter/variants/cloudflare/.github/workflows/publish.yml +70 -0
  30. package/dist/starter/variants/cloudflare/astro.config.mjs +11 -0
  31. package/dist/starter/variants/cloudflare/package.json +23 -0
  32. package/dist/starter/variants/cloudflare/wrangler.jsonc +13 -0
  33. package/dist/templates/atelier/content/collections/projects/_collection.json +13 -0
  34. package/dist/templates/atelier/content/collections/projects/cordillera.mdoc +32 -0
  35. package/dist/templates/atelier/content/collections/projects/field-studies.mdoc +32 -0
  36. package/dist/templates/atelier/content/collections/projects/salt-and-glass.mdoc +32 -0
  37. package/dist/templates/atelier/content/collections/projects/white-city.mdoc +32 -0
  38. package/dist/templates/atelier/content/pages/about.json +180 -0
  39. package/dist/templates/atelier/content/pages/commissions.json +307 -0
  40. package/dist/templates/atelier/content/pages/contact.json +117 -0
  41. package/dist/templates/atelier/content/pages/home.json +524 -0
  42. package/dist/templates/atelier/content/pages/work.json +332 -0
  43. package/dist/templates/atelier/content/site.json +190 -0
  44. package/dist/templates/atelier/content/styles.json +25 -0
  45. package/dist/templates/atelier/media/LICENSES.json +218 -0
  46. package/dist/templates/atelier/openspace.json +21 -0
  47. package/dist/templates/atelier/template.json +115 -0
  48. package/dist/templates/commons/content/collections/gatherings/_collection.json +13 -0
  49. package/dist/templates/commons/content/collections/gatherings/grant-writing-workshop.mdoc +17 -0
  50. package/dist/templates/commons/content/collections/gatherings/seed-swap.mdoc +16 -0
  51. package/dist/templates/commons/content/collections/gatherings/winter-general-assembly.mdoc +17 -0
  52. package/dist/templates/commons/content/pages/about.json +227 -0
  53. package/dist/templates/commons/content/pages/home.json +540 -0
  54. package/dist/templates/commons/content/pages/join.json +304 -0
  55. package/dist/templates/commons/content/pages/members.json +499 -0
  56. package/dist/templates/commons/content/site.json +306 -0
  57. package/dist/templates/commons/content/styles.json +27 -0
  58. package/dist/templates/commons/media/LICENSES.json +108 -0
  59. package/dist/templates/commons/openspace.json +21 -0
  60. package/dist/templates/commons/template.json +113 -0
  61. package/dist/templates/encore/content/collections/sessions/_collection.json +19 -0
  62. package/dist/templates/encore/content/collections/sessions/session-10-headphones-on.mdoc +16 -0
  63. package/dist/templates/encore/content/collections/sessions/session-11-neon-tide.mdoc +16 -0
  64. package/dist/templates/encore/content/collections/sessions/session-12-slow-static.mdoc +16 -0
  65. package/dist/templates/encore/content/collections/tour/_collection.json +13 -0
  66. package/dist/templates/encore/content/collections/tour/brooklyn-elsewhere.mdoc +18 -0
  67. package/dist/templates/encore/content/collections/tour/chicago-thalia-hall.mdoc +18 -0
  68. package/dist/templates/encore/content/collections/tour/london-electric-ballroom.mdoc +18 -0
  69. package/dist/templates/encore/content/collections/tour/minneapolis-first-avenue.mdoc +18 -0
  70. package/dist/templates/encore/content/collections/tour/toronto-danforth.mdoc +18 -0
  71. package/dist/templates/encore/content/pages/about.json +251 -0
  72. package/dist/templates/encore/content/pages/contact.json +122 -0
  73. package/dist/templates/encore/content/pages/home.json +363 -0
  74. package/dist/templates/encore/content/pages/music.json +297 -0
  75. package/dist/templates/encore/content/site.json +293 -0
  76. package/dist/templates/encore/content/styles.json +17 -0
  77. package/dist/templates/encore/media/LICENSES.json +97 -0
  78. package/dist/templates/encore/openspace.json +21 -0
  79. package/dist/templates/encore/template.json +103 -0
  80. package/dist/templates/field-notes/content/collections/essays/_collection.json +31 -0
  81. package/dist/templates/field-notes/content/collections/essays/a-year-of-apples.mdoc +25 -0
  82. package/dist/templates/field-notes/content/collections/essays/learning-a-field.mdoc +32 -0
  83. package/dist/templates/field-notes/content/collections/essays/small-weather.mdoc +25 -0
  84. package/dist/templates/field-notes/content/collections/essays/the-wall-builders.mdoc +29 -0
  85. package/dist/templates/field-notes/content/pages/about.json +236 -0
  86. package/dist/templates/field-notes/content/pages/contact.json +116 -0
  87. package/dist/templates/field-notes/content/pages/home.json +428 -0
  88. package/dist/templates/field-notes/content/pages/subscribe.json +273 -0
  89. package/dist/templates/field-notes/content/site.json +218 -0
  90. package/dist/templates/field-notes/content/styles.json +27 -0
  91. package/dist/templates/field-notes/media/LICENSES.json +119 -0
  92. package/dist/templates/field-notes/openspace.json +21 -0
  93. package/dist/templates/field-notes/template.json +112 -0
  94. package/dist/templates/harbor/content/collections/events/_collection.json +13 -0
  95. package/dist/templates/harbor/content/collections/events/coat-drive-sorting-day.mdoc +17 -0
  96. package/dist/templates/harbor/content/collections/events/safe-at-home-build-day.mdoc +17 -0
  97. package/dist/templates/harbor/content/collections/events/spring-community-supper.mdoc +17 -0
  98. package/dist/templates/harbor/content/collections/events/winter-coat-giveaway.mdoc +16 -0
  99. package/dist/templates/harbor/content/collections/news/2026-08-28-back-to-school-at-homework-harbor.mdoc +17 -0
  100. package/dist/templates/harbor/content/collections/news/2026-09-15-meet-the-repair-crew.mdoc +21 -0
  101. package/dist/templates/harbor/content/collections/news/2026-10-08-the-2025-annual-report.mdoc +25 -0
  102. package/dist/templates/harbor/content/collections/news/_collection.json +34 -0
  103. package/dist/templates/harbor/content/pages/about.json +366 -0
  104. package/dist/templates/harbor/content/pages/contact.json +233 -0
  105. package/dist/templates/harbor/content/pages/get-involved.json +425 -0
  106. package/dist/templates/harbor/content/pages/home.json +524 -0
  107. package/dist/templates/harbor/content/pages/programs.json +611 -0
  108. package/dist/templates/harbor/content/site.json +377 -0
  109. package/dist/templates/harbor/content/styles.json +25 -0
  110. package/dist/templates/harbor/media/LICENSES.json +141 -0
  111. package/dist/templates/harbor/openspace.json +21 -0
  112. package/dist/templates/harbor/template.json +115 -0
  113. package/dist/templates/hearth/content/pages/about.json +246 -0
  114. package/dist/templates/hearth/content/pages/home.json +937 -0
  115. package/dist/templates/hearth/content/pages/menu.json +396 -0
  116. package/dist/templates/hearth/content/pages/private-dining.json +288 -0
  117. package/dist/templates/hearth/content/pages/visit.json +257 -0
  118. package/dist/templates/hearth/content/site.json +214 -0
  119. package/dist/templates/hearth/content/styles.json +25 -0
  120. package/dist/templates/hearth/media/LICENSES.json +196 -0
  121. package/dist/templates/hearth/openspace.json +21 -0
  122. package/dist/templates/hearth/template.json +116 -0
  123. package/dist/templates/kiln/content/collections/classes/_collection.json +13 -0
  124. package/dist/templates/kiln/content/collections/classes/glaze-day-march.mdoc +17 -0
  125. package/dist/templates/kiln/content/collections/classes/hand-building-february.mdoc +17 -0
  126. package/dist/templates/kiln/content/collections/classes/spring-studio-sale.mdoc +15 -0
  127. package/dist/templates/kiln/content/collections/classes/wheel-weekend-january.mdoc +17 -0
  128. package/dist/templates/kiln/content/collections/shop/_collection.json +14 -0
  129. package/dist/templates/kiln/content/collections/shop/ash-bud-vases.mdoc +18 -0
  130. package/dist/templates/kiln/content/collections/shop/harbor-planter.mdoc +18 -0
  131. package/dist/templates/kiln/content/collections/shop/morning-cup-pair.mdoc +24 -0
  132. package/dist/templates/kiln/content/collections/shop/sea-glass-planter.mdoc +18 -0
  133. package/dist/templates/kiln/content/collections/shop/tide-vase.mdoc +23 -0
  134. package/dist/templates/kiln/content/collections/shop/walnut-step-stool.mdoc +18 -0
  135. package/dist/templates/kiln/content/pages/about.json +344 -0
  136. package/dist/templates/kiln/content/pages/contact.json +232 -0
  137. package/dist/templates/kiln/content/pages/home.json +754 -0
  138. package/dist/templates/kiln/content/pages/workshops.json +352 -0
  139. package/dist/templates/kiln/content/site.json +263 -0
  140. package/dist/templates/kiln/content/styles.json +17 -0
  141. package/dist/templates/kiln/media/LICENSES.json +119 -0
  142. package/dist/templates/kiln/openspace.json +21 -0
  143. package/dist/templates/kiln/template.json +103 -0
  144. package/dist/templates/ledger/content/collections/case-studies/_collection.json +14 -0
  145. package/dist/templates/ledger/content/collections/case-studies/fieldwork-coffee.mdoc +29 -0
  146. package/dist/templates/ledger/content/collections/case-studies/larkspur-foods.mdoc +29 -0
  147. package/dist/templates/ledger/content/collections/case-studies/ostrander-clinics.mdoc +29 -0
  148. package/dist/templates/ledger/content/collections/insights/2026-08-10-one-page-of-numbers.mdoc +12 -0
  149. package/dist/templates/ledger/content/collections/insights/2026-09-07-hiring-your-first-coo.mdoc +17 -0
  150. package/dist/templates/ledger/content/collections/insights/2026-10-05-the-decision-log.mdoc +15 -0
  151. package/dist/templates/ledger/content/collections/insights/_collection.json +21 -0
  152. package/dist/templates/ledger/content/pages/about.json +298 -0
  153. package/dist/templates/ledger/content/pages/contact.json +158 -0
  154. package/dist/templates/ledger/content/pages/home.json +621 -0
  155. package/dist/templates/ledger/content/pages/services.json +639 -0
  156. package/dist/templates/ledger/content/site.json +336 -0
  157. package/dist/templates/ledger/content/styles.json +17 -0
  158. package/dist/templates/ledger/media/LICENSES.json +86 -0
  159. package/dist/templates/ledger/openspace.json +21 -0
  160. package/dist/templates/ledger/template.json +102 -0
  161. package/dist/templates/link/content/pages/home.json +278 -0
  162. package/dist/templates/link/content/site.json +168 -0
  163. package/dist/templates/link/content/styles.json +17 -0
  164. package/dist/templates/link/media/LICENSES.json +97 -0
  165. package/dist/templates/link/openspace.json +21 -0
  166. package/dist/templates/link/template.json +87 -0
  167. package/dist/templates/meadow/content/collections/journal/2026-09-02-meet-daniel.mdoc +20 -0
  168. package/dist/templates/meadow/content/collections/journal/2026-09-28-a-practice-for-dark-mornings.mdoc +24 -0
  169. package/dist/templates/meadow/content/collections/journal/2026-10-12-why-twelve-mats.mdoc +26 -0
  170. package/dist/templates/meadow/content/collections/journal/_collection.json +34 -0
  171. package/dist/templates/meadow/content/collections/workshops/_collection.json +13 -0
  172. package/dist/templates/meadow/content/collections/workshops/breath-and-rest-workshop.mdoc +17 -0
  173. package/dist/templates/meadow/content/collections/workshops/foundations-four-weeks.mdoc +17 -0
  174. package/dist/templates/meadow/content/collections/workshops/manzanita-spring-retreat.mdoc +17 -0
  175. package/dist/templates/meadow/content/collections/workshops/winter-solstice-restorative.mdoc +17 -0
  176. package/dist/templates/meadow/content/pages/about.json +344 -0
  177. package/dist/templates/meadow/content/pages/bodywork.json +330 -0
  178. package/dist/templates/meadow/content/pages/classes.json +820 -0
  179. package/dist/templates/meadow/content/pages/contact.json +240 -0
  180. package/dist/templates/meadow/content/pages/home.json +556 -0
  181. package/dist/templates/meadow/content/site.json +290 -0
  182. package/dist/templates/meadow/content/styles.json +25 -0
  183. package/dist/templates/meadow/media/LICENSES.json +130 -0
  184. package/dist/templates/meadow/openspace.json +21 -0
  185. package/dist/templates/meadow/template.json +116 -0
  186. package/dist/templates/signal/content/collections/changelog/2026-09-08-faster-sms.mdoc +11 -0
  187. package/dist/templates/signal/content/collections/changelog/2026-09-22-postmortem-drafts.mdoc +11 -0
  188. package/dist/templates/signal/content/collections/changelog/2026-10-06-quiet-hours.mdoc +13 -0
  189. package/dist/templates/signal/content/collections/changelog/2026-10-20-status-pages-that-update-themselves.mdoc +17 -0
  190. package/dist/templates/signal/content/collections/changelog/_collection.json +39 -0
  191. package/dist/templates/signal/content/pages/about.json +258 -0
  192. package/dist/templates/signal/content/pages/contact.json +122 -0
  193. package/dist/templates/signal/content/pages/home.json +1062 -0
  194. package/dist/templates/signal/content/pages/pricing.json +460 -0
  195. package/dist/templates/signal/content/site.json +345 -0
  196. package/dist/templates/signal/content/styles.json +17 -0
  197. package/dist/templates/signal/media/LICENSES.json +119 -0
  198. package/dist/templates/signal/openspace.json +21 -0
  199. package/dist/templates/signal/template.json +103 -0
  200. package/dist/templates/vow/content/pages/about.json +314 -0
  201. package/dist/templates/vow/content/pages/home.json +400 -0
  202. package/dist/templates/vow/content/pages/registry.json +207 -0
  203. package/dist/templates/vow/content/pages/rsvp.json +145 -0
  204. package/dist/templates/vow/content/pages/schedule.json +281 -0
  205. package/dist/templates/vow/content/pages/travel.json +326 -0
  206. package/dist/templates/vow/content/site.json +200 -0
  207. package/dist/templates/vow/content/styles.json +17 -0
  208. package/dist/templates/vow/media/LICENSES.json +130 -0
  209. package/dist/templates/vow/openspace.json +21 -0
  210. package/dist/templates/vow/template.json +113 -0
  211. package/package.json +71 -3
@@ -0,0 +1,524 @@
1
+ {
2
+ "$schema": "https://schema.openspace.dev/v1/page.json",
3
+ "id": "pg_1gqv7jnbb7",
4
+ "title": "Home",
5
+ "slug": "",
6
+ "seo": {
7
+ "description": "Riverbend Neighbors runs a free grocery pantry, after-school tutoring and home repairs for older neighbors in Lawrenceville, Pittsburgh."
8
+ },
9
+ "sections": [
10
+ {
11
+ "id": "sec_8f51nysdg6",
12
+ "preset": "hero/full-bleed-photo@1",
13
+ "label": "Full-bleed photograph",
14
+ "layout": {
15
+ "mode": "stack",
16
+ "columns": {
17
+ "d": [
18
+ 12
19
+ ]
20
+ },
21
+ "width": "narrow"
22
+ },
23
+ "style": {
24
+ "colorTheme": "dark",
25
+ "padding": {
26
+ "d": "3xl",
27
+ "m": "2xl"
28
+ },
29
+ "minHeight": {
30
+ "d": "88vh",
31
+ "m": "80svh"
32
+ },
33
+ "background": {
34
+ "type": "image",
35
+ "src": "https://images.unsplash.com/photo-1511632765486-a01980e01a18?w=2880&q=80",
36
+ "focal": [
37
+ 0.5,
38
+ 0.45
39
+ ],
40
+ "overlay": {
41
+ "color": "background",
42
+ "opacity": 0.78
43
+ }
44
+ }
45
+ },
46
+ "blocks": [
47
+ {
48
+ "id": "blk_wnf166f134",
49
+ "type": "heading",
50
+ "v": 1,
51
+ "fields": {
52
+ "text": "Neighbors keeping neighbors fed and home",
53
+ "level": "h1",
54
+ "size": "display",
55
+ "eyebrow": "Lawrenceville, Pittsburgh · Since 2004",
56
+ "subheading": "Free groceries, homework help and safe repairs for older homeowners, run by 300 volunteers who live on the same streets."
57
+ },
58
+ "variant": "plain",
59
+ "style": {
60
+ "align": {
61
+ "d": "center"
62
+ }
63
+ }
64
+ },
65
+ {
66
+ "id": "blk_38mbe3fn7x",
67
+ "type": "button",
68
+ "v": 1,
69
+ "fields": {
70
+ "label": "Donate today",
71
+ "link": {
72
+ "type": "page",
73
+ "page": "pg_ffqyf65d7j",
74
+ "anchor": "donate"
75
+ },
76
+ "role": "primary",
77
+ "secondaryLabel": "See our programs",
78
+ "secondaryLink": {
79
+ "type": "page",
80
+ "page": "pg_5752p2f5ye"
81
+ }
82
+ },
83
+ "variant": "default",
84
+ "style": {
85
+ "align": {
86
+ "d": "center"
87
+ }
88
+ }
89
+ }
90
+ ]
91
+ },
92
+ {
93
+ "id": "sec_jd2vhrmdm6",
94
+ "preset": "stats/row@1",
95
+ "label": "Numbers in a row",
96
+ "layout": {
97
+ "mode": "stack",
98
+ "columns": {
99
+ "d": [
100
+ 12
101
+ ]
102
+ },
103
+ "gap": "xl"
104
+ },
105
+ "style": {
106
+ "colorTheme": "dark-accent"
107
+ },
108
+ "blocks": [
109
+ {
110
+ "id": "blk_tbdbd4xzh3",
111
+ "type": "heading",
112
+ "v": 1,
113
+ "fields": {
114
+ "text": "One year on Penn Avenue",
115
+ "level": "h2",
116
+ "size": "auto",
117
+ "eyebrow": "Our 2025 report"
118
+ },
119
+ "variant": "plain",
120
+ "style": {
121
+ "align": {
122
+ "d": "center"
123
+ }
124
+ }
125
+ },
126
+ {
127
+ "id": "blk_j17z2np129",
128
+ "type": "stats",
129
+ "v": 1,
130
+ "fields": {
131
+ "items": [
132
+ {
133
+ "value": "41,200",
134
+ "label": "Grocery visits"
135
+ },
136
+ {
137
+ "value": "318",
138
+ "label": "Volunteers"
139
+ },
140
+ {
141
+ "value": "146",
142
+ "label": "Homes made safe"
143
+ },
144
+ {
145
+ "value": "94¢",
146
+ "label": "Of each dollar spent on programs"
147
+ }
148
+ ]
149
+ },
150
+ "variant": "row",
151
+ "style": {
152
+ "align": {
153
+ "d": "center"
154
+ }
155
+ }
156
+ }
157
+ ]
158
+ },
159
+ {
160
+ "id": "sec_fb9zcrtnsm",
161
+ "preset": "services/image-cards@1",
162
+ "label": "Three services with photos",
163
+ "layout": {
164
+ "mode": "stack",
165
+ "columns": {
166
+ "d": [
167
+ 12
168
+ ]
169
+ },
170
+ "gap": "xl"
171
+ },
172
+ "style": {
173
+ "colorTheme": "light"
174
+ },
175
+ "blocks": [
176
+ {
177
+ "id": "blk_nezd0tv27h",
178
+ "type": "heading",
179
+ "v": 1,
180
+ "fields": {
181
+ "text": "Three programs, one neighborhood",
182
+ "level": "h2",
183
+ "size": "auto",
184
+ "eyebrow": "What we do",
185
+ "subheading": "Everything we run is free, open to anyone in the 15201 and 15224 zip codes, and shaped by the people who use it."
186
+ },
187
+ "variant": "plain"
188
+ },
189
+ {
190
+ "id": "blk_yj0he6zk0z",
191
+ "type": "columns",
192
+ "v": 1,
193
+ "fields": {
194
+ "items": [
195
+ {
196
+ "image": {
197
+ "src": "https://images.unsplash.com/photo-1528605248644-14dd04022da1?w=1560&q=80",
198
+ "alt": "Volunteers and neighbors talking over a long table",
199
+ "width": 1560,
200
+ "height": 1040
201
+ },
202
+ "heading": "Penn Avenue Pantry",
203
+ "body": {
204
+ "type": "doc",
205
+ "content": [
206
+ {
207
+ "type": "paragraph",
208
+ "content": [
209
+ {
210
+ "type": "text",
211
+ "text": "Fresh produce, dairy and staples three days a week, chosen like a grocery store. No paperwork, no questions."
212
+ }
213
+ ]
214
+ }
215
+ ]
216
+ },
217
+ "link": {
218
+ "type": "page",
219
+ "page": "pg_5752p2f5ye",
220
+ "anchor": "pantry"
221
+ },
222
+ "linkLabel": "Visit the pantry"
223
+ },
224
+ {
225
+ "image": {
226
+ "src": "https://images.unsplash.com/photo-1488521787991-ed7bbaae773c?w=1560&q=80",
227
+ "alt": "Children grinning at the camera after homework club",
228
+ "width": 1560,
229
+ "height": 1040
230
+ },
231
+ "heading": "Homework Harbor",
232
+ "body": {
233
+ "type": "doc",
234
+ "content": [
235
+ {
236
+ "type": "paragraph",
237
+ "content": [
238
+ {
239
+ "type": "text",
240
+ "text": "After-school tutoring, a hot snack and a quiet table for 80 kids, every school day from 3 to 6."
241
+ }
242
+ ]
243
+ }
244
+ ]
245
+ },
246
+ "link": {
247
+ "type": "page",
248
+ "page": "pg_5752p2f5ye"
249
+ },
250
+ "linkLabel": "About Homework Harbor"
251
+ },
252
+ {
253
+ "image": {
254
+ "src": "https://images.unsplash.com/photo-1570129477492-45c003edd2be?w=1560&q=80",
255
+ "alt": "A white clapboard house with a porch after repairs",
256
+ "width": 1560,
257
+ "height": 1040
258
+ },
259
+ "heading": "Safe at Home",
260
+ "body": {
261
+ "type": "doc",
262
+ "content": [
263
+ {
264
+ "type": "paragraph",
265
+ "content": [
266
+ {
267
+ "type": "text",
268
+ "text": "Free ramps, railings, roof patches and furnace checks so older neighbors can stay in the houses they love."
269
+ }
270
+ ]
271
+ }
272
+ ]
273
+ },
274
+ "link": {
275
+ "type": "page",
276
+ "page": "pg_5752p2f5ye",
277
+ "anchor": "repairs"
278
+ },
279
+ "linkLabel": "Request a repair"
280
+ }
281
+ ],
282
+ "columns": "3",
283
+ "aspect": "4:5"
284
+ },
285
+ "variant": "plain"
286
+ }
287
+ ]
288
+ },
289
+ {
290
+ "id": "sec_7n5aznz1gy",
291
+ "preset": "events/list@1",
292
+ "label": "Upcoming events list",
293
+ "layout": {
294
+ "mode": "stack",
295
+ "columns": {
296
+ "d": [
297
+ 12
298
+ ]
299
+ },
300
+ "width": "narrow"
301
+ },
302
+ "style": {
303
+ "colorTheme": "light-accent"
304
+ },
305
+ "blocks": [
306
+ {
307
+ "id": "blk_7zz11zk3s1",
308
+ "type": "events",
309
+ "v": 1,
310
+ "fields": {
311
+ "heading": "Coming up in the neighborhood",
312
+ "headingLevel": "h2",
313
+ "source": {
314
+ "collection": "events",
315
+ "filter": {
316
+ "upcoming": true
317
+ },
318
+ "limit": 6
319
+ },
320
+ "showImage": false,
321
+ "showLocation": true,
322
+ "showExcerpt": true,
323
+ "registerLabel": "Sign up",
324
+ "emptyMessage": "New volunteer days are posted every month — check back soon.",
325
+ "structuredData": true
326
+ },
327
+ "variant": "list"
328
+ }
329
+ ]
330
+ },
331
+ {
332
+ "id": "sec_hxxdc47gkz",
333
+ "preset": "testimonials/photo-overlap@1",
334
+ "label": "Testimonial over photo",
335
+ "layout": {
336
+ "mode": "grid",
337
+ "rows": {
338
+ "d": 22,
339
+ "m": 22
340
+ },
341
+ "items": {
342
+ "blk_26zgk4trzt": {
343
+ "d": {
344
+ "x": 1,
345
+ "y": 1,
346
+ "w": 16,
347
+ "h": 22
348
+ },
349
+ "m": {
350
+ "x": 1,
351
+ "y": 1,
352
+ "w": 8,
353
+ "h": 12
354
+ }
355
+ },
356
+ "blk_xkbqph40yg": {
357
+ "d": {
358
+ "x": 13,
359
+ "y": 7,
360
+ "w": 12,
361
+ "h": 9,
362
+ "z": 2
363
+ },
364
+ "m": {
365
+ "x": 1,
366
+ "y": 10,
367
+ "w": 8,
368
+ "h": 13,
369
+ "z": 2
370
+ }
371
+ }
372
+ }
373
+ },
374
+ "style": {
375
+ "colorTheme": "light"
376
+ },
377
+ "blocks": [
378
+ {
379
+ "id": "blk_26zgk4trzt",
380
+ "type": "image",
381
+ "v": 1,
382
+ "fields": {
383
+ "image": {
384
+ "src": "https://images.unsplash.com/photo-1782386963665-b83ce1d6752e?w=1920&q=80",
385
+ "alt": "Volunteer hands planting seedlings in the community garden",
386
+ "width": 1920,
387
+ "height": 1281
388
+ },
389
+ "aspect": "original",
390
+ "lightbox": false
391
+ },
392
+ "variant": "default"
393
+ },
394
+ {
395
+ "id": "blk_xkbqph40yg",
396
+ "type": "testimonial",
397
+ "v": 1,
398
+ "fields": {
399
+ "quote": {
400
+ "type": "doc",
401
+ "content": [
402
+ {
403
+ "type": "paragraph",
404
+ "content": [
405
+ {
406
+ "type": "text",
407
+ "text": "When my husband passed, I didn't know who to call about the furnace. Riverbend sent two volunteers that week, and they still check in every winter."
408
+ }
409
+ ]
410
+ }
411
+ ]
412
+ },
413
+ "name": "Dolores Kaminski",
414
+ "role": "Safe at Home neighbor since 2019",
415
+ "photo": {
416
+ "src": "https://images.unsplash.com/photo-1780387477222-730504564368?w=320&q=80",
417
+ "alt": "Portrait of Dolores Kaminski",
418
+ "width": 320,
419
+ "height": 480
420
+ }
421
+ },
422
+ "variant": "card",
423
+ "style": {
424
+ "colorTheme": "light",
425
+ "padding": {
426
+ "d": "lg",
427
+ "m": "md"
428
+ }
429
+ }
430
+ }
431
+ ]
432
+ },
433
+ {
434
+ "id": "sec_jwg6jrwd2r",
435
+ "preset": "cta/donate@1",
436
+ "label": "Donation appeal",
437
+ "layout": {
438
+ "mode": "stack",
439
+ "columns": {
440
+ "d": [
441
+ 6,
442
+ 6
443
+ ],
444
+ "m": [
445
+ 12
446
+ ]
447
+ },
448
+ "align": "center",
449
+ "gap": "2xl"
450
+ },
451
+ "style": {
452
+ "colorTheme": "light-accent"
453
+ },
454
+ "blocks": [
455
+ {
456
+ "id": "blk_6en9g2wgxb",
457
+ "type": "heading",
458
+ "v": 1,
459
+ "fields": {
460
+ "text": "Keep the pantry shelves full",
461
+ "level": "h2",
462
+ "size": "auto",
463
+ "eyebrow": "Give"
464
+ },
465
+ "column": 0,
466
+ "variant": "plain"
467
+ },
468
+ {
469
+ "id": "blk_7c8348jmsy",
470
+ "type": "text",
471
+ "v": 1,
472
+ "fields": {
473
+ "content": {
474
+ "type": "doc",
475
+ "content": [
476
+ {
477
+ "type": "paragraph",
478
+ "content": [
479
+ {
480
+ "type": "text",
481
+ "text": "Every week we welcome more than 800 families. $40 stocks one family's groceries for a week, and a monthly gift lets us buy fresh produce from local farms at wholesale prices."
482
+ }
483
+ ]
484
+ }
485
+ ]
486
+ }
487
+ },
488
+ "column": 0,
489
+ "variant": "default"
490
+ },
491
+ {
492
+ "id": "blk_p92jcgqz7g",
493
+ "type": "donation",
494
+ "v": 1,
495
+ "fields": {
496
+ "headingLevel": "h3",
497
+ "mode": "checkout",
498
+ "currency": "USD",
499
+ "amounts": [
500
+ {
501
+ "amount": 20
502
+ },
503
+ {
504
+ "amount": 40
505
+ },
506
+ {
507
+ "amount": 100
508
+ },
509
+ {
510
+ "amount": 250
511
+ }
512
+ ],
513
+ "allowCustom": true,
514
+ "frequency": "both",
515
+ "buttonLabel": "Give now",
516
+ "note": "Riverbend Neighbors is a 501(c)(3). Gifts are tax-deductible; your receipt arrives by email."
517
+ },
518
+ "column": 1,
519
+ "variant": "card"
520
+ }
521
+ ]
522
+ }
523
+ ]
524
+ }