jekyll-theme-yat 1.7.0 → 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +71 -21
- data/_data/translate_langs.yml +10 -10
- data/_includes/custom-head.html +6 -0
- data/_includes/extensions/click-to-top.html +18 -0
- data/_includes/extensions/comments/utterances.html +51 -0
- data/_includes/extensions/google-analytics.html +1 -1
- data/_includes/extensions/google-translate.html +11 -1
- data/_includes/extensions/hashlocate.html +1 -0
- data/_includes/functions/get_article_excerpt.html +39 -0
- data/_includes/functions/get_article_words.html +26 -0
- data/_includes/functions/get_banner.html +68 -0
- data/_includes/functions/get_reading_time.html +10 -2
- data/_includes/functions/get_value.html +31 -21
- data/_includes/functions.html +4 -0
- data/_includes/head.html +3 -2
- data/_includes/views/banner.html +88 -7
- data/_includes/views/footer.html +10 -2
- data/_includes/views/header.html +8 -7
- data/_includes/views/pagination.html +10 -5
- data/_includes/views/post-header.html +2 -1
- data/_layouts/default.html +2 -0
- data/_layouts/post.html +4 -0
- data/_sass/misc/article-menu.scss +1 -1
- data/_sass/misc/click-to-top.scss +46 -0
- data/_sass/misc/gitment.scss +4 -0
- data/_sass/misc/google-translate.scss +1 -1
- data/_sass/yat/_base.scss +1 -0
- data/_sass/yat/_dark.scss +29 -8
- data/_sass/yat/_layout.scss +42 -11
- data/_sass/yat.scss +4 -4
- data/assets/css/main.scss +20 -3
- metadata +15 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac1737e727da75e5ea98d69effa7a2a6cfb67983d629ad50d7c68d53ed8e8acf
|
4
|
+
data.tar.gz: a6a0d53cd3cd7f3f8ac132124212b13e11fbb9302601cfb741788294dadaac17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8c7650349f043503af65a144074e800dbb51b16973d23d56d432e3b777bd86919596f94cdd5e9c55de99f3de68edc302b729a860df322a21efc20fff4da9fb9
|
7
|
+
data.tar.gz: 065105e678deaf52fdef4b0f4dd89b878a84ff7e3b29ef6007d26099b5d00f079668e0fa30aaef0a2ce4258ec9823108123af80602c2b5e23088e047d52e3e0d
|
data/README.md
CHANGED
@@ -1,41 +1,91 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
<div align="center">
|
2
|
+
<br>
|
3
|
+
|
4
|
+
<a href="https://github.com/jeffreytse/jekyll-theme-yat">
|
5
|
+
<img alt="jekyll-theme-yat →~ jekyll" src="https://user-images.githubusercontent.com/9413601/106478481-346fdf00-64e4-11eb-9385-1ab5329c3234.png" width="600">
|
6
|
+
</a>
|
7
|
+
|
8
|
+
<h1>JEKYLL YAT THEME</h1>
|
9
|
+
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<h4 align="center">
|
13
|
+
<a href="https://jekyllrb.com/" target="_blank"><code>Jekyll</code></a> theme for elegant writers.
|
14
|
+
</h4>
|
15
|
+
|
16
|
+
<p align="center">
|
17
|
+
<a href="https://jeffreytse.github.io/jekyll-theme-yat">
|
18
|
+
<img src="https://github.com/jeffreytse/jekyll-theme-yat/workflows/Github%20Pages/badge.svg"
|
19
|
+
alt="Github Pages" />
|
20
|
+
</a>
|
21
|
+
|
22
|
+
<a href="https://badge.fury.io/rb/jekyll-theme-yat">
|
23
|
+
<img src="https://badge.fury.io/rb/jekyll-theme-yat.svg"
|
24
|
+
alt="Gem Version" />
|
25
|
+
</a>
|
26
|
+
|
27
|
+
<a href="https://opensource.org/licenses/MIT">
|
28
|
+
<img src="https://img.shields.io/badge/License-MIT-brightgreen.svg"
|
29
|
+
alt="License: MIT" />
|
30
|
+
</a>
|
31
|
+
|
32
|
+
<a href="https://liberapay.com/jeffreytse">
|
33
|
+
<img src="https://img.shields.io/liberapay/goal/jeffreytse.svg?logo=liberapay"
|
34
|
+
alt="Donate (Liberapay)" />
|
35
|
+
</a>
|
36
|
+
|
37
|
+
<a href="https://patreon.com/jeffreytse">
|
38
|
+
<img src="https://img.shields.io/badge/support-patreon-F96854.svg?style=flat-square"
|
39
|
+
alt="Donate (Patreon)" />
|
40
|
+
</a>
|
41
|
+
|
42
|
+
<a href="https://ko-fi.com/jeffreytse">
|
8
43
|
<img height="20" src="https://www.ko-fi.com/img/githubbutton_sm.svg"
|
9
|
-
|
10
|
-
</a>
|
44
|
+
alt="Donate (Ko-fi)" />
|
45
|
+
</a>
|
46
|
+
</p>
|
47
|
+
|
48
|
+
<div align="center">
|
49
|
+
<sub>Built with ❤︎ by
|
50
|
+
<a href="https://jeffreytse.net">jeffreytse</a> and
|
51
|
+
<a href="https://github.com/jeffreytse/jekyll-theme-yat/graphs/contributors">contributors </a>
|
52
|
+
</sub>
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<br>
|
11
56
|
|
12
57
|
Hey, nice to meet you, you found this [Jekyll][jekyll] theme. Here the
|
13
|
-
|
14
|
-
clean and neat for writers and posts. **If you
|
15
|
-
|
58
|
+
_YAT (Yet Another Theme)_ is a modern responsive theme. It's quite
|
59
|
+
clear, clean and neat for writers and posts. **If you are an elegant
|
60
|
+
writer and focus on content, don't miss it.**
|
16
61
|
|
62
|
+
<p align="center">
|
63
|
+
Like this elegant theme? You can give it a star or sponsor me!<br>
|
64
|
+
I will respect your crucial support and say THANK YOU!
|
65
|
+
</p>
|
17
66
|
|
18
67
|
<p align="center">
|
19
68
|
|
20
|
-
<img src="https://user-images.githubusercontent.com/9413601/91842897-6a840b00-ec87-11ea-95ca-52abcc1ac063.png" alt="demo-screenshot" width="
|
69
|
+
<img src="https://user-images.githubusercontent.com/9413601/91842897-6a840b00-ec87-11ea-95ca-52abcc1ac063.png" alt="demo-screenshot" width="100%"/>
|
21
70
|
|
22
71
|
</p>
|
23
72
|
|
24
|
-
<
|
73
|
+
<h4 align="center">BANNER</h4>
|
25
74
|
|
26
75
|
<p align="center">
|
27
76
|
|
28
|
-
<img src="https://user-images.githubusercontent.com/9413601/
|
77
|
+
<img src="https://user-images.githubusercontent.com/9413601/123897812-ae729a00-d996-11eb-96b8-b76ba926f555.gif" alt="demo-screenshot" width="100%"/>
|
29
78
|
|
30
79
|
</p>
|
31
80
|
|
32
81
|
## Features
|
33
82
|
|
34
|
-
- Support beautiful
|
83
|
+
- Support beautiful **Night Mode**.
|
35
84
|
- Modern responsive web design.
|
36
85
|
- Full layouts `home`, `post`, `tags`, `archive` and `about`.
|
37
86
|
- Uses font awesome 5 for icons.
|
38
|
-
- Beautiful
|
87
|
+
- Beautiful page banner with image and video.
|
88
|
+
- Beautiful Syntax Highlight using [highlight.js][highlight-js].
|
39
89
|
- RSS support using [Jekyll Feed][jekyll-feed] gem.
|
40
90
|
- Optimized for search engines using [Jekyll Seo Tag][jekyll-seo-tag] gem.
|
41
91
|
- Sitemap support using [Jekyll Sitemap][jekyll-sitemap] gem.
|
@@ -107,15 +157,14 @@ And then execute:
|
|
107
157
|
$ bundle
|
108
158
|
```
|
109
159
|
|
110
|
-
|
160
|
+
### GitHub Pages without limitation
|
111
161
|
|
112
|
-
GitHub Pages runs in `safe` mode and only allows [a set of whitelisted plugins/themes](https://pages.github.com/versions/).
|
162
|
+
GitHub Pages runs in `safe` mode and only allows [a set of whitelisted plugins/themes](https://pages.github.com/versions/). **In other words, the third-party gems will not work normally**.
|
113
163
|
|
114
164
|
To use the third-party gem in GitHub Pages without limitation:
|
115
165
|
|
116
166
|
Here is a GitHub Action named [jekyll-deploy-action](https://github.com/jeffreytse/jekyll-deploy-action) for Jekyll site deployment conveniently. 👍
|
117
167
|
|
118
|
-
|
119
168
|
## Usage
|
120
169
|
|
121
170
|
Add or update your available layouts, includes, sass and/or assets.
|
@@ -140,6 +189,7 @@ You can start by [opening an issue](https://github.com/jeffreytse/jekyll-theme-y
|
|
140
189
|
This theme is licensed under the [MIT license](https://opensource.org/licenses/mit-license.php) © JeffreyTse.
|
141
190
|
|
142
191
|
<!-- External links -->
|
192
|
+
|
143
193
|
[jekyll]: https://jekyllrb.com/
|
144
194
|
[yat-git-repo]: https://github.com/jeffreytse/jekyll-theme-yat/
|
145
195
|
[yat-live-demo]: https://jeffreytse.github.io/jekyll-theme-yat/
|
@@ -147,4 +197,4 @@ This theme is licensed under the [MIT license](https://opensource.org/licenses/m
|
|
147
197
|
[jekyll-seo-tag]: https://github.com/jekyll/jekyll-seo-tag
|
148
198
|
[jekyll-sitemap]: https://github.com/jekyll/jekyll-sitemap
|
149
199
|
[jekyll-feed]: https://github.com/jekyll/jekyll-feed
|
150
|
-
[
|
200
|
+
[highlight-js]: https://github.com/highlightjs/highlight.js
|
data/_data/translate_langs.yml
CHANGED
@@ -1,26 +1,26 @@
|
|
1
|
-
# Translate
|
1
|
+
# Translate languages
|
2
2
|
# langs refer to https://cloud.google.com/translate/docs/languages
|
3
3
|
|
4
4
|
- lang: en
|
5
|
-
img: https://
|
5
|
+
img: https://cdn.countryflags.com/thumbs/united-states-of-america/flag-400.png
|
6
6
|
text: English
|
7
7
|
|
8
8
|
- lang: fr
|
9
|
-
img: https://
|
10
|
-
text:
|
9
|
+
img: https://cdn.countryflags.com/thumbs/france/flag-400.png
|
10
|
+
text: French
|
11
11
|
|
12
12
|
- lang: zh-CN
|
13
|
-
img: https://
|
13
|
+
img: https://cdn.countryflags.com/thumbs/china/flag-400.png
|
14
14
|
text: Chinese(Simple)
|
15
15
|
|
16
16
|
- lang: ja
|
17
|
-
img: https://
|
18
|
-
text:
|
17
|
+
img: https://cdn.countryflags.com/thumbs/japan/flag-400.png
|
18
|
+
text: Japanese
|
19
19
|
|
20
20
|
- lang: ko
|
21
|
-
img: https://
|
21
|
+
img: https://cdn.countryflags.com/thumbs/south-korea/flag-400.png
|
22
22
|
text: Korean
|
23
23
|
|
24
24
|
- lang: ru
|
25
|
-
img: https://
|
26
|
-
text:
|
25
|
+
img: https://cdn.countryflags.com/thumbs/russia/flag-400.png
|
26
|
+
text: Russian
|
@@ -0,0 +1,6 @@
|
|
1
|
+
{% comment %}
|
2
|
+
Placeholder to allow defining custom head, in principle, you can add anything here, e.g. favicons:
|
3
|
+
|
4
|
+
1. Head over to https://realfavicongenerator.net/ to add your own favicons.
|
5
|
+
2. Customize default _includes/custom-head.html in your source directory and insert the given code snippet.
|
6
|
+
{% endcomment %}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<div id="click-to-top" class="click-to-top">
|
2
|
+
<i class="fa fa-arrow-up"></i>
|
3
|
+
</div>
|
4
|
+
<script>
|
5
|
+
(function () {
|
6
|
+
const clickToTop = document.getElementById('click-to-top');
|
7
|
+
window.addEventListener('scroll', () => {
|
8
|
+
if (window.scrollY > 100) {
|
9
|
+
clickToTop.classList.add('show')
|
10
|
+
}else {
|
11
|
+
clickToTop.classList.remove('show')
|
12
|
+
}
|
13
|
+
});
|
14
|
+
clickToTop.addEventListener('click', () => {
|
15
|
+
window.smoothScrollTo(0);
|
16
|
+
});
|
17
|
+
})();
|
18
|
+
</script>
|
@@ -0,0 +1,51 @@
|
|
1
|
+
{%- if site.utterances.follow_site_theme -%}
|
2
|
+
<div id="utterances-placeholder"></div>
|
3
|
+
<script>
|
4
|
+
const utterancesThemeFromDataTheme = () => {
|
5
|
+
const dataTheme = document.documentElement.getAttribute('data-theme');
|
6
|
+
return `github-${dataTheme}`;
|
7
|
+
};
|
8
|
+
|
9
|
+
const setUtterancesTheme = () => {
|
10
|
+
const iframe = document.querySelector('.utterances-frame');
|
11
|
+
if (iframe) {
|
12
|
+
const message = {
|
13
|
+
type: 'set-theme',
|
14
|
+
theme: utterancesThemeFromDataTheme()
|
15
|
+
};
|
16
|
+
iframe.contentWindow.postMessage(message, 'https://utteranc.es');
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
// dynamic change
|
21
|
+
const observer = new MutationObserver((mutationsList, observer) => {
|
22
|
+
for (let mutation of mutationsList) {
|
23
|
+
if (mutation.type === 'attributes' && mutation.attributeName === 'data-theme') {
|
24
|
+
setUtterancesTheme();
|
25
|
+
}
|
26
|
+
}
|
27
|
+
});
|
28
|
+
observer.observe(document.documentElement, { attributes: true, childList: false, subtree: false });
|
29
|
+
|
30
|
+
let utterancesScript = document.createElement('script');
|
31
|
+
utterancesScript.async = true;
|
32
|
+
utterancesScript.src = 'https://utteranc.es/client.js';
|
33
|
+
utterancesScript.crossOrigin = 'anonymous';
|
34
|
+
utterancesScript.setAttribute('issue-term', '{{ site.utterances.issue_term }}');
|
35
|
+
utterancesScript.setAttribute('label', '{{ site.utterances.label }}');
|
36
|
+
utterancesScript.setAttribute('repo', '{{ site.utterances.repo }}');
|
37
|
+
utterancesScript.setAttribute('theme', utterancesThemeFromDataTheme());
|
38
|
+
|
39
|
+
const placeholder = document.getElementById('utterances-placeholder');
|
40
|
+
placeholder.parentNode.replaceChild(utterancesScript, placeholder);
|
41
|
+
</script>
|
42
|
+
{%- else -%}
|
43
|
+
<script async
|
44
|
+
crossorigin="anonymous"
|
45
|
+
issue-term="{{ site.utterances.issue_term }}"
|
46
|
+
label="{{ site.utterances.label }}"
|
47
|
+
repo="{{ site.utterances.repo }}"
|
48
|
+
src="https://utteranc.es/client.js"
|
49
|
+
theme="{{ site.utterances.theme }}">
|
50
|
+
</script>
|
51
|
+
{%- endif -%}
|
@@ -2,6 +2,10 @@
|
|
2
2
|
{% assign translate_langs = include.translate_langs %}
|
3
3
|
{% endif %}
|
4
4
|
|
5
|
+
{% if include.lang %}
|
6
|
+
{% assign lang = include.lang %}
|
7
|
+
{% endif %}
|
8
|
+
|
5
9
|
<div id="google_translate_element" style="display: none;">
|
6
10
|
</div>
|
7
11
|
|
@@ -24,11 +28,17 @@
|
|
24
28
|
<script type="text/javascript">
|
25
29
|
function googleTranslateElementInit() {
|
26
30
|
new google.translate.TranslateElement({
|
27
|
-
pageLanguage: '',
|
31
|
+
pageLanguage: '{{ lang }}',
|
28
32
|
autoDisplay: false,
|
29
33
|
layout: google.translate.TranslateElement.InlineLayout.VERTICAL
|
30
34
|
}, 'google_translate_element');
|
31
35
|
|
36
|
+
// Links to cross-origin destinations are unsafe
|
37
|
+
var gll = document.getElementsByClassName('goog-logo-link')[0];
|
38
|
+
if (gll) {
|
39
|
+
gll.setAttribute('rel', 'noopener');
|
40
|
+
}
|
41
|
+
|
32
42
|
function restoreLang() {
|
33
43
|
var iframe = document.getElementsByClassName('goog-te-banner-frame')[0];
|
34
44
|
if (!iframe) return;
|
@@ -0,0 +1,39 @@
|
|
1
|
+
{% if include.params.article %}
|
2
|
+
{% assign article = include.params.article %}
|
3
|
+
{% endif %}
|
4
|
+
|
5
|
+
{% if include.params.lang %}
|
6
|
+
{% assign lang = include.params.lang %}
|
7
|
+
{% else %}
|
8
|
+
{% assign lang = lang | default: site.lang | default: "en" %}
|
9
|
+
{% endif %}
|
10
|
+
|
11
|
+
{% if include.params.excerpt_size %}
|
12
|
+
{% assign excerpt_size = include.params.excerpt_size %}
|
13
|
+
{% else %}
|
14
|
+
{% assign excerpt_size = excerpt_size
|
15
|
+
| default: site.excerpt_size
|
16
|
+
| default: 350 %}
|
17
|
+
{% endif %}
|
18
|
+
|
19
|
+
{%- include functions.html func='get_article_words' -%}
|
20
|
+
{% assign words = return %}
|
21
|
+
|
22
|
+
{% assign _article = article | strip_html %}
|
23
|
+
{% assign _words = _article | size %}
|
24
|
+
|
25
|
+
{% assign _size = excerpt_size %}
|
26
|
+
|
27
|
+
{% if lang != "en" %}
|
28
|
+
{% assign _size = words
|
29
|
+
| times: 1.0
|
30
|
+
| divided_by: _words
|
31
|
+
| times: _size
|
32
|
+
| round %}
|
33
|
+
{% endif %}
|
34
|
+
|
35
|
+
{% if _size > excerpt_size %}
|
36
|
+
{% assign _size = excerpt_size %}
|
37
|
+
{% endif %}
|
38
|
+
|
39
|
+
{% assign return = _article | truncate: _size %}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
{% if include.params.article %}
|
2
|
+
{% assign article = include.params.article %}
|
3
|
+
{% endif %}
|
4
|
+
|
5
|
+
{% if include.params.lang %}
|
6
|
+
{% assign lang = include.params.lang %}
|
7
|
+
{% else %}
|
8
|
+
{% assign lang = lang | default: site.lang | default: "en" %}
|
9
|
+
{% endif %}
|
10
|
+
|
11
|
+
{% assign words = article | number_of_words %}
|
12
|
+
|
13
|
+
{% if lang != "en" %}
|
14
|
+
{% assign words = words
|
15
|
+
| times: 0.6
|
16
|
+
| round %}
|
17
|
+
{% assign words = article
|
18
|
+
| strip_html
|
19
|
+
| strip_newlines
|
20
|
+
| size
|
21
|
+
| times: 0.4
|
22
|
+
| plus: words
|
23
|
+
| round %}
|
24
|
+
{% endif %}
|
25
|
+
|
26
|
+
{% assign return = words %}
|
@@ -0,0 +1,68 @@
|
|
1
|
+
{%- include functions.html func='log' level='debug' msg='Get banner value' -%}
|
2
|
+
{% assign name = 'banner' %}
|
3
|
+
{%- include functions.html func='get_value' -%}
|
4
|
+
{% assign banner = return %}
|
5
|
+
|
6
|
+
{%- if banner.first -%}
|
7
|
+
{%- include functions.html func='log' level='debug' msg='Get banner_image value' -%}
|
8
|
+
{% assign name = 'banner.image' %}
|
9
|
+
{%- include functions.html func='get_value' -%}
|
10
|
+
{% assign banner_image = return | relative_url %}
|
11
|
+
{%- else -%}
|
12
|
+
{% assign banner_image = banner | relative_url %}
|
13
|
+
{%- endif -%}
|
14
|
+
|
15
|
+
{%- include functions.html func='log' level='debug' msg='Get banner_background value' -%}
|
16
|
+
{% assign name = 'banner.background' %}
|
17
|
+
{%- include functions.html func='get_value' -%}
|
18
|
+
{% assign banner_background = return %}
|
19
|
+
|
20
|
+
{%- include functions.html func='log' level='debug' msg='Get banner_opacity value' -%}
|
21
|
+
{% assign name = 'banner.opacity' %}
|
22
|
+
{%- include functions.html func='get_value' -%}
|
23
|
+
{% assign banner_opacity = return %}
|
24
|
+
|
25
|
+
{%- include functions.html func='log' level='debug' msg='Get banner_height value' -%}
|
26
|
+
{% assign name = 'banner.height' %}
|
27
|
+
{%- include functions.html func='get_value' -%}
|
28
|
+
{% assign banner_height = return %}
|
29
|
+
|
30
|
+
{%- include functions.html func='log' level='debug' msg='Get banner_min_height value' -%}
|
31
|
+
{% assign name = 'banner.min_height' %}
|
32
|
+
{%- include functions.html func='get_value' -%}
|
33
|
+
{% assign banner_min_height = return %}
|
34
|
+
|
35
|
+
{%- include functions.html func='log' level='debug' msg='Get banner_heading_style value' -%}
|
36
|
+
{% assign name = 'banner.heading_style' %}
|
37
|
+
{%- include functions.html func='get_value' -%}
|
38
|
+
{% assign banner_heading_style = return %}
|
39
|
+
|
40
|
+
{%- include functions.html func='log' level='debug' msg='Get banner_subheading_style value' -%}
|
41
|
+
{% assign name = 'banner.subheading_style' %}
|
42
|
+
{%- include functions.html func='get_value' -%}
|
43
|
+
{% assign banner_subheading_style = return %}
|
44
|
+
|
45
|
+
{%- include functions.html func='log' level='debug' msg='Get banner_video value' -%}
|
46
|
+
{% assign name = 'banner.video' %}
|
47
|
+
{%- include functions.html func='get_value' -%}
|
48
|
+
{% assign banner_video = return %}
|
49
|
+
|
50
|
+
{%- include functions.html func='log' level='debug' msg='Get banner_loop value' -%}
|
51
|
+
{% assign name = 'banner.loop' %}
|
52
|
+
{%- include functions.html func='get_value' default=true -%}
|
53
|
+
{% assign banner_loop = return %}
|
54
|
+
|
55
|
+
{%- include functions.html func='log' level='debug' msg='Get banner_volume value' -%}
|
56
|
+
{% assign name = 'banner.volume' %}
|
57
|
+
{%- include functions.html func='get_value' default=0 -%}
|
58
|
+
{% assign banner_volume = return %}
|
59
|
+
|
60
|
+
{%- include functions.html func='log' level='debug' msg='Get banner_start_at value' -%}
|
61
|
+
{% assign name = 'banner.start_at' %}
|
62
|
+
{%- include functions.html func='get_value' default=0 -%}
|
63
|
+
{% assign banner_start_at = return %}
|
64
|
+
|
65
|
+
{% if banner_image or banner_video %}
|
66
|
+
{% assign has_banner = true %}
|
67
|
+
{% endif %}
|
68
|
+
|
@@ -2,14 +2,22 @@
|
|
2
2
|
{% assign article = include.params.article %}
|
3
3
|
{% endif %}
|
4
4
|
|
5
|
+
{% if include.params.lang %}
|
6
|
+
{% assign lang = include.params.lang %}
|
7
|
+
{% else %}
|
8
|
+
{% assign lang = lang | default: site.lang | default: "en" %}
|
9
|
+
{% endif %}
|
10
|
+
|
5
11
|
{% if include.params.speed %}
|
6
12
|
{% assign speed = include.params.speed %}
|
7
13
|
{% else %}
|
8
14
|
{% assign speed = 160 %}
|
9
15
|
{% endif %}
|
10
16
|
|
11
|
-
{
|
12
|
-
|
17
|
+
{%- include functions.html func='get_article_words' -%}
|
18
|
+
{% assign words = return %}
|
19
|
+
|
20
|
+
{% assign total_mins = words
|
13
21
|
| divided_by: speed
|
14
22
|
| at_least: 1 %}
|
15
23
|
|
@@ -2,31 +2,41 @@
|
|
2
2
|
{%- assign name = include.params.name -%}
|
3
3
|
{%- endif -%}
|
4
4
|
|
5
|
-
{%- assign
|
5
|
+
{%- assign return = nil -%}
|
6
|
+
|
7
|
+
{%- assign keys = name | split:'.' -%}
|
6
8
|
{%- assign name = keys.first -%}
|
9
|
+
{%- assign keys = keys | shift -%}
|
7
10
|
|
8
|
-
{%-
|
9
|
-
{%- assign return = page[name] -%}
|
10
|
-
{%- elsif site[name] != nil -%}
|
11
|
-
{%- assign return = site[name] -%}
|
12
|
-
{%- elsif site.data[name] != nil -%}
|
13
|
-
{%- assign return = site.data[name] -%}
|
14
|
-
{%- elsif site.defaults[page.layout][name] != nil -%}
|
15
|
-
{%- assign return = site.defaults[page.layout][name] -%}
|
16
|
-
{%- elsif site.data.defaults[page.layout][name] != nil -%}
|
17
|
-
{%- assign return = site.data.defaults[page.layout][name] -%}
|
18
|
-
{%- elsif layout[name] != nil -%}
|
19
|
-
{%- assign return = layout[name] -%}
|
20
|
-
{%- else -%}
|
21
|
-
{%- assign return = include.params.default -%}
|
22
|
-
{%- endif -%}
|
11
|
+
{%- for step in (1..7) -%}
|
23
12
|
|
24
|
-
{%-
|
25
|
-
{%-
|
26
|
-
|
27
|
-
|
28
|
-
|
13
|
+
{%- case step -%}
|
14
|
+
{%- when 1 -%}
|
15
|
+
{%- assign return = page[name] -%}
|
16
|
+
{%- when 2 -%}
|
17
|
+
{%- assign return = site[name] -%}
|
18
|
+
{%- when 3 -%}
|
19
|
+
{%- assign return = site.data[name] -%}
|
20
|
+
{%- when 4 -%}
|
21
|
+
{%- assign return = site.defaults[page.layout][name] -%}
|
22
|
+
{%- when 5 -%}
|
23
|
+
{%- assign return = site.data.defaults[page.layout][name] -%}
|
24
|
+
{%- when 6 -%}
|
25
|
+
{%- assign return = layout[name] -%}
|
26
|
+
{%- else -%}
|
27
|
+
{%- assign return = include.params.default -%}
|
28
|
+
{%- endcase -%}
|
29
|
+
|
30
|
+
{%- for key in keys -%}
|
31
|
+
{%- assign return = return[key] -%}
|
32
|
+
{%- if return == nil -%}
|
33
|
+
{%- break -%}
|
34
|
+
{%- endif -%}
|
35
|
+
{%- endfor -%}
|
36
|
+
|
37
|
+
{%- if return != nil -%}
|
29
38
|
{%- break -%}
|
30
39
|
{%- endif -%}
|
40
|
+
|
31
41
|
{%- endfor -%}
|
32
42
|
|
data/_includes/functions.html
CHANGED
data/_includes/head.html
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
<meta charset="utf-8">
|
3
3
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
4
4
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
5
|
-
<meta name="google-translate-customization" content="108d9124921d80c3-80e20d618ff053c8-g4f02ec6f3dba68b7-c"
|
5
|
+
<meta name="google-translate-customization" content="108d9124921d80c3-80e20d618ff053c8-g4f02ec6f3dba68b7-c">
|
6
6
|
{%- seo -%}
|
7
|
-
<link rel="
|
7
|
+
<link rel="icon" href="{{ site.favicon }}">
|
8
8
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
9
9
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/typeface-noto-sans@0.0.72/index.min.css">
|
10
10
|
<link rel="stylesheet" href="{{ "/assets/css/main.css" | relative_url }}">
|
@@ -14,4 +14,5 @@
|
|
14
14
|
{%- include extensions/google-analytics.html -%}
|
15
15
|
{%- endif -%}
|
16
16
|
{%- include extensions/code-highlight.html -%}
|
17
|
+
{%- include custom-head.html -%}
|
17
18
|
</head>
|
data/_includes/views/banner.html
CHANGED
@@ -3,11 +3,6 @@
|
|
3
3
|
{%- include functions.html func='get_value' -%}
|
4
4
|
{% assign banner_html = return %}
|
5
5
|
|
6
|
-
{%- include functions.html func='log' level='debug' msg='Get banner value' -%}
|
7
|
-
{% assign name = 'banner' %}
|
8
|
-
{%- include functions.html func='get_value' -%}
|
9
|
-
{% assign banner = return %}
|
10
|
-
|
11
6
|
{%- include functions.html func='log' level='debug' msg='Get heading value' -%}
|
12
7
|
{% assign name = 'heading' %}
|
13
8
|
{%- include functions.html func='get_value' -%}
|
@@ -18,10 +13,96 @@
|
|
18
13
|
{%- include functions.html func='get_value' -%}
|
19
14
|
{% assign subheading = return %}
|
20
15
|
|
21
|
-
{
|
16
|
+
{%- include functions.html func='get_banner' -%}
|
17
|
+
|
18
|
+
{%- if has_banner -%}
|
19
|
+
{%- if banner_background -%}
|
20
|
+
<style>
|
21
|
+
html .page-banner {
|
22
|
+
background: {{ banner_background }};
|
23
|
+
}
|
24
|
+
</style>
|
25
|
+
{%- endif -%}
|
26
|
+
{%- if banner_height -%}
|
27
|
+
<style>
|
28
|
+
{%- assign num = banner_height | times: 1 -%}
|
29
|
+
{%- assign unit = banner_height | replace_first: num -%}
|
30
|
+
{%- assign banner_min_height = banner_min_height | default: banner_height -%}
|
31
|
+
html .page-banner {
|
32
|
+
height: {{ banner_height | times: 0.368 | append: unit }};
|
33
|
+
min-height: {{ banner_min_height }};
|
34
|
+
}
|
35
|
+
html[data-scroll-status="top"] .page-banner {
|
36
|
+
height: {{ banner_height }};
|
37
|
+
}
|
38
|
+
</style>
|
39
|
+
{%- endif -%}
|
40
|
+
|
41
|
+
{%- if banner_opacity -%}
|
42
|
+
<style>
|
43
|
+
html .page-banner .page-banner-img > *:first-child {
|
44
|
+
opacity: {{ banner_opacity }};
|
45
|
+
}
|
46
|
+
|
47
|
+
html[data-theme="dark"] .page-banner .page-banner-img > *:first-child {
|
48
|
+
opacity: {{ banner_opacity | times: 0.718 }};
|
49
|
+
}
|
50
|
+
</style>
|
51
|
+
{%- endif -%}
|
52
|
+
{%- if banner_heading_style -%}
|
53
|
+
<style>
|
54
|
+
html .page-banner .page-banner-inner > *:first-child > *:nth-child(1) {
|
55
|
+
{{ banner_heading_style }}
|
56
|
+
}
|
57
|
+
</style>
|
58
|
+
{%- endif -%}
|
59
|
+
{%- if banner_subheading_style -%}
|
60
|
+
<style>
|
61
|
+
html .page-banner .page-banner-inner > *:first-child > *:nth-child(2) {
|
62
|
+
{{ banner_subheading_style }}
|
63
|
+
}
|
64
|
+
</style>
|
65
|
+
{%- endif -%}
|
22
66
|
<section class="page-banner">
|
23
67
|
<div class="page-banner-img">
|
24
|
-
|
68
|
+
{%- if banner_video -%}
|
69
|
+
<video
|
70
|
+
autoplay=""
|
71
|
+
poster="{{ banner_image }}"
|
72
|
+
playsinline
|
73
|
+
>
|
74
|
+
<source src="{{ banner_video }}">
|
75
|
+
</video>
|
76
|
+
<script>
|
77
|
+
(function() {
|
78
|
+
var video = document.querySelector('.page-banner .page-banner-img > video');
|
79
|
+
var videoPlay = function() {
|
80
|
+
video.play().catch (function() {
|
81
|
+
video.muted = true;
|
82
|
+
video.play();
|
83
|
+
});
|
84
|
+
}
|
85
|
+
|
86
|
+
video.onloadstart = function() {
|
87
|
+
video.currentTime = {{ banner_start_at }};
|
88
|
+
video.volume = {{ banner_volume }};
|
89
|
+
video.muted = (video.volume == 0);
|
90
|
+
videoPlay();
|
91
|
+
}
|
92
|
+
|
93
|
+
video.onended = function() {
|
94
|
+
video.currentTime = {{ banner_start_at }};
|
95
|
+
video.volume = 0;
|
96
|
+
{%- if banner_loop -%}
|
97
|
+
video.play();
|
98
|
+
{%- endif -%}
|
99
|
+
}
|
100
|
+
})();
|
101
|
+
</script>
|
102
|
+
{%- else -%}
|
103
|
+
<div style="background-image: url({{ banner_image }})"></div>
|
104
|
+
<img class="img-placeholder" src="{{ banner_image }}">
|
105
|
+
{%- endif -%}
|
25
106
|
</div>
|
26
107
|
<div class="wrapper">
|
27
108
|
<div class="page-banner-inner">
|
data/_includes/views/footer.html
CHANGED
@@ -3,9 +3,17 @@
|
|
3
3
|
|
4
4
|
<div class="wrapper">
|
5
5
|
<div class="site-footer-inner">
|
6
|
-
|
6
|
+
{%- assign currentYear = 'now' | date: "%Y" -%}
|
7
|
+
{%- assign copyright = site.copyright
|
8
|
+
| replace: '{currentYear}', currentYear
|
9
|
+
| replace: '{author}', site.author
|
10
|
+
| replace: '(c)', '©'
|
11
|
+
| replace: '(p)', '℗'
|
12
|
+
| replace: '(cleft)', '<span class="copyleft">©</span>'
|
13
|
+
-%}
|
14
|
+
<div>{{ copyright }}</div>
|
7
15
|
<div>Powered by <a title="Jekyll is a simple, blog-aware, static site
|
8
|
-
generator." href="
|
16
|
+
generator." href="https://jekyllrb.com/">Jekyll</a> & <a title="Yat, yet
|
9
17
|
another theme." href="https://github.com/jeffreytse/jekyll-theme-yat">Yat Theme</a>.</div>
|
10
18
|
<div class="footer-col rss-subscribe">Subscribe <a href="{{ "/feed.xml" | relative_url }}">via RSS</a></div>
|
11
19
|
</div>
|
data/_includes/views/header.html
CHANGED
@@ -1,15 +1,12 @@
|
|
1
1
|
|
2
|
-
{%- include functions.html func='
|
3
|
-
{%- assign name = 'banner' -%}
|
4
|
-
{%- include functions.html func='get_value' -%}
|
5
|
-
{% assign banner = return %}
|
2
|
+
{%- include functions.html func='get_banner' -%}
|
6
3
|
|
7
4
|
{%- include functions.html func='log' level='debug' msg='Get header_transparent value' -%}
|
8
5
|
{%- assign name = 'header_transparent' -%}
|
9
6
|
{%- include functions.html func='get_value' default=true -%}
|
10
7
|
{%- assign header_transparent = return -%}
|
11
8
|
|
12
|
-
{%- if
|
9
|
+
{%- if has_banner and header_transparent -%}
|
13
10
|
{%- assign header_transparent_class = "site-header-transparent" -%}
|
14
11
|
{%- endif -%}
|
15
12
|
|
@@ -47,6 +44,9 @@
|
|
47
44
|
{%- include functions.html func='get_value' -%}
|
48
45
|
{%- assign translate_langs = return -%}
|
49
46
|
{%- if translate_langs.size > 0 -%}
|
47
|
+
{%- assign name = 'lang' -%}
|
48
|
+
{%- include functions.html func='get_value' default='en' -%}
|
49
|
+
{%- assign lang = return -%}
|
50
50
|
<span class="page-link">
|
51
51
|
{%- include extensions/google-translate.html -%}
|
52
52
|
</span>
|
@@ -59,7 +59,7 @@
|
|
59
59
|
</header>
|
60
60
|
|
61
61
|
<script>
|
62
|
-
|
62
|
+
function initHeader() {
|
63
63
|
var lastScrollY = getScrollPos().y;
|
64
64
|
var documentElement = document.documentElement;
|
65
65
|
|
@@ -90,5 +90,6 @@
|
|
90
90
|
});
|
91
91
|
|
92
92
|
storeScrollData();
|
93
|
-
}
|
93
|
+
}
|
94
|
+
document.addEventListener('DOMContentLoaded', initHeader);
|
94
95
|
</script>
|
@@ -13,11 +13,14 @@
|
|
13
13
|
{%- assign date_format = site.yat.date_format | default: "%b %-d, %Y" -%}
|
14
14
|
|
15
15
|
{% assign article = post.content %}
|
16
|
+
{% assign lang = post.lang %}
|
16
17
|
{%- include functions.html func='get_reading_time' -%}
|
17
18
|
{% assign reading_time = return %}
|
19
|
+
{%- include functions.html func='get_article_excerpt' -%}
|
20
|
+
{% assign excerpt = return %}
|
21
|
+
{%- assign post_url = post.url | relative_url -%}
|
18
22
|
|
19
23
|
<h2 class="post-title">
|
20
|
-
{%- assign post_url = post.url | relative_url -%}
|
21
24
|
<a class="post-link" href="{{ post_url }}">
|
22
25
|
{{ post.title | escape }}
|
23
26
|
</a>
|
@@ -26,12 +29,14 @@
|
|
26
29
|
<span class="post-date"><i class="fa fa-calendar"></i> {{ post.date | date: date_format }}</span>
|
27
30
|
<span class="post-reading-time left-vsplit"><i class="fa fa-clock-o"></i> {{ reading_time }}</span>
|
28
31
|
</div>
|
29
|
-
<
|
30
|
-
|
31
|
-
|
32
|
+
<a class="post-excerpt" href="{{ post_url }}">
|
33
|
+
<p>
|
34
|
+
{{ excerpt }} <span class="read_more">Read More</span>
|
35
|
+
</p>
|
36
|
+
</a>
|
32
37
|
<div class="post-tags">
|
33
38
|
{%- for tag in post.tags -%}
|
34
|
-
<a class="post-tag" href="/tags.html#{{tag}}">#{{tag}}</a>
|
39
|
+
<a class="post-tag" href="{{ '/tags.html ' | relative_url }}#{{tag}}">#{{tag}}</a>
|
35
40
|
{%- endfor -%}
|
36
41
|
</div>
|
37
42
|
</li>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<header class="post-header">
|
2
2
|
<h1 class="post-title p-name" itemprop="name headline">{{ heading | default: page.title | escape }}</h1>
|
3
|
-
<
|
3
|
+
<h2 class="post-subtitle">{{ subheading | default: page.subtitle | escape }}</h2>
|
4
4
|
|
5
5
|
<p class="post-meta">
|
6
6
|
<time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
|
@@ -9,6 +9,7 @@
|
|
9
9
|
</time>
|
10
10
|
|
11
11
|
{% assign article = page.content %}
|
12
|
+
{% assign lang = page.lang %}
|
12
13
|
{%- include functions.html func='get_reading_time' -%}
|
13
14
|
{% assign reading_time = return %}
|
14
15
|
<span class="post-reading-time left-vsplit"><i class="fa fa-clock-o"></i> {{ reading_time }}</span>
|
data/_layouts/default.html
CHANGED
data/_layouts/post.html
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
.click-to-top {
|
2
|
+
transition: 0.3s;
|
3
|
+
display: flex;
|
4
|
+
align-items: center;
|
5
|
+
justify-content: center;
|
6
|
+
position: fixed;
|
7
|
+
width: 64px;
|
8
|
+
height: 64px;
|
9
|
+
border-radius: 32px;
|
10
|
+
right: 60px;
|
11
|
+
bottom: 48px;
|
12
|
+
background: white;
|
13
|
+
cursor: pointer;
|
14
|
+
opacity: 0;
|
15
|
+
transform: translateY(10px);
|
16
|
+
box-shadow: 0 2px 15px rgba(0, 0, 0, 0.15);
|
17
|
+
font-size: 24px;
|
18
|
+
user-select: none;
|
19
|
+
|
20
|
+
@include media-query(1024px) {
|
21
|
+
width: 48px;
|
22
|
+
height: 48px;
|
23
|
+
border-radius: 24px;
|
24
|
+
right: 35px;
|
25
|
+
font-size: 20px;
|
26
|
+
}
|
27
|
+
|
28
|
+
@include media-query($on-palm) {
|
29
|
+
width: 36px;
|
30
|
+
height: 36px;
|
31
|
+
border-radius: 18px;
|
32
|
+
right: 20px;
|
33
|
+
font-size: 16px;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
.click-to-top.show {
|
38
|
+
opacity: 1;
|
39
|
+
transform: translateY(0);
|
40
|
+
}
|
41
|
+
|
42
|
+
html[data-theme="dark"] {
|
43
|
+
.click-to-top {
|
44
|
+
background: #34323D;
|
45
|
+
}
|
46
|
+
}
|
data/_sass/misc/gitment.scss
CHANGED
data/_sass/yat/_base.scss
CHANGED
data/_sass/yat/_dark.scss
CHANGED
@@ -2,11 +2,22 @@ $dark-background-color: #0e0e0e !default;
|
|
2
2
|
$dark-text-color: #bbb !default;
|
3
3
|
|
4
4
|
html[data-theme="dark"] {
|
5
|
-
|
6
5
|
&[data-scroll-status='top'] {
|
7
|
-
.site-
|
8
|
-
|
9
|
-
|
6
|
+
header.site-header-transparent {
|
7
|
+
&.site-header {
|
8
|
+
@include media-query($on-laptop) {
|
9
|
+
.page-link {
|
10
|
+
color: #f8f8f8;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
}
|
14
|
+
}
|
15
|
+
|
16
|
+
footer.site-footer {
|
17
|
+
.site-footer-inner {
|
18
|
+
border-top: solid 1px #2f2f2f !important;
|
19
|
+
transition: 0s;
|
20
|
+
}
|
10
21
|
}
|
11
22
|
}
|
12
23
|
|
@@ -20,6 +31,10 @@ html[data-theme="dark"] {
|
|
20
31
|
background-color: #454545;
|
21
32
|
}
|
22
33
|
|
34
|
+
blockquote {
|
35
|
+
border-left: 4px solid #484848;
|
36
|
+
}
|
37
|
+
|
23
38
|
table {
|
24
39
|
color: #9d9d9d;
|
25
40
|
|
@@ -80,7 +95,7 @@ html[data-theme="dark"] {
|
|
80
95
|
.page-banner {
|
81
96
|
.page-banner-img {
|
82
97
|
& > *:first-child {
|
83
|
-
opacity: 0.
|
98
|
+
opacity: 0.718;
|
84
99
|
}
|
85
100
|
}
|
86
101
|
}
|
@@ -127,9 +142,15 @@ html[data-theme="dark"] {
|
|
127
142
|
}
|
128
143
|
}
|
129
144
|
|
130
|
-
.post
|
131
|
-
|
132
|
-
|
145
|
+
.post {
|
146
|
+
.post-header {
|
147
|
+
border-bottom: 1px solid #555;
|
148
|
+
}
|
149
|
+
|
150
|
+
.post-content {
|
151
|
+
img:not(.emoji):not([raw]) {
|
152
|
+
background-color: #ffffff33;
|
153
|
+
}
|
133
154
|
}
|
134
155
|
}
|
135
156
|
|
data/_sass/yat/_layout.scss
CHANGED
@@ -23,7 +23,7 @@ html {
|
|
23
23
|
|
24
24
|
@include media-query($on-laptop) {
|
25
25
|
.page-link {
|
26
|
-
color:
|
26
|
+
color: $header-text-color;
|
27
27
|
}
|
28
28
|
|
29
29
|
.menu-icon {
|
@@ -36,6 +36,7 @@ html {
|
|
36
36
|
}
|
37
37
|
|
38
38
|
footer.site-footer {
|
39
|
+
color: unset;
|
39
40
|
background-color: transparent;
|
40
41
|
|
41
42
|
.site-footer-inner {
|
@@ -209,6 +210,11 @@ html {
|
|
209
210
|
}
|
210
211
|
}
|
211
212
|
|
213
|
+
.copyleft {
|
214
|
+
display: inline-block;
|
215
|
+
transform: rotate(180deg);
|
216
|
+
}
|
217
|
+
|
212
218
|
/**
|
213
219
|
* Post header
|
214
220
|
*/
|
@@ -274,7 +280,7 @@ html {
|
|
274
280
|
}
|
275
281
|
|
276
282
|
.post-title {
|
277
|
-
margin-bottom:
|
283
|
+
margin-bottom: $spacing-unit * 0.2;
|
278
284
|
transition: 0.2s all;
|
279
285
|
|
280
286
|
a {
|
@@ -306,24 +312,28 @@ html {
|
|
306
312
|
}
|
307
313
|
|
308
314
|
.post-link {
|
309
|
-
@include relative-font-size(1.
|
315
|
+
@include relative-font-size(1.65);
|
310
316
|
font-weight: $base-font-weight * 1.5;
|
311
|
-
color: #
|
317
|
+
color: #333;
|
312
318
|
}
|
313
319
|
|
314
320
|
.post-excerpt {
|
315
321
|
color: #777;
|
322
|
+
word-break: break-word;
|
323
|
+
overflow-wrap: break-word;
|
316
324
|
}
|
317
325
|
|
318
326
|
.post-tags .post-tag {
|
327
|
+
display: inline-block;
|
319
328
|
text-decoration: none;
|
320
329
|
border: 1px solid;
|
321
330
|
padding: 2px 4px;
|
322
331
|
border-radius: 2px;
|
323
332
|
transition: color 0.2s;
|
333
|
+
margin-bottom: 8px;
|
324
334
|
|
325
|
-
&:not(:
|
326
|
-
margin-
|
335
|
+
&:not(:last-child) {
|
336
|
+
margin-right: 8px;
|
327
337
|
}
|
328
338
|
|
329
339
|
&:hover {
|
@@ -379,7 +389,11 @@ html {
|
|
379
389
|
border-bottom: 1px solid #ebebeb;
|
380
390
|
|
381
391
|
.post-title {
|
382
|
-
margin-bottom:
|
392
|
+
margin-bottom: 6px;
|
393
|
+
}
|
394
|
+
|
395
|
+
.post-subtitle {
|
396
|
+
font-weight: lighter;
|
383
397
|
}
|
384
398
|
|
385
399
|
.post-meta {
|
@@ -420,6 +434,9 @@ html {
|
|
420
434
|
img, svg, iframe {
|
421
435
|
margin-left: auto;
|
422
436
|
margin-right: auto;
|
437
|
+
}
|
438
|
+
|
439
|
+
img:not(.emoji), svg, iframe {
|
423
440
|
display: block;
|
424
441
|
}
|
425
442
|
|
@@ -569,6 +586,15 @@ html {
|
|
569
586
|
@include center-image;
|
570
587
|
transition: 0.1s all ease-in-out;
|
571
588
|
}
|
589
|
+
|
590
|
+
& > video {
|
591
|
+
width: 100vw;
|
592
|
+
object-fit: cover;
|
593
|
+
}
|
594
|
+
|
595
|
+
& > img.img-placeholder {
|
596
|
+
display: none;
|
597
|
+
}
|
572
598
|
}
|
573
599
|
|
574
600
|
.wrapper {
|
@@ -588,18 +614,23 @@ html {
|
|
588
614
|
> :nth-child(1) {
|
589
615
|
@include relative-font-size(3.9);
|
590
616
|
letter-spacing: -1px;
|
591
|
-
margin-bottom:
|
617
|
+
margin-bottom: 0.1em;
|
592
618
|
font-weight: normal;
|
593
619
|
transition: 0.2s all;
|
594
620
|
|
595
621
|
@include media-query($on-palm) {
|
596
|
-
@include relative-font-size(
|
622
|
+
@include relative-font-size(1.975);
|
597
623
|
}
|
598
624
|
}
|
599
625
|
|
600
626
|
> :nth-child(2) {
|
601
|
-
font-weight:
|
602
|
-
margin-bottom: 0;
|
627
|
+
font-weight: lighter;
|
628
|
+
margin-bottom: 0.8em;
|
629
|
+
transition: 0.2s all;
|
630
|
+
|
631
|
+
@include media-query($on-palm) {
|
632
|
+
@include relative-font-size(1.175);
|
633
|
+
}
|
603
634
|
}
|
604
635
|
|
605
636
|
> :last-child {
|
data/_sass/yat.scss
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
// Define defaults for each variable.
|
4
4
|
|
5
|
-
$base-font-family:
|
5
|
+
$base-font-family: Helvetica, Arial, Oswald, sans-serif, !default;
|
6
6
|
$base-font-size: 14px !default;
|
7
7
|
$base-font-weight: 400 !default;
|
8
8
|
$small-font-size: $base-font-size * 0.875 !default;
|
@@ -12,7 +12,6 @@ $spacing-unit: 30px !default;
|
|
12
12
|
|
13
13
|
$text-color: #454545 !default;
|
14
14
|
$background-color: #fff !default;
|
15
|
-
$brand-color: #ff5100 !default;
|
16
15
|
|
17
16
|
$grey-color: #828282 !default;
|
18
17
|
$grey-color-light: lighten($grey-color, 40%) !default;
|
@@ -35,7 +34,7 @@ $banner-text-color: lighten($white-color, 0%) !default;
|
|
35
34
|
$banner-background: rgba(0,0,0,0.8) !default;
|
36
35
|
|
37
36
|
// Width of the content area
|
38
|
-
$content-width: 920px !default;
|
37
|
+
// $content-width: 920px !default;
|
39
38
|
|
40
39
|
$on-palm: 600px !default;
|
41
40
|
$on-laptop: 800px !default;
|
@@ -66,5 +65,6 @@ $on-laptop: 800px !default;
|
|
66
65
|
"misc/article-menu",
|
67
66
|
"misc/common-list",
|
68
67
|
"misc/google-translate",
|
69
|
-
"misc/gitment"
|
68
|
+
"misc/gitment",
|
69
|
+
"misc/click-to-top"
|
70
70
|
;
|
data/assets/css/main.scss
CHANGED
@@ -4,13 +4,22 @@
|
|
4
4
|
|
5
5
|
// Default theme colors
|
6
6
|
$theme-colors: (
|
7
|
-
coolblack: #090a0b,
|
8
|
-
spacegrey: #353535,
|
9
|
-
snowwhite: #ffffff,
|
7
|
+
"coolblack": #090a0b,
|
8
|
+
"spacegrey": #353535,
|
9
|
+
"snowwhite": #ffffff,
|
10
|
+
);
|
11
|
+
|
12
|
+
// Default brand colors
|
13
|
+
$brand-colors: (
|
14
|
+
"orangered": #ff5100,
|
15
|
+
"greatgold": #f2cb05,
|
16
|
+
"greenblue": #389092,
|
10
17
|
);
|
11
18
|
|
12
19
|
$theme-name: "{{ site.theme_color }}";
|
20
|
+
$brand-name: "{{ site.brand_color }}";
|
13
21
|
$theme-color: map-get($theme-colors, "snowwhite");
|
22
|
+
$brand-color: map-get($brand-colors, "orangered");
|
14
23
|
|
15
24
|
@if map-has-key($theme-colors, $theme-name) {
|
16
25
|
$theme-color: map-get($theme-colors, $theme-name);
|
@@ -18,4 +27,12 @@ $theme-color: map-get($theme-colors, "snowwhite");
|
|
18
27
|
$theme-color: {{ site.theme_color | default: '#ffffff' }};
|
19
28
|
}
|
20
29
|
|
30
|
+
@if map-has-key($brand-colors, $brand-name) {
|
31
|
+
$brand-color: map-get($brand-colors, $brand-name);
|
32
|
+
} @else if str-index($brand-name, "#") == 1 {
|
33
|
+
$brand-color: {{ site.brand_color | default: '#ff5100' }};
|
34
|
+
}
|
35
|
+
|
36
|
+
$content-width: {{ site.content_width | default: '920px' }};
|
37
|
+
|
21
38
|
@import "yat";
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-theme-yat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jeffreytse
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -140,9 +140,9 @@ dependencies:
|
|
140
140
|
- - "~>"
|
141
141
|
- !ruby/object:Gem::Version
|
142
142
|
version: '0.2'
|
143
|
-
description:
|
143
|
+
description:
|
144
144
|
email:
|
145
|
-
- jeffreytse.
|
145
|
+
- hello@jeffreytse.net
|
146
146
|
executables: []
|
147
147
|
extensions: []
|
148
148
|
extra_rdoc_files: []
|
@@ -151,9 +151,12 @@ files:
|
|
151
151
|
- README.md
|
152
152
|
- _data/defaults.yml
|
153
153
|
- _data/translate_langs.yml
|
154
|
+
- _includes/custom-head.html
|
155
|
+
- _includes/extensions/click-to-top.html
|
154
156
|
- _includes/extensions/code-highlight.html
|
155
157
|
- _includes/extensions/comments/disqus.html
|
156
158
|
- _includes/extensions/comments/gitment.html
|
159
|
+
- _includes/extensions/comments/utterances.html
|
157
160
|
- _includes/extensions/geopattern.html
|
158
161
|
- _includes/extensions/google-analytics.html
|
159
162
|
- _includes/extensions/google-translate.html
|
@@ -162,6 +165,9 @@ files:
|
|
162
165
|
- _includes/extensions/theme-toggle.html
|
163
166
|
- _includes/extensions/trianglify.html
|
164
167
|
- _includes/functions.html
|
168
|
+
- _includes/functions/get_article_excerpt.html
|
169
|
+
- _includes/functions/get_article_words.html
|
170
|
+
- _includes/functions/get_banner.html
|
165
171
|
- _includes/functions/get_categories.html
|
166
172
|
- _includes/functions/get_datetimes.html
|
167
173
|
- _includes/functions/get_reading_time.html
|
@@ -196,6 +202,7 @@ files:
|
|
196
202
|
- _layouts/post.html
|
197
203
|
- _layouts/tags.html
|
198
204
|
- _sass/misc/article-menu.scss
|
205
|
+
- _sass/misc/click-to-top.scss
|
199
206
|
- _sass/misc/common-list.scss
|
200
207
|
- _sass/misc/gitment.scss
|
201
208
|
- _sass/misc/google-translate.scss
|
@@ -212,7 +219,7 @@ licenses:
|
|
212
219
|
- MIT
|
213
220
|
metadata:
|
214
221
|
plugin_type: theme
|
215
|
-
post_install_message:
|
222
|
+
post_install_message:
|
216
223
|
rdoc_options: []
|
217
224
|
require_paths:
|
218
225
|
- lib
|
@@ -227,8 +234,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
227
234
|
- !ruby/object:Gem::Version
|
228
235
|
version: '0'
|
229
236
|
requirements: []
|
230
|
-
rubygems_version: 3.0.
|
231
|
-
signing_key:
|
237
|
+
rubygems_version: 3.0.3.1
|
238
|
+
signing_key:
|
232
239
|
specification_version: 4
|
233
240
|
summary: Yet another theme for elegant writers with modern flat style and beautiful
|
234
241
|
night/dark mode.
|