@geekity/cms 0.3.0 → 0.4.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 (637) hide show
  1. package/README.md +2091 -214
  2. package/admin/components/fields.njk +165 -0
  3. package/admin/layouts/base.njk +1 -1
  4. package/admin/layouts/settings-page.njk +26 -0
  5. package/admin/layouts/shell.njk +17 -3
  6. package/admin/pages/account/forgot.njk +47 -0
  7. package/admin/pages/account/login.njk +26 -0
  8. package/admin/pages/account/reset.njk +38 -0
  9. package/admin/pages/account/setup.njk +28 -0
  10. package/admin/pages/appearance/themes.njk +69 -0
  11. package/admin/pages/comments/all.njk +133 -0
  12. package/admin/{layouts/dashboard.njk → pages/dashboard/home.njk} +8 -15
  13. package/admin/{layouts/document-conflict.njk → pages/documents/conflict.njk} +1 -0
  14. package/admin/pages/documents/editor.njk +196 -0
  15. package/admin/{layouts/document-list.njk → pages/documents/list.njk} +19 -2
  16. package/admin/pages/documents/taxonomy.njk +95 -0
  17. package/admin/pages/federation/followers.njk +238 -0
  18. package/admin/pages/media/library.njk +160 -0
  19. package/admin/pages/messages/all.njk +110 -0
  20. package/admin/{layouts → pages}/placeholder.njk +5 -1
  21. package/admin/pages/settings/discussion.njk +99 -0
  22. package/admin/pages/settings/email.njk +203 -0
  23. package/admin/pages/settings/federation.njk +75 -0
  24. package/admin/pages/settings/general.njk +29 -0
  25. package/admin/pages/settings/permalinks.njk +50 -0
  26. package/admin/pages/settings/reading.njk +72 -0
  27. package/admin/pages/users/edit.njk +239 -0
  28. package/admin/pages/users/list.njk +48 -0
  29. package/admin/pages/users/new.njk +41 -0
  30. package/admin/static/admin.css +498 -3
  31. package/admin/static/copy.js +52 -0
  32. package/admin/static/editor.js +16 -16
  33. package/admin/static/slug.js +61 -0
  34. package/dist/admin/accounts.d.ts +413 -0
  35. package/dist/admin/accounts.d.ts.map +1 -0
  36. package/dist/admin/accounts.js +680 -0
  37. package/dist/admin/accounts.js.map +1 -0
  38. package/dist/admin/appearance.d.ts +80 -0
  39. package/dist/admin/appearance.d.ts.map +1 -0
  40. package/dist/admin/appearance.js +136 -0
  41. package/dist/admin/appearance.js.map +1 -0
  42. package/dist/admin/comments.d.ts +90 -0
  43. package/dist/admin/comments.d.ts.map +1 -0
  44. package/dist/admin/comments.js +244 -0
  45. package/dist/admin/comments.js.map +1 -0
  46. package/dist/admin/credentials.d.ts +26 -2
  47. package/dist/admin/credentials.d.ts.map +1 -1
  48. package/dist/admin/credentials.js +35 -2
  49. package/dist/admin/credentials.js.map +1 -1
  50. package/dist/admin/documents.d.ts +127 -10
  51. package/dist/admin/documents.d.ts.map +1 -1
  52. package/dist/admin/documents.js +360 -41
  53. package/dist/admin/documents.js.map +1 -1
  54. package/dist/admin/federation.d.ts +151 -50
  55. package/dist/admin/federation.d.ts.map +1 -1
  56. package/dist/admin/federation.js +225 -93
  57. package/dist/admin/federation.js.map +1 -1
  58. package/dist/admin/formatting.d.ts +20 -0
  59. package/dist/admin/formatting.d.ts.map +1 -0
  60. package/dist/admin/formatting.js +72 -0
  61. package/dist/admin/formatting.js.map +1 -0
  62. package/dist/admin/headers.d.ts +65 -0
  63. package/dist/admin/headers.d.ts.map +1 -0
  64. package/dist/admin/headers.js +104 -0
  65. package/dist/admin/headers.js.map +1 -0
  66. package/dist/admin/index.d.ts +38 -12
  67. package/dist/admin/index.d.ts.map +1 -1
  68. package/dist/admin/index.js +25 -7
  69. package/dist/admin/index.js.map +1 -1
  70. package/dist/admin/media.d.ts +168 -0
  71. package/dist/admin/media.d.ts.map +1 -0
  72. package/dist/admin/media.js +295 -0
  73. package/dist/admin/media.js.map +1 -0
  74. package/dist/admin/menu.d.ts +79 -0
  75. package/dist/admin/menu.d.ts.map +1 -0
  76. package/dist/admin/menu.js +126 -0
  77. package/dist/admin/menu.js.map +1 -0
  78. package/dist/admin/messages.d.ts +80 -0
  79. package/dist/admin/messages.d.ts.map +1 -0
  80. package/dist/admin/messages.js +152 -0
  81. package/dist/admin/messages.js.map +1 -0
  82. package/dist/admin/preview.d.ts.map +1 -1
  83. package/dist/admin/preview.js +31 -7
  84. package/dist/admin/preview.js.map +1 -1
  85. package/dist/admin/recovery.d.ts +92 -0
  86. package/dist/admin/recovery.d.ts.map +1 -0
  87. package/dist/admin/recovery.js +229 -0
  88. package/dist/admin/recovery.js.map +1 -0
  89. package/dist/admin/routes.d.ts +0 -20
  90. package/dist/admin/routes.d.ts.map +1 -1
  91. package/dist/admin/routes.js +155 -105
  92. package/dist/admin/routes.js.map +1 -1
  93. package/dist/admin/settings-discussion.d.ts +37 -0
  94. package/dist/admin/settings-discussion.d.ts.map +1 -0
  95. package/dist/admin/settings-discussion.js +117 -0
  96. package/dist/admin/settings-discussion.js.map +1 -0
  97. package/dist/admin/settings-email.d.ts +54 -0
  98. package/dist/admin/settings-email.d.ts.map +1 -0
  99. package/dist/admin/settings-email.js +189 -0
  100. package/dist/admin/settings-email.js.map +1 -0
  101. package/dist/admin/settings-federation.d.ts +39 -0
  102. package/dist/admin/settings-federation.d.ts.map +1 -0
  103. package/dist/admin/settings-federation.js +103 -0
  104. package/dist/admin/settings-federation.js.map +1 -0
  105. package/dist/admin/settings-general.d.ts +12 -0
  106. package/dist/admin/settings-general.d.ts.map +1 -0
  107. package/dist/admin/settings-general.js +48 -0
  108. package/dist/admin/settings-general.js.map +1 -0
  109. package/dist/admin/settings-page.d.ts +102 -0
  110. package/dist/admin/settings-page.d.ts.map +1 -0
  111. package/dist/admin/settings-page.js +126 -0
  112. package/dist/admin/settings-page.js.map +1 -0
  113. package/dist/admin/settings-pages.d.ts +19 -0
  114. package/dist/admin/settings-pages.d.ts.map +1 -0
  115. package/dist/admin/settings-pages.js +33 -0
  116. package/dist/admin/settings-pages.js.map +1 -0
  117. package/dist/admin/settings-permalinks.d.ts +16 -0
  118. package/dist/admin/settings-permalinks.d.ts.map +1 -0
  119. package/dist/admin/settings-permalinks.js +32 -0
  120. package/dist/admin/settings-permalinks.js.map +1 -0
  121. package/dist/admin/settings-reading.d.ts +33 -0
  122. package/dist/admin/settings-reading.d.ts.map +1 -0
  123. package/dist/admin/settings-reading.js +48 -0
  124. package/dist/admin/settings-reading.js.map +1 -0
  125. package/dist/admin/settings.d.ts +325 -96
  126. package/dist/admin/settings.d.ts.map +1 -1
  127. package/dist/admin/settings.js +650 -308
  128. package/dist/admin/settings.js.map +1 -1
  129. package/dist/admin/store.d.ts +606 -152
  130. package/dist/admin/store.d.ts.map +1 -1
  131. package/dist/admin/store.js +863 -268
  132. package/dist/admin/store.js.map +1 -1
  133. package/dist/admin/taxonomy.d.ts +114 -0
  134. package/dist/admin/taxonomy.d.ts.map +1 -0
  135. package/dist/admin/taxonomy.js +289 -0
  136. package/dist/admin/taxonomy.js.map +1 -0
  137. package/dist/admin/templates.d.ts +44 -14
  138. package/dist/admin/templates.d.ts.map +1 -1
  139. package/dist/admin/templates.js +44 -14
  140. package/dist/admin/templates.js.map +1 -1
  141. package/dist/admin/throttle.d.ts +84 -0
  142. package/dist/admin/throttle.d.ts.map +1 -0
  143. package/dist/admin/throttle.js +143 -0
  144. package/dist/admin/throttle.js.map +1 -0
  145. package/dist/admin/uploads.d.ts +28 -2
  146. package/dist/admin/uploads.d.ts.map +1 -1
  147. package/dist/admin/uploads.js +43 -4
  148. package/dist/admin/uploads.js.map +1 -1
  149. package/dist/admin/users.d.ts +100 -13
  150. package/dist/admin/users.d.ts.map +1 -1
  151. package/dist/admin/users.js +412 -39
  152. package/dist/admin/users.js.map +1 -1
  153. package/dist/cache.d.ts +141 -0
  154. package/dist/cache.d.ts.map +1 -0
  155. package/dist/cache.js +207 -0
  156. package/dist/cache.js.map +1 -0
  157. package/dist/cli.d.ts +14 -2
  158. package/dist/cli.d.ts.map +1 -1
  159. package/dist/cli.js +424 -21
  160. package/dist/cli.js.map +1 -1
  161. package/dist/comments/akismet.d.ts +130 -0
  162. package/dist/comments/akismet.d.ts.map +1 -0
  163. package/dist/comments/akismet.js +274 -0
  164. package/dist/comments/akismet.js.map +1 -0
  165. package/dist/comments/conversation.d.ts +29 -0
  166. package/dist/comments/conversation.d.ts.map +1 -0
  167. package/dist/comments/conversation.js +60 -0
  168. package/dist/comments/conversation.js.map +1 -0
  169. package/dist/comments/form.d.ts +75 -0
  170. package/dist/comments/form.d.ts.map +1 -0
  171. package/dist/comments/form.js +64 -0
  172. package/dist/comments/form.js.map +1 -0
  173. package/dist/comments/index.d.ts +15 -0
  174. package/dist/comments/index.d.ts.map +1 -0
  175. package/dist/comments/index.js +9 -0
  176. package/dist/comments/index.js.map +1 -0
  177. package/dist/comments/markdown.d.ts +8 -0
  178. package/dist/comments/markdown.d.ts.map +1 -0
  179. package/dist/comments/markdown.js +85 -0
  180. package/dist/comments/markdown.js.map +1 -0
  181. package/dist/comments/moderate.d.ts +71 -0
  182. package/dist/comments/moderate.d.ts.map +1 -0
  183. package/dist/comments/moderate.js +88 -0
  184. package/dist/comments/moderate.js.map +1 -0
  185. package/dist/comments/policy.d.ts +57 -0
  186. package/dist/comments/policy.d.ts.map +1 -0
  187. package/dist/comments/policy.js +80 -0
  188. package/dist/comments/policy.js.map +1 -0
  189. package/dist/comments/records.d.ts +266 -0
  190. package/dist/comments/records.d.ts.map +1 -0
  191. package/dist/comments/records.js +487 -0
  192. package/dist/comments/records.js.map +1 -0
  193. package/dist/comments/routes.d.ts +58 -0
  194. package/dist/comments/routes.d.ts.map +1 -0
  195. package/dist/comments/routes.js +177 -0
  196. package/dist/comments/routes.js.map +1 -0
  197. package/dist/comments/submission.d.ts +263 -0
  198. package/dist/comments/submission.d.ts.map +1 -0
  199. package/dist/comments/submission.js +241 -0
  200. package/dist/comments/submission.js.map +1 -0
  201. package/dist/config.d.ts +190 -5
  202. package/dist/config.d.ts.map +1 -1
  203. package/dist/config.js +118 -6
  204. package/dist/config.js.map +1 -1
  205. package/dist/contact/delivery.d.ts +60 -0
  206. package/dist/contact/delivery.d.ts.map +1 -0
  207. package/dist/contact/delivery.js +87 -0
  208. package/dist/contact/delivery.js.map +1 -0
  209. package/dist/contact/form.d.ts +130 -0
  210. package/dist/contact/form.d.ts.map +1 -0
  211. package/dist/contact/form.js +163 -0
  212. package/dist/contact/form.js.map +1 -0
  213. package/dist/contact/index.d.ts +17 -0
  214. package/dist/contact/index.d.ts.map +1 -0
  215. package/dist/contact/index.js +13 -0
  216. package/dist/contact/index.js.map +1 -0
  217. package/dist/contact/records.d.ts +124 -0
  218. package/dist/contact/records.d.ts.map +1 -0
  219. package/dist/contact/records.js +218 -0
  220. package/dist/contact/records.js.map +1 -0
  221. package/dist/contact/routes.d.ts +17 -0
  222. package/dist/contact/routes.d.ts.map +1 -0
  223. package/dist/contact/routes.js +127 -0
  224. package/dist/contact/routes.js.map +1 -0
  225. package/dist/contact/submission.d.ts +103 -0
  226. package/dist/contact/submission.d.ts.map +1 -0
  227. package/dist/contact/submission.js +166 -0
  228. package/dist/contact/submission.js.map +1 -0
  229. package/dist/content/document.d.ts +7 -2
  230. package/dist/content/document.d.ts.map +1 -1
  231. package/dist/content/document.js +1 -0
  232. package/dist/content/document.js.map +1 -1
  233. package/dist/content/index.d.ts +7 -2
  234. package/dist/content/index.d.ts.map +1 -1
  235. package/dist/content/index.js +4 -1
  236. package/dist/content/index.js.map +1 -1
  237. package/dist/content/markdown.d.ts.map +1 -1
  238. package/dist/content/markdown.js +24 -2
  239. package/dist/content/markdown.js.map +1 -1
  240. package/dist/content/parser.d.ts.map +1 -1
  241. package/dist/content/parser.js +11 -4
  242. package/dist/content/parser.js.map +1 -1
  243. package/dist/content/save.d.ts +5 -0
  244. package/dist/content/save.d.ts.map +1 -1
  245. package/dist/content/save.js +44 -1
  246. package/dist/content/save.js.map +1 -1
  247. package/dist/content/schedule.d.ts +125 -0
  248. package/dist/content/schedule.d.ts.map +1 -0
  249. package/dist/content/schedule.js +207 -0
  250. package/dist/content/schedule.js.map +1 -0
  251. package/dist/content/search.d.ts +64 -0
  252. package/dist/content/search.d.ts.map +1 -0
  253. package/dist/content/search.js +136 -0
  254. package/dist/content/search.js.map +1 -0
  255. package/dist/content/store.d.ts +202 -7
  256. package/dist/content/store.d.ts.map +1 -1
  257. package/dist/content/store.js +374 -67
  258. package/dist/content/store.js.map +1 -1
  259. package/dist/content/sync.d.ts +7 -1
  260. package/dist/content/sync.d.ts.map +1 -1
  261. package/dist/content/sync.js +18 -10
  262. package/dist/content/sync.js.map +1 -1
  263. package/dist/content/time.d.ts +56 -0
  264. package/dist/content/time.d.ts.map +1 -0
  265. package/dist/content/time.js +141 -0
  266. package/dist/content/time.js.map +1 -0
  267. package/dist/content/writer.d.ts.map +1 -1
  268. package/dist/content/writer.js +3 -0
  269. package/dist/content/writer.js.map +1 -1
  270. package/dist/env.d.ts +58 -4
  271. package/dist/env.d.ts.map +1 -1
  272. package/dist/federation/actor.d.ts +95 -41
  273. package/dist/federation/actor.d.ts.map +1 -1
  274. package/dist/federation/actor.js +180 -53
  275. package/dist/federation/actor.js.map +1 -1
  276. package/dist/federation/article.d.ts +44 -17
  277. package/dist/federation/article.d.ts.map +1 -1
  278. package/dist/federation/article.js +98 -46
  279. package/dist/federation/article.js.map +1 -1
  280. package/dist/federation/delivery.d.ts +63 -15
  281. package/dist/federation/delivery.d.ts.map +1 -1
  282. package/dist/federation/delivery.js +154 -80
  283. package/dist/federation/delivery.js.map +1 -1
  284. package/dist/federation/federation.d.ts +22 -17
  285. package/dist/federation/federation.d.ts.map +1 -1
  286. package/dist/federation/federation.js +98 -77
  287. package/dist/federation/federation.js.map +1 -1
  288. package/dist/federation/followers.d.ts +3 -2
  289. package/dist/federation/followers.d.ts.map +1 -1
  290. package/dist/federation/followers.js +6 -5
  291. package/dist/federation/followers.js.map +1 -1
  292. package/dist/federation/import-wordpress.d.ts +128 -0
  293. package/dist/federation/import-wordpress.d.ts.map +1 -0
  294. package/dist/federation/import-wordpress.js +426 -0
  295. package/dist/federation/import-wordpress.js.map +1 -0
  296. package/dist/federation/inbox.d.ts +36 -13
  297. package/dist/federation/inbox.d.ts.map +1 -1
  298. package/dist/federation/inbox.js +120 -49
  299. package/dist/federation/inbox.js.map +1 -1
  300. package/dist/federation/index.d.ts +22 -10
  301. package/dist/federation/index.d.ts.map +1 -1
  302. package/dist/federation/index.js +13 -8
  303. package/dist/federation/index.js.map +1 -1
  304. package/dist/federation/keys.d.ts +98 -20
  305. package/dist/federation/keys.d.ts.map +1 -1
  306. package/dist/federation/keys.js +269 -39
  307. package/dist/federation/keys.js.map +1 -1
  308. package/dist/federation/mount.d.ts +42 -10
  309. package/dist/federation/mount.d.ts.map +1 -1
  310. package/dist/federation/mount.js +266 -26
  311. package/dist/federation/mount.js.map +1 -1
  312. package/dist/federation/paths.d.ts +23 -35
  313. package/dist/federation/paths.d.ts.map +1 -1
  314. package/dist/federation/paths.js +26 -39
  315. package/dist/federation/paths.js.map +1 -1
  316. package/dist/federation/records.d.ts +223 -0
  317. package/dist/federation/records.d.ts.map +1 -0
  318. package/dist/federation/records.js +506 -0
  319. package/dist/federation/records.js.map +1 -0
  320. package/dist/federation/relays.d.ts +114 -0
  321. package/dist/federation/relays.d.ts.map +1 -0
  322. package/dist/federation/relays.js +290 -0
  323. package/dist/federation/relays.js.map +1 -0
  324. package/dist/federation/replies.d.ts +80 -0
  325. package/dist/federation/replies.d.ts.map +1 -0
  326. package/dist/federation/replies.js +166 -0
  327. package/dist/federation/replies.js.map +1 -0
  328. package/dist/federation/wordpress.d.ts +131 -0
  329. package/dist/federation/wordpress.d.ts.map +1 -0
  330. package/dist/federation/wordpress.js +341 -0
  331. package/dist/federation/wordpress.js.map +1 -0
  332. package/dist/files/atomic.d.ts +103 -0
  333. package/dist/files/atomic.d.ts.map +1 -0
  334. package/dist/files/atomic.js +150 -0
  335. package/dist/files/atomic.js.map +1 -0
  336. package/dist/files/index.d.ts +3 -0
  337. package/dist/files/index.d.ts.map +1 -0
  338. package/dist/files/index.js +2 -0
  339. package/dist/files/index.js.map +1 -0
  340. package/dist/forms/protection.d.ts +85 -0
  341. package/dist/forms/protection.d.ts.map +1 -0
  342. package/dist/forms/protection.js +116 -0
  343. package/dist/forms/protection.js.map +1 -0
  344. package/dist/images/icons.d.ts +59 -0
  345. package/dist/images/icons.d.ts.map +1 -0
  346. package/dist/images/icons.js +131 -0
  347. package/dist/images/icons.js.map +1 -0
  348. package/dist/images/index.d.ts +7 -0
  349. package/dist/images/index.d.ts.map +1 -0
  350. package/dist/images/index.js +4 -0
  351. package/dist/images/index.js.map +1 -0
  352. package/dist/images/markup.d.ts +47 -0
  353. package/dist/images/markup.d.ts.map +1 -0
  354. package/dist/images/markup.js +175 -0
  355. package/dist/images/markup.js.map +1 -0
  356. package/dist/images/paths.d.ts +34 -0
  357. package/dist/images/paths.d.ts.map +1 -0
  358. package/dist/images/paths.js +41 -0
  359. package/dist/images/paths.js.map +1 -0
  360. package/dist/images/variants.d.ts +104 -0
  361. package/dist/images/variants.d.ts.map +1 -0
  362. package/dist/images/variants.js +320 -0
  363. package/dist/images/variants.js.map +1 -0
  364. package/dist/index.d.ts +123 -19
  365. package/dist/index.d.ts.map +1 -1
  366. package/dist/index.js +327 -25
  367. package/dist/index.js.map +1 -1
  368. package/dist/init.d.ts +18 -0
  369. package/dist/init.d.ts.map +1 -1
  370. package/dist/init.js +34 -3
  371. package/dist/init.js.map +1 -1
  372. package/dist/mail/brevo.d.ts +35 -0
  373. package/dist/mail/brevo.d.ts.map +1 -0
  374. package/dist/mail/brevo.js +85 -0
  375. package/dist/mail/brevo.js.map +1 -0
  376. package/dist/mail/credentials.d.ts +62 -0
  377. package/dist/mail/credentials.d.ts.map +1 -0
  378. package/dist/mail/credentials.js +86 -0
  379. package/dist/mail/credentials.js.map +1 -0
  380. package/dist/mail/index.d.ts +15 -0
  381. package/dist/mail/index.d.ts.map +1 -0
  382. package/dist/mail/index.js +8 -0
  383. package/dist/mail/index.js.map +1 -0
  384. package/dist/mail/memory.d.ts +35 -0
  385. package/dist/mail/memory.d.ts.map +1 -0
  386. package/dist/mail/memory.js +29 -0
  387. package/dist/mail/memory.js.map +1 -0
  388. package/dist/mail/provider.d.ts +80 -0
  389. package/dist/mail/provider.d.ts.map +1 -0
  390. package/dist/mail/provider.js +23 -0
  391. package/dist/mail/provider.js.map +1 -0
  392. package/dist/mail/service.d.ts +156 -0
  393. package/dist/mail/service.d.ts.map +1 -0
  394. package/dist/mail/service.js +265 -0
  395. package/dist/mail/service.js.map +1 -0
  396. package/dist/mail/smtp.d.ts +39 -0
  397. package/dist/mail/smtp.d.ts.map +1 -0
  398. package/dist/mail/smtp.js +58 -0
  399. package/dist/mail/smtp.js.map +1 -0
  400. package/dist/mail/templates.d.ts +91 -0
  401. package/dist/mail/templates.d.ts.map +1 -0
  402. package/dist/mail/templates.js +69 -0
  403. package/dist/mail/templates.js.map +1 -0
  404. package/dist/notifications/comments.d.ts +66 -0
  405. package/dist/notifications/comments.d.ts.map +1 -0
  406. package/dist/notifications/comments.js +151 -0
  407. package/dist/notifications/comments.js.map +1 -0
  408. package/dist/notifications/digest.d.ts +135 -0
  409. package/dist/notifications/digest.d.ts.map +1 -0
  410. package/dist/notifications/digest.js +287 -0
  411. package/dist/notifications/digest.js.map +1 -0
  412. package/dist/notifications/index.d.ts +13 -0
  413. package/dist/notifications/index.d.ts.map +1 -0
  414. package/dist/notifications/index.js +8 -0
  415. package/dist/notifications/index.js.map +1 -0
  416. package/dist/notifications/links.d.ts +60 -0
  417. package/dist/notifications/links.d.ts.map +1 -0
  418. package/dist/notifications/links.js +63 -0
  419. package/dist/notifications/links.js.map +1 -0
  420. package/dist/notifications/optouts.d.ts +48 -0
  421. package/dist/notifications/optouts.d.ts.map +1 -0
  422. package/dist/notifications/optouts.js +93 -0
  423. package/dist/notifications/optouts.js.map +1 -0
  424. package/dist/notifications/preferences.d.ts +158 -0
  425. package/dist/notifications/preferences.d.ts.map +1 -0
  426. package/dist/notifications/preferences.js +195 -0
  427. package/dist/notifications/preferences.js.map +1 -0
  428. package/dist/notifications/routes.d.ts +28 -0
  429. package/dist/notifications/routes.d.ts.map +1 -0
  430. package/dist/notifications/routes.js +184 -0
  431. package/dist/notifications/routes.js.map +1 -0
  432. package/dist/notifications/tokens.d.ts +60 -0
  433. package/dist/notifications/tokens.d.ts.map +1 -0
  434. package/dist/notifications/tokens.js +125 -0
  435. package/dist/notifications/tokens.js.map +1 -0
  436. package/dist/notify.d.ts +84 -0
  437. package/dist/notify.d.ts.map +1 -0
  438. package/dist/notify.js +149 -0
  439. package/dist/notify.js.map +1 -0
  440. package/dist/web/archive.d.ts +49 -0
  441. package/dist/web/archive.d.ts.map +1 -0
  442. package/dist/web/archive.js +59 -0
  443. package/dist/web/archive.js.map +1 -0
  444. package/dist/web/assets.d.ts +6 -5
  445. package/dist/web/assets.d.ts.map +1 -1
  446. package/dist/web/assets.js +5 -7
  447. package/dist/web/assets.js.map +1 -1
  448. package/dist/web/authors.d.ts +143 -0
  449. package/dist/web/authors.d.ts.map +1 -0
  450. package/dist/web/authors.js +178 -0
  451. package/dist/web/authors.js.map +1 -0
  452. package/dist/web/comments.d.ts +60 -0
  453. package/dist/web/comments.d.ts.map +1 -0
  454. package/dist/web/comments.js +207 -0
  455. package/dist/web/comments.js.map +1 -0
  456. package/dist/web/context.d.ts +162 -28
  457. package/dist/web/context.d.ts.map +1 -1
  458. package/dist/web/context.js +123 -26
  459. package/dist/web/context.js.map +1 -1
  460. package/dist/web/conversation.d.ts +209 -0
  461. package/dist/web/conversation.d.ts.map +1 -0
  462. package/dist/web/conversation.js +557 -0
  463. package/dist/web/conversation.js.map +1 -0
  464. package/dist/web/documents.d.ts +36 -6
  465. package/dist/web/documents.d.ts.map +1 -1
  466. package/dist/web/documents.js +52 -10
  467. package/dist/web/documents.js.map +1 -1
  468. package/dist/web/feed-atom.d.ts +22 -0
  469. package/dist/web/feed-atom.d.ts.map +1 -0
  470. package/dist/web/feed-atom.js +83 -0
  471. package/dist/web/feed-atom.js.map +1 -0
  472. package/dist/web/feed-item.d.ts +145 -0
  473. package/dist/web/feed-item.d.ts.map +1 -0
  474. package/dist/web/feed-item.js +120 -0
  475. package/dist/web/feed-item.js.map +1 -0
  476. package/dist/web/feed-json.d.ts +79 -0
  477. package/dist/web/feed-json.d.ts.map +1 -0
  478. package/dist/web/feed-json.js +53 -0
  479. package/dist/web/feed-json.js.map +1 -0
  480. package/dist/web/feed-rss.d.ts +26 -0
  481. package/dist/web/feed-rss.d.ts.map +1 -0
  482. package/dist/web/feed-rss.js +203 -0
  483. package/dist/web/feed-rss.js.map +1 -0
  484. package/dist/web/feed-source.d.ts +244 -0
  485. package/dist/web/feed-source.d.ts.map +1 -0
  486. package/dist/web/feed-source.js +201 -0
  487. package/dist/web/feed-source.js.map +1 -0
  488. package/dist/web/feed-xml.d.ts +63 -0
  489. package/dist/web/feed-xml.d.ts.map +1 -0
  490. package/dist/web/feed-xml.js +116 -0
  491. package/dist/web/feed-xml.js.map +1 -0
  492. package/dist/web/feeds.d.ts +31 -96
  493. package/dist/web/feeds.d.ts.map +1 -1
  494. package/dist/web/feeds.js +94 -198
  495. package/dist/web/feeds.js.map +1 -1
  496. package/dist/web/health.d.ts +31 -0
  497. package/dist/web/health.d.ts.map +1 -0
  498. package/dist/web/health.js +44 -0
  499. package/dist/web/health.js.map +1 -0
  500. package/dist/web/index.d.ts +30 -10
  501. package/dist/web/index.d.ts.map +1 -1
  502. package/dist/web/index.js +18 -7
  503. package/dist/web/index.js.map +1 -1
  504. package/dist/web/navigation.d.ts +73 -0
  505. package/dist/web/navigation.d.ts.map +1 -0
  506. package/dist/web/navigation.js +110 -0
  507. package/dist/web/navigation.js.map +1 -0
  508. package/dist/web/negotiate.d.ts +9 -0
  509. package/dist/web/negotiate.d.ts.map +1 -1
  510. package/dist/web/negotiate.js +6 -1
  511. package/dist/web/negotiate.js.map +1 -1
  512. package/dist/web/recent.d.ts +43 -0
  513. package/dist/web/recent.d.ts.map +1 -0
  514. package/dist/web/recent.js +37 -0
  515. package/dist/web/recent.js.map +1 -0
  516. package/dist/web/render.d.ts +197 -9
  517. package/dist/web/render.d.ts.map +1 -1
  518. package/dist/web/render.js +334 -17
  519. package/dist/web/render.js.map +1 -1
  520. package/dist/web/routes.d.ts +25 -8
  521. package/dist/web/routes.d.ts.map +1 -1
  522. package/dist/web/routes.js +845 -93
  523. package/dist/web/routes.js.map +1 -1
  524. package/dist/web/sanitize.d.ts +19 -0
  525. package/dist/web/sanitize.d.ts.map +1 -0
  526. package/dist/web/sanitize.js +272 -0
  527. package/dist/web/sanitize.js.map +1 -0
  528. package/dist/web/search.d.ts +79 -0
  529. package/dist/web/search.d.ts.map +1 -0
  530. package/dist/web/search.js +94 -0
  531. package/dist/web/search.js.map +1 -0
  532. package/dist/web/sitemap.d.ts +120 -0
  533. package/dist/web/sitemap.d.ts.map +1 -0
  534. package/dist/web/sitemap.js +199 -0
  535. package/dist/web/sitemap.js.map +1 -0
  536. package/dist/web/taxonomy.d.ts +152 -0
  537. package/dist/web/taxonomy.d.ts.map +1 -0
  538. package/dist/web/taxonomy.js +237 -0
  539. package/dist/web/taxonomy.js.map +1 -0
  540. package/dist/web/templates.d.ts +54 -16
  541. package/dist/web/templates.d.ts.map +1 -1
  542. package/dist/web/templates.js +109 -28
  543. package/dist/web/templates.js.map +1 -1
  544. package/dist/web/themes.d.ts +205 -0
  545. package/dist/web/themes.d.ts.map +1 -0
  546. package/dist/web/themes.js +277 -0
  547. package/dist/web/themes.js.map +1 -0
  548. package/dist/webmention/discovery.d.ts +51 -0
  549. package/dist/webmention/discovery.d.ts.map +1 -0
  550. package/dist/webmention/discovery.js +176 -0
  551. package/dist/webmention/discovery.js.map +1 -0
  552. package/dist/webmention/html.d.ts +71 -0
  553. package/dist/webmention/html.d.ts.map +1 -0
  554. package/dist/webmention/html.js +285 -0
  555. package/dist/webmention/html.js.map +1 -0
  556. package/dist/webmention/index.d.ts +12 -0
  557. package/dist/webmention/index.d.ts.map +1 -0
  558. package/dist/webmention/index.js +8 -0
  559. package/dist/webmention/index.js.map +1 -0
  560. package/dist/webmention/links.d.ts +18 -0
  561. package/dist/webmention/links.d.ts.map +1 -0
  562. package/dist/webmention/links.js +64 -0
  563. package/dist/webmention/links.js.map +1 -0
  564. package/dist/webmention/microformats.d.ts +93 -0
  565. package/dist/webmention/microformats.d.ts.map +1 -0
  566. package/dist/webmention/microformats.js +376 -0
  567. package/dist/webmention/microformats.js.map +1 -0
  568. package/dist/webmention/receive.d.ts +141 -0
  569. package/dist/webmention/receive.d.ts.map +1 -0
  570. package/dist/webmention/receive.js +264 -0
  571. package/dist/webmention/receive.js.map +1 -0
  572. package/dist/webmention/routes.d.ts +37 -0
  573. package/dist/webmention/routes.d.ts.map +1 -0
  574. package/dist/webmention/routes.js +75 -0
  575. package/dist/webmention/routes.js.map +1 -0
  576. package/dist/webmention/service.d.ts +94 -0
  577. package/dist/webmention/service.d.ts.map +1 -0
  578. package/dist/webmention/service.js +207 -0
  579. package/dist/webmention/service.js.map +1 -0
  580. package/package.json +11 -6
  581. package/templates/site/content/_data/site.json +1 -0
  582. package/templates/site/content/posts/2026-01-01-hello-world.md +5 -3
  583. package/templates/site/geekity.config.ts +11 -1
  584. package/templates/site/tsconfig.json +1 -1
  585. package/themes/default/README.md +1096 -50
  586. package/themes/default/layouts/404.njk +2 -3
  587. package/themes/default/layouts/author.njk +37 -0
  588. package/themes/default/layouts/base.njk +172 -31
  589. package/themes/default/layouts/category.njk +27 -0
  590. package/themes/default/layouts/front-page.njk +57 -0
  591. package/themes/default/layouts/home.njk +17 -1
  592. package/themes/default/layouts/page.njk +57 -5
  593. package/themes/default/layouts/post.njk +78 -19
  594. package/themes/default/layouts/search.njk +57 -0
  595. package/themes/default/layouts/tag.njk +3 -6
  596. package/themes/default/mail/comment-digest.html.njk +37 -0
  597. package/themes/default/mail/comment-digest.subject.njk +3 -0
  598. package/themes/default/mail/comment-digest.txt.njk +40 -0
  599. package/themes/default/mail/comment-pending.html.njk +27 -0
  600. package/themes/default/mail/comment-pending.subject.njk +2 -0
  601. package/themes/default/mail/comment-pending.txt.njk +24 -0
  602. package/themes/default/mail/comment-reply.html.njk +21 -0
  603. package/themes/default/mail/comment-reply.subject.njk +2 -0
  604. package/themes/default/mail/comment-reply.txt.njk +22 -0
  605. package/themes/default/mail/contact-message.html.njk +24 -0
  606. package/themes/default/mail/contact-message.subject.njk +5 -0
  607. package/themes/default/mail/contact-message.txt.njk +20 -0
  608. package/themes/default/mail/password-changed.html.njk +18 -0
  609. package/themes/default/mail/password-changed.subject.njk +2 -0
  610. package/themes/default/mail/password-changed.txt.njk +17 -0
  611. package/themes/default/mail/password-reset.html.njk +22 -0
  612. package/themes/default/mail/password-reset.subject.njk +2 -0
  613. package/themes/default/mail/password-reset.txt.njk +18 -0
  614. package/themes/default/mail/test.html.njk +14 -0
  615. package/themes/default/mail/test.subject.njk +2 -0
  616. package/themes/default/mail/test.txt.njk +12 -0
  617. package/themes/default/partials/archive.njk +27 -0
  618. package/themes/default/partials/bio.njk +77 -0
  619. package/themes/default/partials/comment-form.njk +109 -0
  620. package/themes/default/partials/contact-form.njk +88 -0
  621. package/themes/default/partials/conversation.njk +139 -0
  622. package/themes/default/partials/feeds.njk +26 -0
  623. package/themes/default/partials/jsonld.njk +120 -0
  624. package/themes/default/partials/pagination.njk +12 -6
  625. package/themes/default/partials/post-list.njk +51 -18
  626. package/themes/default/partials/search-form.njk +17 -0
  627. package/themes/default/partials/tags.njk +26 -5
  628. package/themes/default/static/highlight.js +4 -0
  629. package/themes/default/static/style.css +1119 -194
  630. package/themes/default/theme.json +5 -0
  631. package/admin/layouts/document-editor.njk +0 -167
  632. package/admin/layouts/federation.njk +0 -145
  633. package/admin/layouts/login.njk +0 -23
  634. package/admin/layouts/settings.njk +0 -116
  635. package/admin/layouts/setup.njk +0 -27
  636. package/admin/layouts/users.njk +0 -91
  637. /package/admin/{layouts/_flash.njk → components/flash.njk} +0 -0
@@ -20,6 +20,7 @@
20
20
  --admin-link: #2271b1;
21
21
  --admin-notice: #00a32a;
22
22
  --admin-error: #d63638;
23
+ --admin-unread: #f0f6fc;
23
24
  --admin-nav-width: 11rem;
24
25
  }
25
26
 
@@ -129,12 +130,73 @@ a {
129
130
  font-weight: 600;
130
131
  }
131
132
 
133
+ /* A section is a heading over its screens. Only the open one shows them, so
134
+ the menu is a list of nine things until you are inside one of them. */
135
+
136
+ .admin-nav-section + .admin-nav-section {
137
+ border-top: 1px solid #3c434a;
138
+ }
139
+
140
+ .admin-nav-heading {
141
+ font-weight: 600;
142
+ }
143
+
144
+ .admin-nav-open > .admin-nav-heading {
145
+ background: #1d2327;
146
+ color: #fff;
147
+ }
148
+
149
+ .admin-nav-children {
150
+ background: #32373c;
151
+ font-size: 0.95em;
152
+ }
153
+
154
+ .admin-nav-children a {
155
+ padding-left: 1.6rem;
156
+ font-weight: 400;
157
+ }
158
+
132
159
  .admin-main {
133
160
  flex: 1;
134
161
  min-width: 0;
135
162
  padding: 1.25rem 1.5rem 3rem;
136
163
  }
137
164
 
165
+ /* Narrow: the column would be a sliver, so the menu goes above the screen and
166
+ wraps, sections on one line and the open section's children under them. */
167
+
168
+ @media (max-width: 45rem) {
169
+ .admin-shell {
170
+ display: block;
171
+ }
172
+
173
+ .admin-nav > ul,
174
+ .admin-nav-children {
175
+ display: flex;
176
+ flex-wrap: wrap;
177
+ }
178
+
179
+ .admin-nav-section + .admin-nav-section {
180
+ border-top: 0;
181
+ }
182
+
183
+ .admin-nav-section {
184
+ flex: 1 0 auto;
185
+ }
186
+
187
+ .admin-nav-open {
188
+ flex-basis: 100%;
189
+ }
190
+
191
+ .admin-nav-children a {
192
+ padding-left: 0.9rem;
193
+ }
194
+
195
+ .admin-main {
196
+ padding: 1rem 1rem 3rem;
197
+ }
198
+ }
199
+
138
200
  /* Login and setup: no navigation, one card in the middle of the page. */
139
201
 
140
202
  .admin-plain {
@@ -230,10 +292,20 @@ h2 {
230
292
  color: var(--admin-muted);
231
293
  }
232
294
 
295
+ /* What a page is to the site besides a page: Front Page, Posts Page. */
296
+ .admin-page-role {
297
+ color: var(--admin-muted);
298
+ }
299
+
233
300
  .admin-status-draft {
234
301
  color: var(--admin-error);
235
302
  }
236
303
 
304
+ /* Published, but not yet: waiting for its date rather than for a decision. */
305
+ .admin-status-scheduled {
306
+ color: var(--admin-link);
307
+ }
308
+
237
309
  .admin-empty {
238
310
  color: var(--admin-muted);
239
311
  }
@@ -248,6 +320,7 @@ label {
248
320
 
249
321
  input[type='text'],
250
322
  input[type='password'],
323
+ input[type='email'],
251
324
  textarea {
252
325
  width: 100%;
253
326
  padding: 0.4rem 0.5rem;
@@ -570,7 +643,7 @@ button[type='submit']:hover,
570
643
  font-size: 1.05rem;
571
644
  }
572
645
 
573
- .admin-settings h2:first-child {
646
+ .admin-settings h2:first-of-type {
574
647
  margin-top: 0;
575
648
  padding-top: 0;
576
649
  border-top: 0;
@@ -602,8 +675,8 @@ button[type='submit']:hover,
602
675
  margin: 0;
603
676
  }
604
677
 
605
- /* The users screen stacks the table and two panels of the same shape, so they
606
- need the gap the settings screen's single panel never did. */
678
+ /* One user's screen stacks five panels of the same shape, so they need the gap
679
+ the settings screen's single panel never did. */
607
680
 
608
681
  .admin-list + .admin-settings,
609
682
  .admin-settings + .admin-settings {
@@ -696,6 +769,22 @@ button[type='submit']:hover,
696
769
  display: block;
697
770
  }
698
771
 
772
+ /* Whether Akismet is on, which is the first thing anybody opening that panel
773
+ is asking. A line rather than a badge, so it can say what it means. */
774
+
775
+ .admin-akismet-state {
776
+ margin: 0.75rem 0 0.25rem;
777
+ }
778
+
779
+ .admin-akismet-state.admin-akismet-valid strong {
780
+ color: var(--admin-notice);
781
+ }
782
+
783
+ .admin-akismet-state.admin-akismet-invalid strong,
784
+ .admin-akismet-state.admin-akismet-unchecked strong {
785
+ color: var(--admin-error);
786
+ }
787
+
699
788
  .admin-actor-identity {
700
789
  display: flex;
701
790
  gap: 0.75rem;
@@ -724,3 +813,409 @@ button[type='submit']:hover,
724
813
  .admin-status-failed {
725
814
  color: var(--admin-error);
726
815
  }
816
+
817
+ /* The taxonomy screens: a table of terms with an inline rename field in each
818
+ row, so a rename is one field and one button rather than a second screen.
819
+ The users screen edits an email address the same way, for the same reason. */
820
+
821
+ .admin-inline {
822
+ display: flex;
823
+ align-items: baseline;
824
+ gap: 0.4rem;
825
+ }
826
+
827
+ .admin-inline input[type='text'],
828
+ .admin-inline input[type='email'] {
829
+ width: 12rem;
830
+ margin: 0;
831
+ }
832
+
833
+ .admin-inline button {
834
+ margin: 0;
835
+ }
836
+
837
+ /* One user's screen (TASK-97): the same panels the settings pages are made of,
838
+ so a field here looks like a field anywhere else in the admin. What is left
839
+ is what a panel holds that a settings page does not — a line of prose about
840
+ the account, and one notice at a time. */
841
+
842
+ .admin-field-static {
843
+ margin: 0 0 0.25rem;
844
+ }
845
+
846
+ .admin-notice + .admin-notice {
847
+ margin-top: 1.25rem;
848
+ padding-top: 1.25rem;
849
+ border-top: 1px solid var(--admin-border);
850
+ }
851
+
852
+ .admin-notice h3 {
853
+ margin: 1rem 0 0.25rem;
854
+ font-size: 1rem;
855
+ }
856
+
857
+ .admin-notice .admin-inline {
858
+ margin-top: 0.5rem;
859
+ }
860
+
861
+ /* The how-often select beside a notification switch: narrow, so a row of
862
+ switches and windows still reads as one column rather than as a form. */
863
+
864
+ .admin-inline select {
865
+ margin: 0;
866
+ }
867
+
868
+ /* A label the screen reader reads and the eye does not: every rename field
869
+ needs its own name, and printing "Rename eleventy to" beside each one would
870
+ say five times over what the column heading says once. */
871
+
872
+ .admin-visually-hidden {
873
+ position: absolute;
874
+ width: 1px;
875
+ height: 1px;
876
+ margin: -1px;
877
+ padding: 0;
878
+ border: 0;
879
+ overflow: hidden;
880
+ clip-path: inset(50%);
881
+ white-space: nowrap;
882
+ }
883
+
884
+ /* The media library. Wide rows: a thumbnail, the two copyable fields, and the
885
+ documents pointing at the file, which is what a delete has to warn about. */
886
+
887
+ .admin-media td {
888
+ vertical-align: top;
889
+ }
890
+
891
+ .admin-media-file {
892
+ display: flex;
893
+ align-items: center;
894
+ gap: 0.6rem;
895
+ }
896
+
897
+ .admin-media-thumbnail {
898
+ display: block;
899
+ width: 60px;
900
+ height: 60px;
901
+ object-fit: cover;
902
+ background: var(--admin-field);
903
+ border: 1px solid var(--admin-border);
904
+ }
905
+
906
+ /* What a file that is not a picture gets instead of a thumbnail: its
907
+ extension, at the size a thumbnail would have been, so the rows line up. */
908
+
909
+ .admin-media-icon {
910
+ display: flex;
911
+ align-items: center;
912
+ justify-content: center;
913
+ width: 60px;
914
+ height: 60px;
915
+ flex: 0 0 auto;
916
+ background: var(--admin-field);
917
+ border: 1px solid var(--admin-border);
918
+ color: var(--admin-muted);
919
+ font-size: 0.75em;
920
+ font-weight: 600;
921
+ letter-spacing: 0.05em;
922
+ }
923
+
924
+ .admin-media-links {
925
+ min-width: 18rem;
926
+ }
927
+
928
+ /* The copy control: a readonly field that works on its own, and a button that
929
+ copy.js reveals. The field is monospaced because what is in it is a URL or a
930
+ line of Markdown, and both are read character by character. */
931
+
932
+ .admin-copy {
933
+ display: flex;
934
+ align-items: stretch;
935
+ gap: 0.3rem;
936
+ margin-bottom: 0.3rem;
937
+ }
938
+
939
+ .admin-copy input {
940
+ flex: 1 1 auto;
941
+ min-width: 0;
942
+ margin: 0;
943
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
944
+ font-size: 0.85em;
945
+ }
946
+
947
+ .admin-copy button {
948
+ flex: 0 0 auto;
949
+ margin: 0;
950
+ }
951
+
952
+ .admin-references {
953
+ margin: 0;
954
+ padding-left: 1.1rem;
955
+ }
956
+
957
+ /* The comments and messages screens. Both are lists of something a stranger
958
+ wrote, so both are cards rather than table rows: a paragraph is read across,
959
+ and a column narrow enough for a table is not wide enough to read one in.
960
+ The two screens share every rule here, because a contact message is a
961
+ comment nobody can approve and the eye should not have to relearn the shape
962
+ between them. */
963
+
964
+ .admin-comments {
965
+ margin: 0;
966
+ padding: 0;
967
+ list-style: none;
968
+ }
969
+
970
+ .admin-comment {
971
+ padding: 0.9rem 1.1rem 1.1rem;
972
+ background: var(--admin-surface);
973
+ border: 1px solid var(--admin-border);
974
+ }
975
+
976
+ .admin-comment + .admin-comment {
977
+ margin-top: 0.75rem;
978
+ }
979
+
980
+ /* An unread message, marked down its left edge the way a flash notice is and
981
+ tinted behind, so a run of them is findable down a long list. Mark read
982
+ drops the class and the row goes back to the card every other row is. */
983
+
984
+ .admin-comment-unread {
985
+ background: var(--admin-unread);
986
+ border-left: 4px solid var(--admin-link);
987
+ }
988
+
989
+ /* Who wrote, how to reach them, and where it stands: one line that wraps
990
+ rather than a stack, because none of it is the thing being read. */
991
+
992
+ .admin-comment-meta {
993
+ display: flex;
994
+ flex-wrap: wrap;
995
+ align-items: baseline;
996
+ gap: 0.15rem 0.6rem;
997
+ }
998
+
999
+ .admin-comment-author {
1000
+ font-weight: 600;
1001
+ }
1002
+
1003
+ /* A website and an address are both arbitrarily long and neither is worth a
1004
+ line of its own, so they are quiet and they break rather than push the card
1005
+ wider than the screen. */
1006
+
1007
+ .admin-comment-site,
1008
+ .admin-comment-email {
1009
+ color: var(--admin-muted);
1010
+ font-size: 0.9em;
1011
+ overflow-wrap: anywhere;
1012
+ }
1013
+
1014
+ .admin-comment-where {
1015
+ margin: 0.15rem 0 0;
1016
+ color: var(--admin-muted);
1017
+ font-size: 0.9em;
1018
+ }
1019
+
1020
+ .admin-comment-where code {
1021
+ font-size: 0.9em;
1022
+ }
1023
+
1024
+ /* The comment itself. Capped at the measure the settings form reads at: a
1025
+ paragraph running the full width of a wide screen is a paragraph nobody
1026
+ finishes. */
1027
+
1028
+ .admin-comment-body {
1029
+ max-width: 42rem;
1030
+ margin: 0.6rem 0 0;
1031
+ overflow-wrap: anywhere;
1032
+ }
1033
+
1034
+ .admin-comment-body > :first-child {
1035
+ margin-top: 0;
1036
+ }
1037
+
1038
+ .admin-comment-body > :last-child {
1039
+ margin-bottom: 0;
1040
+ }
1041
+
1042
+ /* Somebody else's markup, so it is held inside the card whatever it is. */
1043
+
1044
+ .admin-comment-body img {
1045
+ max-width: 100%;
1046
+ height: auto;
1047
+ }
1048
+
1049
+ .admin-comment-body pre {
1050
+ overflow-x: auto;
1051
+ }
1052
+
1053
+ .admin-comment-body blockquote {
1054
+ margin-left: 0;
1055
+ padding-left: 0.9rem;
1056
+ border-left: 3px solid var(--admin-border);
1057
+ color: var(--admin-muted);
1058
+ }
1059
+
1060
+ .admin-message-subject {
1061
+ max-width: 42rem;
1062
+ margin: 0.6rem 0 0;
1063
+ overflow-wrap: anywhere;
1064
+ }
1065
+
1066
+ /* A comment arrives as Markdown and is rendered; a contact message is plain
1067
+ text and is printed, so the only thing standing between it and one long
1068
+ line is this. */
1069
+
1070
+ .admin-message-body {
1071
+ white-space: pre-wrap;
1072
+ }
1073
+
1074
+ /* Approve, Spam, Delete, Reply, Mark read: the same underlined-link row the
1075
+ listings use, but wrapping, because a card is narrower than a table and the
1076
+ Reply link on the messages screen is a button rather than a form. */
1077
+
1078
+ .admin-comment .admin-actions {
1079
+ flex-wrap: wrap;
1080
+ margin-top: 0.9rem;
1081
+ }
1082
+
1083
+ .admin-comment .admin-actions .admin-button {
1084
+ margin: 0;
1085
+ padding: 0.1rem 0.5rem;
1086
+ font-size: 0.9em;
1087
+ }
1088
+
1089
+ /* The reply box, folded away: most rows are read and moderated without one,
1090
+ and an open textarea under every comment would bury the list. */
1091
+
1092
+ .admin-comment-reply {
1093
+ margin-top: 0.6rem;
1094
+ }
1095
+
1096
+ .admin-comment-reply summary {
1097
+ color: var(--admin-link);
1098
+ cursor: pointer;
1099
+ }
1100
+
1101
+ .admin-comment-reply form {
1102
+ max-width: 42rem;
1103
+ }
1104
+
1105
+ .admin-comment-reply textarea {
1106
+ min-height: 6rem;
1107
+ }
1108
+
1109
+ /* Where a comment stands, and whether a message has been read. Pending is the
1110
+ one waiting for a person, which is why it is the loud one; approved is
1111
+ settled and spam is held back. */
1112
+
1113
+ .admin-status-pending {
1114
+ color: var(--admin-link);
1115
+ font-weight: 600;
1116
+ }
1117
+
1118
+ .admin-status-approved {
1119
+ color: var(--admin-notice);
1120
+ }
1121
+
1122
+ .admin-status-spam {
1123
+ color: var(--admin-error);
1124
+ }
1125
+
1126
+ /* The paragraph under each of these lists names a directory, and a path with
1127
+ no spaces in it is one long word: on a narrow screen it has to be allowed to
1128
+ break rather than push the page sideways. Every hint that names a file has
1129
+ the same problem. */
1130
+
1131
+ .admin-hint code {
1132
+ overflow-wrap: anywhere;
1133
+ }
1134
+
1135
+ /* These two screens wrap their filter tabs in a `nav`, for the label a
1136
+ screen reader reads out; the listings put the class straight on the `ul`.
1137
+ Both end up as one row of links. */
1138
+
1139
+ .admin-filters,
1140
+ .admin-filters ul {
1141
+ flex-wrap: wrap;
1142
+ }
1143
+
1144
+ .admin-filters ul {
1145
+ display: flex;
1146
+ gap: 0.75rem;
1147
+ margin: 0;
1148
+ padding: 0;
1149
+ list-style: none;
1150
+ }
1151
+
1152
+ /* Appearance > Themes. One card per theme, the way WordPress lays them out,
1153
+ because the unit here is a whole theme rather than a row in a table: it has
1154
+ a name, a sentence about itself, the directory it is chosen by, and one
1155
+ thing you can do to it. The grid fills the width it is given and folds to
1156
+ one column on a narrow screen without a media query. */
1157
+
1158
+ .admin-themes,
1159
+ .admin-broken-themes {
1160
+ margin: 1rem 0;
1161
+ padding: 0;
1162
+ list-style: none;
1163
+ }
1164
+
1165
+ .admin-themes {
1166
+ display: grid;
1167
+ grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
1168
+ gap: 1rem;
1169
+ }
1170
+
1171
+ .admin-theme {
1172
+ display: flex;
1173
+ flex-direction: column;
1174
+ gap: 0.4rem;
1175
+ padding: 1rem;
1176
+ background: var(--admin-surface);
1177
+ border: 1px solid var(--admin-border);
1178
+ }
1179
+
1180
+ /* The one in use, marked the way the open section of the menu is: by the same
1181
+ blue, so "this is where you are" reads the same everywhere in the admin. */
1182
+
1183
+ .admin-theme-current {
1184
+ border-color: var(--admin-nav-current);
1185
+ box-shadow: inset 0 0 0 1px var(--admin-nav-current);
1186
+ }
1187
+
1188
+ .admin-theme h2 {
1189
+ margin: 0;
1190
+ font-size: 1.1em;
1191
+ }
1192
+
1193
+ .admin-theme p {
1194
+ margin: 0;
1195
+ }
1196
+
1197
+ .admin-status-active {
1198
+ color: var(--admin-nav-current);
1199
+ font-weight: 600;
1200
+ }
1201
+
1202
+ .admin-theme-description {
1203
+ color: var(--admin-muted);
1204
+ }
1205
+
1206
+ /* The directory name, which is what `site.json` holds and what a person types
1207
+ when they are editing that file by hand rather than pressing a button. */
1208
+
1209
+ .admin-theme-id code {
1210
+ overflow-wrap: anywhere;
1211
+ }
1212
+
1213
+ /* A directory that was meant to be a theme. Listed, with the reason, because a
1214
+ theme that quietly stopped appearing is the hardest kind of typo to find. */
1215
+
1216
+ .admin-broken-theme {
1217
+ padding: 0.35rem 0;
1218
+ border-bottom: 1px solid var(--admin-field);
1219
+ color: var(--admin-muted);
1220
+ overflow-wrap: anywhere;
1221
+ }
@@ -0,0 +1,52 @@
1
+ /* The media screen's copy buttons, and nothing else.
2
+
3
+ Every URL and every ready-made Markdown line is already a readonly text
4
+ input, which selects and copies like any other text, so the screen is
5
+ complete before this file loads. The buttons are rendered `hidden` and
6
+ revealed here: a button that did nothing without JavaScript would be worse
7
+ than no button.
8
+
9
+ It is a file rather than an inline <script> for the same reason slug.js is:
10
+ the admin's Content-Security-Policy says `script-src 'self'` and means it.
11
+
12
+ Plain ES5-shaped browser JavaScript, checked by eslint's browser config and
13
+ left alone by the TypeScript build: it is served as it is written. */
14
+ (function () {
15
+ /* The clipboard API is the whole point of the button. Without it — an
16
+ insecure origin, an old browser — the fields stay as they are and no
17
+ button appears. */
18
+ if (!navigator.clipboard) return;
19
+
20
+ var buttons = document.querySelectorAll('.admin-copy-button');
21
+ if (!buttons.length) return;
22
+
23
+ Array.prototype.forEach.call(buttons, function (button) {
24
+ var field = document.getElementById(button.getAttribute('data-copy'));
25
+ if (!field) return;
26
+
27
+ button.hidden = false;
28
+ button.addEventListener('click', function () {
29
+ navigator.clipboard.writeText(field.value).then(
30
+ function () {
31
+ said(button, 'Copied');
32
+ },
33
+ function () {
34
+ /* Refused, usually because the document was not focused. Selecting
35
+ the text is then the useful thing to do: the keyboard shortcut
36
+ everybody already knows takes it from there. */
37
+ field.select();
38
+ said(button, 'Press ⌘C');
39
+ },
40
+ );
41
+ });
42
+ });
43
+
44
+ /* Say something on the button for a moment, then put its label back. */
45
+ function said(button, message) {
46
+ if (button.dataset.label === undefined) button.dataset.label = button.textContent;
47
+ button.textContent = message;
48
+ window.setTimeout(function () {
49
+ button.textContent = button.dataset.label;
50
+ }, 1500);
51
+ }
52
+ })();