mirror of
https://github.com/GenZmeY/casper-i18n.git
synced 2025-07-13 09:16:06 +00:00
Compare commits
56 Commits
Author | SHA1 | Date | |
---|---|---|---|
7421cff4fe | |||
c465d95e14 | |||
c1c6fed941 | |||
5664f81564 | |||
8838afe43f | |||
f53b6b3435 | |||
be77dad00e | |||
408cf0cc1e | |||
cfdc8a3b85 | |||
e6a24de5c4 | |||
6d0a3a8899 | |||
b54c3debd4 | |||
0e0589cb04 | |||
5bfc82bf0c | |||
d3ffc71b34 | |||
871fc4075f | |||
6f37e5a148 | |||
adc055495c | |||
2ed7ea8f13 | |||
4ddbaae803 | |||
7e0e45c643 | |||
e0771bfc7e | |||
8f1a15296a | |||
2bd82a30e8 | |||
feb7f3aac6 | |||
eed15fd9a5 | |||
201b1924cf | |||
387a2aa3f0 | |||
690ca22fb7 | |||
31d43860ac | |||
14f7cc4e31 | |||
7646f90556 | |||
8e17cdc1fb | |||
2da322d93b | |||
709c7196b9 | |||
c97b847002 | |||
7d37adb3cd | |||
4fe7010f4e | |||
6bf34a5a70 | |||
c9a54e25ab | |||
3281f75945 | |||
c8abe3a7c4 | |||
150b698b1c | |||
9ff3aa7858 | |||
8886056719 | |||
93628dc7f0 | |||
702b2cbf1f | |||
e5969f93da | |||
9e29e145fc | |||
74ae3d5140 | |||
1ec7a12d43 | |||
9ec0f08a48 | |||
b09e846fd2 | |||
92d9174b24 | |||
c27fc17844 | |||
d9cf22a0f7 |
2
.github/workflows/deploy-theme.yml
vendored
2
.github/workflows/deploy-theme.yml
vendored
@ -8,7 +8,7 @@ jobs:
|
|||||||
runs-on: ubuntu-18.04
|
runs-on: ubuntu-18.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@master
|
- uses: actions/checkout@master
|
||||||
- uses: TryGhost/action-deploy-theme@v1.2.0
|
- uses: TryGhost/action-deploy-theme@v1.2.1
|
||||||
with:
|
with:
|
||||||
api-url: ${{ secrets.GHOST_ADMIN_API_URL }}
|
api-url: ${{ secrets.GHOST_ADMIN_API_URL }}
|
||||||
api-key: ${{ secrets.GHOST_ADMIN_API_KEY }}
|
api-key: ${{ secrets.GHOST_ADMIN_API_KEY }}
|
||||||
|
27
.github/workflows/test.yml
vendored
27
.github/workflows/test.yml
vendored
@ -4,29 +4,12 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
|
- 'renovate/*'
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
test:
|
||||||
runs-on: ubuntu-18.04
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
if: github.event_name == 'push' || (github.event_name == 'pull_request' && !startsWith(github.head_ref, 'renovate/'))
|
||||||
matrix:
|
|
||||||
node: [ '10' ]
|
|
||||||
name: Node ${{ matrix.node }}
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
- name: Cache node modules
|
- run: yarn
|
||||||
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 test:ci
|
- run: yarn test:ci
|
||||||
|
@ -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);var t=o(this).find(e.join(","));(t=(t=t.not("object object")).not(r)).each(function(){var e,t,i=o(this);0<i.parents(r).length||"embed"===this.tagName.toLowerCase()&&i.parent("object").length||i.parent(".fluid-width-video-wrapper").length||(i.css("height")||i.css("width")||!isNaN(i.attr("height"))&&!isNaN(i.attr("width"))||(i.attr("height",9),i.attr("width",16)),e=("object"===this.tagName.toLowerCase()||i.attr("height")&&!isNaN(parseInt(i.attr("height"),10))?parseInt(i.attr("height"),10):i.height())/(isNaN(parseInt(i.attr("width"),10))?i.width():parseInt(i.attr("width"),10)),i.attr("name")||(t="fitvid"+o.fn.fitVids._count,i.attr("name",t),o.fn.fitVids._count++),i.wrap('<div class="fluid-width-video-container"><div class="fluid-width-video-wrapper"></div></div>').parent(".fluid-width-video-wrapper").css("padding-top",100*e+"%"),i.removeAttr("height").removeAttr("width"))})})},o.fn.fitVids._count=0}(window.jQuery||window.Zepto),function(e){e.addEventListener("DOMContentLoaded",function(){e.querySelectorAll(".kg-gallery-image img").forEach(function(e){var t=e.closest(".kg-gallery-image"),i=e.attributes.width.value/e.attributes.height.value;t.style.flex=i+" 1 0%"})})}((window,document)),function(t,i){var r,n,o,s,a,d,l,c=i.querySelector("link[rel=next]");function u(){if(404===this.status)return t.removeEventListener("scroll",f),void t.removeEventListener("resize",v);this.response.querySelectorAll(".post-card").forEach(function(e){r.appendChild(i.importNode(e,!0))});var e=this.response.querySelector("link[rel=next]");e?c.href=e.href:(t.removeEventListener("scroll",f),t.removeEventListener("resize",v)),l=i.documentElement.scrollHeight,s=o=!1}function e(){var e;s||(a+d<=l-n?o=!1:(s=!0,(e=new t.XMLHttpRequest).responseType="document",e.addEventListener("load",u),e.open("GET",c.href),e.send(null)))}function h(){o||t.requestAnimationFrame(e),o=!0}function f(){a=t.scrollY,h()}function v(){d=t.innerHeight,l=i.documentElement.scrollHeight,h()}!c||(r=i.querySelector(".post-feed"))&&(s=o=!(n=300),a=t.scrollY,d=t.innerHeight,l=i.documentElement.scrollHeight,t.addEventListener("scroll",f,{passive:!0}),t.addEventListener("resize",v),h())}(window,document),function(s,a){s.Casper||(s.Casper={}),s.Casper.stickyNavTitle=function(e){var t=a.querySelector(e.navSelector),i=a.querySelector(e.titleSelector),r=s.scrollY,n=!1;function o(){i.getBoundingClientRect().top+s.scrollY+(i.offsetHeight+35)<=r?t.classList.add(e.activeClass):t.classList.remove(e.activeClass),n=!1}s.addEventListener("scroll",function(){r=s.scrollY,function(){n||requestAnimationFrame(o);n=!0}()},{passive:!0}),o()}}(window,document);
|
||||||
//# sourceMappingURL=casper.js.map
|
//# sourceMappingURL=casper.js.map
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -205,6 +205,7 @@ body {
|
|||||||
.site-home-header .site-description {
|
.site-home-header .site-description {
|
||||||
font-size: 2.2rem;
|
font-size: 2.2rem;
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -249,7 +250,7 @@ body {
|
|||||||
|
|
||||||
@media (max-width: 500px) {
|
@media (max-width: 500px) {
|
||||||
.site-home-header .site-title {
|
.site-home-header .site-title {
|
||||||
font-size: 3.2rem;
|
font-size: 4.2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-home-header .site-description {
|
.site-home-header .site-description {
|
||||||
@ -257,8 +258,19 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.site-archive-header .site-header-content {
|
.site-archive-header .site-header-content {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
min-height: unset;
|
min-height: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.site-archive-header .site-title {
|
||||||
|
font-size: 4.2rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.site-archive-header .no-image .site-header-content {
|
||||||
|
padding: 12vw 0 20px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -280,7 +292,7 @@ body {
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
overflow-y: hidden;
|
overflow: hidden;
|
||||||
height: 64px;
|
height: 64px;
|
||||||
font-size: 1.3rem;
|
font-size: 1.3rem;
|
||||||
}
|
}
|
||||||
@ -454,8 +466,8 @@ The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px o
|
|||||||
.site-nav-right {
|
.site-nav-right {
|
||||||
flex: 0 1 auto;
|
flex: 0 1 auto;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
|
align-items: center;
|
||||||
padding: 10px 0;
|
padding: 10px 0;
|
||||||
height: 64px;
|
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 {
|
.subscribe-button {
|
||||||
display: block;
|
display: block;
|
||||||
padding: 4px 10px;
|
|
||||||
margin: 0 0 0 10px;
|
margin: 0 0 0 10px;
|
||||||
|
padding: 4px 10px;
|
||||||
border: #fff 1px solid;
|
border: #fff 1px solid;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
line-height: 1em;
|
line-height: 1em;
|
||||||
@ -1157,7 +1169,7 @@ Usage (In Ghost editor):
|
|||||||
.post-full-content blockquote {
|
.post-full-content blockquote {
|
||||||
margin: 0 0 1.5em;
|
margin: 0 0 1.5em;
|
||||||
padding: 0 1.5em;
|
padding: 0 1.5em;
|
||||||
border-left: #3eb0ef 3px solid;
|
border-left: color(var(--blue)) 3px solid;
|
||||||
}
|
}
|
||||||
@media (max-width: 500px) {
|
@media (max-width: 500px) {
|
||||||
.post-full-content blockquote {
|
.post-full-content blockquote {
|
||||||
@ -1408,7 +1420,8 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
.post-full-title {
|
.post-full-title {
|
||||||
margin-top: 0.2em;
|
margin-top: 0.2em;
|
||||||
font-size: 3.3rem;
|
font-size: 4.2rem;
|
||||||
|
line-height: 1.05em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-image {
|
.post-full-image {
|
||||||
@ -1652,8 +1665,12 @@ Usage (In Ghost editor):
|
|||||||
|
|
||||||
@media (max-width: 500px) {
|
@media (max-width: 500px) {
|
||||||
.author-avatar {
|
.author-avatar {
|
||||||
width: 32px;
|
width: 36px;
|
||||||
height: 32px;
|
height: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-full-byline {
|
||||||
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-full-byline-meta {
|
.post-full-byline-meta {
|
||||||
@ -2057,6 +2074,7 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
.post-full-content .kg-image {
|
.post-full-content .kg-image {
|
||||||
|
margin: 0 auto;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2089,12 +2107,13 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
.post-full-content figcaption {
|
.post-full-content figcaption {
|
||||||
margin: 1.0em 0 0;
|
margin: 1.0em auto 0;
|
||||||
color: color(var(--midgrey) l(-10%));
|
color: color(var(--midgrey) l(-10%));
|
||||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
||||||
font-size: 75%;
|
font-size: 75%;
|
||||||
line-height: 1.5em;
|
line-height: 1.5em;
|
||||||
text-align: center;;
|
text-align: center;
|
||||||
|
max-width: 1040px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.kg-width-full figcaption {
|
.kg-width-full figcaption {
|
||||||
@ -2337,6 +2356,10 @@ Usage (In Ghost editor):
|
|||||||
padding: 10vw 0 10px;
|
padding: 10vw 0 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.site-archive-header .author-header {
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
.site-archive-header .no-image .author-header {
|
.site-archive-header .no-image .author-header {
|
||||||
padding-bottom: 20px;
|
padding-bottom: 20px;
|
||||||
}
|
}
|
||||||
@ -2351,7 +2374,7 @@ Usage (In Ghost editor):
|
|||||||
.site-header-content .author-profile-image {
|
.site-header-content .author-profile-image {
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
margin: 5px 0 0;
|
margin: -4px 0 0;
|
||||||
width: 110px;
|
width: 110px;
|
||||||
height: 110px;
|
height: 110px;
|
||||||
box-shadow: rgba(255,255,255,0.1) 0 0 0 6px;
|
box-shadow: rgba(255,255,255,0.1) 0 0 0 6px;
|
||||||
@ -2360,10 +2383,10 @@ Usage (In Ghost editor):
|
|||||||
.author-header-content .author-bio {
|
.author-header-content .author-bio {
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
margin: 6px 0 -6px;
|
margin: 6px 0 0;
|
||||||
max-width: 46em;
|
max-width: 46em;
|
||||||
font-size: 2.0rem;
|
font-size: 2.0rem;
|
||||||
line-height: 1.4em;
|
line-height: 1.3em;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
@ -2378,6 +2401,7 @@ Usage (In Ghost editor):
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
letter-spacing: 0.2px;
|
letter-spacing: 0.2px;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.author-header-content .social-link:first-of-type {
|
.author-header-content .social-link:first-of-type {
|
||||||
@ -2407,14 +2431,10 @@ Usage (In Ghost editor):
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.author-social-link {
|
|
||||||
padding: 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.author-social-link {
|
.author-social-link {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 10px 0;
|
padding: 6px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.author-location + .author-stats:before,
|
.author-location + .author-stats:before,
|
||||||
@ -2433,6 +2453,14 @@ Usage (In Ghost editor):
|
|||||||
color: var(--midgrey);
|
color: var(--midgrey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 700px) {
|
||||||
|
.author-location,
|
||||||
|
.author-stats,
|
||||||
|
.author-stats + .author-social-link:first-of-type:before {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 500px) {
|
@media (max-width: 500px) {
|
||||||
.author-header {
|
.author-header {
|
||||||
padding: 10px 0 0;
|
padding: 10px 0 0;
|
||||||
@ -2443,23 +2471,31 @@ Usage (In Ghost editor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
.author-header-content {
|
.author-header-content {
|
||||||
margin-left: 20px;
|
align-items: center;
|
||||||
|
margin: 16px 0 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-header-content .author-profile-image {
|
.site-header-content .author-profile-image {
|
||||||
width: 80px;
|
width: 96px;
|
||||||
height: 80px;
|
height: 96px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.author-header-content .author-bio {
|
.author-header-content .author-bio {
|
||||||
font-size: 1.8rem;
|
font-size: 1.8rem;
|
||||||
line-height: 1.3em;
|
line-height: 1.3em;
|
||||||
letter-spacing: 0;
|
letter-spacing: 0;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.author-location,
|
.author-header-content .author-meta {
|
||||||
.author-stats {
|
margin-top: 8px;
|
||||||
display: none;
|
}
|
||||||
|
|
||||||
|
.author-location + .author-stats:before,
|
||||||
|
.author-stats + .author-social-link:before,
|
||||||
|
.author-social-link + .author-social-link:before {
|
||||||
|
display: inline;
|
||||||
|
margin: 0 6px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2573,7 +2609,7 @@ Usage (In Ghost editor):
|
|||||||
transform: translateY(-175%);
|
transform: translateY(-175%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-close {
|
.subscribe-close-overlay {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
@ -2582,33 +2618,44 @@ Usage (In Ghost editor):
|
|||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-close:before {
|
.subscribe-close-button {
|
||||||
|
position: absolute;
|
||||||
|
top: 16px;
|
||||||
|
right: 20px;
|
||||||
|
z-index: 2000;
|
||||||
|
display: block;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subscribe-close-button:before {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 32px;
|
top: 20px;
|
||||||
right: 25px;
|
right: 4px;
|
||||||
display: block;
|
display: block;
|
||||||
width: 20px;
|
width: 32px;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
transform: rotate(45deg);
|
transform: rotate(45deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-close:after {
|
.subscribe-close-button:after {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 32px;
|
top: 20px;
|
||||||
right: 25px;
|
right: 4px;
|
||||||
display: block;
|
display: block;
|
||||||
width: 20px;
|
width: 32px;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
transform: rotate(-45deg);
|
transform: rotate(-45deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-close:hover {
|
.subscribe-close-overlay:hover,
|
||||||
|
.subscribe-close-button:hover {
|
||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2618,7 +2665,7 @@ Usage (In Ghost editor):
|
|||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
z-index: 9000;
|
z-index: 2000;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -2628,20 +2675,14 @@ Usage (In Ghost editor):
|
|||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-overlay .subscribe-close:before,
|
|
||||||
.subscribe-overlay .subscribe-close:after {
|
|
||||||
top: 36px;
|
|
||||||
width: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.subscribe-overlay:target {
|
.subscribe-overlay:target {
|
||||||
|
z-index: 2001;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
pointer-events: auto;
|
pointer-events: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.subscribe-overlay-content {
|
.subscribe-overlay-content {
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 9999;
|
|
||||||
margin: 0 0 5vw 0;
|
margin: 0 0 5vw 0;
|
||||||
padding: 4vw;
|
padding: 4vw;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
@ -2744,6 +2785,12 @@ Usage (In Ghost editor):
|
|||||||
top: 5px;
|
top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 500px) {
|
||||||
|
.subscribe-overlay button {
|
||||||
|
margin: 12px 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* 11. Site Footer
|
/* 11. Site Footer
|
||||||
/* ---------------------------------------------------------- */
|
/* ---------------------------------------------------------- */
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
<div class="site-header-content author-header">
|
<div class="site-header-content author-header">
|
||||||
{{#if profile_image}}
|
{{#if profile_image}}
|
||||||
<img class="author-profile-image" src="{{profile_image}}" alt="{{name}}" />
|
<img class="author-profile-image" src="{{profile_image}}" alt="{{name}}" />
|
||||||
|
{{else}}
|
||||||
|
<span class="author-profile-image">{{> "icons/avatar"}}</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<div class="author-header-content">
|
<div class="author-header-content">
|
||||||
<h1 class="site-title">{{name}}</h1>
|
<h1 class="site-title">{{name}}</h1>
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"github": {
|
"github": {
|
||||||
"username": "<username>",
|
|
||||||
"token": "<gh-personal-access-token>"
|
"token": "<gh-personal-access-token>"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="subscribe" class="subscribe-overlay">
|
<div id="subscribe" class="subscribe-overlay">
|
||||||
<a class="subscribe-close" href="#"></a>
|
<a class="subscribe-close-overlay" href="#"></a>
|
||||||
|
<a class="subscribe-close-button" href="#"></a>
|
||||||
<div class="subscribe-overlay-content">
|
<div class="subscribe-overlay-content">
|
||||||
{{#if @site.logo}}
|
{{#if @site.logo}}
|
||||||
<img class="subscribe-overlay-logo" src="{{@site.logo}}" alt="{{@site.title}}" />
|
<img class="subscribe-overlay-logo" src="{{@site.logo}}" alt="{{@site.title}}" />
|
||||||
|
209
gulpfile.js
209
gulpfile.js
@ -1,5 +1,8 @@
|
|||||||
const {series, watch, src, dest, parallel} = require('gulp');
|
const {series, watch, src, dest, parallel} = require('gulp');
|
||||||
const pump = require('pump');
|
const pump = require('pump');
|
||||||
|
const path = require('path');
|
||||||
|
const releaseUtils = require('@tryghost/release-utils');
|
||||||
|
const inquirer = require('inquirer');
|
||||||
|
|
||||||
// gulp plugins and utils
|
// gulp plugins and utils
|
||||||
const livereload = require('gulp-livereload');
|
const livereload = require('gulp-livereload');
|
||||||
@ -17,6 +20,10 @@ const cssnano = require('cssnano');
|
|||||||
const customProperties = require('postcss-custom-properties');
|
const customProperties = require('postcss-custom-properties');
|
||||||
const easyimport = require('postcss-easy-import');
|
const easyimport = require('postcss-easy-import');
|
||||||
|
|
||||||
|
const REPO = 'TryGhost/Casper';
|
||||||
|
const REPO_READONLY = 'TryGhost/Casper';
|
||||||
|
const CHANGELOG_PATH = path.join(process.cwd(), '.', 'changelog.md');
|
||||||
|
|
||||||
function serve(done) {
|
function serve(done) {
|
||||||
livereload.listen();
|
livereload.listen();
|
||||||
done();
|
done();
|
||||||
@ -39,17 +46,15 @@ function hbs(done) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function css(done) {
|
function css(done) {
|
||||||
const processors = [
|
|
||||||
easyimport,
|
|
||||||
customProperties({preserve: false}),
|
|
||||||
colorFunction(),
|
|
||||||
autoprefixer(),
|
|
||||||
cssnano()
|
|
||||||
];
|
|
||||||
|
|
||||||
pump([
|
pump([
|
||||||
src('assets/css/*.css', {sourcemaps: true}),
|
src('assets/css/*.css', {sourcemaps: true}),
|
||||||
postcss(processors),
|
postcss([
|
||||||
|
easyimport,
|
||||||
|
customProperties({preserve: false}),
|
||||||
|
colorFunction(),
|
||||||
|
autoprefixer(),
|
||||||
|
cssnano()
|
||||||
|
]),
|
||||||
dest('assets/built/', {sourcemaps: '.'}),
|
dest('assets/built/', {sourcemaps: '.'}),
|
||||||
livereload()
|
livereload()
|
||||||
], handleError(done));
|
], handleError(done));
|
||||||
@ -70,18 +75,17 @@ function js(done) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function zipper(done) {
|
function zipper(done) {
|
||||||
const targetDir = 'dist/';
|
const filename = require('./package.json').name + '.zip';
|
||||||
const themeName = require('./package.json').name;
|
|
||||||
const filename = themeName + '.zip';
|
|
||||||
|
|
||||||
pump([
|
pump([
|
||||||
src([
|
src([
|
||||||
'**',
|
'**',
|
||||||
'!node_modules', '!node_modules/**',
|
'!node_modules', '!node_modules/**',
|
||||||
'!dist', '!dist/**'
|
'!dist', '!dist/**',
|
||||||
|
'!yarn-error.log'
|
||||||
]),
|
]),
|
||||||
zip(filename),
|
zip(filename),
|
||||||
dest(targetDir)
|
dest('dist/')
|
||||||
], handleError(done));
|
], handleError(done));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,128 +93,97 @@ const cssWatcher = () => watch('assets/css/**', css);
|
|||||||
const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs'], hbs);
|
const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs'], hbs);
|
||||||
const watcher = parallel(cssWatcher, hbsWatcher);
|
const watcher = parallel(cssWatcher, hbsWatcher);
|
||||||
const build = series(css, js);
|
const build = series(css, js);
|
||||||
const dev = series(build, serve, watcher);
|
|
||||||
|
|
||||||
exports.build = build;
|
exports.build = build;
|
||||||
exports.zip = series(build, zipper);
|
exports.zip = series(build, zipper);
|
||||||
exports.default = dev;
|
exports.default = series(build, serve, watcher);
|
||||||
|
|
||||||
// release imports
|
exports.release = () => {
|
||||||
const path = require('path');
|
|
||||||
const releaseUtils = require('@tryghost/release-utils');
|
|
||||||
|
|
||||||
let config;
|
|
||||||
try {
|
|
||||||
config = require('./config');
|
|
||||||
} catch (err) {
|
|
||||||
config = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
const REPO = 'TryGhost/Casper';
|
|
||||||
const USER_AGENT = 'Casper';
|
|
||||||
const CHANGELOG_PATH = path.join(process.cwd(), '.', 'changelog.md');
|
|
||||||
|
|
||||||
const changelog = ({previousVersion}) => {
|
|
||||||
const changelog = new releaseUtils.Changelog({
|
|
||||||
changelogPath: CHANGELOG_PATH,
|
|
||||||
folder: path.join(process.cwd(), '.')
|
|
||||||
});
|
|
||||||
|
|
||||||
changelog
|
|
||||||
.write({
|
|
||||||
githubRepoPath: `https://github.com/${REPO}`,
|
|
||||||
lastVersion: previousVersion
|
|
||||||
})
|
|
||||||
.sort()
|
|
||||||
.clean();
|
|
||||||
};
|
|
||||||
|
|
||||||
const previousRelease = () => {
|
|
||||||
return releaseUtils
|
|
||||||
.releases
|
|
||||||
.get({
|
|
||||||
userAgent: USER_AGENT,
|
|
||||||
uri: `https://api.github.com/repos/${REPO}/releases`
|
|
||||||
})
|
|
||||||
.then((response) => {
|
|
||||||
if (!response || !response.length) {
|
|
||||||
console.log('No releases found. Skipping');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let prevVersion = response[0].tag_name || response[0].name;
|
|
||||||
console.log(`Previous version ${prevVersion}`);
|
|
||||||
return prevVersion;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* `yarn ship` will trigger `postship` task.
|
|
||||||
*
|
|
||||||
* [optional] For full automation
|
|
||||||
*
|
|
||||||
* `GHOST=2.10.1,2.10.0 yarn ship`
|
|
||||||
* First value: Ships with Ghost
|
|
||||||
* Second value: Compatible with Ghost/GScan
|
|
||||||
*
|
|
||||||
* You can manually run in case the task has thrown an error.
|
|
||||||
*
|
|
||||||
* `npm_package_version=0.5.0 gulp release`
|
|
||||||
*/
|
|
||||||
const release = () => {
|
|
||||||
// @NOTE: https://yarnpkg.com/lang/en/docs/cli/version/
|
// @NOTE: https://yarnpkg.com/lang/en/docs/cli/version/
|
||||||
// require(./package.json) can run into caching issues, this re-reads from file everytime on release
|
// require(./package.json) can run into caching issues, this re-reads from file everytime on release
|
||||||
var packageJSON = JSON.parse(fs.readFileSync('./package.json'));
|
var packageJSON = JSON.parse(fs.readFileSync('./package.json'));
|
||||||
const newVersion = packageJSON.version;
|
const newVersion = packageJSON.version;
|
||||||
let shipsWithGhost = '{version}';
|
|
||||||
let compatibleWithGhost = '2.10.0';
|
|
||||||
const ghostEnvValues = process.env.GHOST || null;
|
|
||||||
|
|
||||||
if (ghostEnvValues) {
|
|
||||||
shipsWithGhost = ghostEnvValues.split(',')[0];
|
|
||||||
compatibleWithGhost = ghostEnvValues.split(',')[1];
|
|
||||||
|
|
||||||
if (!compatibleWithGhost) {
|
|
||||||
compatibleWithGhost = '2.10.0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!newVersion || newVersion === '') {
|
if (!newVersion || newVersion === '') {
|
||||||
console.log('Invalid version.');
|
console.log(`Invalid version: ${newVersion}`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(`\nDraft release for ${newVersion}.`);
|
console.log(`\nCreating release for ${newVersion}...`);
|
||||||
|
|
||||||
if (!config || !config.github || !config.github.username || !config.github.token) {
|
let config;
|
||||||
|
try {
|
||||||
|
config = require('./config');
|
||||||
|
} catch (err) {
|
||||||
|
config = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!config || !config.github || !config.github.token) {
|
||||||
console.log('Please copy config.example.json and configure Github token.');
|
console.log('Please copy config.example.json and configure Github token.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return previousRelease()
|
let compatibleWithGhost;
|
||||||
.then((previousVersion) => {
|
|
||||||
changelog({previousVersion});
|
|
||||||
|
|
||||||
return releaseUtils
|
return inquirer.prompt([{
|
||||||
.releases
|
type: 'input',
|
||||||
.create({
|
name: 'compatibleWithGhost',
|
||||||
draft: true,
|
message: 'Which version of Ghost is it compatible with?',
|
||||||
preRelease: false,
|
default: '3.0.0'
|
||||||
tagName: newVersion,
|
}])
|
||||||
releaseName: newVersion,
|
.then(result => {
|
||||||
userAgent: USER_AGENT,
|
compatibleWithGhost = result.compatibleWithGhost;
|
||||||
uri: `https://api.github.com/repos/${REPO}/releases`,
|
return Promise.resolve();
|
||||||
github: {
|
})
|
||||||
username: config.github.username,
|
.then(() => releaseUtils.releases.get({
|
||||||
token: config.github.token
|
userAgent: 'Casper',
|
||||||
},
|
uri: `https://api.github.com/repos/${REPO_READONLY}/releases`
|
||||||
content: [`**Ships with Ghost ${shipsWithGhost} Compatible with Ghost >= ${compatibleWithGhost}**\n\n`],
|
}))
|
||||||
changelogPath: CHANGELOG_PATH
|
.then((response) => {
|
||||||
})
|
if (!response || !response.length) {
|
||||||
.then((response) => {
|
console.log('No releases found. Skipping...');
|
||||||
console.log(`\nRelease draft generated: ${response.releaseUrl}\n`);
|
return;
|
||||||
});
|
}
|
||||||
|
|
||||||
|
let previousVersion = response[0].tag_name || response[0].name;
|
||||||
|
console.log(`Previous version: ${previousVersion}`);
|
||||||
|
return Promise.resolve(previousVersion);
|
||||||
|
})
|
||||||
|
.then((previousVersion) => {
|
||||||
|
const changelog = new releaseUtils.Changelog({
|
||||||
|
changelogPath: CHANGELOG_PATH,
|
||||||
|
folder: path.join(process.cwd(), '.')
|
||||||
});
|
});
|
||||||
};
|
|
||||||
|
|
||||||
exports.release = release;
|
changelog
|
||||||
|
.write({
|
||||||
|
githubRepoPath: `https://github.com/${REPO}`,
|
||||||
|
lastVersion: previousVersion
|
||||||
|
})
|
||||||
|
.sort()
|
||||||
|
.clean();
|
||||||
|
|
||||||
|
return Promise.resolve();
|
||||||
|
})
|
||||||
|
.then(() => releaseUtils.releases.create({
|
||||||
|
draft: true,
|
||||||
|
preRelease: false,
|
||||||
|
tagName: newVersion,
|
||||||
|
releaseName: newVersion,
|
||||||
|
userAgent: 'Casper',
|
||||||
|
uri: `https://api.github.com/repos/${REPO}/releases`,
|
||||||
|
github: {
|
||||||
|
token: config.github.token
|
||||||
|
},
|
||||||
|
content: [`**Compatible with Ghost ≥ ${compatibleWithGhost}**\n\n`],
|
||||||
|
changelogPath: CHANGELOG_PATH
|
||||||
|
}))
|
||||||
|
.then((response) => {
|
||||||
|
console.log(`\nRelease draft generated: ${response.releaseUrl}\n`);
|
||||||
|
return Promise.resolve();
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.error(err);
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
13
package.json
13
package.json
@ -2,7 +2,7 @@
|
|||||||
"name": "casper",
|
"name": "casper",
|
||||||
"description": "A clean, minimal default theme for the Ghost publishing platform",
|
"description": "A clean, minimal default theme for the Ghost publishing platform",
|
||||||
"demo": "https://demo.ghost.io",
|
"demo": "https://demo.ghost.io",
|
||||||
"version": "3.0.6",
|
"version": "3.0.13",
|
||||||
"engines": {
|
"engines": {
|
||||||
"ghost": ">=3.0.0",
|
"ghost": ">=3.0.0",
|
||||||
"ghost-api": "v3"
|
"ghost-api": "v3"
|
||||||
@ -46,19 +46,20 @@
|
|||||||
"bugs": "https://github.com/TryGhost/Casper/issues",
|
"bugs": "https://github.com/TryGhost/Casper/issues",
|
||||||
"contributors": "https://github.com/TryGhost/Casper/graphs/contributors",
|
"contributors": "https://github.com/TryGhost/Casper/graphs/contributors",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tryghost/release-utils": "0.3.3",
|
"@tryghost/release-utils": "0.6.3",
|
||||||
"autoprefixer": "9.7.1",
|
"autoprefixer": "9.8.5",
|
||||||
"beeper": "2.0.0",
|
"beeper": "2.0.0",
|
||||||
"cssnano": "4.1.10",
|
"cssnano": "4.1.10",
|
||||||
"gscan": "3.2.1",
|
"gscan": "3.5.4",
|
||||||
"gulp": "4.0.2",
|
"gulp": "4.0.2",
|
||||||
"gulp-concat": "2.6.1",
|
"gulp-concat": "2.6.1",
|
||||||
"gulp-livereload": "4.0.2",
|
"gulp-livereload": "4.0.2",
|
||||||
"gulp-postcss": "8.0.0",
|
"gulp-postcss": "8.0.0",
|
||||||
"gulp-uglify": "3.0.2",
|
"gulp-uglify": "3.0.2",
|
||||||
"gulp-zip": "5.0.1",
|
"gulp-zip": "5.0.2",
|
||||||
|
"inquirer": "7.3.2",
|
||||||
"postcss-color-function": "4.1.0",
|
"postcss-color-function": "4.1.0",
|
||||||
"postcss-custom-properties": "9.0.2",
|
"postcss-custom-properties": "9.1.1",
|
||||||
"postcss-easy-import": "3.0.0",
|
"postcss-easy-import": "3.0.0",
|
||||||
"pump": "3.0.0"
|
"pump": "3.0.0"
|
||||||
},
|
},
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
{{img_url feature_image size="l"}} 1000w,
|
{{img_url feature_image size="l"}} 1000w,
|
||||||
{{img_url feature_image size="xl"}} 2000w"
|
{{img_url feature_image size="xl"}} 2000w"
|
||||||
sizes="(max-width: 1000px) 400px, 700px"
|
sizes="(max-width: 1000px) 400px, 700px"
|
||||||
|
loading="lazy"
|
||||||
src="{{img_url feature_image size="m"}}"
|
src="{{img_url feature_image size="m"}}"
|
||||||
alt="{{title}}"
|
alt="{{title}}"
|
||||||
/>
|
/>
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
{
|
{
|
||||||
"extends": [
|
"extends": [
|
||||||
"@tryghost:theme"
|
"@tryghost:theme"
|
||||||
],
|
]
|
||||||
"node": {
|
|
||||||
"supportPolicy": ["lts_latest"]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user