@geekity/cms 0.17.0 → 0.19.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 (297) hide show
  1. package/README.md +163 -50
  2. package/admin/components/public-admin-bar.njk +3 -1
  3. package/admin/pages/documents/editor.njk +286 -158
  4. package/admin/pages/documents/list.njk +2 -0
  5. package/admin/pages/indieauth/consent.njk +4 -0
  6. package/admin/pages/settings/privacy.njk +37 -0
  7. package/admin/pages/users/apps.njk +109 -3
  8. package/admin/static/admin.css +37 -14
  9. package/dist/admin/documents.d.ts +34 -4
  10. package/dist/admin/documents.d.ts.map +1 -1
  11. package/dist/admin/documents.js +161 -23
  12. package/dist/admin/documents.js.map +1 -1
  13. package/dist/admin/editor-layout.d.ts +13 -0
  14. package/dist/admin/editor-layout.d.ts.map +1 -0
  15. package/dist/admin/editor-layout.js +61 -0
  16. package/dist/admin/editor-layout.js.map +1 -0
  17. package/dist/admin/enclosure-field.d.ts +2 -3
  18. package/dist/admin/enclosure-field.d.ts.map +1 -1
  19. package/dist/admin/enclosure-field.js +27 -7
  20. package/dist/admin/enclosure-field.js.map +1 -1
  21. package/dist/admin/index.d.ts +1 -0
  22. package/dist/admin/index.d.ts.map +1 -1
  23. package/dist/admin/index.js +1 -0
  24. package/dist/admin/index.js.map +1 -1
  25. package/dist/admin/location-field.d.ts +27 -0
  26. package/dist/admin/location-field.d.ts.map +1 -0
  27. package/dist/admin/location-field.js +98 -0
  28. package/dist/admin/location-field.js.map +1 -0
  29. package/dist/admin/menu.d.ts.map +1 -1
  30. package/dist/admin/menu.js +1 -0
  31. package/dist/admin/menu.js.map +1 -1
  32. package/dist/admin/photo-field.d.ts +2 -3
  33. package/dist/admin/photo-field.d.ts.map +1 -1
  34. package/dist/admin/photo-field.js +4 -2
  35. package/dist/admin/photo-field.js.map +1 -1
  36. package/dist/admin/preview.d.ts.map +1 -1
  37. package/dist/admin/preview.js +18 -5
  38. package/dist/admin/preview.js.map +1 -1
  39. package/dist/admin/read-field.d.ts +22 -0
  40. package/dist/admin/read-field.d.ts.map +1 -0
  41. package/dist/admin/read-field.js +61 -0
  42. package/dist/admin/read-field.js.map +1 -0
  43. package/dist/admin/settings-page.d.ts +3 -3
  44. package/dist/admin/settings-page.js +2 -2
  45. package/dist/admin/settings-pages.d.ts +2 -2
  46. package/dist/admin/settings-pages.d.ts.map +1 -1
  47. package/dist/admin/settings-pages.js +4 -2
  48. package/dist/admin/settings-pages.js.map +1 -1
  49. package/dist/admin/settings-privacy.d.ts +3 -0
  50. package/dist/admin/settings-privacy.d.ts.map +1 -0
  51. package/dist/admin/settings-privacy.js +10 -0
  52. package/dist/admin/settings-privacy.js.map +1 -0
  53. package/dist/admin/settings-reading.js +2 -2
  54. package/dist/admin/settings-reading.js.map +1 -1
  55. package/dist/admin/settings.d.ts +18 -2
  56. package/dist/admin/settings.d.ts.map +1 -1
  57. package/dist/admin/settings.js +27 -0
  58. package/dist/admin/settings.js.map +1 -1
  59. package/dist/admin/templates.d.ts +1 -0
  60. package/dist/admin/templates.d.ts.map +1 -1
  61. package/dist/admin/templates.js +1 -0
  62. package/dist/admin/templates.js.map +1 -1
  63. package/dist/admin/uploads.d.ts.map +1 -1
  64. package/dist/admin/uploads.js +14 -1
  65. package/dist/admin/uploads.js.map +1 -1
  66. package/dist/cli.d.ts +1 -1
  67. package/dist/cli.d.ts.map +1 -1
  68. package/dist/cli.js +34 -0
  69. package/dist/cli.js.map +1 -1
  70. package/dist/comments/routes.js +2 -2
  71. package/dist/comments/routes.js.map +1 -1
  72. package/dist/contact/routes.js +2 -2
  73. package/dist/contact/routes.js.map +1 -1
  74. package/dist/content/kept-properties.d.ts +5 -0
  75. package/dist/content/kept-properties.d.ts.map +1 -0
  76. package/dist/content/kept-properties.js +12 -0
  77. package/dist/content/kept-properties.js.map +1 -0
  78. package/dist/content/location.d.ts +62 -0
  79. package/dist/content/location.d.ts.map +1 -0
  80. package/dist/content/location.js +240 -0
  81. package/dist/content/location.js.map +1 -0
  82. package/dist/content/locations.d.ts +6 -0
  83. package/dist/content/locations.d.ts.map +1 -0
  84. package/dist/content/locations.js +7 -0
  85. package/dist/content/locations.js.map +1 -0
  86. package/dist/content/metadata/gif.d.ts +3 -0
  87. package/dist/content/metadata/gif.d.ts.map +1 -0
  88. package/dist/content/metadata/gif.js +65 -0
  89. package/dist/content/metadata/gif.js.map +1 -0
  90. package/dist/content/metadata/index.d.ts +6 -0
  91. package/dist/content/metadata/index.d.ts.map +1 -0
  92. package/dist/content/metadata/index.js +24 -0
  93. package/dist/content/metadata/index.js.map +1 -0
  94. package/dist/content/metadata/isobmff.d.ts +22 -0
  95. package/dist/content/metadata/isobmff.d.ts.map +1 -0
  96. package/dist/content/metadata/isobmff.js +215 -0
  97. package/dist/content/metadata/isobmff.js.map +1 -0
  98. package/dist/content/metadata/jpeg.d.ts +3 -0
  99. package/dist/content/metadata/jpeg.d.ts.map +1 -0
  100. package/dist/content/metadata/jpeg.js +117 -0
  101. package/dist/content/metadata/jpeg.js.map +1 -0
  102. package/dist/content/metadata/png.d.ts +3 -0
  103. package/dist/content/metadata/png.d.ts.map +1 -0
  104. package/dist/content/metadata/png.js +74 -0
  105. package/dist/content/metadata/png.js.map +1 -0
  106. package/dist/content/metadata/shared.d.ts +17 -0
  107. package/dist/content/metadata/shared.d.ts.map +1 -0
  108. package/dist/content/metadata/shared.js +42 -0
  109. package/dist/content/metadata/shared.js.map +1 -0
  110. package/dist/content/metadata/sweep.d.ts +14 -0
  111. package/dist/content/metadata/sweep.d.ts.map +1 -0
  112. package/dist/content/metadata/sweep.js +54 -0
  113. package/dist/content/metadata/sweep.js.map +1 -0
  114. package/dist/content/metadata/tiff.d.ts +7 -0
  115. package/dist/content/metadata/tiff.d.ts.map +1 -0
  116. package/dist/content/metadata/tiff.js +56 -0
  117. package/dist/content/metadata/tiff.js.map +1 -0
  118. package/dist/content/metadata/webp.d.ts +3 -0
  119. package/dist/content/metadata/webp.d.ts.map +1 -0
  120. package/dist/content/metadata/webp.js +67 -0
  121. package/dist/content/metadata/webp.js.map +1 -0
  122. package/dist/content/permalink-file.d.ts +7 -0
  123. package/dist/content/permalink-file.d.ts.map +1 -0
  124. package/dist/content/permalink-file.js +77 -0
  125. package/dist/content/permalink-file.js.map +1 -0
  126. package/dist/content/post-type.d.ts +4 -2
  127. package/dist/content/post-type.d.ts.map +1 -1
  128. package/dist/content/post-type.js +9 -1
  129. package/dist/content/post-type.js.map +1 -1
  130. package/dist/content/read.d.ts +22 -0
  131. package/dist/content/read.d.ts.map +1 -0
  132. package/dist/content/read.js +67 -0
  133. package/dist/content/read.js.map +1 -0
  134. package/dist/content/store.d.ts +4 -4
  135. package/dist/content/store.d.ts.map +1 -1
  136. package/dist/content/store.js +19 -39
  137. package/dist/content/store.js.map +1 -1
  138. package/dist/content/sync.d.ts.map +1 -1
  139. package/dist/content/sync.js +3 -13
  140. package/dist/content/sync.js.map +1 -1
  141. package/dist/content/visibility.d.ts +11 -0
  142. package/dist/content/visibility.d.ts.map +1 -0
  143. package/dist/content/visibility.js +14 -0
  144. package/dist/content/visibility.js.map +1 -0
  145. package/dist/federation/article.d.ts +4 -3
  146. package/dist/federation/article.d.ts.map +1 -1
  147. package/dist/federation/article.js +66 -20
  148. package/dist/federation/article.js.map +1 -1
  149. package/dist/federation/citations.d.ts +7 -6
  150. package/dist/federation/citations.d.ts.map +1 -1
  151. package/dist/federation/citations.js +44 -28
  152. package/dist/federation/citations.js.map +1 -1
  153. package/dist/federation/delivery.d.ts +3 -1
  154. package/dist/federation/delivery.d.ts.map +1 -1
  155. package/dist/federation/delivery.js +29 -21
  156. package/dist/federation/delivery.js.map +1 -1
  157. package/dist/federation/mount.d.ts.map +1 -1
  158. package/dist/federation/mount.js +3 -1
  159. package/dist/federation/mount.js.map +1 -1
  160. package/dist/index.d.ts +6 -5
  161. package/dist/index.d.ts.map +1 -1
  162. package/dist/index.js +5 -1
  163. package/dist/index.js.map +1 -1
  164. package/dist/indexnow.js +2 -2
  165. package/dist/indexnow.js.map +1 -1
  166. package/dist/indieauth/activity-log.d.ts +2 -0
  167. package/dist/indieauth/activity-log.d.ts.map +1 -1
  168. package/dist/indieauth/activity-log.js +12 -2
  169. package/dist/indieauth/activity-log.js.map +1 -1
  170. package/dist/indieauth/app-activity.js +5 -1
  171. package/dist/indieauth/app-activity.js.map +1 -1
  172. package/dist/indieauth/bearer.d.ts +10 -6
  173. package/dist/indieauth/bearer.d.ts.map +1 -1
  174. package/dist/indieauth/bearer.js +28 -25
  175. package/dist/indieauth/bearer.js.map +1 -1
  176. package/dist/indieauth/client-id.d.ts +10 -0
  177. package/dist/indieauth/client-id.d.ts.map +1 -0
  178. package/dist/indieauth/client-id.js +30 -0
  179. package/dist/indieauth/client-id.js.map +1 -0
  180. package/dist/indieauth/connected-apps.d.ts +4 -0
  181. package/dist/indieauth/connected-apps.d.ts.map +1 -1
  182. package/dist/indieauth/connected-apps.js +149 -20
  183. package/dist/indieauth/connected-apps.js.map +1 -1
  184. package/dist/indieauth/consent.d.ts.map +1 -1
  185. package/dist/indieauth/consent.js +5 -1
  186. package/dist/indieauth/consent.js.map +1 -1
  187. package/dist/indieauth/grants.d.ts +2 -7
  188. package/dist/indieauth/grants.d.ts.map +1 -1
  189. package/dist/indieauth/grants.js.map +1 -1
  190. package/dist/indieauth/redeem.d.ts.map +1 -1
  191. package/dist/indieauth/redeem.js +10 -5
  192. package/dist/indieauth/redeem.js.map +1 -1
  193. package/dist/indieauth/request.d.ts +8 -4
  194. package/dist/indieauth/request.d.ts.map +1 -1
  195. package/dist/indieauth/request.js +29 -30
  196. package/dist/indieauth/request.js.map +1 -1
  197. package/dist/indieauth/token.js +2 -2
  198. package/dist/indieauth/token.js.map +1 -1
  199. package/dist/indieauth/tokens.d.ts +28 -7
  200. package/dist/indieauth/tokens.d.ts.map +1 -1
  201. package/dist/indieauth/tokens.js +26 -5
  202. package/dist/indieauth/tokens.js.map +1 -1
  203. package/dist/micropub/create.d.ts +26 -0
  204. package/dist/micropub/create.d.ts.map +1 -1
  205. package/dist/micropub/create.js +158 -13
  206. package/dist/micropub/create.js.map +1 -1
  207. package/dist/micropub/endpoint.d.ts +4 -5
  208. package/dist/micropub/endpoint.d.ts.map +1 -1
  209. package/dist/micropub/endpoint.js +83 -25
  210. package/dist/micropub/endpoint.js.map +1 -1
  211. package/dist/micropub/media.d.ts +6 -2
  212. package/dist/micropub/media.d.ts.map +1 -1
  213. package/dist/micropub/media.js +43 -37
  214. package/dist/micropub/media.js.map +1 -1
  215. package/dist/micropub/update.d.ts +13 -3
  216. package/dist/micropub/update.d.ts.map +1 -1
  217. package/dist/micropub/update.js +60 -7
  218. package/dist/micropub/update.js.map +1 -1
  219. package/dist/notify.d.ts.map +1 -1
  220. package/dist/notify.js +2 -5
  221. package/dist/notify.js.map +1 -1
  222. package/dist/web/absolute-urls.d.ts +2 -0
  223. package/dist/web/absolute-urls.d.ts.map +1 -0
  224. package/dist/web/absolute-urls.js +22 -0
  225. package/dist/web/absolute-urls.js.map +1 -0
  226. package/dist/web/admin-bar.d.ts.map +1 -1
  227. package/dist/web/admin-bar.js +25 -0
  228. package/dist/web/admin-bar.js.map +1 -1
  229. package/dist/web/context.d.ts +29 -1
  230. package/dist/web/context.d.ts.map +1 -1
  231. package/dist/web/context.js +33 -0
  232. package/dist/web/context.js.map +1 -1
  233. package/dist/web/conversation.d.ts.map +1 -1
  234. package/dist/web/conversation.js +5 -4
  235. package/dist/web/conversation.js.map +1 -1
  236. package/dist/web/documents.d.ts +34 -10
  237. package/dist/web/documents.d.ts.map +1 -1
  238. package/dist/web/documents.js +41 -15
  239. package/dist/web/documents.js.map +1 -1
  240. package/dist/web/feed-item.d.ts +25 -6
  241. package/dist/web/feed-item.d.ts.map +1 -1
  242. package/dist/web/feed-item.js +31 -7
  243. package/dist/web/feed-item.js.map +1 -1
  244. package/dist/web/feed-json.d.ts +3 -1
  245. package/dist/web/feed-json.d.ts.map +1 -1
  246. package/dist/web/feed-json.js +2 -0
  247. package/dist/web/feed-json.js.map +1 -1
  248. package/dist/web/feed-source.d.ts +6 -0
  249. package/dist/web/feed-source.d.ts.map +1 -1
  250. package/dist/web/feed-source.js.map +1 -1
  251. package/dist/web/feeds.d.ts.map +1 -1
  252. package/dist/web/feeds.js +2 -0
  253. package/dist/web/feeds.js.map +1 -1
  254. package/dist/web/html-attributes.d.ts +3 -0
  255. package/dist/web/html-attributes.d.ts.map +1 -0
  256. package/dist/web/html-attributes.js +15 -0
  257. package/dist/web/html-attributes.js.map +1 -0
  258. package/dist/web/index.d.ts +1 -1
  259. package/dist/web/index.d.ts.map +1 -1
  260. package/dist/web/index.js +1 -1
  261. package/dist/web/index.js.map +1 -1
  262. package/dist/web/negotiate.d.ts +2 -0
  263. package/dist/web/negotiate.d.ts.map +1 -1
  264. package/dist/web/negotiate.js +2 -1
  265. package/dist/web/negotiate.js.map +1 -1
  266. package/dist/web/render.d.ts +13 -4
  267. package/dist/web/render.d.ts.map +1 -1
  268. package/dist/web/render.js +25 -12
  269. package/dist/web/render.js.map +1 -1
  270. package/dist/web/routes.d.ts.map +1 -1
  271. package/dist/web/routes.js +26 -11
  272. package/dist/web/routes.js.map +1 -1
  273. package/dist/webmention/fetch-public.d.ts +3 -1
  274. package/dist/webmention/fetch-public.d.ts.map +1 -1
  275. package/dist/webmention/fetch-public.js +17 -11
  276. package/dist/webmention/fetch-public.js.map +1 -1
  277. package/dist/webmention/reply-context.d.ts +18 -5
  278. package/dist/webmention/reply-context.d.ts.map +1 -1
  279. package/dist/webmention/reply-context.js +118 -19
  280. package/dist/webmention/reply-context.js.map +1 -1
  281. package/dist/webmention/reply-contexts.d.ts +17 -14
  282. package/dist/webmention/reply-contexts.d.ts.map +1 -1
  283. package/dist/webmention/reply-contexts.js +32 -21
  284. package/dist/webmention/reply-contexts.js.map +1 -1
  285. package/dist/webmention/service.d.ts.map +1 -1
  286. package/dist/webmention/service.js +7 -2
  287. package/dist/webmention/service.js.map +1 -1
  288. package/package.json +9 -9
  289. package/themes/default/README.md +45 -7
  290. package/themes/default/layouts/base.njk +2 -0
  291. package/themes/default/layouts/post.njk +12 -7
  292. package/themes/default/partials/citations.njk +12 -3
  293. package/themes/default/partials/cited-page.njk +41 -0
  294. package/themes/default/partials/location.njk +12 -0
  295. package/themes/default/partials/post-list.njk +10 -5
  296. package/themes/default/partials/read.njk +5 -0
  297. package/themes/default/partials/reply-context.njk +2 -9
@@ -3,6 +3,7 @@
3
3
  Only your own connections, each with a Revoke button that names the app,
4
4
  so a screen reader moving between buttons hears which one it is on. #}
5
5
  {% extends "layouts/shell.njk" %}
6
+ {% import "components/fields.njk" as field %}
6
7
 
7
8
  {% block title %}Connected apps{% endblock %}
8
9
 
@@ -13,8 +14,9 @@
13
14
  <p class="admin-hint">
14
15
  These apps signed in as you and can act as you, within the permissions
15
16
  listed. An app that keeps using its connection stays connected; one left
16
- unused is disconnected on the date shown. Revoking disconnects it now:
17
- its next request is refused, and it has to ask you again.
17
+ unused is disconnected on the date shown. A token you created works
18
+ until the date shown. Revoking disconnects it now: its next request is
19
+ refused, and it has to ask you again.
18
20
  </p>
19
21
 
20
22
  <table class="admin-list">
@@ -32,7 +34,13 @@
32
34
  <tbody>
33
35
  {% for connection in connections %}
34
36
  <tr>
35
- <td><a href="{{ connection.url }}">{{ connection.name }}</a></td>
37
+ <td>
38
+ {% if connection.url %}
39
+ <a href="{{ connection.url }}">{{ connection.name }}</a>
40
+ {% else %}
41
+ {{ connection.name }} <span class="admin-status">Token you created</span>
42
+ {% endif %}
43
+ </td>
36
44
  <td>
37
45
  <ul>
38
46
  {% for scope in connection.scopes %}
@@ -71,4 +79,102 @@
71
79
  is listed here, with a button to disconnect it.
72
80
  </p>
73
81
  {% endif %}
82
+
83
+ <h2 id="create-token">Create a token</h2>
84
+
85
+ {% if createToken.created %}
86
+ <div class="admin-flash" role="status">
87
+ {{ field.text('created-token', 'created-token', 'Token for ' ~ createToken.created.name, createToken.created.token,
88
+ readonly=true, spellcheck='false',
89
+ hint='Copy it now. It will not be shown again: the site keeps only a fingerprint of it.') }}
90
+ </div>
91
+ {% endif %}
92
+
93
+ {% if createToken.problems.name or createToken.problems.scopes or createToken.problems.expires %}
94
+ {% call field.summary('Nothing was saved. Fix the fields marked below and try again.') %}
95
+ {{ field.problem('create-token-name', createToken.problems.name) }}
96
+ {{ field.problem('create-token-scope-profile', createToken.problems.scopes) }}
97
+ {{ field.problem('create-token-expires', createToken.problems.expires) }}
98
+ {% endcall %}
99
+ {% endif %}
100
+
101
+ <p class="admin-hint">
102
+ Some tools and scripts cannot sign in, but accept a token you paste in,
103
+ such as the Manual tab of micropub.rocks. A token acts as you on this
104
+ site's Micropub endpoint, with only the permissions you tick, until it
105
+ expires or you revoke it above.
106
+ </p>
107
+
108
+ <form method="post" action="{{ createToken.url }}">
109
+ <input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
110
+ {{ field.text('create-token-name', 'name', 'Name', createToken.name,
111
+ error=createToken.problems.name, required=true,
112
+ hint='What will use it, such as Publishing script.') }}
113
+ <fieldset>
114
+ <legend>It may</legend>
115
+ {% for scope in createToken.scopes %}
116
+ {{ field.checkbox('create-token-scope-' ~ scope.name, 'scope', scope.label, checked=scope.checked, value=scope.name,
117
+ error=(createToken.problems.scopes if loop.first else '')) }}
118
+ {% endfor %}
119
+ </fieldset>
120
+ {% call field.select('create-token-expires', 'expires', 'Expires after', error=createToken.problems.expires) %}
121
+ {% for expiry in createToken.expiries %}
122
+ <option value="{{ expiry.days }}"{% if expiry.selected %} selected{% endif %}>{% if expiry.days == 365 %}1 year{% else %}{{ expiry.days }} days{% endif %}</option>
123
+ {% endfor %}
124
+ {% endcall %}
125
+ <button type="submit">Create token</button>
126
+ </form>
127
+
128
+ <h2 id="without-pkce">Apps allowed without PKCE</h2>
129
+
130
+ {% if withoutPkce.problem %}
131
+ {% call field.summary('Nothing was saved. Fix the field marked below and try again.') %}
132
+ {{ field.problem('without-pkce-client', withoutPkce.problem) }}
133
+ {% endcall %}
134
+ {% endif %}
135
+
136
+ <p class="admin-hint">
137
+ PKCE protects a sign-in when somebody intercepts the one-time code an app
138
+ is handed: without the secret the app kept, the code is useless. Every app
139
+ must use it, unless you list it here. List only an app you trust that
140
+ cannot sign in otherwise, such as iA Writer. A listed app is let in without
141
+ PKCE only when it sends you back to an https address on its own host, and
142
+ the consent screen tells you when it is.
143
+ </p>
144
+
145
+ {% if withoutPkce.clients | length %}
146
+ <table class="admin-list">
147
+ <caption class="admin-visually-hidden">Apps allowed without PKCE</caption>
148
+ <thead>
149
+ <tr>
150
+ <th scope="col">client_id</th>
151
+ <th scope="col">Actions</th>
152
+ </tr>
153
+ </thead>
154
+ <tbody>
155
+ {% for client in withoutPkce.clients %}
156
+ <tr>
157
+ <td><code>{{ client }}</code></td>
158
+ <td class="admin-actions">
159
+ <form method="post" action="{{ withoutPkce.removeUrl }}">
160
+ <input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
161
+ <input type="hidden" name="{{ withoutPkce.field }}" value="{{ client }}" />
162
+ <button type="submit">Remove {{ client }}</button>
163
+ </form>
164
+ </td>
165
+ </tr>
166
+ {% endfor %}
167
+ </tbody>
168
+ </table>
169
+ {% else %}
170
+ <p>No apps are listed. Every app must use PKCE to sign in.</p>
171
+ {% endif %}
172
+
173
+ <form method="post" action="{{ withoutPkce.addUrl }}">
174
+ <input type="hidden" name="csrf_token" value="{{ csrfToken }}" />
175
+ {{ field.text('without-pkce-client', withoutPkce.field, 'App&rsquo;s client_id', withoutPkce.value,
176
+ error=withoutPkce.problem, inputmode='url', spellcheck='false', required=true,
177
+ hint='The URL the app names itself by when it signs in, as App activity shows it, such as <code>https://ia.net/writer</code>.') }}
178
+ <button type="submit">Allow without PKCE</button>
179
+ </form>
74
180
  {% endblock %}
@@ -490,37 +490,60 @@ button[type='submit']:hover,
490
490
  min-height: 28rem;
491
491
  }
492
492
 
493
- .admin-editor-enclosure {
493
+ .admin-editor-group {
494
494
  margin: 1.25rem 0 0;
495
- padding: 0.75rem 1rem 1rem;
496
495
  border: 1px solid var(--admin-border);
497
496
  }
498
497
 
499
- .admin-editor-syndication {
500
- margin: 1.25rem 0 0;
501
- padding: 0.75rem 1rem 1rem;
502
- border: 1px solid var(--admin-border);
498
+ .admin-editor-side > .admin-editor-group:first-child {
499
+ margin-top: 0;
503
500
  }
504
501
 
505
- .admin-editor-enclosure-heading {
506
- margin: 1.25rem 0 0;
507
- font-size: 1em;
502
+ .admin-editor-group > summary {
503
+ padding: 0.5rem 0.75rem;
504
+ font-weight: 600;
505
+ cursor: pointer;
508
506
  }
509
507
 
510
- .admin-editor-alternate {
508
+ .admin-editor-group > summary:focus-visible {
509
+ outline: 2px solid var(--admin-link);
510
+ outline-offset: 2px;
511
+ }
512
+
513
+ .admin-editor-group > fieldset {
514
+ min-width: 0;
515
+ margin: 0;
516
+ padding: 0 0.75rem 0.75rem;
517
+ border: 0;
518
+ }
519
+
520
+ .admin-editor-group > fieldset > label:first-of-type {
521
+ margin-top: 0.25rem;
522
+ }
523
+
524
+ .admin-editor-row {
525
+ margin-top: 0.75rem;
526
+ }
527
+
528
+ .admin-editor-row > fieldset {
511
529
  display: grid;
512
530
  grid-template-columns: max-content minmax(0, 1fr);
513
531
  gap: 0.4rem 0.75rem;
514
532
  align-items: center;
515
- margin: 0.75rem 0 0;
516
- padding: 0.5rem 0.75rem 0.75rem;
517
- border: 1px solid var(--admin-border);
518
533
  }
519
534
 
520
- .admin-editor-alternate label {
535
+ .admin-editor-row > fieldset > label:first-of-type {
536
+ margin-top: 0;
537
+ }
538
+
539
+ .admin-editor-row label {
521
540
  margin: 0;
522
541
  }
523
542
 
543
+ .admin-editor-row .admin-field-error {
544
+ grid-column: 1 / -1;
545
+ }
546
+
524
547
  .admin-hint {
525
548
  margin: 0.25rem 0 0;
526
549
  color: var(--admin-muted);
@@ -2,13 +2,19 @@ import type { Context, Hono } from 'hono';
2
2
  import type { Document, DocumentType } from '../content/document.ts';
3
3
  import type { Enclosure } from '../content/enclosure.ts';
4
4
  import type { Photo } from '../content/photo.ts';
5
+ import type { PostLocation } from '../content/location.ts';
6
+ import type { KeptProperties } from '../content/kept-properties.ts';
5
7
  import type { ContentStore, ListAllOptions } from '../content/store.ts';
8
+ import type { StoredVisibility } from '../content/visibility.ts';
6
9
  import type { ResolvedConfig } from '../config.ts';
7
10
  import type { DocumentChange } from '../content/sync.ts';
8
11
  import type { GeekityEnv } from '../env.ts';
9
12
  import type { UndescribedImage } from '../images/alt-text.ts';
10
13
  import type { EnclosureForm } from './enclosure-field.ts';
14
+ import type { Refusal } from './editor-layout.ts';
15
+ import type { LocationForm } from './location-field.ts';
11
16
  import type { PhotoRow } from './photo-field.ts';
17
+ import type { ReadOfForm } from './read-field.ts';
12
18
  /**
13
19
  * Everything that differs between the posts screens and the pages screens.
14
20
  *
@@ -129,6 +135,7 @@ export interface DocumentWrite {
129
135
  readonly form: EditorForm;
130
136
  /** Whether it is saved as a draft, which the editor's buttons decide. */
131
137
  readonly draft: boolean;
138
+ readonly keptProperties?: KeptProperties | undefined;
132
139
  }
133
140
  /** What came of a {@link writeDocument}. */
134
141
  export type WriteOutcome = {
@@ -136,10 +143,9 @@ export type WriteOutcome = {
136
143
  readonly saved: Document;
137
144
  /** Images published without alt text, which the editor warns about. */
138
145
  readonly undescribed: readonly UndescribedImage[];
139
- } | {
146
+ } | ({
140
147
  readonly outcome: 'refused';
141
- readonly message: string;
142
- } | {
148
+ } & Refusal) | {
143
149
  readonly outcome: 'conflict';
144
150
  /** The document as the form loaded it, which only an edit has. */
145
151
  readonly document: Document;
@@ -258,9 +264,21 @@ export interface EditorForm {
258
264
  likeOf: string;
259
265
  /** The page this one bookmarks, the mf2 `bookmark-of` (TASK-169). Posts only. */
260
266
  bookmarkOf: string;
267
+ /**
268
+ * How far the post's author got with what they read, the mf2 `read-status`
269
+ * (TASK-229), as the file or the form spells it. Posts only.
270
+ */
271
+ readStatus: string;
272
+ /** What was read, the mf2 `read-of` (TASK-229). Posts only. */
273
+ readOf: ReadOfForm;
261
274
  /** The language it is written in, the `lang` key; empty for the site's. */
262
275
  lang: string;
263
276
  draft: boolean;
277
+ /**
278
+ * Whether the document is listed or only served at its URL (TASK-227), or a
279
+ * value the site does not recognize, which hides it until one is chosen.
280
+ */
281
+ visibility: StoredVisibility;
264
282
  /** Whether `eleventyExcludeFromCollections` is set. Pages only. */
265
283
  exclude: boolean;
266
284
  /** Whether the page offers a contact form. Pages only. */
@@ -280,6 +298,12 @@ export interface EditorForm {
280
298
  enclosure: EnclosureForm;
281
299
  /** The post's photos (TASK-166), without the blank row the editor adds. Posts only. */
282
300
  photos: PhotoRow[];
301
+ /**
302
+ * Where the post was written (TASK-223). Posts only; blank on a page. It is
303
+ * the one field that is not written into the file: the save puts it in
304
+ * `data/locations.json` under the post's permalink (decision-29).
305
+ */
306
+ location: LocationForm;
283
307
  /** The ids of the declared syndication targets it selects (TASK-155). Posts only. */
284
308
  syndicateTo: string[];
285
309
  body: string;
@@ -301,8 +325,12 @@ export declare function blankForm(kind: DocumentKind, timezone?: string, now?: D
301
325
  * {@link wallClockIn} keeps whatever precision the instant has, so a form
302
326
  * submitted with the field untouched writes back the very instant it was
303
327
  * filled in from.
328
+ *
329
+ * `location` is what `data/locations.json` holds for the post (decision-29),
330
+ * which a document does not carry. It is required because a form loaded
331
+ * without it would remove the stored location on save.
304
332
  */
305
- export declare function formFor(document: Document, timezone?: string): EditorForm;
333
+ export declare function formFor(document: Document, timezone: string, location: PostLocation | undefined): EditorForm;
306
334
  /**
307
335
  * The document of this kind with this slug.
308
336
  *
@@ -327,6 +355,8 @@ export interface DocumentRow {
327
355
  trashed: boolean;
328
356
  /** Whether its date has not arrived, so the public site is holding it back. */
329
357
  scheduled: boolean;
358
+ /** Whether its `visibility` is one the site does not recognize, so it is not served. */
359
+ hidden: boolean;
330
360
  /** Where the editor for it lives. */
331
361
  editUrl: string;
332
362
  /** Its public URL, or `undefined` when the public site would not serve it. */
@@ -1 +1 @@
1
- {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/admin/documents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/admin/documents.ts"],"names":[],"mappings":"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"}