initial commit
This commit is contained in:
commit
86c750cb19
LICENSEREADME.mdauthor.hbscustom-authors.hbscustom-full-feature-image.hbscustom-narrow-feature-image.hbscustom-no-feature-image.hbscustom-tags.hbsdefault.hbsgulpfile.jsindex.hbspackage.jsonpage.hbs
assets
built
css
blog
author.cssfeatured.cssfeed.cssnavigation.csspagination.cssrelated.cssshare.csssingle.csstaxonomy.css
general
misc
screen.csssite
fonts
lora-v23-latin-700.wofflora-v23-latin-700.woff2lora-v23-latin-700italic.wofflora-v23-latin-700italic.woff2lora-v23-latin-italic.wofflora-v23-latin-italic.woff2lora-v23-latin-regular.wofflora-v23-latin-regular.woff2mulish-v10-latin-700.woffmulish-v10-latin-700.woff2mulish-v10-latin-700italic.woffmulish-v10-latin-700italic.woff2mulish-v10-latin-800.woffmulish-v10-latin-800.woff2mulish-v10-latin-italic.woffmulish-v10-latin-italic.woff2mulish-v10-latin-regular.woffmulish-v10-latin-regular.woff2
images
js
partials
comments.hbscontent-cta.hbscontent.hbscover.hbsfeatured-posts.hbs
post.hbstag.hbsicons
arrow-left.hbsarrow-right.hbsavatar.hbscaret-down.hbschevron-right.hbsfacebook.hbsloader.hbssearch.hbsstar.hbstwitter.hbs
loop.hbspagination.hbspswp.hbsrelated-posts.hbssrcset.hbs
|
@ -0,0 +1,22 @@
|
|||
Copyright (c) 2013-2023 Ghost Foundation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -0,0 +1,38 @@
|
|||
# Edition
|
||||
|
||||
The newsletter theme for [Ghost](https://github.com/TryGhost/Ghost). A beautiful way to share stories with your growing audience.
|
||||
|
||||
**Demo: https://edition.ghost.io**
|
||||
|
||||
# Instructions
|
||||
|
||||
1. [Download this theme](https://github.com/TryGhost/Edition/archive/main.zip)
|
||||
2. Log into Ghost, and go to the `Design` settings area to upload the zip file
|
||||
|
||||
# Development
|
||||
|
||||
Edition styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node](https://nodejs.org/), [Yarn](https://yarnpkg.com/) and [Gulp](https://gulpjs.com) installed globally. After that, from the theme's root directory:
|
||||
|
||||
```bash
|
||||
# Install
|
||||
yarn
|
||||
|
||||
# Run build & watch for changes
|
||||
yarn dev
|
||||
```
|
||||
|
||||
Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically.
|
||||
|
||||
The `zip` Gulp task packages the theme files into `dist/edition.zip`, which you can then upload to your site.
|
||||
|
||||
```bash
|
||||
yarn zip
|
||||
```
|
||||
|
||||
# Contribution
|
||||
|
||||
This repo is synced automatically with [TryGhost/Themes](https://github.com/TryGhost/Themes) monorepo. If you're looking to contribute or raise an issue, head over to the main repository [TryGhost/Themes](https://github.com/TryGhost/Themes) where our official themes are developed.
|
||||
|
||||
# Copyright & License
|
||||
|
||||
Copyright (c) 2013-2023 Ghost Foundation - Released under the [MIT license](LICENSE).
|
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
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,50 @@
|
|||
.author-meta {
|
||||
margin-top: 0.5rem;
|
||||
font-size: 1.2rem;
|
||||
font-weight: 800;
|
||||
color: var(--secondary-text-color);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.02rem;
|
||||
}
|
||||
|
||||
.author-social {
|
||||
justify-content: center;
|
||||
margin-top: 2.5rem;
|
||||
}
|
||||
|
||||
.author-list {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.author-list .author-image-placeholder {
|
||||
flex-shrink: 0;
|
||||
width: 54px;
|
||||
margin: 0 -4px;
|
||||
overflow: hidden;
|
||||
border: 2px solid var(--white-color);
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.author-list .author-image-placeholder:first-child {
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.author-list .author-image-placeholder:nth-child(2) {
|
||||
z-index: 9;
|
||||
}
|
||||
|
||||
.author-list .author-image-placeholder:nth-child(3) {
|
||||
z-index: 8;
|
||||
}
|
||||
|
||||
.author-list .author-image-placeholder:nth-child(4) {
|
||||
z-index: 7;
|
||||
}
|
||||
|
||||
.author-list .author-image-placeholder:nth-child(5) {
|
||||
z-index: 6;
|
||||
}
|
||||
|
||||
.author-list .author-image-placeholder span {
|
||||
background-color: var(--light-gray-color);
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
.featured-wrapper {
|
||||
padding-top: 6vmin;
|
||||
margin-top: 3rem;
|
||||
}
|
||||
|
||||
.featured-wrapper .post {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.featured-wrapper .u-placeholder {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.featured-wrapper .post-title {
|
||||
margin-bottom: 0;
|
||||
font-size: 1.8rem;
|
||||
font-weight: 700;
|
||||
line-height: 1.25;
|
||||
letter-spacing: -0.005em;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
.has-serif-title .featured-wrapper .post-title {
|
||||
font-family: var(--font-serif);
|
||||
}
|
||||
|
||||
.featured-title {
|
||||
padding-bottom: 1rem;
|
||||
margin-bottom: 4.5rem;
|
||||
font-size: 1.5rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05rem;
|
||||
border-bottom: 1px solid var(--light-gray-color);
|
||||
}
|
||||
|
||||
.featured-feed {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.featured-feed.tns-slider {
|
||||
opacity: 1;
|
||||
}
|
|
@ -0,0 +1,284 @@
|
|||
.feed-header {
|
||||
margin-top: 3vmin;
|
||||
margin-bottom: 4.5rem;
|
||||
}
|
||||
|
||||
.feed-header-wrapper {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
justify-content: space-between;
|
||||
padding-bottom: 1rem;
|
||||
border-bottom: 1px solid var(--light-gray-color);
|
||||
}
|
||||
|
||||
.feed-header-title {
|
||||
margin-bottom: 0;
|
||||
font-size: 1.5rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05rem;
|
||||
}
|
||||
|
||||
.post-feed {
|
||||
margin-top: -1.5rem;
|
||||
}
|
||||
|
||||
.post-feed.expanded {
|
||||
margin-top: -2.5rem;
|
||||
}
|
||||
|
||||
.post-feed.text-only {
|
||||
margin-top: -3rem;
|
||||
}
|
||||
|
||||
.feed {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 1.5rem 0;
|
||||
overflow: hidden;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.feed:hover .feed-title {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.feed:hover .feed-right {
|
||||
margin-right: 1.6rem;
|
||||
}
|
||||
|
||||
.post-feed.expanded .feed:hover .feed-right {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.feed:hover .feed-icon {
|
||||
transform: translateX(0.4rem);
|
||||
}
|
||||
|
||||
.feed + .feed {
|
||||
border-top: 1px solid var(--light-gray-color);
|
||||
}
|
||||
|
||||
.post-feed > .feed + .feed.feed-paged {
|
||||
margin-top: 3rem;
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
.post-feed.expanded .feed {
|
||||
align-items: flex-start;
|
||||
padding: 3rem 0;
|
||||
}
|
||||
|
||||
.post-feed.expanded:not(.text-only) .feed {
|
||||
padding: 2.5rem 0;
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
.post-feed.right-thumbnail .feed {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
.feed-calendar {
|
||||
display: flex;
|
||||
margin-right: 1.5rem;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 800;
|
||||
line-height: 1.5;
|
||||
color: var(--brand-color);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.post-feed.expanded .feed-calendar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.feed-calendar-month {
|
||||
margin-right: 0.4rem;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.feed-image {
|
||||
flex-shrink: 0;
|
||||
width: 160px;
|
||||
margin-right: 2.5rem;
|
||||
}
|
||||
|
||||
.post-feed.right-thumbnail .feed-image {
|
||||
margin-right: 0;
|
||||
margin-left: 2.5rem;
|
||||
}
|
||||
|
||||
.post-feed:not(.expanded) .feed-image {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.feed-wrapper {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.post-feed.expanded .feed-wrapper {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.post-feed.expanded:not(.text-only) .feed-wrapper {
|
||||
margin-top: -2px;
|
||||
}
|
||||
|
||||
.feed-title {
|
||||
flex-grow: 1;
|
||||
padding-right: 1rem;
|
||||
margin-bottom: 0;
|
||||
overflow: hidden;
|
||||
font-size: 1.6rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.3;
|
||||
text-overflow: ellipsis;
|
||||
letter-spacing: 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.post-feed.expanded .feed-title {
|
||||
font-size: 1.8rem;
|
||||
font-weight: 700;
|
||||
line-height: 1.2;
|
||||
letter-spacing: -0.005em;
|
||||
word-break: break-word;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.has-serif-title .feed-title {
|
||||
font-family: var(--font-serif);
|
||||
}
|
||||
|
||||
.feed-excerpt {
|
||||
display: -webkit-box;
|
||||
margin-top: 0.8rem;
|
||||
overflow-y: hidden;
|
||||
font-size: 1.5rem;
|
||||
line-height: 1.4;
|
||||
word-break: break-word;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
.has-serif-body .feed-excerpt {
|
||||
font-family: var(--font-serif);
|
||||
}
|
||||
|
||||
.post-feed:not(.expanded) .feed-excerpt {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.feed-right {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 1.3rem;
|
||||
color: var(--secondary-text-color);
|
||||
transition: margin-right 0.2s var(--animation-base);
|
||||
}
|
||||
|
||||
.post-feed.expanded .feed-right {
|
||||
margin-top: 1.5rem;
|
||||
}
|
||||
|
||||
.post-feed:not(.expanded) :is(.feed-date, .feed-comments) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.feed-visibility {
|
||||
margin-right: 1rem;
|
||||
line-height: 0;
|
||||
color: var(--orange-color);
|
||||
}
|
||||
|
||||
.post-feed.expanded .feed-visibility {
|
||||
order: 1;
|
||||
margin-left: 1rem;
|
||||
}
|
||||
|
||||
.feed-visibility-public {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.feed-visibility .icon {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
|
||||
.feed-length {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.post-feed.expanded .feed-length {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.post-feed.expanded :is(.feed-length, .feed-comments)::before {
|
||||
padding: 0 0.7rem;
|
||||
font-family: serif;
|
||||
font-size: 1rem;
|
||||
line-height: 1;
|
||||
content: "\02022";
|
||||
}
|
||||
|
||||
.feed-icon {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
line-height: 0;
|
||||
color: var(--secondary-text-color);
|
||||
transition: transform 0.2s var(--animation-base);
|
||||
transform: translateX(2rem);
|
||||
}
|
||||
|
||||
.post-feed.expanded .feed-icon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.feed-icon .icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.feed-group::after {
|
||||
display: block;
|
||||
height: 4.5vmin;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.feed-month {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 30;
|
||||
width: inherit;
|
||||
padding: 1rem 1.5rem;
|
||||
margin: 0 -1.5rem;
|
||||
font-size: 1.5rem;
|
||||
font-weight: 800;
|
||||
color: var(--darker-gray-color);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05rem;
|
||||
background-color: rgba(255, 255, 255, 0.8);
|
||||
backdrop-filter: blur(3px);
|
||||
}
|
||||
|
||||
.feed-group:first-child .feed-month {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (max-width: 575px) {
|
||||
.post-feed.expanded .feed {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.post-feed.expanded .feed-image {
|
||||
width: 100%;
|
||||
margin: 0 0 3rem;
|
||||
}
|
||||
|
||||
.post-feed.expanded .feed-title {
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
.navigation-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.navigation-icon {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
margin: 0 -2px;
|
||||
}
|
||||
|
||||
.navigation-next .navigation-icon {
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.navigation-icon .icon {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
.load-more {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 32px;
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
.related-wrapper {
|
||||
padding: 56px 0 32px;
|
||||
margin-top: 80px;
|
||||
background-color: var(--lighter-gray-color);
|
||||
}
|
||||
|
||||
.related-title {
|
||||
margin-bottom: 20px;
|
||||
font-size: 2.1rem;
|
||||
}
|
||||
|
||||
.related-wrapper .post-feed {
|
||||
margin-top: 0;
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
.share {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.share-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 2.6rem;
|
||||
padding: 0 0.8rem;
|
||||
margin: 0 0.6rem;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 800;
|
||||
line-height: 0;
|
||||
color: var(--white-color);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.04rem;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.share-link .icon {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
margin-right: 0.4rem;
|
||||
fill: currentColor;
|
||||
}
|
||||
|
||||
.share-link .icon-facebook {
|
||||
margin-right: 0.2rem;
|
||||
margin-left: -0.3rem;
|
||||
}
|
||||
|
||||
.share-link-facebook {
|
||||
background-color: var(--facebook-color);
|
||||
}
|
||||
|
||||
.share-link-twitter {
|
||||
background-color: var(--twitter-color);
|
||||
}
|
|
@ -0,0 +1,130 @@
|
|||
.single-header {
|
||||
margin-bottom: 4.5rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.page-template .single-header {
|
||||
margin-top: var(--header-spacing);
|
||||
}
|
||||
|
||||
.single-meta {
|
||||
margin-bottom: 1rem;
|
||||
font-size: 1.2rem;
|
||||
font-weight: 700;
|
||||
color: var(--secondary-text-color);
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.single-meta-item + .single-meta-item::before {
|
||||
padding: 0 0.3rem;
|
||||
font-family: serif;
|
||||
content: "\02022";
|
||||
}
|
||||
|
||||
.single-title {
|
||||
margin-bottom: 0;
|
||||
font-size: 4rem;
|
||||
line-height: 1.2;
|
||||
letter-spacing: -0.1rem;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
.has-serif-title .single-title {
|
||||
font-family: var(--font-serif);
|
||||
}
|
||||
|
||||
.single-excerpt {
|
||||
margin-top: 2rem;
|
||||
font-size: 1.8rem;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
.has-serif-body .single-excerpt {
|
||||
font-family: var(--font-serif);
|
||||
}
|
||||
|
||||
.single-media {
|
||||
margin-top: 4.5rem;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.single-media img {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.single-cta {
|
||||
padding: 3rem;
|
||||
margin-top: 4rem !important;
|
||||
text-align: center;
|
||||
border-top: 5px solid var(--brand-color);
|
||||
border-bottom: 1px solid var(--light-gray-color);
|
||||
}
|
||||
|
||||
.single-cta-title {
|
||||
margin: 0 0 3rem !important;
|
||||
}
|
||||
|
||||
.single-cta-button {
|
||||
margin-bottom: 1rem;
|
||||
font-weight: 800 !important;
|
||||
}
|
||||
|
||||
.single-cta-footer {
|
||||
font-size: 1.4rem;
|
||||
font-weight: 400 !important;
|
||||
letter-spacing: -0.02rem;
|
||||
}
|
||||
|
||||
.single-footer {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-top: 4.5rem;
|
||||
}
|
||||
|
||||
.single-footer-left,
|
||||
.single-footer-right {
|
||||
display: flex;
|
||||
flex: 2;
|
||||
}
|
||||
|
||||
.single-footer-right {
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.single-footer-middle {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.single-footer-top {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.single-footer-title {
|
||||
margin-bottom: 1rem;
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
|
||||
.single-footer-top + .single-footer-bottom {
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.single-header {
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
|
||||
.single-title {
|
||||
font-size: 2.6rem;
|
||||
}
|
||||
|
||||
.single-excerpt {
|
||||
font-size: 1.7rem;
|
||||
}
|
||||
|
||||
.single-media {
|
||||
margin-top: 3rem;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
.taxonomy {
|
||||
margin-bottom: 6vmin;
|
||||
}
|
||||
|
||||
.taxonomy-media {
|
||||
width: 90px;
|
||||
margin: 0 auto 3rem;
|
||||
overflow: hidden;
|
||||
border-radius: 50%;
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
:root {
|
||||
--brand-color: var(--ghost-accent-color, #ff572f);
|
||||
--primary-text-color: #333;
|
||||
--secondary-text-color: #999;
|
||||
--white-color: #fff;
|
||||
--lighter-gray-color: #f6f6f6;
|
||||
--light-gray-color: #e6e6e6;
|
||||
--mid-gray-color: #ccc;
|
||||
--dark-gray-color: #444;
|
||||
--darker-gray-color: #1a1a1a;
|
||||
--black-color: #000;
|
||||
--green-color: #28a745;
|
||||
--orange-color: #ffc107;
|
||||
--red-color: #dc3545;
|
||||
--facebook-color: #3b5998;
|
||||
--twitter-color: #1da1f2;
|
||||
--rss-color: #f26522;
|
||||
--animation-base: ease-in-out;
|
||||
--font-sans: Mulish, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif;
|
||||
--font-serif: Lora, Times, serif;
|
||||
--navbar-height: 80px;
|
||||
--content-font-size: 1.7rem;
|
||||
--header-spacing: 6vmin;
|
||||
}
|
||||
|
||||
.is-head-brand {
|
||||
--header-spacing: 8vmin;
|
||||
}
|
||||
|
||||
:where(h1, h2, h3, h4, h5, h6) {
|
||||
font-weight: 800;
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
.button {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 36px;
|
||||
padding: 0 15px;
|
||||
font-family: var(--font-base);
|
||||
font-size: 11px;
|
||||
font-weight: 800;
|
||||
color: var(--brand-color);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
cursor: pointer;
|
||||
background-color: var(--white-color);
|
||||
border: 1px solid var(--light-gray-color);
|
||||
border-radius: 3px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.button:hover {
|
||||
border-color: var(--mid-gray-color);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.button-secondary {
|
||||
color: var(--darker-gray-color);
|
||||
}
|
||||
|
||||
.button-icon {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
padding: 0;
|
||||
color: var(--darker-gray-color);
|
||||
cursor: pointer;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.button-icon:hover .icon {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.button-text {
|
||||
padding: 0;
|
||||
line-height: inherit;
|
||||
color: var(--darker-gray-color);
|
||||
cursor: pointer;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
outline: none;
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
@font-face {
|
||||
font-family: Mulish;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local(""), url("../fonts/mulish-v10-latin-regular.woff2") format("woff2"), url("../fonts/mulish-v10-latin-regular.woff") format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: Mulish;
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local(""), url("../fonts/mulish-v10-latin-700.woff2") format("woff2"), url("../fonts/mulish-v10-latin-700.woff") format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: Mulish;
|
||||
font-style: normal;
|
||||
font-weight: 800;
|
||||
src: local(""), url("../fonts/mulish-v10-latin-800.woff2") format("woff2"), url("../fonts/mulish-v10-latin-800.woff") format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: Mulish;
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
src: local(""), url("../fonts/mulish-v10-latin-italic.woff2") format("woff2"), url("../fonts/mulish-v10-latin-italic.woff") format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: Mulish;
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
src: local(""), url("../fonts/mulish-v10-latin-700italic.woff2") format("woff2"), url("../fonts/mulish-v10-latin-700italic.woff") format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: Lora;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local(""), url("../fonts/lora-v23-latin-regular.woff2") format("woff2"), url("../fonts/lora-v23-latin-regular.woff") format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: Lora;
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local(""), url("../fonts/lora-v23-latin-700.woff2") format("woff2"), url("../fonts/lora-v23-latin-700.woff") format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: Lora;
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
src: local(""), url("../fonts/lora-v23-latin-italic.woff2") format("woff2"), url("../fonts/lora-v23-latin-italic.woff") format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: Lora;
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
src: local(""), url("../fonts/lora-v23-latin-700italic.woff2") format("woff2"), url("../fonts/lora-v23-latin-700italic.woff") format("woff");
|
||||
}
|
|
@ -0,0 +1,104 @@
|
|||
label {
|
||||
display: block;
|
||||
font-size: 1.4rem;
|
||||
font-weight: 700;
|
||||
color: var(--darker-gray-color);
|
||||
}
|
||||
|
||||
label + label {
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
label input,
|
||||
label textarea {
|
||||
margin-top: 0.7rem;
|
||||
}
|
||||
|
||||
input,
|
||||
textarea {
|
||||
width: 100%;
|
||||
height: 44px;
|
||||
padding: 0 1.5rem;
|
||||
font-size: 1.6rem;
|
||||
color: var(--darker-gray-color);
|
||||
appearance: none;
|
||||
background-color: var(--white-color);
|
||||
border: 1px solid var(--light-gray-color);
|
||||
border-radius: 6px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
input:focus,
|
||||
textarea:focus {
|
||||
border-color: var(--mid-gray-color);
|
||||
}
|
||||
|
||||
textarea {
|
||||
height: 100%;
|
||||
padding-top: 1.5rem;
|
||||
padding-bottom: 1.5rem;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
.form-wrapper {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.form-button {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
right: 5px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 40px;
|
||||
padding: 0 15px;
|
||||
font-size: 1.3rem;
|
||||
font-weight: 800;
|
||||
color: var(--white-color);
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
background-color: var(--brand-color);
|
||||
border: 0;
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.form-button.with-icon {
|
||||
width: 40px;
|
||||
padding: 0;
|
||||
border-radius: 0 4px 4px 0;
|
||||
}
|
||||
|
||||
.form-wrapper .loader,
|
||||
.form-wrapper .success {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.form-wrapper .loader .icon {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
|
||||
.form-wrapper.loading .default,
|
||||
.form-wrapper.success .default,
|
||||
.form-wrapper.success .loader {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.form-wrapper.loading .loader {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.form-wrapper.success .success {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.contact-form {
|
||||
margin-top: 3rem;
|
||||
}
|
||||
|
||||
.contact-form .button {
|
||||
margin-top: 1.5rem;
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
.icon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
fill: currentColor;
|
||||
}
|
||||
|
||||
.icon-loading {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
.animate__animated {
|
||||
animation-duration: 1s;
|
||||
animation-fill-mode: both;
|
||||
}
|
||||
|
||||
@keyframes bounceIn {
|
||||
from,
|
||||
20%,
|
||||
40%,
|
||||
60%,
|
||||
80%,
|
||||
to {
|
||||
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
|
||||
}
|
||||
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: scale3d(0.7, 0.7, 0.7);
|
||||
}
|
||||
|
||||
40% {
|
||||
transform: scale3d(1.1, 1.1, 1.1);
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: scale3d(1, 1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
.animate__bounceIn {
|
||||
animation-name: bounceIn;
|
||||
animation-duration: 0.3s;
|
||||
}
|
||||
|
||||
@keyframes zoomOut {
|
||||
from {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
50% {
|
||||
opacity: 0;
|
||||
transform: scale3d(0.7, 0.7, 0.7);
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.animate__zoomOut {
|
||||
animation-name: zoomOut;
|
||||
animation-duration: 0.3s;
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
.home-template.with-full-cover:not(.portal-visible) .gh-portal-triggerbtn-iframe {
|
||||
pointer-events: none;
|
||||
opacity: 0;
|
||||
}
|
|
@ -0,0 +1,202 @@
|
|||
.tns-outer {
|
||||
position: relative;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.tns-outer [hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.tns-outer [aria-controls],
|
||||
.tns-outer [data-action] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tns-slider {
|
||||
-webkit-transition: all 0s;
|
||||
-moz-transition: all 0s;
|
||||
transition: all 0s;
|
||||
}
|
||||
|
||||
.tns-slider > .tns-item {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.tns-horizontal.tns-subpixel {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.tns-horizontal.tns-subpixel > .tns-item {
|
||||
display: inline-block;
|
||||
white-space: normal;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.tns-horizontal.tns-no-subpixel::after {
|
||||
display: table;
|
||||
clear: both;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.tns-horizontal.tns-no-subpixel > .tns-item {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.tns-horizontal.tns-carousel.tns-no-subpixel > .tns-item {
|
||||
margin-right: -100%;
|
||||
}
|
||||
|
||||
.tns-no-calc {
|
||||
position: relative;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.tns-gallery {
|
||||
position: relative;
|
||||
left: 0;
|
||||
min-height: 1px;
|
||||
}
|
||||
|
||||
.tns-gallery > .tns-item {
|
||||
position: absolute;
|
||||
left: -100%;
|
||||
-webkit-transition: transform 0s, opacity 0s;
|
||||
-moz-transition: transform 0s, opacity 0s;
|
||||
transition: transform 0s, opacity 0s;
|
||||
}
|
||||
|
||||
.tns-gallery > .tns-slide-active {
|
||||
position: relative;
|
||||
left: auto !important;
|
||||
}
|
||||
|
||||
.tns-gallery > .tns-moving {
|
||||
-webkit-transition: all 0.25s;
|
||||
-moz-transition: all 0.25s;
|
||||
transition: all 0.25s;
|
||||
}
|
||||
|
||||
.tns-autowidth {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.tns-lazy-img {
|
||||
opacity: 0.6;
|
||||
-webkit-transition: opacity 0.6s;
|
||||
-moz-transition: opacity 0.6s;
|
||||
transition: opacity 0.6s;
|
||||
}
|
||||
|
||||
.tns-lazy-img.tns-complete {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.tns-ah {
|
||||
-webkit-transition: height 0s;
|
||||
-moz-transition: height 0s;
|
||||
transition: height 0s;
|
||||
}
|
||||
|
||||
.tns-ovh {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tns-visually-hidden {
|
||||
position: absolute;
|
||||
left: -10000em;
|
||||
}
|
||||
|
||||
.tns-transparent {
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.tns-fadeIn {
|
||||
z-index: 0;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.tns-normal,
|
||||
.tns-fadeOut {
|
||||
z-index: -1;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.tns-vpfix {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.tns-vpfix > div,
|
||||
.tns-vpfix > li {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.tns-t-subp2 {
|
||||
position: relative;
|
||||
width: 310px;
|
||||
height: 10px;
|
||||
margin: 0 auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tns-t-ct {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
width: 2333.3333333%;
|
||||
width: -webkit-calc(100% * 70 / 3);
|
||||
width: -moz-calc(100% * 70 / 3);
|
||||
width: calc(100% * 70 / 3);
|
||||
}
|
||||
|
||||
.tns-t-ct::after {
|
||||
display: table;
|
||||
clear: both;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.tns-t-ct > div {
|
||||
float: left;
|
||||
width: 1.4285714%;
|
||||
width: -webkit-calc(100% / 70);
|
||||
width: -moz-calc(100% / 70);
|
||||
width: calc(100% / 70);
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
.tns-controls button {
|
||||
position: absolute;
|
||||
top: -86px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
padding: 0;
|
||||
color: var(--dark-gray-color);
|
||||
text-align: center;
|
||||
background-color: var(--white-color);
|
||||
border: 1px solid var(--light-gray-color);
|
||||
border-radius: 3px;
|
||||
outline: none;
|
||||
transition: color 0.5s var(--animation-base);
|
||||
}
|
||||
|
||||
.tns-controls button[disabled] {
|
||||
color: var(--mid-gray-color);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.tns-controls button svg {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.tns-controls button[data-controls="prev"] {
|
||||
right: 34px;
|
||||
}
|
||||
|
||||
.tns-controls button[data-controls="next"] {
|
||||
right: 0;
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
.u-permalink {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 50;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.u-placeholder {
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
background-color: var(--lighter-gray-color);
|
||||
}
|
||||
|
||||
.u-placeholder::before {
|
||||
display: block;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.u-placeholder.horizontal::before {
|
||||
padding-bottom: 50%;
|
||||
}
|
||||
|
||||
.u-placeholder.rectangle::before {
|
||||
padding-bottom: 62.5%;
|
||||
}
|
||||
|
||||
.u-placeholder.square::before {
|
||||
padding-bottom: 100%;
|
||||
}
|
||||
|
||||
.u-object-fit {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
@import "@tryghost/shared-theme-assets/assets/css/v1/screen.css";
|
||||
@import "general/fonts.css";
|
||||
@import "general/basics.css";
|
||||
@import "general/button.css";
|
||||
@import "general/form.css";
|
||||
@import "general/icons.css";
|
||||
@import "site/layout.css";
|
||||
@import "site/header.css";
|
||||
@import "site/cover.css";
|
||||
@import "blog/feed.css";
|
||||
@import "blog/featured.css";
|
||||
@import "blog/pagination.css";
|
||||
@import "blog/single.css";
|
||||
@import "blog/author.css";
|
||||
@import "blog/share.css";
|
||||
@import "blog/navigation.css";
|
||||
@import "blog/related.css";
|
||||
@import "blog/taxonomy.css";
|
||||
@import "misc/tiny-slider.css";
|
||||
@import "misc/utils.css";
|
||||
@import "misc/portal.css";
|
||||
@import "misc/animations.css";
|
|
@ -0,0 +1,128 @@
|
|||
body:not(.with-full-cover) .cover {
|
||||
margin-top: 9vmin;
|
||||
}
|
||||
|
||||
.with-full-cover .cover {
|
||||
position: relative;
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.with-full-cover .cover.half {
|
||||
height: 60vh;
|
||||
}
|
||||
|
||||
.with-full-cover .cover::before {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 10;
|
||||
content: "";
|
||||
background-color: #000;
|
||||
opacity: 0.3;
|
||||
transition: opacity 1.5s ease;
|
||||
}
|
||||
|
||||
.cover.image-loading::before {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.cover-image {
|
||||
transition: transform 2s ease;
|
||||
}
|
||||
|
||||
.cover.image-loading .cover-image {
|
||||
transform: scale(1.02);
|
||||
}
|
||||
|
||||
.cover-content {
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
max-width: 720px;
|
||||
margin: auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.cover-description {
|
||||
font-size: 3.6rem;
|
||||
font-weight: 700;
|
||||
line-height: 1.3;
|
||||
letter-spacing: -0.01em;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
.has-serif-title .cover-description {
|
||||
font-family: var(--font-serif);
|
||||
}
|
||||
|
||||
.with-full-cover .cover-description {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.cover-cta {
|
||||
display: flex;
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.cover-cta .button {
|
||||
margin: 0 0.5rem;
|
||||
}
|
||||
|
||||
.cover-form {
|
||||
width: 100%;
|
||||
max-width: 480px;
|
||||
margin-top: 4.5rem;
|
||||
}
|
||||
|
||||
.cover-form input {
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
.with-full-cover .cover-form input {
|
||||
background-color: #fff;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.cover-form .form-button {
|
||||
min-width: 110px;
|
||||
}
|
||||
|
||||
.cover-arrow {
|
||||
position: absolute;
|
||||
bottom: 40px;
|
||||
left: 50%;
|
||||
z-index: 10;
|
||||
display: none;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
margin-left: -20px;
|
||||
}
|
||||
|
||||
.with-full-cover .cover-arrow {
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.cover-arrow .icon {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.cover-description {
|
||||
font-size: 2.7rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991px) {
|
||||
.menu-opened .cover {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
.is-head-left-logo .gh-head-inner {
|
||||
grid-template-columns: 1fr 50% 1fr;
|
||||
}
|
||||
|
||||
.gh-head-logo {
|
||||
font-size: 2.2rem;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.gh-head-menu,
|
||||
.gh-head-actions {
|
||||
font-size: 1.5rem;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.is-head-left-logo .gh-head-menu {
|
||||
justify-content: center;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
.site {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.site-content {
|
||||
flex-grow: 1;
|
||||
padding: 6vmin 0;
|
||||
}
|
||||
|
||||
.is-head-brand .site-content {
|
||||
padding-top: max(8vmin, 5rem);
|
||||
}
|
||||
|
||||
.page-template .site-content {
|
||||
padding-block: 0;
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
After ![]() (image error) Size: 547 B |
|
@ -0,0 +1 @@
|
|||
<svg width="264" height="88" viewBox="0 0 264 88" xmlns="http://www.w3.org/2000/svg"><title>default-skin 2</title><g fill="none" fill-rule="evenodd"><g><path d="M67.002 59.5v3.768c-6.307.84-9.184 5.75-10.002 9.732 2.22-2.83 5.564-5.098 10.002-5.098V71.5L73 65.585 67.002 59.5z" id="Shape" fill="#fff"/><g fill="#fff"><path d="M13 29v-5h2v3h3v2h-5zM13 15h5v2h-3v3h-2v-5zM31 15v5h-2v-3h-3v-2h5zM31 29h-5v-2h3v-3h2v5z" id="Shape"/></g><g fill="#fff"><path d="M62 24v5h-2v-3h-3v-2h5zM62 20h-5v-2h3v-3h2v5zM70 20v-5h2v3h3v2h-5zM70 24h5v2h-3v3h-2v-5z"/></g><path d="M20.586 66l-5.656-5.656 1.414-1.414L22 64.586l5.656-5.656 1.414 1.414L23.414 66l5.656 5.656-1.414 1.414L22 67.414l-5.656 5.656-1.414-1.414L20.586 66z" fill="#fff"/><path d="M111.785 65.03L110 63.5l3-3.5h-10v-2h10l-3-3.5 1.785-1.468L117 59l-5.215 6.03z" fill="#fff"/><path d="M152.215 65.03L154 63.5l-3-3.5h10v-2h-10l3-3.5-1.785-1.468L147 59l5.215 6.03z" fill="#fff"/><g><path id="Rectangle-11" fill="#fff" d="M160.957 28.543l-3.25-3.25-1.413 1.414 3.25 3.25z"/><path d="M152.5 27c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5-5.5 2.462-5.5 5.5 2.462 5.5 5.5 5.5z" id="Oval-1" stroke="#fff" stroke-width="1.5"/><path fill="#fff" d="M150 21h5v1h-5z"/></g><g><path d="M116.957 28.543l-1.414 1.414-3.25-3.25 1.414-1.414 3.25 3.25z" fill="#fff"/><path d="M108.5 27c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5-5.5 2.462-5.5 5.5 2.462 5.5 5.5 5.5z" stroke="#fff" stroke-width="1.5"/><path fill="#fff" d="M106 21h5v1h-5z"/><path fill="#fff" d="M109.043 19.008l-.085 5-1-.017.085-5z"/></g></g></g></svg>
|
After (image error) Size: 1.5 KiB |
Binary file not shown.
After ![]() (image error) Size: 866 B |
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,76 @@
|
|||
var html = document.documentElement;
|
||||
var body = document.body;
|
||||
var timeout;
|
||||
var st = 0;
|
||||
|
||||
cover();
|
||||
featured();
|
||||
pagination(false);
|
||||
|
||||
window.addEventListener('scroll', function () {
|
||||
'use strict';
|
||||
if (body.classList.contains('home-template') && body.classList.contains('with-full-cover') && !document.querySelector('.cover').classList.contains('half')) {
|
||||
if (timeout) {
|
||||
window.cancelAnimationFrame(timeout);
|
||||
}
|
||||
timeout = window.requestAnimationFrame(portalButton);
|
||||
}
|
||||
});
|
||||
|
||||
if (document.querySelector('.cover') && document.querySelector('.cover').classList.contains('half')) {
|
||||
body.classList.add('portal-visible');
|
||||
}
|
||||
|
||||
function portalButton() {
|
||||
'use strict';
|
||||
st = window.scrollY;
|
||||
|
||||
if (st > 300) {
|
||||
body.classList.add('portal-visible');
|
||||
} else {
|
||||
body.classList.remove('portal-visible');
|
||||
}
|
||||
}
|
||||
|
||||
function cover() {
|
||||
'use strict';
|
||||
var cover = document.querySelector('.cover');
|
||||
if (!cover) return;
|
||||
|
||||
imagesLoaded(cover, function () {
|
||||
cover.classList.remove('image-loading');
|
||||
});
|
||||
|
||||
document.querySelector('.cover-arrow').addEventListener('click', function () {
|
||||
var element = cover.nextElementSibling;
|
||||
element.scrollIntoView({behavior: 'smooth', block: 'start'});
|
||||
});
|
||||
}
|
||||
|
||||
function featured() {
|
||||
'use strict';
|
||||
var feed = document.querySelector('.featured-feed');
|
||||
if (!feed) return;
|
||||
|
||||
tns({
|
||||
container: feed,
|
||||
controlsText: [
|
||||
'<svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M20.547 22.107L14.44 16l6.107-6.12L18.667 8l-8 8 8 8 1.88-1.893z"></path></svg>',
|
||||
'<svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M11.453 22.107L17.56 16l-6.107-6.12L13.333 8l8 8-8 8-1.88-1.893z"></path></svg>',
|
||||
],
|
||||
gutter: 30,
|
||||
loop: false,
|
||||
nav: false,
|
||||
responsive: {
|
||||
0: {
|
||||
items: 1,
|
||||
},
|
||||
768: {
|
||||
items: 2,
|
||||
},
|
||||
992: {
|
||||
items: 3,
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
{{!< default}}
|
||||
|
||||
<main class="site-main">
|
||||
|
||||
{{#author}}
|
||||
<section class="taxonomy gh-canvas">
|
||||
|
||||
{{#if profile_image}}
|
||||
<div class="taxonomy-media u-placeholder square">
|
||||
<img class="u-object-fit" src="{{img_url profile_image size="s"}}" alt="{{name}}">
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<header class="single-header">
|
||||
|
||||
{{#if website}}
|
||||
<h1 class="single-title">
|
||||
<a href="{{website}}" target="_blank" rel="noopener noreferrer">{{name}}</a>
|
||||
</h1>
|
||||
{{else}}
|
||||
<h1 class="single-title">{{name}}</h1>
|
||||
{{/if}}
|
||||
|
||||
{{#if location}}
|
||||
<span class="author-meta">{{location}}</span>
|
||||
{{/if}}
|
||||
|
||||
<div class="single-excerpt">{{bio}}</div>
|
||||
|
||||
<div class="share author-social">
|
||||
{{#if facebook}}
|
||||
<a class="share-link share-link-facebook author-social-item" href="https://www.facebook.com/{{facebook}}" target="_blank" rel="noopener noreferrer">
|
||||
{{> "icons/facebook"}}
|
||||
Facebook
|
||||
</a>
|
||||
{{/if}}
|
||||
{{#if twitter}}
|
||||
<a class="share-link share-link-twitter author-social-item" href="https://twitter.com/{{twitter}}" target="_blank" rel="noopener noreferrer">
|
||||
{{> "icons/twitter"}}
|
||||
Twitter
|
||||
</a>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
</section>
|
||||
{{/author}}
|
||||
|
||||
<div class="post-feed gh-feed gh-canvas">
|
||||
{{#foreach posts}}
|
||||
{{> "loop"}}
|
||||
{{/foreach}}
|
||||
</div>
|
||||
|
||||
{{pagination}}
|
||||
|
||||
</main>
|
|
@ -0,0 +1,46 @@
|
|||
{{!< default}}
|
||||
|
||||
<header class="site-header">
|
||||
<div class="outer site-nav-main">
|
||||
<div class="inner">
|
||||
<h1>site nav</h1>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{#post}}
|
||||
|
||||
<main id="site-main" class="site-main outer" role="main">
|
||||
<div class="inner">
|
||||
<header class="post-full-header">
|
||||
<h1 class="post-full-title">{{title}}</h1>
|
||||
</header>
|
||||
|
||||
{{#get 'authors' limit='all' include='count.posts' order='count.posts desc'}}
|
||||
<div class="post-feed">
|
||||
{{#foreach authors}}
|
||||
<article class="post-card {{#unless profile_image}} no-image{{/unless}}">
|
||||
{{#if profile_image}}
|
||||
<a class="post-card-image-link" href="{{url}}">
|
||||
<div class="post-card-image" style="background-image: url({{profile_image}})"></div>
|
||||
</a>
|
||||
{{/if}}
|
||||
<div class="post-card-content">
|
||||
<a class="post-card-content-link" href="{{url}}">
|
||||
<header class="post-card-header">
|
||||
<h2 class="post-card-title">{{name}}</h2>
|
||||
</header>
|
||||
<section class="post-card-excerpt">
|
||||
<p>{{bio}}</p>
|
||||
</section>
|
||||
</a>
|
||||
</div>
|
||||
</article>
|
||||
{{/foreach}}
|
||||
</div>
|
||||
{{/get}}
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{{/post}}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
{{!< default}}
|
||||
|
||||
<main class="site-main">
|
||||
|
||||
{{#post}}
|
||||
{{> "content" width="full"}}
|
||||
{{/post}}
|
||||
|
||||
{{#is "post"}}
|
||||
{{#if @custom.show_related_posts}}
|
||||
{{> "related-posts"}}
|
||||
{{/if}}
|
||||
|
||||
{{#post}}
|
||||
{{> "comments"}}
|
||||
{{/post}}
|
||||
{{/is}}
|
||||
|
||||
</main>
|
|
@ -0,0 +1,19 @@
|
|||
{{!< default}}
|
||||
|
||||
<main class="site-main">
|
||||
|
||||
{{#post}}
|
||||
{{> "content" width="narrow"}}
|
||||
{{/post}}
|
||||
|
||||
{{#is "post"}}
|
||||
{{#if @custom.show_related_posts}}
|
||||
{{> "related-posts"}}
|
||||
{{/if}}
|
||||
|
||||
{{#post}}
|
||||
{{> "comments"}}
|
||||
{{/post}}
|
||||
{{/is}}
|
||||
|
||||
</main>
|
|
@ -0,0 +1,19 @@
|
|||
{{!< default}}
|
||||
|
||||
<main class="site-main">
|
||||
|
||||
{{#post}}
|
||||
{{> "content" no_image=true}}
|
||||
{{/post}}
|
||||
|
||||
{{#is "post"}}
|
||||
{{#if @custom.show_related_posts}}
|
||||
{{> "related-posts"}}
|
||||
{{/if}}
|
||||
|
||||
{{#post}}
|
||||
{{> "comments"}}
|
||||
{{/post}}
|
||||
{{/is}}
|
||||
|
||||
</main>
|
|
@ -0,0 +1,21 @@
|
|||
{{!< default}}
|
||||
|
||||
{{#post}}
|
||||
|
||||
<main id="site-main" class="site-main outer" role="main">
|
||||
<div class="inner">
|
||||
<header class="post-full-header">
|
||||
<h1 class="post-full-title">{{title}}</h1>
|
||||
</header>
|
||||
{{#get 'tags' limit='all' include='count.posts' order='count.posts desc'}}
|
||||
{{#foreach tags}}
|
||||
<a href='{{ url }}'>
|
||||
<h2>{{ name }} <small>({{ count.posts }})</small></h2>
|
||||
</a>
|
||||
{{/foreach}}
|
||||
{{/get}}
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{{/post}}
|
||||
|
|
@ -0,0 +1,111 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="{{@site.locale}}">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{{meta_title}}</title>
|
||||
|
||||
<link rel="stylesheet" href="{{asset "built/screen.css"}}">
|
||||
|
||||
{{ghost_head}}
|
||||
</head>
|
||||
|
||||
<body class="{{body_class}}{{{block "body_class"}}} is-head-{{#match @custom.navigation_layout "Logo on the left"}}left-logo{{else match @custom.navigation_layout "Logo in the middle"}}middle-logo{{else}}stacked{{/match}}{{#match @custom.title_font "=" "Elegant serif"}} has-serif-title{{/match}}{{#match @custom.body_font "=" "Elegant serif"}} has-serif-body{{/match}}{{^is "home"}}{{#if @site.cover_image}} is-head-brand{{/if}}{{/is}}">
|
||||
<div class="site">
|
||||
|
||||
<header id="gh-head" class="gh-head gh-outer">
|
||||
<div class="gh-head-inner">
|
||||
<div class="gh-head-brand">
|
||||
<div class="gh-head-brand-wrapper">
|
||||
<a class="gh-head-logo" href="{{@site.url}}">
|
||||
{{#if @site.logo}}
|
||||
<img src="{{@site.logo}}" alt="{{@site.title}}">
|
||||
{{else}}
|
||||
{{@site.title}}
|
||||
{{/if}}
|
||||
</a>
|
||||
</div>
|
||||
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button>
|
||||
<button class="gh-burger"></button>
|
||||
</div>
|
||||
|
||||
<nav class="gh-head-menu">
|
||||
{{navigation}}
|
||||
{{#unless @site.members_enabled}}
|
||||
{{#match @custom.navigation_layout "Stacked"}}
|
||||
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button>
|
||||
{{/match}}
|
||||
{{/unless}}
|
||||
</nav>
|
||||
|
||||
<div class="gh-head-actions">
|
||||
{{#unless @site.members_enabled}}
|
||||
{{^match @custom.navigation_layout "Stacked"}}
|
||||
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button>
|
||||
{{/match}}
|
||||
{{else}}
|
||||
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button>
|
||||
<div class="gh-head-members">
|
||||
{{#unless @member}}
|
||||
{{#unless @site.members_invite_only}}
|
||||
<a class="gh-head-link" href="#/portal/signin" data-portal="signin">Sign in</a>
|
||||
<a class="gh-head-btn gh-btn gh-primary-btn" href="#/portal/signup" data-portal="signup">Subscribe</a>
|
||||
{{else}}
|
||||
<a class="gh-head-btn gh-btn gh-primary-btn" href="#/portal/signin" data-portal="signin">Sign in</a>
|
||||
{{/unless}}
|
||||
{{else}}
|
||||
<a class="gh-head-btn gh-btn gh-primary-btn" href="#/portal/account" data-portal="account">Account</a>
|
||||
{{/unless}}
|
||||
</div>
|
||||
{{/unless}}
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{#is "home"}}
|
||||
{{> "cover"}}
|
||||
{{#if @custom.show_featured_posts}}
|
||||
{{> "featured-posts"}}
|
||||
{{/if}}
|
||||
{{/is}}
|
||||
|
||||
<div class="site-content">
|
||||
{{{body}}}
|
||||
</div>
|
||||
|
||||
<footer class="gh-foot{{#unless @site.secondary_navigation}} no-menu{{/unless}} gh-outer">
|
||||
<div class="gh-foot-inner gh-inner">
|
||||
<div class="gh-copyright">
|
||||
{{@site.title}} © {{date format="YYYY"}}
|
||||
</div>
|
||||
{{#if @site.secondary_navigation}}
|
||||
<nav class="gh-foot-menu">
|
||||
{{navigation type="secondary"}}
|
||||
</nav>
|
||||
{{/if}}
|
||||
<div class="gh-powered-by">
|
||||
<a href="https://ghost.org/" target="_blank" rel="noopener">Powered by Ghost</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
{{#is "post, page"}}
|
||||
{{> "pswp"}}
|
||||
{{/is}}
|
||||
|
||||
{{!-- Fixes 100vh issue on mobile browsers with toolbar on the bottom --}}
|
||||
<script>
|
||||
if (document.body.classList.contains('with-full-cover') && (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.platform))) {
|
||||
document.getElementsByClassName('cover')[0].style.height = window.innerHeight + 'px';
|
||||
}
|
||||
</script>
|
||||
|
||||
<script src="{{asset "built/main.min.js"}}"></script>
|
||||
|
||||
{{ghost_foot}}
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,89 @@
|
|||
const {series, parallel, watch, src, dest} = require('gulp');
|
||||
const pump = require('pump');
|
||||
|
||||
// gulp plugins and utils
|
||||
const livereload = require('gulp-livereload');
|
||||
const postcss = require('gulp-postcss');
|
||||
const concat = require('gulp-concat');
|
||||
const uglify = require('gulp-uglify');
|
||||
const beeper = require('beeper');
|
||||
const zip = require('gulp-zip');
|
||||
|
||||
// postcss plugins
|
||||
const easyimport = require('postcss-easy-import');
|
||||
const autoprefixer = require('autoprefixer');
|
||||
const cssnano = require('cssnano');
|
||||
|
||||
function serve(done) {
|
||||
livereload.listen();
|
||||
done();
|
||||
}
|
||||
|
||||
function handleError(done) {
|
||||
return function (err) {
|
||||
if (err) {
|
||||
beeper();
|
||||
}
|
||||
return done(err);
|
||||
};
|
||||
};
|
||||
|
||||
function hbs(done) {
|
||||
pump([
|
||||
src(['*.hbs', 'partials/**/*.hbs']),
|
||||
livereload()
|
||||
], handleError(done));
|
||||
}
|
||||
|
||||
function css(done) {
|
||||
pump([
|
||||
src('assets/css/screen.css', {sourcemaps: true}),
|
||||
postcss([
|
||||
easyimport,
|
||||
autoprefixer(),
|
||||
cssnano()
|
||||
]),
|
||||
dest('assets/built/', {sourcemaps: '.'}),
|
||||
livereload()
|
||||
], handleError(done));
|
||||
}
|
||||
|
||||
function js(done) {
|
||||
pump([
|
||||
src([
|
||||
'node_modules/@tryghost/shared-theme-assets/assets/js/v1/lib/**/*.js',
|
||||
'node_modules/@tryghost/shared-theme-assets/assets/js/v1/main.js',
|
||||
'assets/js/lib/*.js',
|
||||
'assets/js/main.js'
|
||||
], {sourcemaps: true}),
|
||||
concat('main.min.js'),
|
||||
uglify(),
|
||||
dest('assets/built/', {sourcemaps: '.'}),
|
||||
livereload()
|
||||
], handleError(done));
|
||||
}
|
||||
|
||||
function zipper(done) {
|
||||
const filename = require('./package.json').name + '.zip';
|
||||
|
||||
pump([
|
||||
src([
|
||||
'**',
|
||||
'!node_modules', '!node_modules/**',
|
||||
'!dist', '!dist/**',
|
||||
'!yarn-error.log'
|
||||
]),
|
||||
zip(filename),
|
||||
dest('dist/')
|
||||
], handleError(done));
|
||||
}
|
||||
|
||||
const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs'], hbs);
|
||||
const cssWatcher = () => watch('assets/css/**/*.css', css);
|
||||
const jsWatcher = () => watch('assets/js/**/*.js', js);
|
||||
const watcher = parallel(hbsWatcher, cssWatcher, jsWatcher);
|
||||
const build = series(css, js);
|
||||
|
||||
exports.build = build;
|
||||
exports.zip = series(build, zipper);
|
||||
exports.default = series(build, serve, watcher);
|
|
@ -0,0 +1,23 @@
|
|||
{{!< default}}
|
||||
|
||||
<main class="site-main">
|
||||
|
||||
<header class="feed-header gh-canvas">
|
||||
{{#if @custom.feed_title}}
|
||||
<div class="feed-header-wrapper">
|
||||
<h2 class="feed-header-title">{{@custom.feed_title}}</h2>
|
||||
</div>
|
||||
{{/if}}
|
||||
</header>
|
||||
|
||||
<div class="post-feed{{#match @custom.feed_layout "!=" "Minimal"}} expanded{{/match}}{{#match @custom.feed_layout "Right thumbnail"}} right-thumbnail{{/match}}{{#match @custom.feed_layout "Text-only"}} text-only{{/match}} gh-feed gh-canvas">
|
||||
{{#foreach posts}}
|
||||
{{> "loop"}}
|
||||
{{/foreach}}
|
||||
</div>
|
||||
|
||||
{{pagination}}
|
||||
|
||||
</main>
|
||||
|
||||
{{#contentFor "body_class"}}{{#if @site.cover_image}} with-full-cover is-head-transparent{{/if}}{{#if @member}} logged-in{{/if}}{{/contentFor}}
|
|
@ -0,0 +1,138 @@
|
|||
{
|
||||
"name": "edition",
|
||||
"description": "A clean, minimal newsletter theme for the Ghost publishing platform",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"ghost": ">=5.0.0"
|
||||
},
|
||||
"license": "MIT",
|
||||
"author": {
|
||||
"name": "Ghost Foundation",
|
||||
"email": "hello@ghost.org",
|
||||
"url": "https://ghost.org"
|
||||
},
|
||||
"keywords": [
|
||||
"ghost",
|
||||
"theme",
|
||||
"ghost-theme"
|
||||
],
|
||||
"docs": "https://edition.ghost.io/about/",
|
||||
"config": {
|
||||
"posts_per_page": 10,
|
||||
"image_sizes": {
|
||||
"xs": {
|
||||
"width": 150
|
||||
},
|
||||
"s": {
|
||||
"width": 400
|
||||
},
|
||||
"m": {
|
||||
"width": 750
|
||||
},
|
||||
"l": {
|
||||
"width": 960
|
||||
},
|
||||
"xl": {
|
||||
"width": 1140
|
||||
},
|
||||
"xxl": {
|
||||
"width": 1920
|
||||
}
|
||||
},
|
||||
"card_assets": true,
|
||||
"custom": {
|
||||
"navigation_layout": {
|
||||
"type": "select",
|
||||
"options": ["Logo on the left", "Logo in the middle", "Stacked"],
|
||||
"default": "Logo on the left"
|
||||
},
|
||||
"title_font": {
|
||||
"type": "select",
|
||||
"options": [
|
||||
"Modern sans-serif",
|
||||
"Elegant serif"
|
||||
],
|
||||
"default": "Modern sans-serif"
|
||||
},
|
||||
"body_font": {
|
||||
"type": "select",
|
||||
"options": [
|
||||
"Modern sans-serif",
|
||||
"Elegant serif"
|
||||
],
|
||||
"default": "Modern sans-serif"
|
||||
},
|
||||
"email_signup_text": {
|
||||
"type": "text",
|
||||
"group": "homepage"
|
||||
},
|
||||
"publication_cover_style": {
|
||||
"type": "select",
|
||||
"options": [
|
||||
"Fullscreen",
|
||||
"Half screen"
|
||||
],
|
||||
"default": "Fullscreen",
|
||||
"group": "homepage"
|
||||
},
|
||||
"show_featured_posts": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"group": "homepage"
|
||||
},
|
||||
"featured_title": {
|
||||
"type": "text",
|
||||
"default": "Featured articles",
|
||||
"group": "homepage"
|
||||
},
|
||||
"feed_title": {
|
||||
"type": "text",
|
||||
"default": "Latest",
|
||||
"group": "homepage"
|
||||
},
|
||||
"feed_layout": {
|
||||
"type": "select",
|
||||
"options": [
|
||||
"Expanded",
|
||||
"Right thumbnail",
|
||||
"Text-only",
|
||||
"Minimal"
|
||||
],
|
||||
"default": "Expanded",
|
||||
"group": "homepage"
|
||||
},
|
||||
"show_author": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"group": "post"
|
||||
},
|
||||
"show_related_posts": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"group": "post"
|
||||
}
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "gulp",
|
||||
"test": "gscan .",
|
||||
"zip": "gulp zip"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tryghost/shared-theme-assets": "2.4.2",
|
||||
"autoprefixer": "10.4.16",
|
||||
"beeper": "2.1.0",
|
||||
"cssnano": "6.0.1",
|
||||
"gscan": "4.42.0",
|
||||
"gulp": "4.0.2",
|
||||
"gulp-concat": "2.6.1",
|
||||
"gulp-livereload": "4.0.2",
|
||||
"gulp-postcss": "9.0.1",
|
||||
"gulp-uglify": "3.0.2",
|
||||
"gulp-zip": "5.1.0",
|
||||
"postcss": "8.4.32",
|
||||
"postcss-easy-import": "4.0.0",
|
||||
"pump": "3.0.0"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{{!< default}}
|
||||
|
||||
<main class="site-main">
|
||||
|
||||
{{#post}}
|
||||
{{> "content" width="wide"}}
|
||||
{{/post}}
|
||||
|
||||
</main>
|
|
@ -0,0 +1,9 @@
|
|||
{{#if comments}}
|
||||
<section class="gh-comments gh-canvas">
|
||||
<header class="gh-comments-header">
|
||||
<h3 class="gh-comments-title related-title">Member discussion</h3>
|
||||
{{comment_count class="gh-comments-count"}}
|
||||
</header>
|
||||
{{comments title="" count=false}}
|
||||
</section>
|
||||
{{/if}}
|
|
@ -0,0 +1,20 @@
|
|||
{{{html}}}
|
||||
|
||||
<section class="single-cta">
|
||||
{{#has visibility="paid"}}
|
||||
<h2 class="single-cta-title">This post is for paying subscribers only</h2>
|
||||
{{/has}}
|
||||
{{#has visibility="members"}}
|
||||
<h2 class="single-cta-title">This post is for subscribers only</h2>
|
||||
{{/has}}
|
||||
{{#has visibility="filter"}}
|
||||
<h2 class="single-cta-title">This post is for subscribers on the {{tiers}} only</h2>
|
||||
{{/has}}
|
||||
{{#if @member}}
|
||||
<button class="button single-cta-button" data-portal="account/plans">Upgrade now</button>
|
||||
{{else}}
|
||||
<button class="button single-cta-button" data-portal="signup">Subscribe now</button>
|
||||
<br>
|
||||
<button class="button-text single-cta-footer" data-portal="signin">Already have an account? Sign in</button>
|
||||
{{/if}}
|
||||
</section>
|
|
@ -0,0 +1,97 @@
|
|||
<article class="single {{post_class}}">
|
||||
|
||||
{{#match @page.show_title_and_feature_image}}
|
||||
<header class="single-header gh-canvas">
|
||||
{{#is "post"}}
|
||||
<div class="single-meta">
|
||||
<span class="single-meta-item single-meta-date">
|
||||
<time datetime="{{date format="YYYY-MM-DD"}}">
|
||||
{{date published_at}}
|
||||
</time>
|
||||
</span>
|
||||
<span class="single-meta-item single-meta-length">
|
||||
{{reading_time}}
|
||||
</span>
|
||||
{{#primary_tag}}
|
||||
<span class="single-meta-item single-meta-tag">
|
||||
<a class="post-tag post-tag-{{slug}}" href="{{url}}">{{name}}</a>
|
||||
</span>
|
||||
{{/primary_tag}}
|
||||
</div>
|
||||
{{/is}}
|
||||
|
||||
<h1 class="single-title">{{title}}</h1>
|
||||
|
||||
{{#if custom_excerpt}}
|
||||
<div class="single-excerpt">
|
||||
{{custom_excerpt}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if feature_image}}
|
||||
{{#unless no_image}}
|
||||
<figure class="single-media kg-width-{{width}}">
|
||||
<img srcset="{{> "srcset"}}" sizes="(min-width: 1023px) 920px, calc(90vw)" src="{{img_url feature_image size="l"}}" alt="{{#if feature_image_alt}}{{feature_image_alt}}{{else}}{{title}}{{/if}}">
|
||||
{{#if feature_image_caption}}
|
||||
<figcaption>{{feature_image_caption}}</figcaption>
|
||||
{{/if}}
|
||||
</figure>
|
||||
{{/unless}}
|
||||
{{/if}}
|
||||
</header>
|
||||
{{/match}}
|
||||
|
||||
<div class="single-content gh-content gh-canvas">
|
||||
{{content}}
|
||||
</div>
|
||||
|
||||
{{#is "post"}}
|
||||
<div class="gh-canvas">
|
||||
<footer class="single-footer">
|
||||
|
||||
<div class="single-footer-left">
|
||||
{{#prev_post}}
|
||||
<div class="navigation navigation-previous">
|
||||
<a class="navigation-link" href="{{url}}" aria-label="Previous post">
|
||||
<span class="navigation-icon">{{> "icons/arrow-left"}}</span>
|
||||
</a>
|
||||
</div>
|
||||
{{/prev_post}}
|
||||
</div>
|
||||
|
||||
<div class="single-footer-middle">
|
||||
{{#if @custom.show_author}}
|
||||
<div class="single-footer-top">
|
||||
<h3 class="single-footer-title">Published by:</h3>
|
||||
<div class="author-list">
|
||||
{{#foreach authors}}
|
||||
<div class="author-image-placeholder u-placeholder square">
|
||||
<a href="{{url}}" title="{{name}}">
|
||||
{{#if profile_image}}
|
||||
<img class="author-image u-object-fit" src="{{img_url profile_image size="xs"}}" alt="{{name}}" loading="lazy">
|
||||
{{else}}
|
||||
<span class="u-object-fit">{{> "icons/avatar"}}</span>
|
||||
{{/if}}
|
||||
</a>
|
||||
</div>
|
||||
{{/foreach}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<div class="single-footer-right">
|
||||
{{#next_post}}
|
||||
<div class="navigation navigation-next">
|
||||
<a class="navigation-link" href="{{url}}" aria-label="Next post">
|
||||
<span class="navigation-icon">{{> "icons/arrow-right"}}</span>
|
||||
</a>
|
||||
</div>
|
||||
{{/next_post}}
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
{{/is}}
|
||||
|
||||
</article>
|
|
@ -0,0 +1,40 @@
|
|||
<div class="cover{{#if @site.cover_image}} image-loading{{/if}}{{#match @custom.publication_cover_style "Half screen"}} half{{/match}} gh-outer">
|
||||
{{#if @site.cover_image}}
|
||||
<img class="cover-image u-object-fit" src="{{@site.cover_image}}" alt="{{@site.title}}">
|
||||
{{/if}}
|
||||
|
||||
<div class="cover-content">
|
||||
{{#if @site.description}}
|
||||
<div class="cover-description">
|
||||
{{#unless @member}}
|
||||
{{#if @custom.email_signup_text}}
|
||||
{{@custom.email_signup_text}}
|
||||
{{else}}
|
||||
{{@site.description}}
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{@site.description}}
|
||||
{{/unless}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if @site.members_enabled}}
|
||||
{{#unless @site.members_invite_only}}
|
||||
{{#unless @member}}
|
||||
<form class="form-wrapper cover-form" data-members-form>
|
||||
<input class="auth-email" type="email" data-members-email placeholder="Your email address" required="true" autocomplete="false">
|
||||
<button class="form-button" type="submit" aria-label="Submit">
|
||||
<span class="default">Subscribe</span>
|
||||
<span class="loader">{{> "icons/loader"}}</span>
|
||||
<span class="success">Email sent</span>
|
||||
</button>
|
||||
</form>
|
||||
{{/unless}}
|
||||
{{/unless}}
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<button class="button-icon cover-arrow">
|
||||
{{> "icons/caret-down"}}
|
||||
</button>
|
||||
</div>
|
|
@ -0,0 +1,34 @@
|
|||
{{#get "posts" filter="featured:true" limit="all" as |featured|}}
|
||||
{{#if featured}}
|
||||
<div class="gh-outer">
|
||||
<section class="featured-wrapper gh-inner">
|
||||
|
||||
{{#if @custom.featured_title}}
|
||||
<h2 class="featured-title">{{@custom.featured_title}}</h2>
|
||||
{{/if}}
|
||||
|
||||
<div class="featured-feed">
|
||||
{{#foreach featured}}
|
||||
<article class="{{post_class}}">
|
||||
<div class="u-placeholder horizontal">
|
||||
{{#if feature_image}}
|
||||
<img
|
||||
class="u-object-fit"
|
||||
srcset="{{> "srcset"}}"
|
||||
sizes="(min-width: 1256px) calc((1130px - 60px) / 3), (min-width: 992px) calc((90vw - 60px) / 3), (min-width: 768px) calc((90vw - 30px) / 2), 90vw"
|
||||
src="{{img_url feature_image size="m"}}"
|
||||
alt="{{title}}"
|
||||
loading="lazy"
|
||||
>
|
||||
{{/if}}
|
||||
</div>
|
||||
<h3 class="post-title">{{title}}</h3>
|
||||
<a class="u-permalink" href={{url}} aria-label="{{title}}"></a>
|
||||
</article>
|
||||
{{/foreach}}
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/get}}
|
|
@ -0,0 +1,3 @@
|
|||
<svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
||||
<path d="M26.667 14.667v2.667h-16L18 24.667l-1.893 1.893L5.547 16l10.56-10.56L18 7.333l-7.333 7.333h16z"></path>
|
||||
</svg>
|
After (image error) Size: 197 B |
|
@ -0,0 +1,3 @@
|
|||
<svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
||||
<path d="M5.333 14.667v2.667h16L14 24.667l1.893 1.893L26.453 16 15.893 5.44 14 7.333l7.333 7.333h-16z"></path>
|
||||
</svg>
|
After (image error) Size: 195 B |
|
@ -0,0 +1 @@
|
|||
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M3.513 18.998C4.749 15.504 8.082 13 12 13s7.251 2.504 8.487 5.998C18.47 21.442 15.417 23 12 23s-6.47-1.558-8.487-4.002zM12 12c2.21 0 4-2.79 4-5s-1.79-4-4-4-4 1.79-4 4 1.79 5 4 5z" fill="#FFF"/></g></svg>
|
After (image error) Size: 308 B |
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="192" height="192" fill="currentColor" viewBox="0 0 256 256" class="icon">
|
||||
<rect width="256" height="256" fill="none"></rect><polyline points="208 96 128 176 48 96" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="24"></polyline>
|
||||
</svg>
|
After (image error) Size: 332 B |
|
@ -0,0 +1,3 @@
|
|||
<svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
||||
<path d="M11.453 22.107L17.56 16l-6.107-6.12L13.333 8l8 8-8 8-1.88-1.893z"></path>
|
||||
</svg>
|
After (image error) Size: 167 B |
|
@ -0,0 +1 @@
|
|||
<svg class="icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M23.9981 11.9991C23.9981 5.37216 18.626 0 11.9991 0C5.37216 0 0 5.37216 0 11.9991C0 17.9882 4.38789 22.9522 10.1242 23.8524V15.4676H7.07758V11.9991H10.1242V9.35553C10.1242 6.34826 11.9156 4.68714 14.6564 4.68714C15.9692 4.68714 17.3424 4.92149 17.3424 4.92149V7.87439H15.8294C14.3388 7.87439 13.8739 8.79933 13.8739 9.74824V11.9991H17.2018L16.6698 15.4676H13.8739V23.8524C19.6103 22.9522 23.9981 17.9882 23.9981 11.9991Z"/></svg>
|
After (image error) Size: 511 B |
|
@ -0,0 +1,6 @@
|
|||
<svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40">
|
||||
<path opacity="0.3" fill="currentColor" d="M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946 s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634 c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z" />
|
||||
<path fill="currentColor" d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0 C22.32,8.481,24.301,9.057,26.013,10.047z">
|
||||
<animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 20 20" to="360 20 20" dur="0.5s" repeatCount="indefinite" />
|
||||
</path>
|
||||
</svg>
|
After (image error) Size: 767 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg>
|
After (image error) Size: 248 B |
|
@ -0,0 +1,3 @@
|
|||
<svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
||||
<path d="M16 23.027L24.24 28l-2.187-9.373 7.28-6.307-9.587-.827-3.747-8.827-3.747 8.827-9.587.827 7.267 6.307L7.759 28l8.24-4.973z"></path>
|
||||
</svg>
|
After (image error) Size: 224 B |
|
@ -0,0 +1 @@
|
|||
<svg class="icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z"/></svg>
|
After (image error) Size: 732 B |
|
@ -0,0 +1,57 @@
|
|||
<article class="feed {{post_class}}" data-month="{{date format="MMMM YYYY"}}">
|
||||
|
||||
<div class="feed-calendar">
|
||||
<div class="feed-calendar-month">
|
||||
{{date published_at format="MMM"}}
|
||||
</div>
|
||||
<div class="feed-calendar-day">
|
||||
{{date published_at format="DD"}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#match @custom.feed_layout "!=" "Text-only"}}
|
||||
{{#match @custom.feed_layout "!=" "Minimal"}}
|
||||
<div class="feed-image u-placeholder rectangle">
|
||||
{{#if feature_image}}
|
||||
<img
|
||||
class="u-object-fit"
|
||||
srcset="{{> "srcset"}}"
|
||||
sizes="(min-width: 576px) 160px, 90vw"
|
||||
src="{{img_url feature_image size="m"}}"
|
||||
alt="{{#if feature_image_alt}}{{feature_image_alt}}{{else}}{{title}}{{/if}}"
|
||||
loading="lazy"
|
||||
>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/match}}
|
||||
{{/match}}
|
||||
|
||||
<div class="feed-wrapper">
|
||||
<h2 class="feed-title">{{title}}</h2>
|
||||
{{#if excerpt}}
|
||||
<div class="feed-excerpt">{{excerpt words="20"}}</div>
|
||||
{{/if}}
|
||||
<div class="feed-right">
|
||||
<time class="feed-date" datetime="{{date format="YYYY-MM-DD"}}">
|
||||
{{date published_at}}
|
||||
</time>
|
||||
<div class="feed-visibility feed-visibility-{{visibility}}">
|
||||
{{> "icons/star"}}
|
||||
</div>
|
||||
{{#if reading_time}}
|
||||
<div class="feed-length">
|
||||
{{reading_time}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if @site.comments_enabled}}
|
||||
{{comment_count autowrap="div" class="feed-comments"}}
|
||||
{{/if}}
|
||||
<div class="feed-icon">
|
||||
{{> "icons/chevron-right"}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a class="u-permalink" href="{{url}}" aria-label="{{title}}"></a>
|
||||
|
||||
</article>
|
|
@ -0,0 +1,3 @@
|
|||
<nav class="load-more">
|
||||
<button class="button button-secondary gh-loadmore">Load more</button>
|
||||
</nav>
|
|
@ -0,0 +1,41 @@
|
|||
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="pswp__bg"></div>
|
||||
|
||||
<div class="pswp__scroll-wrap">
|
||||
<div class="pswp__container">
|
||||
<div class="pswp__item"></div>
|
||||
<div class="pswp__item"></div>
|
||||
<div class="pswp__item"></div>
|
||||
</div>
|
||||
|
||||
<div class="pswp__ui pswp__ui--hidden">
|
||||
<div class="pswp__top-bar">
|
||||
<div class="pswp__counter"></div>
|
||||
|
||||
<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
|
||||
<button class="pswp__button pswp__button--share" title="Share"></button>
|
||||
<button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
|
||||
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
|
||||
|
||||
<div class="pswp__preloader">
|
||||
<div class="pswp__preloader__icn">
|
||||
<div class="pswp__preloader__cut">
|
||||
<div class="pswp__preloader__donut"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
|
||||
<div class="pswp__share-tooltip"></div>
|
||||
</div>
|
||||
|
||||
<button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)"></button>
|
||||
<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)"></button>
|
||||
|
||||
<div class="pswp__caption">
|
||||
<div class="pswp__caption__center"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,12 @@
|
|||
{{#get "posts" limit="5" filter="tags:[{{post.tags}}]+id:-{{post.id}}" as |related|}}
|
||||
{{#if related}}
|
||||
<section class="related-wrapper gh-canvas">
|
||||
<h3 class="related-title">You might also like...</h3>
|
||||
<div class="post-feed related-feed">
|
||||
{{#foreach posts}}
|
||||
{{> "loop"}}
|
||||
{{/foreach}}
|
||||
</div>
|
||||
</section>
|
||||
{{/if}}
|
||||
{{/get}}
|
|
@ -0,0 +1,4 @@
|
|||
{{img_url feature_image size="s"}} 400w,
|
||||
{{img_url feature_image size="m"}} 750w,
|
||||
{{img_url feature_image size="l"}} 960w,
|
||||
{{img_url feature_image size="xl"}} 1140w
|
|
@ -0,0 +1,17 @@
|
|||
{{!< default}}
|
||||
|
||||
<main class="site-main">
|
||||
|
||||
{{#post}}
|
||||
{{> "content" width="wide"}}
|
||||
{{/post}}
|
||||
|
||||
{{#if @custom.show_related_posts}}
|
||||
{{> "related-posts"}}
|
||||
{{/if}}
|
||||
|
||||
{{#post}}
|
||||
{{> "comments"}}
|
||||
{{/post}}
|
||||
|
||||
</main>
|
|
@ -0,0 +1,32 @@
|
|||
{{!< default}}
|
||||
|
||||
<main class="site-main">
|
||||
|
||||
{{#tag}}
|
||||
<section class="taxonomy">
|
||||
|
||||
{{#if feature_image}}
|
||||
<div class="taxonomy-media u-placeholder square">
|
||||
<img class="u-object-fit" src="{{img_url feature_image size="s"}}" alt="{{name}}">
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<header class="single-header gh-canvas">
|
||||
<h1 class="single-title">{{name}}</h1>
|
||||
{{#if description}}
|
||||
<div class="single-excerpt">{{description}}</div>
|
||||
{{/if}}
|
||||
</header>
|
||||
|
||||
</section>
|
||||
{{/tag}}
|
||||
|
||||
<div class="post-feed gh-feed gh-canvas">
|
||||
{{#foreach posts}}
|
||||
{{> "loop"}}
|
||||
{{/foreach}}
|
||||
</div>
|
||||
|
||||
{{pagination}}
|
||||
|
||||
</main>
|
Loading…
Reference in New Issue