ghost 4.47.3 → 5.0.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 (661) hide show
  1. package/Gruntfile.js +24 -24
  2. package/README.md +3 -2
  3. package/content/themes/casper/assets/built/global.css +1 -1
  4. package/content/themes/casper/assets/built/global.css.map +1 -1
  5. package/content/themes/casper/assets/built/screen.css +1 -1
  6. package/content/themes/casper/assets/built/screen.css.map +1 -1
  7. package/content/themes/casper/assets/css/global.css +2 -2
  8. package/content/themes/casper/assets/css/screen.css +412 -664
  9. package/content/themes/casper/author.hbs +48 -35
  10. package/content/themes/casper/default.hbs +5 -23
  11. package/content/themes/casper/error-404.hbs +1 -1
  12. package/content/themes/casper/index.hbs +29 -22
  13. package/content/themes/casper/package.json +25 -37
  14. package/content/themes/casper/page.hbs +12 -12
  15. package/content/themes/casper/partials/icons/facebook.hbs +1 -1
  16. package/content/themes/casper/partials/icons/twitter.hbs +1 -1
  17. package/content/themes/casper/partials/post-card.hbs +26 -40
  18. package/content/themes/casper/post.hbs +54 -50
  19. package/content/themes/casper/tag.hbs +42 -47
  20. package/core/boot.js +18 -15
  21. package/core/bridge.js +24 -25
  22. package/core/built/assets/ghost-dark-08acba9994ea4f9478dfdca2a97b36f1.css +1 -0
  23. package/core/built/assets/{ghost.min-a2a47979b0b61d15a3914042a7b1cd20.js → ghost.min-75bec566fbea362ed98811fe6d5b6e24.js} +1115 -1185
  24. package/core/built/assets/ghost.min-855c93486d789aa09dbe97f272672bf9.css +1 -0
  25. package/core/built/assets/icons/analytics.svg +14 -0
  26. package/core/built/assets/icons/calendar.svg +4 -1
  27. package/core/built/assets/icons/email-at.svg +1 -1
  28. package/core/built/assets/icons/email-name.svg +1 -1
  29. package/core/built/assets/icons/info.svg +1 -1
  30. package/core/built/assets/icons/twitter-logo.svg +3 -0
  31. package/core/built/assets/{vendor.min-97fd438f4772c5ec6bb30ad779b8530e.js → vendor.min-14ad7269e0529dd20f61d2989e69fa1e.js} +95 -90
  32. package/core/cli/README.md +88 -0
  33. package/core/cli/command.js +129 -0
  34. package/core/cli/repl.js +32 -0
  35. package/core/cli/timetravel.js +87 -0
  36. package/core/frontend/apps/amp/lib/helpers/amp_content.js +10 -12
  37. package/core/frontend/apps/amp/lib/router.js +2 -3
  38. package/core/frontend/helpers/body_class.js +2 -2
  39. package/core/frontend/helpers/excerpt.js +0 -2
  40. package/core/frontend/helpers/get.js +23 -24
  41. package/core/frontend/helpers/ghost_head.js +102 -103
  42. package/core/frontend/helpers/navigation.js +0 -2
  43. package/core/frontend/helpers/prev_post.js +20 -26
  44. package/core/frontend/helpers/price.js +2 -2
  45. package/core/frontend/meta/author-url.js +2 -2
  46. package/core/frontend/meta/description.js +3 -3
  47. package/core/frontend/meta/excerpt.js +1 -2
  48. package/core/frontend/meta/generate-excerpt.js +2 -11
  49. package/core/frontend/meta/paginated-url.js +1 -1
  50. package/core/frontend/meta/rss-url.js +0 -1
  51. package/core/frontend/meta/url.js +4 -4
  52. package/core/frontend/services/data/entry-lookup.js +1 -1
  53. package/core/frontend/services/data/fetch-data.js +1 -1
  54. package/core/frontend/services/helpers/handlebars.js +11 -12
  55. package/core/frontend/services/proxy.js +11 -1
  56. package/core/frontend/services/rendering/format-response.js +9 -2
  57. package/core/frontend/services/rendering/index.js +0 -4
  58. package/core/frontend/services/rendering/render-entry.js +1 -1
  59. package/core/frontend/services/rendering/templates.js +15 -5
  60. package/core/frontend/services/routing/CollectionRouter.js +2 -2
  61. package/core/frontend/services/routing/EmailRouter.js +2 -2
  62. package/core/frontend/services/routing/ParentRouter.js +1 -1
  63. package/core/frontend/services/routing/PreviewRouter.js +3 -3
  64. package/core/frontend/services/routing/{config/v4.js → config.js} +3 -5
  65. package/core/frontend/services/routing/controllers/channel.js +0 -10
  66. package/core/frontend/services/routing/controllers/collection.js +0 -9
  67. package/core/frontend/services/routing/controllers/email-post.js +2 -7
  68. package/core/frontend/services/routing/controllers/entry.js +1 -3
  69. package/core/frontend/services/routing/controllers/index.js +2 -2
  70. package/core/frontend/services/routing/controllers/{preview.js → previews.js} +3 -8
  71. package/core/frontend/services/routing/controllers/static.js +1 -6
  72. package/core/frontend/services/routing/router-manager.js +38 -20
  73. package/core/frontend/services/rss/generate-feed.js +7 -9
  74. package/core/frontend/services/theme-engine/active.js +0 -8
  75. package/core/frontend/services/theme-engine/config/defaults.json +1 -3
  76. package/core/frontend/services/theme-engine/middleware/index.js +0 -1
  77. package/core/frontend/services/theme-engine/middleware/update-global-template-options.js +0 -69
  78. package/core/frontend/services/theme-engine/middleware/update-local-template-options.js +3 -6
  79. package/core/frontend/web/middleware/static-theme.js +14 -6
  80. package/core/frontend/web/routes.js +9 -9
  81. package/core/frontend/web/site.js +15 -18
  82. package/core/server/adapters/scheduling/post-scheduling/index.js +1 -1
  83. package/core/server/api/README.md +2 -6
  84. package/core/server/api/canary/authentication.js +4 -3
  85. package/core/server/api/canary/{email-preview.js → email-previews.js} +9 -8
  86. package/core/server/api/canary/index.js +14 -18
  87. package/core/server/api/canary/members.js +4 -24
  88. package/core/server/api/{v3/actions.js → canary/newsletters-public.js} +6 -6
  89. package/core/server/api/canary/newsletters.js +1 -13
  90. package/core/server/api/canary/notifications.js +17 -22
  91. package/core/server/api/canary/offers-public.js +28 -0
  92. package/core/server/api/canary/pages.js +1 -1
  93. package/core/server/api/canary/posts.js +4 -8
  94. package/core/server/api/canary/{preview.js → previews.js} +1 -1
  95. package/core/server/api/canary/schedules.js +1 -1
  96. package/core/server/api/canary/session.js +1 -1
  97. package/core/server/api/canary/settings-public.js +3 -1
  98. package/core/server/api/canary/settings.js +28 -16
  99. package/core/server/api/canary/utils/index.js +2 -4
  100. package/core/server/api/canary/utils/serializers/input/index.js +0 -4
  101. package/core/server/api/canary/utils/serializers/input/members.js +46 -17
  102. package/core/server/api/canary/utils/serializers/input/pages.js +0 -17
  103. package/core/server/api/canary/utils/serializers/input/posts.js +1 -28
  104. package/core/server/api/canary/utils/serializers/input/settings.js +61 -142
  105. package/core/server/api/canary/utils/serializers/input/tiers.js +39 -4
  106. package/core/server/api/canary/utils/serializers/output/authentication.js +2 -6
  107. package/core/server/api/canary/utils/serializers/output/index.js +2 -10
  108. package/core/server/api/canary/utils/serializers/output/mappers/index.js +1 -0
  109. package/core/server/api/canary/utils/serializers/output/mappers/newsletters.js +24 -0
  110. package/core/server/api/canary/utils/serializers/output/mappers/pages.js +1 -1
  111. package/core/server/api/canary/utils/serializers/output/mappers/posts.js +9 -7
  112. package/core/server/api/canary/utils/serializers/output/mappers/settings.js +5 -31
  113. package/core/server/api/canary/utils/serializers/output/members.js +21 -11
  114. package/core/server/api/canary/utils/serializers/output/offers.js +9 -1
  115. package/core/server/api/canary/utils/serializers/output/{preview.js → previews.js} +2 -2
  116. package/core/server/api/canary/utils/serializers/output/settings.js +6 -14
  117. package/core/server/api/canary/utils/serializers/output/site.js +0 -1
  118. package/core/server/api/canary/utils/serializers/output/tiers.js +21 -62
  119. package/core/server/api/canary/utils/serializers/output/utils/clean.js +5 -10
  120. package/core/server/api/canary/utils/serializers/output/utils/extra-attrs.js +0 -126
  121. package/core/server/api/canary/utils/serializers/output/utils/post-gating.js +1 -1
  122. package/core/server/api/canary/utils/serializers/output/utils/url.js +0 -5
  123. package/core/server/api/canary/utils/validators/input/index.js +2 -2
  124. package/core/server/api/canary/utils/validators/input/{passwordreset.js → password_reset.js} +2 -2
  125. package/core/server/api/canary/utils/validators/input/settings.js +2 -23
  126. package/core/server/api/canary/utils/validators/utils/json-schema.js +1 -2
  127. package/core/server/api/index.js +1 -7
  128. package/core/server/api/shared/serializers/input/utils/settings-key-group-mapper.js +2 -2
  129. package/core/server/api/shared/serializers/input/utils/settings-key-type-mapper.js +2 -4
  130. package/core/server/data/db/connection.js +0 -13
  131. package/core/server/data/exporter/index.js +4 -1
  132. package/core/server/data/exporter/table-lists.js +13 -15
  133. package/core/server/data/importer/importers/data/base.js +16 -7
  134. package/core/server/data/importer/importers/data/data-importer.js +38 -1
  135. package/core/server/data/importer/importers/data/newsletters.js +45 -0
  136. package/core/server/data/importer/importers/data/posts.js +40 -12
  137. package/core/server/data/importer/importers/data/products.js +68 -0
  138. package/core/server/data/importer/importers/data/settings.js +10 -10
  139. package/core/server/data/importer/importers/data/stripe-prices.js +59 -0
  140. package/core/server/data/importer/importers/data/stripe-products.js +61 -0
  141. package/core/server/data/migrations/utils/constants.js +3 -0
  142. package/core/server/data/migrations/utils/index.js +10 -0
  143. package/core/server/data/migrations/utils/migrations.js +156 -0
  144. package/core/server/data/migrations/utils/permissions.js +291 -0
  145. package/core/server/data/migrations/utils/schema.js +158 -0
  146. package/core/server/data/migrations/utils/settings.js +59 -0
  147. package/core/server/data/migrations/utils/tables.js +94 -0
  148. package/core/server/data/migrations/versions/1.25/01-final-v1.js +2 -0
  149. package/core/server/data/migrations/versions/1.25/02-noop.js +6 -0
  150. package/core/server/data/migrations/versions/2.37/01-final-v2.js +2 -0
  151. package/core/server/data/migrations/versions/3.41/01-final-v3.js +2 -0
  152. package/core/server/data/migrations/versions/4.0/22-solve-orphaned-webhooks.js +3 -9
  153. package/core/server/data/migrations/versions/4.0/23-regenerate-posts-html.js +2 -11
  154. package/core/server/data/migrations/versions/4.11/02-add-email-verification-required-setting.js +1 -1
  155. package/core/server/data/migrations/versions/4.12/02-fix-member-statuses.js +1 -1
  156. package/core/server/data/migrations/versions/4.14/02-fix-free-members-status-events.js +1 -1
  157. package/core/server/data/migrations/versions/4.22/01-add-is-launch-complete-setting.js +1 -1
  158. package/core/server/data/migrations/versions/4.22/02-update-launch-complete-setting-from-user-data.js +1 -1
  159. package/core/server/data/migrations/versions/4.35/2022-02-02-10-38-add-default-content-visibility-tiers-setting.js +1 -1
  160. package/core/server/data/migrations/versions/4.45/2022-04-21-02-55-add-notifications-key-entry-to-settings-table.js +1 -1
  161. package/core/server/data/migrations/versions/4.6/01-remove-comped-status.js +1 -1
  162. package/core/server/data/migrations/versions/4.7/03-add-labs-setting.js +1 -1
  163. package/core/server/data/migrations/versions/4.9/05-fix-missed-mobiledoc-url-transforms.js +1 -1
  164. package/core/server/data/migrations/versions/4.9/06-add-comped-status.js +1 -1
  165. package/core/server/data/migrations/versions/4.9/07-update-comped-members-status-events.js +1 -1
  166. package/core/server/data/migrations/versions/5.0/2022-03-14-12-33-delete-duplicate-offer-redemptions.js +36 -0
  167. package/core/server/data/migrations/versions/5.0/2022-03-28-15-25-backfill-mrr-adjustments-for-offers.js +108 -0
  168. package/core/server/data/migrations/versions/5.0/2022-04-25-10-32-backfill-mrr-for-discounted-subscriptions.js +44 -0
  169. package/core/server/data/migrations/versions/5.0/2022-04-26-15-44-backfill-mrr-events-for-canceled-subscriptions.js +73 -0
  170. package/core/server/data/migrations/versions/5.0/2022-04-27-11-26-backfill-mrr-for-canceled-subscriptions.js +31 -0
  171. package/core/server/data/migrations/versions/5.0/2022-04-28-03-26-remove-author-id-column-from-posts-table.js +7 -0
  172. package/core/server/data/migrations/versions/5.0/2022-05-03-09-39-drop-nullable-subscribe-event-newsletter-id.js +4 -0
  173. package/core/server/data/migrations/versions/5.0/2022-05-04-15-24-map-existing-emails-to-default-newsletter.js +44 -0
  174. package/core/server/data/migrations/versions/5.0/2022-05-05-13-13-migrate-legacy-recipient-filters.js +30 -0
  175. package/core/server/data/migrations/versions/5.0/2022-05-05-13-29-add-newsletters-admin-integration-permission-roles.js +20 -0
  176. package/core/server/data/migrations/versions/5.0/2022-05-05-15-17-drop-oauth-table.js +3 -0
  177. package/core/server/data/migrations/versions/5.0/2022-05-06-08-16-cleanup-client-subscriber-permissions.js +68 -0
  178. package/core/server/data/migrations/versions/5.0/2022-05-06-13-22-add-frontend-integration.js +68 -0
  179. package/core/server/data/migrations/versions/5.0/2022-05-09-10-00-drop-members-subscribed-column.js +18 -0
  180. package/core/server/data/migrations/versions/5.0/2022-05-09-14-17-cleanup-invalid-users-status.js +17 -0
  181. package/core/server/data/migrations/versions/5.0/2022-05-10-08-33-drop-members-analytics-table.js +3 -0
  182. package/core/server/data/migrations/versions/5.0/2022-05-10-14-57-cleanup-invalid-posts-status.js +17 -0
  183. package/core/server/data/migrations/versions/5.0/2022-05-11-12-08-drop-webhooks-status-column.js +18 -0
  184. package/core/server/data/migrations/versions/5.0/2022-05-11-13-12-rename-settings.js +51 -0
  185. package/core/server/data/migrations/versions/5.0/2022-05-11-16-36-remove-unused-settings.js +54 -0
  186. package/core/server/data/migrations/versions/5.0/2022-05-12-10-29-add-newsletter-permissions-for-editors-and-authors.js +20 -0
  187. package/core/server/data/migrations/versions/5.0/2022-05-12-13-51-add-label-permissions-for-authors.js +12 -0
  188. package/core/server/data/migrations/versions/5.0/2022-05-13-11-38-drop-none-email-recipient-filter.js +28 -0
  189. package/core/server/data/migrations/versions/5.0/2022-05-21-00-00-regenerate-posts-html.js +70 -0
  190. package/core/server/data/schema/commands.js +35 -3
  191. package/core/server/data/schema/default-settings/default-settings.json +2 -159
  192. package/core/server/data/schema/fixtures/fixture-manager.js +11 -2
  193. package/core/server/data/schema/fixtures/fixtures.json +16 -7
  194. package/core/server/data/schema/schema.js +26 -38
  195. package/core/server/data/schema/validator.js +2 -0
  196. package/core/server/ghost-server.js +34 -64
  197. package/core/server/lib/image/gravatar.js +25 -9
  198. package/core/server/models/api-key.js +3 -26
  199. package/core/server/models/base/plugins/bulk-operations.js +14 -6
  200. package/core/server/models/integration.js +17 -0
  201. package/core/server/models/member.js +8 -4
  202. package/core/server/models/newsletter.js +27 -0
  203. package/core/server/models/post.js +30 -32
  204. package/core/server/models/relations/authors.js +74 -100
  205. package/core/server/models/settings.js +6 -2
  206. package/core/server/models/webhook.js +2 -1
  207. package/core/server/run-update-check.js +1 -1
  208. package/core/server/services/api-version-compatibility/index.js +24 -18
  209. package/core/server/services/api-version-compatibility/legacy-api-path-match.js +23 -0
  210. package/core/server/services/api-version-compatibility/mw-version-rewrites.js +36 -0
  211. package/core/server/services/auth/api-key/admin.js +8 -7
  212. package/core/server/services/auth/passwordreset.js +3 -3
  213. package/core/server/services/auth/session/express-session.js +1 -1
  214. package/core/server/services/auth/session/index.js +1 -1
  215. package/core/server/services/auth/setup.js +8 -8
  216. package/core/server/services/bulk-email/bulk-email-processor.js +5 -1
  217. package/core/server/services/frontend-data-service/frontend-data-service.js +27 -0
  218. package/core/server/services/frontend-data-service/index.js +6 -0
  219. package/core/server/services/mail/index.js +14 -1
  220. package/core/server/services/mega/email-preview.js +14 -15
  221. package/core/server/services/mega/mega.js +36 -50
  222. package/core/server/services/mega/post-email-serializer.js +18 -28
  223. package/core/server/services/members/api.js +0 -3
  224. package/core/server/services/members/config.js +0 -49
  225. package/core/server/services/members/exporter/query.js +88 -0
  226. package/core/server/services/members/middleware.js +3 -135
  227. package/core/server/services/members/service.js +2 -29
  228. package/core/server/services/members/settings.js +3 -9
  229. package/core/server/services/newsletters/service.js +78 -10
  230. package/core/server/services/posts/post-scheduling-service.js +5 -17
  231. package/core/server/services/posts/posts-service.js +15 -62
  232. package/core/server/services/public-config/site.js +0 -6
  233. package/core/server/services/route-settings/index.js +0 -3
  234. package/core/server/services/route-settings/settings-loader.js +10 -34
  235. package/core/server/services/route-settings/validate.js +1 -7
  236. package/core/server/services/settings/index.js +1 -77
  237. package/core/server/services/settings/settings-service.js +184 -0
  238. package/core/server/services/themes/validate.js +1 -1
  239. package/core/server/services/url/Resources.js +1 -3
  240. package/core/server/services/url/UrlGenerator.js +1 -1
  241. package/core/server/services/url/UrlService.js +6 -20
  242. package/core/server/services/url/{configs/v2.js → config.js} +0 -0
  243. package/core/server/services/users.js +2 -2
  244. package/core/server/services/webhooks/listen.js +5 -2
  245. package/core/server/services/webhooks/serialize.js +6 -7
  246. package/core/server/services/webhooks/trigger.js +62 -47
  247. package/core/server/update-check.js +1 -1
  248. package/core/server/web/admin/app.js +1 -1
  249. package/core/server/web/admin/views/default-prod.html +4 -4
  250. package/core/server/web/admin/views/default.html +4 -4
  251. package/core/server/web/api/app.js +3 -15
  252. package/core/server/web/api/canary/admin/app.js +1 -1
  253. package/core/server/web/api/canary/admin/middleware.js +3 -1
  254. package/core/server/web/api/canary/admin/routes.js +7 -23
  255. package/core/server/web/api/canary/content/app.js +2 -3
  256. package/core/server/web/api/canary/content/routes.js +5 -4
  257. package/core/server/web/members/app.js +5 -4
  258. package/core/server/web/parent/backend.js +0 -1
  259. package/core/server/web/parent/frontend.js +5 -6
  260. package/core/server/web/parent/middleware/ghost-locals.js +0 -3
  261. package/core/shared/config/defaults.json +5 -2
  262. package/core/shared/config/overrides.json +1 -27
  263. package/core/shared/html-to-plaintext.js +74 -10
  264. package/core/shared/labs.js +4 -8
  265. package/core/shared/settings-cache/cache.js +38 -4
  266. package/core/shared/settings-cache/public.js +13 -7
  267. package/core/shared/url-utils.js +0 -2
  268. package/ghost.js +6 -0
  269. package/package.json +66 -64
  270. package/yarn.lock +751 -1295
  271. package/core/built/assets/ghost-dark-c94ae212747200ca4bafc37cfb0714d8.css +0 -1
  272. package/core/built/assets/ghost.min-4084931bc22e794fe3722139050a80b3.css +0 -1
  273. package/core/frontend/helpers/author.js +0 -41
  274. package/core/frontend/helpers/products.js +0 -65
  275. package/core/frontend/services/rendering/secure.js +0 -19
  276. package/core/frontend/services/routing/config/canary.js +0 -61
  277. package/core/frontend/services/routing/config/v2.js +0 -54
  278. package/core/frontend/services/routing/config/v3.js +0 -54
  279. package/core/frontend/services/theme-engine/engines/create.js +0 -45
  280. package/core/frontend/services/theme-engine/engines/index.js +0 -5
  281. package/core/frontend/services/theme-engine/middleware/update-local-template-data.js +0 -9
  282. package/core/server/api/canary/products-public.js +0 -34
  283. package/core/server/api/canary/products.js +0 -116
  284. package/core/server/api/canary/utils/serializers/input/products.js +0 -28
  285. package/core/server/api/canary/utils/serializers/output/email-previews.js +0 -7
  286. package/core/server/api/canary/utils/serializers/output/products.js +0 -213
  287. package/core/server/api/v2/actions.js +0 -38
  288. package/core/server/api/v2/authentication.js +0 -191
  289. package/core/server/api/v2/authors-public.js +0 -69
  290. package/core/server/api/v2/config.js +0 -12
  291. package/core/server/api/v2/db.js +0 -120
  292. package/core/server/api/v2/images.js +0 -20
  293. package/core/server/api/v2/index.js +0 -147
  294. package/core/server/api/v2/integrations.js +0 -144
  295. package/core/server/api/v2/invites.js +0 -126
  296. package/core/server/api/v2/mail.js +0 -66
  297. package/core/server/api/v2/notifications.js +0 -96
  298. package/core/server/api/v2/oembed.js +0 -186
  299. package/core/server/api/v2/pages-public.js +0 -78
  300. package/core/server/api/v2/pages.js +0 -197
  301. package/core/server/api/v2/posts-public.js +0 -78
  302. package/core/server/api/v2/posts.js +0 -192
  303. package/core/server/api/v2/preview.js +0 -46
  304. package/core/server/api/v2/redirects.js +0 -28
  305. package/core/server/api/v2/roles.js +0 -19
  306. package/core/server/api/v2/schedules.js +0 -77
  307. package/core/server/api/v2/session.js +0 -70
  308. package/core/server/api/v2/settings-public.js +0 -17
  309. package/core/server/api/v2/settings.js +0 -195
  310. package/core/server/api/v2/site.js +0 -14
  311. package/core/server/api/v2/slack.js +0 -12
  312. package/core/server/api/v2/slugs.js +0 -51
  313. package/core/server/api/v2/tags-public.js +0 -71
  314. package/core/server/api/v2/tags.js +0 -159
  315. package/core/server/api/v2/themes.js +0 -133
  316. package/core/server/api/v2/users.js +0 -179
  317. package/core/server/api/v2/utils/index.js +0 -34
  318. package/core/server/api/v2/utils/permissions.js +0 -112
  319. package/core/server/api/v2/utils/serializers/index.js +0 -9
  320. package/core/server/api/v2/utils/serializers/input/db.js +0 -20
  321. package/core/server/api/v2/utils/serializers/input/index.js +0 -33
  322. package/core/server/api/v2/utils/serializers/input/integrations.js +0 -33
  323. package/core/server/api/v2/utils/serializers/input/pages.js +0 -203
  324. package/core/server/api/v2/utils/serializers/input/posts.js +0 -218
  325. package/core/server/api/v2/utils/serializers/input/settings.js +0 -152
  326. package/core/server/api/v2/utils/serializers/input/tags.js +0 -35
  327. package/core/server/api/v2/utils/serializers/input/users.js +0 -26
  328. package/core/server/api/v2/utils/serializers/input/utils/url.js +0 -71
  329. package/core/server/api/v2/utils/serializers/input/webhooks.js +0 -12
  330. package/core/server/api/v2/utils/serializers/output/actions.js +0 -13
  331. package/core/server/api/v2/utils/serializers/output/all.js +0 -25
  332. package/core/server/api/v2/utils/serializers/output/authentication.js +0 -68
  333. package/core/server/api/v2/utils/serializers/output/authors.js +0 -21
  334. package/core/server/api/v2/utils/serializers/output/config.js +0 -21
  335. package/core/server/api/v2/utils/serializers/output/db.js +0 -40
  336. package/core/server/api/v2/utils/serializers/output/images.js +0 -19
  337. package/core/server/api/v2/utils/serializers/output/index.js +0 -107
  338. package/core/server/api/v2/utils/serializers/output/integrations.js +0 -35
  339. package/core/server/api/v2/utils/serializers/output/invites.js +0 -24
  340. package/core/server/api/v2/utils/serializers/output/mail.js +0 -19
  341. package/core/server/api/v2/utils/serializers/output/notifications.js +0 -29
  342. package/core/server/api/v2/utils/serializers/output/oembed.js +0 -8
  343. package/core/server/api/v2/utils/serializers/output/pages.js +0 -26
  344. package/core/server/api/v2/utils/serializers/output/posts.js +0 -26
  345. package/core/server/api/v2/utils/serializers/output/preview.js +0 -9
  346. package/core/server/api/v2/utils/serializers/output/redirects.js +0 -5
  347. package/core/server/api/v2/utils/serializers/output/roles.js +0 -29
  348. package/core/server/api/v2/utils/serializers/output/schedules.js +0 -5
  349. package/core/server/api/v2/utils/serializers/output/settings.js +0 -61
  350. package/core/server/api/v2/utils/serializers/output/site.js +0 -16
  351. package/core/server/api/v2/utils/serializers/output/slugs.js +0 -11
  352. package/core/server/api/v2/utils/serializers/output/tags.js +0 -25
  353. package/core/server/api/v2/utils/serializers/output/themes.js +0 -25
  354. package/core/server/api/v2/utils/serializers/output/users.js +0 -45
  355. package/core/server/api/v2/utils/serializers/output/utils/clean.js +0 -174
  356. package/core/server/api/v2/utils/serializers/output/utils/date.js +0 -21
  357. package/core/server/api/v2/utils/serializers/output/utils/extra-attrs.js +0 -161
  358. package/core/server/api/v2/utils/serializers/output/utils/mapper.js +0 -136
  359. package/core/server/api/v2/utils/serializers/output/utils/post-gating.js +0 -29
  360. package/core/server/api/v2/utils/serializers/output/utils/settings-type-group-mapper.js +0 -24
  361. package/core/server/api/v2/utils/serializers/output/utils/url.js +0 -67
  362. package/core/server/api/v2/utils/serializers/output/webhooks.js +0 -15
  363. package/core/server/api/v2/utils/validators/index.js +0 -9
  364. package/core/server/api/v2/utils/validators/input/images.js +0 -85
  365. package/core/server/api/v2/utils/validators/input/index.js +0 -45
  366. package/core/server/api/v2/utils/validators/input/invitations.js +0 -49
  367. package/core/server/api/v2/utils/validators/input/invites.js +0 -21
  368. package/core/server/api/v2/utils/validators/input/oembed.js +0 -17
  369. package/core/server/api/v2/utils/validators/input/pages.js +0 -46
  370. package/core/server/api/v2/utils/validators/input/passwordreset.js +0 -36
  371. package/core/server/api/v2/utils/validators/input/posts.js +0 -46
  372. package/core/server/api/v2/utils/validators/input/settings.js +0 -79
  373. package/core/server/api/v2/utils/validators/input/setup.js +0 -17
  374. package/core/server/api/v2/utils/validators/input/tags.js +0 -6
  375. package/core/server/api/v2/utils/validators/input/users.js +0 -21
  376. package/core/server/api/v2/utils/validators/output/index.js +0 -1
  377. package/core/server/api/v2/utils/validators/utils/json-schema.js +0 -17
  378. package/core/server/api/v2/webhooks.js +0 -163
  379. package/core/server/api/v3/authentication.js +0 -192
  380. package/core/server/api/v3/authors-public.js +0 -69
  381. package/core/server/api/v3/config.js +0 -12
  382. package/core/server/api/v3/db.js +0 -131
  383. package/core/server/api/v3/email-preview.js +0 -74
  384. package/core/server/api/v3/email.js +0 -65
  385. package/core/server/api/v3/identities.js +0 -36
  386. package/core/server/api/v3/images.js +0 -20
  387. package/core/server/api/v3/index.js +0 -179
  388. package/core/server/api/v3/integrations.js +0 -150
  389. package/core/server/api/v3/invites.js +0 -125
  390. package/core/server/api/v3/labels.js +0 -162
  391. package/core/server/api/v3/mail.js +0 -66
  392. package/core/server/api/v3/memberSigninUrls.js +0 -33
  393. package/core/server/api/v3/members.js +0 -412
  394. package/core/server/api/v3/membersStripeConnect.js +0 -29
  395. package/core/server/api/v3/notifications.js +0 -96
  396. package/core/server/api/v3/oembed.js +0 -23
  397. package/core/server/api/v3/pages-public.js +0 -77
  398. package/core/server/api/v3/pages.js +0 -199
  399. package/core/server/api/v3/posts-public.js +0 -76
  400. package/core/server/api/v3/posts.js +0 -200
  401. package/core/server/api/v3/preview.js +0 -44
  402. package/core/server/api/v3/redirects.js +0 -47
  403. package/core/server/api/v3/roles.js +0 -19
  404. package/core/server/api/v3/schedules.js +0 -77
  405. package/core/server/api/v3/session.js +0 -70
  406. package/core/server/api/v3/settings-public.js +0 -17
  407. package/core/server/api/v3/settings.js +0 -224
  408. package/core/server/api/v3/site.js +0 -14
  409. package/core/server/api/v3/slack.js +0 -12
  410. package/core/server/api/v3/slugs.js +0 -48
  411. package/core/server/api/v3/snippets.js +0 -115
  412. package/core/server/api/v3/tags-public.js +0 -71
  413. package/core/server/api/v3/tags.js +0 -159
  414. package/core/server/api/v3/themes.js +0 -131
  415. package/core/server/api/v3/users.js +0 -242
  416. package/core/server/api/v3/utils/index.js +0 -34
  417. package/core/server/api/v3/utils/permissions.js +0 -116
  418. package/core/server/api/v3/utils/serializers/index.js +0 -9
  419. package/core/server/api/v3/utils/serializers/input/authors.js +0 -31
  420. package/core/server/api/v3/utils/serializers/input/db.js +0 -20
  421. package/core/server/api/v3/utils/serializers/input/index.js +0 -41
  422. package/core/server/api/v3/utils/serializers/input/integrations.js +0 -33
  423. package/core/server/api/v3/utils/serializers/input/members.js +0 -62
  424. package/core/server/api/v3/utils/serializers/input/pages.js +0 -208
  425. package/core/server/api/v3/utils/serializers/input/posts.js +0 -242
  426. package/core/server/api/v3/utils/serializers/input/settings.js +0 -168
  427. package/core/server/api/v3/utils/serializers/input/tags.js +0 -42
  428. package/core/server/api/v3/utils/serializers/input/users.js +0 -26
  429. package/core/server/api/v3/utils/serializers/input/utils/slug-filter-order.js +0 -18
  430. package/core/server/api/v3/utils/serializers/input/utils/url.js +0 -71
  431. package/core/server/api/v3/utils/serializers/input/webhooks.js +0 -12
  432. package/core/server/api/v3/utils/serializers/output/actions.js +0 -13
  433. package/core/server/api/v3/utils/serializers/output/all.js +0 -25
  434. package/core/server/api/v3/utils/serializers/output/authentication.js +0 -69
  435. package/core/server/api/v3/utils/serializers/output/authors.js +0 -21
  436. package/core/server/api/v3/utils/serializers/output/config.js +0 -25
  437. package/core/server/api/v3/utils/serializers/output/db.js +0 -40
  438. package/core/server/api/v3/utils/serializers/output/email-preview.js +0 -7
  439. package/core/server/api/v3/utils/serializers/output/emails.js +0 -13
  440. package/core/server/api/v3/utils/serializers/output/identities.js +0 -7
  441. package/core/server/api/v3/utils/serializers/output/images.js +0 -19
  442. package/core/server/api/v3/utils/serializers/output/index.js +0 -135
  443. package/core/server/api/v3/utils/serializers/output/integrations.js +0 -35
  444. package/core/server/api/v3/utils/serializers/output/invites.js +0 -24
  445. package/core/server/api/v3/utils/serializers/output/labels.js +0 -25
  446. package/core/server/api/v3/utils/serializers/output/mail.js +0 -19
  447. package/core/server/api/v3/utils/serializers/output/member-signin_urls.js +0 -7
  448. package/core/server/api/v3/utils/serializers/output/members.js +0 -228
  449. package/core/server/api/v3/utils/serializers/output/notifications.js +0 -29
  450. package/core/server/api/v3/utils/serializers/output/oembed.js +0 -8
  451. package/core/server/api/v3/utils/serializers/output/pages.js +0 -26
  452. package/core/server/api/v3/utils/serializers/output/posts.js +0 -26
  453. package/core/server/api/v3/utils/serializers/output/preview.js +0 -10
  454. package/core/server/api/v3/utils/serializers/output/redirects.js +0 -5
  455. package/core/server/api/v3/utils/serializers/output/roles.js +0 -29
  456. package/core/server/api/v3/utils/serializers/output/schedules.js +0 -5
  457. package/core/server/api/v3/utils/serializers/output/settings.js +0 -65
  458. package/core/server/api/v3/utils/serializers/output/site.js +0 -19
  459. package/core/server/api/v3/utils/serializers/output/slugs.js +0 -11
  460. package/core/server/api/v3/utils/serializers/output/snippets.js +0 -97
  461. package/core/server/api/v3/utils/serializers/output/tags.js +0 -25
  462. package/core/server/api/v3/utils/serializers/output/themes.js +0 -25
  463. package/core/server/api/v3/utils/serializers/output/users.js +0 -74
  464. package/core/server/api/v3/utils/serializers/output/utils/clean.js +0 -166
  465. package/core/server/api/v3/utils/serializers/output/utils/date.js +0 -21
  466. package/core/server/api/v3/utils/serializers/output/utils/extra-attrs.js +0 -174
  467. package/core/server/api/v3/utils/serializers/output/utils/mapper.js +0 -197
  468. package/core/server/api/v3/utils/serializers/output/utils/post-gating.js +0 -39
  469. package/core/server/api/v3/utils/serializers/output/utils/settings-type-group-mapper.js +0 -24
  470. package/core/server/api/v3/utils/serializers/output/utils/url.js +0 -67
  471. package/core/server/api/v3/utils/serializers/output/webhooks.js +0 -15
  472. package/core/server/api/v3/utils/validators/index.js +0 -9
  473. package/core/server/api/v3/utils/validators/input/images.js +0 -85
  474. package/core/server/api/v3/utils/validators/input/index.js +0 -61
  475. package/core/server/api/v3/utils/validators/input/invitations.js +0 -49
  476. package/core/server/api/v3/utils/validators/input/invites.js +0 -21
  477. package/core/server/api/v3/utils/validators/input/labels.js +0 -6
  478. package/core/server/api/v3/utils/validators/input/members.js +0 -6
  479. package/core/server/api/v3/utils/validators/input/oembed.js +0 -17
  480. package/core/server/api/v3/utils/validators/input/pages.js +0 -46
  481. package/core/server/api/v3/utils/validators/input/passwordreset.js +0 -36
  482. package/core/server/api/v3/utils/validators/input/posts.js +0 -46
  483. package/core/server/api/v3/utils/validators/input/settings.js +0 -89
  484. package/core/server/api/v3/utils/validators/input/setup.js +0 -17
  485. package/core/server/api/v3/utils/validators/input/snippets.js +0 -6
  486. package/core/server/api/v3/utils/validators/input/tags.js +0 -6
  487. package/core/server/api/v3/utils/validators/input/users.js +0 -22
  488. package/core/server/api/v3/utils/validators/input/webhooks.js +0 -27
  489. package/core/server/api/v3/utils/validators/output/index.js +0 -1
  490. package/core/server/api/v3/utils/validators/utils/json-schema.js +0 -17
  491. package/core/server/api/v3/webhooks.js +0 -130
  492. package/core/server/data/migrations/utils.js +0 -571
  493. package/core/server/data/migrations/versions/1.13/1-custom-template-post.js +0 -7
  494. package/core/server/data/migrations/versions/1.13/2-theme-permissions.js +0 -58
  495. package/core/server/data/migrations/versions/1.18/1-add-webhooks-table.js +0 -2
  496. package/core/server/data/migrations/versions/1.19/1-webhook-permissions.js +0 -31
  497. package/core/server/data/migrations/versions/1.20/1-remove-settings-keys.js +0 -65
  498. package/core/server/data/migrations/versions/1.21/1-add-contributor-role.js +0 -58
  499. package/core/server/data/migrations/versions/1.22/1-multiple-authors-DDL.js +0 -2
  500. package/core/server/data/migrations/versions/1.22/1-multiple-authors-DML.js +0 -63
  501. package/core/server/data/migrations/versions/1.25/1-update-koenig-beta-html.js +0 -70
  502. package/core/server/data/migrations/versions/1.25/2-demo-post.js +0 -55
  503. package/core/server/data/migrations/versions/1.3/1-post-excerpt.js +0 -7
  504. package/core/server/data/migrations/versions/1.4/1-codeinjection-post.js +0 -14
  505. package/core/server/data/migrations/versions/1.5/1-og-twitter-post.js +0 -34
  506. package/core/server/data/migrations/versions/1.7/1-add-backup-client.js +0 -10
  507. package/core/server/data/migrations/versions/1.9/1-add-permissions-redirect.js +0 -23
  508. package/core/server/data/migrations/versions/2.0/1-rename-amp-column.js +0 -44
  509. package/core/server/data/migrations/versions/2.0/2-update-posts.js +0 -7
  510. package/core/server/data/migrations/versions/2.0/3-remove-koenig-labs.js +0 -42
  511. package/core/server/data/migrations/versions/2.0/4-permalink-setting.js +0 -85
  512. package/core/server/data/migrations/versions/2.0/5-remove-demo-post.js +0 -85
  513. package/core/server/data/migrations/versions/2.0/6-replace-fixture-posts.js +0 -10
  514. package/core/server/data/migrations/versions/2.13/1-remove-empty-strings.js +0 -5
  515. package/core/server/data/migrations/versions/2.14/1-add-actions-table.js +0 -2
  516. package/core/server/data/migrations/versions/2.14/2-add-actions-permissions.js +0 -12
  517. package/core/server/data/migrations/versions/2.15/1-add-type-column-to-integrations.js +0 -8
  518. package/core/server/data/migrations/versions/2.15/2-insert-zapier-integration.js +0 -69
  519. package/core/server/data/migrations/versions/2.16/1-add-members-perrmissions.js +0 -1
  520. package/core/server/data/migrations/versions/2.17/1-normalize-settings.js +0 -74
  521. package/core/server/data/migrations/versions/2.17/2-posts-add-canonical-url.js +0 -7
  522. package/core/server/data/migrations/versions/2.18/1-restore-settings-from-backup.js +0 -134
  523. package/core/server/data/migrations/versions/2.2/1-add-sessions-table.js +0 -2
  524. package/core/server/data/migrations/versions/2.2/2-add-integrations-and-api-key-tables.js +0 -6
  525. package/core/server/data/migrations/versions/2.2/3-insert-admin-integration-role.js +0 -83
  526. package/core/server/data/migrations/versions/2.2/4-insert-integration-and-api-key-permissions.js +0 -77
  527. package/core/server/data/migrations/versions/2.2/5-add-mobiledoc-revisions-table.js +0 -2
  528. package/core/server/data/migrations/versions/2.21/1-update-editor-permissions.js +0 -28
  529. package/core/server/data/migrations/versions/2.22/1-add-member-permissions-to-roles.js +0 -47
  530. package/core/server/data/migrations/versions/2.27/1-insert-ghost-db-backup-role.js +0 -83
  531. package/core/server/data/migrations/versions/2.27/2-insert-db-backup-integration.js +0 -69
  532. package/core/server/data/migrations/versions/2.27/3-add-subdirectory-to-relative-canonical-urls.js +0 -100
  533. package/core/server/data/migrations/versions/2.28/1-add-db-backup-content-permission.js +0 -9
  534. package/core/server/data/migrations/versions/2.28/2-add-db-backup-content-permission-to-roles.js +0 -15
  535. package/core/server/data/migrations/versions/2.28/3-insert-ghost-scheduler-role.js +0 -84
  536. package/core/server/data/migrations/versions/2.28/4-insert-scheduler-integration.js +0 -69
  537. package/core/server/data/migrations/versions/2.28/5-add-scheduler-permission-to-roles.js +0 -23
  538. package/core/server/data/migrations/versions/2.28/6-add-type-column.js +0 -6
  539. package/core/server/data/migrations/versions/2.28/7-populate-type-column.js +0 -6
  540. package/core/server/data/migrations/versions/2.28/8-remove-page-column.js +0 -6
  541. package/core/server/data/migrations/versions/2.29/1-add-post-page-column.js +0 -20
  542. package/core/server/data/migrations/versions/2.29/2-populate-post-page-column.js +0 -98
  543. package/core/server/data/migrations/versions/2.29/3-remove-page-type-column.js +0 -15
  544. package/core/server/data/migrations/versions/2.3/1-add-webhook-columns.js +0 -45
  545. package/core/server/data/migrations/versions/2.3/2-add-webhook-edit-permission.js +0 -9
  546. package/core/server/data/migrations/versions/2.31/1-remove-name-and-password-from-members-table.js +0 -15
  547. package/core/server/data/migrations/versions/2.32/01-add-members-stripe-customers-table.js +0 -4
  548. package/core/server/data/migrations/versions/2.32/02-add-name-to-members-table.js +0 -7
  549. package/core/server/data/migrations/versions/2.33/01-correct-members-stripe-customers-table.js +0 -37
  550. package/core/server/data/migrations/versions/2.34/01-add-stripe-customers-subscriptions-table.js +0 -2
  551. package/core/server/data/migrations/versions/2.34/02-add-email-to-members-stripe-customers-table.js +0 -7
  552. package/core/server/data/migrations/versions/2.34/03-add-name-to-members-stripe-customers-table.js +0 -7
  553. package/core/server/data/migrations/versions/2.35/01-add-note-to-members-table.js +0 -7
  554. package/core/server/data/migrations/versions/2.37/01-add-self-signup-and-from address-to-members-settings.js +0 -67
  555. package/core/server/data/migrations/versions/2.6/1-add-webhook-permission-roles.js +0 -31
  556. package/core/server/data/migrations/versions/2.8/1-add-members-table.js +0 -2
  557. package/core/server/data/migrations/versions/3.0/01-remove-user-ghost-auth-columns.js +0 -14
  558. package/core/server/data/migrations/versions/3.0/02-drop-token-auth-tables.js +0 -31
  559. package/core/server/data/migrations/versions/3.0/03-drop-client-auth-tables.js +0 -35
  560. package/core/server/data/migrations/versions/3.0/04-add-posts-meta-table.js +0 -2
  561. package/core/server/data/migrations/versions/3.0/05-populate-posts-meta-table.js +0 -83
  562. package/core/server/data/migrations/versions/3.0/06-remove-posts-meta-columns.js +0 -44
  563. package/core/server/data/migrations/versions/3.0/07-add-posts-type-column.js +0 -8
  564. package/core/server/data/migrations/versions/3.0/08-populate-posts-type-column.js +0 -94
  565. package/core/server/data/migrations/versions/3.0/09-remove-posts-page-column.js +0 -7
  566. package/core/server/data/migrations/versions/3.0/10-remove-empty-strings.js +0 -81
  567. package/core/server/data/migrations/versions/3.0/11-update-posts-html.js +0 -7
  568. package/core/server/data/migrations/versions/3.0/12-populate-members-table-from-subscribers.js +0 -54
  569. package/core/server/data/migrations/versions/3.0/13-drop-subscribers-table.js +0 -34
  570. package/core/server/data/migrations/versions/3.0/14-remove-subscribers-flag.js +0 -24
  571. package/core/server/data/migrations/versions/3.1/01-add-send-email-when-published-to-posts.js +0 -7
  572. package/core/server/data/migrations/versions/3.1/02-add-email-subject-to-posts-meta.js +0 -7
  573. package/core/server/data/migrations/versions/3.1/03-add-email-preview-permissions.js +0 -18
  574. package/core/server/data/migrations/versions/3.1/04-add-subscribed-flag-to-members.js +0 -7
  575. package/core/server/data/migrations/versions/3.1/05-add-emails-table.js +0 -2
  576. package/core/server/data/migrations/versions/3.1/06-add-email-permissions.js +0 -15
  577. package/core/server/data/migrations/versions/3.1/07-add-uuid-field-to-members.js +0 -8
  578. package/core/server/data/migrations/versions/3.1/08-add-uuid-values-to-members.js +0 -23
  579. package/core/server/data/migrations/versions/3.1/09-add-further-email-permissions.js +0 -25
  580. package/core/server/data/migrations/versions/3.1/10-add-email-error-data-column.js +0 -8
  581. package/core/server/data/migrations/versions/3.11/01-remove-broken-complimentary-plan-from-members-settings.js +0 -68
  582. package/core/server/data/migrations/versions/3.12/01-add-identity-permission.js +0 -7
  583. package/core/server/data/migrations/versions/3.12/02-remove-legacy-is-paid-flag-from-settings.js +0 -93
  584. package/core/server/data/migrations/versions/3.18/01-add-email-preview-permissions-to-roles.js +0 -39
  585. package/core/server/data/migrations/versions/3.18/02-add-members_stripe_connect-auth-permissions.js +0 -7
  586. package/core/server/data/migrations/versions/3.19/01-update-member-from-email-address.js +0 -91
  587. package/core/server/data/migrations/versions/3.2/01-add-cancel-at-period-end-to-subscriptions.js +0 -7
  588. package/core/server/data/migrations/versions/3.22/01-removed-legacy-values-from-settings-table.js +0 -65
  589. package/core/server/data/migrations/versions/3.22/02-settings-key-renames.js +0 -90
  590. package/core/server/data/migrations/versions/3.22/03-add-group-and-flags-to-settings.js +0 -15
  591. package/core/server/data/migrations/versions/3.22/04-populate-settings-groups-and-flags.js +0 -194
  592. package/core/server/data/migrations/versions/3.22/05-migrate-members-subscription-settings.js +0 -182
  593. package/core/server/data/migrations/versions/3.22/06-migrate-stripe-connect-settings.js +0 -132
  594. package/core/server/data/migrations/versions/3.22/07-update-type-for-settings.js +0 -137
  595. package/core/server/data/migrations/versions/3.23/01-migrate-bulk-email-settings.js +0 -65
  596. package/core/server/data/migrations/versions/3.23/02-remove-bulk-email-settings.js +0 -48
  597. package/core/server/data/migrations/versions/3.23/03-update-portal-button-setting.js +0 -24
  598. package/core/server/data/migrations/versions/3.23/04-add-meta-columns-to-tags-table.js +0 -54
  599. package/core/server/data/migrations/versions/3.24/01-populate-group-for-new-portal-settings.js +0 -38
  600. package/core/server/data/migrations/versions/3.25/01-add-members-stripe-webhook-settings.js +0 -22
  601. package/core/server/data/migrations/versions/3.26/01-add-amp-gtag-id-setting.js +0 -20
  602. package/core/server/data/migrations/versions/3.29/01-remove-duplicate-subscriptions.js +0 -53
  603. package/core/server/data/migrations/versions/3.29/02-remove-duplicate-customers.js +0 -53
  604. package/core/server/data/migrations/versions/3.29/03-remove-orphaned-customers.js +0 -35
  605. package/core/server/data/migrations/versions/3.29/04-remove-orphaned-subscriptions.js +0 -35
  606. package/core/server/data/migrations/versions/3.29/05-add-member-constraints.js +0 -177
  607. package/core/server/data/migrations/versions/3.30/01-add-member-signin-url-permission-roles.js +0 -8
  608. package/core/server/data/migrations/versions/3.32/01-add-member-support-address-setting.js +0 -27
  609. package/core/server/data/migrations/versions/3.32/02-add-member-reply-address-setting.js +0 -20
  610. package/core/server/data/migrations/versions/3.32/03-add-routes-hash-setting.js +0 -20
  611. package/core/server/data/migrations/versions/3.33/01-add-email-recipients-tables.js +0 -8
  612. package/core/server/data/migrations/versions/3.34/01-add-tokens-table.js +0 -2
  613. package/core/server/data/migrations/versions/3.35/01-add-address-columns-to-emails-table.js +0 -14
  614. package/core/server/data/migrations/versions/3.36/01-add-snippets-table.js +0 -2
  615. package/core/server/data/migrations/versions/3.36/02-add-snippets-permissions.js +0 -56
  616. package/core/server/data/migrations/versions/3.37/01-update-portal-button-setting.js +0 -30
  617. package/core/server/data/migrations/versions/3.38/01-add-email-recipient-filter-column.js +0 -8
  618. package/core/server/data/migrations/versions/3.38/02-populate-email-recipient-filter-column.js +0 -34
  619. package/core/server/data/migrations/versions/3.38/03-add-recipient-filter-column.js +0 -8
  620. package/core/server/data/migrations/versions/3.38/04-populate-recipient-filter-column.js +0 -49
  621. package/core/server/data/migrations/versions/3.38/05-add-emails-track-opens-column.js +0 -7
  622. package/core/server/data/migrations/versions/3.38/06-add-newsletter-settings.js +0 -16
  623. package/core/server/data/migrations/versions/3.38/07-migrate-newsletter-settings-from-config.js +0 -48
  624. package/core/server/data/migrations/versions/3.38/08-repopulate-send-email-when-published-down-migration.js +0 -25
  625. package/core/server/data/migrations/versions/3.38/09-remove-send-email-when-published-column.js +0 -7
  626. package/core/server/data/migrations/versions/3.39/01-add-members-signup-redirect-settings.js +0 -16
  627. package/core/server/data/migrations/versions/3.39/02-add-user-id-to-api-keys-table.js +0 -7
  628. package/core/server/data/migrations/versions/3.39/03-add-email-track-opens-setting.js +0 -16
  629. package/core/server/data/migrations/versions/3.39/04-add-cancellation-reason-column.js +0 -7
  630. package/core/server/data/migrations/versions/3.39/05-remove-unused-columns-on-emails.js +0 -14
  631. package/core/server/data/migrations/versions/3.39/06-add-email-recipient-index.js +0 -58
  632. package/core/server/data/migrations/versions/3.39/07-add-email-recipients-event-timestamps.js +0 -19
  633. package/core/server/data/migrations/versions/3.39/08-add-email-stats-columns.js +0 -22
  634. package/core/server/data/migrations/versions/3.40/01-add-members-email-open-rate-column.js +0 -8
  635. package/core/server/data/migrations/versions/3.40/02-add members-email-aggregation-columns.js +0 -16
  636. package/core/server/data/migrations/versions/3.40/03-populate-members-email-counts.js +0 -15
  637. package/core/server/data/migrations/versions/3.41/01-add-firstpromoter-settings.js +0 -16
  638. package/core/server/data/migrations/versions/3.6/1-add-labels-table.js +0 -2
  639. package/core/server/data/migrations/versions/3.6/2-add-members-labels-table.js +0 -2
  640. package/core/server/data/migrations/versions/3.6/3-add-labels-permissions.js +0 -47
  641. package/core/server/data/migrations/versions/3.7/01-fix-incorrect-member-labels-foreign-keys.js +0 -46
  642. package/core/server/data/migrations/versions/3.8/01-add-geolocation-to-members.js +0 -7
  643. package/core/server/data/migrations/versions/3.9/01-add-member-sigin-url-permissions.js +0 -7
  644. package/core/server/services/mail/utils.js +0 -34
  645. package/core/server/services/url/configs/canary.js +0 -143
  646. package/core/server/services/url/configs/v3.js +0 -141
  647. package/core/server/services/url/configs/v4.js +0 -143
  648. package/core/server/web/api/v2/admin/app.js +0 -43
  649. package/core/server/web/api/v2/admin/middleware.js +0 -85
  650. package/core/server/web/api/v2/admin/routes.js +0 -200
  651. package/core/server/web/api/v2/content/app.js +0 -38
  652. package/core/server/web/api/v2/content/middleware.js +0 -23
  653. package/core/server/web/api/v2/content/routes.js +0 -37
  654. package/core/server/web/api/v3/admin/app.js +0 -43
  655. package/core/server/web/api/v3/admin/middleware.js +0 -89
  656. package/core/server/web/api/v3/admin/routes.js +0 -267
  657. package/core/server/web/api/v3/content/app.js +0 -38
  658. package/core/server/web/api/v3/content/middleware.js +0 -23
  659. package/core/server/web/api/v3/content/routes.js +0 -37
  660. package/core/server/web/oauth/app.js +0 -153
  661. package/core/server/web/oauth/index.js +0 -1
@@ -8,8 +8,6 @@ production stylesheet in assets/built/screen.css
8
8
  2. Layout
9
9
  3. Special Templates
10
10
  4. Site Header
11
- 4.1 Home header
12
- 4.2 Archive header
13
11
  5. Site Navigation
14
12
  6. Post Feed
15
13
  7. Single Post
@@ -38,7 +36,9 @@ production stylesheet in assets/built/screen.css
38
36
  --color-red: #f05230;
39
37
  --color-darkgrey: #15171A;
40
38
  --color-midgrey: #738a94;
41
- --color-lightgrey: #c5d2d9;
39
+ --color-lightgrey: #f1f1f1;
40
+ --color-secondary-text: #979797;
41
+ --color-border: #e1e1e1;
42
42
  --color-wash: #e5eff5;
43
43
  --color-darkmode: #151719;
44
44
 
@@ -52,7 +52,7 @@ production stylesheet in assets/built/screen.css
52
52
  */
53
53
 
54
54
  /* Fonts */
55
- --font-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
55
+ --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
56
56
  --font-serif: Georgia, Times, serif;
57
57
  --font-mono: Menlo, Courier, monospace;
58
58
 
@@ -75,7 +75,7 @@ production stylesheet in assets/built/screen.css
75
75
  /* Full width page blocks */
76
76
  .outer {
77
77
  position: relative;
78
- padding: 0 4vmin;
78
+ padding: 0 max(4vmin, 20px);
79
79
  }
80
80
 
81
81
  /* Centered content container blocks */
@@ -110,60 +110,141 @@ production stylesheet in assets/built/screen.css
110
110
  position: relative;
111
111
  z-index: 100;
112
112
  display: flex;
113
- flex-direction: column;
114
- justify-content: center;
115
113
  align-items: center;
116
- padding: 6vw 3vw;
117
- min-height: 200px;
118
- max-height: 340px;
114
+ padding-top: 6.4vmin;
115
+ padding-bottom: 6.4vmin;
119
116
  text-align: center;
117
+ color: var(--color-darkgrey);
118
+ }
119
+
120
+ .has-cover-image .site-header-content {
121
+ min-height: 560px;
122
+ background-color: var(--ghost-accent-color);
123
+ color: #fff;
124
+ }
125
+
126
+ body:not(.has-cover-image) .site-header-content:not(.left-aligned) {
127
+ padding-bottom: max(4.8vmin, 24px);
128
+ }
129
+
130
+ .site-header-content.left-aligned {
131
+ padding-bottom: 0;
132
+ text-align: left;
133
+ }
134
+
135
+ .has-cover-image .site-header-content.left-aligned {
136
+ align-items: flex-end;
137
+ padding-bottom: 6.4vmin;
138
+ }
139
+
140
+ .site-header-content.no-content {
141
+ padding-top: 0;
142
+ }
143
+
144
+ .site-header-inner {
145
+ position: relative;
146
+ }
147
+
148
+ .site-header-content.left-aligned .site-header-inner {
149
+ align-items: flex-start;
150
+ }
151
+
152
+ .site-logo {
153
+ flex-shrink: 0;
154
+ margin: 0 auto;
155
+ max-height: 120px;
156
+ }
157
+
158
+ .site-header-content.left-aligned .site-logo {
159
+ margin-right: auto;
160
+ margin-left: 0;
161
+ max-height: 96px;
120
162
  }
121
163
 
122
164
  .site-title {
123
165
  z-index: 10;
124
- margin: 0 0 0.15em;
166
+ margin: 0;
125
167
  padding: 0;
168
+ font-size: 5rem;
169
+ font-weight: 800;
126
170
  }
127
171
 
128
- .site-logo {
129
- max-height: 55px;
172
+ .has-serif-title .site-title {
173
+ font-family: var(--font-serif);
130
174
  }
131
175
 
132
- .site-header-content p {
133
- z-index: 10;
134
- max-width: 600px;
135
- margin: 0 auto;
136
- line-height: 1.2em;
137
- opacity: 0.8;
176
+ .has-cover-image .site-title {
177
+ font-size: 6rem;
138
178
  }
139
179
 
140
- @media (max-width: 600px) {
141
- .site-header-content p {
142
- max-width: 80vmin;
143
- font-size: 1.8rem;
144
- }
180
+ .site-header-content.left-aligned .site-title {
181
+ font-size: 4.4rem;
145
182
  }
146
183
 
147
- /* 4.1 Home header
148
- /* ---------------------------------------------------------- */
184
+ .has-cover-image .site-header-content.left-aligned .site-title {
185
+ font-size: 4.6rem;
186
+ }
149
187
 
150
- .site-home-header {
151
- position: relative;
152
- z-index: 1000;
153
- overflow: hidden;
188
+ .site-description {
189
+ display: inline-block;
190
+ z-index: 10;
191
+ max-width: 560px;
192
+ font-size: 2.4rem;
193
+ font-weight: 500;
194
+ line-height: 1.4;
154
195
  }
155
196
 
156
- .site-header-content {
157
- padding: 18vmin 4vmin;
158
- font-size: 2.5rem;
197
+ :is(.site-logo, .site-title) + .site-description {
198
+ margin-top: 8px;
199
+ font-size: 2.1rem;
159
200
  font-weight: 400;
201
+ }
202
+
203
+ .site-logo + .site-description {
204
+ margin-top: 20px;
205
+ }
206
+
207
+ .site-title + .site-description {
208
+ color: var(--color-secondary-text);
209
+ }
210
+
211
+ .has-cover-image .site-description {
212
+ font-size: 3.2rem;
213
+ letter-spacing: -0.005em;
160
214
  color: #fff;
161
- background: var(--ghost-accent-color);
162
215
  }
163
216
 
164
- .site-header-content.large {
165
- padding-top: 28vmin;
166
- padding-bottom: 28vmin;
217
+ .has-cover-image :is(.site-logo, .site-title) + .site-description {
218
+ font-size: 2.4rem;
219
+ }
220
+
221
+ .has-cover-image .site-header-content.left-aligned :is(.site-logo, .site-title) + .site-description {
222
+ font-size: 2.2rem;
223
+ }
224
+
225
+ @media (max-width: 767px) {
226
+ .has-cover-image .site-header-content {
227
+ padding-bottom: 36px;
228
+ min-height: 240px;
229
+ }
230
+ .site-header-inner {
231
+ gap: 16px;
232
+ }
233
+ .site-logo {
234
+ max-width: 60%;
235
+ }
236
+ .site-title {
237
+ font-size: 3.4rem !important;
238
+ }
239
+ .site-description {
240
+ font-size: 1.9rem !important;
241
+ }
242
+ .site-logo + .site-description {
243
+ margin-top: 12px !important;
244
+ }
245
+ .site-title + .site-description {
246
+ margin-top: 4px !important;
247
+ }
167
248
  }
168
249
 
169
250
 
@@ -171,21 +252,35 @@ production stylesheet in assets/built/screen.css
171
252
  /* ---------------------------------------------------------- */
172
253
 
173
254
  .gh-head {
174
- padding: 1vmin 4vmin;
255
+ padding-top: min(24px, 3.6vmin);
256
+ padding-bottom: min(24px, 3.6vmin);
175
257
  font-size: 1.6rem;
176
258
  line-height: 1.3em;
259
+ background-color: #fff;
260
+ }
261
+
262
+ .has-cover-image:not(.home-template) .gh-head {
263
+ background-color: var(--ghost-accent-color);
264
+ color: #fff;
265
+ }
266
+
267
+ .home-template.has-cover-image .gh-head {
268
+ position: absolute;
269
+ top: 0;
270
+ right: 0;
271
+ left: 0;
272
+ z-index: 2000;
273
+ background-color: transparent;
177
274
  color: #fff;
178
- background: var(--ghost-accent-color);
179
275
  }
180
276
 
181
277
  .gh-head a {
182
- color: inherit;
183
278
  text-decoration: none;
184
279
  }
185
280
 
186
281
  .gh-head-inner {
187
282
  display: grid;
188
- grid-gap: 2.5vmin;
283
+ grid-gap: 40px;
189
284
  grid-template-columns: auto auto 1fr;
190
285
  grid-auto-flow: row dense;
191
286
  }
@@ -198,18 +293,28 @@ production stylesheet in assets/built/screen.css
198
293
  display: flex;
199
294
  align-items: center;
200
295
  height: 40px;
201
- max-width: 200px;
202
- text-align: center;
296
+ max-width: 400px;
203
297
  word-break: break-all;
204
298
  }
205
299
 
206
300
  .gh-head-logo {
207
301
  display: block;
208
- padding: 10px 0;
209
- font-weight: 700;
210
- font-size: 2rem;
211
- line-height: 1.2em;
302
+ font-weight: 800;
303
+ font-size: 2.6rem;
212
304
  letter-spacing: -0.02em;
305
+ color: inherit;
306
+ }
307
+
308
+ .gh-head-logo.no-image {
309
+ margin-top: -2px;
310
+ }
311
+
312
+ .has-cover-image .gh-head-logo {
313
+ color: #fff;
314
+ }
315
+
316
+ .no-logo .gh-head-logo {
317
+ display: none;
213
318
  }
214
319
 
215
320
  .gh-head-logo img {
@@ -223,31 +328,33 @@ production stylesheet in assets/built/screen.css
223
328
  .gh-head-menu {
224
329
  display: flex;
225
330
  align-items: center;
331
+ margin-top: 1px;
226
332
  font-weight: 500;
227
333
  }
228
334
 
335
+ .no-logo .gh-head-menu {
336
+ margin-left: -40px;
337
+ }
338
+
229
339
  .gh-head-menu .nav {
230
340
  display: inline-flex;
231
341
  flex-wrap: wrap;
232
342
  align-items: center;
343
+ gap: 32px;
233
344
  list-style: none;
234
345
  margin: 0;
235
346
  padding: 0;
236
347
  }
237
348
 
238
349
  .gh-head-menu .nav li {
239
- margin: 0 2.5vmin 0 0;
350
+ margin: 0;
240
351
  padding: 0;
241
352
  }
242
353
 
243
354
  .gh-head-menu .nav a {
244
355
  display: inline-block;
245
- padding: 5px 0;
246
- opacity: 0.8
247
- }
248
-
249
- .gh-head-menu .nav a:hover {
250
- opacity: 1;
356
+ line-height: 1.7;
357
+ color: inherit;
251
358
  }
252
359
 
253
360
 
@@ -262,56 +369,22 @@ production stylesheet in assets/built/screen.css
262
369
  text-align: right;
263
370
  }
264
371
 
265
- .gh-head-actions-list {
372
+ .gh-head-button {
266
373
  display: inline-flex;
267
- flex-wrap: wrap;
268
- justify-content: flex-end;
269
374
  align-items: center;
375
+ padding: 8px 16px;
376
+ height: 40px;
377
+ font-weight: 600;
378
+ letter-spacing: -0.005em;
379
+ font-size: 1.5rem;
380
+ border-radius: 6px;
381
+ color: #fff;
382
+ background: var(--ghost-accent-color);
270
383
  }
271
384
 
272
- .gh-head-actions-list a:not([class]) {
273
- display: inline-block;
274
- margin: 0 0 0 1.5vmin;
275
- padding: 5px 0;
276
- }
277
-
278
- .gh-social {
279
- margin: 0 1.5vmin 0 0;
280
- }
281
-
282
- .gh-social a {
283
- opacity: 0.8
284
- }
285
-
286
- .gh-social a + a {
287
- margin-left: 0.8rem;
288
- }
289
-
290
- .gh-social a:hover {
291
- opacity: 1;
292
- }
293
-
294
- .gh-social svg {
295
- height: 22px;
296
- width: 22px;
297
- fill: #fff;
298
- }
299
-
300
- .gh-social-facebook svg {
301
- height: 20px;
302
- width: 20px;
303
- }
304
-
305
- a.gh-head-button {
306
- display: block;
307
- padding: 8px 15px;
308
- color: var(--button-text-color, var(--color-darkgrey));
309
- font-weight: 500;
310
- letter-spacing: -0.015em;
311
- font-size: 1.5rem;
312
- line-height: 1em;
313
- background: var(--button-bg-color, #fff);
314
- border-radius: 30px;
385
+ .has-cover-image .gh-head-button {
386
+ color: var(--color-darkgrey);
387
+ background: #fff;
315
388
  }
316
389
 
317
390
 
@@ -333,6 +406,10 @@ a.gh-head-button {
333
406
  height: 33px;
334
407
  }
335
408
 
409
+ .has-cover-image .gh-burger-box {
410
+ color: #fff;
411
+ }
412
+
336
413
  .gh-burger-inner {
337
414
  width: 100%;
338
415
  height: 100%;
@@ -404,12 +481,11 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
404
481
  /* ---------------------------------------------------------- */
405
482
  /* IDs needed to ensure sufficient specificity */
406
483
 
407
- @media (max-width: 900px) {
484
+ @media (max-width: 991px) {
408
485
  .gh-burger {
409
486
  display: inline-block;
410
487
  }
411
488
  #gh-head {
412
- transition: all 0.4s ease-out;
413
489
  overflow: hidden;
414
490
  }
415
491
  #gh-head .gh-head-inner {
@@ -426,7 +502,7 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
426
502
  justify-content: space-between;
427
503
  user-select: none;
428
504
  }
429
- .home-template #gh-head.has-cover .gh-head-brand {
505
+ .no-logo #gh-head .gh-head-brand {
430
506
  justify-content: flex-end;
431
507
  }
432
508
  #gh-head .gh-head-menu {
@@ -440,16 +516,12 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
440
516
  font-size: 3.6rem;
441
517
  line-height: 1.1em;
442
518
  }
443
- #gh-head .gh-head-menu .nav li {
444
- margin: 5px 0;
445
- }
446
- #gh-head .gh-head-menu .nav a {
447
- padding: 8px 0;
448
- }
449
519
  #gh-head .gh-head-menu .nav {
450
520
  display: flex;
451
521
  flex-direction: column;
452
522
  align-items: center;
523
+ gap: 16px;
524
+ font-weight: 500;
453
525
  }
454
526
  #gh-head .gh-head-actions {
455
527
  padding: 20px 0;
@@ -493,29 +565,10 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
493
565
  }
494
566
  }
495
567
 
496
- .home-template .gh-head.has-cover {
497
- position: absolute;
498
- top: 0;
499
- right: 0;
500
- left: 0;
501
- z-index: 2000;
502
- }
503
-
504
- .home-template .gh-head.has-cover {
505
- background: transparent;
506
- }
507
-
508
- .home-template.gh-head-open .gh-head {
568
+ .has-cover-image.gh-head-open .gh-head {
509
569
  background: var(--ghost-accent-color);
510
570
  }
511
571
 
512
- .home-template .gh-head.has-cover .gh-head-logo {
513
- display: none;
514
- }
515
- .home-template .gh-head.has-cover .gh-head-menu {
516
- margin-left: -2.5vmin;
517
- }
518
-
519
572
 
520
573
  /* 6. Post Feed
521
574
  /* ---------------------------------------------------------- */
@@ -523,23 +576,22 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
523
576
  .post-feed {
524
577
  position: relative;
525
578
  display: grid;
526
- grid-gap: 4vmin;
527
- grid-template-columns: 1fr 1fr 1fr;
528
- padding: 4vmin 0;
579
+ gap: 4.8vmin 4vmin;
580
+ grid-template-columns: repeat(6, 1fr);
581
+ padding: max(4.8vmin, 36px) 0 0;
529
582
  }
530
583
 
531
- .post-feed.list {
532
- row-gap: 6vmin;
533
- max-width: 940px;
534
- margin: 2vmin auto 0;
584
+ :is(.tag-template, .author-template) .post-feed {
585
+ margin-top: 4vmin;
535
586
  }
536
587
 
537
- @media (max-width: 1000px) {
588
+ @media (max-width: 991px) {
538
589
  .post-feed {
539
590
  grid-template-columns: 1fr 1fr;
540
591
  }
541
592
  }
542
- @media (max-width: 700px) {
593
+
594
+ @media (max-width: 767px) {
543
595
  .post-feed {
544
596
  grid-template-columns: 1fr;
545
597
  grid-gap: 40px;
@@ -548,35 +600,42 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
548
600
 
549
601
  .post-card {
550
602
  position: relative;
551
- flex: 1 1 301px;
603
+ grid-column: span 2;
552
604
  display: flex;
553
605
  flex-direction: column;
554
- min-height: 220px;
555
606
  background-size: cover;
556
607
  word-break: break-word;
557
608
  }
558
609
 
559
- @media (max-width: 700px) {
560
- .post-card {
561
- min-height: auto;
562
- }
563
- }
564
-
565
610
  .post-card-image-link {
566
611
  position: relative;
567
612
  display: block;
568
- overflow: hidden;
569
- border-radius: 3px;
613
+ margin-bottom: 32px;
614
+ }
615
+
616
+ .post-card-image-link::after {
617
+ content: "";
618
+ display: block;
619
+ padding-bottom: 55%;
620
+ }
621
+
622
+ .post-card.keep-ratio:not(.post-card-large):not(.post-card-full) .post-card-image-link::after {
623
+ display: none;
570
624
  }
571
625
 
572
626
  .post-card-image {
627
+ position: absolute;
628
+ inset: 0;
573
629
  width: 100%;
574
- height: 200px;
630
+ height: 100%;
575
631
  background: var(--color-lightgrey) no-repeat center center;
576
-
577
632
  object-fit: cover;
578
633
  }
579
634
 
635
+ .post-card.keep-ratio:not(.post-card-large):not(.post-card-full) .post-card-image {
636
+ position: static;
637
+ }
638
+
580
639
  .post-card-content-link {
581
640
  position: relative;
582
641
  display: block;
@@ -587,10 +646,6 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
587
646
  text-decoration: none;
588
647
  }
589
648
 
590
- .post-card-header {
591
- margin: 20px 0 0;
592
- }
593
-
594
649
  .post-feed .no-image .post-card-content-link {
595
650
  padding: 0;
596
651
  }
@@ -600,18 +655,18 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
600
655
  }
601
656
 
602
657
  .post-card-primary-tag {
603
- margin: 0 0 0.2em;
604
- color: var(--ghost-accent-color);
605
- font-size: 1.2rem;
606
- font-weight: 500;
607
- letter-spacing: 0.2px;
608
- text-transform: uppercase;
658
+ margin: 0 0 10px;
659
+ color: var(--color-secondary-text);
660
+ font-size: 1.4rem;
661
+ font-weight: 600;
662
+ letter-spacing: -0.005em;
663
+ line-height: 1;
609
664
  }
610
665
 
611
666
  .post-card-title {
612
- margin: 0 0 0.4em;
613
- font-size: 2.4rem;
614
- transition: color 0.2s ease-in-out;
667
+ margin: 0;
668
+ font-size: 2.6rem;
669
+ font-weight: 800;
615
670
  }
616
671
 
617
672
  .no-image .post-card-title {
@@ -620,6 +675,7 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
620
675
 
621
676
  .has-serif-title .post-card-title {
622
677
  font-family: var(--font-serif);
678
+ letter-spacing: -0.005em;
623
679
  }
624
680
 
625
681
  .post-card-content {
@@ -629,32 +685,43 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
629
685
  }
630
686
 
631
687
  .post-card-excerpt {
632
- max-width: 56em;
633
- color: color-mod(var(--color-midgrey) l(-8%));
634
- font-family: var(--font-serif);
635
- }
636
-
637
- .has-sans-body .post-card-excerpt {
638
- font-family: var(--font-sans-serif);
639
- }
640
-
641
- .post-card-excerpt p {
642
- margin-bottom: 1em;
643
688
  display: -webkit-box;
644
689
  overflow-y: hidden;
690
+ margin-top: 12px;
691
+ max-width: 720px;
692
+ font-size: 1.6rem;
693
+ line-height: 1.5;
645
694
  -webkit-line-clamp: 3;
646
695
  -webkit-box-orient: vertical;
647
696
  word-break: break-word;
648
697
  }
649
698
 
699
+ .has-sans-body .post-card-excerpt {
700
+ font-family: var(--font-sans);
701
+ }
702
+
703
+ .post-card:not(.post-card-large):not(.post-card-full):not(.dynamic):not(.no-image) .post-card-excerpt {
704
+ -webkit-line-clamp: 2;
705
+ }
706
+
707
+ :is(.tag-template, .author-template) .post-card-excerpt {
708
+ margin-top: 6px;
709
+ }
710
+
650
711
  .post-card-meta {
651
712
  display: flex;
652
713
  align-items: center;
714
+ margin-top: 12px;
653
715
  padding: 0;
716
+ font-size: 1.3rem;
717
+ color: var(--color-secondary-text);
718
+ }
719
+
720
+ .post-card-meta .sep {
721
+ margin: 0 4px;
654
722
  }
655
723
 
656
- .author-profile-image,
657
- .avatar-wrapper {
724
+ .author-profile-image {
658
725
  display: block;
659
726
  width: 100%;
660
727
  height: 100%;
@@ -664,11 +731,6 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
664
731
  object-fit: cover;
665
732
  }
666
733
 
667
- .post-card-meta .profile-image-wrapper,
668
- .post-card-meta .avatar-wrapper {
669
- position: relative;
670
- }
671
-
672
734
  .author-list {
673
735
  display: flex;
674
736
  flex-wrap: wrap;
@@ -684,69 +746,6 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
684
746
  padding: 0;
685
747
  }
686
748
 
687
- .static-avatar {
688
- display: block;
689
- overflow: hidden;
690
- margin: 0 0 0 -6px;
691
- width: 36px;
692
- height: 36px;
693
- border-radius: 100%;
694
- box-shadow: 0 0 0 1px rgba(255,255,255,0.2);
695
- }
696
-
697
- .post-card-byline-content {
698
- flex: 1 1 50%;
699
- display: flex;
700
- flex-direction: column;
701
- margin: 0 0 0 8px;
702
- color: color-mod(var(--color-midgrey) l(+10%));
703
- font-size: 1.4rem;
704
- line-height: 1.2em;
705
- font-weight: 400;
706
- }
707
-
708
- .post-card-byline-content span {
709
- margin: 0;
710
- }
711
-
712
- .post-card-byline-content a {
713
- color: color-mod(var(--color-darkgrey) l(+15%));
714
- font-weight: 600;
715
- }
716
-
717
- .post-card-byline-date {
718
- font-size: 1.3rem;
719
- line-height: 1.5em;
720
- }
721
-
722
- .post-card-byline-date .bull {
723
- display: inline-block;
724
- margin: 0 2px;
725
- opacity: 0.6;
726
- }
727
-
728
- .single-author-byline {
729
- display: flex;
730
- flex-direction: column;
731
- margin-left: 5px;
732
- color: color-mod(var(--color-midgrey) l(-10%));
733
- font-size: 1.3rem;
734
- line-height: 1.4em;
735
- font-weight: 500;
736
- }
737
-
738
- .single-author {
739
- display: flex;
740
- align-items: center;
741
- }
742
-
743
- .single-author .static-avatar {
744
- margin-left: -2px;
745
- }
746
-
747
- .single-author-name {
748
- display: inline-block;
749
- }
750
749
 
751
750
  /* Special Styling for home page grid (below):
752
751
 
@@ -754,39 +753,14 @@ The first post in the list is styled to be bigger than the others and take over
754
753
  the full width of the grid to give it more emphasis. Wrapped in a media query to
755
754
  make sure this only happens on large viewports / desktop-ish devices.
756
755
 
757
- */
758
-
759
- @media (min-width: 701px) {
760
- .post-feed.list .post-card-large {
761
- grid-column: 1 / span 3;
762
- display: grid;
763
- grid-gap: 4vmin;
764
- grid-template-columns: 3fr 5fr;
765
- min-height: auto;
766
- border-top: 0;
767
- }
768
-
769
- .post-feed.list .post-card-large.no-image {
770
- grid-template-columns: 1fr;
771
- }
772
-
773
- .post-feed.list .post-card-large:not(.no-image) .post-card-header {
774
- margin-top: 0;
775
- }
776
-
777
- .post-feed.list .post-card-large .post-card-content {
778
- justify-content: flex-start;
779
- margin-top: -6px;
780
- }
781
- }
756
+ */
782
757
 
783
758
  @media (min-width: 1001px) {
784
759
  .post-card-large {
785
- grid-column: 1 / span 3;
760
+ grid-column: span 6;
786
761
  display: grid;
787
762
  grid-gap: 4vmin;
788
- grid-template-columns: 1fr 1fr 1fr;
789
- min-height: 280px;
763
+ grid-template-columns: repeat(3, 1fr);
790
764
  border-top: 0;
791
765
  }
792
766
 
@@ -796,21 +770,16 @@ make sure this only happens on large viewports / desktop-ish devices.
796
770
 
797
771
  .post-card-large .post-card-image-link {
798
772
  position: relative;
799
- grid-column: 1 / span 2;
773
+ grid-column: span 2;
800
774
  margin-bottom: 0;
801
- min-height: 380px;
802
775
  }
803
776
 
804
- .post-feed.list .post-card-large .post-card-image-link {
805
- grid-column: 1 / span 1;
806
- height: max-content;
807
- min-height: auto;
777
+ .post-card-large .post-card-content {
778
+ grid-column: span 1;
808
779
  }
809
780
 
810
- .post-feed.list .post-card-large .post-card-image-link::after {
811
- content: "";
812
- display: block;
813
- padding-bottom: 60%;
781
+ .post-card-large.no-image .post-card-content {
782
+ grid-column: span 2;
814
783
  }
815
784
 
816
785
  .post-card-large .post-card-image {
@@ -819,34 +788,56 @@ make sure this only happens on large viewports / desktop-ish devices.
819
788
  height: 100%;
820
789
  }
821
790
 
822
- .post-card-large .post-card-content {
823
- justify-content: center;
791
+ .post-card-large .post-card-primary-tag {
792
+ margin-bottom: 12px;
824
793
  }
825
794
 
826
795
  .post-card-large .post-card-title {
827
796
  margin-top: 0;
828
- font-size: 3.2rem;
797
+ font-size: 4.4rem;
798
+ line-height: 1;
829
799
  }
830
800
 
831
- .post-feed.list .post-card-large .post-card-title {
832
- font-size: 2.4rem;
801
+ .post-card-large .post-card-excerpt {
802
+ margin-top: 16px;
833
803
  }
834
804
 
835
- .post-card-large .post-card-excerpt p {
836
- font-size: 1.7rem;
837
- line-height: 1.55em;
838
- -webkit-line-clamp: 8;
805
+ .post-card-full {
806
+ grid-column: span 6;
839
807
  }
840
- }
841
808
 
809
+ .post-card-full .post-card-image-link {
810
+ margin-bottom: 40px;
811
+ }
842
812
 
843
- @media (max-width: 500px) {
844
- .post-card-title {
845
- font-size: 1.9rem;
813
+ .post-card-full .post-card-primary-tag {
814
+ margin-bottom: 14px;
846
815
  }
847
816
 
848
- .post-card-excerpt {
849
- font-size: 1.6rem;
817
+ .post-card-full .post-card-title {
818
+ font-size: 6.4rem;
819
+ line-height: 0.95;
820
+ }
821
+
822
+ .post-card-full .post-card-excerpt {
823
+ margin-top: 20px;
824
+ font-size: 1.8rem;
825
+ }
826
+
827
+ .post-card-large + .post-card-large:nth-child(even) {
828
+ margin: 32px 0;
829
+ }
830
+
831
+ .post-card-large + .post-card-large:nth-child(even) .post-card-content {
832
+ order: -1;
833
+ }
834
+
835
+ .post-card.dynamic {
836
+ grid-column: span 3;
837
+ }
838
+
839
+ .post-card.dynamic .post-card-title {
840
+ font-size: 3rem;
850
841
  }
851
842
  }
852
843
 
@@ -855,33 +846,37 @@ make sure this only happens on large viewports / desktop-ish devices.
855
846
  /* ---------------------------------------------------------- */
856
847
 
857
848
  .article {
858
- padding: 8vmin 0;
849
+ padding: max(8vmin, 40px) 0 max(8vmin, 64px);
859
850
  word-break: break-word;
860
851
  }
861
852
 
853
+ .page-template .article {
854
+ padding-top: max(12vmin, 64px);
855
+ }
856
+
862
857
  .article-header {
863
- padding: 0 0 6vmin 0;
858
+ padding: 0 0 max(6.4vmin, 40px) 0;
859
+ }
860
+
861
+ .page-template .article-header {
862
+ padding-bottom: max(3.2vmin, 28px);
864
863
  }
865
864
 
866
865
  .article-tag {
867
- display: flex;
868
- justify-content: flex-start;
869
- align-items: center;
870
- margin: 0 0 0.5rem;
871
- color: var(--color-midgrey);
872
- font-size: 1.3rem;
873
- line-height: 1.4em;
874
- letter-spacing: 0.02em;
875
- font-weight: 600;
876
- text-transform: uppercase;
866
+ margin-bottom: 16px;
867
+ font-size: 1.6rem;
877
868
  }
878
869
 
879
870
  .article-tag a {
880
- color: var(--ghost-accent-color);
871
+ color: var(--color-secondary-text);
881
872
  }
882
873
 
883
874
  .article-title {
884
- color: color-mod(var(--color-darkgrey) l(-5%));
875
+ margin-bottom: 0;
876
+ font-size: clamp(3.2rem, 5vw, 5.2rem);
877
+ font-weight: 800;
878
+ line-height: 1;
879
+ color: var(--color-darkgrey);
885
880
  }
886
881
 
887
882
  .has-serif-title .article-title {
@@ -889,16 +884,17 @@ make sure this only happens on large viewports / desktop-ish devices.
889
884
  }
890
885
 
891
886
  .article-excerpt {
892
- margin: 0 0 1rem;
887
+ margin-top: 20px;
888
+ max-width: 720px;
893
889
  font-size: 2rem;
894
- line-height: 1.4em;
895
- opacity: 0.6;
890
+ line-height: 1.45;
891
+ color: var(--color-darkgrey);
896
892
  }
897
893
 
898
894
  .gh-canvas .article-image {
899
895
  grid-column: wide-start / wide-end;
900
896
  width: 100%;
901
- margin: 6vmin 0 0;
897
+ margin: max(6.4vmin, 40px) 0 0;
902
898
  }
903
899
 
904
900
  .image-full .article-image {
@@ -916,9 +912,10 @@ make sure this only happens on large viewports / desktop-ish devices.
916
912
  width: 100%;
917
913
  }
918
914
 
919
- @media (max-width: 600px) {
915
+ @media (max-width: 767px) {
920
916
  .article-excerpt {
921
- font-size: 1.8rem;
917
+ margin-top: 14px;
918
+ font-size: 1.7rem;
922
919
  }
923
920
  }
924
921
 
@@ -935,7 +932,7 @@ use it for applying any other styles. */
935
932
  display: grid;
936
933
  grid-template-columns:
937
934
  [full-start]
938
- minmax(4vmin, auto)
935
+ minmax(max(4vmin, 20px), auto)
939
936
  [wide-start]
940
937
  minmax(auto, 240px)
941
938
  [main-start]
@@ -943,7 +940,7 @@ use it for applying any other styles. */
943
940
  [main-end]
944
941
  minmax(auto, 240px)
945
942
  [wide-end]
946
- minmax(4vmin, auto)
943
+ minmax(max(4vmin, 20px), auto)
947
944
  [full-end]
948
945
  ;
949
946
  }
@@ -974,7 +971,7 @@ headings, text, images and lists. We deal with cards lower down. */
974
971
 
975
972
  /* Default vertical spacing */
976
973
  .gh-content > * + * {
977
- margin-top: 4vmin;
974
+ margin-top: max(3.2vmin, 24px);
978
975
  margin-bottom: 0;
979
976
  }
980
977
 
@@ -1003,11 +1000,11 @@ is the very first element in the post content */
1003
1000
  .gh-content > hr,
1004
1001
  .gh-content > blockquote {
1005
1002
  position: relative;
1006
- margin-top: 6vmin;
1003
+ margin-top: max(4.8vmin, 32px);
1007
1004
  }
1008
1005
  .gh-content > hr + *,
1009
1006
  .gh-content > blockquote + * {
1010
- margin-top: 6vmin !important;
1007
+ margin-top: max(4.8vmin, 32px) !important;
1011
1008
  }
1012
1009
 
1013
1010
  /* Now the content typography styles */
@@ -1024,7 +1021,7 @@ is the very first element in the post content */
1024
1021
  .gh-content > p {
1025
1022
  font-family: var(--font-serif);
1026
1023
  font-weight: 400;
1027
- font-size: 2.1rem;
1024
+ font-size: 2rem;
1028
1025
  line-height: 1.6em;
1029
1026
  }
1030
1027
 
@@ -1125,17 +1122,17 @@ is the very first element in the post content */
1125
1122
  .gh-content .kg-toggle-card .kg-toggle-content > ol,
1126
1123
  .gh-content .kg-toggle-card .kg-toggle-content > ul,
1127
1124
  .gh-content .kg-toggle-card .kg-toggle-content > p {
1128
- font-size: 1.7rem;
1125
+ font-size: 1.8rem;
1129
1126
  }
1130
1127
 
1131
1128
  .gh-content .kg-product-card .kg-product-card-description > p,
1132
1129
  .gh-content .kg-product-card .kg-product-card-description > ol,
1133
1130
  .gh-content .kg-product-card .kg-product-card-description > ul {
1134
- font-size: 1.5rem;
1131
+ font-size: 1.6rem;
1135
1132
  }
1136
1133
 
1137
1134
  .gh-content blockquote:not([class])::before {
1138
- left: -4vmin;
1135
+ left: min(-4vmin, -20px);
1139
1136
  }
1140
1137
  }
1141
1138
 
@@ -1207,7 +1204,6 @@ figcaption {
1207
1204
  padding: 1.5rem 1.5rem 0;
1208
1205
  text-align: center;
1209
1206
  color: rgba(0,0,0,0.5);
1210
- font-weight: 600;
1211
1207
  font-size: 1.3rem;
1212
1208
  line-height: 1.4em;
1213
1209
  }
@@ -1215,7 +1211,7 @@ figcaption strong {
1215
1211
  color: rgba(0,0,0,0.8);
1216
1212
  }
1217
1213
  figcaption a {
1218
- color: var(--ghost-accent-color);
1214
+ text-decoration: underline;
1219
1215
  }
1220
1216
 
1221
1217
 
@@ -1285,7 +1281,7 @@ iframe.instagram-media + script + :not([id]) {
1285
1281
  width: auto;
1286
1282
  border-spacing: 0;
1287
1283
  border-collapse: collapse;
1288
- font-family: var(--font-sans-serif);
1284
+ font-family: var(--font-sans);
1289
1285
  font-size: 1.6rem;
1290
1286
  white-space: nowrap;
1291
1287
  vertical-align: top;
@@ -1335,7 +1331,7 @@ iframe.instagram-media + script + :not([id]) {
1335
1331
  .article-byline {
1336
1332
  display: flex;
1337
1333
  justify-content: space-between;
1338
- margin: 20px 0 0;
1334
+ margin: min(24px, 5.6vmin) 0 0;
1339
1335
  }
1340
1336
 
1341
1337
  .article-byline-content {
@@ -1346,89 +1342,67 @@ iframe.instagram-media + script + :not([id]) {
1346
1342
 
1347
1343
  .article-byline-content .author-list {
1348
1344
  justify-content: flex-start;
1349
- padding: 0 12px 0 0;
1345
+ padding: 0 14px 0 0;
1350
1346
  }
1351
1347
 
1352
1348
  .article-byline-meta {
1353
- color: color-mod(var(--color-midgrey));
1349
+ color: var(--color-secondary-text);
1354
1350
  font-size: 1.4rem;
1355
1351
  line-height: 1.2em;
1356
1352
  }
1357
1353
 
1358
- .article-byline-meta h4 {
1359
- margin: 0 0 3px;
1360
- font-size: 1.6rem;
1354
+ .article-byline-meta .author-name {
1355
+ margin: 0 0 6px;
1356
+ font-size: 1.7rem;
1357
+ font-weight: 700;
1361
1358
  }
1362
1359
 
1363
1360
  .article-byline-meta .bull {
1364
1361
  display: inline-block;
1365
1362
  margin: 0 2px;
1366
- opacity: 0.6;
1367
1363
  }
1368
1364
 
1369
1365
  .author-avatar {
1370
1366
  display: block;
1371
1367
  overflow: hidden;
1372
1368
  margin: 0 -4px;
1373
- width: 50px;
1374
- height: 50px;
1369
+ width: min(56px, 13.6vmin);
1370
+ height: min(56px, 13.6vmin);
1375
1371
  border: #fff 2px solid;
1376
- border-radius: 100%;
1377
- transition: all 0.5s cubic-bezier(0.4, 0.01, 0.165, 0.99) 700ms;
1378
- }
1379
-
1380
- .basic-info .avatar-wrapper {
1381
- position: relative;
1382
- margin: 0;
1383
- width: 60px;
1384
- height: 60px;
1385
- border: none;
1386
- background: rgba(229, 239, 245, 0.1);
1387
- }
1388
-
1389
- .basic-info .avatar-wrapper svg {
1390
- margin: 0;
1391
- width: 60px;
1392
- height: 60px;
1393
- opacity: 0.15;
1372
+ border-radius: 50%;
1373
+ background-color: var(--color-border);
1394
1374
  }
1395
1375
 
1396
1376
  .page-template .article-title {
1397
1377
  margin-bottom: 0;
1398
1378
  }
1399
1379
 
1380
+ @media (max-width: 767px) {
1381
+ .article-byline-content .author-list {
1382
+ padding-right: 12px;
1383
+ }
1384
+ .article-byline-meta .author-name {
1385
+ margin-bottom: 4px;
1386
+ }
1387
+ }
1388
+
1400
1389
 
1401
1390
  /* 7.3. Subscribe
1402
1391
  /* ---------------------------------------------------------- */
1403
1392
 
1404
1393
  .footer-cta {
1405
1394
  position: relative;
1406
- margin-bottom: -40px;
1407
- padding: 9vmin 4vmin 10vmin;
1408
- color: #fff;
1409
1395
  text-align: center;
1410
- background: var(--color-darkgrey);
1411
- }
1412
-
1413
- .footer-cta.cta-alt {
1414
- padding: 2vmin 4vmin 12vmin;
1415
- background: transparent;
1416
1396
  }
1417
1397
 
1418
- /* Increases the default h2 size by 15%, for small and large screens */
1419
- .footer-cta h2 {
1420
- margin: 0 0 30px;
1421
- font-size: 3.2rem;
1422
- }
1423
-
1424
- .footer-cta.cta-alt h2 {
1425
- color: var(--color-darkgrey);
1398
+ .footer-cta-title {
1399
+ margin: 0 0 min(24px, 6.4vmin);
1400
+ font-size: clamp(2.6rem, 5vw, 3.8rem);
1401
+ font-weight: 800;
1426
1402
  }
1427
1403
 
1428
- @media (max-width: 600px) {
1429
- .footer-cta h2 {
1430
- font-size: 2.65rem;
1431
- }
1404
+ .has-serif-title .footer-cta-title {
1405
+ font-family: var(--font-serif);
1432
1406
  }
1433
1407
 
1434
1408
  .footer-cta-button {
@@ -1439,23 +1413,27 @@ iframe.instagram-media + script + :not([id]) {
1439
1413
  width: 100%;
1440
1414
  max-width: 500px;
1441
1415
  padding: 5px 5px 5px 15px;
1442
- font-size: 1.8rem;
1443
- color: var(--color-midgrey);
1416
+ font-size: 1.7rem;
1417
+ color: var(--color-secondary-text);
1444
1418
  background: #fff;
1419
+ border: 1px solid var(--color-border);
1445
1420
  border-radius: 8px;
1421
+ transition: border-color 0.2s;
1446
1422
  }
1447
1423
 
1448
- .footer-cta.cta-alt .footer-cta-button {
1449
- border: 1px solid var(--color-lightgrey);
1424
+ .footer-cta-button:hover {
1425
+ border-color: color-mod(var(--color-border) l(-12%));
1450
1426
  }
1451
1427
 
1452
1428
  .footer-cta-button span {
1453
1429
  display: inline-block;
1454
- padding: 10px 15px;
1430
+ padding: 9px 15px;
1455
1431
  color: #fff;
1456
- font-weight: 500;
1432
+ font-size: 1.6rem;
1433
+ font-weight: 600;
1434
+ letter-spacing: -0.005em;
1457
1435
  background: var(--ghost-accent-color);
1458
- border-radius: 5px;
1436
+ border-radius: 6px;
1459
1437
  }
1460
1438
 
1461
1439
 
@@ -1463,47 +1441,29 @@ iframe.instagram-media + script + :not([id]) {
1463
1441
  /* ---------------------------------------------------------- */
1464
1442
 
1465
1443
  .read-more-wrap {
1466
- width: 100%;
1467
- padding: 4vmin;
1468
- margin: 40px auto -40px;
1469
- border-bottom: 1px solid rgba(255, 255, 255, 0.1);
1470
- background: color-mod(var(--color-darkgrey) l(-5%));
1444
+ margin-top: max(12vmin, 72px);
1471
1445
  }
1472
1446
 
1473
1447
  .read-more {
1474
1448
  display: grid;
1475
- grid-template-columns: 1fr 1fr 1fr;
1449
+ grid-template-columns: repeat(6, 1fr);
1476
1450
  grid-gap: 4vmin;
1477
1451
  }
1478
1452
 
1479
- .read-more .post-card-title {
1480
- color: #fff;
1481
- opacity: 0.8;
1482
- }
1483
-
1484
- .read-more .post-card-excerpt {
1485
- color: rgba(255, 255, 255, 0.6);
1486
- }
1487
-
1488
- .read-more .post-card-byline-content a {
1489
- color: #fff;
1490
- }
1491
-
1492
-
1493
1453
  @media (max-width: 1000px) {
1494
1454
  .read-more {
1495
- grid-template-columns: 1fr 1fr;
1455
+ grid-template-columns: repeat(4, 1fr);
1496
1456
  }
1497
- .read-more article:nth-child(3) {
1457
+ .read-more .post-card:nth-child(3) {
1498
1458
  display: none;
1499
1459
  }
1500
1460
  }
1501
1461
 
1502
1462
  @media (max-width: 700px) {
1503
1463
  .read-more {
1504
- grid-template-columns: 1fr;
1464
+ grid-template-columns: repeat(2, 1fr);
1505
1465
  }
1506
- .read-more article:nth-child(2) {
1466
+ .read-more .post-card:nth-child(2) {
1507
1467
  display: none;
1508
1468
  }
1509
1469
  }
@@ -1512,94 +1472,41 @@ iframe.instagram-media + script + :not([id]) {
1512
1472
  /* 8. Author Template
1513
1473
  /* ---------------------------------------------------------- */
1514
1474
 
1515
- .author-template .posts {
1516
- position: relative;
1517
- height: 100%;
1518
- display: grid;
1519
- grid-template-columns: 200px 1fr 1fr;
1520
- grid-gap: 4vmin;
1521
- }
1522
-
1523
- .author-template .posts .post-feed {
1524
- grid-column: 2 / 4;
1525
- grid-template-columns: 1fr 1fr;
1526
- }
1527
-
1528
- .author-profile {
1529
- padding: 4vmin 0;
1530
- }
1531
-
1532
- .author-profile-content {
1533
- height: auto;
1534
- position: sticky;
1535
- top: 4vmin;
1536
- font-size: 1.4rem;
1537
- line-height: 1.4em;
1538
- }
1539
-
1540
1475
  .author-profile-pic {
1541
1476
  display: block;
1542
- width: 150px;
1543
- height: 150px;
1477
+ width: 80px;
1478
+ height: 80px;
1544
1479
  object-fit: cover;
1545
1480
  margin: 0 0 2rem;
1546
1481
  background: color-mod(var(--color-lightgrey) l(+10%));
1547
1482
  border-radius: 50%;
1548
1483
  }
1549
1484
 
1550
- .author-profile h1 {
1551
- margin: 0 0 0.3em;
1552
- font-size: 2rem;
1553
- }
1554
-
1555
- .author-profile p {
1556
- margin: 0 0 1.5em;
1557
- color: color-mod(var(--color-midgrey) l(-8%));
1485
+ .author-profile-footer {
1486
+ margin-top: 16px;
1558
1487
  }
1559
1488
 
1560
1489
  .author-profile-location {
1561
- margin: 0 0 1.5em;
1562
1490
  font-weight: 700;
1563
1491
  }
1564
1492
 
1493
+ .author-profile-meta {
1494
+ display: flex;
1495
+ gap: 10px;
1496
+ }
1497
+
1565
1498
  .author-profile-social-link {
1566
- display: block;
1567
- padding: 0 0 5px;
1568
1499
  font-size: 1.3rem;
1569
- color: color-mod(var(--color-midgrey) l(-8%));
1570
- text-overflow: ellipsis;
1571
- overflow: hidden;
1572
- max-width: 100%;
1573
- white-space: nowrap;
1500
+ color: var(--color-secondary-text);
1574
1501
  }
1575
1502
 
1576
1503
  .author-profile-social-link:hover {
1577
1504
  color: var(--color-darkgrey);
1578
1505
  }
1579
1506
 
1580
- @media (max-width: 900px) {
1581
- .author-template .posts .post-feed {
1582
- grid-template-columns: 1fr;
1583
- }
1584
- }
1585
-
1586
- @media (max-width: 650px) {
1587
- .author-template .posts {
1588
- grid-template-columns: 1fr;
1589
- grid-gap: 0;
1590
- }
1591
- .author-template .posts .post-feed {
1592
- grid-column: 1 / auto;
1593
- }
1594
- .author-profile {
1595
- padding-right: 0;
1596
- }
1597
- .author-profile-content {
1598
- display: flex;
1599
- flex-direction: column;
1600
- align-items: center;
1601
- text-align: center;
1602
- }
1507
+ .author-profile-social-link svg {
1508
+ width: 16px;
1509
+ height: 16px;
1603
1510
  }
1604
1511
 
1605
1512
 
@@ -1620,7 +1527,7 @@ iframe.instagram-media + script + :not([id]) {
1620
1527
  /* ---------------------------------------------------------- */
1621
1528
 
1622
1529
  .error-content {
1623
- padding: 14vw 4vw 6vw;
1530
+ padding: 14vw 4vw 2vw;
1624
1531
  }
1625
1532
 
1626
1533
  .error-message {
@@ -1630,7 +1537,6 @@ iframe.instagram-media + script + :not([id]) {
1630
1537
 
1631
1538
  .error-code {
1632
1539
  margin: 0;
1633
- color: var(--ghost-accent-color);
1634
1540
  font-size: 12vw;
1635
1541
  line-height: 1em;
1636
1542
  letter-spacing: -5px;
@@ -1638,9 +1544,10 @@ iframe.instagram-media + script + :not([id]) {
1638
1544
 
1639
1545
  .error-description {
1640
1546
  margin: 0;
1641
- color: var(--color-midgrey);
1547
+ color: var(--color-secondary-text);
1642
1548
  font-size: 3.2rem;
1643
1549
  line-height: 1.3em;
1550
+ letter-spacing: -0.005em;
1644
1551
  font-weight: 400;
1645
1552
  }
1646
1553
 
@@ -1688,8 +1595,9 @@ iframe.instagram-media + script + :not([id]) {
1688
1595
 
1689
1596
  .site-footer {
1690
1597
  position: relative;
1691
- margin: 40px 0 0 0;
1692
- padding: 40px 4vmin 140px;
1598
+ margin: max(12vmin, 64px) 0 0 0;
1599
+ padding-top: 48px;
1600
+ padding-bottom: 140px;
1693
1601
  color: #fff;
1694
1602
  background: color-mod(var(--color-darkgrey) l(-5%));
1695
1603
  }
@@ -1751,7 +1659,7 @@ iframe.instagram-media + script + :not([id]) {
1751
1659
  border-radius: 100%;
1752
1660
  }
1753
1661
 
1754
- @media (max-width: 800px) {
1662
+ @media (max-width: 767px) {
1755
1663
  .site-footer .inner {
1756
1664
  max-width: 500px;
1757
1665
  grid-template-columns: 1fr;
@@ -1763,23 +1671,15 @@ iframe.instagram-media + script + :not([id]) {
1763
1671
  color: #fff;
1764
1672
  font-size: 1.5rem;
1765
1673
  }
1674
+ .site-footer .copyright {
1675
+ margin-bottom: 16px;
1676
+ }
1766
1677
  }
1767
1678
 
1768
1679
 
1769
1680
  /* 12. Dark Mode
1770
1681
  /* ---------------------------------------------------------- */
1771
1682
 
1772
- /* If you prefer a dark color scheme, you can enable dark mode
1773
- by adding the following code to the Head section of "Code Injection"
1774
- settings inside: Ghost Admin > Settings > Advanced
1775
-
1776
- <script>document.documentElement.classList.add('dark-mode');</script>
1777
-
1778
- Or you can just edit default.hbs and add the .dark-mode class directly
1779
- to the html tag on the very first line of the file.
1780
-
1781
- */
1782
-
1783
1683
  html.dark-mode body {
1784
1684
  color: rgba(255, 255, 255, 0.75);
1785
1685
  background: var(--color-darkmode);
@@ -1793,16 +1693,20 @@ html.dark-mode kbd {
1793
1693
  background: color-mod(var(--color-darkmode) l(+5%));
1794
1694
  }
1795
1695
 
1796
- html.dark-mode .post-card,
1797
- html.dark-mode .post-card:hover {
1798
- border-bottom-color: color-mod(var(--color-darkmode) l(+8%));
1696
+ html.dark-mode figcaption a {
1697
+ color: #fff;
1799
1698
  }
1800
1699
 
1801
- html.dark-mode .post-card-byline-content a {
1802
- color: rgba(255, 255, 255, 0.75);
1700
+ html.dark-mode .gh-head {
1701
+ background: var(--color-darkmode);
1702
+ color: #fff;
1803
1703
  }
1804
1704
 
1805
- html.dark-mode .post-card-byline-content a:hover {
1705
+ html.dark-mode .gh-burger-box {
1706
+ color: #fff;
1707
+ }
1708
+
1709
+ html.dark-mode .site-header-content {
1806
1710
  color: #fff;
1807
1711
  }
1808
1712
 
@@ -1810,24 +1714,24 @@ html.dark-mode .post-card-image {
1810
1714
  background: var(--color-darkmode);
1811
1715
  }
1812
1716
 
1813
- html.dark-mode .post-card-title {
1814
- color: rgba(255, 255, 255, 0.85);
1717
+ html.dark-mode :is(.post-card-primary-tag, .post-card-meta, .article-tag a, .byline-meta-content) {
1718
+ color: color-mod(var(--color-secondary-text) l(-22%));
1815
1719
  }
1816
1720
 
1817
- html.dark-mode .post-card-excerpt {
1818
- color: color-mod(var(--color-midgrey) l(+10%));
1721
+ html.dark-mode .post-card-title {
1722
+ color: #fff;
1819
1723
  }
1820
1724
 
1821
- html.dark-mode .post-full-content {
1822
- background: var(--color-darkmode);
1725
+ html.dark-mode .post-card-excerpt {
1726
+ color: var(--color-secondary-text);
1823
1727
  }
1824
1728
 
1825
1729
  html.dark-mode .article-title {
1826
- color: rgba(255, 255, 255, 0.9);
1730
+ color: #fff;
1827
1731
  }
1828
1732
 
1829
1733
  html.dark-mode .article-excerpt {
1830
- color: color-mod(var(--color-midgrey) l(+10%));
1734
+ color: var(--color-secondary-text);
1831
1735
  }
1832
1736
 
1833
1737
  html.dark-mode .post-full-image {
@@ -1838,11 +1742,7 @@ html.dark-mode .article-byline {
1838
1742
  border-top-color: color-mod(var(--color-darkmode) l(+15%));
1839
1743
  }
1840
1744
 
1841
- html.dark-mode .article-byline-meta h4 a {
1842
- color: rgba(255, 255, 255, 0.75);
1843
- }
1844
-
1845
- html.dark-mode .article-byline-meta h4 a:hover {
1745
+ html.dark-mode .article-byline-meta .author-name a {
1846
1746
  color: #fff;
1847
1747
  }
1848
1748
 
@@ -1934,160 +1834,8 @@ html.dark-mode .kg-header-card h3.kg-header-card-subheader {
1934
1834
  color: #fff;
1935
1835
  }
1936
1836
 
1937
- @media (prefers-color-scheme: dark) {
1938
- html.auto-color body {
1939
- color: rgba(255, 255, 255, 0.75);
1940
- background: var(--color-darkmode);
1941
- }
1942
-
1943
- html.auto-color img {
1944
- opacity: 0.9;
1945
- }
1946
-
1947
- html.auto-color kbd {
1948
- background: color-mod(var(--color-darkmode) l(+5%));
1949
- }
1950
-
1951
- html.auto-color .post-card,
1952
- html.auto-color .post-card:hover {
1953
- border-bottom-color: color-mod(var(--color-darkmode) l(+8%));
1954
- }
1955
-
1956
- html.auto-color .post-card-byline-content a {
1957
- color: rgba(255, 255, 255, 0.75);
1958
- }
1959
-
1960
- html.auto-color .post-card-byline-content a:hover {
1961
- color: #fff;
1962
- }
1963
-
1964
- html.auto-color .post-card-image {
1965
- background: var(--color-darkmode);
1966
- }
1967
-
1968
- html.auto-color .post-card-title {
1969
- color: rgba(255, 255, 255, 0.85);
1970
- }
1971
-
1972
- html.auto-color .post-card-excerpt {
1973
- color: color-mod(var(--color-midgrey) l(+10%));
1974
- }
1975
-
1976
- html.auto-color .post-full-content {
1977
- background: var(--color-darkmode);
1978
- }
1979
-
1980
- html.auto-color .article-title {
1981
- color: rgba(255, 255, 255, 0.9);
1982
- }
1983
-
1984
- html.auto-color .article-excerpt {
1985
- color: color-mod(var(--color-midgrey) l(+10%));
1986
- }
1987
-
1988
- html.auto-color .post-full-image {
1989
- background-color: color-mod(var(--color-darkmode) l(+8%));
1990
- }
1991
-
1992
- html.auto-color .article-byline {
1993
- border-top-color: color-mod(var(--color-darkmode) l(+15%));
1994
- }
1995
-
1996
- html.auto-color .article-byline-meta h4 a {
1997
- color: rgba(255, 255, 255, 0.75);
1998
- }
1999
-
2000
- html.auto-color .article-byline-meta h4 a:hover {
2001
- color: #fff;
2002
- }
2003
-
2004
- html.auto-color .no-image .author-social-link a {
2005
- color: rgba(255, 255, 255, 0.75);
2006
- }
2007
-
2008
- html.auto-color .gh-content > [id] {
2009
- color: rgba(255, 255, 255, 0.9);
2010
- }
2011
-
2012
- html.auto-color .gh-content pre {
2013
- background: color-mod(var(--color-darkgrey) l(-8%));
2014
- }
2015
-
2016
- html.auto-color .gh-content :not(pre) > code {
2017
- background: color-mod(var(--color-darkgrey) l(+6%));
2018
- border-color: color-mod(var(--color-darkmode) l(+8%));
2019
- color: var(--color-wash);
2020
- }
2021
-
2022
- html.auto-color .gh-content a:not(.kg-btn):not(.kg-nft-card-container):not(.kg-product-card-button):not(.kg-header-card-button) {
2023
- color: #fff;
2024
- }
2025
-
2026
- html.auto-color .gh-content strong {
2027
- color: #fff;
2028
- }
2029
-
2030
- html.auto-color .gh-content em {
2031
- color: #fff;
2032
- }
2033
-
2034
- html.auto-color .gh-content code {
2035
- color: #fff;
2036
- background: #000;
2037
- }
2038
-
2039
- html.auto-color hr {
2040
- border-top-color: color-mod(var(--color-darkmode) l(+8%));
2041
- }
2042
-
2043
- html.auto-color .gh-content hr:after {
2044
- background: color-mod(var(--color-darkmode) l(+8%));
2045
- box-shadow: var(--color-darkmode) 0 0 0 5px;
2046
- }
2047
-
2048
- html.auto-color figcaption {
2049
- color: rgba(255, 255, 255, 0.6);
2050
- }
2051
-
2052
- html.auto-color .gh-content table td:first-child {
2053
- background-image: linear-gradient(to right, var(--color-darkmode) 50%, color-mod(var(--color-darkmode) a(0%)) 100%);
2054
- }
2055
-
2056
- html.auto-color .gh-content table td:last-child {
2057
- background-image: linear-gradient(to left, var(--color-darkmode) 50%, color-mod(var(--color-darkmode) a(0%)) 100%);
2058
- }
2059
-
2060
- html.auto-color .gh-content table th {
2061
- color: rgba(255, 255, 255, 0.85);
2062
- background-color: color-mod(var(--color-darkmode) l(+8%));
2063
- }
2064
-
2065
- html.auto-color .gh-content table th,
2066
- html.auto-color .gh-content table td {
2067
- border: color-mod(var(--color-darkmode) l(+8%)) 1px solid;
2068
- }
2069
-
2070
- html.auto-color .gh-content input {
2071
- color: color-mod(var(--color-midgrey) l(-30%));
2072
- }
2073
-
2074
- html.auto-color .site-archive-header .no-image {
2075
- color: rgba(255, 255, 255, 0.9);
2076
- background: var(--color-darkmode);
2077
- }
2078
-
2079
- html.auto-color .kg-header-card.kg-style-dark {
2080
- background: color-mod(var(--color-darkgrey) l(-5%));
2081
- }
2082
-
2083
- html.auto-color .kg-header-card.kg-style-light {
2084
- background: color-mod(var(--color-darkgrey) l(+5%));
2085
- }
2086
-
2087
- html.auto-color .kg-header-card h2.kg-header-card-header,
2088
- html.auto-color .kg-header-card h3.kg-header-card-subheader {
2089
- color: #fff;
2090
- }
1837
+ html.dark-mode .footer-cta-title {
1838
+ color: #fff;
2091
1839
  }
2092
1840
 
2093
1841
  /*