@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,888 @@
1
+ {
2
+ "$schema": "https://schema.openspace.dev/v1/page.json",
3
+ "id": "pg_363jnd89a1",
4
+ "title": "Home",
5
+ "slug": "",
6
+ "seo": {
7
+ "description": "Licensed plumbers and electricians in north Denver. Same-day repairs, fixed prices before we start and a two-year labour guarantee."
8
+ },
9
+ "sections": [
10
+ {
11
+ "id": "sec_7yq9btyyzm",
12
+ "preset": "hero/local-service@1",
13
+ "label": "Local service with phone",
14
+ "layout": {
15
+ "mode": "stack",
16
+ "columns": {
17
+ "d": [
18
+ 7,
19
+ 5
20
+ ],
21
+ "m": [
22
+ 12
23
+ ]
24
+ },
25
+ "align": "center",
26
+ "gap": "2xl"
27
+ },
28
+ "style": {
29
+ "colorTheme": "light",
30
+ "padding": {
31
+ "d": "xl",
32
+ "m": "lg"
33
+ }
34
+ },
35
+ "blocks": [
36
+ {
37
+ "id": "blk_y9bxhx6hqv",
38
+ "type": "heading",
39
+ "v": 1,
40
+ "fields": {
41
+ "text": "Fixed today, at the price we quoted",
42
+ "level": "h1",
43
+ "size": "h1",
44
+ "eyebrow": "Plumbing & electrical · North Denver",
45
+ "subheading": "A family firm of licensed plumbers and electricians, on the road seven days a week across north Denver and Wheat Ridge."
46
+ },
47
+ "column": 0,
48
+ "variant": "plain"
49
+ },
50
+ {
51
+ "id": "blk_5nnjvg1nej",
52
+ "type": "button",
53
+ "v": 1,
54
+ "fields": {
55
+ "label": "Call (303) 555‑0148",
56
+ "link": {
57
+ "type": "phone",
58
+ "phone": "+13035550148"
59
+ },
60
+ "role": "primary",
61
+ "secondaryLabel": "Ask for a quote",
62
+ "secondaryLink": {
63
+ "type": "page",
64
+ "page": "pg_g5v67q4hd6"
65
+ }
66
+ },
67
+ "column": 0,
68
+ "variant": "large"
69
+ },
70
+ {
71
+ "id": "blk_26x2zk9b1c",
72
+ "type": "icon-list",
73
+ "v": 1,
74
+ "fields": {
75
+ "items": [
76
+ {
77
+ "icon": "shield-check",
78
+ "title": "Licensed and fully insured"
79
+ },
80
+ {
81
+ "icon": "clock",
82
+ "title": "Same-day visits, seven days"
83
+ },
84
+ {
85
+ "icon": "check",
86
+ "title": "A fixed price before work starts"
87
+ }
88
+ ],
89
+ "columns": "1"
90
+ },
91
+ "column": 0,
92
+ "variant": "list"
93
+ },
94
+ {
95
+ "id": "blk_a7fbpppam8",
96
+ "type": "image",
97
+ "v": 1,
98
+ "fields": {
99
+ "image": {
100
+ "src": "https://images.unsplash.com/photo-1621905251189-08b45d6a269e?w=1920&q=80",
101
+ "alt": "A Fixwell electrician working on a wall panel",
102
+ "width": 1920,
103
+ "height": 1282
104
+ },
105
+ "aspect": "4:5",
106
+ "lightbox": false
107
+ },
108
+ "column": 1,
109
+ "variant": "default"
110
+ }
111
+ ]
112
+ },
113
+ {
114
+ "id": "sec_ry3a0a0c5x",
115
+ "preset": "stats/inline-strip@1",
116
+ "label": "Compact number strip",
117
+ "layout": {
118
+ "mode": "stack",
119
+ "columns": {
120
+ "d": [
121
+ 12
122
+ ]
123
+ },
124
+ "width": "wide"
125
+ },
126
+ "style": {
127
+ "colorTheme": "light-accent",
128
+ "padding": {
129
+ "d": "md",
130
+ "m": "md"
131
+ }
132
+ },
133
+ "blocks": [
134
+ {
135
+ "id": "blk_pr8qja0y5n",
136
+ "type": "stats",
137
+ "v": 1,
138
+ "fields": {
139
+ "items": [
140
+ {
141
+ "value": "4.9★",
142
+ "label": "From 640 local reviews"
143
+ },
144
+ {
145
+ "value": "1998",
146
+ "label": "Family-run since"
147
+ },
148
+ {
149
+ "value": "2 yrs",
150
+ "label": "Labour guarantee"
151
+ },
152
+ {
153
+ "value": "7 days",
154
+ "label": "Emergency call-outs"
155
+ }
156
+ ]
157
+ },
158
+ "variant": "row"
159
+ }
160
+ ]
161
+ },
162
+ {
163
+ "id": "sec_vy7kh6as0g",
164
+ "preset": "services/dark-icon-cards@1",
165
+ "label": "Service cards on dark",
166
+ "layout": {
167
+ "mode": "grid",
168
+ "rows": {
169
+ "d": 21,
170
+ "m": 52
171
+ },
172
+ "items": {
173
+ "blk_39av9mabw6": {
174
+ "d": {
175
+ "x": 1,
176
+ "y": 1,
177
+ "w": 14,
178
+ "h": 7
179
+ },
180
+ "m": {
181
+ "x": 1,
182
+ "y": 1,
183
+ "w": 8,
184
+ "h": 8
185
+ }
186
+ },
187
+ "blk_brp2pkdmy3": {
188
+ "d": {
189
+ "x": 1,
190
+ "y": 9,
191
+ "w": 6,
192
+ "h": 13
193
+ },
194
+ "m": {
195
+ "x": 1,
196
+ "y": 10,
197
+ "w": 8,
198
+ "h": 10
199
+ }
200
+ },
201
+ "blk_s7gw4gt36a": {
202
+ "d": {
203
+ "x": 7,
204
+ "y": 9,
205
+ "w": 6,
206
+ "h": 13
207
+ },
208
+ "m": {
209
+ "x": 1,
210
+ "y": 21,
211
+ "w": 8,
212
+ "h": 10
213
+ }
214
+ },
215
+ "blk_aca5mbjzr6": {
216
+ "d": {
217
+ "x": 13,
218
+ "y": 9,
219
+ "w": 6,
220
+ "h": 13
221
+ },
222
+ "m": {
223
+ "x": 1,
224
+ "y": 32,
225
+ "w": 8,
226
+ "h": 10
227
+ }
228
+ },
229
+ "blk_sjdt22806j": {
230
+ "d": {
231
+ "x": 19,
232
+ "y": 9,
233
+ "w": 6,
234
+ "h": 13
235
+ },
236
+ "m": {
237
+ "x": 1,
238
+ "y": 43,
239
+ "w": 8,
240
+ "h": 10
241
+ }
242
+ }
243
+ }
244
+ },
245
+ "style": {
246
+ "colorTheme": "dark"
247
+ },
248
+ "blocks": [
249
+ {
250
+ "id": "blk_39av9mabw6",
251
+ "type": "heading",
252
+ "v": 1,
253
+ "fields": {
254
+ "text": "Pipes, wires and everything in between",
255
+ "level": "h2",
256
+ "size": "auto",
257
+ "eyebrow": "Services",
258
+ "subheading": "One call for the jobs that usually need two tradespeople."
259
+ },
260
+ "variant": "plain"
261
+ },
262
+ {
263
+ "id": "blk_brp2pkdmy3",
264
+ "type": "card",
265
+ "v": 1,
266
+ "fields": {
267
+ "aspect": "4:5",
268
+ "heading": "Leaks and blockages",
269
+ "body": {
270
+ "type": "doc",
271
+ "content": [
272
+ {
273
+ "type": "paragraph",
274
+ "content": [
275
+ {
276
+ "type": "text",
277
+ "text": "Burst pipes, dripping taps and slow drains found and fixed the same day."
278
+ }
279
+ ]
280
+ }
281
+ ]
282
+ },
283
+ "link": {
284
+ "type": "page",
285
+ "page": "pg_q2sbvhb6fq",
286
+ "anchor": "repairs"
287
+ },
288
+ "linkLabel": "Repairs",
289
+ "icon": "droplet"
290
+ },
291
+ "variant": "stacked",
292
+ "style": {
293
+ "colorTheme": "dark-accent",
294
+ "padding": {
295
+ "d": "lg",
296
+ "m": "md"
297
+ },
298
+ "radius": "md"
299
+ }
300
+ },
301
+ {
302
+ "id": "blk_s7gw4gt36a",
303
+ "type": "card",
304
+ "v": 1,
305
+ "fields": {
306
+ "aspect": "4:5",
307
+ "heading": "Water heaters",
308
+ "body": {
309
+ "type": "doc",
310
+ "content": [
311
+ {
312
+ "type": "paragraph",
313
+ "content": [
314
+ {
315
+ "type": "text",
316
+ "text": "Repairs, replacements and tankless upgrades with permits handled."
317
+ }
318
+ ]
319
+ }
320
+ ]
321
+ },
322
+ "link": {
323
+ "type": "page",
324
+ "page": "pg_q2sbvhb6fq",
325
+ "anchor": "repairs"
326
+ },
327
+ "linkLabel": "Water heaters",
328
+ "icon": "flame"
329
+ },
330
+ "variant": "stacked",
331
+ "style": {
332
+ "colorTheme": "dark-accent",
333
+ "padding": {
334
+ "d": "lg",
335
+ "m": "md"
336
+ },
337
+ "radius": "md"
338
+ }
339
+ },
340
+ {
341
+ "id": "blk_aca5mbjzr6",
342
+ "type": "card",
343
+ "v": 1,
344
+ "fields": {
345
+ "aspect": "4:5",
346
+ "heading": "Electrical work",
347
+ "body": {
348
+ "type": "doc",
349
+ "content": [
350
+ {
351
+ "type": "paragraph",
352
+ "content": [
353
+ {
354
+ "type": "text",
355
+ "text": "Faults, rewires, new circuits and EV chargers by licensed electricians."
356
+ }
357
+ ]
358
+ }
359
+ ]
360
+ },
361
+ "link": {
362
+ "type": "page",
363
+ "page": "pg_q2sbvhb6fq",
364
+ "anchor": "repairs"
365
+ },
366
+ "linkLabel": "Electrical",
367
+ "icon": "zap"
368
+ },
369
+ "variant": "stacked",
370
+ "style": {
371
+ "colorTheme": "dark-accent",
372
+ "padding": {
373
+ "d": "lg",
374
+ "m": "md"
375
+ },
376
+ "radius": "md"
377
+ }
378
+ },
379
+ {
380
+ "id": "blk_sjdt22806j",
381
+ "type": "card",
382
+ "v": 1,
383
+ "fields": {
384
+ "aspect": "4:5",
385
+ "heading": "Bathrooms",
386
+ "body": {
387
+ "type": "doc",
388
+ "content": [
389
+ {
390
+ "type": "paragraph",
391
+ "content": [
392
+ {
393
+ "type": "text",
394
+ "text": "Complete bathroom renovations from one team, in about three weeks."
395
+ }
396
+ ]
397
+ }
398
+ ]
399
+ },
400
+ "link": {
401
+ "type": "page",
402
+ "page": "pg_q2sbvhb6fq",
403
+ "anchor": "bathrooms"
404
+ },
405
+ "linkLabel": "Renovations",
406
+ "icon": "home"
407
+ },
408
+ "variant": "stacked",
409
+ "style": {
410
+ "colorTheme": "dark-accent",
411
+ "padding": {
412
+ "d": "lg",
413
+ "m": "md"
414
+ },
415
+ "radius": "md"
416
+ }
417
+ }
418
+ ]
419
+ },
420
+ {
421
+ "id": "sec_z8942fcj30",
422
+ "preset": "process/step-cards@1",
423
+ "label": "Step cards",
424
+ "layout": {
425
+ "mode": "grid",
426
+ "rows": {
427
+ "d": 21,
428
+ "m": 41
429
+ },
430
+ "items": {
431
+ "blk_bf3xxqwj04": {
432
+ "d": {
433
+ "x": 1,
434
+ "y": 1,
435
+ "w": 14,
436
+ "h": 6
437
+ },
438
+ "m": {
439
+ "x": 1,
440
+ "y": 1,
441
+ "w": 8,
442
+ "h": 7
443
+ }
444
+ },
445
+ "blk_qwdpp46gm6": {
446
+ "d": {
447
+ "x": 1,
448
+ "y": 8,
449
+ "w": 8,
450
+ "h": 10
451
+ },
452
+ "m": {
453
+ "x": 1,
454
+ "y": 9,
455
+ "w": 8,
456
+ "h": 9
457
+ }
458
+ },
459
+ "blk_ckvxsdfz59": {
460
+ "d": {
461
+ "x": 9,
462
+ "y": 8,
463
+ "w": 8,
464
+ "h": 10
465
+ },
466
+ "m": {
467
+ "x": 1,
468
+ "y": 19,
469
+ "w": 8,
470
+ "h": 9
471
+ }
472
+ },
473
+ "blk_mqaqazp9dv": {
474
+ "d": {
475
+ "x": 17,
476
+ "y": 8,
477
+ "w": 8,
478
+ "h": 10
479
+ },
480
+ "m": {
481
+ "x": 1,
482
+ "y": 29,
483
+ "w": 8,
484
+ "h": 9
485
+ }
486
+ },
487
+ "blk_2pjkytqx33": {
488
+ "d": {
489
+ "x": 1,
490
+ "y": 19,
491
+ "w": 8,
492
+ "h": 3
493
+ },
494
+ "m": {
495
+ "x": 1,
496
+ "y": 39,
497
+ "w": 8,
498
+ "h": 3
499
+ }
500
+ }
501
+ }
502
+ },
503
+ "style": {
504
+ "colorTheme": "light"
505
+ },
506
+ "blocks": [
507
+ {
508
+ "id": "blk_bf3xxqwj04",
509
+ "type": "heading",
510
+ "v": 1,
511
+ "fields": {
512
+ "text": "Booked, fixed, guaranteed",
513
+ "level": "h2",
514
+ "size": "auto",
515
+ "eyebrow": "How it works",
516
+ "subheading": "Most repairs are done within a day of your first call."
517
+ },
518
+ "variant": "plain"
519
+ },
520
+ {
521
+ "id": "blk_qwdpp46gm6",
522
+ "type": "card",
523
+ "v": 1,
524
+ "fields": {
525
+ "aspect": "4:5",
526
+ "eyebrow": "Step one",
527
+ "heading": "Call or ask for a quote",
528
+ "body": {
529
+ "type": "doc",
530
+ "content": [
531
+ {
532
+ "type": "paragraph",
533
+ "content": [
534
+ {
535
+ "type": "text",
536
+ "text": "Tell us what's wrong and we'll give you a time slot, often the same day."
537
+ }
538
+ ]
539
+ }
540
+ ]
541
+ },
542
+ "icon": "phone"
543
+ },
544
+ "variant": "stacked",
545
+ "style": {
546
+ "colorTheme": "light-accent",
547
+ "padding": {
548
+ "d": "lg",
549
+ "m": "md"
550
+ },
551
+ "radius": "md"
552
+ }
553
+ },
554
+ {
555
+ "id": "blk_ckvxsdfz59",
556
+ "type": "card",
557
+ "v": 1,
558
+ "fields": {
559
+ "aspect": "4:5",
560
+ "eyebrow": "Step two",
561
+ "heading": "A fixed price first",
562
+ "body": {
563
+ "type": "doc",
564
+ "content": [
565
+ {
566
+ "type": "paragraph",
567
+ "content": [
568
+ {
569
+ "type": "text",
570
+ "text": "We look, explain the fix and agree the price before any work starts."
571
+ }
572
+ ]
573
+ }
574
+ ]
575
+ },
576
+ "icon": "shield-check"
577
+ },
578
+ "variant": "stacked",
579
+ "style": {
580
+ "colorTheme": "light-accent",
581
+ "padding": {
582
+ "d": "lg",
583
+ "m": "md"
584
+ },
585
+ "radius": "md"
586
+ }
587
+ },
588
+ {
589
+ "id": "blk_mqaqazp9dv",
590
+ "type": "card",
591
+ "v": 1,
592
+ "fields": {
593
+ "aspect": "4:5",
594
+ "eyebrow": "Step three",
595
+ "heading": "Done and tidied",
596
+ "body": {
597
+ "type": "doc",
598
+ "content": [
599
+ {
600
+ "type": "paragraph",
601
+ "content": [
602
+ {
603
+ "type": "text",
604
+ "text": "We fix it, test it, clean up and guarantee the labour for two years."
605
+ }
606
+ ]
607
+ }
608
+ ]
609
+ },
610
+ "icon": "check"
611
+ },
612
+ "variant": "stacked",
613
+ "style": {
614
+ "colorTheme": "light-accent",
615
+ "padding": {
616
+ "d": "lg",
617
+ "m": "md"
618
+ },
619
+ "radius": "md"
620
+ }
621
+ },
622
+ {
623
+ "id": "blk_2pjkytqx33",
624
+ "type": "button",
625
+ "v": 1,
626
+ "fields": {
627
+ "label": "Request a quote",
628
+ "link": {
629
+ "type": "page",
630
+ "page": "pg_g5v67q4hd6"
631
+ },
632
+ "role": "primary"
633
+ },
634
+ "variant": "default"
635
+ }
636
+ ]
637
+ },
638
+ {
639
+ "id": "sec_tyckas545g",
640
+ "preset": "testimonials/rating-bar@1",
641
+ "label": "Rating bar",
642
+ "layout": {
643
+ "mode": "stack",
644
+ "columns": {
645
+ "d": [
646
+ 4,
647
+ 4,
648
+ 4
649
+ ],
650
+ "m": [
651
+ 12
652
+ ]
653
+ },
654
+ "align": "center",
655
+ "gap": "xl"
656
+ },
657
+ "style": {
658
+ "colorTheme": "dark-accent",
659
+ "padding": {
660
+ "d": "lg",
661
+ "m": "lg"
662
+ }
663
+ },
664
+ "blocks": [
665
+ {
666
+ "id": "blk_6fsekg0566",
667
+ "type": "stats",
668
+ "v": 1,
669
+ "fields": {
670
+ "items": [
671
+ {
672
+ "value": "4.9 / 5",
673
+ "label": "From 640 reviews"
674
+ }
675
+ ]
676
+ },
677
+ "column": 0,
678
+ "variant": "row"
679
+ },
680
+ {
681
+ "id": "blk_ckmd4sfjmh",
682
+ "type": "testimonial",
683
+ "v": 1,
684
+ "fields": {
685
+ "quote": {
686
+ "type": "doc",
687
+ "content": [
688
+ {
689
+ "type": "paragraph",
690
+ "content": [
691
+ {
692
+ "type": "text",
693
+ "text": "Arrived within the hour and the bill was exactly the quote."
694
+ }
695
+ ]
696
+ }
697
+ ]
698
+ },
699
+ "name": "Dana R.",
700
+ "role": "Burst pipe, Highland",
701
+ "rating": 5
702
+ },
703
+ "column": 1,
704
+ "variant": "minimal"
705
+ },
706
+ {
707
+ "id": "blk_ngbsj63gvm",
708
+ "type": "testimonial",
709
+ "v": 1,
710
+ "fields": {
711
+ "quote": {
712
+ "type": "doc",
713
+ "content": [
714
+ {
715
+ "type": "paragraph",
716
+ "content": [
717
+ {
718
+ "type": "text",
719
+ "text": "Rewired our 1920s bungalow and left it spotless."
720
+ }
721
+ ]
722
+ }
723
+ ]
724
+ },
725
+ "name": "Kofi B.",
726
+ "role": "Rewire, Berkeley",
727
+ "rating": 5
728
+ },
729
+ "column": 2,
730
+ "variant": "minimal"
731
+ }
732
+ ]
733
+ },
734
+ {
735
+ "id": "sec_manfc3r8a4",
736
+ "preset": "services/areas-served@1",
737
+ "label": "Areas we serve",
738
+ "layout": {
739
+ "mode": "stack",
740
+ "columns": {
741
+ "d": [
742
+ 6,
743
+ 6
744
+ ],
745
+ "m": [
746
+ 12
747
+ ]
748
+ },
749
+ "align": "center",
750
+ "gap": "2xl"
751
+ },
752
+ "style": {
753
+ "colorTheme": "light-accent"
754
+ },
755
+ "blocks": [
756
+ {
757
+ "id": "blk_c5ynm6z8bw",
758
+ "type": "map",
759
+ "v": 1,
760
+ "fields": {
761
+ "name": "Fixwell Plumbing & Electric",
762
+ "address": "2150 West 32nd Avenue, Denver, CO 80211",
763
+ "latitude": 39.7617,
764
+ "longitude": -105.0136,
765
+ "zoom": 11,
766
+ "linkLabel": "Open in Maps",
767
+ "aspect": "4:3"
768
+ },
769
+ "column": 0,
770
+ "variant": "plain"
771
+ },
772
+ {
773
+ "id": "blk_2wae4bwpjm",
774
+ "type": "heading",
775
+ "v": 1,
776
+ "fields": {
777
+ "text": "Where we work",
778
+ "level": "h2",
779
+ "size": "auto",
780
+ "eyebrow": "Service area"
781
+ },
782
+ "column": 1,
783
+ "variant": "plain"
784
+ },
785
+ {
786
+ "id": "blk_qkcpa06yc2",
787
+ "type": "text",
788
+ "v": 1,
789
+ "fields": {
790
+ "content": {
791
+ "type": "doc",
792
+ "content": [
793
+ {
794
+ "type": "paragraph",
795
+ "content": [
796
+ {
797
+ "type": "text",
798
+ "text": "Same-day visits across Highland, Berkeley, Sunnyside, Sloan's Lake, Wheat Ridge and Edgewater. Further afield? Call — if we can get there in half an hour, we'll come."
799
+ }
800
+ ]
801
+ }
802
+ ]
803
+ }
804
+ },
805
+ "column": 1,
806
+ "variant": "default"
807
+ },
808
+ {
809
+ "id": "blk_snq0zxmpms",
810
+ "type": "button",
811
+ "v": 1,
812
+ "fields": {
813
+ "label": "Ask about your street",
814
+ "link": {
815
+ "type": "page",
816
+ "page": "pg_g5v67q4hd6"
817
+ },
818
+ "role": "secondary"
819
+ },
820
+ "column": 1,
821
+ "variant": "default"
822
+ }
823
+ ]
824
+ },
825
+ {
826
+ "id": "sec_saxyr4tn4z",
827
+ "preset": "cta/phone-band@1",
828
+ "label": "Call us band",
829
+ "layout": {
830
+ "mode": "stack",
831
+ "columns": {
832
+ "d": [
833
+ 7,
834
+ 5
835
+ ],
836
+ "m": [
837
+ 12
838
+ ]
839
+ },
840
+ "align": "center",
841
+ "gap": "xl"
842
+ },
843
+ "style": {
844
+ "colorTheme": "brand",
845
+ "padding": {
846
+ "d": "lg",
847
+ "m": "lg"
848
+ }
849
+ },
850
+ "blocks": [
851
+ {
852
+ "id": "blk_wkh7y2x7yt",
853
+ "type": "heading",
854
+ "v": 1,
855
+ "fields": {
856
+ "text": "Water where it shouldn't be?",
857
+ "level": "h2",
858
+ "size": "auto",
859
+ "eyebrow": "Emergency call-outs, seven days"
860
+ },
861
+ "column": 0,
862
+ "variant": "plain"
863
+ },
864
+ {
865
+ "id": "blk_5adv031x88",
866
+ "type": "button",
867
+ "v": 1,
868
+ "fields": {
869
+ "label": "Call (303) 555‑0148",
870
+ "link": {
871
+ "type": "phone",
872
+ "phone": "+13035550148"
873
+ },
874
+ "role": "primary"
875
+ },
876
+ "column": 1,
877
+ "variant": "large",
878
+ "style": {
879
+ "align": {
880
+ "d": "end",
881
+ "m": "start"
882
+ }
883
+ }
884
+ }
885
+ ]
886
+ }
887
+ ]
888
+ }