ghost 4.20.2 → 4.22.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.
- package/.eslintrc.js +1 -1
- package/Gruntfile.js +1 -0
- package/content/themes/casper/assets/built/screen.css +1 -1
- package/content/themes/casper/assets/built/screen.css.map +1 -1
- package/content/themes/casper/assets/css/screen.css +263 -50
- package/content/themes/casper/default.hbs +12 -3
- package/content/themes/casper/index.hbs +25 -23
- package/content/themes/casper/package.json +91 -2
- package/content/themes/casper/partials/post-card.hbs +1 -1
- package/content/themes/casper/post.hbs +18 -14
- package/content/themes/casper/yarn.lock +245 -192
- package/core/boot.js +5 -0
- package/core/bridge.js +14 -0
- package/core/built/assets/{chunk.3.777d43e2ce954ba8b2f5.js → chunk.3.1148677ff3b78e5aeaee.js} +60 -60
- package/core/built/assets/{ghost-dark-20e2892d4f30d0d1183c9ac725ea37d0.css → ghost-dark-684ad238e1a858c7cb5be6988de7c6f5.css} +1 -1
- package/core/built/assets/{ghost.min-57e46fd3b1145ecf2cbd185a13611f3b.css → ghost.min-66e08535f8bb797a8c40e0a2b31f1e9e.css} +1 -1
- package/core/built/assets/{ghost.min-07b6a50c54b3e2e190332c28c7255d2f.js → ghost.min-efbfb823467b66f4acc66537d033aa55.js} +1770 -1906
- package/core/built/assets/{vendor.min-af502ac4142871500fc424f6a5a254ec.js → vendor.min-7c8fdd90f7ecd2e94328a07ea3b64608.js} +985 -956
- package/core/frontend/apps/amp/lib/helpers/amp_content.js +16 -4
- package/core/frontend/helpers/asset.js +9 -1
- package/core/frontend/helpers/ghost_head.js +13 -1
- package/core/frontend/meta/title.js +15 -5
- package/core/frontend/services/card-assets/index.js +16 -0
- package/core/frontend/services/card-assets/service.js +101 -0
- package/core/frontend/services/routing/router-manager.js +5 -3
- package/core/frontend/services/theme-engine/config/defaults.json +4 -1
- package/core/frontend/services/theme-engine/config/index.js +1 -1
- package/core/frontend/src/cards/css/bookmark.css +83 -0
- package/core/frontend/src/cards/css/gallery.css +36 -0
- package/core/frontend/src/cards/js/gallery.js +8 -0
- package/core/frontend/web/middleware/serve-public-file.js +10 -1
- package/core/frontend/web/site.js +10 -9
- package/core/server/adapters/storage/LocalImagesStorage.js +50 -0
- package/core/server/adapters/storage/LocalMediaStorage.js +23 -0
- package/core/server/adapters/storage/{LocalFileStorage.js → LocalStorageBase.js} +36 -48
- package/core/server/adapters/storage/index.js +1 -1
- package/core/server/adapters/storage/utils.js +2 -2
- package/core/server/api/canary/index.js +4 -0
- package/core/server/api/canary/media.js +22 -0
- package/core/server/api/canary/members.js +6 -103
- package/core/server/api/canary/membersStripeConnect.js +0 -10
- package/core/server/api/canary/redirects.js +1 -6
- package/core/server/api/canary/utils/serializers/input/pages.js +8 -0
- package/core/server/api/canary/utils/serializers/output/images.js +4 -0
- package/core/server/api/canary/utils/serializers/output/index.js +4 -0
- package/core/server/api/canary/utils/serializers/output/media.js +28 -0
- package/core/server/api/canary/utils/validators/input/index.js +4 -0
- package/core/server/api/canary/utils/validators/input/media.js +7 -0
- package/core/server/api/v2/redirects.js +1 -6
- package/core/server/api/v2/utils/serializers/output/images.js +4 -0
- package/core/server/api/v3/members.js +5 -1
- package/core/server/api/v3/redirects.js +1 -6
- package/core/server/api/v3/utils/serializers/output/images.js +4 -0
- package/core/server/data/migrations/utils.js +55 -16
- package/core/server/data/migrations/versions/4.22/01-add-is-launch-complete-setting.js +8 -0
- package/core/server/data/migrations/versions/4.22/02-update-launch-complete-setting-from-user-data.js +39 -0
- package/core/server/data/schema/default-settings.json +8 -0
- package/core/server/frontend/ghost.min.css +1 -1
- package/core/server/lib/image/blog-icon.js +2 -4
- package/core/server/lib/image/image-size.js +1 -1
- package/core/server/services/limits.js +3 -6
- package/core/server/services/mega/template.js +4 -0
- package/core/server/services/members/api.js +1 -1
- package/core/server/services/members/emails/signup.js +2 -2
- package/core/server/services/members/stripe-connect.js +14 -0
- package/core/server/services/offers/service.js +1 -31
- package/core/server/services/redirects/api.js +270 -0
- package/core/server/services/redirects/index.js +27 -12
- package/core/server/services/themes/ThemeStorage.js +5 -5
- package/core/server/web/admin/views/default-prod.html +4 -4
- package/core/server/web/admin/views/default.html +4 -4
- package/core/server/web/api/canary/admin/routes.js +13 -4
- package/core/server/web/api/middleware/upload.js +117 -10
- package/core/server/web/members/app.js +1 -1
- package/core/server/web/shared/middlewares/index.js +0 -4
- package/core/shared/config/defaults.json +3 -1
- package/core/shared/config/helpers.js +2 -0
- package/core/shared/config/overrides.json +8 -0
- package/core/shared/labs.js +5 -3
- package/package.json +35 -34
- package/yarn.lock +997 -1016
- package/core/built/assets/img/themes/Editorial-a25a4a34c04dedd858bd5e05ef388b1c.jpg +0 -0
- package/core/built/assets/img/themes/Massively-06edf00108429f7fb8e65f190fba34fe.jpg +0 -0
- package/core/server/services/redirects/settings.js +0 -234
- package/core/server/web/shared/middlewares/custom-redirects.js +0 -128
|
@@ -161,6 +161,10 @@ production stylesheet in assets/built/screen.css
|
|
|
161
161
|
background: var(--ghost-accent-color);
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
+
.site-header-content.large {
|
|
165
|
+
padding-top: 28vmin;
|
|
166
|
+
padding-bottom: 28vmin;
|
|
167
|
+
}
|
|
164
168
|
|
|
165
169
|
|
|
166
170
|
/* 5. Site Navigation
|
|
@@ -301,12 +305,12 @@ production stylesheet in assets/built/screen.css
|
|
|
301
305
|
a.gh-head-button {
|
|
302
306
|
display: block;
|
|
303
307
|
padding: 8px 15px;
|
|
304
|
-
color: var(--color-darkgrey);
|
|
308
|
+
color: var(--button-text-color, var(--color-darkgrey));
|
|
305
309
|
font-weight: 500;
|
|
306
310
|
letter-spacing: -0.015em;
|
|
307
311
|
font-size: 1.5rem;
|
|
308
312
|
line-height: 1em;
|
|
309
|
-
background: #fff;
|
|
313
|
+
background: var(--button-bg-color, #fff);
|
|
310
314
|
border-radius: 30px;
|
|
311
315
|
}
|
|
312
316
|
|
|
@@ -422,7 +426,7 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
|
|
|
422
426
|
justify-content: space-between;
|
|
423
427
|
user-select: none;
|
|
424
428
|
}
|
|
425
|
-
.home-template #gh-head .gh-head-brand {
|
|
429
|
+
.home-template #gh-head.has-cover .gh-head-brand {
|
|
426
430
|
justify-content: flex-end;
|
|
427
431
|
}
|
|
428
432
|
#gh-head .gh-head-menu {
|
|
@@ -489,7 +493,7 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
|
|
|
489
493
|
}
|
|
490
494
|
}
|
|
491
495
|
|
|
492
|
-
.home-template .gh-head {
|
|
496
|
+
.home-template .gh-head.has-cover {
|
|
493
497
|
position: absolute;
|
|
494
498
|
top: 0;
|
|
495
499
|
right: 0;
|
|
@@ -505,10 +509,10 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
|
|
|
505
509
|
background: var(--ghost-accent-color);
|
|
506
510
|
}
|
|
507
511
|
|
|
508
|
-
.home-template .gh-head-logo {
|
|
512
|
+
.home-template .gh-head.has-cover .gh-head-logo {
|
|
509
513
|
display: none;
|
|
510
514
|
}
|
|
511
|
-
.home-template .gh-head-menu {
|
|
515
|
+
.home-template .gh-head.has-cover .gh-head-menu {
|
|
512
516
|
margin-left: -2.5vmin;
|
|
513
517
|
}
|
|
514
518
|
|
|
@@ -524,6 +528,12 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
|
|
|
524
528
|
padding: 4vmin 0;
|
|
525
529
|
}
|
|
526
530
|
|
|
531
|
+
.post-feed.list {
|
|
532
|
+
row-gap: 6vmin;
|
|
533
|
+
max-width: 940px;
|
|
534
|
+
margin: 2vmin auto 0;
|
|
535
|
+
}
|
|
536
|
+
|
|
527
537
|
@media (max-width: 1000px) {
|
|
528
538
|
.post-feed {
|
|
529
539
|
grid-template-columns: 1fr 1fr;
|
|
@@ -602,6 +612,10 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
|
|
|
602
612
|
margin-top: 0;
|
|
603
613
|
}
|
|
604
614
|
|
|
615
|
+
.has-serif-title .post-card-title {
|
|
616
|
+
font-family: var(--font-serif);
|
|
617
|
+
}
|
|
618
|
+
|
|
605
619
|
.post-card-content {
|
|
606
620
|
flex-grow: 1;
|
|
607
621
|
display: flex;
|
|
@@ -611,6 +625,11 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
|
|
|
611
625
|
.post-card-excerpt {
|
|
612
626
|
max-width: 56em;
|
|
613
627
|
color: color-mod(var(--color-midgrey) l(-8%));
|
|
628
|
+
font-family: var(--font-serif);
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
.has-sans-body .post-card-excerpt {
|
|
632
|
+
font-family: var(--font-sans-serif);
|
|
614
633
|
}
|
|
615
634
|
|
|
616
635
|
.post-card-excerpt p {
|
|
@@ -741,6 +760,15 @@ make sure this only happens on large viewports / desktop-ish devices.
|
|
|
741
760
|
border-top: 0;
|
|
742
761
|
}
|
|
743
762
|
|
|
763
|
+
.post-feed.list .post-card-large {
|
|
764
|
+
grid-template-columns: 3fr 5fr;
|
|
765
|
+
min-height: auto;
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
.post-feed.list .post-card-large.no-image {
|
|
769
|
+
grid-template-columns: 1fr;
|
|
770
|
+
}
|
|
771
|
+
|
|
744
772
|
.post-card-large:not(.no-image) .post-card-header {
|
|
745
773
|
margin-top: 0;
|
|
746
774
|
}
|
|
@@ -752,6 +780,18 @@ make sure this only happens on large viewports / desktop-ish devices.
|
|
|
752
780
|
min-height: 380px;
|
|
753
781
|
}
|
|
754
782
|
|
|
783
|
+
.post-feed.list .post-card-large .post-card-image-link {
|
|
784
|
+
grid-column: 1 / span 1;
|
|
785
|
+
height: max-content;
|
|
786
|
+
min-height: auto;
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
.post-feed.list .post-card-large .post-card-image-link::after {
|
|
790
|
+
content: "";
|
|
791
|
+
display: block;
|
|
792
|
+
padding-bottom: 60%;
|
|
793
|
+
}
|
|
794
|
+
|
|
755
795
|
.post-card-large .post-card-image {
|
|
756
796
|
position: absolute;
|
|
757
797
|
width: 100%;
|
|
@@ -762,13 +802,21 @@ make sure this only happens on large viewports / desktop-ish devices.
|
|
|
762
802
|
justify-content: center;
|
|
763
803
|
}
|
|
764
804
|
|
|
805
|
+
.post-feed.list .post-card-large .post-card-content {
|
|
806
|
+
justify-content: flex-start;
|
|
807
|
+
margin-top: -6px;
|
|
808
|
+
}
|
|
809
|
+
|
|
765
810
|
.post-card-large .post-card-title {
|
|
766
811
|
margin-top: 0;
|
|
767
812
|
font-size: 3.2rem;
|
|
768
813
|
}
|
|
769
814
|
|
|
815
|
+
.post-feed.list .post-card-large .post-card-title {
|
|
816
|
+
font-size: 2.4rem;
|
|
817
|
+
}
|
|
818
|
+
|
|
770
819
|
.post-card-large .post-card-excerpt p {
|
|
771
|
-
margin-bottom: 1.5em;
|
|
772
820
|
font-size: 1.7rem;
|
|
773
821
|
line-height: 1.55em;
|
|
774
822
|
-webkit-line-clamp: 8;
|
|
@@ -820,6 +868,10 @@ make sure this only happens on large viewports / desktop-ish devices.
|
|
|
820
868
|
color: color-mod(var(--color-darkgrey) l(-5%));
|
|
821
869
|
}
|
|
822
870
|
|
|
871
|
+
.has-serif-title .article-title {
|
|
872
|
+
font-family: var(--font-serif);
|
|
873
|
+
}
|
|
874
|
+
|
|
823
875
|
.article-excerpt {
|
|
824
876
|
margin: 0 0 1rem;
|
|
825
877
|
font-size: 2rem;
|
|
@@ -833,6 +885,14 @@ make sure this only happens on large viewports / desktop-ish devices.
|
|
|
833
885
|
margin: 6vmin 0 0;
|
|
834
886
|
}
|
|
835
887
|
|
|
888
|
+
.image-full .article-image {
|
|
889
|
+
grid-column: full-start / full-end;
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
.image-small .article-image {
|
|
893
|
+
grid-column: main-start / main-end;
|
|
894
|
+
}
|
|
895
|
+
|
|
836
896
|
.gh-canvas .article-image img {
|
|
837
897
|
display: block;
|
|
838
898
|
margin-left: auto;
|
|
@@ -908,6 +968,10 @@ headings, text, images and lists. We deal with cards lower down. */
|
|
|
908
968
|
color: var(--color-darkgrey);
|
|
909
969
|
}
|
|
910
970
|
|
|
971
|
+
.has-serif-title .gh-content > [id] {
|
|
972
|
+
font-family: var(--font-serif);
|
|
973
|
+
}
|
|
974
|
+
|
|
911
975
|
/* Add back a top margin to all headings, unless a heading
|
|
912
976
|
is the very first element in the post content */
|
|
913
977
|
.gh-content > [id]:not(:first-child) {
|
|
@@ -948,6 +1012,14 @@ is the very first element in the post content */
|
|
|
948
1012
|
line-height: 1.6em;
|
|
949
1013
|
}
|
|
950
1014
|
|
|
1015
|
+
.has-sans-body .gh-content > blockquote,
|
|
1016
|
+
.has-sans-body .gh-content > ol,
|
|
1017
|
+
.has-sans-body .gh-content > ul,
|
|
1018
|
+
.has-sans-body .gh-content > dl,
|
|
1019
|
+
.has-sans-body .gh-content > p {
|
|
1020
|
+
font-family: var(--font-sans);
|
|
1021
|
+
}
|
|
1022
|
+
|
|
951
1023
|
.gh-content > ul,
|
|
952
1024
|
.gh-content > ol,
|
|
953
1025
|
.gh-content > dl {
|
|
@@ -1398,18 +1470,28 @@ Ghost editor. */
|
|
|
1398
1470
|
|
|
1399
1471
|
.footer-cta {
|
|
1400
1472
|
position: relative;
|
|
1473
|
+
margin-bottom: -40px;
|
|
1401
1474
|
padding: 9vmin 4vmin 10vmin;
|
|
1402
1475
|
color: #fff;
|
|
1403
1476
|
text-align: center;
|
|
1404
1477
|
background: var(--color-darkgrey);
|
|
1405
1478
|
}
|
|
1406
1479
|
|
|
1480
|
+
.footer-cta.cta-alt {
|
|
1481
|
+
padding: 2vmin 4vmin 12vmin;
|
|
1482
|
+
background: transparent;
|
|
1483
|
+
}
|
|
1484
|
+
|
|
1407
1485
|
/* Increases the default h2 size by 15%, for small and large screens */
|
|
1408
1486
|
.footer-cta h2 {
|
|
1409
1487
|
margin: 0 0 30px;
|
|
1410
1488
|
font-size: 3.2rem;
|
|
1411
1489
|
}
|
|
1412
1490
|
|
|
1491
|
+
.footer-cta.cta-alt h2 {
|
|
1492
|
+
color: var(--color-darkgrey);
|
|
1493
|
+
}
|
|
1494
|
+
|
|
1413
1495
|
@media (max-width: 600px) {
|
|
1414
1496
|
.footer-cta h2 {
|
|
1415
1497
|
font-size: 2.65rem;
|
|
@@ -1430,9 +1512,13 @@ Ghost editor. */
|
|
|
1430
1512
|
border-radius: 8px;
|
|
1431
1513
|
}
|
|
1432
1514
|
|
|
1515
|
+
.footer-cta.cta-alt .footer-cta-button {
|
|
1516
|
+
border: 1px solid var(--color-lightgrey);
|
|
1517
|
+
}
|
|
1518
|
+
|
|
1433
1519
|
.footer-cta-button span {
|
|
1434
1520
|
display: inline-block;
|
|
1435
|
-
padding: 10px
|
|
1521
|
+
padding: 10px 15px;
|
|
1436
1522
|
color: #fff;
|
|
1437
1523
|
font-weight: 500;
|
|
1438
1524
|
background: var(--ghost-accent-color);
|
|
@@ -1446,7 +1532,7 @@ Ghost editor. */
|
|
|
1446
1532
|
.read-more-wrap {
|
|
1447
1533
|
width: 100%;
|
|
1448
1534
|
padding: 4vmin;
|
|
1449
|
-
margin:
|
|
1535
|
+
margin: 40px auto -40px;
|
|
1450
1536
|
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
|
1451
1537
|
background: color-mod(var(--color-darkgrey) l(-5%));
|
|
1452
1538
|
}
|
|
@@ -1846,20 +1932,20 @@ html.dark-mode .gh-content :not(pre) > code {
|
|
|
1846
1932
|
color: var(--color-wash);
|
|
1847
1933
|
}
|
|
1848
1934
|
|
|
1849
|
-
html.dark-mode .
|
|
1935
|
+
html.dark-mode .gh-content a {
|
|
1850
1936
|
color: #fff;
|
|
1851
1937
|
box-shadow: inset 0 -1px 0 #fff;
|
|
1852
1938
|
}
|
|
1853
1939
|
|
|
1854
|
-
html.dark-mode .
|
|
1940
|
+
html.dark-mode .gh-content strong {
|
|
1855
1941
|
color: #fff;
|
|
1856
1942
|
}
|
|
1857
1943
|
|
|
1858
|
-
html.dark-mode .
|
|
1944
|
+
html.dark-mode .gh-content em {
|
|
1859
1945
|
color: #fff;
|
|
1860
1946
|
}
|
|
1861
1947
|
|
|
1862
|
-
html.dark-mode .
|
|
1948
|
+
html.dark-mode .gh-content code {
|
|
1863
1949
|
color: #fff;
|
|
1864
1950
|
background: #000;
|
|
1865
1951
|
}
|
|
@@ -1868,40 +1954,40 @@ html.dark-mode hr {
|
|
|
1868
1954
|
border-top-color: color-mod(var(--color-darkmode) l(+8%));
|
|
1869
1955
|
}
|
|
1870
1956
|
|
|
1871
|
-
html.dark-mode .
|
|
1957
|
+
html.dark-mode .gh-content hr:after {
|
|
1872
1958
|
background: color-mod(var(--color-darkmode) l(+8%));
|
|
1873
1959
|
box-shadow: var(--color-darkmode) 0 0 0 5px;
|
|
1874
1960
|
}
|
|
1875
1961
|
|
|
1876
|
-
html.dark-mode
|
|
1962
|
+
html.dark-mode figcaption {
|
|
1877
1963
|
color: rgba(255, 255, 255, 0.6);
|
|
1878
1964
|
}
|
|
1879
1965
|
|
|
1880
|
-
html.dark-mode .
|
|
1966
|
+
html.dark-mode .gh-content table td:first-child {
|
|
1881
1967
|
background-image: linear-gradient(to right, var(--color-darkmode) 50%, color-mod(var(--color-darkmode) a(0%)) 100%);
|
|
1882
1968
|
}
|
|
1883
1969
|
|
|
1884
|
-
html.dark-mode .
|
|
1970
|
+
html.dark-mode .gh-content table td:last-child {
|
|
1885
1971
|
background-image: linear-gradient(to left, var(--color-darkmode) 50%, color-mod(var(--color-darkmode) a(0%)) 100%);
|
|
1886
1972
|
}
|
|
1887
1973
|
|
|
1888
|
-
html.dark-mode .
|
|
1974
|
+
html.dark-mode .gh-content table th {
|
|
1889
1975
|
color: rgba(255, 255, 255, 0.85);
|
|
1890
1976
|
background-color: color-mod(var(--color-darkmode) l(+8%));
|
|
1891
1977
|
}
|
|
1892
1978
|
|
|
1893
|
-
html.dark-mode .
|
|
1894
|
-
html.dark-mode .
|
|
1979
|
+
html.dark-mode .gh-content table th,
|
|
1980
|
+
html.dark-mode .gh-content table td {
|
|
1895
1981
|
border: color-mod(var(--color-darkmode) l(+8%)) 1px solid;
|
|
1896
1982
|
}
|
|
1897
1983
|
|
|
1898
|
-
html.dark-mode .
|
|
1899
|
-
html.dark-mode .
|
|
1984
|
+
html.dark-mode .gh-content .kg-bookmark-container,
|
|
1985
|
+
html.dark-mode .gh-content .kg-bookmark-container:hover {
|
|
1900
1986
|
color: rgba(255, 255, 255, 0.75);
|
|
1901
1987
|
box-shadow: 0 0 1px rgba(255,255,255,0.9);
|
|
1902
1988
|
}
|
|
1903
1989
|
|
|
1904
|
-
html.dark-mode .
|
|
1990
|
+
html.dark-mode .gh-content input {
|
|
1905
1991
|
color: color-mod(var(--color-midgrey) l(-30%));
|
|
1906
1992
|
}
|
|
1907
1993
|
|
|
@@ -1922,40 +2008,167 @@ html.dark-mode .site-archive-header .no-image {
|
|
|
1922
2008
|
background: var(--color-darkmode);
|
|
1923
2009
|
}
|
|
1924
2010
|
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
2011
|
+
@media (prefers-color-scheme: dark) {
|
|
2012
|
+
html.auto-color body {
|
|
2013
|
+
color: rgba(255, 255, 255, 0.75);
|
|
2014
|
+
background: var(--color-darkmode);
|
|
2015
|
+
}
|
|
1929
2016
|
|
|
1930
|
-
html.
|
|
1931
|
-
|
|
1932
|
-
}
|
|
2017
|
+
html.auto-color img {
|
|
2018
|
+
opacity: 0.9;
|
|
2019
|
+
}
|
|
1933
2020
|
|
|
1934
|
-
html.
|
|
1935
|
-
color:
|
|
1936
|
-
|
|
2021
|
+
html.auto-color .post-card,
|
|
2022
|
+
html.auto-color .post-card:hover {
|
|
2023
|
+
border-bottom-color: color-mod(var(--color-darkmode) l(+8%));
|
|
2024
|
+
}
|
|
1937
2025
|
|
|
1938
|
-
html.
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
background: color-mod(var(--color-darkmode) l(+3%));
|
|
1942
|
-
}
|
|
2026
|
+
html.auto-color .post-card-byline-content a {
|
|
2027
|
+
color: rgba(255, 255, 255, 0.75);
|
|
2028
|
+
}
|
|
1943
2029
|
|
|
1944
|
-
html.
|
|
1945
|
-
|
|
1946
|
-
}
|
|
2030
|
+
html.auto-color .post-card-byline-content a:hover {
|
|
2031
|
+
color: #fff;
|
|
2032
|
+
}
|
|
1947
2033
|
|
|
1948
|
-
html.
|
|
1949
|
-
|
|
1950
|
-
}
|
|
2034
|
+
html.auto-color .post-card-image {
|
|
2035
|
+
background: var(--color-darkmode);
|
|
2036
|
+
}
|
|
1951
2037
|
|
|
1952
|
-
html.
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
2038
|
+
html.auto-color .post-card-title {
|
|
2039
|
+
color: rgba(255, 255, 255, 0.85);
|
|
2040
|
+
}
|
|
2041
|
+
|
|
2042
|
+
html.auto-color .post-card-excerpt {
|
|
2043
|
+
color: color-mod(var(--color-midgrey) l(+10%));
|
|
2044
|
+
}
|
|
2045
|
+
|
|
2046
|
+
html.auto-color .post-full-content {
|
|
2047
|
+
background: var(--color-darkmode);
|
|
2048
|
+
}
|
|
2049
|
+
|
|
2050
|
+
html.auto-color .article-title {
|
|
2051
|
+
color: rgba(255, 255, 255, 0.9);
|
|
2052
|
+
}
|
|
2053
|
+
|
|
2054
|
+
html.auto-color .article-excerpt {
|
|
2055
|
+
color: color-mod(var(--color-midgrey) l(+10%));
|
|
2056
|
+
}
|
|
2057
|
+
|
|
2058
|
+
html.auto-color .post-full-image {
|
|
2059
|
+
background-color: color-mod(var(--color-darkmode) l(+8%));
|
|
2060
|
+
}
|
|
2061
|
+
|
|
2062
|
+
html.auto-color .article-byline {
|
|
2063
|
+
border-top-color: color-mod(var(--color-darkmode) l(+15%));
|
|
2064
|
+
}
|
|
2065
|
+
|
|
2066
|
+
html.auto-color .article-byline-meta h4 a {
|
|
2067
|
+
color: rgba(255, 255, 255, 0.75);
|
|
2068
|
+
}
|
|
2069
|
+
|
|
2070
|
+
html.auto-color .article-byline-meta h4 a:hover {
|
|
2071
|
+
color: #fff;
|
|
2072
|
+
}
|
|
2073
|
+
|
|
2074
|
+
html.auto-color .no-image .author-social-link a {
|
|
2075
|
+
color: rgba(255, 255, 255, 0.75);
|
|
2076
|
+
}
|
|
2077
|
+
|
|
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 {
|
|
2084
|
+
color: rgba(255, 255, 255, 0.9);
|
|
2085
|
+
}
|
|
2086
|
+
|
|
2087
|
+
html.auto-color .gh-content pre {
|
|
2088
|
+
background: color-mod(var(--color-darkgrey) l(-8%));
|
|
2089
|
+
}
|
|
2090
|
+
|
|
2091
|
+
html.auto-color .gh-content :not(pre) > code {
|
|
2092
|
+
background: color-mod(var(--color-darkgrey) l(+6%));
|
|
2093
|
+
border-color: color-mod(var(--color-darkmode) l(+8%));
|
|
2094
|
+
color: var(--color-wash);
|
|
2095
|
+
}
|
|
2096
|
+
|
|
2097
|
+
html.auto-color .gh-content a {
|
|
2098
|
+
color: #fff;
|
|
2099
|
+
box-shadow: inset 0 -1px 0 #fff;
|
|
2100
|
+
}
|
|
2101
|
+
|
|
2102
|
+
html.auto-color .gh-content strong {
|
|
2103
|
+
color: #fff;
|
|
2104
|
+
}
|
|
1956
2105
|
|
|
1957
|
-
html.
|
|
1958
|
-
|
|
2106
|
+
html.auto-color .gh-content em {
|
|
2107
|
+
color: #fff;
|
|
2108
|
+
}
|
|
2109
|
+
|
|
2110
|
+
html.auto-color .gh-content code {
|
|
2111
|
+
color: #fff;
|
|
2112
|
+
background: #000;
|
|
2113
|
+
}
|
|
2114
|
+
|
|
2115
|
+
html.auto-color hr {
|
|
2116
|
+
border-top-color: color-mod(var(--color-darkmode) l(+8%));
|
|
2117
|
+
}
|
|
2118
|
+
|
|
2119
|
+
html.auto-color .gh-content hr:after {
|
|
2120
|
+
background: color-mod(var(--color-darkmode) l(+8%));
|
|
2121
|
+
box-shadow: var(--color-darkmode) 0 0 0 5px;
|
|
2122
|
+
}
|
|
2123
|
+
|
|
2124
|
+
html.auto-color figcaption {
|
|
2125
|
+
color: rgba(255, 255, 255, 0.6);
|
|
2126
|
+
}
|
|
2127
|
+
|
|
2128
|
+
html.auto-color .gh-content table td:first-child {
|
|
2129
|
+
background-image: linear-gradient(to right, var(--color-darkmode) 50%, color-mod(var(--color-darkmode) a(0%)) 100%);
|
|
2130
|
+
}
|
|
2131
|
+
|
|
2132
|
+
html.auto-color .gh-content table td:last-child {
|
|
2133
|
+
background-image: linear-gradient(to left, var(--color-darkmode) 50%, color-mod(var(--color-darkmode) a(0%)) 100%);
|
|
2134
|
+
}
|
|
2135
|
+
|
|
2136
|
+
html.auto-color .gh-content table th {
|
|
2137
|
+
color: rgba(255, 255, 255, 0.85);
|
|
2138
|
+
background-color: color-mod(var(--color-darkmode) l(+8%));
|
|
2139
|
+
}
|
|
2140
|
+
|
|
2141
|
+
html.auto-color .gh-content table th,
|
|
2142
|
+
html.auto-color .gh-content table td {
|
|
2143
|
+
border: color-mod(var(--color-darkmode) l(+8%)) 1px solid;
|
|
2144
|
+
}
|
|
2145
|
+
|
|
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
|
+
html.auto-color .gh-content input {
|
|
2153
|
+
color: color-mod(var(--color-midgrey) l(-30%));
|
|
2154
|
+
}
|
|
2155
|
+
|
|
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
|
+
html.auto-color .site-archive-header .no-image {
|
|
2169
|
+
color: rgba(255, 255, 255, 0.9);
|
|
2170
|
+
background: var(--color-darkmode);
|
|
2171
|
+
}
|
|
1959
2172
|
}
|
|
1960
2173
|
|
|
1961
2174
|
/*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
|
-
<html lang="{{@site.locale}}">
|
|
2
|
+
<html lang="{{@site.locale}}"{{#match @custom.color_scheme "Dark"}} class="dark-mode"{{/match}}{{#match @custom.color_scheme "Auto"}} class="auto-color"{{/match}}>
|
|
3
3
|
<head>
|
|
4
4
|
|
|
5
5
|
{{!-- Basic meta - advanced meta is output with {ghost_head} below --}}
|
|
@@ -9,6 +9,15 @@
|
|
|
9
9
|
<meta name="HandheldFriendly" content="True" />
|
|
10
10
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
11
11
|
|
|
12
|
+
<style>
|
|
13
|
+
:root {
|
|
14
|
+
{{#if @custom.header_button_background}}
|
|
15
|
+
--button-bg-color: {{@custom.header_button_background}};
|
|
16
|
+
{{/if}}
|
|
17
|
+
--button-text-color: {{#match @custom.header_button_text_color "Light"}}#fff{{else}}var(--color-darkgrey){{/match}};
|
|
18
|
+
}
|
|
19
|
+
</style>
|
|
20
|
+
|
|
12
21
|
{{!-- Theme assets - use the {asset} helper to reference styles & scripts,
|
|
13
22
|
this will take care of caching and cache-busting automatically --}}
|
|
14
23
|
<link rel="stylesheet" type="text/css" href="{{asset "built/screen.css"}}" />
|
|
@@ -18,10 +27,10 @@
|
|
|
18
27
|
{{ghost_head}}
|
|
19
28
|
|
|
20
29
|
</head>
|
|
21
|
-
<body class="{{body_class}}">
|
|
30
|
+
<body class="{{body_class}}{{#match @custom.title_font "=" "Elegant serif"}} has-serif-title{{/match}}{{#match @custom.body_font "=" "Modern sans-serif"}} has-sans-body{{/match}}">
|
|
22
31
|
<div class="viewport">
|
|
23
32
|
|
|
24
|
-
<header id="gh-head" class="gh-head
|
|
33
|
+
<header id="gh-head" class="gh-head{{#match @custom.publication_cover_style "!=" "None"}} has-cover{{/match}}">
|
|
25
34
|
<nav class="gh-head-inner inner gh-container">
|
|
26
35
|
|
|
27
36
|
<div class="gh-head-brand">
|
|
@@ -2,35 +2,37 @@
|
|
|
2
2
|
{{!-- The tag above means: insert everything in this file
|
|
3
3
|
into the {body} of the default.hbs template --}}
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
{{#
|
|
7
|
-
{{
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
<h1 class="site-title">
|
|
20
|
-
{{#if @site.logo}}
|
|
21
|
-
<img class="site-logo" src="{{img_url @site.logo size="m"}}" alt="{{@site.title}}" />
|
|
22
|
-
{{else}}
|
|
23
|
-
{{@site.title}}
|
|
5
|
+
{{#match @custom.publication_cover_style "!=" "None"}}
|
|
6
|
+
<div class="site-header-content{{#match @custom.publication_cover_style "Large"}} large{{/match}}">
|
|
7
|
+
{{#if @site.cover_image}}
|
|
8
|
+
{{!-- This is a responsive image, it loads different sizes depending on device
|
|
9
|
+
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
|
|
10
|
+
<img class="site-header-cover"
|
|
11
|
+
srcset="{{img_url @site.cover_image size="s"}} 300w,
|
|
12
|
+
{{img_url @site.cover_image size="m"}} 600w,
|
|
13
|
+
{{img_url @site.cover_image size="l"}} 1000w,
|
|
14
|
+
{{img_url @site.cover_image size="xl"}} 2000w"
|
|
15
|
+
sizes="100vw"
|
|
16
|
+
src="{{img_url @site.cover_image size="xl"}}"
|
|
17
|
+
alt=""
|
|
18
|
+
/>
|
|
24
19
|
{{/if}}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
<h1 class="site-title">
|
|
21
|
+
{{#if @site.logo}}
|
|
22
|
+
<img class="site-logo" src="{{img_url @site.logo size="m"}}" alt="{{@site.title}}" />
|
|
23
|
+
{{else}}
|
|
24
|
+
{{@site.title}}
|
|
25
|
+
{{/if}}
|
|
26
|
+
</h1>
|
|
27
|
+
<p>{{@site.description}}</p>
|
|
28
|
+
</div>
|
|
29
|
+
{{/match}}
|
|
28
30
|
|
|
29
31
|
{{!-- The main content area --}}
|
|
30
32
|
<main id="site-main" class="site-main outer">
|
|
31
33
|
<div class="inner posts">
|
|
32
34
|
|
|
33
|
-
<div class="post-feed">
|
|
35
|
+
<div class="post-feed{{#match @custom.feed_layout "List"}} list{{/match}}">
|
|
34
36
|
{{#foreach posts}}
|
|
35
37
|
|
|
36
38
|
{{!-- The tag below includes the markup for each post - partials/post-card.hbs --}}
|