16 Commits

Author SHA1 Message Date
Sodbileg Gansukh
9a2f77a5b9 v1.2.3 2024-06-03 17:19:32 +08:00
Sodbileg Gansukh
b9ae39eab9 Made the background color calculation compatible with shortened hex value 2024-06-03 17:19:03 +08:00
Sodbileg Gansukh
62cb3da424 v1.2.2 2024-04-12 11:24:14 +08:00
Sodbileg Gansukh
f749b4bed0 Fixed wrapper issue for multiple table elements
fixes DES-203, closes https://github.com/TryGhost/Source/issues/41
2024-04-12 11:22:51 +08:00
Sodbileg Gansukh
daf120397f Added error message field to the subscription form
fixes ENG-17
2024-04-10 12:26:58 +08:00
Sodbileg Gansukh
539464ac9b Fixed form error styling issue on subscribe input
fixes ENG-17
2024-04-10 12:01:51 +08:00
Sodbileg Gansukh
2cfe4e2016 v1.2.1 2024-03-13 17:11:42 +08:00
Sodbileg Gansukh
3b99c9e881 Fixed white background issue on accent color navigation
fixes DES-173
2024-03-13 17:09:19 +08:00
Sanne de Vries
0beef28a44 Updated default button card styles to support multiline buttons (#43)
* Updated default button card styles to support multiline buttons

Ref DES-160

* Center-aligned button text
2024-03-13 08:37:06 +01:00
Sodbileg Gansukh
652105318e v1.2.0 2024-03-04 14:06:06 +08:00
Peter Zimon
6e29abe79a Various design improvements (#42)
There are a couple of minor improvements which customers solve at the moment with various hacks and should be part of the theme instead.

* Removed max-width from card excerpt

* Updated custom theme settings

- Added show/hide "Read more" section in posts
- Added drop-cap option for posts
- Added show/hide metadata for posts

* Added lock icon for members-only posts on list

* Updated excerpt logic to work with access levels

* Fixing missing id's for input fields

* Updated secondary color contrast
2024-02-26 10:46:07 +01:00
Sodbileg Gansukh
dc3e6cb539 Improved accessibility
refs #37
2024-01-23 13:04:26 +07:00
Sodbileg Gansukh
a2846beab2 Added better styling to pre and code elements
closes #11, #21
2024-01-22 15:04:29 +07:00
Sodbileg Gansukh
ebc4792154 Improved HTML table rendering
fixes #17
2024-01-03 16:17:55 +07:00
Sodbileg Gansukh
c060944364 Fixed mobile scrolling issues
fixes #12

- added background color to the mobile menu actions
- disabled root scrolling when the mobile menu is opened which fixes the duplicate scrolling issue
2024-01-03 12:20:49 +07:00
Sodbileg Gansukh
d046267a3a Improved typography hierarchy 2024-01-03 11:39:09 +07:00
16 changed files with 170 additions and 69 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

@@ -59,9 +59,9 @@ production stylesheet in assets/built/screen.css
--color-darker-gray: #15171a;
--color-black: #000;
--color-primary-text: var(--color-darker-gray);
--color-secondary-text: rgb(0 0 0 / 0.5);
--color-secondary-text: rgb(0 0 0 / 0.55);
--color-border: rgb(0 0 0 / 0.08);
--color-dark-border: rgb(0 0 0 / 0.5);
--color-dark-border: rgb(0 0 0 / 0.55);
--font-sans: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
--font-serif: "EB Garamond", Georgia, Times, serif;
--font-serif-alt: Georgia, Times, serif;
@@ -238,7 +238,6 @@ a:hover {
display: flex;
align-items: center;
position: relative;
overflow: hidden;
max-width: 560px;
width: 100%;
height: 56px;
@@ -365,11 +364,20 @@ button.gh-form-input {
display: block;
}
.gh-form [data-members-error] {
position: absolute;
top: 100%;
margin-top: 10px;
width: 100%;
font-size: 1.4rem;
line-height: 1.4;
}
@media (max-width: 576px) {
.gh-form {
font-size: 1.6rem;
}
.gh-form .gh-button {
padding-inline: 12px;
}
@@ -515,6 +523,11 @@ button.gh-form-input {
gap: 24px;
align-items: center;
justify-content: flex-end;
background-color: var(--background-color);
}
.gh-navigation.has-accent-color .gh-navigation-actions {
background-color: var(--ghost-accent-color);
}
.gh-navigation-members {
@@ -972,7 +985,6 @@ Search LOGO Login Subscribe
display: -webkit-box;
overflow-y: hidden;
margin-top: 8px;
max-width: 720px;
font-size: 1.45rem;
line-height: 1.4;
-webkit-line-clamp: 2;
@@ -983,6 +995,7 @@ Search LOGO Login Subscribe
display: flex;
gap: 4px;
flex-wrap: wrap;
align-items: center;
padding-bottom: 1px;
font-size: 1.25rem;
font-weight: 500;
@@ -991,6 +1004,13 @@ Search LOGO Login Subscribe
color: var(--color-secondary-text);
}
.gh-card-meta svg {
width: 16px;
height: 16px;
margin-right: 2px;
margin-top: -2px;
}
.gh-card-meta:not(:empty) {
margin-top: 12px;
}
@@ -1377,6 +1397,7 @@ Search LOGO Login Subscribe
flex-direction: column;
align-items: center;
gap: 48px;
overflow: unset;
margin: auto;
max-width: 1020px;
text-align: center;
@@ -2127,6 +2148,20 @@ unless a heading is the very first element in the post content */
margin-top: calc(56px * var(--content-spacing-factor, 1));
}
/* Add drop cap setting */
.post-template .gh-content.drop-cap > p:first-of-type:first-letter {
margin :0 0.2em 0em 0;
font-size: 3.1em;
float:left;
line-height: 1;
margin-left: -1px;
font-weight: 700;
}
.has-serif-body.post-template .gh-content.drop-cap > p:first-of-type:first-letter {
font-size: 3.2em;
}
/* Add a small margin between a heading and paragraph after it */
.gh-content > [id] + p {
margin-top: calc(12px * var(--content-spacing-factor, 1));
@@ -2143,6 +2178,11 @@ unless a heading is the very first element in the post content */
}
/* Now the content typography styles */
.gh-content h1 {
font-size: calc(2.2em * var(--factor, 1));
letter-spacing: -0.02em;
}
.gh-content h2 {
font-size: calc(1.6em * var(--factor, 1));
letter-spacing: -0.02em;
@@ -2198,51 +2238,63 @@ unless a heading is the very first element in the post content */
border: 0;
}
.gh-content table:not(.gist table) {
display: inline-block;
width: auto;
max-width: 100%;
overflow-x: auto;
.gh-content .gh-table {
overflow-x: scroll;
-webkit-overflow-scrolling: touch;
}
.gh-content .gh-table table {
width: 100%;
font-family: var(--font-sans);
font-size: 1.6rem;
font-size: 1.5rem;
white-space: nowrap;
vertical-align: top;
border-spacing: 0;
border-collapse: collapse;
-webkit-overflow-scrolling: touch;
background: radial-gradient(ellipse at left, rgb(0 0 0 / 0.2) 0%, rgb(0 0 0 / 0) 75%) 0 center, radial-gradient(ellipse at right, rgb(0 0 0 / 0.2) 0%, rgb(0 0 0 / 0) 75%) 100% center;
background-repeat: no-repeat;
background-attachment: scroll, scroll;
background-size: 10px 100%, 10px 100%;
}
.gh-content table:not(.gist table) td:first-child {
background-image: linear-gradient(to right, rgb(255 255 255 / 1) 50%, rgb(255 255 255 / 0) 100%);
background-repeat: no-repeat;
background-size: 20px 100%;
}
.gh-content table:not(.gist table) td:last-child {
background-image: linear-gradient(to left, rgb(255 255 255 / 1) 50%, rgb(255 255 255 / 0) 100%);
background-repeat: no-repeat;
background-position: 100% 0;
background-size: 20px 100%;
}
.gh-content table:not(.gist table) th {
.gh-content .gh-table table th {
font-size: 1.2rem;
font-weight: 700;
color: var(--color-darkgrey);
text-align: left;
text-transform: uppercase;
letter-spacing: 0.2px;
background-color: var(--color-white);
}
.gh-content table:not(.gist table) th,
.gh-content table:not(.gist table) td {
.gh-content .gh-table table :is(th, td),
.gh-content .gh-table table td {
padding: 6px 12px;
border: 1px solid var(--color-light-gray);
border-bottom: 1px solid var(--color-border);
}
.gh-content .gh-table table :is(th, td):first-child {
padding-left: 0;
}
.gh-content .gh-table table :is(th, td):last-child {
padding-right: 0;
}
.gh-content pre {
overflow: auto;
padding: 16px;
font-size: 1.5rem;
line-height: 1.5em;
background: var(--color-lighter-gray);
border-radius: 6px;
font-family: var(--font-mono);
}
.gh-content :not(pre) > code {
vertical-align: baseline;
padding: 0.15em 0.4em;
font-weight: 400;
font-size: 0.95em;
line-height: 1em;
background: var(--color-lighter-gray);
border-radius: 0.25em;
font-family: var(--font-mono);
}
/* 16. Cards
@@ -2335,7 +2387,11 @@ blockquote.kg-blockquote-alt {
/* Button */
.kg-card.kg-button-card .kg-btn {
height: unset;
padding: .6em 1.2em;
text-align: center;
font-size: 1em;
line-height: 1.2em;
}
/* Header */

View File

@@ -7,8 +7,10 @@
burger.addEventListener('click', function () {
if (!navigation.classList.contains('is-open')) {
navigation.classList.add('is-open');
document.documentElement.style.overflowY = 'hidden';
} else {
navigation.classList.remove('is-open');
document.documentElement.style.overflowY = null;
}
});
})();
@@ -43,4 +45,16 @@
if (!document.body.classList.contains('home-template') && !document.body.classList.contains('post-template')) {
pagination();
}
})();
/* Responsive HTML table */
(function () {
const tables = document.querySelectorAll('.gh-content > table:not(.gist table)');
tables.forEach(function (table) {
const wrapper = document.createElement('div');
wrapper.className = 'gh-table';
table.parentNode.insertBefore(wrapper, table);
wrapper.appendChild(table);
});
})();

View File

@@ -26,6 +26,11 @@
https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */
var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color');
accentColor = accentColor.trim().slice(1);
if (accentColor.length === 3) {
accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2];
}
var r = parseInt(accentColor.substr(0, 2), 16);
var g = parseInt(accentColor.substr(2, 2), 16);
var b = parseInt(accentColor.substr(4, 2), 16);

View File

@@ -2,7 +2,7 @@
"name": "source",
"description": "A default theme for the Ghost publishing platform",
"demo": "https://source.ghost.io",
"version": "1.1.2",
"version": "1.2.3",
"engines": {
"ghost": ">=5.0.0"
},
@@ -191,6 +191,21 @@
"type": "boolean",
"default": false,
"group": "homepage"
},
"show_post_metadata": {
"type": "boolean",
"default": true,
"group": "post"
},
"enable_drop_caps_on_posts": {
"type": "boolean",
"default": false,
"group": "post"
},
"show_related_articles": {
"type": "boolean",
"default": true,
"group": "post"
}
}
},

View File

@@ -14,7 +14,7 @@
{{#if @custom.signup_subheading}}{{@custom.signup_subheading}}{{else}}{{@site.description}}{{/if}}
</p>
</div>
{{> "email-subscription"}}
{{> "email-subscription" email_field_id="cta-email"}}
</div>
</section>
{{/match}}

View File

@@ -16,7 +16,7 @@
Powered by <a href="https://ghost.org/" target="_blank" rel="noopener">Ghost</a>
</div>
</div>
{{#if @site.members_enabled}}
{{#unless @member}}
<section class="gh-footer-signup">
@@ -26,7 +26,7 @@
<p class="gh-footer-signup-subhead is-body">
{{#if @custom.signup_subheading}}{{@custom.signup_subheading}}{{else}}{{@site.description}}{{/if}}
</p>
{{> "email-subscription"}}
{{> "email-subscription" email_field_id="footer-email"}}
</section>
{{/unless}}
{{/if}}

View File

@@ -1,5 +1,5 @@
<section class="gh-header is-{{#match headerStyle "Magazine"}}magazine{{else match headerStyle "Highlight"}}highlight{{else}}classic{{/match}}{{#if @custom.background_image}}{{#if @site.cover_image}} has-image{{/if}}{{/if}} gh-outer">
{{!-- Background image --}}
{{#if @custom.background_image}}
{{#match headerStyle "!=" "Magazine"}}
@@ -64,7 +64,7 @@
{{!-- Landing layout --}}
{{#match headerStyle "Landing"}}
<h1 class="gh-header-title is-title">{{#if @custom.header_text}}{{@custom.header_text}}{{else}}{{@site.description}}{{/if}}</h1>
{{> "email-subscription"}}
{{> "email-subscription" email_field_id="header-email"}}
{{/match}}
{{!-- Search layout --}}

View File

@@ -10,7 +10,7 @@
{{/if}}
</a>
{{> "search-toggle"}}
<button class="gh-burger gh-icon-button">
<button class="gh-burger gh-icon-button" aria-label="Menu">
{{> "icons/burger"}}
{{> "icons/close"}}
</button>

View File

@@ -1,8 +1,9 @@
<form class="gh-form" data-members-form>
<input class="gh-form-input" type="email" placeholder="jamie@example.com" required data-members-email>
<button class="gh-button" type="submit">
<input class="gh-form-input" id="{{email_field_id}}" type="email" placeholder="jamie@example.com" required data-members-email>
<button class="gh-button" type="submit" aria-label="Subscribe">
<span><span>Subscribe</span> {{> "icons/arrow"}}</span>
{{> "icons/loader"}}
{{> "icons/checkmark"}}
</button>
<p data-members-error></p>
</form>

View File

@@ -1,5 +1 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.25 6.875H3.75C3.40482 6.875 3.125 7.15482 3.125 7.5V16.25C3.125 16.5952 3.40482 16.875 3.75 16.875H16.25C16.5952 16.875 16.875 16.5952 16.875 16.25V7.5C16.875 7.15482 16.5952 6.875 16.25 6.875Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M7.1875 6.875V4.0625C7.1875 3.31658 7.48382 2.60121 8.01126 2.07376C8.53871 1.54632 9.25408 1.25 10 1.25C10.7459 1.25 11.4613 1.54632 11.9887 2.07376C12.5162 2.60121 12.8125 3.31658 12.8125 4.0625V6.875" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M10 13.125C10.6904 13.125 11.25 12.5654 11.25 11.875C11.25 11.1846 10.6904 10.625 10 10.625C9.30964 10.625 8.75 11.1846 8.75 11.875C8.75 12.5654 9.30964 13.125 10 13.125Z" fill="currentColor"></path>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" height="20" width="20" id="Lock-1--Streamline-Ultimate"><defs></defs><title>lock-1</title><path d="M4.375 8.125h11.25s1.25 0 1.25 1.25v8.75s0 1.25 -1.25 1.25H4.375s-1.25 0 -1.25 -1.25v-8.75s0 -1.25 1.25 -1.25" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"></path><path d="M5.625 8.125V5a4.375 4.375 0 0 1 8.75 0v3.125" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"></path><path d="m10 12.5 0 2.5" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"></path></svg>

Before

Width:  |  Height:  |  Size: 932 B

After

Width:  |  Height:  |  Size: 678 B

View File

@@ -21,10 +21,20 @@
<p class="gh-card-tag">{{primary_tag.name}}</p>
{{/if}}
<h3 class="gh-card-title is-title">{{title}}</h3>
{{#if excerpt}}
<p class="gh-card-excerpt is-body">{{excerpt}}</p>
{{#if custom_excerpt}}
<p class="gh-card-excerpt is-body">{{custom_excerpt}}</p>
{{/if}}
<footer class="gh-card-meta"><!--
{{#unless custom_excerpt}}
{{#if excerpt}}
<p class="gh-card-excerpt is-body">{{excerpt}}</p>
{{/if}}
{{/unless}}
<footer class="gh-card-meta">
{{#unless access}}
{{^has visibility="public"}}
{{> "icons/lock"}}
{{/has}}
{{/unless}}<!--
-->{{#if @custom.show_author}}
<span class="gh-card-author">By {{#foreach authors}}{{#if @first}}{{name}}{{else}}, {{name}}{{/if}}{{/foreach}}</span>
{{/if}}

View File

@@ -17,6 +17,7 @@
<p class="gh-article-excerpt is-body">{{custom_excerpt}}</p>
{{/if}}
{{#if @custom.show_post_metadata}}
<div class="gh-article-meta">
<div class="gh-article-author-image">
{{#foreach authors}}
@@ -39,12 +40,13 @@
</div>
</div>
</div>
{{/if}}
{{> "feature-image"}}
</header>
<section class="gh-content gh-canvas is-body">
<section class="gh-content gh-canvas is-body{{#if @custom.enable_drop_caps_on_posts}} drop-cap{{/if}}">
{{content}}
</section>
@@ -60,17 +62,19 @@
{{/post}}
{{#get "posts" include="authors" filter="id:-{{post.id}}" limit="4" as |next|}}
{{#if next}}
<section class="gh-container is-grid gh-outer">
<div class="gh-container-inner gh-inner">
<h2 class="gh-container-title">Read more</h2>
<div class="gh-feed">
{{#foreach next}}
{{> "post-card" lazyLoad=true}}
{{/foreach}}
{{#if @custom.show_related_articles}}
{{#get "posts" include="authors" filter="id:-{{post.id}}" limit="4" as |next|}}
{{#if next}}
<section class="gh-container is-grid gh-outer">
<div class="gh-container-inner gh-inner">
<h2 class="gh-container-title">Read more</h2>
<div class="gh-feed">
{{#foreach next}}
{{> "post-card" lazyLoad=true}}
{{/foreach}}
</div>
</div>
</div>
</section>
{{/if}}
{{/get}}
</section>
{{/if}}
{{/get}}
{{/if}}