ghost 4.22.4 → 4.25.1

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 (170) hide show
  1. package/.eslintrc.js +39 -0
  2. package/content/themes/casper/assets/built/casper.js +1 -1
  3. package/content/themes/casper/assets/built/casper.js.map +1 -1
  4. package/content/themes/casper/assets/built/global.css +1 -1
  5. package/content/themes/casper/assets/built/global.css.map +1 -1
  6. package/content/themes/casper/assets/built/screen.css +1 -1
  7. package/content/themes/casper/assets/built/screen.css.map +1 -1
  8. package/content/themes/casper/assets/css/global.css +6 -1
  9. package/content/themes/casper/assets/css/screen.css +32 -216
  10. package/content/themes/casper/default.hbs +2 -2
  11. package/content/themes/casper/package.json +3 -2
  12. package/content/themes/casper/post.hbs +1 -1
  13. package/content/themes/casper/yarn.lock +173 -123
  14. package/core/app.js +12 -1
  15. package/core/boot.js +33 -19
  16. package/core/bridge.js +10 -10
  17. package/core/built/assets/ghost-dark-f67240a9636407594be38571c615629c.css +1 -0
  18. package/core/built/assets/{ghost.min-2e3e64eb258cf424c59c3e308b4bc6e6.js → ghost.min-3441c3282e390002626a2dc1d7586185.js} +544 -619
  19. package/core/built/assets/ghost.min-ee5bd95a831378b4c8ccefb37d26eac0.css +1 -0
  20. package/core/built/assets/icons/audio-upload.svg +8 -0
  21. package/core/built/assets/{vendor.min-c9002845b6c30ac978abdadde9f33d7c.js → vendor.min-6fc912d1248c906f95efad2cb3eebb7d.js} +2656 -2118
  22. package/core/frontend/apps/amp/lib/helpers/amp_content.js +2 -2
  23. package/core/frontend/apps/amp/lib/views/amp.hbs +70 -0
  24. package/core/frontend/apps/private-blogging/index.js +1 -1
  25. package/core/frontend/helpers/url.js +18 -1
  26. package/core/frontend/services/apps/index.js +1 -1
  27. package/core/frontend/services/apps/loader.js +3 -3
  28. package/core/frontend/services/card-assets/index.js +0 -12
  29. package/core/frontend/services/card-assets/service.js +22 -21
  30. package/core/frontend/services/helpers/handlebars.js +1 -1
  31. package/core/frontend/services/theme-engine/middleware/ensure-active-theme.js +34 -0
  32. package/core/frontend/services/theme-engine/middleware/index.js +6 -0
  33. package/core/frontend/services/theme-engine/middleware/update-global-template-options.js +116 -0
  34. package/core/frontend/services/theme-engine/middleware/update-local-template-data.js +9 -0
  35. package/core/frontend/services/theme-engine/middleware/update-local-template-options.js +57 -0
  36. package/core/frontend/src/cards/css/blockquote.css +29 -0
  37. package/core/frontend/src/cards/css/bookmark.css +7 -0
  38. package/core/frontend/src/cards/css/button.css +4 -0
  39. package/core/frontend/src/cards/css/callout.css +23 -15
  40. package/core/frontend/src/cards/css/gallery.css +13 -3
  41. package/core/frontend/src/cards/css/toggle.css +36 -16
  42. package/core/frontend/web/middleware/error-handler.js +93 -0
  43. package/core/frontend/web/middleware/handle-image-sizes.js +3 -6
  44. package/core/frontend/web/middleware/index.js +1 -0
  45. package/core/frontend/web/middleware/serve-public-file.js +25 -8
  46. package/core/frontend/web/site.js +2 -5
  47. package/core/server/adapters/scheduling/SchedulingDefault.js +2 -2
  48. package/core/server/adapters/storage/LocalStorageBase.js +2 -2
  49. package/core/server/api/canary/db.js +2 -2
  50. package/core/server/api/canary/media.js +3 -2
  51. package/core/server/api/canary/oembed.js +16 -1
  52. package/core/server/api/canary/session.js +1 -1
  53. package/core/server/api/canary/slugs.js +1 -1
  54. package/core/server/api/canary/utils/permissions.js +2 -2
  55. package/core/server/api/canary/utils/serializers/output/config.js +2 -6
  56. package/core/server/api/v2/db.js +2 -2
  57. package/core/server/api/v2/session.js +1 -1
  58. package/core/server/api/v2/slugs.js +1 -1
  59. package/core/server/api/v2/utils/permissions.js +2 -2
  60. package/core/server/api/v3/db.js +2 -2
  61. package/core/server/api/v3/session.js +1 -1
  62. package/core/server/api/v3/slugs.js +1 -1
  63. package/core/server/api/v3/utils/permissions.js +2 -2
  64. package/core/server/data/db/state-manager.js +4 -4
  65. package/core/server/data/exporter/export-filename.js +1 -1
  66. package/core/server/data/importer/handlers/json.js +1 -1
  67. package/core/server/data/importer/import-manager.js +1 -1
  68. package/core/server/data/importer/importers/data/base.js +1 -1
  69. package/core/server/data/migrations/utils.js +2 -2
  70. package/core/server/data/migrations/versions/1.25/1-update-koenig-beta-html.js +1 -0
  71. package/core/server/data/migrations/versions/3.1/08-add-uuid-values-to-members.js +1 -0
  72. package/core/server/data/migrations/versions/3.22/02-settings-key-renames.js +2 -0
  73. package/core/server/data/migrations/versions/3.22/05-migrate-members-subscription-settings.js +3 -0
  74. package/core/server/data/migrations/versions/3.22/06-migrate-stripe-connect-settings.js +2 -0
  75. package/core/server/data/migrations/versions/3.23/01-migrate-bulk-email-settings.js +1 -0
  76. package/core/server/data/migrations/versions/3.29/01-remove-duplicate-subscriptions.js +2 -0
  77. package/core/server/data/migrations/versions/3.29/02-remove-duplicate-customers.js +2 -0
  78. package/core/server/data/migrations/versions/3.38/04-populate-recipient-filter-column.js +2 -0
  79. package/core/server/data/migrations/versions/4.0/01-update-mobiledoc.js +2 -0
  80. package/core/server/data/migrations/versions/4.0/03-populate-status-column-for-members.js +4 -0
  81. package/core/server/data/migrations/versions/4.0/06-populate-members-subscribe-events-table.js +1 -0
  82. package/core/server/data/migrations/versions/4.0/17-populate-members-status-events-table.js +1 -0
  83. package/core/server/data/migrations/versions/4.0/18-transform-urls-absolute-to-transform-ready.js +5 -0
  84. package/core/server/data/migrations/versions/4.0/22-solve-orphaned-webhooks.js +1 -0
  85. package/core/server/data/migrations/versions/4.0/23-regenerate-posts-html.js +1 -0
  86. package/core/server/data/migrations/versions/4.0/25-populate-members-paid-subscription-events-table.js +2 -1
  87. package/core/server/data/migrations/versions/4.12/02-fix-member-statuses.js +1 -0
  88. package/core/server/data/migrations/versions/4.14/01-fix-comped-member-statuses.js +3 -0
  89. package/core/server/data/migrations/versions/4.14/02-fix-free-members-status-events.js +1 -0
  90. package/core/server/data/migrations/versions/4.20/05-remove-not-null-constraint-from-portal-title.js +2 -0
  91. package/core/server/data/migrations/versions/4.23/01-truncate-offer-names.js +59 -0
  92. package/core/server/data/migrations/versions/4.3/04-attach-members-to-product.js +1 -0
  93. package/core/server/data/migrations/versions/4.4/01-restore-free-members-signup-setting-from-backup.js +1 -0
  94. package/core/server/data/migrations/versions/4.6/01-remove-comped-status.js +1 -0
  95. package/core/server/data/migrations/versions/4.8/04-migrate-show-newsletter-header-setting.js +1 -0
  96. package/core/server/data/migrations/versions/4.9/05-fix-missed-mobiledoc-url-transforms.js +1 -0
  97. package/core/server/data/migrations/versions/4.9/06-add-comped-status.js +1 -0
  98. package/core/server/data/migrations/versions/4.9/07-update-comped-members-status-events.js +1 -0
  99. package/core/server/data/schema/commands.js +2 -2
  100. package/core/server/ghost-server.js +2 -2
  101. package/core/server/lib/image/image-size.js +2 -2
  102. package/core/server/models/base/listeners.js +2 -2
  103. package/core/server/models/member-email-change-event.js +2 -2
  104. package/core/server/models/member-login-event.js +2 -2
  105. package/core/server/models/member-paid-subscription-event.js +3 -3
  106. package/core/server/models/member-payment-event.js +3 -3
  107. package/core/server/models/member-product-event.js +6 -6
  108. package/core/server/models/member-status-event.js +5 -3
  109. package/core/server/models/member-subscribe-event.js +9 -3
  110. package/core/server/models/relations/authors.js +1 -1
  111. package/core/server/models/settings.js +1 -1
  112. package/core/server/services/auth/passwordreset.js +1 -1
  113. package/core/server/services/auth/setup.js +1 -1
  114. package/core/server/services/email-analytics/jobs/index.js +1 -1
  115. package/core/server/services/mega/mega.js +6 -4
  116. package/core/server/services/mega/template.js +31 -12
  117. package/core/server/services/members/api.js +22 -0
  118. package/core/server/services/members/config.js +1 -1
  119. package/core/server/services/members/emails/signup-paid.js +168 -0
  120. package/core/server/services/members/service.js +6 -2
  121. package/core/server/services/members/stripe-connect.js +4 -2
  122. package/core/server/services/nft-oembed.js +6 -1
  123. package/core/server/services/oembed.js +36 -28
  124. package/core/server/services/permissions/can-this.js +1 -1
  125. package/core/server/services/redirects/api.js +20 -25
  126. package/core/server/services/redirects/index.js +18 -10
  127. package/core/server/services/redirects/utils.js +14 -0
  128. package/core/server/services/redirects/validation.js +10 -0
  129. package/core/server/services/route-settings/default-settings-manager.js +1 -1
  130. package/core/server/services/route-settings/index.js +40 -17
  131. package/core/server/services/route-settings/route-settings.js +120 -115
  132. package/core/server/services/route-settings/settings-loader.js +18 -36
  133. package/core/server/services/route-settings/yaml-parser.js +1 -1
  134. package/core/server/services/slack.js +1 -1
  135. package/core/server/services/themes/activation-bridge.js +3 -3
  136. package/core/server/services/themes/storage.js +2 -2
  137. package/core/server/services/twitter-embed.js +80 -0
  138. package/core/server/services/url/LocalFileCache.js +75 -0
  139. package/core/server/services/url/UrlService.js +15 -47
  140. package/core/server/services/url/index.js +17 -4
  141. package/core/server/services/xmlrpc.js +2 -2
  142. package/core/server/web/admin/app.js +2 -5
  143. package/core/server/web/admin/controller.js +35 -12
  144. package/core/server/web/admin/middleware/redirect-admin-urls.js +15 -0
  145. package/core/server/web/admin/views/default-prod.html +4 -4
  146. package/core/server/web/admin/views/default.html +4 -4
  147. package/core/server/web/api/canary/admin/app.js +0 -3
  148. package/core/server/web/api/canary/admin/middleware.js +1 -1
  149. package/core/server/web/api/canary/content/app.js +0 -3
  150. package/core/server/web/api/v2/admin/app.js +0 -3
  151. package/core/server/web/api/v2/admin/middleware.js +1 -1
  152. package/core/server/web/api/v2/content/app.js +0 -3
  153. package/core/server/web/api/v3/admin/app.js +0 -3
  154. package/core/server/web/api/v3/admin/middleware.js +1 -1
  155. package/core/server/web/api/v3/content/app.js +0 -3
  156. package/core/server/web/members/app.js +0 -3
  157. package/core/server/web/oauth/app.js +0 -4
  158. package/core/server/web/parent/app.js +17 -8
  159. package/core/server/web/shared/middleware/error-handler.js +57 -162
  160. package/core/server/web/shared/middleware/index.js +0 -4
  161. package/core/shared/config/defaults.json +7 -1
  162. package/core/shared/labs.js +10 -5
  163. package/core/shared/sentry.js +1 -1
  164. package/package.json +43 -42
  165. package/yarn.lock +802 -923
  166. package/content/themes/casper/assets/js/gallery-card.js +0 -24
  167. package/core/built/assets/ghost-dark-42cf6e0c730578940ec069bda45aea41.css +0 -1
  168. package/core/built/assets/ghost.min-fcf6a0738421f86c47c55f20d00c5ba9.css +0 -1
  169. package/core/frontend/services/theme-engine/middleware.js +0 -209
  170. package/core/server/web/shared/middleware/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>