ghost 4.22.3 → 4.25.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 (230) hide show
  1. package/.c8rc.json +24 -0
  2. package/.eslintrc.js +39 -0
  3. package/Gruntfile.js +0 -1
  4. package/content/public/README.md +3 -0
  5. package/content/themes/casper/assets/built/casper.js +1 -1
  6. package/content/themes/casper/assets/built/casper.js.map +1 -1
  7. package/content/themes/casper/assets/built/global.css +1 -1
  8. package/content/themes/casper/assets/built/global.css.map +1 -1
  9. package/content/themes/casper/assets/built/screen.css +1 -1
  10. package/content/themes/casper/assets/built/screen.css.map +1 -1
  11. package/content/themes/casper/assets/css/global.css +6 -1
  12. package/content/themes/casper/assets/css/screen.css +32 -216
  13. package/content/themes/casper/default.hbs +2 -2
  14. package/content/themes/casper/package.json +3 -2
  15. package/content/themes/casper/post.hbs +1 -1
  16. package/content/themes/casper/yarn.lock +173 -123
  17. package/core/app.js +12 -1
  18. package/core/boot.js +47 -28
  19. package/core/bridge.js +10 -10
  20. package/core/built/assets/{chunk.3.324fd0cc598c73650219.js → chunk.3.8f95b516d88ff4eec64c.js} +18 -18
  21. package/core/built/assets/ghost-dark-d690e732e17ffc794e2e59c1467ca282.css +1 -0
  22. package/core/built/assets/ghost.min-043bb7480a0810109b130f13b2a4235e.css +1 -0
  23. package/core/built/assets/{ghost.min-7da921f6c6cac3fe10da1ba104575440.js → ghost.min-bc72f685c1c9adc9885925c1412435a5.js} +563 -605
  24. package/core/built/assets/icons/audio-upload.svg +8 -0
  25. package/core/built/assets/icons/powered-by-tenor.svg +35 -0
  26. package/core/built/assets/icons/tenor.svg +7 -0
  27. package/core/built/assets/{vendor.min-413f887176a041e6dbf88214ca9a7481.js → vendor.min-d1234c632a54502777c34e50752fa3fc.js} +4622 -3631
  28. package/core/frontend/apps/amp/lib/helpers/amp_content.js +2 -2
  29. package/core/frontend/apps/amp/lib/views/amp.hbs +112 -0
  30. package/core/frontend/apps/private-blogging/index.js +1 -1
  31. package/core/frontend/apps/private-blogging/lib/router.js +1 -1
  32. package/core/frontend/services/apps/index.js +1 -1
  33. package/core/frontend/services/apps/loader.js +3 -3
  34. package/core/frontend/services/card-assets/index.js +0 -12
  35. package/core/frontend/services/card-assets/service.js +29 -28
  36. package/core/frontend/services/helpers/handlebars.js +1 -1
  37. package/core/frontend/services/routing/CollectionRouter.js +4 -5
  38. package/core/frontend/services/routing/EmailRouter.js +1 -1
  39. package/core/frontend/services/routing/ParentRouter.js +0 -8
  40. package/core/frontend/services/routing/PreviewRouter.js +1 -1
  41. package/core/frontend/services/routing/StaticPagesRouter.js +1 -1
  42. package/core/frontend/services/routing/StaticRoutesRouter.js +4 -4
  43. package/core/frontend/services/routing/TaxonomyRouter.js +3 -3
  44. package/core/frontend/services/routing/{middlewares → middleware}/index.js +0 -0
  45. package/core/frontend/services/routing/{middlewares → middleware}/page-param.js +0 -0
  46. package/core/frontend/services/routing/router-manager.js +7 -2
  47. package/core/frontend/services/rss/generate-feed.js +2 -1
  48. package/core/frontend/services/theme-engine/middleware/ensure-active-theme.js +34 -0
  49. package/core/frontend/services/theme-engine/middleware/index.js +6 -0
  50. package/core/frontend/services/theme-engine/middleware/update-global-template-options.js +116 -0
  51. package/core/frontend/services/theme-engine/middleware/update-local-template-data.js +9 -0
  52. package/core/frontend/services/theme-engine/middleware/update-local-template-options.js +57 -0
  53. package/core/frontend/src/cards/css/bookmark.css +72 -47
  54. package/core/frontend/src/cards/css/button.css +4 -0
  55. package/core/frontend/src/cards/css/callout.css +40 -3
  56. package/core/frontend/src/cards/css/gallery.css +15 -10
  57. package/core/frontend/src/cards/css/nft.css +20 -11
  58. package/core/frontend/src/cards/css/toggle.css +58 -0
  59. package/core/frontend/src/cards/js/toggle.js +16 -0
  60. package/core/frontend/web/middleware/error-handler.js +93 -0
  61. package/core/frontend/web/middleware/handle-image-sizes.js +3 -6
  62. package/core/frontend/web/middleware/index.js +1 -0
  63. package/core/frontend/web/middleware/serve-public-file.js +39 -16
  64. package/core/frontend/web/site.js +11 -14
  65. package/core/server/adapters/scheduling/SchedulingDefault.js +2 -2
  66. package/core/server/adapters/storage/LocalStorageBase.js +2 -2
  67. package/core/server/api/canary/authentication.js +1 -1
  68. package/core/server/api/canary/db.js +2 -2
  69. package/core/server/api/canary/media.js +3 -2
  70. package/core/server/api/canary/oembed.js +16 -1
  71. package/core/server/api/canary/session.js +1 -1
  72. package/core/server/api/canary/slugs.js +1 -1
  73. package/core/server/api/canary/utils/permissions.js +2 -2
  74. package/core/server/api/canary/utils/serializers/output/config.js +2 -6
  75. package/core/server/api/v2/authentication.js +1 -1
  76. package/core/server/api/v2/db.js +2 -2
  77. package/core/server/api/v2/session.js +1 -1
  78. package/core/server/api/v2/slugs.js +1 -1
  79. package/core/server/api/v2/utils/permissions.js +2 -2
  80. package/core/server/api/v3/authentication.js +1 -1
  81. package/core/server/api/v3/db.js +2 -2
  82. package/core/server/api/v3/session.js +1 -1
  83. package/core/server/api/v3/slugs.js +1 -1
  84. package/core/server/api/v3/utils/permissions.js +2 -2
  85. package/core/server/data/db/connection.js +7 -0
  86. package/core/server/data/db/state-manager.js +4 -4
  87. package/core/server/data/exporter/export-filename.js +1 -1
  88. package/core/server/data/importer/handlers/json.js +1 -1
  89. package/core/server/data/importer/import-manager.js +1 -1
  90. package/core/server/data/importer/importers/data/base.js +1 -1
  91. package/core/server/data/importer/importers/data/data-importer.js +3 -3
  92. package/core/server/data/migrations/init/2-create-fixtures.js +3 -20
  93. package/core/server/data/migrations/utils.js +2 -2
  94. package/core/server/data/migrations/versions/1.21/1-add-contributor-role.js +5 -5
  95. package/core/server/data/migrations/versions/1.25/1-update-koenig-beta-html.js +1 -0
  96. package/core/server/data/migrations/versions/2.15/2-insert-zapier-integration.js +3 -3
  97. package/core/server/data/migrations/versions/2.2/3-insert-admin-integration-role.js +5 -5
  98. package/core/server/data/migrations/versions/2.27/1-insert-ghost-db-backup-role.js +5 -6
  99. package/core/server/data/migrations/versions/2.27/2-insert-db-backup-integration.js +3 -4
  100. package/core/server/data/migrations/versions/2.28/3-insert-ghost-scheduler-role.js +7 -7
  101. package/core/server/data/migrations/versions/2.28/4-insert-scheduler-integration.js +3 -3
  102. package/core/server/data/migrations/versions/3.1/08-add-uuid-values-to-members.js +1 -0
  103. package/core/server/data/migrations/versions/3.22/02-settings-key-renames.js +2 -0
  104. package/core/server/data/migrations/versions/3.22/05-migrate-members-subscription-settings.js +3 -0
  105. package/core/server/data/migrations/versions/3.22/06-migrate-stripe-connect-settings.js +2 -0
  106. package/core/server/data/migrations/versions/3.23/01-migrate-bulk-email-settings.js +1 -0
  107. package/core/server/data/migrations/versions/3.29/01-remove-duplicate-subscriptions.js +2 -0
  108. package/core/server/data/migrations/versions/3.29/02-remove-duplicate-customers.js +2 -0
  109. package/core/server/data/migrations/versions/3.38/04-populate-recipient-filter-column.js +2 -0
  110. package/core/server/data/migrations/versions/4.0/01-update-mobiledoc.js +2 -0
  111. package/core/server/data/migrations/versions/4.0/03-populate-status-column-for-members.js +4 -0
  112. package/core/server/data/migrations/versions/4.0/06-populate-members-subscribe-events-table.js +1 -0
  113. package/core/server/data/migrations/versions/4.0/17-populate-members-status-events-table.js +1 -0
  114. package/core/server/data/migrations/versions/4.0/18-transform-urls-absolute-to-transform-ready.js +5 -0
  115. package/core/server/data/migrations/versions/4.0/22-solve-orphaned-webhooks.js +1 -0
  116. package/core/server/data/migrations/versions/4.0/23-regenerate-posts-html.js +1 -0
  117. package/core/server/data/migrations/versions/4.0/25-populate-members-paid-subscription-events-table.js +2 -1
  118. package/core/server/data/migrations/versions/4.12/02-fix-member-statuses.js +1 -0
  119. package/core/server/data/migrations/versions/4.14/01-fix-comped-member-statuses.js +3 -0
  120. package/core/server/data/migrations/versions/4.14/02-fix-free-members-status-events.js +1 -0
  121. package/core/server/data/migrations/versions/4.20/05-remove-not-null-constraint-from-portal-title.js +2 -0
  122. package/core/server/data/migrations/versions/4.23/01-truncate-offer-names.js +59 -0
  123. package/core/server/data/migrations/versions/4.3/04-attach-members-to-product.js +1 -0
  124. package/core/server/data/migrations/versions/4.4/01-restore-free-members-signup-setting-from-backup.js +1 -0
  125. package/core/server/data/migrations/versions/4.6/01-remove-comped-status.js +1 -0
  126. package/core/server/data/migrations/versions/4.8/04-migrate-show-newsletter-header-setting.js +1 -0
  127. package/core/server/data/migrations/versions/4.9/05-fix-missed-mobiledoc-url-transforms.js +1 -0
  128. package/core/server/data/migrations/versions/4.9/06-add-comped-status.js +1 -0
  129. package/core/server/data/migrations/versions/4.9/07-update-comped-members-status-events.js +1 -0
  130. package/core/server/data/schema/commands.js +2 -2
  131. package/core/server/data/schema/fixtures/fixture-manager.js +340 -0
  132. package/core/server/data/schema/fixtures/index.js +8 -2
  133. package/core/server/ghost-server.js +2 -2
  134. package/core/server/lib/image/image-size.js +2 -2
  135. package/core/server/models/base/listeners.js +2 -2
  136. package/core/server/models/member-email-change-event.js +2 -2
  137. package/core/server/models/member-login-event.js +2 -2
  138. package/core/server/models/member-paid-subscription-event.js +3 -3
  139. package/core/server/models/member-payment-event.js +3 -3
  140. package/core/server/models/member-product-event.js +6 -6
  141. package/core/server/models/member-status-event.js +5 -3
  142. package/core/server/models/member-subscribe-event.js +9 -3
  143. package/core/server/models/relations/authors.js +1 -1
  144. package/core/server/models/settings.js +1 -1
  145. package/core/server/services/auth/passwordreset.js +1 -1
  146. package/core/server/services/auth/setup.js +1 -1
  147. package/core/server/services/email-analytics/jobs/index.js +1 -1
  148. package/core/server/services/mega/mega.js +6 -4
  149. package/core/server/services/mega/post-email-serializer.js +5 -1
  150. package/core/server/services/mega/segment-parser.js +1 -2
  151. package/core/server/services/mega/template.js +52 -37
  152. package/core/server/services/members/api.js +22 -0
  153. package/core/server/services/members/config.js +1 -1
  154. package/core/server/services/members/emails/signup-paid.js +168 -0
  155. package/core/server/services/members/service.js +6 -2
  156. package/core/server/services/members/stripe-connect.js +4 -2
  157. package/core/server/services/nft-oembed.js +13 -22
  158. package/core/server/services/oembed.js +28 -24
  159. package/core/server/services/permissions/can-this.js +1 -1
  160. package/core/server/services/public-config/config.js +1 -1
  161. package/core/server/services/redirects/api.js +20 -25
  162. package/core/server/services/redirects/index.js +18 -10
  163. package/core/server/services/redirects/utils.js +14 -0
  164. package/core/server/services/redirects/validation.js +10 -0
  165. package/core/server/services/route-settings/default-settings-manager.js +1 -1
  166. package/core/server/services/route-settings/index.js +40 -17
  167. package/core/server/services/route-settings/route-settings.js +120 -115
  168. package/core/server/services/route-settings/settings-loader.js +18 -36
  169. package/core/server/services/route-settings/yaml-parser.js +1 -1
  170. package/core/server/services/slack.js +1 -1
  171. package/core/server/services/themes/activation-bridge.js +3 -3
  172. package/core/server/services/themes/storage.js +2 -2
  173. package/core/server/services/twitter-embed.js +80 -0
  174. package/core/server/services/url/LocalFileCache.js +75 -0
  175. package/core/server/services/url/Resources.js +8 -2
  176. package/core/server/services/url/UrlGenerator.js +23 -20
  177. package/core/server/services/url/UrlService.js +75 -63
  178. package/core/server/services/url/index.js +17 -3
  179. package/core/server/services/xmlrpc.js +2 -2
  180. package/core/server/web/admin/app.js +7 -10
  181. package/core/server/web/admin/controller.js +35 -12
  182. package/core/server/web/admin/middleware/redirect-admin-urls.js +15 -0
  183. package/core/server/web/admin/views/default-prod.html +4 -4
  184. package/core/server/web/admin/views/default.html +4 -4
  185. package/core/server/web/api/app.js +1 -1
  186. package/core/server/web/api/canary/admin/app.js +3 -6
  187. package/core/server/web/api/canary/admin/middleware.js +7 -7
  188. package/core/server/web/api/canary/admin/routes.js +5 -5
  189. package/core/server/web/api/canary/content/app.js +3 -6
  190. package/core/server/web/api/canary/content/middleware.js +3 -3
  191. package/core/server/web/api/v2/admin/app.js +3 -6
  192. package/core/server/web/api/v2/admin/middleware.js +7 -7
  193. package/core/server/web/api/v2/admin/routes.js +5 -5
  194. package/core/server/web/api/v2/content/app.js +3 -6
  195. package/core/server/web/api/v2/content/middleware.js +3 -3
  196. package/core/server/web/api/v3/admin/app.js +3 -6
  197. package/core/server/web/api/v3/admin/middleware.js +7 -7
  198. package/core/server/web/api/v3/admin/routes.js +5 -5
  199. package/core/server/web/api/v3/content/app.js +3 -6
  200. package/core/server/web/api/v3/content/middleware.js +3 -3
  201. package/core/server/web/members/app.js +6 -9
  202. package/core/server/web/oauth/app.js +0 -4
  203. package/core/server/web/parent/app.js +17 -9
  204. package/core/server/web/parent/frontend.js +1 -1
  205. package/core/server/web/shared/index.js +2 -2
  206. package/core/server/web/shared/{middlewares → middleware}/api/index.js +0 -0
  207. package/core/server/web/shared/{middlewares → middleware}/api/spam-prevention.js +0 -0
  208. package/core/server/web/shared/{middlewares → middleware}/brute.js +0 -0
  209. package/core/server/web/shared/{middlewares → middleware}/cache-control.js +0 -0
  210. package/core/server/web/shared/middleware/error-handler.js +224 -0
  211. package/core/server/web/shared/{middlewares → middleware}/index.js +0 -4
  212. package/core/server/web/shared/{middlewares → middleware}/pretty-urls.js +0 -0
  213. package/core/server/web/shared/{middlewares → middleware}/uncapitalise.js +0 -0
  214. package/core/server/web/shared/{middlewares → middleware}/url-redirects.js +0 -0
  215. package/core/shared/config/defaults.json +13 -1
  216. package/core/shared/config/helpers.js +42 -0
  217. package/core/shared/config/loader.js +1 -1
  218. package/core/shared/labs.js +9 -5
  219. package/core/shared/sentry.js +1 -1
  220. package/loggingrc.js +19 -20
  221. package/package.json +38 -37
  222. package/yarn.lock +1064 -892
  223. package/content/themes/casper/assets/js/gallery-card.js +0 -24
  224. package/core/built/assets/ghost-dark-39fb496d051565531062d7e047d1c0b1.css +0 -1
  225. package/core/built/assets/ghost.min-4207edfc1ae0a3f9f6505ca00d20b0c0.css +0 -1
  226. package/core/frontend/services/theme-engine/middleware.js +0 -209
  227. package/core/server/data/schema/fixtures/utils.js +0 -321
  228. package/core/server/web/parent/vhost-utils.js +0 -39
  229. package/core/server/web/shared/middlewares/error-handler.js +0 -329
  230. package/core/server/web/shared/middlewares/maintenance.js +0 -25
@@ -995,7 +995,7 @@ is the very first element in the post content */
995
995
  }
996
996
 
997
997
  /* Now the content typography styles */
998
- .gh-content a {
998
+ .gh-content a:not(.gh-post-upgrade-cta a):not(.kg-bookmark-container):not(.kg-btn):not(.kg-nft-card-container) {
999
999
  color: var(--ghost-accent-color);
1000
1000
  text-decoration: underline;
1001
1001
  word-break: break-word;
@@ -1005,7 +1005,11 @@ is the very first element in the post content */
1005
1005
  .gh-content > ol,
1006
1006
  .gh-content > ul,
1007
1007
  .gh-content > dl,
1008
- .gh-content > p {
1008
+ .gh-content > p,
1009
+ .kg-callout-text,
1010
+ .kg-toggle-content > ol,
1011
+ .kg-toggle-content > ul,
1012
+ .kg-toggle-content > p {
1009
1013
  font-family: var(--font-serif);
1010
1014
  font-weight: 400;
1011
1015
  font-size: 2.1rem;
@@ -1016,7 +1020,11 @@ is the very first element in the post content */
1016
1020
  .has-sans-body .gh-content > ol,
1017
1021
  .has-sans-body .gh-content > ul,
1018
1022
  .has-sans-body .gh-content > dl,
1019
- .has-sans-body .gh-content > p {
1023
+ .has-sans-body .gh-content > p,
1024
+ .has-sans-body .kg-callout-text,
1025
+ .has-sans-body .kg-toggle-content > ol,
1026
+ .has-sans-body .kg-toggle-content > ul,
1027
+ .has-sans-body .kg-toggle-content > p {
1020
1028
  font-family: var(--font-sans);
1021
1029
  }
1022
1030
 
@@ -1066,11 +1074,15 @@ is the very first element in the post content */
1066
1074
  }
1067
1075
 
1068
1076
  @media (max-width: 650px) {
1069
- .gh-content blockquote,
1070
- .gh-content ol,
1071
- .gh-content ul,
1072
- .gh-content dl,
1073
- .gh-content p {
1077
+ .gh-content > blockquote,
1078
+ .gh-content > ol,
1079
+ .gh-content > ul,
1080
+ .gh-content > dl,
1081
+ .gh-content > p,
1082
+ .kg-callout-text,
1083
+ .kg-toggle-content > ol,
1084
+ .kg-toggle-content > ul,
1085
+ .kg-toggle-content > p {
1074
1086
  font-size: 1.7rem;
1075
1087
  }
1076
1088
 
@@ -1112,6 +1124,14 @@ except for when immediately preceeded by a heading */
1112
1124
  margin: auto;
1113
1125
  }
1114
1126
 
1127
+ .has-serif-title .kg-toggle-heading-text {
1128
+ font-family: var(--font-serif);
1129
+ }
1130
+
1131
+ .kg-toggle-content > * + * {
1132
+ margin-top: min(2.4rem, 4vmin);
1133
+ }
1134
+
1115
1135
 
1116
1136
  /* Captions */
1117
1137
  figcaption {
@@ -1143,162 +1163,6 @@ iframe.instagram-media + script + :not([id]) {
1143
1163
  }
1144
1164
 
1145
1165
 
1146
- /* Galleries
1147
- /* ---------------------------------------------------------- */
1148
-
1149
- /* When there galleries are mixed with images, reduce margin
1150
- between them, so it looks like 1 big gallery */
1151
- .kg-image-card + .kg-gallery-card,
1152
- .kg-gallery-card + .kg-image-card,
1153
- .kg-gallery-card + .kg-gallery-card {
1154
- margin-top: 0.75em;
1155
- }
1156
-
1157
- .kg-image-card.kg-card-hascaption + .kg-gallery-card,
1158
- .kg-gallery-card.kg-card-hascaption + .kg-image-card,
1159
- .kg-gallery-card.kg-card-hascaption + .kg-gallery-card {
1160
- margin-top: 1.75em;
1161
- }
1162
-
1163
- .kg-gallery-container {
1164
- position: relative;
1165
- }
1166
-
1167
- .kg-gallery-row {
1168
- display: flex;
1169
- flex-direction: row;
1170
- justify-content: center;
1171
- }
1172
-
1173
- .kg-gallery-image img {
1174
- display: block;
1175
- margin: 0;
1176
- width: 100%;
1177
- height: 100%;
1178
- }
1179
-
1180
- .kg-gallery-row:not(:first-of-type) {
1181
- margin: 0.75em 0 0 0;
1182
- }
1183
-
1184
- .kg-gallery-image:not(:first-of-type) {
1185
- margin: 0 0 0 0.75em;
1186
- }
1187
-
1188
-
1189
- /* Bookmark Cards
1190
- /* ---------------------------------------------------------- */
1191
-
1192
- /* These are styled links with structured data, similar to a
1193
- Twitter card. These styles roughly match what you see in the
1194
- Ghost editor. */
1195
-
1196
- .kg-bookmark-card,
1197
- .kg-bookmark-publisher {
1198
- position: relative;
1199
- width: 100%;
1200
- }
1201
-
1202
- .kg-bookmark-container,
1203
- .kg-bookmark-container:hover {
1204
- display: flex;
1205
- color: currentColor;
1206
- font-family: var(--font-sans-serif);
1207
- text-decoration: none !important;
1208
- background: rgba(255,255,255,0.6);
1209
- border-radius: 5px;
1210
- box-shadow: 0 2px 6px -2px rgba(0, 0, 0, 0.1), 0 0 1px rgba(0, 0, 0, 0.4);
1211
- overflow: hidden;
1212
- }
1213
-
1214
- .kg-bookmark-content {
1215
- display: flex;
1216
- flex-direction: column;
1217
- flex-grow: 1;
1218
- flex-basis: 100%;
1219
- align-items: flex-start;
1220
- justify-content: flex-start;
1221
- padding: 20px;
1222
- }
1223
-
1224
- .kg-bookmark-title {
1225
- font-size: 1.5rem;
1226
- line-height: 1.4em;
1227
- font-weight: 600;
1228
- color: #15171A;
1229
- }
1230
-
1231
- .kg-bookmark-description {
1232
- display: -webkit-box;
1233
- font-size: 1.4rem;
1234
- line-height: 1.5em;
1235
- margin-top: 3px;
1236
- color: #626d79;
1237
- font-weight: 400;
1238
- max-height: 44px;
1239
- overflow-y: hidden;
1240
- -webkit-line-clamp: 2;
1241
- -webkit-box-orient: vertical;
1242
- }
1243
-
1244
- .kg-bookmark-metadata {
1245
- display: flex;
1246
- align-items: center;
1247
- margin-top: 22px;
1248
- width: 100%;
1249
- color: #394047;
1250
- font-size: 1.4rem;
1251
- font-weight: 500;
1252
- }
1253
-
1254
- .kg-bookmark-icon {
1255
- width: 20px;
1256
- height: 20px;
1257
- margin-right: 6px;
1258
- }
1259
-
1260
- .kg-bookmark-author,
1261
- .kg-bookmark-publisher {
1262
- display: inline;
1263
- }
1264
-
1265
- .kg-bookmark-publisher {
1266
- text-overflow: ellipsis;
1267
- overflow: hidden;
1268
- max-width: 240px;
1269
- white-space: nowrap;
1270
- display: block;
1271
- line-height: 1.65em;
1272
- }
1273
-
1274
- .kg-bookmark-metadata > span:nth-of-type(2) {
1275
- color: #626d79;
1276
- font-weight: 400;
1277
- }
1278
-
1279
- .kg-bookmark-metadata > span:nth-of-type(2):before {
1280
- content: "•";
1281
- color: #394047;
1282
- margin: 0 6px;
1283
- }
1284
-
1285
- .kg-bookmark-thumbnail {
1286
- position: relative;
1287
- flex-grow: 1;
1288
- min-width: 33%;
1289
- }
1290
-
1291
- .kg-bookmark-thumbnail img {
1292
- width: 100%;
1293
- height: 100%;
1294
- object-fit: cover;
1295
- position: absolute;
1296
- top: 0;
1297
- left: 0;
1298
- border-radius: 0 4px 4px 0;
1299
- }
1300
-
1301
-
1302
1166
  /* Card captions
1303
1167
  /* ---------------------------------------------------------- */
1304
1168
 
@@ -1913,12 +1777,7 @@ html.dark-mode .no-image .author-social-link a {
1913
1777
  color: rgba(255, 255, 255, 0.75);
1914
1778
  }
1915
1779
 
1916
- html.dark-mode .gh-content h1,
1917
- html.dark-mode .gh-content h2,
1918
- html.dark-mode .gh-content h3,
1919
- html.dark-mode .gh-content h4,
1920
- html.dark-mode .gh-content h5,
1921
- html.dark-mode .gh-content h6 {
1780
+ html.dark-mode .gh-content > [id] {
1922
1781
  color: rgba(255, 255, 255, 0.9);
1923
1782
  }
1924
1783
 
@@ -1932,9 +1791,8 @@ html.dark-mode .gh-content :not(pre) > code {
1932
1791
  color: var(--color-wash);
1933
1792
  }
1934
1793
 
1935
- html.dark-mode .gh-content a {
1794
+ html.dark-mode .gh-content a:not(.kg-btn):not(.kg-nft-card-container) {
1936
1795
  color: #fff;
1937
- box-shadow: inset 0 -1px 0 #fff;
1938
1796
  }
1939
1797
 
1940
1798
  html.dark-mode .gh-content strong {
@@ -1981,28 +1839,10 @@ html.dark-mode .gh-content table td {
1981
1839
  border: color-mod(var(--color-darkmode) l(+8%)) 1px solid;
1982
1840
  }
1983
1841
 
1984
- html.dark-mode .gh-content .kg-bookmark-container,
1985
- html.dark-mode .gh-content .kg-bookmark-container:hover {
1986
- color: rgba(255, 255, 255, 0.75);
1987
- box-shadow: 0 0 1px rgba(255,255,255,0.9);
1988
- }
1989
-
1990
1842
  html.dark-mode .gh-content input {
1991
1843
  color: color-mod(var(--color-midgrey) l(-30%));
1992
1844
  }
1993
1845
 
1994
- html.dark-mode .kg-bookmark-title {
1995
- color: #fff;
1996
- }
1997
-
1998
- html.dark-mode .kg-bookmark-description {
1999
- color: rgba(255, 255, 255, 0.75);
2000
- }
2001
-
2002
- html.dark-mode .kg-bookmark-metadata {
2003
- color: rgba(255, 255, 255, 0.75);
2004
- }
2005
-
2006
1846
  html.dark-mode .site-archive-header .no-image {
2007
1847
  color: rgba(255, 255, 255, 0.9);
2008
1848
  background: var(--color-darkmode);
@@ -2075,12 +1915,7 @@ html.dark-mode .site-archive-header .no-image {
2075
1915
  color: rgba(255, 255, 255, 0.75);
2076
1916
  }
2077
1917
 
2078
- html.auto-color .gh-content h1,
2079
- html.auto-color .gh-content h2,
2080
- html.auto-color .gh-content h3,
2081
- html.auto-color .gh-content h4,
2082
- html.auto-color .gh-content h5,
2083
- html.auto-color .gh-content h6 {
1918
+ html.auto-color .gh-content > [id] {
2084
1919
  color: rgba(255, 255, 255, 0.9);
2085
1920
  }
2086
1921
 
@@ -2094,9 +1929,8 @@ html.dark-mode .site-archive-header .no-image {
2094
1929
  color: var(--color-wash);
2095
1930
  }
2096
1931
 
2097
- html.auto-color .gh-content a {
1932
+ html.auto-color .gh-content a:not(.kg-btn):not(.kg-nft-card-container) {
2098
1933
  color: #fff;
2099
- box-shadow: inset 0 -1px 0 #fff;
2100
1934
  }
2101
1935
 
2102
1936
  html.auto-color .gh-content strong {
@@ -2143,28 +1977,10 @@ html.dark-mode .site-archive-header .no-image {
2143
1977
  border: color-mod(var(--color-darkmode) l(+8%)) 1px solid;
2144
1978
  }
2145
1979
 
2146
- html.auto-color .gh-content .kg-bookmark-container,
2147
- html.auto-color .gh-content .kg-bookmark-container:hover {
2148
- color: rgba(255, 255, 255, 0.75);
2149
- box-shadow: 0 0 1px rgba(255,255,255,0.9);
2150
- }
2151
-
2152
1980
  html.auto-color .gh-content input {
2153
1981
  color: color-mod(var(--color-midgrey) l(-30%));
2154
1982
  }
2155
1983
 
2156
- html.auto-color .kg-bookmark-title {
2157
- color: #fff;
2158
- }
2159
-
2160
- html.auto-color .kg-bookmark-description {
2161
- color: rgba(255, 255, 255, 0.75);
2162
- }
2163
-
2164
- html.auto-color .kg-bookmark-metadata {
2165
- color: rgba(255, 255, 255, 0.75);
2166
- }
2167
-
2168
1984
  html.auto-color .site-archive-header .no-image {
2169
1985
  color: rgba(255, 255, 255, 0.9);
2170
1986
  background: var(--color-darkmode);
@@ -61,9 +61,9 @@
61
61
  </div>
62
62
 
63
63
  {{#unless @member}}
64
- <a class="gh-head-button" href="#/portal/signup">Subscribe</a>
64
+ <a class="gh-head-button" href="#/portal/signup" data-portal="signup">Subscribe</a>
65
65
  {{else}}
66
- <a class="gh-head-button" href="#/portal/account">Account</a>
66
+ <a class="gh-head-button" href="#/portal/account" data-portal="account">Account</a>
67
67
  {{/unless}}
68
68
  </div>
69
69
  </nav>
@@ -2,7 +2,7 @@
2
2
  "name": "casper",
3
3
  "description": "A clean, minimal default theme for the Ghost publishing platform",
4
4
  "demo": "https://demo.ghost.io",
5
- "version": "4.2.0",
5
+ "version": "4.3.0",
6
6
  "engines": {
7
7
  "ghost": ">=4.0.0",
8
8
  "ghost-api": "v4"
@@ -50,7 +50,7 @@
50
50
  "autoprefixer": "10.2.5",
51
51
  "beeper": "2.1.0",
52
52
  "cssnano": "4.1.10",
53
- "gscan": "4.10.1",
53
+ "gscan": "4.11.1",
54
54
  "gulp": "4.0.2",
55
55
  "gulp-concat": "2.6.1",
56
56
  "gulp-livereload": "4.0.2",
@@ -88,6 +88,7 @@
88
88
  "width": 2000
89
89
  }
90
90
  },
91
+ "card_assets": true,
91
92
  "custom": {
92
93
  "title_font": {
93
94
  "type": "select",
@@ -88,7 +88,7 @@ into the {body} tag of the default.hbs template --}}
88
88
  <section class="footer-cta {{#match @custom.email_signup_for_logged_out_visitors "Bottom of post"}}cta-alt{{/match}}">
89
89
  <div class="inner">
90
90
  {{#if @custom.email_signup_text}}<h2>{{@custom.email_signup_text}}</h2>{{/if}}
91
- <a class="footer-cta-button" href="#/portal">
91
+ <a class="footer-cta-button" href="#/portal" data-portal>
92
92
  <div class="footer-cta-input">Enter your email</div>
93
93
  <span>Subscribe</span>
94
94
  </a>