ghost 4.27.1 → 4.30.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 (76) hide show
  1. package/content/themes/casper/assets/built/screen.css +1 -1
  2. package/content/themes/casper/assets/built/screen.css.map +1 -1
  3. package/content/themes/casper/assets/css/screen.css +1 -17
  4. package/content/themes/casper/package.json +1 -1
  5. package/content/themes/casper/partials/post-card.hbs +1 -1
  6. package/core/boot.js +3 -5
  7. package/core/built/assets/{ghost-dark-ae67fe157509b6e82c607ba560fc52e9.css → ghost-dark-1594d07a0716e0253a78234c8e42d765.css} +1 -1
  8. package/core/built/assets/{ghost.min-2d534cce15c43c646814b26f4beefb78.js → ghost.min-884660873d56fcc3d2a3b9fe94c9f022.js} +79 -79
  9. package/core/built/assets/{ghost.min-b1e58e098721e467388682a85a7c187d.css → ghost.min-c21fea11c3f431994a8ee7c47a8ed145.css} +1 -1
  10. package/core/built/assets/icons/audio-file.svg +5 -0
  11. package/core/built/assets/icons/file-download.svg +1 -0
  12. package/core/built/assets/icons/file-upload.svg +1 -0
  13. package/core/built/assets/icons/film-camera.svg +4 -0
  14. package/core/built/assets/icons/mute.svg +3 -0
  15. package/core/built/assets/icons/pause.svg +4 -0
  16. package/core/built/assets/icons/play.svg +3 -0
  17. package/core/built/assets/icons/unmute.svg +3 -0
  18. package/core/built/assets/{vendor.min-e433aa7d5620e7837f30e170cd43f84e.js → vendor.min-a2fd1e62ce6da8911fee8e812d8c6ceb.js} +240 -128
  19. package/core/frontend/apps/amp/lib/views/amp.hbs +94 -2
  20. package/core/frontend/services/theme-engine/i18n/i18n.js +11 -12
  21. package/core/frontend/services/theme-engine/i18n/index.js +1 -2
  22. package/core/frontend/services/theme-engine/i18n/theme-i18n.js +5 -4
  23. package/core/frontend/src/cards/css/audio.css +95 -30
  24. package/core/frontend/src/cards/css/before-after.css +47 -0
  25. package/core/frontend/src/cards/css/bookmark.css +6 -5
  26. package/core/frontend/src/cards/css/button.css +8 -7
  27. package/core/frontend/src/cards/css/callout.css +4 -4
  28. package/core/frontend/src/cards/css/file.css +126 -0
  29. package/core/frontend/src/cards/css/nft.css +9 -13
  30. package/core/frontend/src/cards/css/product.css +81 -52
  31. package/core/frontend/src/cards/css/toggle.css +31 -22
  32. package/core/frontend/src/cards/css/video.css +340 -0
  33. package/core/frontend/src/cards/js/audio.js +127 -128
  34. package/core/frontend/src/cards/js/before-after.js +41 -0
  35. package/core/frontend/src/cards/js/gallery.js +10 -8
  36. package/core/frontend/src/cards/js/toggle.js +16 -14
  37. package/core/frontend/src/cards/js/video.js +232 -0
  38. package/core/frontend/web/middleware/error-handler.js +2 -2
  39. package/core/frontend/web/site.js +2 -1
  40. package/core/server/api/canary/oembed.js +1 -2
  41. package/core/server/data/db/state-manager.js +5 -8
  42. package/core/server/lib/image/cached-image-size-from-url.js +3 -4
  43. package/core/server/lib/image/image-utils.js +2 -2
  44. package/core/server/lib/image/index.js +1 -2
  45. package/core/server/run-update-check.js +1 -13
  46. package/core/server/services/email-analytics/index.js +2 -4
  47. package/core/server/services/email-analytics/jobs/fetch-latest.js +2 -21
  48. package/core/server/services/integrations/integrations-service.js +2 -2
  49. package/core/server/services/invites/index.js +0 -2
  50. package/core/server/services/invites/invites.js +3 -3
  51. package/core/server/services/jobs/job-service.js +1 -1
  52. package/core/server/services/mega/post-email-serializer.js +3 -1
  53. package/core/server/services/mega/template.js +15 -11
  54. package/core/server/services/members/api.js +0 -1
  55. package/core/server/services/members/config.js +4 -7
  56. package/core/server/services/members/service.js +1 -4
  57. package/core/server/services/notifications/index.js +0 -2
  58. package/core/server/services/notifications/notifications.js +4 -5
  59. package/core/server/services/stripe/index.js +0 -2
  60. package/core/server/services/twitter-embed.js +2 -1
  61. package/core/server/web/admin/app.js +4 -2
  62. package/core/server/web/admin/views/default-prod.html +4 -4
  63. package/core/server/web/admin/views/default.html +4 -4
  64. package/core/server/web/api/app.js +3 -2
  65. package/core/server/web/api/canary/admin/app.js +4 -2
  66. package/core/server/web/api/canary/content/app.js +4 -2
  67. package/core/server/web/api/v2/admin/app.js +4 -2
  68. package/core/server/web/api/v2/content/app.js +4 -2
  69. package/core/server/web/api/v3/admin/app.js +4 -2
  70. package/core/server/web/api/v3/content/app.js +4 -2
  71. package/core/server/web/members/app.js +6 -4
  72. package/core/server/web/shared/middleware/index.js +0 -4
  73. package/core/shared/labs.js +9 -8
  74. package/package.json +28 -23
  75. package/yarn.lock +2589 -1988
  76. package/core/server/web/shared/middleware/error-handler.js +0 -224
@@ -0,0 +1,126 @@
1
+ .kg-file-card {
2
+ display: flex;
3
+ }
4
+
5
+ .kg-file-card a.kg-file-card-container {
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: space-between;
9
+ color: inherit;
10
+ padding: 6px;
11
+ min-height: 92px;
12
+ border: 1px solid rgb(124 139 154 / 25%);
13
+ border-radius: 3px;
14
+ transition: all ease-in-out 0.35s;
15
+ text-decoration: none;
16
+ width: 100%;
17
+ }
18
+
19
+ .kg-file-card a.kg-file-card-container:hover {
20
+ border: 1px solid rgb(124 139 154 / 35%);
21
+ }
22
+
23
+ .kg-file-card-contents {
24
+ display: flex;
25
+ flex-direction: column;
26
+ justify-content: space-between;
27
+ margin: 4px 8px;
28
+ }
29
+
30
+ .kg-file-card-title {
31
+ font-size: 1.15em;
32
+ font-weight: 700;
33
+ line-height: 1.3em;
34
+ }
35
+
36
+ .kg-file-card-caption {
37
+ font-size: 0.95em;
38
+ line-height: 1.5em;
39
+ opacity: 0.6;
40
+ }
41
+
42
+ .kg-file-card-metadata {
43
+ display: inline;
44
+ font-size: 0.825em;
45
+ line-height: 1.5em;
46
+ margin-top: 2px;
47
+ }
48
+
49
+ .kg-file-card-filename {
50
+ display: inline;
51
+ font-weight: 500;
52
+ }
53
+
54
+ .kg-file-card-filesize {
55
+ display: inline-block;
56
+ font-size: 0.925em;
57
+ opacity: 0.6;
58
+ }
59
+
60
+ .kg-file-card-filesize:before {
61
+ display: inline-block;
62
+ content: "\2022";
63
+ margin-right: 4px;
64
+ }
65
+
66
+ .kg-file-card-icon {
67
+ position: relative;
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: center;
71
+ width: 80px;
72
+ min-width: 80px;
73
+ height: 100%;
74
+ }
75
+
76
+ .kg-file-card-icon:before {
77
+ position: absolute;
78
+ display: block;
79
+ content: "";
80
+ top: 0;
81
+ left: 0;
82
+ right: 0;
83
+ bottom: 0;
84
+ background: currentColor;
85
+ opacity: 0.06;
86
+ transition: opacity ease-in-out 0.35s;
87
+ border-radius: 2px;
88
+ }
89
+
90
+ .kg-file-card a.kg-file-card-container:hover .kg-file-card-icon:before {
91
+ opacity: 0.08;
92
+ }
93
+
94
+ .kg-file-card-icon svg {
95
+ width: 24px;
96
+ height: 24px;
97
+ color: var(--ghost-accent-color);
98
+ }
99
+
100
+ /* Size variations */
101
+ .kg-file-card-medium a.kg-file-card-container {
102
+ min-height: 72px;
103
+ }
104
+
105
+ .kg-file-card-medium .kg-file-card-caption {
106
+ opacity: 1.0;
107
+ font-weight: 500;
108
+ }
109
+
110
+ .kg-file-card-small a.kg-file-card-container {
111
+ min-height: 52px;
112
+ }
113
+
114
+ .kg-file-card-small .kg-file-card-metadata {
115
+ font-size: 1.0em;
116
+ margin-top: 0;
117
+ }
118
+
119
+ .kg-file-card-small .kg-file-card-icon svg {
120
+ width: 20px;
121
+ height: 20px;
122
+ }
123
+
124
+ .kg-file-card + .kg-file-card {
125
+ margin-top: 1em;
126
+ }
@@ -3,9 +3,11 @@
3
3
  flex-direction: column;
4
4
  align-items: center;
5
5
  width: 100%;
6
+ margin-left: auto;
7
+ margin-right: auto;
6
8
  }
7
9
 
8
- .kg-nft-card-container {
10
+ .kg-nft-card a.kg-nft-card-container {
9
11
  position: static;
10
12
  display: flex;
11
13
  flex: auto;
@@ -18,7 +20,7 @@
18
20
  roboto, noto,
19
21
  'segoe ui', arial,
20
22
  sans-serif;
21
- font-size: 1.4rem;
23
+ font-size: 14px;
22
24
  font-weight: 400;
23
25
  box-shadow: 0 2px 6px -2px rgb(0 0 0 / 10%), 0 0 1px rgb(0 0 0 / 40%);
24
26
  width: 100%;
@@ -29,18 +31,12 @@
29
31
  transition: none;
30
32
  }
31
33
 
32
- .kg-nft-card:hover {
33
- color: #333;
34
- opacity: 1.0;
35
- transition: none;
36
- }
37
-
38
34
  .kg-nft-card * {
39
35
  position: static;
40
36
  }
41
37
 
42
38
  .kg-nft-metadata {
43
- padding: 2.0rem;
39
+ padding: 20px;
44
40
  width: 100%;
45
41
  }
46
42
 
@@ -58,7 +54,7 @@
58
54
 
59
55
  .kg-nft-header h4.kg-nft-title {
60
56
  font-family: inherit;
61
- font-size: 1.9rem;
57
+ font-size: 19px;
62
58
  font-weight: 700;
63
59
  line-height: 1.3em;
64
60
  min-width: unset;
@@ -76,7 +72,7 @@
76
72
  .kg-nft-creator {
77
73
  font-family: inherit;
78
74
  line-height: 1.4em;
79
- margin: 0.4rem 0 0;
75
+ margin: 4px 0 0;
80
76
  color: #ababab;
81
77
  }
82
78
 
@@ -87,8 +83,8 @@
87
83
 
88
84
  .kg-nft-card p.kg-nft-description {
89
85
  font-family: inherit;
90
- font-size: 1.4rem;
86
+ font-size: 14px;
91
87
  line-height: 1.4em;
92
- margin: 2.0rem 0 0;
88
+ margin: 20px 0 0;
93
89
  color: #222;
94
90
  }
@@ -1,101 +1,130 @@
1
- .kg-product-card-container {
1
+ .kg-product-card {
2
2
  display: flex;
3
- background: transparent;
4
- box-shadow: inset 0 0 0 1px rgb(124 139 154 / 25%);
5
- border-radius: 5px;
3
+ align-items: center;
6
4
  flex-direction: column;
7
- text-decoration: none;
8
- max-width: 550px;
9
- padding: 20px;
10
5
  width: 100%;
11
6
  }
12
7
 
13
- .kg-product-card {
8
+ .kg-product-card-container {
9
+ display: grid;
10
+ grid-template-columns: auto min-content;
14
11
  align-items: center;
15
- display: flex;
16
- flex-direction: column;
12
+ grid-row-gap: 16px;
13
+ background: transparent;
14
+ max-width: 550px;
15
+ padding: 20px;
17
16
  width: 100%;
17
+ border-radius: 5px;
18
+ box-shadow: inset 0 0 0 1px rgb(124 139 154 / 25%);
18
19
  }
19
20
 
20
21
  .kg-product-card-image {
21
- margin-bottom: 1.6rem;
22
- }
23
-
24
- .kg-product-card-header {
25
- display: flex;
26
- align-items: flex-start;
27
- gap: 8px;
28
- flex-wrap: wrap;
29
- justify-content: space-between;
22
+ grid-column: 1 / 3;
23
+ justify-self: center;
30
24
  }
31
25
 
32
26
  .kg-product-card-title-container {
33
- flex: 2 1 250px;
27
+ grid-column: 1 / 2;
34
28
  }
35
29
 
36
- .kg-product-card-title {
30
+ .kg-product-card h4.kg-product-card-title {
31
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
37
32
  text-decoration: none;
38
33
  font-weight: 700;
39
34
  font-size: 1.4em;
40
35
  margin-top: 0;
41
36
  margin-bottom: 0;
42
- line-height: 1.4em;
37
+ line-height: 1.15em;
43
38
  }
44
39
 
45
40
  .kg-product-card-description {
46
- font-size: 1em;
47
- line-height: 1.6em;
41
+ grid-column: 1 / 3;
42
+ }
43
+
44
+ .kg-product-card .kg-product-card-description p,
45
+ .kg-product-card .kg-product-card-description ol,
46
+ .kg-product-card .kg-product-card-description ul {
47
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
48
+ font-size: 0.95em;
49
+ line-height: 1.5em;
48
50
  opacity: .7;
49
- margin-top: 8px;
50
51
  }
51
52
 
52
- .kg-product-card-button {
53
- width: 100%;
54
- margin-top: 16px;
53
+ .kg-product-card .kg-product-card-description p:not(:first-of-type) {
54
+ margin-top: 0.8em;
55
+ margin-bottom: 0;
56
+ }
57
+
58
+ .kg-product-card .kg-product-card-description p:first-of-type {
59
+ margin-top: -4px;
60
+ }
61
+
62
+ .kg-product-card .kg-product-card-description ul,
63
+ .kg-product-card .kg-product-card-description ol {
64
+ margin-top: 0.95em;
65
+ }
66
+
67
+ .kg-product-card .kg-product-card-description li+li {
68
+ margin-top: 0.2em;
55
69
  }
56
70
 
57
71
  .kg-product-card-rating {
58
72
  display: flex;
59
73
  align-items: center;
60
- flex: 0 0 100px;
74
+ grid-column: 2 / 3;
75
+ align-self: start;
76
+ justify-self: end;
77
+ padding-left: 16px;
78
+ }
79
+
80
+ @media (max-width: 400px) {
81
+ .kg-product-card-title-container {
82
+ grid-column: 1 / 3;
83
+ }
84
+
85
+ .kg-product-card-rating {
86
+ grid-column: 1 / 3;
87
+ justify-self: start;
88
+ margin-top: -15px;
89
+ padding-left: 0;
90
+ }
61
91
  }
62
92
 
63
93
  .kg-product-card-rating-star {
64
- display: flex;
65
- align-items: center;
66
- justify-content: center;
67
- height: 32px;
94
+ height: 28px;
68
95
  width: 20px;
69
96
  }
70
97
 
71
98
  .kg-product-card-rating-star svg {
72
99
  width: 16px;
73
100
  height: 16px;
74
- fill: #fff;
101
+ fill: currentColor;
102
+ opacity: 0.15;
75
103
  }
76
104
 
77
- .kg-product-card-rating-edit .kg-product-card-rating-star:hover {
78
- opacity: 0.7;
105
+ .kg-product-card-rating-active.kg-product-card-rating-star svg {
106
+ opacity: 1;
79
107
  }
80
108
 
81
- .kg-product-card-rating-edit {
82
- background: none;
109
+ .kg-product-card a.kg-product-card-button {
110
+ justify-content: center;
111
+ grid-column: 1 / 3;
83
112
  display: flex;
113
+ position: static;
84
114
  align-items: center;
115
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
116
+ font-size: 0.95em;
117
+ font-weight: 600;
118
+ line-height: 1em;
119
+ text-decoration: none;
120
+ width: 100%;
121
+ height: 2.4em;
122
+ border-radius: 5px;
123
+ padding: 0 1.2em;
124
+ transition: opacity 0.2s ease-in-out;
85
125
  }
86
126
 
87
- .kg-product-card-rating-preview {
88
- display: flex;
89
- }
90
-
91
- .kg-product-card-rating-star svg {
92
- fill: #ebeef0;
93
- }
94
-
95
- .kg-product-card-rating-active.kg-product-card-rating-star svg {
96
- fill: #394047;
127
+ .kg-product-card a.kg-product-card-btn-accent {
128
+ background-color: var(--ghost-accent-color);
129
+ color: #fff;
97
130
  }
98
-
99
- .kg-product-card-button {
100
- justify-content: center;
101
- }
@@ -1,5 +1,8 @@
1
- .kg-toggle-card+.kg-toggle-card {
2
- margin-top: 1em;
1
+ .kg-toggle-card {
2
+ background: transparent;
3
+ box-shadow: inset 0 0 0 1px rgba(124, 139, 154, 0.25);
4
+ border-radius: 4px;
5
+ padding: 1.2em;
3
6
  }
4
7
 
5
8
  .kg-toggle-card[data-kg-toggle-state="close"] .kg-toggle-content{
@@ -19,25 +22,10 @@
19
22
  position: relative;
20
23
  }
21
24
 
22
- .kg-toggle-content p:first-of-type {
23
- margin-top: 0.5em;
24
- }
25
-
26
- .kg-toggle-content p {
27
- font-size: 0.95em;
28
- }
29
-
30
25
  .kg-toggle-card[data-kg-toggle-state="close"] svg {
31
26
  transform: unset;
32
27
  }
33
28
 
34
- .kg-toggle-card {
35
- background: transparent;
36
- box-shadow: inset 0 0 0 1px rgba(124, 139, 154, 0.25);
37
- border-radius: 4px;
38
- padding: 1.2em;
39
- }
40
-
41
29
  .kg-toggle-heading {
42
30
  cursor: pointer;
43
31
  display: flex;
@@ -45,6 +33,30 @@
45
33
  align-items: flex-start;
46
34
  }
47
35
 
36
+ .kg-toggle-card h4.kg-toggle-heading-text {
37
+ font-size: 1.15em;
38
+ font-weight: 700;
39
+ line-height: 1.3em;
40
+ margin-top: 0;
41
+ margin-bottom: 0;
42
+ }
43
+
44
+ .kg-toggle-content p:first-of-type {
45
+ margin-top: 0.5em;
46
+ }
47
+
48
+ .kg-toggle-card .kg-toggle-content p,
49
+ .kg-toggle-card .kg-toggle-content ol,
50
+ .kg-toggle-card .kg-toggle-content ul {
51
+ font-size: 0.95em;
52
+ line-height: 1.5em;
53
+ margin-top: 0.95em;
54
+ }
55
+
56
+ .kg-toggle-card li + li {
57
+ margin-top: 0.5em;
58
+ }
59
+
48
60
  .kg-toggle-card-icon {
49
61
  height: 24px;
50
62
  width: 24px;
@@ -72,9 +84,6 @@
72
84
  fill-rule: evenodd;
73
85
  }
74
86
 
75
- .kg-toggle-heading-text {
76
- margin-top: 0;
77
- margin-bottom: 0;
78
- line-height: 1.3em;
79
- font-size: 1.1em;
87
+ .kg-toggle-card + .kg-toggle-card {
88
+ margin-top: 1em;
80
89
  }