mirror of
https://github.com/GenZmeY/casper-i18n.git
synced 2025-07-12 16:56:06 +00:00
Compare commits
88 Commits
Author | SHA1 | Date | |
---|---|---|---|
df2d20caab | |||
c6cb667fea | |||
a1d9eae840 | |||
59eefa3659 | |||
78bde5f3dc | |||
e637d809f6 | |||
e4793cc743 | |||
cd7016493e | |||
7421cff4fe | |||
c465d95e14 | |||
c1c6fed941 | |||
5664f81564 | |||
8838afe43f | |||
f53b6b3435 | |||
be77dad00e | |||
408cf0cc1e | |||
cfdc8a3b85 | |||
e6a24de5c4 | |||
6d0a3a8899 | |||
b54c3debd4 | |||
0e0589cb04 | |||
5bfc82bf0c | |||
d3ffc71b34 | |||
871fc4075f | |||
6f37e5a148 | |||
adc055495c | |||
2ed7ea8f13 | |||
4ddbaae803 | |||
7e0e45c643 | |||
e0771bfc7e | |||
8f1a15296a | |||
2bd82a30e8 | |||
feb7f3aac6 | |||
eed15fd9a5 | |||
201b1924cf | |||
387a2aa3f0 | |||
690ca22fb7 | |||
31d43860ac | |||
14f7cc4e31 | |||
7646f90556 | |||
8e17cdc1fb | |||
2da322d93b | |||
709c7196b9 | |||
c97b847002 | |||
7d37adb3cd | |||
4fe7010f4e | |||
6bf34a5a70 | |||
c9a54e25ab | |||
3281f75945 | |||
c8abe3a7c4 | |||
150b698b1c | |||
9ff3aa7858 | |||
8886056719 | |||
93628dc7f0 | |||
702b2cbf1f | |||
e5969f93da | |||
9e29e145fc | |||
74ae3d5140 | |||
1ec7a12d43 | |||
9ec0f08a48 | |||
b09e846fd2 | |||
92d9174b24 | |||
c27fc17844 | |||
d9cf22a0f7 | |||
7c87383bc6 | |||
09d701c4bc | |||
aec67d8b5f | |||
f55e2b0266 | |||
fee94ba192 | |||
bf4b8d7f15 | |||
98543dd068 | |||
5063d40a32 | |||
7c8cba7fab | |||
e253954051 | |||
4c7fced3aa | |||
fb9f0e6804 | |||
88e3db9d3b | |||
7733f0db63 | |||
1c5db5c027 | |||
e4afcc233f | |||
a66beb4e10 | |||
c82e1cb035 | |||
065849105b | |||
a1fc6090d2 | |||
68b0270ed5 | |||
6d56e5866e | |||
8993409296 | |||
307c334cd5 |
4
.github/workflows/deploy-theme.yml
vendored
4
.github/workflows/deploy-theme.yml
vendored
@ -7,8 +7,8 @@ jobs:
|
|||||||
deploy:
|
deploy:
|
||||||
runs-on: ubuntu-18.04
|
runs-on: ubuntu-18.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@master
|
- uses: actions/checkout@v2
|
||||||
- uses: TryGhost/action-deploy-theme@v1.2.0
|
- uses: TryGhost/action-deploy-theme@v1.2.1
|
||||||
with:
|
with:
|
||||||
api-url: ${{ secrets.GHOST_ADMIN_API_URL }}
|
api-url: ${{ secrets.GHOST_ADMIN_API_URL }}
|
||||||
api-key: ${{ secrets.GHOST_ADMIN_API_KEY }}
|
api-key: ${{ secrets.GHOST_ADMIN_API_KEY }}
|
||||||
|
15
.github/workflows/test.yml
vendored
Normal file
15
.github/workflows/test.yml
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
name: Test
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- 'renovate/*'
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event_name == 'push' || (github.event_name == 'pull_request' && !startsWith(github.head_ref, 'renovate/'))
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- run: yarn
|
||||||
|
- run: yarn test:ci
|
11
.travis.yml
11
.travis.yml
@ -1,11 +0,0 @@
|
|||||||
dist: xenial
|
|
||||||
language: node_js
|
|
||||||
node_js:
|
|
||||||
- 10
|
|
||||||
|
|
||||||
cache: yarn
|
|
||||||
|
|
||||||
# Don't run builds for renovate PRs
|
|
||||||
if: NOT head_branch =~ ^renovate
|
|
||||||
|
|
||||||
|
|
2
LICENSE
2
LICENSE
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2013-2019 Ghost Foundation
|
Copyright (c) 2013-2020 Ghost Foundation
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person
|
Permission is hereby granted, free of charge, to any person
|
||||||
obtaining a copy of this software and associated documentation
|
obtaining a copy of this software and associated documentation
|
||||||
|
@ -54,8 +54,7 @@ yarn zip
|
|||||||
# PostCSS Features Used
|
# PostCSS Features Used
|
||||||
|
|
||||||
- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser.
|
- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser.
|
||||||
- Variables - Simple pure CSS variables
|
- [Color Mod](https://github.com/jonathantneal/postcss-color-mod-function)
|
||||||
- [Color Function](https://github.com/postcss/postcss-color-function)
|
|
||||||
|
|
||||||
|
|
||||||
# SVG Icons
|
# SVG Icons
|
||||||
@ -67,4 +66,4 @@ You can add your own SVG icons in the same manner.
|
|||||||
|
|
||||||
# Copyright & License
|
# Copyright & License
|
||||||
|
|
||||||
Copyright (c) 2013-2019 Ghost Foundation - Released under the [MIT license](LICENSE).
|
Copyright (c) 2013-2020 Ghost Foundation - Released under the [MIT license](LICENSE).
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
!function(n){"use strict";n.fn.fitVids=function(e){var i={customSelector:null,ignore:null};if(!document.getElementById("fit-vids-style")){var t=document.head||document.getElementsByTagName("head")[0],r=document.createElement("div");r.innerHTML='<p>x</p><style id="fit-vids-style">.fluid-width-video-container{flex-grow: 1;width:100%;}.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}</style>',t.appendChild(r.childNodes[1])}return e&&n.extend(i,e),this.each(function(){var e=['iframe[src*="player.vimeo.com"]','iframe[src*="youtube.com"]','iframe[src*="youtube-nocookie.com"]','iframe[src*="kickstarter.com"][src*="video.html"]',"object","embed"];i.customSelector&&e.push(i.customSelector);var r=".fitvidsignore";i.ignore&&(r=r+", "+i.ignore);var t=n(this).find(e.join(","));(t=(t=t.not("object object")).not(r)).each(function(){var e=n(this);if(!(0<e.parents(r).length||"embed"===this.tagName.toLowerCase()&&e.parent("object").length||e.parent(".fluid-width-video-wrapper").length)){e.css("height")||e.css("width")||!isNaN(e.attr("height"))&&!isNaN(e.attr("width"))||(e.attr("height",9),e.attr("width",16));var t=("object"===this.tagName.toLowerCase()||e.attr("height")&&!isNaN(parseInt(e.attr("height"),10))?parseInt(e.attr("height"),10):e.height())/(isNaN(parseInt(e.attr("width"),10))?e.width():parseInt(e.attr("width"),10));if(!e.attr("name")){var i="fitvid"+n.fn.fitVids._count;e.attr("name",i),n.fn.fitVids._count++}e.wrap('<div class="fluid-width-video-container"><div class="fluid-width-video-wrapper"></div></div>').parent(".fluid-width-video-wrapper").css("padding-top",100*t+"%"),e.removeAttr("height").removeAttr("width")}})})},n.fn.fitVids._count=0}(window.jQuery||window.Zepto),function(e,t){t.addEventListener("DOMContentLoaded",function(){t.querySelectorAll(".kg-gallery-image img").forEach(function(e){var t=e.closest(".kg-gallery-image"),i=e.attributes.width.value/e.attributes.height.value;t.style.flex=i+" 1 0%"})})}(window,document),function(t,i){var r=i.querySelector("link[rel=next]");if(r){var n=i.querySelector(".post-feed");if(n){var o=300,s=!1,a=!1,d=t.scrollY,l=t.innerHeight,c=i.documentElement.scrollHeight;t.addEventListener("scroll",f,{passive:!0}),t.addEventListener("resize",v),h()}}function u(){if(404===this.status)return t.removeEventListener("scroll",f),void t.removeEventListener("resize",v);this.response.querySelectorAll(".post-card").forEach(function(e){n.appendChild(e)});var e=this.response.querySelector("link[rel=next]");e?r.href=e.href:(t.removeEventListener("scroll",f),t.removeEventListener("resize",v)),c=i.documentElement.scrollHeight,a=s=!1}function e(){if(!a)if(d+l<=c-o)s=!1;else{a=!0;var e=new t.XMLHttpRequest;e.responseType="document",e.addEventListener("load",u),e.open("GET",r.href),e.send(null)}}function h(){s||t.requestAnimationFrame(e),s=!0}function f(){d=t.scrollY,h()}function v(){l=t.innerHeight,c=i.documentElement.scrollHeight,h()}}(window,document),function(s,a){s.Casper||(s.Casper={}),s.Casper.stickyNavTitle=function(e){var t=a.querySelector(e.navSelector),i=a.querySelector(e.titleSelector),r=s.scrollY,n=!1;function o(){i.getBoundingClientRect().top+s.scrollY+(i.offsetHeight+35)<=r?t.classList.add(e.activeClass):t.classList.remove(e.activeClass),n=!1}s.addEventListener("scroll",function(){r=s.scrollY,function(){n||requestAnimationFrame(o);n=!0}()},{passive:!0}),o()}}(window,document);
|
!function(o){"use strict";o.fn.fitVids=function(e){var t,i,n={customSelector:null,ignore:null};return document.getElementById("fit-vids-style")||(t=document.head||document.getElementsByTagName("head")[0],(i=document.createElement("div")).innerHTML='<p>x</p><style id="fit-vids-style">.fluid-width-video-container{flex-grow: 1;width:100%;}.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}</style>',t.appendChild(i.childNodes[1])),e&&o.extend(n,e),this.each(function(){var e=['iframe[src*="player.vimeo.com"]','iframe[src*="youtube.com"]','iframe[src*="youtube-nocookie.com"]','iframe[src*="kickstarter.com"][src*="video.html"]',"object","embed"];n.customSelector&&e.push(n.customSelector);var r=".fitvidsignore";n.ignore&&(r=r+", "+n.ignore);var t=o(this).find(e.join(","));(t=(t=t.not("object object")).not(r)).each(function(){var e,t,i=o(this);0<i.parents(r).length||"embed"===this.tagName.toLowerCase()&&i.parent("object").length||i.parent(".fluid-width-video-wrapper").length||(i.css("height")||i.css("width")||!isNaN(i.attr("height"))&&!isNaN(i.attr("width"))||(i.attr("height",9),i.attr("width",16)),e=("object"===this.tagName.toLowerCase()||i.attr("height")&&!isNaN(parseInt(i.attr("height"),10))?parseInt(i.attr("height"),10):i.height())/(isNaN(parseInt(i.attr("width"),10))?i.width():parseInt(i.attr("width"),10)),i.attr("name")||(t="fitvid"+o.fn.fitVids._count,i.attr("name",t),o.fn.fitVids._count++),i.wrap('<div class="fluid-width-video-container"><div class="fluid-width-video-wrapper"></div></div>').parent(".fluid-width-video-wrapper").css("padding-top",100*e+"%"),i.removeAttr("height").removeAttr("width"))})})},o.fn.fitVids._count=0}(window.jQuery||window.Zepto),function(e){e.addEventListener("DOMContentLoaded",function(){e.querySelectorAll(".kg-gallery-image img").forEach(function(e){var t=e.closest(".kg-gallery-image"),i=e.attributes.width.value/e.attributes.height.value;t.style.flex=i+" 1 0%"})})}((window,document)),function(t,i){var r,n,o,s,a,d,l,c=i.querySelector("link[rel=next]");function u(){if(404===this.status)return t.removeEventListener("scroll",f),void t.removeEventListener("resize",v);this.response.querySelectorAll(".post-card").forEach(function(e){r.appendChild(i.importNode(e,!0))});var e=this.response.querySelector("link[rel=next]");e?c.href=e.href:(t.removeEventListener("scroll",f),t.removeEventListener("resize",v)),l=i.documentElement.scrollHeight,s=o=!1}function e(){var e;s||(a+d<=l-n?o=!1:(s=!0,(e=new t.XMLHttpRequest).responseType="document",e.addEventListener("load",u),e.open("GET",c.href),e.send(null)))}function h(){o||t.requestAnimationFrame(e),o=!0}function f(){a=t.scrollY,h()}function v(){d=t.innerHeight,l=i.documentElement.scrollHeight,h()}!c||(r=i.querySelector(".post-feed"))&&(s=o=!(n=300),a=t.scrollY,d=t.innerHeight,l=i.documentElement.scrollHeight,t.addEventListener("scroll",f,{passive:!0}),t.addEventListener("resize",v),h())}(window,document),function(s,a){s.Casper||(s.Casper={}),s.Casper.stickyNavTitle=function(e){var t=a.querySelector(e.navSelector),i=a.querySelector(e.titleSelector),r=s.scrollY,n=!1;function o(){i.getBoundingClientRect().top+s.scrollY+(i.offsetHeight+35)<=r?t.classList.add(e.activeClass):t.classList.remove(e.activeClass),n=!1}s.addEventListener("scroll",function(){r=s.scrollY,function(){n||requestAnimationFrame(o);n=!0}()},{passive:!0}),o()}}(window,document);
|
||||||
//# sourceMappingURL=casper.js.map
|
//# sourceMappingURL=casper.js.map
|
File diff suppressed because one or more lines are too long
@ -1,2 +1,2 @@
|
|||||||
a,abbr,acronym,address,applet,article,aside,audio,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}img{max-width:100%}html{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn,em,i{font-style:italic}h1{margin:.67em 0;font-size:2em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}mark{background-color:#fdffb6}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;color:inherit;font:inherit}button{overflow:visible;border:none}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input:focus{outline:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{padding:0;border:0}textarea{overflow:auto}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}html{overflow-y:scroll;font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body,html{overflow-x:hidden}body{color:#313b3f;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1.6rem;line-height:1.6em;font-weight:400;font-style:normal;letter-spacing:0;text-rendering:optimizeLegibility;background:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on}::-moz-selection{text-shadow:none;background:#cbeafb}::selection{text-shadow:none;background:#cbeafb}hr{position:relative;display:block;width:100%;margin:2.5em 0 3.5em;padding:0;height:1px;border:0;border-top:1px solid #e3e9ed}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{margin:0;padding:0;border:0}textarea{resize:vertical}blockquote,dl,ol,p,ul{margin:0 0 1.5em}ol,ul{padding-left:1.3em;padding-right:1.5em}ol ol,ol ul,ul ol,ul ul{margin:.5em 0 1em}ul{list-style:disc}ol{list-style:decimal}ol,ul{max-width:100%}li{margin:.5em 0;padding-left:.3em;line-height:1.6em}dt{float:left;margin:0 20px 0 0;width:120px;color:#15171a;font-weight:500;text-align:right}dd{margin:0 0 5px;text-align:left}blockquote{margin:1.5em 0;padding:0 1.6em;border-left:.5em solid #e5eff5}blockquote p{margin:.8em 0;font-size:1.2em;font-weight:300}blockquote small{display:inline-block;margin:.8em 0 .8em 1.5em;font-size:.9em;opacity:.8}blockquote small:before{content:"\2014 \00A0"}blockquote cite{font-weight:700}blockquote cite a{font-weight:400}a{color:#26a8ed;text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,h5,h6{margin-top:0;line-height:1.15;font-weight:600;text-rendering:optimizeLegibility}h1{margin:0 0 .5em;font-size:5.5rem;font-weight:600}@media (max-width:500px){h1{font-size:2.2rem}}h2{margin:1.5em 0 .5em;font-size:2.2rem}@media (max-width:500px){h2{font-size:1.8rem}}h3{margin:1.5em 0 .5em;font-size:1.8rem;font-weight:500}@media (max-width:500px){h3{font-size:1.7rem}}h4{margin:1.5em 0 .5em;font-size:1.6rem;font-weight:500}h5,h6{margin:1.5em 0 .5em;font-size:1.4rem;font-weight:500}
|
:root{--blue:#3eb0ef;--green:#a4d037;--purple:#ad26b4;--yellow:#fecd35;--red:#f05230;--darkgrey:#15171a;--midgrey:#738a94;--lightgrey:#c5d2d9;--whitegrey:#e5eff5;--pink:#fa3a57;--brown:#a3821a;--darkmode:#1a1c20}a,abbr,acronym,address,applet,article,aside,audio,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}img{max-width:100%}html{box-sizing:border-box;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{box-sizing:inherit}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn,em,i{font-style:italic}h1{margin:.67em 0;font-size:2em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}mark{background-color:#fdffb6}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;color:inherit;font:inherit}button{overflow:visible;border:none}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input:focus{outline:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{padding:0;border:0}textarea{overflow:auto}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}html{overflow-y:scroll;font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body,html{overflow-x:hidden}body{color:#303a3e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1.6rem;line-height:1.6em;font-weight:400;font-style:normal;letter-spacing:0;text-rendering:optimizeLegibility;background:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on}::-moz-selection{text-shadow:none;background:#cbeafb}::selection{text-shadow:none;background:#cbeafb}hr{position:relative;display:block;width:100%;margin:2.5em 0 3.5em;padding:0;height:1px;border:0;border-top:1px solid #e4eaed}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{margin:0;padding:0;border:0}textarea{resize:vertical}blockquote,dl,ol,p,ul{margin:0 0 1.5em}ol,ul{padding-left:1.3em;padding-right:1.5em}ol ol,ol ul,ul ol,ul ul{margin:.5em 0 1em}ul{list-style:disc}ol{list-style:decimal}ol,ul{max-width:100%}li{margin:.5em 0;padding-left:.3em;line-height:1.6em}dt{float:left;margin:0 20px 0 0;width:120px;color:var(--darkgrey);font-weight:500;text-align:right}dd{margin:0 0 5px;text-align:left}blockquote{margin:1.5em 0;padding:0 1.6em;border-left:.5em solid var(--whitegrey)}blockquote p{margin:.8em 0;font-size:1.2em;font-weight:300}blockquote small{display:inline-block;margin:.8em 0 .8em 1.5em;font-size:.9em;opacity:.8}blockquote small:before{content:"\2014 \00A0"}blockquote cite{font-weight:700}blockquote cite a{font-weight:400}a{color:#26a6ed;text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,h5,h6{margin-top:0;line-height:1.15;font-weight:600;text-rendering:optimizeLegibility}h1{margin:0 0 .5em;font-size:5.5rem;font-weight:600}@media (max-width:500px){h1{font-size:2.2rem}}h2{margin:1.5em 0 .5em;font-size:2.2rem}@media (max-width:500px){h2{font-size:1.8rem}}h3{margin:1.5em 0 .5em;font-size:1.8rem;font-weight:500}@media (max-width:500px){h3{font-size:1.7rem}}h4{margin:1.5em 0 .5em;font-size:1.6rem;font-weight:500}h5,h6{margin:1.5em 0 .5em;font-size:1.4rem;font-weight:500}
|
||||||
/*# sourceMappingURL=global.css.map */
|
/*# sourceMappingURL=global.css.map */
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -14,7 +14,7 @@
|
|||||||
--whitegrey: #e5eff5;
|
--whitegrey: #e5eff5;
|
||||||
--pink: #fa3a57;
|
--pink: #fa3a57;
|
||||||
--brown: #a3821a;
|
--brown: #a3821a;
|
||||||
--darkmode: color(var(--darkgrey) l(+2%));
|
--darkmode: color-mod(var(--darkgrey) l(+2%));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reset
|
/* Reset
|
||||||
@ -281,7 +281,7 @@ html {
|
|||||||
}
|
}
|
||||||
body {
|
body {
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
color: color(var(--midgrey) l(-30%));
|
color: color-mod(var(--midgrey) l(-30%));
|
||||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
||||||
font-size: 1.6rem;
|
font-size: 1.6rem;
|
||||||
line-height: 1.6em;
|
line-height: 1.6em;
|
||||||
@ -298,7 +298,7 @@ body {
|
|||||||
|
|
||||||
::selection {
|
::selection {
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
background: color(var(--blue) lightness(+30%));
|
background: color-mod(var(--blue) lightness(+30%));
|
||||||
}
|
}
|
||||||
|
|
||||||
hr {
|
hr {
|
||||||
@ -309,7 +309,7 @@ hr {
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
border: 0;
|
border: 0;
|
||||||
border-top: 1px solid color(var(--lightgrey) l(+10%));
|
border-top: 1px solid color-mod(var(--lightgrey) l(+10%));
|
||||||
}
|
}
|
||||||
|
|
||||||
audio,
|
audio,
|
||||||
@ -416,7 +416,7 @@ blockquote cite a {
|
|||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: color(var(--blue) l(-5%));
|
color: color-mod(var(--blue) l(-5%));
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ body {
|
|||||||
margin-top: 64px;
|
margin-top: 64px;
|
||||||
padding-bottom: 12px;
|
padding-bottom: 12px;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background: color(var(--darkgrey) l(-5%)) no-repeat center center;
|
background: color-mod(var(--darkgrey) l(-5%)) no-repeat center center;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,6 +205,7 @@ body {
|
|||||||
.site-home-header .site-description {
|
.site-home-header .site-description {
|
||||||
font-size: 2.2rem;
|
font-size: 2.2rem;
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -235,7 +236,7 @@ body {
|
|||||||
|
|
||||||
.site-archive-header .no-image .site-header-content {
|
.site-archive-header .no-image .site-header-content {
|
||||||
padding: 5vw 0 10px;
|
padding: 5vw 0 10px;
|
||||||
border-bottom: 1px solid color(var(--lightgrey) l(+12%));
|
border-bottom: 1px solid color-mod(var(--lightgrey) l(+12%));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -249,7 +250,7 @@ body {
|
|||||||
|
|
||||||
@media (max-width: 500px) {
|
@media (max-width: 500px) {
|
||||||
.site-home-header .site-title {
|
.site-home-header .site-title {
|
||||||
font-size: 3.2rem;
|
font-size: 4.2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-home-header .site-description {
|
.site-home-header .site-description {
|
||||||
@ -257,8 +258,19 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.site-archive-header .site-header-content {
|
.site-archive-header .site-header-content {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
min-height: unset;
|
min-height: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.site-archive-header .site-title {
|
||||||
|
font-size: 4.2rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.site-archive-header .no-image .site-header-content {
|
||||||
|
padding: 12vw 0 20px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -271,7 +283,7 @@ body {
|
|||||||
right: 0;
|
right: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
background: color(var(--darkgrey) l(-5%));
|
background: color-mod(var(--darkgrey) l(-5%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-nav {
|
.site-nav {
|
||||||
@ -280,11 +292,33 @@ body {
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
overflow-y: hidden;
|
overflow: hidden;
|
||||||
height: 64px;
|
height: 64px;
|
||||||
font-size: 1.3rem;
|
font-size: 1.3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.site-nav-left-wrapper {
|
||||||
|
position: relative;
|
||||||
|
flex: 1 0 auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.site-header-background:not(.responsive-header-img) .site-nav-left-wrapper:after,
|
||||||
|
.site-nav-main .site-nav-left-wrapper:after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
z-index: 1000;
|
||||||
|
width: 40px;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.site-header-background:not(.responsive-header-img) .site-nav-left-wrapper:after,
|
||||||
|
.site-nav-main .site-nav-left-wrapper:after {
|
||||||
|
right: 0;
|
||||||
|
background: linear-gradient(to right, color-mod(var(--darkgrey) l(-5%) a(0)) 0%,color-mod(var(--darkgrey) l(-5%)) 100%);
|
||||||
|
}
|
||||||
|
|
||||||
.site-nav-left {
|
.site-nav-left {
|
||||||
flex: 1 0 auto;
|
flex: 1 0 auto;
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -302,26 +336,8 @@ body {
|
|||||||
-ms-overflow-scrolling: touch;
|
-ms-overflow-scrolling: touch;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 700px) {
|
.site-nav-left .nav li:last-of-type {
|
||||||
.site-header-background:not(.responsive-header-img) .site-nav:after,
|
padding-right: 20px;
|
||||||
.site-nav-main .site-nav:after {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
z-index: 1000;
|
|
||||||
width: 40px;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.site-header-background:not(.responsive-header-img) .site-nav:after,
|
|
||||||
.site-nav-main .site-nav:after {
|
|
||||||
right: 0;
|
|
||||||
background: linear-gradient(to right, color(var(--darkgrey) l(-5%) a(0)) 0%,color(var(--darkgrey) l(-5%)) 100%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav li:last-of-type {
|
|
||||||
padding-right: 20px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Site Nav Hack Explanation (above):
|
/* Site Nav Hack Explanation (above):
|
||||||
@ -448,24 +464,37 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
|
|||||||
}
|
}
|
||||||
|
|
||||||
.site-nav-right {
|
.site-nav-right {
|
||||||
flex-shrink: 0;
|
flex: 0 1 auto;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 10px 0;
|
padding: 10px 0;
|
||||||
height: 64px;
|
height: 64px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.site-nav-right .nav {
|
||||||
|
position: relative;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.site-nav-right .nav a {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.site-nav-right .nav a:before {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.site-nav-right .nav li:last-of-type a {
|
||||||
|
margin-right: -12px;
|
||||||
|
}
|
||||||
|
|
||||||
.social-links {
|
.social-links {
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.social-links a:last-of-type {
|
|
||||||
padding-right: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.social-link {
|
.social-link {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@ -500,10 +529,10 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
|
|||||||
|
|
||||||
.subscribe-button {
|
.subscribe-button {
|
||||||
display: block;
|
display: block;
|
||||||
|
margin: 0 0 0 10px;
|
||||||
padding: 4px 10px;
|
padding: 4px 10px;
|
||||||
border: #fff 1px solid;
|
border: #fff 1px solid;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: 1.2rem;
|
|
||||||
line-height: 1em;
|
line-height: 1em;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
@ -514,7 +543,12 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.site-nav-right .nav + .subscribe-button {
|
||||||
|
margin-left: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
.rss-button {
|
.rss-button {
|
||||||
|
padding: 10px 8px;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -590,7 +624,7 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
|
|||||||
margin: 0 0 40px;
|
margin: 0 0 40px;
|
||||||
padding: 0 20px 40px;
|
padding: 0 20px 40px;
|
||||||
min-height: 220px;
|
min-height: 220px;
|
||||||
border-bottom: 1px solid color(var(--lightgrey) l(+12%));
|
border-bottom: 1px solid color-mod(var(--lightgrey) l(+12%));
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -677,7 +711,7 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
|
|||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background: color(var(--lightgrey) l(+10%));
|
background: color-mod(var(--lightgrey) l(+10%));
|
||||||
border-radius: 100%;
|
border-radius: 100%;
|
||||||
|
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
@ -748,7 +782,7 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
margin: 2px 0 0 6px;
|
margin: 2px 0 0 6px;
|
||||||
color: color(var(--midgrey) l(+10%));
|
color: color-mod(var(--midgrey) l(+10%));
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
line-height: 1.4em;
|
line-height: 1.4em;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@ -761,7 +795,7 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
|
|||||||
}
|
}
|
||||||
|
|
||||||
.post-card-byline-content a {
|
.post-card-byline-content a {
|
||||||
color: color(var(--darkgrey) l(+20%));
|
color: color-mod(var(--darkgrey) l(+20%));
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -779,7 +813,7 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
color: color(var(--midgrey) l(-10%));
|
color: color-mod(var(--midgrey) l(-10%));
|
||||||
font-size: 1.3rem;
|
font-size: 1.3rem;
|
||||||
line-height: 1.4em;
|
line-height: 1.4em;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
@ -816,7 +850,7 @@ make sure this only happens on large viewports / desktop-ish devices.
|
|||||||
}
|
}
|
||||||
|
|
||||||
.post-card-large:hover {
|
.post-card-large:hover {
|
||||||
border-bottom-color: color(var(--lightgrey) l(+10%));
|
border-bottom-color: color-mod(var(--lightgrey) l(+10%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-card-large:not(.no-image) .post-card-header {
|
.post-card-large:not(.no-image) .post-card-header {
|
||||||
@ -946,7 +980,7 @@ make sure this only happens on large viewports / desktop-ish devices.
|
|||||||
|
|
||||||
.post-full-title {
|
.post-full-title {
|
||||||
margin: 0 0 0.2em;
|
margin: 0 0 0.2em;
|
||||||
color: color(var(--darkgrey) l(-5%));
|
color: color-mod(var(--darkgrey) l(-5%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-custom-excerpt {
|
.post-full-custom-excerpt {
|
||||||
@ -970,7 +1004,7 @@ make sure this only happens on large viewports / desktop-ish devices.
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
margin: 25px 0 50px;
|
margin: 25px 0 50px;
|
||||||
background: color(var(--lightgrey) l(+10%));
|
background: color-mod(var(--lightgrey) l(+10%));
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1070,7 +1104,7 @@ make sure this only happens on large viewports / desktop-ish devices.
|
|||||||
|
|
||||||
.post-full-content strong,
|
.post-full-content strong,
|
||||||
.post-full-content em {
|
.post-full-content em {
|
||||||
color: color(var(--darkgrey) l(-5%));
|
color: color-mod(var(--darkgrey) l(-5%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-content small {
|
.post-full-content small {
|
||||||
@ -1135,7 +1169,7 @@ Usage (In Ghost editor):
|
|||||||
.post-full-content blockquote {
|
.post-full-content blockquote {
|
||||||
margin: 0 0 1.5em;
|
margin: 0 0 1.5em;
|
||||||
padding: 0 1.5em;
|
padding: 0 1.5em;
|
||||||
border-left: #3eb0ef 3px solid;
|
border-left: color-mod(var(--blue)) 3px solid;
|
||||||
}
|
}
|
||||||
@media (max-width: 500px) {
|
@media (max-width: 500px) {
|
||||||
.post-full-content blockquote {
|
.post-full-content blockquote {
|
||||||
@ -1173,16 +1207,16 @@ Usage (In Ghost editor):
|
|||||||
margin: 1.5em 0 3em;
|
margin: 1.5em 0 3em;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
border: color(var(--darkgrey) l(-10%)) 1px solid;
|
border: color-mod(var(--darkgrey) l(-10%)) 1px solid;
|
||||||
color: var(--whitegrey);
|
color: var(--whitegrey);
|
||||||
font-size: 1.4rem;
|
font-size: 1.4rem;
|
||||||
line-height: 1.5em;
|
line-height: 1.5em;
|
||||||
background: color(var(--darkgrey) l(-3%));
|
background: color-mod(var(--darkgrey) l(-3%));
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-content pre ::selection {
|
.post-full-content pre ::selection {
|
||||||
color: color(var(--midgrey) l(-25%));
|
color: color-mod(var(--midgrey) l(-25%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-content pre code {
|
.post-full-content pre code {
|
||||||
@ -1213,7 +1247,7 @@ Usage (In Ghost editor):
|
|||||||
margin-left: -10px;
|
margin-left: -10px;
|
||||||
width: 1px;
|
width: 1px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
background: color(var(--lightgrey) l(+10%));
|
background: color-mod(var(--lightgrey) l(+10%));
|
||||||
box-shadow: #fff 0 0 0 5px;
|
box-shadow: #fff 0 0 0 5px;
|
||||||
transform: rotate(45deg);
|
transform: rotate(45deg);
|
||||||
}
|
}
|
||||||
@ -1228,7 +1262,7 @@ Usage (In Ghost editor):
|
|||||||
.post-full-content h4,
|
.post-full-content h4,
|
||||||
.post-full-content h5,
|
.post-full-content h5,
|
||||||
.post-full-content h6 {
|
.post-full-content h6 {
|
||||||
color: color(var(--darkgrey) l(-5%));
|
color: color-mod(var(--darkgrey) l(-5%));
|
||||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1386,7 +1420,8 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
.post-full-title {
|
.post-full-title {
|
||||||
margin-top: 0.2em;
|
margin-top: 0.2em;
|
||||||
font-size: 3.3rem;
|
font-size: 4.2rem;
|
||||||
|
line-height: 1.05em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-image {
|
.post-full-image {
|
||||||
@ -1447,13 +1482,13 @@ Usage (In Ghost editor):
|
|||||||
letter-spacing: 0.2px;
|
letter-spacing: 0.2px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
background-color: color(var(--whitegrey) l(+4%));
|
background-color: color-mod(var(--whitegrey) l(+4%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-content table th,
|
.post-full-content table th,
|
||||||
.post-full-content table td {
|
.post-full-content table td {
|
||||||
padding: 6px 12px;
|
padding: 6px 12px;
|
||||||
border: color(var(--whitegrey) l(-1%) s(-5%)) 1px solid;
|
border: color-mod(var(--whitegrey) l(-1%) s(-5%)) 1px solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1465,7 +1500,7 @@ Usage (In Ghost editor):
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin: 35px 0 0;
|
margin: 35px 0 0;
|
||||||
padding-top: 15px;
|
padding-top: 15px;
|
||||||
border-top: 1px solid color(var(--lightgrey) l(+10%));
|
border-top: 1px solid color-mod(var(--lightgrey) l(+10%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-byline-content {
|
.post-full-byline-content {
|
||||||
@ -1481,7 +1516,7 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
.post-full-byline-meta {
|
.post-full-byline-meta {
|
||||||
margin: 2px 0 0;
|
margin: 2px 0 0;
|
||||||
color: color(var(--midgrey) l(+10%));
|
color: color-mod(var(--midgrey) l(+10%));
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
line-height: 1.2em;
|
line-height: 1.2em;
|
||||||
letter-spacing: 0.2px;
|
letter-spacing: 0.2px;
|
||||||
@ -1496,7 +1531,7 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
.post-full-byline-meta h4 a {
|
.post-full-byline-meta h4 a {
|
||||||
color: color(var(--darkgrey) l(+10%));
|
color: color-mod(var(--darkgrey) l(+10%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-byline-meta h4 a:hover {
|
.post-full-byline-meta h4 a:hover {
|
||||||
@ -1576,7 +1611,7 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
.author-card .author-info p {
|
.author-card .author-info p {
|
||||||
margin: 4px 0 0;
|
margin: 4px 0 0;
|
||||||
color: color(var(--midgrey) l(-10%));
|
color: color-mod(var(--midgrey) l(-10%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.author-card .author-info .bio h2 {
|
.author-card .author-info .bio h2 {
|
||||||
@ -1630,8 +1665,12 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
@media (max-width: 500px) {
|
@media (max-width: 500px) {
|
||||||
.author-avatar {
|
.author-avatar {
|
||||||
width: 32px;
|
width: 36px;
|
||||||
height: 32px;
|
height: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-full-byline {
|
||||||
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-byline-meta {
|
.post-full-byline-meta {
|
||||||
@ -1650,9 +1689,9 @@ Usage (In Ghost editor):
|
|||||||
.subscribe-form {
|
.subscribe-form {
|
||||||
margin: 1.5em 0;
|
margin: 1.5em 0;
|
||||||
padding: 6.5vw 7vw 8vw;
|
padding: 6.5vw 7vw 8vw;
|
||||||
border: color(var(--lightgrey) l(+10%)) 1px solid;
|
border: color-mod(var(--lightgrey) l(+10%)) 1px solid;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background: linear-gradient(color(var(--whitegrey) l(+6%)), color(var(--whitegrey) l(+4%)));
|
background: linear-gradient(color-mod(var(--whitegrey) l(+6%)), color-mod(var(--whitegrey) l(+4%)));
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1690,7 +1729,7 @@ Usage (In Ghost editor):
|
|||||||
display: block;
|
display: block;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: color(var(--lightgrey) l(+7%)) 1px solid;
|
border: color-mod(var(--lightgrey) l(+7%)) 1px solid;
|
||||||
color: var(--midgrey);
|
color: var(--midgrey);
|
||||||
font-size: 1.8rem;
|
font-size: 1.8rem;
|
||||||
line-height: 1em;
|
line-height: 1em;
|
||||||
@ -1704,7 +1743,7 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
.subscribe-email:focus {
|
.subscribe-email:focus {
|
||||||
outline: 0;
|
outline: 0;
|
||||||
border-color: color(var(--lightgrey) l(-2%));
|
border-color: color-mod(var(--lightgrey) l(-2%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-form button {
|
.subscribe-form button {
|
||||||
@ -1720,10 +1759,10 @@ Usage (In Ghost editor):
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background: linear-gradient(
|
background: linear-gradient(
|
||||||
color(var(--blue) whiteness(+7%)),
|
color-mod(var(--blue) whiteness(+7%)),
|
||||||
color(var(--blue) lightness(-7%) saturation(-10%)) 60%,
|
color-mod(var(--blue) lightness(-7%) saturation(-10%)) 60%,
|
||||||
color(var(--blue) lightness(-7%) saturation(-10%)) 90%,
|
color-mod(var(--blue) lightness(-7%) saturation(-10%)) 90%,
|
||||||
color(var(--blue) lightness(-4%) saturation(-10%))
|
color-mod(var(--blue) lightness(-4%) saturation(-10%))
|
||||||
);
|
);
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
|
|
||||||
@ -1732,7 +1771,7 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
.subscribe-form button:active,
|
.subscribe-form button:active,
|
||||||
.subscribe-form button:focus {
|
.subscribe-form button:focus {
|
||||||
background: color(var(--blue) lightness(-9%) saturation(-10%));
|
background: color-mod(var(--blue) lightness(-9%) saturation(-10%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-form .button-loader,
|
.subscribe-form .button-loader,
|
||||||
@ -1772,7 +1811,7 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
.subscribe-form .success .message-success {
|
.subscribe-form .success .message-success {
|
||||||
display: block;
|
display: block;
|
||||||
color: color(var(--green) l(-5%));
|
color: color-mod(var(--green) l(-5%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-form .invalid .message-error,
|
.subscribe-form .invalid .message-error,
|
||||||
@ -1822,7 +1861,7 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
.read-next {
|
.read-next {
|
||||||
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
||||||
background: color(var(--darkgrey) l(-5%));
|
background: color-mod(var(--darkgrey) l(-5%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.read-next-feed {
|
.read-next-feed {
|
||||||
@ -1880,7 +1919,7 @@ Usage (In Ghost editor):
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
margin: 0 25px 50px;
|
margin: 0 25px 50px;
|
||||||
padding: 25px;
|
padding: 25px;
|
||||||
background: linear-gradient(color(var(--darkgrey) l(+2%)), color(var(--darkgrey) l(-5%)));
|
background: linear-gradient(color-mod(var(--darkgrey) l(+2%)), color-mod(var(--darkgrey) l(-5%)));
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2035,6 +2074,7 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
.post-full-content .kg-image {
|
.post-full-content .kg-image {
|
||||||
|
margin: 0 auto;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2067,12 +2107,13 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
.post-full-content figcaption {
|
.post-full-content figcaption {
|
||||||
margin: 1.0em 0 0;
|
margin: 1.0em auto 0;
|
||||||
color: color(var(--midgrey) l(-10%));;
|
color: color-mod(var(--midgrey) l(-10%));
|
||||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
||||||
font-size: 75%;
|
font-size: 75%;
|
||||||
line-height: 1.5em;
|
line-height: 1.5em;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
max-width: 1040px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.kg-width-full figcaption {
|
.kg-width-full figcaption {
|
||||||
@ -2143,7 +2184,6 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
.kg-bookmark-card {
|
.kg-bookmark-card {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background: var(--white);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.kg-card + .kg-bookmark-card {
|
.kg-card + .kg-bookmark-card {
|
||||||
@ -2176,7 +2216,7 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
.kg-bookmark-title {
|
.kg-bookmark-title {
|
||||||
color: color(var(--midgrey) l(-30%));
|
color: color-mod(var(--midgrey) l(-30%));
|
||||||
font-size: 1.6rem;
|
font-size: 1.6rem;
|
||||||
line-height: 1.5em;
|
line-height: 1.5em;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@ -2192,7 +2232,7 @@ Usage (In Ghost editor):
|
|||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
margin-top: 12px;
|
margin-top: 12px;
|
||||||
max-height: 48px;
|
max-height: 48px;
|
||||||
color: color(var(--midgrey) l(-10%));
|
color: color-mod(var(--midgrey) l(-10%));
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
line-height: 1.5em;
|
line-height: 1.5em;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@ -2223,7 +2263,7 @@ Usage (In Ghost editor):
|
|||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-top: 14px;
|
margin-top: 14px;
|
||||||
color: color(var(--midgrey) l(-10%));
|
color: color-mod(var(--midgrey) l(-10%));
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
@ -2316,6 +2356,10 @@ Usage (In Ghost editor):
|
|||||||
padding: 10vw 0 10px;
|
padding: 10vw 0 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.site-archive-header .author-header {
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
.site-archive-header .no-image .author-header {
|
.site-archive-header .no-image .author-header {
|
||||||
padding-bottom: 20px;
|
padding-bottom: 20px;
|
||||||
}
|
}
|
||||||
@ -2330,7 +2374,7 @@ Usage (In Ghost editor):
|
|||||||
.site-header-content .author-profile-image {
|
.site-header-content .author-profile-image {
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
margin: 5px 0 0;
|
margin: -4px 0 0;
|
||||||
width: 110px;
|
width: 110px;
|
||||||
height: 110px;
|
height: 110px;
|
||||||
box-shadow: rgba(255,255,255,0.1) 0 0 0 6px;
|
box-shadow: rgba(255,255,255,0.1) 0 0 0 6px;
|
||||||
@ -2339,10 +2383,10 @@ Usage (In Ghost editor):
|
|||||||
.author-header-content .author-bio {
|
.author-header-content .author-bio {
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
margin: 6px 0 -6px;
|
margin: 6px 0 0;
|
||||||
max-width: 46em;
|
max-width: 46em;
|
||||||
font-size: 2.0rem;
|
font-size: 2.0rem;
|
||||||
line-height: 1.4em;
|
line-height: 1.3em;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
@ -2357,6 +2401,7 @@ Usage (In Ghost editor):
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
letter-spacing: 0.2px;
|
letter-spacing: 0.2px;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.author-header-content .social-link:first-of-type {
|
.author-header-content .social-link:first-of-type {
|
||||||
@ -2374,22 +2419,22 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
.author-social-link a {
|
.author-social-link a {
|
||||||
color: var(--darkgrey);
|
color: #fff;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.no-image .author-social-link a {
|
||||||
|
color: var(--darkgrey);
|
||||||
|
}
|
||||||
|
|
||||||
.author-social-link a:hover {
|
.author-social-link a:hover {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.author-social-link {
|
|
||||||
padding: 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.author-social-link {
|
.author-social-link {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 10px 0;
|
padding: 6px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.author-location + .author-stats:before,
|
.author-location + .author-stats:before,
|
||||||
@ -2398,10 +2443,24 @@ Usage (In Ghost editor):
|
|||||||
content: "\2022";
|
content: "\2022";
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0 12px;
|
margin: 0 12px;
|
||||||
color: var(--midgrey);
|
color: #fff;
|
||||||
opacity: 0.6;
|
opacity: 0.6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.no-image .author-location + .author-stats:before,
|
||||||
|
.no-image .author-stats + .author-social-link:before,
|
||||||
|
.no-image .author-social-link + .author-social-link:before {
|
||||||
|
color: var(--midgrey);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 700px) {
|
||||||
|
.author-location,
|
||||||
|
.author-stats,
|
||||||
|
.author-stats + .author-social-link:first-of-type:before {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 500px) {
|
@media (max-width: 500px) {
|
||||||
.author-header {
|
.author-header {
|
||||||
padding: 10px 0 0;
|
padding: 10px 0 0;
|
||||||
@ -2412,23 +2471,31 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
.author-header-content {
|
.author-header-content {
|
||||||
margin-left: 20px;
|
align-items: center;
|
||||||
|
margin: 16px 0 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-header-content .author-profile-image {
|
.site-header-content .author-profile-image {
|
||||||
width: 80px;
|
width: 96px;
|
||||||
height: 80px;
|
height: 96px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.author-header-content .author-bio {
|
.author-header-content .author-bio {
|
||||||
font-size: 1.8rem;
|
font-size: 1.8rem;
|
||||||
line-height: 1.3em;
|
line-height: 1.3em;
|
||||||
letter-spacing: 0;
|
letter-spacing: 0;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.author-location,
|
.author-header-content .author-meta {
|
||||||
.author-stats {
|
margin-top: 8px;
|
||||||
display: none;
|
}
|
||||||
|
|
||||||
|
.author-location + .author-stats:before,
|
||||||
|
.author-stats + .author-social-link:before,
|
||||||
|
.author-social-link + .author-social-link:before {
|
||||||
|
display: inline;
|
||||||
|
margin: 0 6px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2436,14 +2503,15 @@ Usage (In Ghost editor):
|
|||||||
/* 9. Error Template
|
/* 9. Error Template
|
||||||
/* ---------------------------------------------------------- */
|
/* ---------------------------------------------------------- */
|
||||||
|
|
||||||
.error-template .site-main {
|
.error-content {
|
||||||
padding: 7vw 4vw;
|
padding: 14vw 4vw 6vw;
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-nav-center {
|
.site-nav-center {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
padding: 10px 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2452,18 +2520,18 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
.error-message {
|
.error-message {
|
||||||
margin-bottom: -3vw;
|
padding-bottom: 10vw;
|
||||||
padding-bottom: 5vw;
|
border-bottom: 1px solid color-mod(var(--lightgrey) l(+10%));
|
||||||
border-bottom: 1px solid color(var(--lightgrey) l(+10%));
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.error-code {
|
.error-code {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
color: var(--lightgrey);
|
||||||
font-size: 12vw;
|
font-size: 12vw;
|
||||||
line-height: 1em;
|
line-height: 1em;
|
||||||
letter-spacing: -5px;
|
letter-spacing: -5px;
|
||||||
opacity: 0.3;
|
opacity: 0.75;
|
||||||
}
|
}
|
||||||
|
|
||||||
.error-description {
|
.error-description {
|
||||||
@ -2474,20 +2542,42 @@ Usage (In Ghost editor):
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.error-link {
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 940px) {
|
||||||
|
.error-content .post-card {
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding-bottom: 0;
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 800px) {
|
@media (max-width: 800px) {
|
||||||
|
.error-content {
|
||||||
|
padding-top: 24vw;
|
||||||
|
}
|
||||||
|
.error-code {
|
||||||
|
font-size: 11.2rem;
|
||||||
|
}
|
||||||
|
.error-message {
|
||||||
|
padding-bottom: 16vw;
|
||||||
|
}
|
||||||
.error-description {
|
.error-description {
|
||||||
margin: 5px 0 0 0;
|
margin: 5px 0 0 0;
|
||||||
font-size: 1.8rem;
|
font-size: 1.8rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.error-link {
|
@media (max-width: 500px) {
|
||||||
display: inline-block;
|
.error-content {
|
||||||
margin-top: 5px;
|
padding-top: 28vw;
|
||||||
}
|
}
|
||||||
|
.error-message {
|
||||||
.error-template .post-feed {
|
padding-bottom: 14vw;
|
||||||
padding-top: 0;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2519,7 +2609,7 @@ Usage (In Ghost editor):
|
|||||||
transform: translateY(-175%);
|
transform: translateY(-175%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-close {
|
.subscribe-close-overlay {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
@ -2528,33 +2618,44 @@ Usage (In Ghost editor):
|
|||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-close:before {
|
.subscribe-close-button {
|
||||||
|
position: absolute;
|
||||||
|
top: 16px;
|
||||||
|
right: 20px;
|
||||||
|
z-index: 2000;
|
||||||
|
display: block;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subscribe-close-button:before {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 32px;
|
top: 20px;
|
||||||
right: 25px;
|
right: 4px;
|
||||||
display: block;
|
display: block;
|
||||||
width: 20px;
|
width: 32px;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
transform: rotate(45deg);
|
transform: rotate(45deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-close:after {
|
.subscribe-close-button:after {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 32px;
|
top: 20px;
|
||||||
right: 25px;
|
right: 4px;
|
||||||
display: block;
|
display: block;
|
||||||
width: 20px;
|
width: 32px;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
transform: rotate(-45deg);
|
transform: rotate(-45deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-close:hover {
|
.subscribe-close-overlay:hover,
|
||||||
|
.subscribe-close-button:hover {
|
||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2564,7 +2665,7 @@ Usage (In Ghost editor):
|
|||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
z-index: 9000;
|
z-index: 2000;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -2572,24 +2673,16 @@ Usage (In Ghost editor):
|
|||||||
opacity: 0;
|
opacity: 0;
|
||||||
transition: opacity 0.2s ease-in;
|
transition: opacity 0.2s ease-in;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
|
||||||
backdrop-filter: blur(3px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.subscribe-overlay .subscribe-close:before,
|
|
||||||
.subscribe-overlay .subscribe-close:after {
|
|
||||||
top: 36px;
|
|
||||||
width: 30px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-overlay:target {
|
.subscribe-overlay:target {
|
||||||
|
z-index: 2001;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
pointer-events: auto;
|
pointer-events: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-overlay-content {
|
.subscribe-overlay-content {
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 9999;
|
|
||||||
margin: 0 0 5vw 0;
|
margin: 0 0 5vw 0;
|
||||||
padding: 4vw;
|
padding: 4vw;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
@ -2658,7 +2751,7 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
.subscribe-email:focus {
|
.subscribe-email:focus {
|
||||||
outline: 0;
|
outline: 0;
|
||||||
border-color: color(var(--lightgrey) l(-2%));
|
border-color: color-mod(var(--lightgrey) l(-2%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-overlay button {
|
.subscribe-overlay button {
|
||||||
@ -2673,10 +2766,10 @@ Usage (In Ghost editor):
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background: linear-gradient(
|
background: linear-gradient(
|
||||||
color(var(--blue) whiteness(+7%)),
|
color-mod(var(--blue) whiteness(+7%)),
|
||||||
color(var(--blue) lightness(-7%) saturation(-10%)) 60%,
|
color-mod(var(--blue) lightness(-7%) saturation(-10%)) 60%,
|
||||||
color(var(--blue) lightness(-7%) saturation(-10%)) 90%,
|
color-mod(var(--blue) lightness(-7%) saturation(-10%)) 90%,
|
||||||
color(var(--blue) lightness(-4%) saturation(-10%))
|
color-mod(var(--blue) lightness(-4%) saturation(-10%))
|
||||||
);
|
);
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
|
|
||||||
@ -2685,13 +2778,19 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
.subscribe-overlay button:active,
|
.subscribe-overlay button:active,
|
||||||
.subscribe-overlay button:focus {
|
.subscribe-overlay button:focus {
|
||||||
background: color(var(--blue) lightness(-9%) saturation(-10%));
|
background: color-mod(var(--blue) lightness(-9%) saturation(-10%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-overlay .loading .button-loader {
|
.subscribe-overlay .loading .button-loader {
|
||||||
top: 5px;
|
top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 500px) {
|
||||||
|
.subscribe-overlay button {
|
||||||
|
margin: 12px 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* 11. Site Footer
|
/* 11. Site Footer
|
||||||
/* ---------------------------------------------------------- */
|
/* ---------------------------------------------------------- */
|
||||||
@ -2701,7 +2800,7 @@ Usage (In Ghost editor):
|
|||||||
padding-top: 20px;
|
padding-top: 20px;
|
||||||
padding-bottom: 60px;
|
padding-bottom: 60px;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background: color(var(--darkgrey) l(-5%));
|
background: color-mod(var(--darkgrey) l(-5%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-footer-content {
|
.site-footer-content {
|
||||||
@ -2780,7 +2879,7 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
.post-card,
|
.post-card,
|
||||||
.post-card:hover {
|
.post-card:hover {
|
||||||
border-bottom-color: color(var(--darkmode) l(+8%));
|
border-bottom-color: color-mod(var(--darkmode) l(+8%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.author-profile-image {
|
.author-profile-image {
|
||||||
@ -2804,16 +2903,17 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
.post-card-excerpt {
|
.post-card-excerpt {
|
||||||
color: color(var(--midgrey) l(+10%));
|
color: color-mod(var(--midgrey) l(+10%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.author-avatar,
|
.author-avatar,
|
||||||
.static-avatar {
|
.static-avatar {
|
||||||
border-color: color(var(--darkgrey) l(+2%));
|
border-color: color-mod(var(--darkgrey) l(+2%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-main,
|
.site-main,
|
||||||
.post-template .site-main {
|
.post-template .site-main,
|
||||||
|
.page-template .site-main {
|
||||||
background: var(--darkmode);
|
background: var(--darkmode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2826,15 +2926,15 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
.post-full-custom-excerpt {
|
.post-full-custom-excerpt {
|
||||||
color: color(var(--midgrey) l(+10%));
|
color: color-mod(var(--midgrey) l(+10%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-image {
|
.post-full-image {
|
||||||
background-color: color(var(--darkmode) l(+8%));
|
background-color: color-mod(var(--darkmode) l(+8%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-byline {
|
.post-full-byline {
|
||||||
border-top-color: color(var(--darkmode) l(+15%));
|
border-top-color: color-mod(var(--darkmode) l(+15%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-byline-meta h4 a {
|
.post-full-byline-meta h4 a {
|
||||||
@ -2846,12 +2946,16 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
.author-list-item .author-card {
|
.author-list-item .author-card {
|
||||||
background: color(var(--darkmode) l(+4%));
|
background: color-mod(var(--darkmode) l(+4%));
|
||||||
box-shadow: 0 12px 26px rgba(0,0,0,0.4);
|
box-shadow: 0 12px 26px rgba(0,0,0,0.4);
|
||||||
}
|
}
|
||||||
|
|
||||||
.author-list-item .author-card:before {
|
.author-list-item .author-card:before {
|
||||||
border-top-color: color(var(--darkmode) l(+4%));
|
border-top-color: color-mod(var(--darkmode) l(+4%));
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-image .author-social-link a {
|
||||||
|
color: rgba(255, 255, 255, 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-content h1,
|
.post-full-content h1,
|
||||||
@ -2881,14 +2985,33 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
hr {
|
hr {
|
||||||
border-top-color: color(var(--darkmode) l(+8%));
|
border-top-color: color-mod(var(--darkmode) l(+8%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-content figcaption {
|
.post-full-content figcaption {
|
||||||
color: rgba(255, 255, 255, 0.6);
|
color: rgba(255, 255, 255, 0.6);
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-content .kg-bookmark-container {
|
.post-full-content table td:first-child {
|
||||||
|
background-image: linear-gradient(to right, var(--darkmode) 50%, color-mod(var(--darkmode) a(0%)) 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-full-content table td:last-child {
|
||||||
|
background-image: linear-gradient(to left, var(--darkmode) 50%, color-mod(var(--darkmode) a(0%)) 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-full-content table th {
|
||||||
|
color: rgba(255, 255, 255, 0.85);
|
||||||
|
background-color: color-mod(var(--darkmode) l(+8%));
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-full-content table th,
|
||||||
|
.post-full-content table td {
|
||||||
|
border: color-mod(var(--darkmode) l(+8%)) 1px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-full-content .kg-bookmark-container,
|
||||||
|
.post-full-content .kg-bookmark-container:hover {
|
||||||
color: rgba(255, 255, 255, 0.75);
|
color: rgba(255, 255, 255, 0.75);
|
||||||
box-shadow: 0 0 1px rgba(255,255,255,0.9);
|
box-shadow: 0 0 1px rgba(255,255,255,0.9);
|
||||||
}
|
}
|
||||||
@ -2911,7 +3034,7 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
.site-archive-header .no-image .site-header-content {
|
.site-archive-header .no-image .site-header-content {
|
||||||
border-bottom-color: color(var(--darkmode) l(+15%));
|
border-bottom-color: color-mod(var(--darkmode) l(+15%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-header-content .author-profile-image {
|
.site-header-content .author-profile-image {
|
||||||
@ -2920,7 +3043,7 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
.subscribe-form {
|
.subscribe-form {
|
||||||
border: none;
|
border: none;
|
||||||
background: linear-gradient(color(var(--darkmode) l(-6%)), color(var(--darkmode) l(-3%)));
|
background: linear-gradient(color-mod(var(--darkmode) l(-6%)), color-mod(var(--darkmode) l(-3%)));
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-form-title {
|
.subscribe-form-title {
|
||||||
@ -2932,13 +3055,13 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-email {
|
.subscribe-email {
|
||||||
border-color: color(var(--darkmode) l(+6%));
|
border-color: color-mod(var(--darkmode) l(+6%));
|
||||||
color: rgba(255, 255, 255, 0.9);
|
color: rgba(255, 255, 255, 0.9);
|
||||||
background: color(var(--darkmode) l(+3%));
|
background: color-mod(var(--darkmode) l(+3%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-email:focus {
|
.subscribe-email:focus {
|
||||||
border-color: color(var(--darkmode) l(+25%));
|
border-color: color-mod(var(--darkmode) l(+25%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-form button {
|
.subscribe-form button {
|
||||||
@ -2947,10 +3070,10 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
.subscribe-form .invalid .message-error,
|
.subscribe-form .invalid .message-error,
|
||||||
.subscribe-form .error .message-error {
|
.subscribe-form .error .message-error {
|
||||||
color: color(var(--red) l(+5%) s(-5%));
|
color: color-mod(var(--red) l(+5%) s(-5%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-form .success .message-success {
|
.subscribe-form .success .message-success {
|
||||||
color: color(var(--green) l(+5%) s(-5%));
|
color: color-mod(var(--green) l(+5%) s(-5%));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,10 @@
|
|||||||
// append contents
|
// append contents
|
||||||
var postElements = this.response.querySelectorAll('.post-card');
|
var postElements = this.response.querySelectorAll('.post-card');
|
||||||
postElements.forEach(function (item) {
|
postElements.forEach(function (item) {
|
||||||
feedElement.appendChild(item);
|
// document.importNode is important, without it the item's owner
|
||||||
|
// document will be different which can break resizing of
|
||||||
|
// `object-fit: cover` images in Safari
|
||||||
|
feedElement.appendChild(document.importNode(item, true));
|
||||||
});
|
});
|
||||||
|
|
||||||
// set next link
|
// set next link
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
<div class="site-header-content author-header">
|
<div class="site-header-content author-header">
|
||||||
{{#if profile_image}}
|
{{#if profile_image}}
|
||||||
<img class="author-profile-image" src="{{profile_image}}" alt="{{name}}" />
|
<img class="author-profile-image" src="{{profile_image}}" alt="{{name}}" />
|
||||||
|
{{else}}
|
||||||
|
<span class="author-profile-image">{{> "icons/avatar"}}</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<div class="author-header-content">
|
<div class="author-header-content">
|
||||||
<h1 class="site-title">{{name}}</h1>
|
<h1 class="site-title">{{name}}</h1>
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"github": {
|
"github": {
|
||||||
"username": "<username>",
|
|
||||||
"token": "<gh-personal-access-token>"
|
"token": "<gh-personal-access-token>"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="subscribe" class="subscribe-overlay">
|
<div id="subscribe" class="subscribe-overlay">
|
||||||
<a class="subscribe-close" href="#"></a>
|
<a class="subscribe-close-overlay" href="#"></a>
|
||||||
|
<a class="subscribe-close-button" href="#"></a>
|
||||||
<div class="subscribe-overlay-content">
|
<div class="subscribe-overlay-content">
|
||||||
{{#if @site.logo}}
|
{{#if @site.logo}}
|
||||||
<img class="subscribe-overlay-logo" src="{{@site.logo}}" alt="{{@site.title}}" />
|
<img class="subscribe-overlay-logo" src="{{@site.logo}}" alt="{{@site.title}}" />
|
||||||
|
@ -3,54 +3,28 @@ This error template is used for all 404 errors, which might occur on your site.
|
|||||||
It's a good idea to keep this template as minimal as possible in terms of both file size and complexity.
|
It's a good idea to keep this template as minimal as possible in terms of both file size and complexity.
|
||||||
--}}
|
--}}
|
||||||
|
|
||||||
<!DOCTYPE html>
|
{{!< default}}
|
||||||
<html>
|
{{!-- The tag above means: insert everything in this file
|
||||||
<head>
|
into the {body} of the default.hbs template --}}
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<title>{{meta_title}}</title>
|
|
||||||
<meta name="HandheldFriendly" content="True" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="{{asset "built/screen.css"}}" />
|
|
||||||
</head>
|
|
||||||
<body class="error-template">
|
|
||||||
<div class="site-wrapper">
|
|
||||||
|
|
||||||
<header class="site-header outer {{#if feature_image}}" style="background-image: url({{feature_image}}){{else}}no-image{{/if}}">
|
<header class="site-header">
|
||||||
<div class="inner">
|
{{> site-header}}
|
||||||
<nav class="site-nav-center">
|
</header>
|
||||||
{{#if @site.logo}}
|
|
||||||
<a class="site-nav-logo" href="{{@site.url}}"><img src="{{img_url @site.logo size="xs"}}" alt="{{@site.title}}" /></a>
|
<main id="site-main" class="site-main outer error-content">
|
||||||
{{else}}
|
<div class="inner">
|
||||||
<a class="site-nav-logo" href="{{@site.url}}">{{@site.title}}</a>
|
<section class="error-message">
|
||||||
{{/if}}
|
<h1 class="error-code">{{statusCode}}</h1>
|
||||||
</nav>
|
<p class="error-description">{{message}}</p>
|
||||||
|
<a class="error-link" href="{{@site.url}}">Go to the front page →</a>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{{#get "posts" limit="3" include="authors,tags"}}
|
||||||
|
<div class="post-feed">
|
||||||
|
{{#foreach posts}}
|
||||||
|
{{> "post-card"}}
|
||||||
|
{{/foreach}}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
|
||||||
|
|
||||||
<main id="site-main" class="site-main outer">
|
|
||||||
<div class="inner">
|
|
||||||
|
|
||||||
<section class="error-message">
|
|
||||||
<h1 class="error-code">{{statusCode}}</h1>
|
|
||||||
<p class="error-description">{{message}}</p>
|
|
||||||
<a class="error-link" href="{{@site.url}}">Go to the front page →</a>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
{{#get "posts" limit="3"}}
|
|
||||||
<aside class="outer">
|
|
||||||
<div class="inner">
|
|
||||||
<div class="post-feed">
|
|
||||||
{{#foreach posts}}
|
|
||||||
{{> "post-card"}}
|
|
||||||
{{/foreach}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</aside>
|
|
||||||
{{/get}}
|
{{/get}}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</main>
|
||||||
</html>
|
|
25
error.hbs
25
error.hbs
@ -1,7 +1,7 @@
|
|||||||
{{!--
|
{{!--
|
||||||
This error template is used for all 400/500 errors, except 404, which might occur on your site.
|
This error template is used for all 400/500 errors, except 404, which might occur on your site.
|
||||||
It's a good idea to keep this template as minimal as possible in terms of both file size and complexity.
|
It's a good idea to keep this template as minimal as possible in terms of both file size and complexity.
|
||||||
You'll notice that we *don't* use any JavsScript, or ghost_head / ghost_foot in this file.
|
You'll notice that we *don't* use any JavaScript, or ghost_head / ghost_foot in this file.
|
||||||
--}}
|
--}}
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
@ -14,22 +14,25 @@ You'll notice that we *don't* use any JavsScript, or ghost_head / ghost_foot in
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link rel="stylesheet" type="text/css" href="{{asset "built/screen.css"}}" />
|
<link rel="stylesheet" type="text/css" href="{{asset "built/screen.css"}}" />
|
||||||
</head>
|
</head>
|
||||||
<body class="error-template">
|
<body>
|
||||||
<div class="site-wrapper">
|
<div class="site-wrapper">
|
||||||
|
|
||||||
<header class="site-header outer {{#if feature_image}}" style="background-image: url({{feature_image}}){{else}}no-image{{/if}}">
|
<header class="site-header no-image">
|
||||||
<div class="inner">
|
<div class="site-nav-main outer">
|
||||||
<nav class="site-nav-center">
|
<div class="inner">
|
||||||
{{#if @site.logo}}
|
<nav class="site-nav-center">
|
||||||
<a class="site-nav-logo" href="{{@site.url}}"><img src="{{img_url @site.logo size="xs"}}" alt="{{@site.title}}" /></a>
|
{{#if @site.logo}}
|
||||||
{{else}}
|
<a class="site-nav-logo" href="{{@site.url}}"><img src="{{img_url @site.logo size="xs"}}"
|
||||||
|
alt="{{@site.title}}" /></a>
|
||||||
|
{{else}}
|
||||||
<a class="site-nav-logo" href="{{@site.url}}">{{@site.title}}</a>
|
<a class="site-nav-logo" href="{{@site.url}}">{{@site.title}}</a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</nav>
|
</nav>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main id="site-main" class="site-main outer">
|
<main id="site-main" class="site-main outer error-content">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
|
|
||||||
<section class="error-message">
|
<section class="error-message">
|
||||||
|
211
gulpfile.js
211
gulpfile.js
@ -1,5 +1,8 @@
|
|||||||
const {series, watch, src, dest, parallel} = require('gulp');
|
const {series, watch, src, dest, parallel} = require('gulp');
|
||||||
const pump = require('pump');
|
const pump = require('pump');
|
||||||
|
const path = require('path');
|
||||||
|
const releaseUtils = require('@tryghost/release-utils');
|
||||||
|
const inquirer = require('inquirer');
|
||||||
|
|
||||||
// gulp plugins and utils
|
// gulp plugins and utils
|
||||||
const livereload = require('gulp-livereload');
|
const livereload = require('gulp-livereload');
|
||||||
@ -12,11 +15,14 @@ const fs = require('fs');
|
|||||||
|
|
||||||
// postcss plugins
|
// postcss plugins
|
||||||
const autoprefixer = require('autoprefixer');
|
const autoprefixer = require('autoprefixer');
|
||||||
const colorFunction = require('postcss-color-function');
|
const colorFunction = require('postcss-color-mod-function');
|
||||||
const cssnano = require('cssnano');
|
const cssnano = require('cssnano');
|
||||||
const customProperties = require('postcss-custom-properties');
|
|
||||||
const easyimport = require('postcss-easy-import');
|
const easyimport = require('postcss-easy-import');
|
||||||
|
|
||||||
|
const REPO = 'TryGhost/Casper';
|
||||||
|
const REPO_READONLY = 'TryGhost/Casper';
|
||||||
|
const CHANGELOG_PATH = path.join(process.cwd(), '.', 'changelog.md');
|
||||||
|
|
||||||
function serve(done) {
|
function serve(done) {
|
||||||
livereload.listen();
|
livereload.listen();
|
||||||
done();
|
done();
|
||||||
@ -39,17 +45,14 @@ function hbs(done) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function css(done) {
|
function css(done) {
|
||||||
const processors = [
|
|
||||||
easyimport,
|
|
||||||
customProperties({preserve: false}),
|
|
||||||
colorFunction(),
|
|
||||||
autoprefixer(),
|
|
||||||
cssnano()
|
|
||||||
];
|
|
||||||
|
|
||||||
pump([
|
pump([
|
||||||
src('assets/css/*.css', {sourcemaps: true}),
|
src('assets/css/*.css', {sourcemaps: true}),
|
||||||
postcss(processors),
|
postcss([
|
||||||
|
easyimport,
|
||||||
|
colorFunction(),
|
||||||
|
autoprefixer(),
|
||||||
|
cssnano()
|
||||||
|
]),
|
||||||
dest('assets/built/', {sourcemaps: '.'}),
|
dest('assets/built/', {sourcemaps: '.'}),
|
||||||
livereload()
|
livereload()
|
||||||
], handleError(done));
|
], handleError(done));
|
||||||
@ -70,18 +73,17 @@ function js(done) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function zipper(done) {
|
function zipper(done) {
|
||||||
const targetDir = 'dist/';
|
const filename = require('./package.json').name + '.zip';
|
||||||
const themeName = require('./package.json').name;
|
|
||||||
const filename = themeName + '.zip';
|
|
||||||
|
|
||||||
pump([
|
pump([
|
||||||
src([
|
src([
|
||||||
'**',
|
'**',
|
||||||
'!node_modules', '!node_modules/**',
|
'!node_modules', '!node_modules/**',
|
||||||
'!dist', '!dist/**'
|
'!dist', '!dist/**',
|
||||||
|
'!yarn-error.log'
|
||||||
]),
|
]),
|
||||||
zip(filename),
|
zip(filename),
|
||||||
dest(targetDir)
|
dest('dist/')
|
||||||
], handleError(done));
|
], handleError(done));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,128 +91,97 @@ const cssWatcher = () => watch('assets/css/**', css);
|
|||||||
const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs'], hbs);
|
const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs'], hbs);
|
||||||
const watcher = parallel(cssWatcher, hbsWatcher);
|
const watcher = parallel(cssWatcher, hbsWatcher);
|
||||||
const build = series(css, js);
|
const build = series(css, js);
|
||||||
const dev = series(build, serve, watcher);
|
|
||||||
|
|
||||||
exports.build = build;
|
exports.build = build;
|
||||||
exports.zip = series(build, zipper);
|
exports.zip = series(build, zipper);
|
||||||
exports.default = dev;
|
exports.default = series(build, serve, watcher);
|
||||||
|
|
||||||
// release imports
|
exports.release = () => {
|
||||||
const path = require('path');
|
|
||||||
const releaseUtils = require('@tryghost/release-utils');
|
|
||||||
|
|
||||||
let config;
|
|
||||||
try {
|
|
||||||
config = require('./config');
|
|
||||||
} catch (err) {
|
|
||||||
config = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
const REPO = 'TryGhost/Casper';
|
|
||||||
const USER_AGENT = 'Casper';
|
|
||||||
const CHANGELOG_PATH = path.join(process.cwd(), '.', 'changelog.md');
|
|
||||||
|
|
||||||
const changelog = ({previousVersion}) => {
|
|
||||||
const changelog = new releaseUtils.Changelog({
|
|
||||||
changelogPath: CHANGELOG_PATH,
|
|
||||||
folder: path.join(process.cwd(), '.')
|
|
||||||
});
|
|
||||||
|
|
||||||
changelog
|
|
||||||
.write({
|
|
||||||
githubRepoPath: `https://github.com/${REPO}`,
|
|
||||||
lastVersion: previousVersion
|
|
||||||
})
|
|
||||||
.sort()
|
|
||||||
.clean();
|
|
||||||
};
|
|
||||||
|
|
||||||
const previousRelease = () => {
|
|
||||||
return releaseUtils
|
|
||||||
.releases
|
|
||||||
.get({
|
|
||||||
userAgent: USER_AGENT,
|
|
||||||
uri: `https://api.github.com/repos/${REPO}/releases`
|
|
||||||
})
|
|
||||||
.then((response) => {
|
|
||||||
if (!response || !response.length) {
|
|
||||||
console.log('No releases found. Skipping');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let prevVersion = response[0].tag_name || response[0].name;
|
|
||||||
console.log(`Previous version ${prevVersion}`);
|
|
||||||
return prevVersion;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* `yarn ship` will trigger `postship` task.
|
|
||||||
*
|
|
||||||
* [optional] For full automation
|
|
||||||
*
|
|
||||||
* `GHOST=2.10.1,2.10.0 yarn ship`
|
|
||||||
* First value: Ships with Ghost
|
|
||||||
* Second value: Compatible with Ghost/GScan
|
|
||||||
*
|
|
||||||
* You can manually run in case the task has thrown an error.
|
|
||||||
*
|
|
||||||
* `npm_package_version=0.5.0 gulp release`
|
|
||||||
*/
|
|
||||||
const release = () => {
|
|
||||||
// @NOTE: https://yarnpkg.com/lang/en/docs/cli/version/
|
// @NOTE: https://yarnpkg.com/lang/en/docs/cli/version/
|
||||||
// require(./package.json) can run into caching issues, this re-reads from file everytime on release
|
// require(./package.json) can run into caching issues, this re-reads from file everytime on release
|
||||||
var packageJSON = JSON.parse(fs.readFileSync('./package.json'));
|
var packageJSON = JSON.parse(fs.readFileSync('./package.json'));
|
||||||
const newVersion = packageJSON.version;
|
const newVersion = packageJSON.version;
|
||||||
let shipsWithGhost = '{version}';
|
|
||||||
let compatibleWithGhost = '2.10.0';
|
|
||||||
const ghostEnvValues = process.env.GHOST || null;
|
|
||||||
|
|
||||||
if (ghostEnvValues) {
|
|
||||||
shipsWithGhost = ghostEnvValues.split(',')[0];
|
|
||||||
compatibleWithGhost = ghostEnvValues.split(',')[1];
|
|
||||||
|
|
||||||
if (!compatibleWithGhost) {
|
|
||||||
compatibleWithGhost = '2.10.0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!newVersion || newVersion === '') {
|
if (!newVersion || newVersion === '') {
|
||||||
console.log('Invalid version.');
|
console.log(`Invalid version: ${newVersion}`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(`\nDraft release for ${newVersion}.`);
|
console.log(`\nCreating release for ${newVersion}...`);
|
||||||
|
|
||||||
if (!config || !config.github || !config.github.username || !config.github.token) {
|
let config;
|
||||||
|
try {
|
||||||
|
config = require('./config');
|
||||||
|
} catch (err) {
|
||||||
|
config = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!config || !config.github || !config.github.token) {
|
||||||
console.log('Please copy config.example.json and configure Github token.');
|
console.log('Please copy config.example.json and configure Github token.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return previousRelease()
|
let compatibleWithGhost;
|
||||||
.then((previousVersion) => {
|
|
||||||
changelog({previousVersion});
|
|
||||||
|
|
||||||
return releaseUtils
|
return inquirer.prompt([{
|
||||||
.releases
|
type: 'input',
|
||||||
.create({
|
name: 'compatibleWithGhost',
|
||||||
draft: true,
|
message: 'Which version of Ghost is it compatible with?',
|
||||||
preRelease: false,
|
default: '3.0.0'
|
||||||
tagName: newVersion,
|
}])
|
||||||
releaseName: newVersion,
|
.then(result => {
|
||||||
userAgent: USER_AGENT,
|
compatibleWithGhost = result.compatibleWithGhost;
|
||||||
uri: `https://api.github.com/repos/${REPO}/releases`,
|
return Promise.resolve();
|
||||||
github: {
|
})
|
||||||
username: config.github.username,
|
.then(() => releaseUtils.releases.get({
|
||||||
token: config.github.token
|
userAgent: 'Casper',
|
||||||
},
|
uri: `https://api.github.com/repos/${REPO_READONLY}/releases`
|
||||||
content: [`**Ships with Ghost ${shipsWithGhost} Compatible with Ghost >= ${compatibleWithGhost}**\n\n`],
|
}))
|
||||||
changelogPath: CHANGELOG_PATH
|
.then((response) => {
|
||||||
})
|
if (!response || !response.length) {
|
||||||
.then((response) => {
|
console.log('No releases found. Skipping...');
|
||||||
console.log(`\nRelease draft generated: ${response.releaseUrl}\n`);
|
return;
|
||||||
});
|
}
|
||||||
|
|
||||||
|
let previousVersion = response[0].tag_name || response[0].name;
|
||||||
|
console.log(`Previous version: ${previousVersion}`);
|
||||||
|
return Promise.resolve(previousVersion);
|
||||||
|
})
|
||||||
|
.then((previousVersion) => {
|
||||||
|
const changelog = new releaseUtils.Changelog({
|
||||||
|
changelogPath: CHANGELOG_PATH,
|
||||||
|
folder: path.join(process.cwd(), '.')
|
||||||
});
|
});
|
||||||
};
|
|
||||||
|
|
||||||
exports.release = release;
|
changelog
|
||||||
|
.write({
|
||||||
|
githubRepoPath: `https://github.com/${REPO}`,
|
||||||
|
lastVersion: previousVersion
|
||||||
|
})
|
||||||
|
.sort()
|
||||||
|
.clean();
|
||||||
|
|
||||||
|
return Promise.resolve();
|
||||||
|
})
|
||||||
|
.then(() => releaseUtils.releases.create({
|
||||||
|
draft: true,
|
||||||
|
preRelease: false,
|
||||||
|
tagName: newVersion,
|
||||||
|
releaseName: newVersion,
|
||||||
|
userAgent: 'Casper',
|
||||||
|
uri: `https://api.github.com/repos/${REPO}/releases`,
|
||||||
|
github: {
|
||||||
|
token: config.github.token
|
||||||
|
},
|
||||||
|
content: [`**Compatible with Ghost ≥ ${compatibleWithGhost}**\n\n`],
|
||||||
|
changelogPath: CHANGELOG_PATH
|
||||||
|
}))
|
||||||
|
.then((response) => {
|
||||||
|
console.log(`\nRelease draft generated: ${response.releaseUrl}\n`);
|
||||||
|
return Promise.resolve();
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.error(err);
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
19
package.json
19
package.json
@ -2,7 +2,7 @@
|
|||||||
"name": "casper",
|
"name": "casper",
|
||||||
"description": "A clean, minimal default theme for the Ghost publishing platform",
|
"description": "A clean, minimal default theme for the Ghost publishing platform",
|
||||||
"demo": "https://demo.ghost.io",
|
"demo": "https://demo.ghost.io",
|
||||||
"version": "3.0.0",
|
"version": "3.1.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
"ghost": ">=3.0.0",
|
"ghost": ">=3.0.0",
|
||||||
"ghost-api": "v3"
|
"ghost-api": "v3"
|
||||||
@ -15,7 +15,8 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "gulp",
|
"dev": "gulp",
|
||||||
"zip": "gulp zip",
|
"zip": "gulp zip",
|
||||||
"test": "gscan --v3 .",
|
"test": "gscan .",
|
||||||
|
"test:ci": "gscan --fatal --verbose .",
|
||||||
"pretest": "gulp build",
|
"pretest": "gulp build",
|
||||||
"preship": "yarn test",
|
"preship": "yarn test",
|
||||||
"ship": "STATUS=$(git status --porcelain); echo $STATUS; if [ -z \"$STATUS\" ]; then yarn version && git push --follow-tags; else echo \"Uncomitted changes found.\" && exit 1; fi",
|
"ship": "STATUS=$(git status --porcelain); echo $STATUS; if [ -z \"$STATUS\" ]; then yarn version && git push --follow-tags; else echo \"Uncomitted changes found.\" && exit 1; fi",
|
||||||
@ -45,19 +46,19 @@
|
|||||||
"bugs": "https://github.com/TryGhost/Casper/issues",
|
"bugs": "https://github.com/TryGhost/Casper/issues",
|
||||||
"contributors": "https://github.com/TryGhost/Casper/graphs/contributors",
|
"contributors": "https://github.com/TryGhost/Casper/graphs/contributors",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tryghost/release-utils": "0.3.2",
|
"@tryghost/release-utils": "0.6.3",
|
||||||
"autoprefixer": "9.6.5",
|
"autoprefixer": "9.8.6",
|
||||||
"beeper": "2.0.0",
|
"beeper": "2.0.0",
|
||||||
"cssnano": "4.1.10",
|
"cssnano": "4.1.10",
|
||||||
"gscan": "3.0.0",
|
"gscan": "3.5.5",
|
||||||
"gulp": "4.0.2",
|
"gulp": "4.0.2",
|
||||||
"gulp-concat": "^2.6.1",
|
"gulp-concat": "2.6.1",
|
||||||
"gulp-livereload": "4.0.2",
|
"gulp-livereload": "4.0.2",
|
||||||
"gulp-postcss": "8.0.0",
|
"gulp-postcss": "8.0.0",
|
||||||
"gulp-uglify": "3.0.2",
|
"gulp-uglify": "3.0.2",
|
||||||
"gulp-zip": "5.0.1",
|
"gulp-zip": "5.0.2",
|
||||||
"postcss-color-function": "4.1.0",
|
"inquirer": "7.3.3",
|
||||||
"postcss-custom-properties": "9.0.2",
|
"postcss-color-mod-function": "3.0.3",
|
||||||
"postcss-easy-import": "3.0.0",
|
"postcss-easy-import": "3.0.0",
|
||||||
"pump": "3.0.0"
|
"pump": "3.0.0"
|
||||||
},
|
},
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<article class="post-card {{post_class}} {{#unless feature_image}}no-image{{else}}{{#has index="nth:6"}}post-card-large{{/has}}{{/unless}}">
|
<article class="post-card {{post_class}} {{#unless feature_image}}no-image{{else}}{{#is "home"}}{{#has index="nth:6"}}post-card-large{{/has}}{{/is}}{{/unless}}">
|
||||||
|
|
||||||
{{#if feature_image}}
|
{{#if feature_image}}
|
||||||
<a class="post-card-image-link" href="{{url}}">
|
<a class="post-card-image-link" href="{{url}}">
|
||||||
@ -10,6 +10,7 @@
|
|||||||
{{img_url feature_image size="l"}} 1000w,
|
{{img_url feature_image size="l"}} 1000w,
|
||||||
{{img_url feature_image size="xl"}} 2000w"
|
{{img_url feature_image size="xl"}} 2000w"
|
||||||
sizes="(max-width: 1000px) 400px, 700px"
|
sizes="(max-width: 1000px) 400px, 700px"
|
||||||
|
loading="lazy"
|
||||||
src="{{img_url feature_image size="m"}}"
|
src="{{img_url feature_image size="m"}}"
|
||||||
alt="{{title}}"
|
alt="{{title}}"
|
||||||
/>
|
/>
|
||||||
|
@ -1,32 +1,40 @@
|
|||||||
<nav class="site-nav">
|
<nav class="site-nav">
|
||||||
<div class="site-nav-left">
|
<div class="site-nav-left-wrapper">
|
||||||
{{#if @site.logo}}
|
<div class="site-nav-left">
|
||||||
<a class="site-nav-logo" href="{{@site.url}}"><img src="{{@site.logo}}" alt="{{@site.title}}" /></a>
|
{{#if @site.logo}}
|
||||||
{{else}}
|
<a class="site-nav-logo" href="{{@site.url}}"><img src="{{@site.logo}}" alt="{{@site.title}}" /></a>
|
||||||
<a class="site-nav-logo" href="{{@site.url}}">{{@site.title}}</a>
|
{{else}}
|
||||||
{{/if}}
|
<a class="site-nav-logo" href="{{@site.url}}">{{@site.title}}</a>
|
||||||
<div class="site-nav-content">
|
|
||||||
{{#if @site.navigation}}
|
|
||||||
{{navigation}}
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#is "post"}}
|
<div class="site-nav-content">
|
||||||
<span class="nav-post-title {{#unless @site.logo}}dash{{/unless}}">{{post.title}}</span>
|
{{#if @site.navigation}}
|
||||||
{{/is}}
|
{{navigation}}
|
||||||
|
{{/if}}
|
||||||
|
{{#is "post"}}
|
||||||
|
<span class="nav-post-title {{#unless @site.logo}}dash{{/unless}}">{{post.title}}</span>
|
||||||
|
{{/is}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="site-nav-right">
|
<div class="site-nav-right">
|
||||||
<div class="social-links">
|
{{#if @site.secondary_navigation}}
|
||||||
{{#if @site.facebook}}
|
{{navigation type="secondary"}}
|
||||||
<a class="social-link social-link-fb" href="{{facebook_url @site.facebook}}" title="Facebook" target="_blank" rel="noopener">{{> "icons/facebook"}}</a>
|
{{else}}
|
||||||
{{/if}}
|
<div class="social-links">
|
||||||
{{#if @site.twitter}}
|
{{#if @site.facebook}}
|
||||||
<a class="social-link social-link-tw" href="{{twitter_url @site.twitter}}" title="Twitter" target="_blank" rel="noopener">{{> "icons/twitter"}}</a>
|
<a class="social-link social-link-fb" href="{{facebook_url @site.facebook}}" title="Facebook" target="_blank" rel="noopener">{{> "icons/facebook"}}</a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
{{#if @site.twitter}}
|
||||||
|
<a class="social-link social-link-tw" href="{{twitter_url @site.twitter}}" title="Twitter" target="_blank" rel="noopener">{{> "icons/twitter"}}</a>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
{{#unless @labs.members}}
|
||||||
|
<a class="rss-button" href="https://feedly.com/i/subscription/feed/{{@site.url}}/rss/" title="RSS" target="_blank" rel="noopener">{{> "icons/rss"}}</a>
|
||||||
|
{{/unless}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{#if @labs.members}}
|
{{#if @labs.members}}
|
||||||
<a class="subscribe-button" href="#subscribe">Subscribe</a>
|
<a class="subscribe-button" href="#subscribe">Subscribe</a>
|
||||||
{{else}}
|
|
||||||
<a class="rss-button" href="https://feedly.com/i/subscription/feed/{{@site.url}}/rss/" title="RSS" target="_blank" rel="noopener">{{> "icons/rss"}}</a>
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
{
|
{
|
||||||
"extends": [
|
"extends": [
|
||||||
"@tryghost:theme"
|
"@tryghost:theme"
|
||||||
],
|
]
|
||||||
"travis": { "enabled": true },
|
|
||||||
"node": {
|
|
||||||
"supportPolicy": ["lts_latest"]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user