Compare commits

...

123 Commits
3.0.0 ... 3.1.2

Author SHA1 Message Date
8fefeca41b 3.1.2 2020-11-17 12:32:25 +00:00
45f5c83118 Update dependency postcss to v8.1.7 2020-11-10 18:06:13 +00:00
c3cb51711a Changed bookmark card metadata styling to be consistent with the editor
Classes for author and publisher are temporarily swapped to make sure the changes are backwards compatible until Ghost 4.0
2020-11-10 18:17:11 +01:00
3d189760a8 Update dependency autoprefixer to v10.0.2 2020-11-10 15:05:07 +00:00
8087366537 Update dependency postcss to v8.1.6 2020-11-05 17:05:11 +00:00
7748f8c781 Update dependency postcss to v8.1.5 2020-11-05 15:54:45 +00:00
8783bd4ee8 Update dependency @tryghost/release-utils to v0.6.8 2020-11-05 04:41:15 +00:00
006b056adc Lock file maintenance 2020-11-01 00:04:25 +00:00
fe690d4048 Update dependency postcss to v8.1.4 2020-10-26 00:06:23 +00:00
c3c0374ca6 Update dependency postcss to v8.1.3 2020-10-23 02:25:21 +00:00
0429f85774 Update dependency gscan to v3.6.0 2020-10-21 10:22:37 +00:00
1f8df12a7c Update actions/checkout action to v2 2020-10-20 16:04:56 +00:00
75e68ce5b7 Update TryGhost/action-deploy-theme action to v1.4.1 2020-10-20 14:07:13 +00:00
fa15a48192 Update dependency postcss to v8.1.2 2020-10-19 01:06:17 +00:00
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
7c87383bc6 3.0.6 2020-01-13 14:08:24 +02:00
09d701c4bc 🐛 Removed non-existent variable
Refs. https://github.com/TryGhost/Casper/issues/676

- removed corresponding CSS declaration as the variable `--white` doesn't exist
2020-01-10 15:29:50 +01:00
aec67d8b5f 2020 2020-01-07 18:35:56 +00:00
f55e2b0266 Update dependency gscan to v3.2.1 2020-01-01 01:16:54 +00:00
fee94ba192 3.0.5 2019-12-04 20:39:08 +07:00
bf4b8d7f15 Added secondary navigation (#664)
refs https://github.com/TryGhost/Ghost/pull/11409

- Adds secondary navigation to the main menu
- Updated secondary nav mobile styles
- Updated cover for the scrollable main navigation
2019-12-04 17:41:50 +07:00
98543dd068 3.0.4 2019-11-27 14:11:18 +00:00
5063d40a32 Remove backdrop filter from subscribe overlay 2019-11-23 19:06:13 -08:00
7c8cba7fab Pin dependency gulp-concat to 2.6.1 (#647) 2019-11-11 21:15:08 +07:00
e253954051 Lock file maintenance (#650) 2019-11-11 21:14:53 +07:00
4c7fced3aa 3.0.3 2019-11-11 18:55:36 +07:00
fb9f0e6804 Remove Travis from Renovate config 2019-11-08 16:35:58 +07:00
88e3db9d3b Switched to gscan testing via GitHub Actions
no issue
2019-11-08 16:35:06 +07:00
7733f0db63 Update dependency gscan to v3.1.1 2019-11-01 04:27:02 +00:00
1c5db5c027 Update dependency autoprefixer to v9.7.1 2019-11-01 03:25:25 +00:00
e4afcc233f Update dependency @tryghost/release-utils to v0.3.3 2019-11-01 00:26:39 +00:00
a66beb4e10 🐛 Fixed page style in dark mode
closes https://github.com/TryGhost/Casper/issues/643

- fixes background color for pages in dark mode
2019-10-30 13:43:47 +01:00
c82e1cb035 3.0.2 2019-10-30 11:07:59 +00:00
065849105b Author meta and bookmark style refinements
refs. https://github.com/TryGhost/Casper/pull/631
- refined colors of links and separator dots for various cases (light/dark mode/with and without header background image)
- fixed bookmark card hover style
- ran CSSComb
2019-10-30 11:35:29 +01:00
a1fc6090d2 Very small fix on author meta links color 2019-10-30 11:35:29 +01:00
68b0270ed5 Dark mode table style fix (#641)
refs. https://github.com/TryGhost/Casper/issues/637

- fixed styles for tables in dark mode
2019-10-29 16:27:40 +01:00
6d56e5866e 3.0.1 2019-10-29 14:20:08 +00:00
8993409296 Error page improvements (#639)
refs. https://github.com/TryGhost/Casper/issues/632

Error page fixes and improvements
- uses default template (i.e. standard header and footer) on 404 error page
- fixed not displaying authors and primary tags on recommended posts on 404 error page
- fixed background for navigation bar on generic error page
- refined error code and message styles
2019-10-28 16:28:25 +01:00
307c334cd5 🐛 Fixed images on infinite scroll index pages being stretched in Safari (#636)
closes #634, closes #635

- use `document.importNode` to create a clone of post card elements when pulling them in from infinite scroll pages
- cloning the element means the element's owner document matches the viewed document and ensures images in the inserted post card elements are sized according to the viewed document
2019-10-24 17:15:34 +01:00
25 changed files with 1884 additions and 1490 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.4.1
with:
api-url: ${{ secrets.GHOST_ADMIN_API_URL }}
api-key: ${{ secrets.GHOST_ADMIN_API_KEY }}

15
.github/workflows/test.yml vendored Normal file
View 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@v2
- run: yarn
- run: yarn test:ci

View File

@ -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

View File

@ -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
obtaining a copy of this software and associated documentation

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
@ -67,4 +66,4 @@ You can add your own SVG icons in the same manner.
# 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).

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(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);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{-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 */

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;
}

File diff suppressed because it is too large Load Diff

View File

@ -45,7 +45,10 @@
// append contents
var postElements = this.response.querySelectorAll('.post-card');
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

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

@ -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.
--}}
<!DOCTYPE html>
<html>
<head>
<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">
{{!< default}}
{{!-- The tag above means: insert everything in this file
into the {body} of the default.hbs template --}}
<header class="site-header outer {{#if feature_image}}" style="background-image: url({{feature_image}}){{else}}no-image{{/if}}">
<div class="inner">
<nav class="site-nav-center">
{{#if @site.logo}}
<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>
{{/if}}
</nav>
<header class="site-header">
{{> site-header}}
</header>
<main id="site-main" class="site-main outer error-content">
<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>
{{#get "posts" limit="3" include="authors,tags"}}
<div class="post-feed">
{{#foreach posts}}
{{> "post-card"}}
{{/foreach}}
</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}}
</div>
</body>
</html>
</main>

View File

@ -1,7 +1,7 @@
{{!--
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.
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>
@ -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" />
<link rel="stylesheet" type="text/css" href="{{asset "built/screen.css"}}" />
</head>
<body class="error-template">
<body>
<div class="site-wrapper">
<header class="site-header outer {{#if feature_image}}" style="background-image: url({{feature_image}}){{else}}no-image{{/if}}">
<div class="inner">
<nav class="site-nav-center">
{{#if @site.logo}}
<a class="site-nav-logo" href="{{@site.url}}"><img src="{{img_url @site.logo size="xs"}}" alt="{{@site.title}}" /></a>
{{else}}
<header class="site-header no-image">
<div class="site-nav-main outer">
<div class="inner">
<nav class="site-nav-center">
{{#if @site.logo}}
<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>
{{/if}}
</nav>
{{/if}}
</nav>
</div>
</div>
</header>
<main id="site-main" class="site-main outer">
<main id="site-main" class="site-main outer error-content">
<div class="inner">
<section class="error-message">

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.0",
"version": "3.1.2",
"engines": {
"ghost": ">=3.0.0",
"ghost-api": "v3"
@ -15,7 +15,8 @@
"scripts": {
"dev": "gulp",
"zip": "gulp zip",
"test": "gscan --v3 .",
"test": "gscan .",
"test:ci": "gscan --fatal --verbose .",
"pretest": "gulp build",
"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",
@ -45,19 +46,20 @@
"bugs": "https://github.com/TryGhost/Casper/issues",
"contributors": "https://github.com/TryGhost/Casper/graphs/contributors",
"devDependencies": {
"@tryghost/release-utils": "0.3.2",
"autoprefixer": "9.6.5",
"@tryghost/release-utils": "0.6.8",
"autoprefixer": "10.0.2",
"beeper": "2.0.0",
"cssnano": "4.1.10",
"gscan": "3.0.0",
"gscan": "3.6.0",
"gulp": "4.0.2",
"gulp-concat": "^2.6.1",
"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.7",
"postcss-color-mod-function": "3.0.3",
"postcss-easy-import": "3.0.0",
"pump": "3.0.0"
},

View File

@ -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}}
<a class="post-card-image-link" href="{{url}}">
@ -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,32 +1,40 @@
<nav class="site-nav">
<div class="site-nav-left">
{{#if @site.logo}}
<a class="site-nav-logo" href="{{@site.url}}"><img src="{{@site.logo}}" alt="{{@site.title}}" /></a>
{{else}}
<a class="site-nav-logo" href="{{@site.url}}">{{@site.title}}</a>
{{/if}}
<div class="site-nav-content">
{{#if @site.navigation}}
{{navigation}}
<div class="site-nav-left-wrapper">
<div class="site-nav-left">
{{#if @site.logo}}
<a class="site-nav-logo" href="{{@site.url}}"><img src="{{@site.logo}}" alt="{{@site.title}}" /></a>
{{else}}
<a class="site-nav-logo" href="{{@site.url}}">{{@site.title}}</a>
{{/if}}
{{#is "post"}}
<span class="nav-post-title {{#unless @site.logo}}dash{{/unless}}">{{post.title}}</span>
{{/is}}
<div class="site-nav-content">
{{#if @site.navigation}}
{{navigation}}
{{/if}}
{{#is "post"}}
<span class="nav-post-title {{#unless @site.logo}}dash{{/unless}}">{{post.title}}</span>
{{/is}}
</div>
</div>
</div>
<div class="site-nav-right">
<div class="social-links">
{{#if @site.facebook}}
<a class="social-link social-link-fb" href="{{facebook_url @site.facebook}}" title="Facebook" target="_blank" rel="noopener">{{> "icons/facebook"}}</a>
{{/if}}
{{#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>
{{#if @site.secondary_navigation}}
{{navigation type="secondary"}}
{{else}}
<div class="social-links">
{{#if @site.facebook}}
<a class="social-link social-link-fb" href="{{facebook_url @site.facebook}}" title="Facebook" target="_blank" rel="noopener">{{> "icons/facebook"}}</a>
{{/if}}
{{#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}}
<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}}
</div>
</nav>

View File

@ -1,9 +1,5 @@
{
"extends": [
"@tryghost:theme"
],
"travis": { "enabled": true },
"node": {
"supportPolicy": ["lts_latest"]
}
]
}

2432
yarn.lock

File diff suppressed because it is too large Load Diff