Compare commits

...

85 Commits
3.0.6 ... 3.1.1

Author SHA1 Message Date
0c36dc5235 3.1.1 2020-10-16 09:19:06 +01:00
aa3c83ec35 Updated built assets 2020-10-16 09:18:36 +01:00
38481aac9a Fixed post content input color issue on dark mode
Fixes #718
2020-10-08 11:36:41 +08:00
0052c2ddc3 Added subscribe failure notification
Fixes #738
2020-10-08 10:22:49 +08:00
9d12bc32f0 Update screen.css (#735)
Fix instance of color() to color-mod()
2020-10-03 11:17:29 +07:00
cb674ab56c Lock file maintenance 2020-10-01 00:16:07 +00:00
c86ee63b86 Pin dependency postcss to 8.1.1 2020-09-30 12:49:12 +00:00
b92f18e55a Added postcss as a dev dependency (required by gulp-postcss) 2020-09-30 13:48:11 +01:00
827940c836 Update dependency autoprefixer to v10.0.1 2020-09-28 00:05:40 +00:00
db0af7f759 Update dependency gulp-postcss to v9 2020-09-23 19:04:44 +00:00
af87b9b3b0 Update dependency @tryghost/release-utils to v0.6.7 2020-09-22 03:39:15 +00:00
ec03acff02 Update dependency autoprefixer to v10 2020-09-15 19:04:52 +00:00
fa48995326 Updated action-deploy-theme to v1.3.1
- hopefully fixes a bug with `theme-name` not being passed through
2020-09-10 13:15:53 +01:00
6350790798 Fix close button in the subscribe success message 2020-09-10 12:28:44 +08:00
ab521da23a Update dependency gscan to v3.5.7 2020-09-07 16:28:49 +00:00
91185016eb Lock file maintenance 2020-09-01 00:05:19 +00:00
0af8d2d8bc Update dependency @tryghost/release-utils to v0.6.6 2020-08-11 17:42:19 +00:00
f50f663ef7 Update dependency @tryghost/release-utils to v0.6.5 2020-08-11 11:52:54 +00:00
a467e31457 Update dependency gscan to v3.5.6 2020-08-10 15:09:56 +00:00
807018ca97 Fix background color of slash of darkmode <hr> (#733) 2020-08-09 00:34:53 +07:00
ce9918de2f Update dependency @tryghost/release-utils to v0.6.4 2020-08-07 15:08:43 +00:00
df2d20caab 3.1.0 2020-08-04 10:59:14 +01:00
c6cb667fea Lock file maintenance 2020-08-01 00:29:35 +00:00
a1d9eae840 Update dependency autoprefixer to v9.8.6 2020-07-30 20:40:44 +00:00
59eefa3659 Updated call to actions/checkout to use v2
refs https://github.com/TryGhost/action-deploy-theme/issues/30

- actions/checkout has changed their default branch name from master to main, which shows warnings.
2020-07-28 12:53:07 +01:00
78bde5f3dc Fix broken link 2020-07-28 00:59:13 +07:00
e637d809f6 Upgraded to color-mod, native CSS vars
Dropping final support for IE11 and moving to newer color-mod package to replace the old deprecated one
2020-07-28 00:52:31 +07:00
e4793cc743 Update dependency gscan to v3.5.5 2020-07-24 10:15:20 +00:00
cd7016493e Update dependency inquirer to v7.3.3 2020-07-23 02:35:30 +00:00
7421cff4fe 3.0.13 2020-07-21 13:41:23 +01:00
c465d95e14 Added new build assets
no issue
2020-07-21 13:40:03 +01:00
c1c6fed941 Update dependency inquirer to v7.3.2 2020-07-13 17:15:27 +00:00
5664f81564 Update dependency autoprefixer to v9.8.5 2020-07-13 00:04:56 +00:00
8838afe43f Lock file maintenance 2020-07-10 19:01:32 +01:00
f53b6b3435 Update dependency inquirer to v7.3.1 2020-07-10 15:46:29 +00:00
be77dad00e Update dependency inquirer to v7.3.0 2020-07-02 05:04:53 +00:00
408cf0cc1e Update dependency gulp-zip to v5.0.2 2020-06-29 00:27:17 +00:00
cfdc8a3b85 Update dependency autoprefixer to v9.8.4 2020-06-24 03:40:53 +00:00
e6a24de5c4 Update dependency autoprefixer to v9.8.3 2020-06-23 14:43:53 +00:00
6d0a3a8899 Update dependency autoprefixer to v9.8.2 2020-06-22 00:21:02 +00:00
b54c3debd4 Update dependency autoprefixer to v9.8.1 2020-06-19 21:33:26 +00:00
0e0589cb04 Disabled yarn-error.log file export to zip (#725) 2020-06-17 19:07:34 +01:00
5bfc82bf0c Update dependency inquirer to v7.2.0 2020-06-15 02:35:55 +00:00
d3ffc71b34 Update dependency @tryghost/release-utils to v0.6.3 2020-05-26 16:22:16 +00:00
871fc4075f Update dependency autoprefixer to v9.8.0 2020-05-18 01:14:52 +00:00
6f37e5a148 Update dependency @tryghost/release-utils to v0.6.2 2020-05-08 16:13:01 +00:00
adc055495c Update dependency gscan to v3.5.4 2020-05-01 09:41:56 +00:00
2ed7ea8f13 Lock file maintenance (#709)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2020-05-01 15:16:09 +07:00
4ddbaae803 Update dependency gscan to v3.5.3 2020-04-22 17:12:58 +00:00
7e0e45c643 Change border-left on blockquote to use color variables (#705) 2020-04-22 18:44:54 +07:00
e0771bfc7e Update dependency gscan to v3.5.2 2020-04-20 19:15:57 +00:00
8f1a15296a Update dependency @tryghost/release-utils to v0.6.1 2020-04-16 13:44:16 +00:00
2bd82a30e8 Update dependency @tryghost/release-utils to v0.6.0 2020-04-07 12:16:10 +00:00
feb7f3aac6 3.0.12 2020-04-07 09:15:05 +01:00
eed15fd9a5 Update dependency autoprefixer to v9.7.6 2020-04-06 21:22:19 +00:00
201b1924cf Update dependency gscan to v3.4.1 2020-04-06 17:10:14 +00:00
387a2aa3f0 Switch testing to built-in Nodejs
no issue
2020-04-06 13:49:51 +01:00
690ca22fb7 Removed test addition 2020-04-03 16:17:14 +01:00
31d43860ac Updated release script
no issue
2020-04-03 16:16:26 +01:00
14f7cc4e31 Updated built files
no issue
2020-04-03 16:04:41 +01:00
7646f90556 Updated theme name in deploy GitHub Actions
no issue

- the theme name cannot be the same as the default
2020-04-03 09:53:48 +01:00
8e17cdc1fb update sdeploy theme (#692) 2020-04-03 14:39:02 +07:00
2da322d93b Lock file maintenance (#699)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2020-04-03 14:36:14 +07:00
709c7196b9 Post cards > Lazyload (#701)
Co-authored-by: Rafael Gomes <rgomes@lesite.ca>
2020-04-03 14:35:58 +07:00
c97b847002 Update dependency @tryghost/release-utils to v0.5.0 2020-04-01 12:17:28 +00:00
7d37adb3cd Update dependency autoprefixer to v9.7.5 2020-03-31 17:33:06 +00:00
4fe7010f4e Update dependency @tryghost/release-utils to v0.4.2 2020-03-31 15:11:06 +00:00
6bf34a5a70 Moved Casper release code into gulpfile
no issue
2020-03-31 16:10:30 +01:00
c9a54e25ab Enabled CI for Renovate branches
no issue
2020-03-31 15:54:56 +01:00
3281f75945 Update dependency gscan to v3.4.0 2020-03-31 15:53:14 +01:00
c8abe3a7c4 3.0.11 2020-03-26 14:29:11 +00:00
150b698b1c Updated Renovate config with new structure
no issue
2020-03-26 10:56:13 +00:00
9ff3aa7858 3.0.10 2020-03-23 12:23:44 +00:00
8886056719 Fixed navigation scrollbar bug
no refs.
- fixed issue that made top navigation scrollbar appear for sites with secondary navigation and members turned off
2020-03-11 13:46:20 +01:00
93628dc7f0 3.0.9 2020-03-09 10:49:09 +00:00
702b2cbf1f Refined width of image captions
no refs.
- updated max width of image caption text
2020-03-04 15:34:15 +01:00
e5969f93da Improved author and tag header styles
no refs.

- added default avatar for authors template
- fixed typography inconsistencies, alignment and spacing issues for author and tags headers
- applied CSSComb
2020-03-04 14:34:03 +01:00
9e29e145fc 🐛 Subscribe overlay fixes
refs. https://github.com/TryGhost/Casper/issues/630

- added a dedicated close button element for the subscribe overlay which sits on top of all elements to ensure the modal is always closable
- fixed alignment and spacing of "Subscribe" button for mobile sizes
2020-03-04 11:26:27 +01:00
74ae3d5140 🐛 Fixed image alignment for small images
refs. https://github.com/TryGhost/Casper/issues/517

- updated styles to center align small images with long caption text
2020-03-03 17:29:34 +01:00
1ec7a12d43 Bumped dependency versions
no issue
2020-03-02 18:36:18 +00:00
9ec0f08a48 3.0.8 2020-03-02 12:02:24 +00:00
b09e846fd2 Update dependency postcss-custom-properties to v9.1.1 2020-03-01 02:18:49 +00:00
92d9174b24 Update dependency @tryghost/release-utils to v0.4.1 2020-03-01 01:18:39 +00:00
c27fc17844 3.0.7 2020-02-05 11:42:31 +00:00
d9cf22a0f7 Update dependency gscan to v3.3.0 2020-02-01 01:18:20 +00:00
19 changed files with 1536 additions and 1302 deletions

View File

@ -1,14 +1,14 @@
name: Deploy Theme
on:
push:
branches:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@master
- uses: TryGhost/action-deploy-theme@v1.2.0
- uses: actions/checkout@v2
- uses: TryGhost/action-deploy-theme@v1.3.1
with:
api-url: ${{ secrets.GHOST_ADMIN_API_URL }}
api-key: ${{ secrets.GHOST_ADMIN_API_KEY }}

View File

@ -4,29 +4,12 @@ on:
push:
branches:
- master
- 'renovate/*'
jobs:
build:
runs-on: ubuntu-18.04
strategy:
matrix:
node: [ '10' ]
name: Node ${{ matrix.node }}
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
- name: Cache node modules
uses: actions/cache@v1
with:
path: node_modules
key: ${{ runner.OS }}-build-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.OS }}-build-${{ env.cache-name }}-
${{ runner.OS }}-build-
${{ runner.OS }}-
- name: Setup node
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node }}
- run: npm install yarn
- run: yarn install
- run: yarn
- run: yarn test:ci

View File

@ -54,8 +54,7 @@ yarn zip
# 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.
- Variables - Simple pure CSS variables
- [Color Function](https://github.com/postcss/postcss-color-function)
- [Color Mod](https://github.com/jonathantneal/postcss-color-mod-function)
# SVG Icons

View File

@ -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(i.importNode(e,!0))});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);e=o(this).find(e.join(","));(e=(e=e.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"),e=e.attributes.width.value/e.attributes.height.value;t.style.flex=e+" 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

File diff suppressed because one or more lines are too long

View File

@ -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{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:#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 */

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

View File

@ -14,7 +14,7 @@
--whitegrey: #e5eff5;
--pink: #fa3a57;
--brown: #a3821a;
--darkmode: color(var(--darkgrey) l(+2%));
--darkmode: color-mod(var(--darkgrey) l(+2%));
}
/* Reset
@ -281,7 +281,7 @@ html {
}
body {
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-size: 1.6rem;
line-height: 1.6em;
@ -298,7 +298,7 @@ body {
::selection {
text-shadow: none;
background: color(var(--blue) lightness(+30%));
background: color-mod(var(--blue) lightness(+30%));
}
hr {
@ -309,7 +309,7 @@ hr {
padding: 0;
height: 1px;
border: 0;
border-top: 1px solid color(var(--lightgrey) l(+10%));
border-top: 1px solid color-mod(var(--lightgrey) l(+10%));
}
audio,
@ -416,7 +416,7 @@ blockquote cite a {
}
a {
color: color(var(--blue) l(-5%));
color: color-mod(var(--blue) l(-5%));
text-decoration: none;
}

View File

@ -114,7 +114,7 @@ body {
margin-top: 64px;
padding-bottom: 12px;
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;
}
@ -205,6 +205,7 @@ body {
.site-home-header .site-description {
font-size: 2.2rem;
font-weight: 300;
text-align: center;
}
@ -235,7 +236,7 @@ body {
.site-archive-header .no-image .site-header-content {
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) {
.site-home-header .site-title {
font-size: 3.2rem;
font-size: 4.2rem;
}
.site-home-header .site-description {
@ -257,8 +258,19 @@ body {
}
.site-archive-header .site-header-content {
flex-direction: column;
align-items: center;
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;
left: 0;
z-index: 1000;
background: color(var(--darkgrey) l(-5%));
background: color-mod(var(--darkgrey) l(-5%));
}
.site-nav {
@ -280,7 +292,7 @@ body {
display: flex;
justify-content: space-between;
align-items: flex-start;
overflow-y: hidden;
overflow: hidden;
height: 64px;
font-size: 1.3rem;
}
@ -304,7 +316,7 @@ body {
.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(var(--darkgrey) l(-5%) a(0)) 0%,color(var(--darkgrey) l(-5%)) 100%);
background: linear-gradient(to right, color-mod(var(--darkgrey) l(-5%) a(0)) 0%,color-mod(var(--darkgrey) l(-5%)) 100%);
}
.site-nav-left {
@ -454,8 +466,8 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
.site-nav-right {
flex: 0 1 auto;
display: flex;
align-items: center;
justify-content: flex-end;
align-items: center;
padding: 10px 0;
height: 64px;
}
@ -517,8 +529,8 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
.subscribe-button {
display: block;
padding: 4px 10px;
margin: 0 0 0 10px;
padding: 4px 10px;
border: #fff 1px solid;
color: #fff;
line-height: 1em;
@ -612,7 +624,7 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
margin: 0 0 40px;
padding: 0 20px 40px;
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;
}
@ -699,7 +711,7 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
display: block;
width: 100%;
height: 100%;
background: color(var(--lightgrey) l(+10%));
background: color-mod(var(--lightgrey) l(+10%));
border-radius: 100%;
object-fit: cover;
@ -770,7 +782,7 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
display: flex;
flex-direction: column;
margin: 2px 0 0 6px;
color: color(var(--midgrey) l(+10%));
color: color-mod(var(--midgrey) l(+10%));
font-size: 1.2rem;
line-height: 1.4em;
font-weight: 400;
@ -783,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 {
color: color(var(--darkgrey) l(+20%));
color: color-mod(var(--darkgrey) l(+20%));
font-weight: 600;
}
@ -801,7 +813,7 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
display: flex;
flex-direction: column;
margin-left: 5px;
color: color(var(--midgrey) l(-10%));
color: color-mod(var(--midgrey) l(-10%));
font-size: 1.3rem;
line-height: 1.4em;
font-weight: 500;
@ -838,7 +850,7 @@ make sure this only happens on large viewports / desktop-ish devices.
}
.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 {
@ -968,7 +980,7 @@ make sure this only happens on large viewports / desktop-ish devices.
.post-full-title {
margin: 0 0 0.2em;
color: color(var(--darkgrey) l(-5%));
color: color-mod(var(--darkgrey) l(-5%));
}
.post-full-custom-excerpt {
@ -992,7 +1004,7 @@ make sure this only happens on large viewports / desktop-ish devices.
align-items: center;
overflow: hidden;
margin: 25px 0 50px;
background: color(var(--lightgrey) l(+10%));
background: color-mod(var(--lightgrey) l(+10%));
border-radius: 3px;
}
@ -1092,7 +1104,7 @@ make sure this only happens on large viewports / desktop-ish devices.
.post-full-content strong,
.post-full-content em {
color: color(var(--darkgrey) l(-5%));
color: color-mod(var(--darkgrey) l(-5%));
}
.post-full-content small {
@ -1157,7 +1169,7 @@ Usage (In Ghost editor):
.post-full-content blockquote {
margin: 0 0 1.5em;
padding: 0 1.5em;
border-left: #3eb0ef 3px solid;
border-left: color-mod(var(--blue)) 3px solid;
}
@media (max-width: 500px) {
.post-full-content blockquote {
@ -1195,16 +1207,16 @@ Usage (In Ghost editor):
margin: 1.5em 0 3em;
padding: 20px;
max-width: 100%;
border: color(var(--darkgrey) l(-10%)) 1px solid;
border: color-mod(var(--darkgrey) l(-10%)) 1px solid;
color: var(--whitegrey);
font-size: 1.4rem;
line-height: 1.5em;
background: color(var(--darkgrey) l(-3%));
background: color-mod(var(--darkgrey) l(-3%));
border-radius: 5px;
}
.post-full-content pre ::selection {
color: color(var(--midgrey) l(-25%));
color: color-mod(var(--midgrey) l(-25%));
}
.post-full-content pre code {
@ -1235,7 +1247,7 @@ Usage (In Ghost editor):
margin-left: -10px;
width: 1px;
height: 30px;
background: color(var(--lightgrey) l(+10%));
background: color-mod(var(--lightgrey) l(+10%));
box-shadow: #fff 0 0 0 5px;
transform: rotate(45deg);
}
@ -1250,7 +1262,7 @@ Usage (In Ghost editor):
.post-full-content h4,
.post-full-content h5,
.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;
}
@ -1408,7 +1420,8 @@ Usage (In Ghost editor):
.post-full-title {
margin-top: 0.2em;
font-size: 3.3rem;
font-size: 4.2rem;
line-height: 1.05em;
}
.post-full-image {
@ -1469,13 +1482,13 @@ Usage (In Ghost editor):
letter-spacing: 0.2px;
text-align: left;
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 td {
padding: 6px 12px;
border: color(var(--whitegrey) l(-1%) s(-5%)) 1px solid;
border: color-mod(var(--whitegrey) l(-1%) s(-5%)) 1px solid;
}
@ -1487,7 +1500,7 @@ Usage (In Ghost editor):
justify-content: space-between;
margin: 35px 0 0;
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 {
@ -1503,7 +1516,7 @@ Usage (In Ghost editor):
.post-full-byline-meta {
margin: 2px 0 0;
color: color(var(--midgrey) l(+10%));
color: color-mod(var(--midgrey) l(+10%));
font-size: 1.2rem;
line-height: 1.2em;
letter-spacing: 0.2px;
@ -1518,7 +1531,7 @@ Usage (In Ghost editor):
}
.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 {
@ -1598,7 +1611,7 @@ Usage (In Ghost editor):
.author-card .author-info p {
margin: 4px 0 0;
color: color(var(--midgrey) l(-10%));
color: color-mod(var(--midgrey) l(-10%));
}
.author-card .author-info .bio h2 {
@ -1652,8 +1665,12 @@ Usage (In Ghost editor):
@media (max-width: 500px) {
.author-avatar {
width: 32px;
height: 32px;
width: 36px;
height: 36px;
}
.post-full-byline {
margin-top: 20px;
}
.post-full-byline-meta {
@ -1672,9 +1689,9 @@ Usage (In Ghost editor):
.subscribe-form {
margin: 1.5em 0;
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;
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;
}
@ -1712,7 +1729,7 @@ Usage (In Ghost editor):
display: block;
padding: 10px;
width: 100%;
border: color(var(--lightgrey) l(+7%)) 1px solid;
border: color-mod(var(--lightgrey) l(+7%)) 1px solid;
color: var(--midgrey);
font-size: 1.8rem;
line-height: 1em;
@ -1726,7 +1743,7 @@ Usage (In Ghost editor):
.subscribe-email:focus {
outline: 0;
border-color: color(var(--lightgrey) l(-2%));
border-color: color-mod(var(--lightgrey) l(-2%));
}
.subscribe-form button {
@ -1742,10 +1759,10 @@ Usage (In Ghost editor):
font-weight: 400;
text-align: center;
background: linear-gradient(
color(var(--blue) whiteness(+7%)),
color(var(--blue) lightness(-7%) saturation(-10%)) 60%,
color(var(--blue) lightness(-7%) saturation(-10%)) 90%,
color(var(--blue) lightness(-4%) saturation(-10%))
color-mod(var(--blue) whiteness(+7%)),
color-mod(var(--blue) lightness(-7%) saturation(-10%)) 60%,
color-mod(var(--blue) lightness(-7%) saturation(-10%)) 90%,
color-mod(var(--blue) lightness(-4%) saturation(-10%))
);
border-radius: 5px;
@ -1754,7 +1771,7 @@ Usage (In Ghost editor):
.subscribe-form button:active,
.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,
@ -1794,7 +1811,7 @@ Usage (In Ghost editor):
.subscribe-form .success .message-success {
display: block;
color: color(var(--green) l(-5%));
color: color-mod(var(--green) l(-5%));
}
.subscribe-form .invalid .message-error,
@ -1844,7 +1861,7 @@ Usage (In Ghost editor):
.read-next {
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 {
@ -1902,7 +1919,7 @@ Usage (In Ghost editor):
overflow: hidden;
margin: 0 25px 50px;
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;
}
@ -2057,6 +2074,7 @@ Usage (In Ghost editor):
}
.post-full-content .kg-image {
margin: 0 auto;
max-width: 100%;
}
@ -2089,12 +2107,13 @@ Usage (In Ghost editor):
}
.post-full-content figcaption {
margin: 1.0em 0 0;
color: color(var(--midgrey) l(-10%));
margin: 1.0em auto 0;
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-size: 75%;
line-height: 1.5em;
text-align: center;;
text-align: center;
max-width: 1040px;
}
.kg-width-full figcaption {
@ -2197,7 +2216,7 @@ Usage (In Ghost editor):
}
.kg-bookmark-title {
color: color(var(--midgrey) l(-30%));
color: color-mod(var(--midgrey) l(-30%));
font-size: 1.6rem;
line-height: 1.5em;
font-weight: 600;
@ -2213,7 +2232,7 @@ Usage (In Ghost editor):
overflow-y: hidden;
margin-top: 12px;
max-height: 48px;
color: color(var(--midgrey) l(-10%));
color: color-mod(var(--midgrey) l(-10%));
font-size: 1.5rem;
line-height: 1.5em;
font-weight: 400;
@ -2244,7 +2263,7 @@ Usage (In Ghost editor):
flex-wrap: wrap;
align-items: center;
margin-top: 14px;
color: color(var(--midgrey) l(-10%));
color: color-mod(var(--midgrey) l(-10%));
font-size: 1.5rem;
font-weight: 400;
}
@ -2337,6 +2356,10 @@ Usage (In Ghost editor):
padding: 10vw 0 10px;
}
.site-archive-header .author-header {
align-items: center;
}
.site-archive-header .no-image .author-header {
padding-bottom: 20px;
}
@ -2351,7 +2374,7 @@ Usage (In Ghost editor):
.site-header-content .author-profile-image {
z-index: 10;
flex-shrink: 0;
margin: 5px 0 0;
margin: -4px 0 0;
width: 110px;
height: 110px;
box-shadow: rgba(255,255,255,0.1) 0 0 0 6px;
@ -2360,10 +2383,10 @@ Usage (In Ghost editor):
.author-header-content .author-bio {
z-index: 10;
flex-shrink: 0;
margin: 6px 0 -6px;
margin: 6px 0 0;
max-width: 46em;
font-size: 2.0rem;
line-height: 1.4em;
line-height: 1.3em;
font-weight: 400;
opacity: 0.8;
}
@ -2378,6 +2401,7 @@ Usage (In Ghost editor):
font-weight: 400;
letter-spacing: 0.2px;
text-transform: uppercase;
white-space: nowrap;
}
.author-header-content .social-link:first-of-type {
@ -2407,14 +2431,10 @@ Usage (In Ghost editor):
opacity: 1;
}
.author-social-link {
padding: 10px 0;
}
.author-social-link {
display: inline-block;
margin: 0;
padding: 10px 0;
padding: 6px 0;
}
.author-location + .author-stats:before,
@ -2433,6 +2453,14 @@ Usage (In Ghost editor):
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) {
.author-header {
padding: 10px 0 0;
@ -2443,23 +2471,31 @@ Usage (In Ghost editor):
}
.author-header-content {
margin-left: 20px;
align-items: center;
margin: 16px 0 0 0;
}
.site-header-content .author-profile-image {
width: 80px;
height: 80px;
width: 96px;
height: 96px;
}
.author-header-content .author-bio {
font-size: 1.8rem;
line-height: 1.3em;
letter-spacing: 0;
text-align: center;
}
.author-location,
.author-stats {
display: none;
.author-header-content .author-meta {
margin-top: 8px;
}
.author-location + .author-stats:before,
.author-stats + .author-social-link:before,
.author-social-link + .author-social-link:before {
display: inline;
margin: 0 6px;
}
}
@ -2485,7 +2521,7 @@ Usage (In Ghost editor):
.error-message {
padding-bottom: 10vw;
border-bottom: 1px solid color(var(--lightgrey) l(+10%));
border-bottom: 1px solid color-mod(var(--lightgrey) l(+10%));
text-align: center;
}
@ -2548,7 +2584,7 @@ Usage (In Ghost editor):
/* 10. Subscribe Message and Overlay
/* ---------------------------------------------------------- */
.subscribe-success-message {
.subscribe-notification {
position: fixed;
top: 0;
right: 0;
@ -2562,18 +2598,42 @@ Usage (In Ghost editor):
transform: translateY(-175%);
}
.subscribe-notification.subscribe-failure-message {
background: var(--red);
}
.subscribe-success .subscribe-success-message {
visibility: visible;
transform: translateY(0);
}
.subscribe-success-message.close {
.subscribe-failure .subscribe-failure-message {
visibility: visible;
transform: translateY(0);
}
.subscribe-notification.close {
visibility: hidden;
transition: all 1.35s cubic-bezier(0.19, 1, 0.22, 1);
transform: translateY(-175%);
}
.subscribe-close {
.subscribe-notification .subscribe-close-button {
left: 0;
top: 0;
width: 100%;
height: 100%;
}
.subscribe-notification .subscribe-close-button:before,
.subscribe-notification .subscribe-close-button:after {
top: 31px;
right: 20px;
width: 18px;
height: 2px;
}
.subscribe-close-overlay {
position: absolute;
top: 0;
right: 0;
@ -2582,33 +2642,44 @@ Usage (In Ghost editor):
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: "";
position: absolute;
top: 32px;
right: 25px;
top: 20px;
right: 4px;
display: block;
width: 20px;
width: 32px;
height: 1px;
background: #fff;
opacity: 0.8;
transform: rotate(45deg);
}
.subscribe-close:after {
.subscribe-close-button:after {
content: "";
position: absolute;
top: 32px;
right: 25px;
top: 20px;
right: 4px;
display: block;
width: 20px;
width: 32px;
height: 1px;
background: #fff;
opacity: 0.8;
transform: rotate(-45deg);
}
.subscribe-close:hover {
.subscribe-close-overlay:hover,
.subscribe-close-button:hover {
cursor: default;
}
@ -2618,7 +2689,7 @@ Usage (In Ghost editor):
right: 0;
bottom: 0;
left: 0;
z-index: 9000;
z-index: 2000;
display: flex;
justify-content: center;
align-items: center;
@ -2628,20 +2699,14 @@ Usage (In Ghost editor):
pointer-events: none;
}
.subscribe-overlay .subscribe-close:before,
.subscribe-overlay .subscribe-close:after {
top: 36px;
width: 30px;
}
.subscribe-overlay:target {
z-index: 2001;
opacity: 1;
pointer-events: auto;
}
.subscribe-overlay-content {
position: relative;
z-index: 9999;
margin: 0 0 5vw 0;
padding: 4vw;
color: #fff;
@ -2710,7 +2775,7 @@ Usage (In Ghost editor):
.subscribe-email:focus {
outline: 0;
border-color: color(var(--lightgrey) l(-2%));
border-color: color-mod(var(--lightgrey) l(-2%));
}
.subscribe-overlay button {
@ -2725,10 +2790,10 @@ Usage (In Ghost editor):
font-weight: 400;
text-align: center;
background: linear-gradient(
color(var(--blue) whiteness(+7%)),
color(var(--blue) lightness(-7%) saturation(-10%)) 60%,
color(var(--blue) lightness(-7%) saturation(-10%)) 90%,
color(var(--blue) lightness(-4%) saturation(-10%))
color-mod(var(--blue) whiteness(+7%)),
color-mod(var(--blue) lightness(-7%) saturation(-10%)) 60%,
color-mod(var(--blue) lightness(-7%) saturation(-10%)) 90%,
color-mod(var(--blue) lightness(-4%) saturation(-10%))
);
border-radius: 8px;
@ -2737,13 +2802,19 @@ Usage (In Ghost editor):
.subscribe-overlay button:active,
.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 {
top: 5px;
}
@media (max-width: 500px) {
.subscribe-overlay button {
margin: 12px 0 0;
}
}
/* 11. Site Footer
/* ---------------------------------------------------------- */
@ -2753,7 +2824,7 @@ Usage (In Ghost editor):
padding-top: 20px;
padding-bottom: 60px;
color: #fff;
background: color(var(--darkgrey) l(-5%));
background: color-mod(var(--darkgrey) l(-5%));
}
.site-footer-content {
@ -2832,7 +2903,7 @@ Usage (In Ghost editor):
.post-card,
.post-card:hover {
border-bottom-color: color(var(--darkmode) l(+8%));
border-bottom-color: color-mod(var(--darkmode) l(+8%));
}
.author-profile-image {
@ -2856,12 +2927,12 @@ Usage (In Ghost editor):
}
.post-card-excerpt {
color: color(var(--midgrey) l(+10%));
color: color-mod(var(--midgrey) l(+10%));
}
.author-avatar,
.static-avatar {
border-color: color(var(--darkgrey) l(+2%));
border-color: color-mod(var(--darkgrey) l(+2%));
}
.site-main,
@ -2879,15 +2950,15 @@ Usage (In Ghost editor):
}
.post-full-custom-excerpt {
color: color(var(--midgrey) l(+10%));
color: color-mod(var(--midgrey) l(+10%));
}
.post-full-image {
background-color: color(var(--darkmode) l(+8%));
background-color: color-mod(var(--darkmode) l(+8%));
}
.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 {
@ -2899,12 +2970,12 @@ Usage (In Ghost editor):
}
.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);
}
.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 {
@ -2938,7 +3009,12 @@ Usage (In Ghost editor):
}
hr {
border-top-color: color(var(--darkmode) l(+8%));
border-top-color: color-mod(var(--darkmode) l(+8%));
}
.post-full-content hr:after {
background: color-mod(var(--darkmode) l(+8%));
box-shadow: var(--darkmode) 0 0 0 5px;
}
.post-full-content figcaption {
@ -2946,21 +3022,21 @@ Usage (In Ghost editor):
}
.post-full-content table td:first-child {
background-image: linear-gradient(to right, var(--darkmode) 50%, color(var(--darkmode) a(0%)) 100%);
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(var(--darkmode) a(0%)) 100%);
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(var(--darkmode) l(+8%));
background-color: color-mod(var(--darkmode) l(+8%));
}
.post-full-content table th,
.post-full-content table td {
border: color(var(--darkmode) l(+8%)) 1px solid;
border: color-mod(var(--darkmode) l(+8%)) 1px solid;
}
.post-full-content .kg-bookmark-container,
@ -2969,6 +3045,10 @@ Usage (In Ghost editor):
box-shadow: 0 0 1px rgba(255,255,255,0.9);
}
.post-full-content input {
color: color-mod(var(--midgrey) l(-30%));
}
.kg-bookmark-title {
color: #fff;
}
@ -2987,7 +3067,7 @@ Usage (In Ghost editor):
}
.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 {
@ -2996,7 +3076,7 @@ Usage (In Ghost editor):
.subscribe-form {
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 {
@ -3008,13 +3088,13 @@ Usage (In Ghost editor):
}
.subscribe-email {
border-color: color(var(--darkmode) l(+6%));
border-color: color-mod(var(--darkmode) l(+6%));
color: rgba(255, 255, 255, 0.9);
background: color(var(--darkmode) l(+3%));
background: color-mod(var(--darkmode) l(+3%));
}
.subscribe-email:focus {
border-color: color(var(--darkmode) l(+25%));
border-color: color-mod(var(--darkmode) l(+25%));
}
.subscribe-form button {
@ -3023,10 +3103,10 @@ Usage (In Ghost editor):
.subscribe-form .invalid .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 {
color: color(var(--green) l(+5%) s(-5%));
color: color-mod(var(--green) l(+5%) s(-5%));
}
}

View File

@ -12,6 +12,8 @@
<div class="site-header-content author-header">
{{#if profile_image}}
<img class="author-profile-image" src="{{profile_image}}" alt="{{name}}" />
{{else}}
<span class="author-profile-image">{{> "icons/avatar"}}</span>
{{/if}}
<div class="author-header-content">
<h1 class="site-title">{{name}}</h1>

View File

@ -1,6 +1,5 @@
{
"github": {
"username": "<username>",
"token": "<gh-personal-access-token>"
}
}

View File

@ -42,13 +42,18 @@
{{!-- The big email subscribe modal content --}}
{{#if @labs.members}}
<div class="subscribe-success-message">
<a class="subscribe-close" href="javascript:;"></a>
<div class="subscribe-notification subscribe-success-message">
<a class="subscribe-close-button" href="javascript:;"></a>
You've successfully subscribed to {{@site.title}}!
</div>
<div class="subscribe-notification subscribe-failure-message">
<a class="subscribe-close-button" href="javascript:;"></a>
Could not sign up! Invalid sign up link.
</div>
<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">
{{#if @site.logo}}
<img class="subscribe-overlay-logo" src="{{@site.logo}}" alt="{{@site.title}}" />
@ -101,14 +106,19 @@
// Give the parameter a variable name
var action = getParameterByName('action');
var success = getParameterByName('success');
$(document).ready(function () {
if (action == 'subscribe') {
$('body').addClass("subscribe-success");
if (action == 'subscribe' && (success === null || success === 'true')) {
$('body').addClass('subscribe-success');
}
$('.subscribe-success-message .subscribe-close').click(function () {
$('.subscribe-success-message').addClass('close');
if (action == 'subscribe' && success === 'false') {
$('body').addClass('subscribe-failure');
}
$('.subscribe-notification .subscribe-close-button').click(function () {
$('.subscribe-notification').addClass('close');
});
// Reset form on opening subscrion overlay

View File

@ -1,5 +1,8 @@
const {series, watch, src, dest, parallel} = require('gulp');
const pump = require('pump');
const path = require('path');
const releaseUtils = require('@tryghost/release-utils');
const inquirer = require('inquirer');
// gulp plugins and utils
const livereload = require('gulp-livereload');
@ -12,11 +15,14 @@ const fs = require('fs');
// postcss plugins
const autoprefixer = require('autoprefixer');
const colorFunction = require('postcss-color-function');
const colorFunction = require('postcss-color-mod-function');
const cssnano = require('cssnano');
const customProperties = require('postcss-custom-properties');
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) {
livereload.listen();
done();
@ -39,17 +45,14 @@ function hbs(done) {
}
function css(done) {
const processors = [
easyimport,
customProperties({preserve: false}),
colorFunction(),
autoprefixer(),
cssnano()
];
pump([
src('assets/css/*.css', {sourcemaps: true}),
postcss(processors),
postcss([
easyimport,
colorFunction(),
autoprefixer(),
cssnano()
]),
dest('assets/built/', {sourcemaps: '.'}),
livereload()
], handleError(done));
@ -70,18 +73,17 @@ function js(done) {
}
function zipper(done) {
const targetDir = 'dist/';
const themeName = require('./package.json').name;
const filename = themeName + '.zip';
const filename = require('./package.json').name + '.zip';
pump([
src([
'**',
'!node_modules', '!node_modules/**',
'!dist', '!dist/**'
'!dist', '!dist/**',
'!yarn-error.log'
]),
zip(filename),
dest(targetDir)
dest('dist/')
], handleError(done));
}
@ -89,128 +91,97 @@ const cssWatcher = () => watch('assets/css/**', css);
const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs'], hbs);
const watcher = parallel(cssWatcher, hbsWatcher);
const build = series(css, js);
const dev = series(build, serve, watcher);
exports.build = build;
exports.zip = series(build, zipper);
exports.default = dev;
exports.default = series(build, serve, watcher);
// release imports
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 = () => {
exports.release = () => {
// @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
var packageJSON = JSON.parse(fs.readFileSync('./package.json'));
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 === '') {
console.log('Invalid version.');
console.log(`Invalid version: ${newVersion}`);
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.');
return;
}
return previousRelease()
.then((previousVersion) => {
changelog({previousVersion});
let compatibleWithGhost;
return releaseUtils
.releases
.create({
draft: true,
preRelease: false,
tagName: newVersion,
releaseName: newVersion,
userAgent: USER_AGENT,
uri: `https://api.github.com/repos/${REPO}/releases`,
github: {
username: config.github.username,
token: config.github.token
},
content: [`**Ships with Ghost ${shipsWithGhost} Compatible with Ghost >= ${compatibleWithGhost}**\n\n`],
changelogPath: CHANGELOG_PATH
})
.then((response) => {
console.log(`\nRelease draft generated: ${response.releaseUrl}\n`);
});
return inquirer.prompt([{
type: 'input',
name: 'compatibleWithGhost',
message: 'Which version of Ghost is it compatible with?',
default: '3.0.0'
}])
.then(result => {
compatibleWithGhost = result.compatibleWithGhost;
return Promise.resolve();
})
.then(() => releaseUtils.releases.get({
userAgent: 'Casper',
uri: `https://api.github.com/repos/${REPO_READONLY}/releases`
}))
.then((response) => {
if (!response || !response.length) {
console.log('No releases found. Skipping...');
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);
});
};

View File

@ -2,7 +2,7 @@
"name": "casper",
"description": "A clean, minimal default theme for the Ghost publishing platform",
"demo": "https://demo.ghost.io",
"version": "3.0.6",
"version": "3.1.1",
"engines": {
"ghost": ">=3.0.0",
"ghost-api": "v3"
@ -46,19 +46,20 @@
"bugs": "https://github.com/TryGhost/Casper/issues",
"contributors": "https://github.com/TryGhost/Casper/graphs/contributors",
"devDependencies": {
"@tryghost/release-utils": "0.3.3",
"autoprefixer": "9.7.1",
"@tryghost/release-utils": "0.6.7",
"autoprefixer": "10.0.1",
"beeper": "2.0.0",
"cssnano": "4.1.10",
"gscan": "3.2.1",
"gscan": "3.5.7",
"gulp": "4.0.2",
"gulp-concat": "2.6.1",
"gulp-livereload": "4.0.2",
"gulp-postcss": "8.0.0",
"gulp-postcss": "9.0.0",
"gulp-uglify": "3.0.2",
"gulp-zip": "5.0.1",
"postcss-color-function": "4.1.0",
"postcss-custom-properties": "9.0.2",
"gulp-zip": "5.0.2",
"inquirer": "7.3.3",
"postcss": "8.1.1",
"postcss-color-mod-function": "3.0.3",
"postcss-easy-import": "3.0.0",
"pump": "3.0.0"
},

View File

@ -10,6 +10,7 @@
{{img_url feature_image size="l"}} 1000w,
{{img_url feature_image size="xl"}} 2000w"
sizes="(max-width: 1000px) 400px, 700px"
loading="lazy"
src="{{img_url feature_image size="m"}}"
alt="{{title}}"
/>

View File

@ -1,8 +1,5 @@
{
"extends": [
"@tryghost:theme"
],
"node": {
"supportPolicy": ["lts_latest"]
}
]
}

2213
yarn.lock

File diff suppressed because it is too large Load Diff