Added navbar options (#906)

This commit is contained in:
Sodbileg Gansukh 2022-11-11 11:30:32 +08:00 committed by GitHub
parent 38426cd9e6
commit cf30adacce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 466 additions and 239 deletions

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

View File

@ -112,8 +112,8 @@ production stylesheet in assets/built/screen.css
z-index: 100; z-index: 100;
display: flex; display: flex;
align-items: center; align-items: center;
padding-top: 6.4vmin; padding-top: calc(19vmin + 44px);
padding-bottom: 6.4vmin; padding-bottom: 19vmin;
text-align: center; text-align: center;
color: var(--color-darkgrey); color: var(--color-darkgrey);
} }
@ -124,10 +124,6 @@ production stylesheet in assets/built/screen.css
color: #fff; color: #fff;
} }
body:not(.has-cover) .site-header-content:not(.left-aligned) {
padding-bottom: max(4.8vmin, 24px);
}
.site-header-content.left-aligned { .site-header-content.left-aligned {
padding-bottom: 0; padding-bottom: 0;
text-align: left; text-align: left;
@ -135,7 +131,7 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
.has-cover .site-header-content.left-aligned { .has-cover .site-header-content.left-aligned {
align-items: flex-end; align-items: flex-end;
padding-bottom: 6.4vmin; padding-bottom: max(4vmin, 32px);
} }
.site-header-content.no-content { .site-header-content.no-content {
@ -189,15 +185,15 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
.site-description { .site-description {
display: inline-block; display: inline-block;
z-index: 10; z-index: 10;
max-width: 560px; max-width: 960px;
font-size: 2.4rem; font-size: 6rem;
font-weight: 500; font-weight: 700;
line-height: 1.4; line-height: 1.1;
} }
:is(.site-logo, .site-title) + .site-description { :is(.site-logo, .site-title) + .site-description {
margin-top: 8px; margin-top: 16px;
font-size: 2.1rem; font-size: 2.4rem;
font-weight: 400; font-weight: 400;
} }
@ -210,7 +206,6 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
} }
.has-cover .site-description { .has-cover .site-description {
font-size: 3.2rem;
letter-spacing: -0.005em; letter-spacing: -0.005em;
color: #fff; color: #fff;
} }
@ -223,6 +218,18 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
font-size: 2.2rem; font-size: 2.2rem;
} }
@media (min-width: 992px) {
.is-head-stacked.has-cover .site-header-content {
padding-top: calc(19vmin + 120px);
}
}
@media (max-width: 991px) {
.site-header-content {
padding-top: calc(19vmin + 32px);
}
}
@media (max-width: 767px) { @media (max-width: 767px) {
.has-cover .site-header-content { .has-cover .site-header-content {
min-height: 240px; min-height: 240px;
@ -237,7 +244,7 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
font-size: 3.4rem !important; font-size: 3.4rem !important;
} }
.site-description { .site-description {
font-size: 1.9rem !important; font-size: 2.8rem !important;
} }
.site-logo + .site-description { .site-logo + .site-description {
margin-top: 12px !important; margin-top: 12px !important;
@ -252,8 +259,7 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
/* ---------------------------------------------------------- */ /* ---------------------------------------------------------- */
.gh-head { .gh-head {
padding-top: min(24px, 3.6vmin); height: 88px;
padding-bottom: min(24px, 3.6vmin);
font-size: 1.6rem; font-size: 1.6rem;
line-height: 1.3em; line-height: 1.3em;
background-color: #fff; background-color: #fff;
@ -280,11 +286,112 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
.gh-head-inner { .gh-head-inner {
display: grid; display: grid;
grid-gap: 40px; column-gap: 40px;
grid-template-columns: auto auto 1fr; grid-template-columns: auto 1fr auto;
grid-auto-flow: row dense; grid-auto-flow: row dense;
align-items: center;
height: 100%;
} }
/* Header styles
/* ---------------------------------------------------------- */
.is-head-left-logo .gh-head-inner {
grid-template-columns: auto 1fr auto;
}
.is-head-left-logo.home-template .gh-head-logo {
display: none;
}
.is-head-left-logo.home-template .gh-head-menu {
margin-left: -40px;
}
@media (min-width: 992px) {
.is-head-left-logo .gh-head-menu {
margin-right: 32px;
margin-left: 16px;
}
}
.is-head-middle-logo .gh-head-inner {
grid-template-columns: 1fr auto 1fr;
}
.is-head-middle-logo .gh-head-brand {
grid-column-start: 2;
}
.is-head-middle-logo .gh-head-actions {
gap: 28px;
}
@media (min-width: 992px) {
.is-head-middle-logo .gh-head-menu {
margin-right: 64px;
}
}
.is-head-stacked .gh-head {
height: auto;
}
.is-head-stacked .gh-head-inner {
grid-template-columns: 1fr auto 1fr;
}
.is-head-stacked .gh-head-brand {
grid-row-start: 1;
grid-column-start: 2;
}
@media (min-width: 992px) {
.is-head-stacked .gh-head-inner {
padding: 0;
}
.is-head-stacked .gh-head-brand {
position: relative;
display: flex;
align-items: center;
height: 80px;
}
.is-head-stacked .gh-head-menu {
grid-row-start: 2;
grid-column: 1 / 4;
justify-content: center;
height: 56px;
margin: 0 48px;
}
.is-head-stacked .gh-head-menu::before,
.is-head-stacked .gh-head-menu::after {
position: absolute;
top: 80px;
left: 0;
width: 100%;
height: 1px;
content: "";
background-color: var(--color-lightgrey);
}
.is-head-stacked.has-cover .gh-head-menu::before,
.is-head-stacked.has-cover .gh-head-menu::after {
background-color: rgba(255, 255, 255, 0.2);
}
.is-head-stacked .gh-head-menu::after {
top: 136px;
}
.is-head-stacked .gh-head-actions {
grid-row-start: 1;
grid-column: 1 / 4;
justify-content: space-between;
}
}
/* Brand /* Brand
/* ---------------------------------------------------------- */ /* ---------------------------------------------------------- */
@ -293,7 +400,6 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
display: flex; display: flex;
align-items: center; align-items: center;
height: 40px; height: 40px;
max-width: 400px;
word-break: break-all; word-break: break-all;
} }
@ -303,6 +409,7 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
font-size: 2.6rem; font-size: 2.6rem;
letter-spacing: -0.02em; letter-spacing: -0.02em;
color: inherit; color: inherit;
white-space: nowrap;
} }
.gh-head-logo.no-image { .gh-head-logo.no-image {
@ -313,17 +420,8 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
color: #fff; color: #fff;
} }
.no-logo .gh-head-logo {
display: none;
}
.gh-head-logo img { .gh-head-logo img {
max-height: 26px; max-height: 40px;
}
.gh-head-brand-wrapper {
display: flex;
align-items: center;
} }
@ -337,14 +435,10 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
font-weight: 500; font-weight: 500;
} }
.no-logo .gh-head-menu {
margin-left: -40px;
}
.gh-head-menu .nav { .gh-head-menu .nav {
display: inline-flex; display: inline-flex;
flex-wrap: wrap;
align-items: center; align-items: center;
flex-wrap: wrap;
gap: 32px; gap: 32px;
list-style: none; list-style: none;
margin: 0; margin: 0;
@ -366,6 +460,80 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
opacity: 0.9; opacity: 0.9;
} }
.gh-head-menu .nav-more-toggle {
position: relative;
width: 30px;
height: 30px;
margin: 0 -6px;
padding: 0;
font-size: inherit;
background-color: transparent;
text-transform: inherit;
}
.gh-head-menu .nav-more-toggle svg {
width: 24px;
height: 24px;
}
@media (min-width: 992px) {
body:not(.is-dropdown-loaded) .gh-head-menu .nav > li {
opacity: 0;
}
}
/* Dropdown
/* ---------------------------------------------------------- */
.gh-dropdown {
position: absolute;
top: 100%;
right: -16px;
z-index: 90;
width: 200px;
padding: 12px 0;
margin-top: 24px;
opacity: 0;
visibility: hidden;
text-align: left;
background-color: #fff;
border-radius: 5px;
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.04), 0 7px 20px -5px rgba(0, 0, 0, 0.15);
transform: translate3d(0, 6px, 0);
transition: opacity 0.3s, transform 0.2s;
}
.is-head-middle-logo .gh-dropdown {
right: auto;
left: -24px;
}
.is-dropdown-mega .gh-dropdown {
display: grid;
grid-template-columns: 1fr 1fr;
grid-auto-flow: column;
column-gap: 40px;
width: auto;
padding: 20px 32px;
}
.is-dropdown-open .gh-dropdown {
opacity: 1;
visibility: visible;
transform: translateY(0);
}
.gh-head-menu .gh-dropdown li a {
display: block;
padding: 6px 20px;
color: #15171a;
}
.is-dropdown-mega .gh-dropdown li a {
padding: 8px 0;
}
/* Secondary Navigation /* Secondary Navigation
/* ---------------------------------------------------------- */ /* ---------------------------------------------------------- */
@ -401,13 +569,14 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
.gh-head-button { .gh-head-button {
display: inline-flex; display: inline-flex;
justify-content: center;
align-items: center; align-items: center;
padding: 8px 16px; padding: 8px 20px;
height: 40px; height: 44px;
font-weight: 600; font-weight: 600;
letter-spacing: -0.005em; letter-spacing: -0.005em;
font-size: 1.5rem; font-size: 1.6rem;
border-radius: 6px; border-radius: 48px;
color: #fff; color: #fff;
background: var(--ghost-accent-color); background: var(--ghost-accent-color);
} }
@ -417,38 +586,6 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
background: #fff; background: #fff;
} }
/* Search
/* ---------------------------------------------------------- */
.gh-search {
display: inline-flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
padding: 0;
cursor: pointer;
background-color: transparent;
border: 0;
outline: none;
}
.gh-search:hover {
opacity: 0.9;
}
@media (max-width: 991px) {
.gh-head-actions .gh-search {
display: none;
}
}
@media (min-width: 992px) {
.gh-head-brand .gh-search {
display: none;
}
}
/* Search /* Search
/* ---------------------------------------------------------- */ /* ---------------------------------------------------------- */
@ -475,7 +612,7 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
} }
.gh-head-actions .gh-search { .gh-head-actions .gh-search {
margin-right: -10px; margin-right: -4px;
} }
@media (max-width: 991px) { @media (max-width: 991px) {
@ -497,86 +634,48 @@ body:not(.has-cover) .site-header-content:not(.left-aligned) {
.gh-burger { .gh-burger {
position: relative; position: relative;
display: none; display: none;
width: 30px;
height: 30px;
padding: 0;
margin-right: -3px;
cursor: pointer; cursor: pointer;
background-color: transparent;
border: 0;
appearance: none;
} }
.gh-burger-box { .gh-burger::before,
position: relative; .gh-burger::after {
display: flex;
align-items: center;
justify-content: center;
width: 33px;
height: 33px;
}
.has-cover .gh-burger-box {
color: #fff;
}
.gh-burger-inner {
width: 100%;
height: 100%;
}
.gh-burger-box::before {
position: absolute; position: absolute;
display: block; left: 3px;
top: 0; width: 24px;
left: 0;
bottom: 0;
margin: auto;
content: '';
width: 100%;
height: 1px; height: 1px;
background: currentcolor; content: "";
transition: transform 300ms cubic-bezier(.2,.6,.3,1), width 300ms cubic-bezier(.2,.6,.3,1); background-color: var(--color-darkgrey);
will-change: transform, width; transition: all 0.2s cubic-bezier(0.04, 0.04, 0.12, 0.96) 0.1008s;
} }
.gh-burger-inner::before, .has-cover .gh-burger::before,
.gh-burger-inner::after { .has-cover .gh-burger::after {
position: absolute; background-color: #fff;
display: block;
top: 0;
left: 0;
bottom: 0;
margin: auto;
content: '';
width: 100%;
height: 1px;
background: currentcolor;
transition: transform 250ms cubic-bezier(.2,.7,.3,1), width 250ms cubic-bezier(.2,.7,.3,1);
will-change: transform, width;
} }
.gh-burger-inner::before { .gh-burger::before {
transform: translatey(-6px); top: 11px;
}
.gh-burger-inner::after {
transform: translatey(6px);
} }
body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::before { .gh-burger::after {
transform: translatey(-8px); bottom: 11px;
}
body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
transform: translatey(8px);
} }
.gh-head-open .gh-burger-box::before { .gh-head-open .gh-burger::before {
width: 0; top: 15px;
transform: translatex(19px); transform: rotate(45deg);
transition: transform 200ms cubic-bezier(.2,.7,.3,1), width 200ms cubic-bezier(.2,.7,.3,1);
} }
.gh-head-open .gh-burger-inner::before { .gh-head-open .gh-burger::after {
width: 26px; bottom: 14px;
transform: translatex(6px) rotate(135deg); transform: rotate(-45deg);
}
.gh-head-open .gh-burger-inner::after {
width: 26px;
transform: translatex(6px) rotate(-135deg);
} }
@ -585,91 +684,129 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
/* IDs needed to ensure sufficient specificity */ /* IDs needed to ensure sufficient specificity */
@media (max-width: 991px) { @media (max-width: 991px) {
.gh-burger {
display: inline-block;
}
#gh-head { #gh-head {
overflow: hidden; height: 64px;
} }
#gh-head .gh-head-inner { #gh-head .gh-head-inner {
height: 100%; grid-template-rows: auto 1fr auto;
grid-template-columns: 1fr; grid-template-columns: 1fr;
gap: 48px;
} }
#gh-head .gh-head-brand { #gh-head .gh-head-brand {
position: relative; display: grid;
z-index: 10; grid-template-columns: 1fr auto auto;
grid-column-start: auto; grid-column-start: 1;
max-width: none;
display: flex;
align-items: center; align-items: center;
justify-content: space-between; height: 64px;
user-select: none;
} }
.no-logo #gh-head .gh-head-brand {
justify-content: flex-end; #gh-head .gh-head-logo {
font-size: 2.2rem;
} }
#gh-head .gh-head-menu {
align-self: center; #gh-head .gh-head-brand .gh-search {
display: flex; margin-left: -6px;
flex-direction: column;
align-items: center;
text-align: center;
margin: 0 0 10vh 0;
font-weight: 300;
font-size: 3.6rem;
line-height: 1.1em;
} }
#gh-head .gh-head-menu .nav {
display: flex; #gh-head .gh-burger {
flex-direction: column; display: block;
align-items: center;
gap: 16px;
font-weight: 500;
} }
#gh-head .gh-head-menu,
#gh-head .gh-head-actions { #gh-head .gh-head-actions {
flex-direction: column-reverse; position: fixed;
justify-content: center; justify-content: center;
padding: 20px 0 32px; visibility: hidden;
text-align: left; opacity: 0;
} }
/* Hide collapsed content */
#gh-head .gh-head-actions,
#gh-head .gh-head-menu { #gh-head .gh-head-menu {
display: none; margin: 0;
transition: none;
transform: translateY(0);
} }
/* Open the menu */
.gh-head-open { #gh-head .nav {
overflow: hidden; gap: 16px;
height: 100vh; align-items: center;
line-height: 1.4;
} }
#gh-head .nav a {
font-size: 2.6rem;
font-weight: 600;
text-transform: none;
}
#gh-head .nav li {
opacity: 0;
transform: translateY(-4px);
}
#gh-head .gh-head-button {
width: 100%;
font-size: 1.8rem;
text-transform: none;
opacity: 0;
transform: translateY(8px);
}
.gh-head-open #gh-head { .gh-head-open #gh-head {
position: fixed; position: fixed;
top: 0; right: 0;
left: 0;
z-index: 3999999;
height: 100vh;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
}
.gh-head-open.has-cover #gh-head,
.gh-head-open.has-cover #gh-head .gh-head-actions {
background-color: var(--ghost-accent-color);
}
.gh-head-open #gh-head .gh-head-menu,
.gh-head-open #gh-head .gh-head-actions {
position: static;
visibility: visible;
opacity: 1;
}
.gh-head-open #gh-head .nav {
display: flex;
flex-direction: column;
}
.gh-head-open #gh-head .nav li {
opacity: 1;
transition: transform 0.2s, opacity 0.2s;
transform: translateY(0);
}
.gh-head-open #gh-head .gh-head-actions {
position: sticky;
right: 0; right: 0;
bottom: 0; bottom: 0;
left: 0; left: 0;
z-index: 3999999; display: inline-flex;
overflow-y: scroll; flex-direction: column;
gap: 12px;
align-items: center;
padding: max(4vmin, 20px) 0;
background-color: #fff;
} }
.gh-head-open #gh-head .gh-head-inner {
grid-template-rows: auto 1fr auto;
}
.gh-head-open #gh-head .gh-head-actions,
.gh-head-open #gh-head .gh-head-menu {
display: flex;
}
}
@media (max-width: 600px) { .gh-head-open #gh-head .gh-head-button {
#gh-head .gh-head-menu { opacity: 1;
font-size: 6vmin; transition: transform 0.4s, opacity 0.4s;
transition-delay: 0.2s;
transform: translateY(0);
} }
} }
.has-cover.gh-head-open .gh-head {
background: var(--ghost-accent-color);
}
/* 6. Post Feed /* 6. Post Feed
/* ---------------------------------------------------------- */ /* ---------------------------------------------------------- */
@ -810,6 +947,7 @@ body:not(.gh-head-open) .gh-burger:hover .gh-burger-inner::after {
margin: 0; margin: 0;
font-size: 2.6rem; font-size: 2.6rem;
font-weight: 800; font-weight: 800;
line-height: 1.2;
} }
.post-card-content-link:hover .post-card-title { .post-card-content-link:hover .post-card-title {
@ -962,7 +1100,7 @@ make sure this only happens on large viewports / desktop-ish devices.
.post-card-large .post-card-title { .post-card-large .post-card-title {
margin-top: 0; margin-top: 0;
font-size: 4.4rem; font-size: 4.4rem;
line-height: 1; line-height: 1.05;
} }
.post-card-large .post-card-excerpt { .post-card-large .post-card-excerpt {
@ -1042,7 +1180,7 @@ make sure this only happens on large viewports / desktop-ish devices.
margin-bottom: 0; margin-bottom: 0;
font-size: clamp(3.2rem, 5vw, 5.2rem); font-size: clamp(3.2rem, 5vw, 5.2rem);
font-weight: 800; font-weight: 800;
line-height: 1; line-height: 1.05;
color: var(--color-darkgrey); color: var(--color-darkgrey);
} }
@ -1719,7 +1857,7 @@ iframe.instagram-media + script + :not([id]) {
} }
@media (min-width: 1001px) { @media (min-width: 1001px) {
.author-template .post-card-large .post-card-content { .author-template .post-card-large .post-card-content:only-child {
grid-column: span 2; grid-column: span 2;
max-width: 640px; max-width: 640px;
} }
@ -1739,7 +1877,7 @@ iframe.instagram-media + script + :not([id]) {
} }
@media (min-width: 1001px) { @media (min-width: 1001px) {
.tag-template .post-card-large .post-card-content { .tag-template .post-card-large .post-card-content:only-child {
grid-column: span 2; grid-column: span 2;
max-width: 640px; max-width: 640px;
} }

81
assets/js/dropdown.js Normal file
View File

@ -0,0 +1,81 @@
(function () {
const mediaQuery = window.matchMedia('(max-width: 991px)');
const menu = document.querySelector('.gh-head-menu');
const nav = menu.querySelector('.nav');
if (!nav) return;
const logo = document.querySelector('.gh-head-logo');
const navHTML = nav.innerHTML;
if (mediaQuery.matches) {
const items = nav.querySelectorAll('li');
items.forEach(function (item, index) {
item.style.transitionDelay = 0.03 * (index + 1) + 's';
});
}
const makeDropdown = function () {
if (mediaQuery.matches) return;
const submenuItems = [];
while ((nav.offsetWidth + 64) > menu.offsetWidth) {
if (nav.lastElementChild) {
submenuItems.unshift(nav.lastElementChild);
nav.lastElementChild.remove();
} else {
return;
}
}
if (!submenuItems.length) {
document.body.classList.add('is-dropdown-loaded');
return;
}
const toggle = document.createElement('button');
toggle.setAttribute('class', 'nav-more-toggle');
toggle.setAttribute('aria-label', 'More');
toggle.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="currentColor"><path d="M21.333 16c0-1.473 1.194-2.667 2.667-2.667v0c1.473 0 2.667 1.194 2.667 2.667v0c0 1.473-1.194 2.667-2.667 2.667v0c-1.473 0-2.667-1.194-2.667-2.667v0zM13.333 16c0-1.473 1.194-2.667 2.667-2.667v0c1.473 0 2.667 1.194 2.667 2.667v0c0 1.473-1.194 2.667-2.667 2.667v0c-1.473 0-2.667-1.194-2.667-2.667v0zM5.333 16c0-1.473 1.194-2.667 2.667-2.667v0c1.473 0 2.667 1.194 2.667 2.667v0c0 1.473-1.194 2.667-2.667 2.667v0c-1.473 0-2.667-1.194-2.667-2.667v0z"></path></svg>';
const wrapper = document.createElement('div');
wrapper.setAttribute('class', 'gh-dropdown');
if (submenuItems.length >= 10) {
document.body.classList.add('is-dropdown-mega');
wrapper.style.gridTemplateRows = 'repeat(' + Math.ceil(submenuItems.length / 2) + ', 1fr)';
} else {
document.body.classList.remove('is-dropdown-mega');
}
submenuItems.forEach(function (child) {
wrapper.appendChild(child);
});
toggle.appendChild(wrapper);
nav.appendChild(toggle);
document.body.classList.add('is-dropdown-loaded');
toggle.addEventListener('click', function () {
document.body.classList.toggle('is-dropdown-open');
});
window.addEventListener('click', function (e) {
if (!toggle.contains(e.target) && document.body.classList.contains('is-dropdown-open')) {
document.body.classList.remove('is-dropdown-open');
}
});
}
imagesLoaded(logo, function () {
makeDropdown();
});
window.addEventListener('resize', function () {
setTimeout(function () {
nav.innerHTML = navHTML;
makeDropdown();
}, 1);
});
})();

File diff suppressed because one or more lines are too long

View File

@ -18,51 +18,51 @@
{{ghost_head}} {{ghost_head}}
</head> </head>
<body class="{{body_class}}{{#match @custom.title_font "=" "Elegant serif"}} has-serif-title{{/match}}{{#match @custom.body_font "=" "Modern sans-serif"}} has-sans-body{{/match}}{{#if @custom.show_publication_cover}} has-cover{{/if}}{{#is "home"}}{{#unless @custom.show_logo_in_navigation}} no-logo{{/unless}}{{/is}}"> <body class="{{body_class}} is-head-{{#match @custom.navigation_layout "Logo on cover"}}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 "=" "Modern sans-serif"}} has-sans-body{{/match}}{{#if @custom.show_publication_cover}} has-cover{{/if}}">
<div class="viewport"> <div class="viewport">
<header id="gh-head" class="gh-head outer"> <header id="gh-head" class="gh-head outer">
<nav class="gh-head-inner inner"> <div class="gh-head-inner inner">
<div class="gh-head-brand"> <div class="gh-head-brand">
<a class="gh-head-logo{{#unless @site.logo}} no-image{{/unless}}" href="{{@site.url}}"> <a class="gh-head-logo" href="{{@site.url}}">
{{#if @site.logo}} {{#if @site.logo}}
<img src="{{@site.logo}}" alt="{{@site.title}}" /> <img src="{{@site.logo}}" alt="{{@site.title}}">
{{else}} {{else}}
{{@site.title}} {{@site.title}}
{{/if}} {{/if}}
</a> </a>
<div class="gh-head-brand-wrapper"> <button class="gh-search gh-icon-btn" data-ghost-search>{{> "icons/search"}}</button>
<button class="gh-search" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button> <button class="gh-burger"></button>
<a class="gh-burger" role="button">
<div class="gh-burger-box">
<div class="gh-burger-inner"></div>
</div> </div>
</a>
</div> <nav class="gh-head-menu">
</div>
<div class="gh-head-menu">
{{navigation}} {{navigation}}
</div> {{#unless @site.members_enabled}}
{{#match @custom.header_style "Stacked"}}
<button class="gh-search gh-icon-btn" data-ghost-search>{{> "icons/search"}}</button>
{{/match}}
{{/unless}}
</nav>
<div class="gh-head-actions"> <div class="gh-head-actions">
<button class="gh-search" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button> {{#unless @site.members_enabled}}
<div class="gh-social"> {{^match @custom.header_style "Stacked"}}
{{#if @site.facebook}} <button class="gh-search gh-icon-btn" data-ghost-search>{{> "icons/search"}}</button>
<a class="gh-social-link gh-social-facebook" href="{{facebook_url @site.facebook}}" title="Facebook" target="_blank" rel="me noopener">{{> "icons/facebook"}}</a> {{/match}}
{{/if}} {{else}}
{{#if @site.twitter}} <button class="gh-search gh-icon-btn" data-ghost-search>{{> "icons/search"}}</button>
<a class="gh-social-link gh-social-twitter" href="{{twitter_url @site.twitter}}" title="Twitter" target="_blank" rel="me noopener">{{> "icons/twitter"}}</a>
{{/if}}
</div>
{{#if @site.members_enabled}}
{{#unless @member}} {{#unless @member}}
{{#unless @site.members_invite_only}}
<a class="gh-head-button" href="#/portal/signup" data-portal="signup">Subscribe</a> <a class="gh-head-button" href="#/portal/signup" data-portal="signup">Subscribe</a>
{{else}}
<a class="gh-head-button" href="#/portal/signin" data-portal="signin">Login</a>
{{/unless}}
{{else}} {{else}}
<a class="gh-head-button" href="#/portal/account" data-portal="account">Account</a> <a class="gh-head-button" href="#/portal/account" data-portal="account">Account</a>
{{/unless}} {{/unless}}
{{/if}} {{/unless}}
</div>
</div> </div>
</nav>
</header> </header>
<div class="site-content"> <div class="site-content">

View File

@ -90,8 +90,9 @@ function zipper(done) {
} }
const cssWatcher = () => watch('assets/css/**', css); const cssWatcher = () => watch('assets/css/**', css);
const jsWatcher = () => watch('assets/js/**', js);
const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs'], hbs); const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs'], hbs);
const watcher = parallel(cssWatcher, hbsWatcher); const watcher = parallel(cssWatcher, jsWatcher, hbsWatcher);
const build = series(css, js); const build = series(css, js);
exports.build = build; exports.build = build;

View File

@ -22,13 +22,13 @@ into the {body} of the default.hbs template --}}
{{#match @custom.header_style "!=" "Hidden"}} {{#match @custom.header_style "!=" "Hidden"}}
<div class="site-header-inner inner"> <div class="site-header-inner inner">
{{#unless @custom.show_logo_in_navigation}} {{#match @custom.navigation_layout "Logo on cover"}}
{{#if @site.logo}} {{#if @site.logo}}
<img class="site-logo" src="{{@site.logo}}" alt="{{@site.title}}"> <img class="site-logo" src="{{@site.logo}}" alt="{{@site.title}}">
{{else}} {{else}}
<h1 class="site-title">{{@site.title}}</h1> <h1 class="site-title">{{@site.title}}</h1>
{{/if}} {{/if}}
{{/unless}} {{/match}}
{{#if @site.description}} {{#if @site.description}}
<p class="site-description">{{@site.description}}</p> <p class="site-description">{{@site.description}}</p>
{{/if}} {{/if}}

View File

@ -89,6 +89,11 @@
}, },
"card_assets": true, "card_assets": true,
"custom": { "custom": {
"navigation_layout": {
"type": "select",
"options": ["Logo on cover", "Logo in the middle", "Stacked"],
"default": "Logo on cover"
},
"title_font": { "title_font": {
"type": "select", "type": "select",
"options": [ "options": [
@ -120,11 +125,6 @@
"default": "Center aligned", "default": "Center aligned",
"group": "homepage" "group": "homepage"
}, },
"show_logo_in_navigation": {
"type": "boolean",
"default": false,
"group": "homepage"
},
"feed_layout": { "feed_layout": {
"type": "select", "type": "select",
"options": [ "options": [