ghost 4.30.0 → 4.32.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 (59) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/content/themes/casper/assets/built/screen.css +1 -1
  4. package/content/themes/casper/assets/built/screen.css.map +1 -1
  5. package/content/themes/casper/assets/css/screen.css +110 -43
  6. package/content/themes/casper/package.json +1 -1
  7. package/core/built/assets/{chunk.3.e54be01b5124e4e27958.js → chunk.3.4906cf0b01d6d8e33374.js} +134 -130
  8. package/core/built/assets/ghost-dark-67f6ba8347be37f997b3a7e430b29f72.css +1 -0
  9. package/core/built/assets/ghost.min-2d5f48403647d1e11805691cc7ad0835.css +1 -0
  10. package/core/built/assets/{ghost.min-884660873d56fcc3d2a3b9fe94c9f022.js → ghost.min-7535b70693bcefde1665bdf621087cbe.js} +1066 -1129
  11. package/core/built/assets/{vendor.min-987af30228885bce50f05c4723fe6f53.css → vendor.min-0e0334a490951ab747706621f9ccd8b6.css} +18 -10
  12. package/core/built/assets/{vendor.min-a2fd1e62ce6da8911fee8e812d8c6ceb.js → vendor.min-45e83041aeba4ea7b184f669b20a2b23.js} +1059 -1024
  13. package/core/frontend/apps/amp/lib/views/amp.hbs +134 -0
  14. package/core/frontend/helpers/get.js +4 -0
  15. package/core/frontend/meta/description.js +3 -3
  16. package/core/frontend/services/sitemap/base-generator.js +21 -18
  17. package/core/frontend/services/sitemap/handler.js +13 -4
  18. package/core/frontend/services/sitemap/index-generator.js +20 -10
  19. package/core/frontend/services/sitemap/manager.js +8 -5
  20. package/core/frontend/services/theme-engine/middleware/update-local-template-options.js +1 -6
  21. package/core/frontend/src/cards/css/audio.css +5 -0
  22. package/core/frontend/src/cards/css/before-after.css +45 -11
  23. package/core/frontend/src/cards/css/bookmark.css +5 -0
  24. package/core/frontend/src/cards/css/button.css +5 -0
  25. package/core/frontend/src/cards/css/callout.css +11 -1
  26. package/core/frontend/src/cards/css/file.css +14 -3
  27. package/core/frontend/src/cards/css/gallery.css +10 -3
  28. package/core/frontend/src/cards/css/header.css +233 -0
  29. package/core/frontend/src/cards/css/nft.css +5 -0
  30. package/core/frontend/src/cards/css/product.css +7 -5
  31. package/core/frontend/src/cards/css/toggle.css +6 -0
  32. package/core/frontend/src/cards/css/video.css +4 -0
  33. package/core/frontend/src/cards/js/before-after.js +10 -15
  34. package/core/frontend/views/unsubscribe.hbs +12 -7
  35. package/core/frontend/web/site.js +2 -3
  36. package/core/server/models/single-use-token.js +1 -1
  37. package/core/server/services/mail/templates/invite-user.html +1 -1
  38. package/core/server/services/mail/templates/reset-password.html +1 -1
  39. package/core/server/services/mail/templates/welcome.html +1 -1
  40. package/core/server/services/mega/template.js +113 -3
  41. package/core/server/services/members/emails/signin.js +1 -1
  42. package/core/server/services/members/emails/signup-paid.js +1 -1
  43. package/core/server/services/members/emails/signup.js +1 -1
  44. package/core/server/services/members/emails/subscribe.js +1 -1
  45. package/core/server/services/members/emails/updateEmail.js +1 -1
  46. package/core/server/services/members/service.js +9 -0
  47. package/core/server/services/themes/activation-bridge.js +3 -10
  48. package/core/server/services/themes/index.js +0 -21
  49. package/core/server/services/twitter-embed.js +1 -2
  50. package/core/server/web/admin/views/default-prod.html +5 -5
  51. package/core/server/web/admin/views/default.html +5 -5
  52. package/core/server/web/api/canary/admin/routes.js +2 -6
  53. package/core/shared/config/defaults.json +2 -2
  54. package/core/shared/config/overrides.json +11 -1
  55. package/core/shared/labs.js +1 -14
  56. package/package.json +26 -26
  57. package/yarn.lock +2265 -2511
  58. package/core/built/assets/ghost-dark-1594d07a0716e0253a78234c8e42d765.css +0 -1
  59. package/core/built/assets/ghost.min-c21fea11c3f431994a8ee7c47a8ed145.css +0 -1
@@ -556,6 +556,12 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
556
556
  word-break: break-word;
557
557
  }
558
558
 
559
+ @media (max-width: 700px) {
560
+ .post-card {
561
+ min-height: auto;
562
+ }
563
+ }
564
+
559
565
  .post-card-image-link {
560
566
  position: relative;
561
567
  display: block;
@@ -750,25 +756,40 @@ make sure this only happens on large viewports / desktop-ish devices.
750
756
 
751
757
  */
752
758
 
753
- @media (min-width: 1001px) {
754
- .post-card-large {
759
+ @media (min-width: 701px) {
760
+ .post-feed.list .post-card-large {
755
761
  grid-column: 1 / span 3;
756
762
  display: grid;
757
763
  grid-gap: 4vmin;
758
- grid-template-columns: 1fr 1fr 1fr;
759
- min-height: 280px;
760
- border-top: 0;
761
- }
762
-
763
- .post-feed.list .post-card-large {
764
764
  grid-template-columns: 3fr 5fr;
765
765
  min-height: auto;
766
+ border-top: 0;
766
767
  }
767
768
 
768
769
  .post-feed.list .post-card-large.no-image {
769
770
  grid-template-columns: 1fr;
770
771
  }
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
+ }
782
+
783
+ @media (min-width: 1001px) {
784
+ .post-card-large {
785
+ grid-column: 1 / span 3;
786
+ display: grid;
787
+ grid-gap: 4vmin;
788
+ grid-template-columns: 1fr 1fr 1fr;
789
+ min-height: 280px;
790
+ border-top: 0;
791
+ }
792
+
772
793
  .post-card-large:not(.no-image) .post-card-header {
773
794
  margin-top: 0;
774
795
  }
@@ -802,11 +823,6 @@ make sure this only happens on large viewports / desktop-ish devices.
802
823
  justify-content: center;
803
824
  }
804
825
 
805
- .post-feed.list .post-card-large .post-card-content {
806
- justify-content: flex-start;
807
- margin-top: -6px;
808
- }
809
-
810
826
  .post-card-large .post-card-title {
811
827
  margin-top: 0;
812
828
  font-size: 3.2rem;
@@ -995,16 +1011,12 @@ is the very first element in the post content */
995
1011
  }
996
1012
 
997
1013
  /* Now the content typography styles */
998
- .gh-content a:not(.gh-post-upgrade-cta a):not(.kg-bookmark-container):not(.kg-btn):not(.kg-nft-card-container):not(.kg-callout-card-accent a):not(a.kg-product-card-btn-accent) {
1014
+ .gh-content a {
999
1015
  color: var(--ghost-accent-color);
1000
1016
  text-decoration: underline;
1001
1017
  word-break: break-word;
1002
1018
  }
1003
1019
 
1004
- .gh-content .kg-callout-card-accent a {
1005
- text-decoration: underline;
1006
- }
1007
-
1008
1020
  .gh-content > blockquote:not([class]),
1009
1021
  .gh-content > ol,
1010
1022
  .gh-content > ul,
@@ -1016,23 +1028,30 @@ is the very first element in the post content */
1016
1028
  line-height: 1.6em;
1017
1029
  }
1018
1030
 
1019
- .gh-content .kg-callout-text,
1020
- .gh-content .kg-toggle-content > ol,
1021
- .gh-content .kg-toggle-content > ul,
1022
- .gh-content .kg-toggle-content > p {
1031
+ .gh-content .kg-callout-card .kg-callout-text,
1032
+ .gh-content .kg-toggle-card .kg-toggle-content > ol,
1033
+ .gh-content .kg-toggle-card .kg-toggle-content > ul,
1034
+ .gh-content .kg-toggle-card .kg-toggle-content > p {
1023
1035
  font-family: var(--font-serif);
1024
1036
  font-weight: 400;
1025
- font-size: 2.0rem;
1037
+ font-size: 1.9rem;
1026
1038
  line-height: 1.6em;
1027
1039
  }
1028
1040
 
1029
- .gh-content .kg-callout-emoji {
1030
- font-size: 2.2rem;
1031
- line-height: 1.5em;
1041
+ .gh-content .kg-product-card .kg-product-card-description > p,
1042
+ .gh-content .kg-product-card .kg-product-card-description > ol,
1043
+ .gh-content .kg-product-card .kg-product-card-description > ul {
1044
+ font-size: 1.7rem;
1045
+ line-height: 1.6em;
1032
1046
  }
1033
1047
 
1034
- .gh-content .kg-toggle-heading-text {
1035
- font-size: 2.2rem;
1048
+ .gh-content .kg-callout-card .kg-callout-emoji {
1049
+ font-size: 2.1rem;
1050
+ line-height: 1.4em;
1051
+ }
1052
+
1053
+ .gh-content .kg-toggle-card .kg-toggle-heading-text {
1054
+ font-size: 2.0rem;
1036
1055
  }
1037
1056
 
1038
1057
  .has-sans-body .gh-content > blockquote,
@@ -1040,16 +1059,20 @@ is the very first element in the post content */
1040
1059
  .has-sans-body .gh-content > ul,
1041
1060
  .has-sans-body .gh-content > dl,
1042
1061
  .has-sans-body .gh-content > p,
1043
- .has-sans-body .kg-callout-text,
1044
- .has-sans-body .kg-toggle-content > ol,
1045
- .has-sans-body .kg-toggle-content > ul,
1046
- .has-sans-body .kg-toggle-content > p {
1062
+ .has-sans-body .gh-content .kg-callout-card .kg-callout-text,
1063
+ .has-sans-body .gh-content .kg-toggle-card .kg-toggle-content > ol,
1064
+ .has-sans-body .gh-content .kg-toggle-card .kg-toggle-content > ul,
1065
+ .has-sans-body .gh-content .kg-toggle-card .kg-toggle-content > p {
1047
1066
  font-family: var(--font-sans);
1048
1067
  }
1049
1068
 
1050
1069
  .gh-content > ul,
1051
1070
  .gh-content > ol,
1052
- .gh-content > dl {
1071
+ .gh-content > dl,
1072
+ .gh-content .kg-toggle-card .kg-toggle-content > ol,
1073
+ .gh-content .kg-toggle-card .kg-toggle-content > ul,
1074
+ .gh-content .kg-product-card .kg-product-card-description > ol,
1075
+ .gh-content .kg-product-card .kg-product-card-description > ul {
1053
1076
  padding-left: 1.9em;
1054
1077
  }
1055
1078
 
@@ -1098,14 +1121,20 @@ is the very first element in the post content */
1098
1121
  .gh-content > ul,
1099
1122
  .gh-content > dl,
1100
1123
  .gh-content > p,
1101
- .kg-callout-text,
1102
- .kg-toggle-content > ol,
1103
- .kg-toggle-content > ul,
1104
- .kg-toggle-content > p {
1124
+ .gh-content .kg-callout-card .kg-callout-text,
1125
+ .gh-content .kg-toggle-card .kg-toggle-content > ol,
1126
+ .gh-content .kg-toggle-card .kg-toggle-content > ul,
1127
+ .gh-content .kg-toggle-card .kg-toggle-content > p {
1105
1128
  font-size: 1.7rem;
1106
1129
  }
1107
1130
 
1108
- .gh-content blockquote::before {
1131
+ .gh-content .kg-product-card .kg-product-card-description > p,
1132
+ .gh-content .kg-product-card .kg-product-card-description > ol,
1133
+ .gh-content .kg-product-card .kg-product-card-description > ul {
1134
+ font-size: 1.5rem;
1135
+ }
1136
+
1137
+ .gh-content blockquote:not([class])::before {
1109
1138
  left: -4vmin;
1110
1139
  }
1111
1140
  }
@@ -1143,12 +1172,12 @@ except for when immediately preceeded by a heading */
1143
1172
  margin: auto;
1144
1173
  }
1145
1174
 
1146
- .has-serif-title .kg-toggle-heading-text {
1175
+ .has-serif-title .kg-toggle-card .kg-toggle-heading-text {
1147
1176
  font-family: var(--font-serif);
1148
1177
  }
1149
1178
 
1150
- .kg-toggle-content > * + * {
1151
- margin-top: min(2.4rem, 4vmin);
1179
+ .gh-content .kg-callout-card-accent a {
1180
+ text-decoration: underline;
1152
1181
  }
1153
1182
 
1154
1183
  .kg-blockquote-alt {
@@ -1160,6 +1189,18 @@ except for when immediately preceeded by a heading */
1160
1189
  font-family: var(--font-sans);
1161
1190
  }
1162
1191
 
1192
+ .kg-card.kg-header-card.kg-style-dark {
1193
+ background: var(--color-darkgrey);
1194
+ }
1195
+
1196
+ .kg-header-card.kg-style-light h2.kg-header-card-header {
1197
+ color: color-mod(var(--color-darkgrey) l(-5%));
1198
+ }
1199
+
1200
+ .has-serif-title .kg-header-card h2.kg-header-card-header {
1201
+ font-family: var(--font-serif);
1202
+ }
1203
+
1163
1204
 
1164
1205
  /* Captions */
1165
1206
  figcaption {
@@ -1819,7 +1860,7 @@ html.dark-mode .gh-content :not(pre) > code {
1819
1860
  color: var(--color-wash);
1820
1861
  }
1821
1862
 
1822
- html.dark-mode .gh-content a:not(.kg-btn):not(.kg-nft-card-container) {
1863
+ html.dark-mode .gh-content a:not(.kg-btn):not(.kg-nft-card-container):not(.kg-product-card-button):not(.kg-header-card-button) {
1823
1864
  color: #fff;
1824
1865
  }
1825
1866
 
@@ -1876,6 +1917,19 @@ html.dark-mode .site-archive-header .no-image {
1876
1917
  background: var(--color-darkmode);
1877
1918
  }
1878
1919
 
1920
+ html.dark-mode .kg-header-card.kg-style-dark {
1921
+ background: color-mod(var(--color-darkgrey) l(-5%));
1922
+ }
1923
+
1924
+ html.dark-mode .kg-header-card.kg-style-light {
1925
+ background: color-mod(var(--color-darkgrey) l(+5%));
1926
+ }
1927
+
1928
+ html.dark-mode .kg-header-card h2.kg-header-card-header,
1929
+ html.dark-mode .kg-header-card h3.kg-header-card-subheader {
1930
+ color: #fff;
1931
+ }
1932
+
1879
1933
  @media (prefers-color-scheme: dark) {
1880
1934
  html.auto-color body {
1881
1935
  color: rgba(255, 255, 255, 0.75);
@@ -1957,7 +2011,7 @@ html.dark-mode .site-archive-header .no-image {
1957
2011
  color: var(--color-wash);
1958
2012
  }
1959
2013
 
1960
- html.auto-color .gh-content a:not(.kg-btn):not(.kg-nft-card-container) {
2014
+ html.auto-color .gh-content a:not(.kg-btn):not(.kg-nft-card-container):not(.kg-product-card-button):not(.kg-header-card-button) {
1961
2015
  color: #fff;
1962
2016
  }
1963
2017
 
@@ -2013,6 +2067,19 @@ html.dark-mode .site-archive-header .no-image {
2013
2067
  color: rgba(255, 255, 255, 0.9);
2014
2068
  background: var(--color-darkmode);
2015
2069
  }
2070
+
2071
+ html.auto-color .kg-header-card.kg-style-dark {
2072
+ background: color-mod(var(--color-darkgrey) l(-5%));
2073
+ }
2074
+
2075
+ html.auto-color .kg-header-card.kg-style-light {
2076
+ background: color-mod(var(--color-darkgrey) l(+5%));
2077
+ }
2078
+
2079
+ html.auto-color .kg-header-card h2.kg-header-card-header,
2080
+ html.auto-color .kg-header-card h3.kg-header-card-subheader {
2081
+ color: #fff;
2082
+ }
2016
2083
  }
2017
2084
 
2018
2085
  /*
@@ -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.5.0",
5
+ "version": "4.7.2",
6
6
  "engines": {
7
7
  "ghost": ">=4.0.0",
8
8
  "ghost-api": "v4"