ghost 5.37.0 → 5.38.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 (154) hide show
  1. package/components/{tryghost-adapter-cache-memory-ttl-5.37.0.tgz → tryghost-adapter-cache-memory-ttl-5.38.0.tgz} +0 -0
  2. package/components/tryghost-adapter-cache-redis-5.38.0.tgz +0 -0
  3. package/components/{tryghost-adapter-manager-5.37.0.tgz → tryghost-adapter-manager-5.38.0.tgz} +0 -0
  4. package/components/{tryghost-api-framework-5.37.0.tgz → tryghost-api-framework-5.38.0.tgz} +0 -0
  5. package/components/{tryghost-api-version-compatibility-service-5.37.0.tgz → tryghost-api-version-compatibility-service-5.38.0.tgz} +0 -0
  6. package/components/tryghost-audience-feedback-5.38.0.tgz +0 -0
  7. package/components/tryghost-bootstrap-socket-5.38.0.tgz +0 -0
  8. package/components/{tryghost-constants-5.37.0.tgz → tryghost-constants-5.38.0.tgz} +0 -0
  9. package/components/tryghost-custom-theme-settings-service-5.38.0.tgz +0 -0
  10. package/components/{tryghost-data-generator-5.37.0.tgz → tryghost-data-generator-5.38.0.tgz} +0 -0
  11. package/components/tryghost-domain-events-5.38.0.tgz +0 -0
  12. package/components/tryghost-dynamic-routing-events-5.38.0.tgz +0 -0
  13. package/components/tryghost-email-analytics-provider-mailgun-5.38.0.tgz +0 -0
  14. package/components/{tryghost-email-analytics-service-5.37.0.tgz → tryghost-email-analytics-service-5.38.0.tgz} +0 -0
  15. package/components/tryghost-email-content-generator-5.38.0.tgz +0 -0
  16. package/components/tryghost-email-events-5.38.0.tgz +0 -0
  17. package/components/tryghost-email-service-5.38.0.tgz +0 -0
  18. package/components/{tryghost-email-suppression-list-5.37.0.tgz → tryghost-email-suppression-list-5.38.0.tgz} +0 -0
  19. package/components/tryghost-event-aware-cache-wrapper-5.38.0.tgz +0 -0
  20. package/components/{tryghost-express-dynamic-redirects-5.37.0.tgz → tryghost-express-dynamic-redirects-5.38.0.tgz} +0 -0
  21. package/components/tryghost-external-media-inliner-5.38.0.tgz +0 -0
  22. package/components/tryghost-extract-api-key-5.38.0.tgz +0 -0
  23. package/components/tryghost-html-to-plaintext-5.38.0.tgz +0 -0
  24. package/components/tryghost-i18n-5.38.0.tgz +0 -0
  25. package/components/{tryghost-importer-handler-content-files-5.37.0.tgz → tryghost-importer-handler-content-files-5.38.0.tgz} +0 -0
  26. package/components/tryghost-importer-revue-5.38.0.tgz +0 -0
  27. package/components/tryghost-job-manager-5.38.0.tgz +0 -0
  28. package/components/tryghost-link-redirects-5.38.0.tgz +0 -0
  29. package/components/tryghost-link-replacer-5.38.0.tgz +0 -0
  30. package/components/{tryghost-link-tracking-5.37.0.tgz → tryghost-link-tracking-5.38.0.tgz} +0 -0
  31. package/components/{tryghost-magic-link-5.37.0.tgz → tryghost-magic-link-5.38.0.tgz} +0 -0
  32. package/components/tryghost-mailgun-client-5.38.0.tgz +0 -0
  33. package/components/tryghost-member-attribution-5.38.0.tgz +0 -0
  34. package/components/tryghost-member-events-5.38.0.tgz +0 -0
  35. package/components/tryghost-members-api-5.38.0.tgz +0 -0
  36. package/components/tryghost-members-csv-5.38.0.tgz +0 -0
  37. package/components/{tryghost-members-events-service-5.37.0.tgz → tryghost-members-events-service-5.38.0.tgz} +0 -0
  38. package/components/{tryghost-members-importer-5.37.0.tgz → tryghost-members-importer-5.38.0.tgz} +0 -0
  39. package/components/tryghost-members-offers-5.38.0.tgz +0 -0
  40. package/components/tryghost-members-payments-5.38.0.tgz +0 -0
  41. package/components/tryghost-members-ssr-5.38.0.tgz +0 -0
  42. package/components/{tryghost-members-stripe-service-5.37.0.tgz → tryghost-members-stripe-service-5.38.0.tgz} +0 -0
  43. package/components/tryghost-milestones-5.38.0.tgz +0 -0
  44. package/components/tryghost-minifier-5.38.0.tgz +0 -0
  45. package/components/tryghost-mw-api-version-mismatch-5.38.0.tgz +0 -0
  46. package/components/{tryghost-mw-cache-control-5.37.0.tgz → tryghost-mw-cache-control-5.38.0.tgz} +0 -0
  47. package/components/tryghost-mw-error-handler-5.38.0.tgz +0 -0
  48. package/components/tryghost-mw-session-from-token-5.38.0.tgz +0 -0
  49. package/components/tryghost-mw-update-user-last-seen-5.38.0.tgz +0 -0
  50. package/components/tryghost-mw-version-match-5.38.0.tgz +0 -0
  51. package/components/tryghost-mw-vhost-5.38.0.tgz +0 -0
  52. package/components/tryghost-oembed-service-5.38.0.tgz +0 -0
  53. package/components/tryghost-package-json-5.38.0.tgz +0 -0
  54. package/components/{tryghost-referrers-5.37.0.tgz → tryghost-referrers-5.38.0.tgz} +0 -0
  55. package/components/tryghost-security-5.38.0.tgz +0 -0
  56. package/components/tryghost-session-service-5.38.0.tgz +0 -0
  57. package/components/tryghost-settings-path-manager-5.38.0.tgz +0 -0
  58. package/components/tryghost-slack-notifications-5.38.0.tgz +0 -0
  59. package/components/tryghost-staff-service-5.38.0.tgz +0 -0
  60. package/components/tryghost-stats-service-5.38.0.tgz +0 -0
  61. package/components/tryghost-tiers-5.38.0.tgz +0 -0
  62. package/components/{tryghost-update-check-service-5.37.0.tgz → tryghost-update-check-service-5.38.0.tgz} +0 -0
  63. package/components/tryghost-verification-trigger-5.38.0.tgz +0 -0
  64. package/components/{tryghost-version-notifications-data-service-5.37.0.tgz → tryghost-version-notifications-data-service-5.38.0.tgz} +0 -0
  65. package/components/tryghost-webmentions-5.38.0.tgz +0 -0
  66. package/core/boot.js +11 -4
  67. package/core/built/admin/assets/{chunk.143.27cd10a38f877e715b35.js → chunk.143.c6802c882a911797ce4f.js} +6 -6
  68. package/core/built/admin/assets/{chunk.178.dd6cf17fb0986acf19d6.js → chunk.178.09faefd4027fcba4113d.js} +4 -4
  69. package/core/built/admin/assets/{chunk.652.bb618bc5abf23bed4e87.js → chunk.220.9ca2950240aba3fced21.js} +1836 -1774
  70. package/core/built/admin/assets/{chunk.79.4a959c324df25480b90e.js → chunk.79.acb7dd01e1c785f4920c.js} +12 -11
  71. package/core/built/admin/assets/{ghost-2948791640be026b987b88f89034bc85.js → ghost-35103ff053c43f1dfa7f35821c3c2412.js} +29 -29
  72. package/core/built/admin/assets/{ghost-efbe4dcc249d119a955b038aae5c980d.css → ghost-a9307c9cfe26a4bc621e02cd3bae421a.css} +1 -1
  73. package/core/built/admin/assets/{ghost-dark-6ea4b338f17a43c204b7c1e207b90cd7.css → ghost-dark-f309cf445255344e4861a95ecb8f1920.css} +1 -1
  74. package/core/built/admin/assets/vendor-b982e3bf1020bff77b2a3c44d5f59e55.js +269 -269
  75. package/core/built/admin/index.html +5 -5
  76. package/core/frontend/helpers/ghost_head.js +4 -1
  77. package/core/frontend/services/routing/StaticPagesRouter.js +1 -1
  78. package/core/frontend/services/sitemap/base-generator.js +5 -1
  79. package/core/server/adapters/storage/LocalImagesStorage.js +1 -1
  80. package/core/server/api/endpoints/email-previews.js +2 -43
  81. package/core/server/api/endpoints/emails.js +1 -22
  82. package/core/server/api/endpoints/utils/serializers/output/mappers/emails.js +14 -8
  83. package/core/server/data/importer/import-manager.js +8 -1
  84. package/core/server/data/migrations/versions/4.9/05-fix-missed-mobiledoc-url-transforms.js +1 -1
  85. package/core/server/lib/common/events.js +16 -23
  86. package/core/server/models/base/plugins/relations.js +5 -3
  87. package/core/server/models/index.js +5 -0
  88. package/core/server/services/comments/emails.js +2 -2
  89. package/core/server/services/email-service/wrapper.js +2 -0
  90. package/core/server/services/link-tracking/LinkClickRepository.js +1 -1
  91. package/core/server/services/media-inliner/service.js +49 -3
  92. package/core/server/services/mentions/service.js +6 -1
  93. package/core/server/services/posts/posts-service.js +3 -14
  94. package/core/server/services/staff/index.js +2 -0
  95. package/core/server/services/url/Urls.js +10 -2
  96. package/core/shared/labs.js +0 -1
  97. package/package.json +138 -138
  98. package/yarn.lock +267 -259
  99. package/components/tryghost-adapter-cache-redis-5.37.0.tgz +0 -0
  100. package/components/tryghost-audience-feedback-5.37.0.tgz +0 -0
  101. package/components/tryghost-bootstrap-socket-5.37.0.tgz +0 -0
  102. package/components/tryghost-custom-theme-settings-service-5.37.0.tgz +0 -0
  103. package/components/tryghost-domain-events-5.37.0.tgz +0 -0
  104. package/components/tryghost-dynamic-routing-events-5.37.0.tgz +0 -0
  105. package/components/tryghost-email-analytics-provider-mailgun-5.37.0.tgz +0 -0
  106. package/components/tryghost-email-content-generator-5.37.0.tgz +0 -0
  107. package/components/tryghost-email-events-5.37.0.tgz +0 -0
  108. package/components/tryghost-email-service-5.37.0.tgz +0 -0
  109. package/components/tryghost-event-aware-cache-wrapper-5.37.0.tgz +0 -0
  110. package/components/tryghost-external-media-inliner-5.37.0.tgz +0 -0
  111. package/components/tryghost-extract-api-key-5.37.0.tgz +0 -0
  112. package/components/tryghost-html-to-plaintext-5.37.0.tgz +0 -0
  113. package/components/tryghost-i18n-5.37.0.tgz +0 -0
  114. package/components/tryghost-importer-revue-5.37.0.tgz +0 -0
  115. package/components/tryghost-job-manager-5.37.0.tgz +0 -0
  116. package/components/tryghost-link-redirects-5.37.0.tgz +0 -0
  117. package/components/tryghost-link-replacer-5.37.0.tgz +0 -0
  118. package/components/tryghost-mailgun-client-5.37.0.tgz +0 -0
  119. package/components/tryghost-member-attribution-5.37.0.tgz +0 -0
  120. package/components/tryghost-member-events-5.37.0.tgz +0 -0
  121. package/components/tryghost-members-api-5.37.0.tgz +0 -0
  122. package/components/tryghost-members-csv-5.37.0.tgz +0 -0
  123. package/components/tryghost-members-offers-5.37.0.tgz +0 -0
  124. package/components/tryghost-members-payments-5.37.0.tgz +0 -0
  125. package/components/tryghost-members-ssr-5.37.0.tgz +0 -0
  126. package/components/tryghost-milestones-5.37.0.tgz +0 -0
  127. package/components/tryghost-minifier-5.37.0.tgz +0 -0
  128. package/components/tryghost-mw-api-version-mismatch-5.37.0.tgz +0 -0
  129. package/components/tryghost-mw-error-handler-5.37.0.tgz +0 -0
  130. package/components/tryghost-mw-session-from-token-5.37.0.tgz +0 -0
  131. package/components/tryghost-mw-update-user-last-seen-5.37.0.tgz +0 -0
  132. package/components/tryghost-mw-version-match-5.37.0.tgz +0 -0
  133. package/components/tryghost-mw-vhost-5.37.0.tgz +0 -0
  134. package/components/tryghost-oembed-service-5.37.0.tgz +0 -0
  135. package/components/tryghost-package-json-5.37.0.tgz +0 -0
  136. package/components/tryghost-security-5.37.0.tgz +0 -0
  137. package/components/tryghost-session-service-5.37.0.tgz +0 -0
  138. package/components/tryghost-settings-path-manager-5.37.0.tgz +0 -0
  139. package/components/tryghost-slack-notifications-5.37.0.tgz +0 -0
  140. package/components/tryghost-staff-service-5.37.0.tgz +0 -0
  141. package/components/tryghost-stats-service-5.37.0.tgz +0 -0
  142. package/components/tryghost-tiers-5.37.0.tgz +0 -0
  143. package/components/tryghost-verification-trigger-5.37.0.tgz +0 -0
  144. package/components/tryghost-webmentions-5.37.0.tgz +0 -0
  145. package/core/server/services/bulk-email/bulk-email-processor.js +0 -289
  146. package/core/server/services/bulk-email/index.js +0 -1
  147. package/core/server/services/mega/email-preview.js +0 -54
  148. package/core/server/services/mega/feedback-buttons.js +0 -66
  149. package/core/server/services/mega/index.js +0 -14
  150. package/core/server/services/mega/mega.js +0 -626
  151. package/core/server/services/mega/post-email-serializer.js +0 -559
  152. package/core/server/services/mega/segment-parser.js +0 -20
  153. package/core/server/services/mega/template.js +0 -1319
  154. /package/core/built/admin/assets/{chunk.652.bb618bc5abf23bed4e87.js.LICENSE.txt → chunk.220.9ca2950240aba3fced21.js.LICENSE.txt} +0 -0
@@ -1,1319 +0,0 @@
1
- // ---------------------------------------------
2
- // ---------------------------------------------
3
- //
4
- // WARNING!!
5
- //
6
- // THIS FILE IS DEPRECATED. PLEASE ALSO MAKE IDENTICAL CHANGES IN THE EMAIL-SERVICE PACKAGE -> email-templates/template.hbs
7
- //
8
- // WARNING!!
9
- //
10
- // ---------------------------------------------
11
- // ---------------------------------------------
12
-
13
- const {escapeHtml: escape} = require('@tryghost/string');
14
- const feedbackButtons = require('./feedback-buttons');
15
-
16
- /* eslint indent: warn, no-irregular-whitespace: warn */
17
- const iff = (cond, yes, no) => (cond ? yes : no);
18
-
19
- /**
20
- * @template {Object.<string, any>} Input
21
- * @param {Input} obj
22
- * @param {string[]} [keys]
23
- * @returns {Input}
24
- */
25
- const sanitizeKeys = (obj, keys) => {
26
- const sanitized = Object.assign({}, obj);
27
- const keysToSanitize = keys || Object.keys(obj);
28
-
29
- for (const key of keysToSanitize) {
30
- if (typeof sanitized[key] === 'string') {
31
- // @ts-ignore
32
- sanitized[key] = escape(sanitized[key]);
33
- }
34
- }
35
-
36
- return sanitized;
37
- };
38
-
39
- module.exports = ({post, site, newsletter, templateSettings}) => {
40
- const date = new Date();
41
- const hasFeatureImageCaption = templateSettings.showFeatureImage && post.feature_image && post.feature_image_caption;
42
- const cleanPost = sanitizeKeys(post, ['url', 'published_at', 'title', 'excerpt', 'authors', 'feature_image', 'feature_image_alt']);
43
- const cleanSite = sanitizeKeys(site, ['title']);
44
- const cleanNewsletter = sanitizeKeys(newsletter, ['name']);
45
-
46
- return `<!doctype html>
47
- <html>
48
-
49
- <head>
50
- <meta name="viewport" content="width=device-width" />
51
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
52
- <!--[if mso]><xml><o:OfficeDocumentSettings><o:PixelsPerInch>96</o:PixelsPerInch><o:AllowPNG/></o:OfficeDocumentSettings></xml><![endif]-->
53
- <title>${cleanPost.title}</title>
54
- <style>
55
- /* -------------------------------------
56
- GLOBAL RESETS
57
- ------------------------------------- */
58
-
59
- /*All the styling goes here*/
60
-
61
- img {
62
- border: none;
63
- -ms-interpolation-mode: bicubic;
64
- max-width: 100%;
65
- }
66
-
67
- body {
68
- background-color: #fff;
69
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
70
- -webkit-font-smoothing: antialiased;
71
- font-size: 18px;
72
- line-height: 1.4;
73
- margin: 0;
74
- padding: 0;
75
- -ms-text-size-adjust: 100%;
76
- -webkit-text-size-adjust: 100%;
77
- color: #15212A;
78
- }
79
-
80
- table {
81
- border-collapse: separate;
82
- mso-table-lspace: 0pt;
83
- mso-table-rspace: 0pt;
84
- width: 100%;
85
- }
86
-
87
- table td {
88
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
89
- font-size: 18px;
90
- vertical-align: top;
91
- color: #15212A;
92
- }
93
-
94
- /* -------------------------------------
95
- BODY & CONTAINER
96
- ------------------------------------- */
97
- .body {
98
- background-color: #fff;
99
- width: 100%;
100
- }
101
-
102
- /* Set a max-width, and make it display as block so it will automatically stretch to that width, but will also shrink down on a phone or something */
103
- .container {
104
- display: block;
105
- margin: 0 auto !important;
106
- /* makes it centered */
107
- max-width: 600px;
108
- }
109
-
110
- /* This should also be a block element, so that it will fill 100% of the .container */
111
- .content {
112
- box-sizing: border-box;
113
- display: block;
114
- margin: 0 auto;
115
- max-width: 600px;
116
- }
117
-
118
- .content a {
119
- overflow-wrap: anywhere;
120
- }
121
-
122
- /* -------------------------------------
123
- POST CONTENT
124
- ------------------------------------- */
125
- hr {
126
- position: relative;
127
- display: block;
128
- width: 100%;
129
- margin: 3em 0;
130
- padding: 0;
131
- height: 1px;
132
- border: 0;
133
- border-top: 1px solid #e5eff5;
134
- }
135
-
136
- p,
137
- ul,
138
- ol,
139
- dl,
140
- blockquote {
141
- margin: 0 0 1.5em 0;
142
- line-height: 1.6em;
143
- }
144
-
145
- ol,
146
- ul {
147
- padding-left: 1.3em;
148
- padding-right: 1.5em;
149
- }
150
-
151
- ol ol,
152
- ul ul,
153
- ul ol,
154
- ol ul {
155
- margin: 0.5em 0 1em;
156
- }
157
-
158
- ul {
159
- list-style: disc;
160
- }
161
-
162
- ol {
163
- list-style: decimal;
164
- }
165
-
166
- ul,
167
- ol {
168
- max-width: 100%;
169
- }
170
-
171
- li {
172
- margin: 0.5em 0;
173
- padding-left: 0.3em;
174
- line-height: 1.6em;
175
- }
176
-
177
- dt {
178
- float: left;
179
- margin: 0 20px 0 0;
180
- width: 120px;
181
- color: #15212A;
182
- font-weight: 500;
183
- text-align: right;
184
- }
185
-
186
- dd {
187
- margin: 0 0 5px 0;
188
- text-align: left;
189
- }
190
-
191
- blockquote {
192
- margin: 2em 0 2em 0;
193
- padding: 0 25px 0 25px;
194
- border-left: ${templateSettings.accentColor || '#15212A'} 2px solid;
195
- font-size: 17px;
196
- font-weight: 500;
197
- line-height: 1.6em;
198
- letter-spacing: -0.2px;
199
- }
200
-
201
- blockquote.kg-blockquote-alt {
202
- border-left: 0 none;
203
- padding: 0 50px 0 50px;
204
- text-align: center;
205
- font-size: 1.2em;
206
- font-style: italic;
207
- color: #999999;
208
- }
209
-
210
- blockquote p {
211
- margin: 0.8em 0;
212
- font-size: 1em;
213
- }
214
-
215
- blockquote small {
216
- display: inline-block;
217
- margin: 0.8em 0 0.8em 1.5em;
218
- font-size: 0.9em;
219
- opacity: 0.8;
220
- }
221
-
222
- blockquote cite {
223
- font-weight: bold;
224
- }
225
- blockquote cite a {
226
- font-weight: normal;
227
- }
228
-
229
- a {
230
- color: ${templateSettings.accentColor || '#15212A'};
231
- text-decoration: none;
232
- }
233
-
234
- h1,
235
- h2,
236
- h3,
237
- h4,
238
- h5,
239
- h6 {
240
- margin-top: 0;
241
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
242
- line-height: 1.11em;
243
- font-weight: 700;
244
- text-rendering: optimizeLegibility;
245
- }
246
-
247
- h1 {
248
- margin: 1.5em 0 0.5em 0;
249
- font-size: 42px;
250
- font-weight: 700;
251
- }
252
-
253
- h2 {
254
- margin: 1.5em 0 0.5em 0;
255
- font-size: 32px;
256
- }
257
-
258
- h3 {
259
- margin: 1.5em 0 0.5em 0;
260
- font-size: 26px;
261
- }
262
-
263
- h4 {
264
- margin: 1.8em 0 0.5em 0;
265
- font-size: 21px;
266
- line-height: 1.2em;
267
- }
268
-
269
- h5 {
270
- margin: 2em 0 0.5em 0;
271
- font-size: 19px;
272
- line-height: 1.3em;
273
- }
274
-
275
- h6 {
276
- margin: 2em 0 0.5em 0;
277
- font-size: 19px;
278
- line-height: 1.3em;
279
- font-weight: 700;
280
- }
281
-
282
- h1 strong,
283
- h2 strong,
284
- h3 strong,
285
- h4 strong,
286
- h5 strong,
287
- h6 strong {
288
- font-weight: 800;
289
- }
290
-
291
- strong {
292
- font-weight: 700;
293
- }
294
-
295
- figure {
296
- margin: 0 0 1.5em;
297
- padding: 0;
298
- }
299
-
300
- figcaption {
301
- text-align: center;
302
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
303
- font-size: 14px;
304
- padding-top: 5px;
305
- line-height: 1.5em;
306
- }
307
-
308
- code {
309
- font-size: 0.9em;
310
- }
311
-
312
- pre {
313
- white-space: pre-wrap;
314
- overflow: auto;
315
- background: #15212A;
316
- padding: 15px;
317
- border-radius: 3px;
318
- line-height: 1.2em;
319
- color: #ffffff;
320
- }
321
-
322
- p code {
323
- background: #F2F7FA;
324
- word-break: break-all;
325
- padding: 1px 7px;
326
- border-radius: 3px;
327
- }
328
-
329
- figure blockquote p {
330
- font-size: 1em;
331
- }
332
-
333
- .header-image {
334
- padding-top: 16px;
335
- }
336
-
337
- .site-icon {
338
- padding-bottom: 10px;
339
- padding-top: 20px;
340
- text-align: center;
341
- border-radius: 3px;
342
- }
343
-
344
- .site-icon img {
345
- width: 48px;
346
- height: 48px;
347
- border-radius: 3px;
348
- }
349
-
350
- .site-info {
351
- padding-top: 50px;
352
- }
353
-
354
- .site-info-bordered {
355
- padding-top: 50px;
356
- border-bottom: 1px solid #e5eff5;
357
- }
358
-
359
- .site-url {
360
- color: #15212A;
361
- font-size: 16px;
362
- letter-spacing: -0.1px;
363
- font-weight: 700;
364
- text-transform: uppercase;
365
- text-align: center;
366
- }
367
-
368
- .site-url-bottom-padding {
369
- padding-bottom: 50px;
370
- }
371
-
372
- .site-title {
373
- color: #15212A;
374
- }
375
-
376
- .site-subtitle {
377
- color: #8695a4;
378
- font-size: 14px;
379
- font-weight: 400;
380
- text-transform: none;
381
- }
382
-
383
- .post-title {
384
- padding-bottom: 10px;
385
- font-size: 42px;
386
- line-height: 1.1em;
387
- font-weight: 700;
388
- text-align: center;
389
- }
390
- .post-title-serif {
391
- font-family: Georgia, serif;
392
- letter-spacing: -0.01em;
393
- }
394
- .post-title-left {
395
- text-align: left;
396
- }
397
-
398
- .post-title-link {
399
- color: #15212A;
400
- display: block;
401
- text-align: center;
402
- margin-top: 50px;
403
- }
404
- .post-title-link-left {
405
- text-align: left;
406
- }
407
-
408
- .post-meta,
409
- .view-online {
410
- padding-bottom: 50px;
411
- white-space: nowrap;
412
- color: #738a94;
413
- font-size: 13px;
414
- letter-spacing: 0.2px;
415
- text-transform: uppercase;
416
- text-align: center;
417
- }
418
- .post-meta-left {
419
- text-align: left;
420
- }
421
-
422
- .view-online {
423
- text-align: right;
424
- }
425
-
426
- .view-online-link {
427
- word-wrap: none;
428
- white-space: nowrap;
429
- color: #15212A;
430
- }
431
-
432
- .feature-image {
433
- padding-bottom: 30px;
434
- width: 100%;
435
- }
436
-
437
- .feature-image-with-caption {
438
- padding-bottom: 10px;
439
- }
440
-
441
- .feature-image-caption {
442
- width: 100%;
443
- padding-bottom: 30px;
444
- text-align: center;
445
- font-size: 13px;
446
- color: #738a94;
447
- }
448
-
449
- .post-content {
450
- max-width: 600px !important;
451
- font-family: Georgia, serif;
452
- font-size: 18px;
453
- line-height: 1.5em;
454
- color: #15212A;
455
- padding-bottom: 20px;
456
- border-bottom: 1px solid #e5eff5;
457
- }
458
-
459
- .post-content-sans-serif {
460
- max-width: 600px !important;
461
- font-size: 17px;
462
- line-height: 1.5em;
463
- color: #15212A;
464
- padding-bottom: 20px;
465
- border-bottom: 1px solid #e5eff5;
466
- }
467
-
468
- .post-content a,
469
- .post-content-sans-serif a {
470
- color: ${templateSettings.accentColor || '#08121A'};
471
- text-decoration: underline;
472
- }
473
-
474
- a[data-flickr-embed] img {
475
- height: auto;
476
- }
477
-
478
- .kg-bookmark-card {
479
- width: 100%;
480
- background: #ffffff;
481
- }
482
-
483
- .kg-bookmark-card a {
484
- text-decoration: none;
485
- }
486
-
487
- .kg-card + .kg-bookmark-card {
488
- margin-top: 0;
489
- }
490
-
491
- .kg-image-card img {
492
- display: block;
493
- margin: 0 auto;
494
- width: auto;
495
- height: auto !important;
496
- }
497
-
498
- .kg-bookmark-container {
499
- display: flex;
500
- min-height: 148px;
501
- color: #15212A;
502
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
503
- text-decoration: none;
504
- border-radius: 3px;
505
- border: 1px solid #e5eff5;
506
- }
507
-
508
- .kg-bookmark-content {
509
- display: inline-block;
510
- width: 100%;
511
- padding: 20px;
512
- }
513
-
514
- .kg-bookmark-title {
515
- color: #15212A;
516
- font-size: 15px;
517
- line-height: 1.5em;
518
- font-weight: 600;
519
- }
520
-
521
- .kg-bookmark-description {
522
- display: -webkit-box;
523
- overflow-y: hidden;
524
- margin-top: 12px;
525
- max-height: 40px;
526
- color: #738a94;
527
- font-size: 13px;
528
- line-height: 1.5em;
529
- font-weight: 400;
530
-
531
- -webkit-line-clamp: 2;
532
- -webkit-box-orient: vertical;
533
- }
534
-
535
- .kg-bookmark-thumbnail {
536
- min-width: 140px;
537
- max-width: 180px;
538
- background-repeat: no-repeat;
539
- background-size: cover;
540
- background-position: center;
541
- border-radius: 0 2px 2px 0;
542
- }
543
-
544
- .kg-bookmark-thumbnail img {
545
- display: none;
546
- }
547
-
548
- .kg-bookmark-metadata {
549
- display: flex;
550
- flex-wrap: wrap;
551
- align-items: center;
552
- margin-top: 14px;
553
- color: #15212A;
554
- font-size: 13px;
555
- font-weight: 400;
556
- }
557
-
558
- .kg-bookmark-icon {
559
- margin-right: 8px;
560
- width: 22px;
561
- height: 22px;
562
- }
563
-
564
- .kg-bookmark-author {
565
- line-height: 1.5em;
566
- }
567
-
568
- .kg-bookmark-publisher {
569
- overflow: hidden;
570
- max-width: 240px;
571
- line-height: 1.5em;
572
- text-overflow: ellipsis;
573
- white-space: nowrap;
574
- }
575
-
576
- .kg-bookmark-publisher:before {
577
- content: "•";
578
- margin: 0 6px;
579
- }
580
-
581
- .kg-gallery-container {
582
- margin-top: -20px;
583
- }
584
-
585
- .kg-gallery-image img {
586
- width: 100% !important;
587
- height: auto !important;
588
- padding-top: 20px;
589
- }
590
-
591
- .kg-video-preview {
592
- background-color: #1d1f21;
593
- background-image: radial-gradient(circle at center, #5b5f66, #1d1f21);
594
- display: block;
595
- text-decoration: none !important;
596
- }
597
-
598
- .kg-video-preview table {
599
- background-size: cover;
600
- min-height: 200px; /* for when images aren't loaded */
601
- }
602
-
603
- .kg-video-play-button {
604
- height: 2em;
605
- width: 3em;
606
- margin: 0 auto;
607
- border-radius: 10px;
608
- padding: 1em 0.8em 0.6em 1em;
609
- font-size: 1em; /* change this to resize */
610
- background-color: rgba(0,0,0,0.85);
611
- }
612
-
613
- .kg-video-play-button div {
614
- display: block;
615
- width: 0;
616
- height: 0;
617
- margin: 0 auto;
618
- line-height: 0px; /* fix for Yahoo Mail */
619
- border-color: transparent transparent transparent white;
620
- border-style: solid;
621
- border-width: 0.8em 0 0.8em 1.5em;
622
- }
623
-
624
- .kg-nft-link {
625
- display: block;
626
- text-decoration: none !important;
627
- color: #15212A !important;
628
- font-family: inherit !important;
629
- font-size: 14px;
630
- line-height: 1.3em;
631
- padding-top: 4px;
632
- padding-right: 20px;
633
- padding-left: 20px;
634
- padding-bottom: 4px;
635
- }
636
-
637
- .kg-twitter-link {
638
- display: block;
639
- text-decoration: none !important;
640
- color: #15212A !important;
641
- font-family: inherit !important;
642
- font-size: 15px;
643
- padding: 8px;
644
- line-height: 1.3em;
645
- }
646
-
647
- .kg-audio-thumbnail.placeholder {
648
- background: ${templateSettings.accentColor || '#15212A'} !important;
649
- }
650
-
651
- .kg-callout-card {
652
- display: flex;
653
- margin: 0 0 1.5em 0;
654
- padding: 20px 28px;
655
- border-radius: 3px;
656
- }
657
-
658
- .kg-callout-card p {
659
- margin: 0
660
- }
661
-
662
- .kg-callout-card-grey {
663
- background: #eef0f2;
664
- }
665
-
666
- .kg-callout-card-white {
667
- background: #fff;
668
- box-shadow: inset 0 0 0 1px #dddedf;
669
- }
670
-
671
- .kg-callout-card-blue {
672
- background: #E9F6FB;
673
- }
674
-
675
- .kg-callout-card-green {
676
- background: #E8F8EA;
677
- }
678
-
679
- .kg-callout-card-yellow {
680
- background: #FCF4E3;
681
- }
682
-
683
- .kg-callout-card-red {
684
- background: #FBE9E9;
685
- }
686
-
687
- .kg-callout-card-pink {
688
- background: #FCEEF8;
689
- }
690
-
691
- .kg-callout-card-purple {
692
- background: #F2EDFC;
693
- }
694
-
695
- .kg-callout-card-accent {
696
- background: ${templateSettings.accentColor || '#15212A'};
697
- color: #fff;
698
- }
699
-
700
- .kg-callout-card-accent a {
701
- color: #fff;
702
- }
703
-
704
- .kg-callout-emoji {
705
- padding-right: 12px;
706
- font-size: 20px;
707
- }
708
-
709
- .kg-header-card {
710
- margin: 0 0 1.5em 0;
711
- padding: 110px 35px 110px 35px;
712
- text-align: center;
713
- }
714
-
715
- .kg-header-card.kg-size-small {
716
- padding-top: 75px;
717
- padding-bottom: 75px;
718
- }
719
-
720
- .kg-header-card.kg-size-large {
721
- padding-top: 140px;
722
- padding-bottom: 140px;
723
- }
724
-
725
- .kg-header-card.kg-align-left {
726
- text-align: left;
727
- }
728
-
729
- .kg-header-card.kg-style-dark {
730
- background: #15171a;
731
- color: #ffffff;
732
- }
733
-
734
- .kg-header-card.kg-style-light {
735
- background-color: #F9F9FA;
736
- }
737
-
738
- .kg-header-card.kg-style-accent {
739
- background: ${templateSettings.accentColor || '#15171a'};
740
- color: #ffffff;
741
- }
742
-
743
- .kg-header-card.kg-style-image {
744
- background-color: #e7e7eb;
745
- background-size: cover;
746
- background-position: center center;
747
- color: #ffffff;
748
- }
749
-
750
- .kg-header-card h2 {
751
- font-size: 3em;
752
- font-weight: 700;
753
- line-height: 1.1em;
754
- margin: 0 0 0.125em;
755
- }
756
-
757
- .kg-header-card h2 strong {
758
- font-weight: 800;
759
- }
760
-
761
- .kg-header-card.kg-size-small h2 {
762
- font-size: 2.5em;
763
- }
764
-
765
- .kg-header-card.kg-size-large h2 {
766
- font-size: 3.5em;
767
- }
768
-
769
- .kg-header-card h3 {
770
- font-size: 1.125em;
771
- font-weight: 500;
772
- line-height: 1.3em;
773
- margin: 0;
774
- }
775
-
776
- .kg-header-card h3 strong {
777
- font-weight: 700;
778
- }
779
-
780
- .kg-header-card.kg-size-large h3 {
781
- font-size: 1.25em;
782
- }
783
-
784
- .kg-header-card.kg-size-small h3 {
785
- font-size: 1em;
786
- }
787
-
788
- .kg-header-card-button {
789
- margin-top: 1.75em;
790
- background: #ffffff;
791
- border-radius: 5px;
792
- box-sizing: border-box;
793
- cursor: pointer;
794
- display: inline-block;
795
- font-size: 14px;
796
- font-weight: bold;
797
- margin: 0;
798
- padding: 8px 16px;
799
- text-decoration: none !important;
800
- color: #15171A !important;
801
- }
802
-
803
- .kg-size-large .kg-header-card-button {
804
- margin-top: 2em;
805
- }
806
-
807
- .kg-size-small .kg-header-card-button {
808
- margin-top: 1.5em;
809
- }
810
-
811
- .kg-style-light .kg-header-card-button {
812
- background: ${templateSettings.accentColor || '#15212A'} !important;
813
- color: #ffffff !important;
814
- }
815
-
816
-
817
- /* -------------------------------------
818
- HEADER, FOOTER, MAIN
819
- ------------------------------------- */
820
- .main {
821
- background: #ffffff;
822
- border-radius: 3px;
823
- width: 100%;
824
- }
825
-
826
- .wrapper {
827
- box-sizing: border-box;
828
- padding: 0 20px;
829
- }
830
-
831
- .content-block {
832
- padding-bottom: 10px;
833
- padding-top: 10px;
834
- }
835
-
836
- .footer {
837
- color: #738a94;
838
- margin-top: 20px;
839
- text-align: center;
840
- font-size: 13px;
841
- padding-bottom: 10px;
842
- padding-top: 10px;
843
- padding-left: 30px;
844
- padding-right: 30px;
845
- line-height: 1.5em;
846
- }
847
-
848
- .footer a {
849
- color: #738a94;
850
- text-decoration: underline;
851
- }
852
-
853
- /* -------------------------------------
854
- BUTTONS
855
- ------------------------------------- */
856
- .btn {
857
- box-sizing: border-box;
858
- width: 100%;
859
- display: table;
860
- }
861
-
862
- .btn>tbody>tr>td {
863
- padding-bottom: 15px;
864
- }
865
-
866
- .btn table {
867
- width: auto;
868
- }
869
-
870
- .btn table td {
871
- background-color: #ffffff;
872
- border-radius: 5px;
873
- text-align: center;
874
- }
875
-
876
- .btn a {
877
- background-color: #ffffff;
878
- border: solid 1px #3498db;
879
- border-radius: 5px;
880
- box-sizing: border-box;
881
- color: #3498db;
882
- cursor: pointer;
883
- display: inline-block;
884
- font-size: 14px;
885
- font-weight: bold;
886
- margin: 0;
887
- padding: 12px 25px;
888
- text-decoration: none;
889
- }
890
-
891
- .btn-primary table td {
892
- background-color: #3498db;
893
- }
894
-
895
- .btn-primary a {
896
- background-color: #3498db;
897
- border-color: #3498db;
898
- color: #ffffff;
899
- }
900
-
901
- .btn-accent table td {
902
- background-color: ${templateSettings.adjustedAccentColor || '#3498db'};
903
- }
904
-
905
- .btn-accent a {
906
- background-color: ${templateSettings.adjustedAccentColor || '#3498db'};
907
- border-color: ${templateSettings.adjustedAccentColor || '#3498db'};
908
- color: ${templateSettings.adjustedAccentContrastColor || '#ffffff'};
909
- }
910
-
911
- /* -------------------------------------
912
- OTHER STYLES THAT MIGHT BE USEFUL
913
- ------------------------------------- */
914
- .last {
915
- margin-bottom: 0;
916
- }
917
-
918
- .first {
919
- margin-top: 0;
920
- }
921
-
922
- .align-center {
923
- text-align: center;
924
- }
925
-
926
- .align-right {
927
- text-align: right;
928
- }
929
-
930
- .align-left {
931
- text-align: left;
932
- }
933
-
934
- .clear {
935
- clear: both;
936
- }
937
-
938
- .mt0 {
939
- margin-top: 0;
940
- }
941
-
942
- .mb0 {
943
- margin-bottom: 0;
944
- }
945
-
946
- .preheader {
947
- color: transparent;
948
- display: none;
949
- height: 0;
950
- max-height: 0;
951
- max-width: 0;
952
- opacity: 0;
953
- overflow: hidden;
954
- mso-hide: all;
955
- visibility: hidden;
956
- width: 0;
957
- }
958
-
959
- /* -------------------------------------
960
- RESPONSIVE AND MOBILE FRIENDLY STYLES
961
- ------------------------------------- */
962
- @media only screen and (max-width: 620px) {
963
-
964
- table.body {
965
- width: 100%;
966
- min-width: 100%;
967
- }
968
-
969
- table.body p,
970
- table.body ul,
971
- table.body ol,
972
- table.body td,
973
- table.body span {
974
- font-size: 16px !important;
975
- }
976
-
977
- table.body pre {
978
- white-space: pre-wrap !important;
979
- word-break: break-word !important;
980
- }
981
-
982
- table.body .wrapper,
983
- table.body .article {
984
- padding: 0 10px !important;
985
- }
986
-
987
- table.body .content {
988
- padding: 0 !important;
989
- }
990
-
991
- table.body .container {
992
- padding: 0 !important;
993
- width: 100% !important;
994
- }
995
-
996
- table.body .main {
997
- border-left-width: 0 !important;
998
- border-radius: 0 !important;
999
- border-right-width: 0 !important;
1000
- }
1001
-
1002
- table.body .btn table {
1003
- width: 100% !important;
1004
- }
1005
-
1006
- table.body .btn a {
1007
- width: 100% !important;
1008
- }
1009
-
1010
- table.body .img-responsive {
1011
- height: auto !important;
1012
- max-width: 100% !important;
1013
- width: auto !important;
1014
- }
1015
-
1016
- table.body .site-icon img {
1017
- width: 40px !important;
1018
- height: 40px !important;
1019
- }
1020
-
1021
- table.body .site-url a {
1022
- font-size: 14px !important;
1023
- padding-bottom: 15px !important;
1024
- }
1025
-
1026
- table.body .post-meta {
1027
- white-space: normal !important;
1028
- font-size: 12px !important;
1029
- line-height: 1.5em;
1030
- }
1031
-
1032
- table.body .view-online-link,
1033
- table.body .footer,
1034
- table.body .footer a {
1035
- font-size: 12px !important;
1036
- }
1037
-
1038
- table.body .post-title a {
1039
- font-size: 32px !important;
1040
- line-height: 1.15em !important;
1041
- }
1042
-
1043
- table.body .kg-bookmark-card {
1044
- width: 90vw;
1045
- }
1046
-
1047
- table.body .kg-bookmark-thumbnail {
1048
- display: none !important;
1049
- }
1050
-
1051
- table.body .kg-bookmark-metadata span {
1052
- font-size: 13px !important;
1053
- }
1054
-
1055
- table.body .kg-embed-card {
1056
- max-width: 90vw !important;
1057
- }
1058
-
1059
- table.body h1 {
1060
- font-size: 32px !important;
1061
- line-height: 1.3em !important;
1062
- }
1063
-
1064
- table.body h2 {
1065
- font-size: 26px !important;
1066
- line-height: 1.22em !important;
1067
- }
1068
-
1069
- table.body h3 {
1070
- font-size: 21px !important;
1071
- line-height: 1.25em !important;
1072
- }
1073
-
1074
- table.body h4 {
1075
- font-size: 19px !important;
1076
- line-height: 1.3em !important;
1077
- }
1078
-
1079
- table.body h5 {
1080
- font-size: 16px !important;
1081
- line-height: 1.4em !important;
1082
- }
1083
-
1084
- table.body h6 {
1085
- font-size: 16px !important;
1086
- line-height: 1.4em !important;
1087
- }
1088
-
1089
- table.body blockquote {
1090
- font-size: 17px;
1091
- line-height: 1.6em;
1092
- margin-bottom: 0;
1093
- padding-left: 15px;
1094
- }
1095
-
1096
- table.body blockquote.kg-blockquote-alt {
1097
- border-left: 0 none !important;
1098
- margin: 0 0 2.5em 0 !important;
1099
- padding: 0 50px 0 50px !important;
1100
- font-size: 1.2em;
1101
- }
1102
-
1103
- table.body blockquote + * {
1104
- margin-top: 1.5em !important;
1105
- }
1106
-
1107
- table.body hr {
1108
- margin: 2em 0 !important;
1109
- }
1110
-
1111
- table.body figcaption,
1112
- table.body figcaption a {
1113
- font-size: 13px !important;
1114
- }
1115
-
1116
- }
1117
-
1118
- /* -------------------------------------
1119
- PRESERVE THESE STYLES IN THE HEAD
1120
- ------------------------------------- */
1121
- @media all {
1122
- .ExternalClass {
1123
- width: 100%;
1124
- }
1125
-
1126
- .ExternalClass,
1127
- .ExternalClass p,
1128
- .ExternalClass span,
1129
- .ExternalClass font,
1130
- .ExternalClass td,
1131
- .ExternalClass div {
1132
- line-height: 100%;
1133
- }
1134
-
1135
- .apple-link a {
1136
- color: inherit !important;
1137
- font-family: inherit !important;
1138
- font-size: inherit !important;
1139
- font-weight: inherit !important;
1140
- line-height: inherit !important;
1141
- text-decoration: none !important;
1142
- }
1143
-
1144
- #MessageViewBody a {
1145
- color: inherit;
1146
- text-decoration: none;
1147
- font-size: inherit;
1148
- font-family: inherit;
1149
- font-weight: inherit;
1150
- line-height: inherit;
1151
- }
1152
-
1153
- .btn-primary table td:hover {
1154
- background-color: #34495e !important;
1155
- }
1156
-
1157
- .btn-primary a:hover {
1158
- background-color: #34495e !important;
1159
- border-color: #34495e !important;
1160
- }
1161
- }
1162
-
1163
-
1164
- ${ templateSettings.showBadge ? `
1165
- .footer-powered {
1166
- text-align: center;
1167
- padding-top: 70px;
1168
- padding-bottom: 40px;
1169
- }
1170
-
1171
- .gh-powered {
1172
- width: 142px;
1173
- height: 30px;
1174
- }
1175
- ` : ''}
1176
-
1177
- </style>
1178
- </head>
1179
-
1180
- <body>
1181
- <span class="preheader">${ cleanPost.excerpt ? cleanPost.excerpt : `${cleanPost.title} – ` }</span>
1182
- <table role="presentation" border="0" cellpadding="0" cellspacing="0" class="body" width="100%">
1183
-
1184
- <!-- Outlook doesn't respect max-width so we need an extra centered table -->
1185
- <!--[if mso]>
1186
- <tr>
1187
- <td>
1188
- <center>
1189
- <table border="0" cellpadding="0" cellspacing="0" width="600">
1190
- <![endif]-->
1191
-
1192
- <tr>
1193
- <td>&nbsp;</td>
1194
- <td class="container">
1195
- <div class="content">
1196
- <!-- START CENTERED WHITE CONTAINER -->
1197
- <table role="presentation" border="0" cellpadding="0" cellspacing="0" class="main" width="100%">
1198
-
1199
- <!-- START MAIN CONTENT AREA -->
1200
- <tr>
1201
- <td class="wrapper">
1202
- <table role="presentation" border="0" cellpadding="0" cellspacing="0" width="100%">
1203
- ${ templateSettings.headerImage ? `
1204
- <tr>
1205
- <td class="header-image" width="100%" align="center"><img src="${templateSettings.headerImage}"${templateSettings.headerImageWidth ? ` width="${templateSettings.headerImageWidth}"` : ''}></td>
1206
- </tr>
1207
- ` : ''}
1208
-
1209
-
1210
- ${ templateSettings.showHeaderIcon || templateSettings.showHeaderTitle || templateSettings.showHeaderName ? `
1211
- <tr>
1212
- <td class="${templateSettings.showHeaderTitle ? `site-info-bordered` : `site-info`}" width="100%" align="center">
1213
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
1214
- ${ templateSettings.showHeaderIcon && cleanSite.iconUrl ? `
1215
- <tr>
1216
- <td class="site-icon"><a href="${cleanSite.url}"><img src="${cleanSite.iconUrl}" alt="${cleanSite.title}" border="0"></a></td>
1217
- </tr>
1218
- ` : ``}
1219
- ${ templateSettings.showHeaderTitle ? `
1220
- <tr>
1221
- <td class="site-url ${!templateSettings.showHeaderName ? 'site-url-bottom-padding' : ''}"><div style="width: 100% !important;"><a href="${cleanSite.url}" class="site-title">${cleanSite.title}</a></div></td>
1222
- </tr>
1223
- ` : ``}
1224
- ${ templateSettings.showHeaderName && templateSettings.showHeaderTitle ? `
1225
- <tr>
1226
- <td class="site-url site-url-bottom-padding"><div style="width: 100% !important;"><a href="${cleanSite.url}" class="site-subtitle">${cleanNewsletter.name}</a></div></td>
1227
- </tr>
1228
- ` : ``}
1229
- ${ templateSettings.showHeaderName && !templateSettings.showHeaderTitle ? `
1230
- <tr>
1231
- <td class="site-url site-url-bottom-padding"><div style="width: 100% !important;"><a href="${cleanSite.url}" class="site-title">${cleanNewsletter.name}</a></div></td>
1232
- </tr>
1233
- ` : ``}
1234
-
1235
- </table>
1236
- </td>
1237
- </tr>
1238
- ` : ''}
1239
-
1240
-
1241
- <tr>
1242
- <td class="post-title ${templateSettings.titleFontCategory === 'serif' ? `post-title-serif` : `` } ${templateSettings.titleAlignment === 'left' ? `post-title-left` : ``}">
1243
- <a href="${cleanPost.url}" class="post-title-link ${templateSettings.titleAlignment === 'left' ? `post-title-link-left` : ``}">${cleanPost.title}</a>
1244
- </td>
1245
- </tr>
1246
- <tr>
1247
- <td>
1248
- <table role="presentation" border="0" cellpadding="0" cellspacing="0" width="100%">
1249
- <tr>
1250
- <td class="post-meta ${templateSettings.titleAlignment === 'left' ? `post-meta-left` : ``}">
1251
- By ${cleanPost.authors} –
1252
- ${cleanPost.published_at} –
1253
- <a href="${cleanPost.url}" class="view-online-link">View online →</a>
1254
- </td>
1255
- </tr>
1256
- </table>
1257
- </td>
1258
- </tr>
1259
- ${ templateSettings.showFeatureImage && cleanPost.feature_image ? `
1260
- <tr>
1261
- <td class="feature-image ${hasFeatureImageCaption ? 'feature-image-with-caption' : ''}"><img src="${cleanPost.feature_image}"${cleanPost.feature_image_width ? ` width="${cleanPost.feature_image_width}"` : ''}${cleanPost.feature_image_alt ? ` alt="${cleanPost.feature_image_alt}"` : ''}></td>
1262
- </tr>
1263
- ` : ``}
1264
- ${ hasFeatureImageCaption ? `
1265
- <tr>
1266
- <td class="feature-image-caption" align="center">${cleanPost.feature_image_caption}</td>
1267
- </tr>
1268
- ` : ``}
1269
- <tr>
1270
- <td class="${(templateSettings.bodyFontCategory === 'sans_serif') ? `post-content-sans-serif` : `post-content` }">
1271
- <!-- POST CONTENT START -->
1272
- ${cleanPost.html}
1273
- <!-- POST CONTENT END -->
1274
- </td>
1275
- </tr>
1276
- </table>
1277
- </td>
1278
- </tr>
1279
-
1280
- <!-- END MAIN CONTENT AREA -->
1281
-
1282
- ${iff(templateSettings.feedbackEnabled, feedbackButtons.getTemplate(), '')}
1283
-
1284
- <tr>
1285
- <td class="wrapper" align="center">
1286
- <table role="presentation" border="0" cellpadding="0" cellspacing="0" width="100%" style="padding-top: 40px; padding-bottom: 30px;">
1287
- ${iff(!!templateSettings.footerContent, `<tr><td class="footer">${templateSettings.footerContent}</td></tr>`, '')}
1288
- <tr>
1289
- <td class="footer">${cleanSite.title} &copy; ${date.getFullYear()} – <a href="%recipient.unsubscribe_url%">Unsubscribe</a></td>
1290
- </tr>
1291
-
1292
- ${ templateSettings.showBadge ? `
1293
- <tr>
1294
- <td class="footer-powered"><a href="https://ghost.org/"><img src="https://static.ghost.org/v4.0.0/images/powered.png" border="0" width="142" height="30" class="gh-powered" alt="Powered by Ghost"></a></td>
1295
- </tr>
1296
- ` : '' }
1297
- </table>
1298
- </td>
1299
- </tr>
1300
-
1301
- </table>
1302
- <!-- END CENTERED WHITE CONTAINER -->
1303
- </div>
1304
- </td>
1305
- <td>&nbsp;</td>
1306
- </tr>
1307
-
1308
- <!--[if mso]>
1309
- </table>
1310
- </center>
1311
- </td>
1312
- </tr>
1313
- <![endif]-->
1314
-
1315
- </table>
1316
- </body>
1317
-
1318
- </html>`;
1319
- };