@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,185 @@
1
+ {
2
+ "$comment": "Licenses for the demo media in the Gather template. Replace the demo photos with your own; this file can be deleted once none of them are used.",
3
+ "design": {
4
+ "license": "CC-BY-4.0",
5
+ "licenseUrl": "https://creativecommons.org/licenses/by/4.0/"
6
+ },
7
+ "media": [
8
+ {
9
+ "kind": "image",
10
+ "src": "https://images.unsplash.com/photo-1494790108377-be9c29b29330",
11
+ "title": "Portrait of a woman in a red sweater, laughing",
12
+ "author": "Michael Dam",
13
+ "authorUrl": "https://unsplash.com/@michaeldam",
14
+ "source": "Unsplash",
15
+ "sourceUrl": "https://unsplash.com/photos/closeup-photography-of-woman-smiling-mEZ3PoFGs_k",
16
+ "license": "Unsplash License",
17
+ "licenseUrl": "https://unsplash.com/license"
18
+ },
19
+ {
20
+ "kind": "image",
21
+ "src": "https://images.unsplash.com/photo-1500648767791-00dcc994a43e",
22
+ "title": "Portrait of a man in a grey sweater, smiling softly",
23
+ "author": "Jurica Koletić",
24
+ "authorUrl": "https://unsplash.com/@juricakoletic",
25
+ "source": "Unsplash",
26
+ "sourceUrl": "https://unsplash.com/photos/man-wearing-henley-top-portrait-7YVZYZeITc8",
27
+ "license": "Unsplash License",
28
+ "licenseUrl": "https://unsplash.com/license"
29
+ },
30
+ {
31
+ "kind": "image",
32
+ "src": "https://images.unsplash.com/photo-1522529599102-193c0d76b5b6",
33
+ "title": "A smiling man in a grey t-shirt outdoors",
34
+ "author": "Elizeu Dias",
35
+ "authorUrl": "https://unsplash.com/@elishavision",
36
+ "source": "Unsplash",
37
+ "sourceUrl": "https://unsplash.com/photos/selective-focus-of-man-smiling-during-daytime-2EGNqazbAMk",
38
+ "license": "Unsplash License",
39
+ "licenseUrl": "https://unsplash.com/license"
40
+ },
41
+ {
42
+ "kind": "image",
43
+ "src": "https://images.unsplash.com/photo-1534528741775-53994a69daeb",
44
+ "title": "Portrait of a woman in a black top against a soft violet wall",
45
+ "author": "Aiony Haust",
46
+ "authorUrl": "https://unsplash.com/@aiony",
47
+ "source": "Unsplash",
48
+ "sourceUrl": "https://unsplash.com/photos/woman-wearing-black-crew-neck-shirt-3TLl_97HNJo",
49
+ "license": "Unsplash License",
50
+ "licenseUrl": "https://unsplash.com/license"
51
+ },
52
+ {
53
+ "kind": "image",
54
+ "src": "https://images.unsplash.com/photo-1539571696357-5a69c17a67c6",
55
+ "title": "Portrait of a young man in a black hat, smiling",
56
+ "author": "ian dooley",
57
+ "authorUrl": "https://unsplash.com/@sadswim",
58
+ "source": "Unsplash",
59
+ "sourceUrl": "https://unsplash.com/photos/man-standing-near-white-wall-d1UPkiFd04A",
60
+ "license": "Unsplash License",
61
+ "licenseUrl": "https://unsplash.com/license"
62
+ },
63
+ {
64
+ "kind": "image",
65
+ "src": "https://images.unsplash.com/photo-1540575467063-178a50c2df87",
66
+ "title": "An audience in a dark hall facing a lit stage",
67
+ "author": "Headway",
68
+ "authorUrl": "https://unsplash.com/@headwayio",
69
+ "source": "Unsplash",
70
+ "sourceUrl": "https://unsplash.com/photos/crowd-of-people-sitting-on-chairs-inside-room-F2KRf_QfCqw",
71
+ "license": "Unsplash License",
72
+ "licenseUrl": "https://unsplash.com/license"
73
+ },
74
+ {
75
+ "kind": "image",
76
+ "src": "https://images.unsplash.com/photo-1544005313-94ddf0286df2",
77
+ "title": "Portrait of a woman with long brown hair in a striped shirt",
78
+ "author": "Štefan Štefančík",
79
+ "authorUrl": "https://unsplash.com/@cikstefan",
80
+ "source": "Unsplash",
81
+ "sourceUrl": "https://unsplash.com/photos/smiling-woman-wearing-white-and-black-pinstriped-collared-top-QXevDflbl8A",
82
+ "license": "Unsplash License",
83
+ "licenseUrl": "https://unsplash.com/license"
84
+ },
85
+ {
86
+ "kind": "image",
87
+ "src": "https://images.unsplash.com/photo-1560250097-0b93528c311a",
88
+ "title": "Portrait of a man in a dark suit and glasses",
89
+ "author": "LinkedIn Sales Solutions",
90
+ "authorUrl": "https://unsplash.com/@linkedinsalesnavigator",
91
+ "source": "Unsplash",
92
+ "sourceUrl": "https://unsplash.com/photos/man-standing-beside-wall-pAtA8xe_iVM",
93
+ "license": "Unsplash License",
94
+ "licenseUrl": "https://unsplash.com/license"
95
+ },
96
+ {
97
+ "kind": "image",
98
+ "src": "https://images.unsplash.com/photo-1573497019236-17f8177b81e8",
99
+ "title": "A woman seated in a modern office, smiling at the camera",
100
+ "author": "Christina @ wocintechchat.com M",
101
+ "authorUrl": "https://unsplash.com/@wocintechchat",
102
+ "source": "Unsplash",
103
+ "sourceUrl": "https://unsplash.com/photos/woman-smiling-and-sitting-PlikkWB79qs",
104
+ "license": "Unsplash License",
105
+ "licenseUrl": "https://unsplash.com/license"
106
+ },
107
+ {
108
+ "kind": "image",
109
+ "src": "https://images.unsplash.com/photo-1580489944761-15a19d654956",
110
+ "title": "Portrait of a woman with dark hair pinned up, smiling",
111
+ "author": "Jake Nackos",
112
+ "authorUrl": "https://unsplash.com/@jakenackos",
113
+ "source": "Unsplash",
114
+ "sourceUrl": "https://unsplash.com/photos/woman-in-white-crew-neck-shirt-smiling-IF9TK5Uy-KI",
115
+ "license": "Unsplash License",
116
+ "licenseUrl": "https://unsplash.com/license"
117
+ },
118
+ {
119
+ "kind": "image",
120
+ "src": "https://images.unsplash.com/photo-1614436201459-156d322d38c6",
121
+ "title": "A smiling woman with a shoulder-length bob by the water",
122
+ "author": "Halil Ibrahim Cetinkaya",
123
+ "authorUrl": "https://unsplash.com/@hicetinkaya",
124
+ "source": "Unsplash",
125
+ "sourceUrl": "https://unsplash.com/photos/woman-in-brown-scarf-and-brown-scarf-WzGC8xSyqfg",
126
+ "license": "Unsplash License",
127
+ "licenseUrl": "https://unsplash.com/license"
128
+ },
129
+ {
130
+ "kind": "image",
131
+ "src": "https://images.unsplash.com/photo-1639747280804-dd2d6b3d88ac",
132
+ "title": "A smiling man in a green shirt standing outdoors",
133
+ "author": "PodMatch",
134
+ "authorUrl": "https://unsplash.com/@podmatch",
135
+ "source": "Unsplash",
136
+ "sourceUrl": "https://unsplash.com/photos/a-man-in-a-green-shirt-is-posing-for-a-picture-GEnCnYhA1J4",
137
+ "license": "Unsplash License",
138
+ "licenseUrl": "https://unsplash.com/license"
139
+ },
140
+ {
141
+ "kind": "image",
142
+ "src": "https://images.unsplash.com/photo-1751139846116-8c4bc6b64eea",
143
+ "title": "People talking and laughing at a conference reception",
144
+ "author": "Dwayne joe",
145
+ "authorUrl": "https://unsplash.com/@spliff_dj_joe",
146
+ "source": "Unsplash",
147
+ "sourceUrl": "https://unsplash.com/photos/people-socialize-and-converse-in-a-well-lit-space-bCMpeLcfWPw",
148
+ "license": "Unsplash License",
149
+ "licenseUrl": "https://unsplash.com/license"
150
+ },
151
+ {
152
+ "kind": "image",
153
+ "src": "https://images.unsplash.com/photo-1769798643655-e0f10f62c3fd",
154
+ "title": "A packed conference hall facing a bright stage",
155
+ "author": "Carlos Gil",
156
+ "authorUrl": "https://unsplash.com/@carlosgil83",
157
+ "source": "Unsplash",
158
+ "sourceUrl": "https://unsplash.com/photos/audience-watches-a-presentation-on-a-large-screen-sl91Zszc8zA",
159
+ "license": "Unsplash License",
160
+ "licenseUrl": "https://unsplash.com/license"
161
+ },
162
+ {
163
+ "kind": "image",
164
+ "src": "https://images.unsplash.com/photo-1773828755374-0ee802d9f44b",
165
+ "title": "A full auditorium watching a speaker on stage",
166
+ "author": "Marwen Larafa",
167
+ "authorUrl": "https://unsplash.com/@marwen_larafa",
168
+ "source": "Unsplash",
169
+ "sourceUrl": "https://unsplash.com/photos/speaker-presenting-to-large-audience-in-auditorium-_96edJ8IVC4",
170
+ "license": "Unsplash License",
171
+ "licenseUrl": "https://unsplash.com/license"
172
+ },
173
+ {
174
+ "kind": "image",
175
+ "src": "https://images.unsplash.com/photo-1780387477222-730504564368",
176
+ "title": "Portrait of a smiling grey-haired woman in a beige jumpsuit",
177
+ "author": "Centre for Ageing Better",
178
+ "authorUrl": "https://unsplash.com/@ageing_better",
179
+ "source": "Unsplash",
180
+ "sourceUrl": "https://unsplash.com/photos/woman-in-beige-jumpsuit-smiling-sitting-on-a-stool-IxacjtwPdGM",
181
+ "license": "Unsplash License",
182
+ "licenseUrl": "https://unsplash.com/license"
183
+ }
184
+ ]
185
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://schema.openspace.dev/v1/site-config.json",
3
+ "siteId": "st_thrz3wrm7m",
4
+ "schemaVersion": 1,
5
+ "template": {
6
+ "id": "gather",
7
+ "version": "1.0.0"
8
+ },
9
+ "hub": "https://hub.openspace.dev",
10
+ "deploy": {
11
+ "target": "github-pages",
12
+ "url": "https://example.github.io/gather",
13
+ "customDomain": null
14
+ },
15
+ "features": {
16
+ "forms": true,
17
+ "newsletter": true,
18
+ "analytics": true,
19
+ "search": false
20
+ }
21
+ }
@@ -0,0 +1,118 @@
1
+ {
2
+ "$schema": "https://schema.openspace.dev/v1/template.json",
3
+ "id": "gather",
4
+ "name": "Gather",
5
+ "description": "A site for conferences, festivals and events, with a countdown hero, speakers, a day-by-day programme, ticket passes, venue and travel, and fringe events.",
6
+ "persona": "Events, festivals & conferences",
7
+ "mood": "Energetic, clear, welcoming",
8
+ "version": "1.0.0",
9
+ "tags": [
10
+ "event",
11
+ "conference",
12
+ "festival",
13
+ "tickets",
14
+ "speakers",
15
+ "programme"
16
+ ],
17
+ "sample": {
18
+ "name": "Open Field 2027",
19
+ "tagline": "Design for public services · 10–11 June 2027, Minneapolis."
20
+ },
21
+ "thumbnailPage": "pg_xzesny8yta",
22
+ "looks": [
23
+ {
24
+ "id": "marquee",
25
+ "name": "Marquee",
26
+ "description": "A punchy magenta accent with Unbounded headings and pill buttons.",
27
+ "choices": {
28
+ "palette": {
29
+ "brand": "oklch(0.55 0.22 350)",
30
+ "neutral": "cool",
31
+ "contrast": "standard",
32
+ "source": "curated"
33
+ },
34
+ "pairing": "unbounded-figtree",
35
+ "density": "comfortable",
36
+ "shape": "round",
37
+ "buttons": "pill-solid",
38
+ "motion": "expressive",
39
+ "imageTreatment": "rounded"
40
+ }
41
+ },
42
+ {
43
+ "id": "programme",
44
+ "name": "Programme",
45
+ "description": "Printed-programme feel: Libre Baskerville, a forest accent and sharp rules.",
46
+ "choices": {
47
+ "palette": {
48
+ "brand": "oklch(0.45 0.1 155)",
49
+ "neutral": "warm",
50
+ "contrast": "standard",
51
+ "source": "curated"
52
+ },
53
+ "pairing": "libre-baskerville-karla",
54
+ "density": "comfortable",
55
+ "shape": "sharp",
56
+ "buttons": "solid",
57
+ "motion": "subtle",
58
+ "imageTreatment": "none"
59
+ }
60
+ },
61
+ {
62
+ "id": "festival",
63
+ "name": "Festival",
64
+ "description": "Sunny saffron, Syne headings and soft corners for outdoor events.",
65
+ "choices": {
66
+ "palette": {
67
+ "brand": "oklch(0.7 0.15 75)",
68
+ "neutral": "warm",
69
+ "contrast": "standard",
70
+ "source": "curated"
71
+ },
72
+ "pairing": "syne-dm-sans",
73
+ "density": "comfortable",
74
+ "shape": "soft",
75
+ "buttons": "solid",
76
+ "motion": "expressive",
77
+ "imageTreatment": "rounded"
78
+ }
79
+ }
80
+ ],
81
+ "pages": [
82
+ {
83
+ "id": "pg_xzesny8yta",
84
+ "title": "Home",
85
+ "slug": ""
86
+ },
87
+ {
88
+ "id": "pg_7h5fkz85td",
89
+ "title": "Programme",
90
+ "slug": "programme"
91
+ },
92
+ {
93
+ "id": "pg_k1ec9wgctm",
94
+ "title": "Speakers",
95
+ "slug": "speakers"
96
+ },
97
+ {
98
+ "id": "pg_wrwn9f0tjc",
99
+ "title": "Tickets",
100
+ "slug": "tickets"
101
+ },
102
+ {
103
+ "id": "pg_fc0xa2rkda",
104
+ "title": "Venue & travel",
105
+ "slug": "venue"
106
+ },
107
+ {
108
+ "id": "pg_9hjnx0n2tv",
109
+ "title": "About",
110
+ "slug": "about"
111
+ },
112
+ {
113
+ "id": "pg_w0dp3gv618",
114
+ "title": "Contact",
115
+ "slug": "contact"
116
+ }
117
+ ]
118
+ }
@@ -0,0 +1,13 @@
1
+ ---
2
+ status: published
3
+ title: Seventeen notebooks
4
+ date: 2026-09-17
5
+ author: June Okafor
6
+ excerpt: What I found when I reread every notebook I've kept since I was twelve.
7
+ image: https://images.unsplash.com/photo-1434030216411-0b793f4b4173?w=1600&q=80
8
+ imageAlt: A notebook and pen on a wooden desk
9
+ ---
10
+
11
+ Mostly lists. Some weather. One very bad poem about a bus.
12
+
13
+ And underneath it all, the same three questions, asked again and again.
@@ -0,0 +1,13 @@
1
+ ---
2
+ status: published
3
+ title: The kitchen radio
4
+ date: 2026-10-01
5
+ author: June Okafor
6
+ excerpt: My grandmother's radio only got one station. That turned out to be enough.
7
+ image: https://images.unsplash.com/photo-1582079768381-0e81b88db423?w=1600&q=80
8
+ imageAlt: A woman reading at a cafe table in low light
9
+ ---
10
+
11
+ It was tuned to the shipping forecast so long the dial rusted in place.
12
+
13
+ I've been thinking about what we lose when we can choose everything.
@@ -0,0 +1,13 @@
1
+ ---
2
+ status: published
3
+ title: On walking the same mile for a year
4
+ date: 2026-10-15
5
+ author: June Okafor
6
+ excerpt: Repetition isn't boring if you let the mile change you instead of the other way round.
7
+ image: https://images.unsplash.com/photo-1494809610410-160faaed4de0?w=1600&q=80
8
+ imageAlt: A reader browsing tall library shelves
9
+ ---
10
+
11
+ By March I knew which heron would be on which post. By June I knew the heron knew me.
12
+
13
+ This is an essay about the strange freedom of going nowhere new.
@@ -0,0 +1,21 @@
1
+ {
2
+ "kind": "blog",
3
+ "label": "Essays",
4
+ "itemLabel": "Essay",
5
+ "list": {
6
+ "layout": "list",
7
+ "pageSize": 20,
8
+ "sort": "date-desc"
9
+ },
10
+ "itemPage": {
11
+ "layout": "article",
12
+ "showDate": true,
13
+ "showAuthor": false,
14
+ "showRelated": true
15
+ },
16
+ "feed": {
17
+ "enabled": true,
18
+ "title": "Slow Light",
19
+ "description": "Essays by June Okafor."
20
+ }
21
+ }
@@ -0,0 +1,281 @@
1
+ {
2
+ "$schema": "https://schema.openspace.dev/v1/page.json",
3
+ "id": "pg_7s4s483qqy",
4
+ "title": "About",
5
+ "slug": "about",
6
+ "seo": {
7
+ "description": "June Okafor is an essayist and the author of The Mile. She writes the Slow Light newsletter from a small flat by the river in Leeds."
8
+ },
9
+ "sections": [
10
+ {
11
+ "id": "sec_g3xverz36p",
12
+ "preset": "hero/personal-intro@1",
13
+ "label": "Personal introduction",
14
+ "layout": {
15
+ "mode": "stack",
16
+ "columns": {
17
+ "d": [
18
+ 4,
19
+ 8
20
+ ],
21
+ "m": [
22
+ 12
23
+ ]
24
+ },
25
+ "order": {
26
+ "m": [
27
+ 0,
28
+ 1
29
+ ],
30
+ "t": [
31
+ 0,
32
+ 1
33
+ ]
34
+ },
35
+ "align": "center",
36
+ "gap": "2xl"
37
+ },
38
+ "style": {
39
+ "colorTheme": "light",
40
+ "padding": {
41
+ "d": "xl",
42
+ "m": "lg"
43
+ }
44
+ },
45
+ "blocks": [
46
+ {
47
+ "id": "blk_s7z7kcwcyt",
48
+ "type": "image",
49
+ "v": 1,
50
+ "fields": {
51
+ "image": {
52
+ "src": "https://images.unsplash.com/photo-1667053508464-eb11b394df83?w=840&q=80",
53
+ "alt": "June Okafor",
54
+ "width": 840,
55
+ "height": 1050
56
+ },
57
+ "aspect": "1:1",
58
+ "lightbox": false
59
+ },
60
+ "column": 0,
61
+ "variant": "default",
62
+ "style": {
63
+ "imageTreatment": "circle"
64
+ }
65
+ },
66
+ {
67
+ "id": "blk_tnyhjzvyyr",
68
+ "type": "heading",
69
+ "v": 1,
70
+ "fields": {
71
+ "text": "I'm June. I write slowly.",
72
+ "level": "h1",
73
+ "size": "h1",
74
+ "eyebrow": "About",
75
+ "subheading": "Essayist, walker and reluctant gardener. My newsletter, Slow Light, has gone out every other Thursday since 2020."
76
+ },
77
+ "column": 1,
78
+ "variant": "plain"
79
+ },
80
+ {
81
+ "id": "blk_a8m9q4rfhs",
82
+ "type": "button",
83
+ "v": 1,
84
+ "fields": {
85
+ "label": "Read the essays",
86
+ "link": {
87
+ "type": "url",
88
+ "url": "/essays/"
89
+ },
90
+ "role": "primary",
91
+ "secondaryLabel": "Say hello",
92
+ "secondaryLink": {
93
+ "type": "page",
94
+ "page": "pg_4vcke76yez"
95
+ }
96
+ },
97
+ "column": 1,
98
+ "variant": "default"
99
+ }
100
+ ]
101
+ },
102
+ {
103
+ "id": "sec_n054z28b8j",
104
+ "preset": "about/founder-letter@1",
105
+ "label": "Letter from the founder",
106
+ "layout": {
107
+ "mode": "stack",
108
+ "columns": {
109
+ "d": [
110
+ 12
111
+ ]
112
+ },
113
+ "width": "narrow",
114
+ "gap": "lg"
115
+ },
116
+ "style": {
117
+ "colorTheme": "light"
118
+ },
119
+ "blocks": [
120
+ {
121
+ "id": "blk_p0h6xhe3cn",
122
+ "type": "heading",
123
+ "v": 1,
124
+ "fields": {
125
+ "text": "A short note on Slow Light",
126
+ "level": "h2",
127
+ "size": "auto",
128
+ "eyebrow": "Why I write"
129
+ },
130
+ "variant": "plain"
131
+ },
132
+ {
133
+ "id": "blk_n742rj0zvc",
134
+ "type": "text",
135
+ "v": 1,
136
+ "fields": {
137
+ "content": {
138
+ "type": "doc",
139
+ "content": [
140
+ {
141
+ "type": "paragraph",
142
+ "content": [
143
+ {
144
+ "type": "text",
145
+ "text": "I started the newsletter during a long winter when I couldn't go far, so I wrote about what was near: the river, the allotment, the man who feeds the swans."
146
+ }
147
+ ]
148
+ },
149
+ {
150
+ "type": "paragraph",
151
+ "content": [
152
+ {
153
+ "type": "text",
154
+ "text": "It turned out a lot of people wanted to read about small things carefully observed. Thank you for being one of them."
155
+ }
156
+ ]
157
+ },
158
+ {
159
+ "type": "paragraph",
160
+ "content": [
161
+ {
162
+ "type": "text",
163
+ "text": "Slow Light is free and always will be. If you'd like to support it, buy a book from your local shop."
164
+ }
165
+ ]
166
+ },
167
+ {
168
+ "type": "paragraph",
169
+ "attrs": {
170
+ "preset": "small"
171
+ },
172
+ "content": [
173
+ {
174
+ "type": "text",
175
+ "text": "— June"
176
+ }
177
+ ]
178
+ }
179
+ ]
180
+ }
181
+ },
182
+ "variant": "drop-cap"
183
+ }
184
+ ]
185
+ },
186
+ {
187
+ "id": "sec_td9a111t9p",
188
+ "preset": "about/recognition@1",
189
+ "label": "Awards and recognition",
190
+ "layout": {
191
+ "mode": "stack",
192
+ "columns": {
193
+ "d": [
194
+ 5,
195
+ 7
196
+ ],
197
+ "m": [
198
+ 12
199
+ ]
200
+ },
201
+ "gap": "2xl"
202
+ },
203
+ "style": {
204
+ "colorTheme": "light-accent"
205
+ },
206
+ "blocks": [
207
+ {
208
+ "id": "blk_xwhrfny7qf",
209
+ "type": "heading",
210
+ "v": 1,
211
+ "fields": {
212
+ "text": "Prizes and publications",
213
+ "level": "h2",
214
+ "size": "auto",
215
+ "eyebrow": "Recognition"
216
+ },
217
+ "column": 0,
218
+ "variant": "plain"
219
+ },
220
+ {
221
+ "id": "blk_2gpnmvh2p6",
222
+ "type": "text",
223
+ "v": 1,
224
+ "fields": {
225
+ "content": {
226
+ "type": "doc",
227
+ "content": [
228
+ {
229
+ "type": "paragraph",
230
+ "content": [
231
+ {
232
+ "type": "text",
233
+ "text": "A few of the places my writing has found a home."
234
+ }
235
+ ]
236
+ }
237
+ ]
238
+ }
239
+ },
240
+ "column": 0,
241
+ "variant": "default"
242
+ },
243
+ {
244
+ "id": "blk_nhyrv5rs1w",
245
+ "type": "icon-list",
246
+ "v": 1,
247
+ "fields": {
248
+ "items": [
249
+ {
250
+ "icon": "award",
251
+ "title": "Nature Writing Prize, shortlist 2025",
252
+ "text": "For the essay Swan Season."
253
+ },
254
+ {
255
+ "icon": "book-open",
256
+ "title": "The Mile",
257
+ "text": "Saltmarsh Press, March 2027."
258
+ },
259
+ {
260
+ "icon": "feather",
261
+ "title": "Essays in print",
262
+ "text": "Field & Atlas, The Evening Ledger, Northern Review."
263
+ }
264
+ ],
265
+ "columns": "1"
266
+ },
267
+ "column": 1,
268
+ "variant": "list",
269
+ "style": {
270
+ "colorTheme": "light",
271
+ "padding": {
272
+ "d": "lg",
273
+ "m": "md"
274
+ },
275
+ "radius": "md"
276
+ }
277
+ }
278
+ ]
279
+ }
280
+ ]
281
+ }