jekyll-theme-chirpy 5.0.2 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -7
  3. data/_config.yml +35 -13
  4. data/_data/assets/cross_origin.yml +62 -0
  5. data/_data/assets/self_host.yml +51 -0
  6. data/_data/locales/en.yml +1 -14
  7. data/_data/locales/id-ID.yml +0 -13
  8. data/_data/locales/ko-KR.yml +0 -13
  9. data/_data/locales/my-MM.yml +78 -0
  10. data/_data/locales/ru-RU.yml +78 -0
  11. data/_data/locales/uk-UA.yml +78 -0
  12. data/_data/locales/zh-CN.yml +0 -13
  13. data/_data/share.yml +1 -1
  14. data/_includes/assets-origin.html +12 -0
  15. data/_includes/comments/giscus.html +56 -0
  16. data/_includes/comments/utterances.html +2 -2
  17. data/_includes/head.html +35 -20
  18. data/_includes/js-selector.html +42 -10
  19. data/_includes/jsdelivr-combine.html +32 -0
  20. data/_includes/mermaid.html +3 -3
  21. data/_includes/mode-toggle.html +4 -3
  22. data/_includes/post-sharing.html +2 -2
  23. data/_includes/refactor-content.html +53 -6
  24. data/_includes/search-loader.html +1 -1
  25. data/_includes/sidebar.html +6 -6
  26. data/_includes/timeago.html +6 -17
  27. data/_includes/toc.html +1 -1
  28. data/_includes/topbar.html +2 -3
  29. data/_layouts/archives.html +5 -7
  30. data/_layouts/category.html +3 -5
  31. data/_layouts/default.html +4 -2
  32. data/_layouts/home.html +2 -2
  33. data/_layouts/page.html +3 -1
  34. data/_layouts/tag.html +3 -5
  35. data/_sass/addon/commons.scss +139 -132
  36. data/_sass/addon/module.scss +33 -17
  37. data/_sass/addon/syntax.scss +38 -25
  38. data/_sass/addon/variables.scss +6 -6
  39. data/_sass/colors/dark-syntax.scss +1 -0
  40. data/_sass/colors/dark-typography.scss +10 -1
  41. data/_sass/colors/light-syntax.scss +6 -1
  42. data/_sass/colors/light-typography.scss +14 -1
  43. data/_sass/jekyll-theme-chirpy.scss +1 -1
  44. data/_sass/layout/post.scss +1 -1
  45. data/_tabs/about.md +2 -2
  46. data/assets/404.html +0 -2
  47. data/assets/js/data/search.json +1 -0
  48. data/assets/js/data/swcache.js +11 -20
  49. data/assets/js/dist/categories.min.js +2 -2
  50. data/assets/js/dist/commons.min.js +2 -2
  51. data/assets/js/dist/home.min.js +2 -2
  52. data/assets/js/dist/misc.min.js +6 -0
  53. data/assets/js/dist/page.min.js +2 -2
  54. data/assets/js/dist/post.min.js +2 -2
  55. data/assets/js/dist/pvreport.min.js +1 -1
  56. metadata +11 -4
  57. data/_includes/css-selector.html +0 -15
  58. data/_includes/no-zero-date.html +0 -13
@@ -0,0 +1,56 @@
1
+ <!-- https://giscus.app/ -->
2
+ <script type="text/javascript">
3
+ $(function () {
4
+ const origin = "https://giscus.app";
5
+ const iframe = "iframe.giscus-frame";
6
+ const lightTheme = "light";
7
+ const darkTheme = "dark_dimmed";
8
+ let initTheme = lightTheme;
9
+
10
+ if ($("html[data-mode=dark]").length > 0
11
+ || ($("html[data-mode]").length == 0
12
+ && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
13
+ initTheme = darkTheme;
14
+ }
15
+
16
+ let giscusAttributes = {
17
+ "src": "https://giscus.app/client.js",
18
+ "data-repo": "{{ site.comments.giscus.repo}}",
19
+ "data-repo-id": "{{ site.comments.giscus.repo_id }}",
20
+ "data-category": "{{ site.comments.giscus.category }}",
21
+ "data-category-id": "{{ site.comments.giscus.category_id }}",
22
+ "data-mapping": "{{ site.comments.giscus.mapping | default: 'pathname' }}",
23
+ "data-reactions-enabled": "1",
24
+ "data-emit-metadata": "0",
25
+ "data-theme": initTheme,
26
+ "data-input-position": "{{ site.comments.giscus.input_position | default: 'bottom' }}",
27
+ "data-lang": "{{ site.comments.giscus.lang | default: lang }}",
28
+ "crossorigin": "anonymous",
29
+ "async": ""
30
+ };
31
+
32
+ let giscusScript = document.createElement("script");
33
+ Object.entries(giscusAttributes).forEach(([key, value]) => giscusScript.setAttribute(key, value));
34
+ document.getElementById("tail-wrapper").appendChild(giscusScript);
35
+
36
+ addEventListener("message", (event) => {
37
+ if (event.source === window && event.data &&
38
+ event.data.direction === ModeToggle.ID) {
39
+ /* global theme mode changed */
40
+ const mode = event.data.message;
41
+ const theme = (mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme);
42
+
43
+ const message = {
44
+ setConfig: {
45
+ theme: theme
46
+ }
47
+ };
48
+
49
+ const giscus = document.querySelector(iframe).contentWindow;
50
+ giscus.postMessage({ giscus: message }, origin);
51
+ }
52
+
53
+ });
54
+
55
+ });
56
+ </script>
@@ -14,8 +14,8 @@
14
14
  const darkTheme = "github-dark";
15
15
  let initTheme = lightTheme;
16
16
 
17
- if ($("html[mode=dark]").length > 0
18
- || ($("html[mode]").length == 0
17
+ if ($("html[data-mode=dark]").length > 0
18
+ || ($("html[data-mode]").length == 0
19
19
  && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
20
20
  initTheme = darkTheme;
21
21
  }
data/_includes/head.html CHANGED
@@ -6,13 +6,12 @@
6
6
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
8
8
 
9
- {% if page.layout == 'home' or page.layout == 'post' %}
9
+ <!-- Allow having a localized datetime different from the appearance language -->
10
+ {% if site.prefer_datetime_locale %}
11
+ <meta name="prefer-datetime-locale" content="{{ site.prefer_datetime_locale }}">
12
+ {% endif %}
10
13
 
11
- <!-- i18n for `_javascript/utils/timeago.js` -->
12
- <meta name="day-prompt" content="{{ site.data.locales[lang].post.timeago.day }}">
13
- <meta name="hour-prompt" content="{{ site.data.locales[lang].post.timeago.hour }}">
14
- <meta name="minute-prompt" content="{{ site.data.locales[lang].post.timeago.minute }}">
15
- <meta name="justnow-prompt" content="{{ site.data.locales[lang].post.timeago.just_now }}">
14
+ {% if page.layout == 'home' or page.layout == 'post' %}
16
15
 
17
16
  {% if site.google_analytics.pv.proxy_endpoint %}
18
17
  <meta name="pv-proxy-endpoint" content="{{ site.google_analytics.pv.proxy_endpoint }}">
@@ -35,12 +34,24 @@
35
34
 
36
35
  {% include favicons.html %}
37
36
 
38
- <!-- Google Fonts -->
39
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous">
40
- <link rel="dns-prefetch" href="https://fonts.gstatic.com">
37
+ {% if site.resources.ignore_env != jekyll.environment and site.resources.self_hosted %}
38
+
39
+ <link href="{{ site.data.assets[origin].webfonts | relative_url }}" rel="stylesheet">
40
+
41
+ {% else %}
42
+
43
+ {% for cdn in site.data.assets[origin].cdns %}
44
+ <link rel="preconnect" href="{{ cdn.url }}" {{ cdn.args }}>
45
+ <link rel="dns-prefetch" href="{{ cdn.url }}" {{ cdn.args }}>
46
+ {% endfor %}
47
+
48
+ <link rel="stylesheet" href="{{ site.data.assets[origin].webfonts }}">
49
+
50
+ {% endif %}
41
51
 
42
52
  <!-- GA -->
43
- {% if jekyll.environment == 'production' %}
53
+ {% if jekyll.environment == 'production'
54
+ and site.google_analytics.id != empty and site.google_analytics.id %}
44
55
  <link rel="preconnect" href="https://www.google-analytics.com" crossorigin="use-credentials">
45
56
  <link rel="dns-prefetch" href="https://www.google-analytics.com">
46
57
 
@@ -49,27 +60,31 @@
49
60
 
50
61
  {% if site.google_analytics.pv.proxy_endpoint %}
51
62
  {% assign proxy_url = site.google_analytics.pv.proxy_endpoint
52
- | replace: "https://", "" | split: "/" | first | prepend: "https://" %}
53
-
63
+ | replace: "https://", "" | split: "/" | first | prepend: "https://" %}
54
64
  <link rel="preconnect" href="{{ proxy_url }}" crossorigin="use-credentials">
55
65
  <link rel="dns-prefetch" href="{{ proxy_url }}">
56
66
  {% endif %}
57
67
  {% endif %}
58
68
 
59
- <!-- jsDelivr CDN -->
60
- <link rel="preconnect" href="https://cdn.jsdelivr.net">
61
- <link rel="dns-prefetch" href="https://cdn.jsdelivr.net">
62
-
63
69
  <!-- Bootstrap -->
64
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css">
70
+ <link rel="stylesheet" href="{{ site.data.assets[origin].bootstrap.css }}">
65
71
 
66
72
  <!-- Font Awesome -->
67
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.11.2/css/all.min.css">
73
+ <link rel="stylesheet" href="{{ site.data.assets[origin].fontawesome.css }}">
74
+
75
+ <link rel="stylesheet" href="{{ '/assets/css/style.css' | relative_url }}">
68
76
 
69
- {% include css-selector.html %}
77
+ {% if site.toc and page.toc %}
78
+ <link rel="stylesheet" href="{{ site.data.assets[origin].bootstrap-toc.css }}">
79
+ {% endif %}
80
+
81
+ {% if page.layout == 'page' or page.layout == 'post' %}
82
+ <!-- Manific Popup -->
83
+ <link rel="stylesheet" href="{{ site.data.assets[origin].magnific-popup.css }}">
84
+ {% endif %}
70
85
 
71
86
  <!-- JavaScript -->
72
87
 
73
- <script src="https://cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js"></script>
88
+ <script src="{{ site.data.assets[origin].jquery.js }}"></script>
74
89
 
75
90
  </head>
@@ -7,14 +7,43 @@
7
7
  {% if page.layout == 'post' %}
8
8
  {% if site.google_analytics.pv.proxy_endpoint or site.google_analytics.pv.cache_path %}
9
9
  <!-- pv-report needs countup.js -->
10
- <script async src="https://cdn.jsdelivr.net/npm/countup.js@1.9.3/dist/countUp.min.js"></script>
10
+ <script async src="{{ site.data.assets[origin].countup.js }}"></script>
11
11
  <script defer src="{{ '/assets/js/dist/pvreport.min.js' | relative_url }}"></script>
12
12
  {% endif %}
13
13
  {% endif %}
14
14
 
15
15
  {% if page.layout == 'post' or page.layout == 'page' %}
16
- <!-- image lazy-loading & popup -->
17
- <script src="https://cdn.jsdelivr.net/combine/npm/lozad/dist/lozad.min.js,npm/magnific-popup@1/dist/jquery.magnific-popup.min.js,npm/clipboard@2/dist/clipboard.min.js"></script>
16
+ <!-- image lazy-loading & popup & clipboard -->
17
+ {% assign _urls = site.data.assets[origin].magnific-popup.js
18
+ | append: ',' | append: site.data.assets[origin].lozad.js
19
+ | append: ',' | append: site.data.assets[origin].clipboard.js
20
+ %}
21
+
22
+ {% include jsdelivr-combine.html urls=_urls %}
23
+
24
+ {% endif %}
25
+
26
+ {% if page.layout == 'home'
27
+ or page.layout == 'post'
28
+ or page.layout == 'archives'
29
+ or page.layout == 'category'
30
+ or page.layout == 'tag' %}
31
+
32
+ {% if site.prefer_datetime_locale %}
33
+ {% assign locale = site.prefer_datetime_locale | downcase %}
34
+ {% else %}
35
+ {% assign locale = site.lang | split: '-' | first %}
36
+ {% endif %}
37
+
38
+ {% assign _urls = site.data.assets[origin].dayjs.js.common
39
+ | append: ',' | append: site.data.assets[origin].dayjs.js.locale
40
+ | replace: ':LOCALE', locale
41
+ | append: ',' | append: site.data.assets[origin].dayjs.js.relativeTime
42
+ | append: ',' | append: site.data.assets[origin].dayjs.js.localizedFormat
43
+ %}
44
+
45
+ {% include jsdelivr-combine.html urls=_urls %}
46
+
18
47
  {% endif %}
19
48
 
20
49
  {% if page.layout == 'home'
@@ -22,12 +51,16 @@
22
51
  or page.layout == 'post'
23
52
  or page.layout == 'page' %}
24
53
  {% assign type = page.layout %}
54
+ {% elsif page.layout == 'archives'
55
+ or page.layout == 'category'
56
+ or page.layout == 'tag' %}
57
+ {% assign type = "misc" %}
25
58
  {% else %}
26
59
  {% assign type = "commons" %}
27
60
  {% endif %}
28
61
 
29
- {% assign js = type | prepend: '/assets/js/dist/' | append: '.min.js' %}
30
- <script defer src="{{ js | relative_url }}"></script>
62
+ {% capture script %}/assets/js/dist/{{ type }}.min.js{% endcapture %}
63
+ <script defer src="{{ script | relative_url }}"></script>
31
64
 
32
65
  {% if page.math %}
33
66
  <!-- MathJax -->
@@ -46,22 +79,21 @@
46
79
  }
47
80
  };
48
81
  </script>
49
- <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
50
- <script type="text/javascript" id="MathJax-script" async
51
- src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
82
+ <script src="{{ site.data.assets[origin].polyfill.js }}"></script>
83
+ <script id="MathJax-script" async src="{{ site.data.assets[origin].mathjax.js }}">
52
84
  </script>
53
85
  {% endif %}
54
86
 
55
87
  <!-- commons -->
56
88
 
57
- <script src="https://cdn.jsdelivr.net/combine/npm/popper.js@1.16.1,npm/bootstrap@4/dist/js/bootstrap.min.js"></script>
89
+ <script src="{{ site.data.assets[origin].bootstrap.js }}"></script>
58
90
 
59
91
  {% if jekyll.environment == 'production' %}
60
92
  <!-- PWA -->
61
93
  <script defer src="{{ '/app.js' | relative_url }}"></script>
62
94
 
63
95
  <!-- GA -->
64
- {% if site.google_analytics.id %}
96
+ {% if site.google_analytics.id != empty and site.google_analytics.id %}
65
97
  {% include google-analytics.html %}
66
98
  {% endif %}
67
99
 
@@ -0,0 +1,32 @@
1
+ {% assign urls = include.urls | split: ',' %}
2
+
3
+ {% assign combined_urls = nil %}
4
+
5
+ {% assign domain = 'https://cdn.jsdelivr.net/' %}
6
+
7
+ {% for url in urls %}
8
+
9
+ {% if url contains domain %}
10
+ {% assign url_snippet = url | slice: domain.size, url.size %}
11
+
12
+ {% if combined_urls %}
13
+ {% assign combined_urls = combined_urls | append: ',' | append: url_snippet %}
14
+ {% else %}
15
+ {% assign combined_urls = domain | append: 'combine/' | append: url_snippet %}
16
+ {% endif %}
17
+
18
+ {% elsif url contains '//' %}
19
+
20
+ <script src="{{ url }}"></script>
21
+
22
+ {% else %}
23
+
24
+ <script src="{{ url | relative_url }}"></script>
25
+
26
+ {% endif %}
27
+
28
+ {% endfor %}
29
+
30
+ {% if combined_urls %}
31
+ <script src="{{ combined_urls }}"></script>
32
+ {% endif %}
@@ -2,7 +2,7 @@
2
2
  mermaid-js loader
3
3
  -->
4
4
 
5
- <script src="https://cdn.jsdelivr.net/npm/mermaid@8/dist/mermaid.min.js"></script>
5
+ <script src="{{ site.data.assets[origin].mermaid.js }}"></script>
6
6
 
7
7
  <script>
8
8
  $(function() {
@@ -33,8 +33,8 @@
33
33
 
34
34
  let initTheme = "default";
35
35
 
36
- if ($("html[mode=dark]").length > 0
37
- || ($("html[mode]").length == 0
36
+ if ($("html[data-mode=dark]").length > 0
37
+ || ($("html[data-mode]").length == 0
38
38
  && window.matchMedia("(prefers-color-scheme: dark)").matches ) ) {
39
39
  initTheme = "dark";
40
40
  }
@@ -5,6 +5,7 @@
5
5
  <script type="text/javascript">
6
6
  class ModeToggle {
7
7
  static get MODE_KEY() { return "mode"; }
8
+ static get MODE_ATTR() { return "data-mode"; }
8
9
  static get DARK_MODE() { return "dark"; }
9
10
  static get LIGHT_MODE() { return "light"; }
10
11
  static get ID() { return "mode-toggle"; }
@@ -70,17 +71,17 @@
70
71
  }
71
72
 
72
73
  setDark() {
73
- $('html').attr(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
74
+ $('html').attr(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
74
75
  sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
75
76
  }
76
77
 
77
78
  setLight() {
78
- $('html').attr(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
79
+ $('html').attr(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
79
80
  sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
80
81
  }
81
82
 
82
83
  clearMode() {
83
- $('html').removeAttr(ModeToggle.MODE_KEY);
84
+ $('html').removeAttr(ModeToggle.MODE_ATTR);
84
85
  sessionStorage.removeItem(ModeToggle.MODE_KEY);
85
86
  }
86
87
 
@@ -9,7 +9,7 @@
9
9
  {% assign url = page.url | absolute_url %}
10
10
 
11
11
  {% for share in site.data.share.platforms %}
12
- {% assign link = share.link | replace: 'TITLE', title | replace: 'URL', url %}
12
+ {% assign link = share.link | replace: 'TITLE', title | replace: 'URL', url | escape %}
13
13
  <a href="{{ link }}" data-toggle="tooltip" data-placement="top"
14
14
  title="{{ share.type }}" target="_blank" rel="noopener" aria-label="{{ share.type }}">
15
15
  <i class="fa-fw {{ share.icon }}"></i>
@@ -19,7 +19,7 @@
19
19
  <i id="copy-link" class="fa-fw fas fa-link small"
20
20
  data-toggle="tooltip" data-placement="top"
21
21
  title="{{ site.data.locales[lang].post.button.share_link.title }}"
22
- title-succeed="{{ site.data.locales[lang].post.button.share_link.succeed }}">
22
+ data-title-succeed="{{ site.data.locales[lang].post.button.share_link.succeed }}">
23
23
  </i>
24
24
 
25
25
  </span>
@@ -165,13 +165,13 @@
165
165
  {% endif %}
166
166
 
167
167
  {% capture _label %}
168
- <span label-text="{{ _label_text | strip }}"><i class="{{ _label_icon }}"></i></span>
168
+ <span data-label-text="{{ _label_text | strip }}"><i class="{{ _label_icon }}"></i></span>
169
169
  {% endcapture %}
170
170
 
171
171
  {% assign _new_content = _new_content | append: _snippet
172
172
  | append: '<div class="code-header">'
173
173
  | append: _label
174
- | append: '<button aria-label="copy" title-succeed="'
174
+ | append: '<button aria-label="copy" data-title-succeed="'
175
175
  | append: site.data.locales[lang].post.button.copy_code.succeed
176
176
  | append: '"><i class="far fa-clipboard"></i></button></div>'
177
177
  | append: '<div class="highlight"><code>'
@@ -205,12 +205,11 @@
205
205
  {% endif %}
206
206
 
207
207
  {% assign id = snippet | split: '"' | first %}
208
- {% capture anchor %}<a href="#{{ id }}" class="anchor"><i class="fas fa-hashtag"></i></a>{% endcapture %}
208
+ {% capture anchor %}<a href="#{{ id }}" class="anchor text-muted"><i class="fas fa-hashtag"></i></a>{% endcapture %}
209
209
 
210
210
  {% assign left = snippet | split: mark_end | first %}
211
- {% assign _start_index = left | size %}
212
- {% assign _end_index = snippet | size | minus: 1 %}
213
- {% assign right = snippet | slice: _start_index, _end_index %}
211
+ {% assign right = snippet | slice: left.size, snippet.size %}
212
+ {% assign left = left | replace: '">', '"><span class="mr-2">' | append: '</span>' %}
214
213
 
215
214
  {% assign _new_content = _new_content | append: mark_start
216
215
  | append: left | append: anchor | append: mark_end | append: right
@@ -225,6 +224,54 @@
225
224
 
226
225
  {% assign _content = _heading_content %}
227
226
 
227
+ <!-- Wrap prompt element of blockquote with the <div> tag -->
228
+
229
+ {% assign blockquote_start = '<blockquote class=' %}
230
+ {% assign blockquote_end = '</blockquote>' %}
231
+ {% assign cls_prefix = 'prompt-' %}
232
+
233
+ {% if _content contains blockquote_start %}
234
+
235
+ {% assign _prompt_content = nil %}
236
+ {% assign _prompt_snippets = _content | split: blockquote_start %}
237
+
238
+ {% for _snippet in _prompt_snippets %}
239
+
240
+ {% if forloop.first %}
241
+ {% assign _prompt_content = _snippet %}
242
+ {% continue %}
243
+ {% endif %}
244
+
245
+ {% assign left = _snippet | split: blockquote_end | first %}
246
+ {% assign right = _snippet | slice: left.size, _snippet.size %}
247
+
248
+ {% assign cls_str = left | split: '>' | first %}
249
+ {% assign cls_array = cls_str | remove: '"' | split: ' ' %}
250
+ {% assign is_prompt = false %}
251
+
252
+ {% for cls in cls_array %}
253
+ {% if cls contains cls_prefix %}
254
+ {% assign is_prompt = true %}
255
+ {% break %}
256
+ {% endif %}
257
+ {% endfor %}
258
+
259
+ {% unless is_prompt %}
260
+ {% assign _prompt_content = _prompt_content | append: blockquote_start | append: _snippet %}
261
+ {% continue %}
262
+ {% endunless %}
263
+
264
+ {% assign left = left | slice: cls_str.size, left.size %}
265
+ {% assign left = cls_str | append: '><div' | append: left | append: '</div>' %}
266
+
267
+ {% assign _prompt_content = _prompt_content | append: blockquote_start | append: left | append: right %}
268
+
269
+ {% endfor %}
270
+
271
+ {% assign _content = _prompt_content %}
272
+
273
+ {% endif %}
274
+
228
275
  <!-- return -->
229
276
 
230
277
  {{ _content }}
@@ -16,7 +16,7 @@
16
16
 
17
17
  {% capture not_found %}<p class="mt-5">{{ site.data.locales[lang].search.no_results }}</p>{% endcapture %}
18
18
 
19
- <script src="https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js"></script>
19
+ <script src="{{ site.data.assets[origin].search.js }}"></script>
20
20
 
21
21
  <script>
22
22
  SimpleJekyllSearch({
@@ -2,19 +2,19 @@
2
2
  The Side Bar
3
3
  -->
4
4
 
5
- <div id="sidebar" class="d-flex flex-column align-items-end" lang="{{lang}}">
5
+ <div id="sidebar" class="d-flex flex-column align-items-end">
6
6
  <div class="profile-wrapper text-center">
7
7
  <div id="avatar">
8
8
  <a href="{{ '/' | relative_url }}" alt="avatar" class="mx-auto">
9
- {% if site.avatar != '' and site.avatar %}
9
+ {% if site.avatar != empty and site.avatar %}
10
10
  {% capture avatar_url %}
11
- {%- if site.avatar contains '://' -%}
11
+ {% if site.avatar contains '://' %}
12
12
  {{ site.avatar }}
13
- {%- elsif site.img_cdn != '' and site.img_cdn -%}
13
+ {% elsif site.img_cdn != empty and site.img_cdn %}
14
14
  {{ site.avatar | prepend: site.img_cdn }}
15
- {%- else -%}
15
+ {% else %}
16
16
  {{ site.avatar | relative_url }}
17
- {%- endif -%}
17
+ {% endif %}
18
18
  {% endcapture %}
19
19
  <img src="{{ avatar_url }}" alt="avatar" onerror="this.style.display='none'">
20
20
  {% endif %}
@@ -3,24 +3,13 @@
3
3
  See: ${JS_ROOT}/utils/timeago.js
4
4
  -->
5
5
 
6
- {% assign tooltip_df = site.data.locales[lang].date_format.tooltip %}
7
- {% assign post_long_df = site.data.locales[lang].date_format.post.long %}
8
- {% assign post_short_df = site.data.locales[lang].date_format.post.short %}
9
-
10
6
  <em class="timeago{% if include.class %} {{ include.class }}{% endif %}"
11
- date="{{ include.date }}"
7
+ data-ts="{{ include.date | date: '%s' }}"
12
8
  {% if include.tooltip %}
13
- data-toggle="tooltip"
14
- data-placement="bottom"
15
- title="{{ include.date | date: tooltip_df }}"
9
+ data-toggle="tooltip" data-placement="bottom" data-tooltip-df="llll"
10
+ {% endif %}
11
+ {% if include.capitalize %}
12
+ data-capitalize="true"
16
13
  {% endif %}>
17
-
18
- {%- assign this_year = site.time | date: "%Y" -%}
19
- {%- assign post_year = include.date | date: "%Y" -%}
20
-
21
- {%- if post_year == this_year -%}
22
- {{ include.date | date: post_short_df }}
23
- {%- else -%}
24
- {{ include.date | date: post_long_df }}
25
- {%- endif -%}
14
+ {{ include.date | date: '%Y-%m-%d' }}
26
15
  </em>
data/_includes/toc.html CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  {% if enable_toc %}
9
9
  <!-- BS-toc.js will be loaded at medium priority -->
10
- <script src="https://cdn.jsdelivr.net/gh/afeld/bootstrap-toc@1.0.1/dist/bootstrap-toc.min.js"></script>
10
+ <script src="{{ site.data.assets[origin].bootstrap-toc.js }}"></script>
11
11
 
12
12
  <div id="toc-wrapper" class="pl-0 pr-4 mb-5">
13
13
  <div class="panel-heading pl-3 pt-2 mb-2">{{- site.data.locales[lang].panel.toc -}}</div>
@@ -2,7 +2,7 @@
2
2
  The Top Bar
3
3
  -->
4
4
 
5
- <div id="topbar-wrapper" class="row justify-content-center topbar-down">
5
+ <div id="topbar-wrapper" class="row justify-content-center">
6
6
  <div id="topbar" class="col-11 d-flex h-100 align-items-center justify-content-between">
7
7
  <span id="breadcrumb">
8
8
 
@@ -50,7 +50,7 @@
50
50
  <div id="topbar-title">
51
51
  {% if page.layout == 'home' %}
52
52
  {{- site.data.locales[lang].title | default: site.title -}}
53
- {% elsif page.collection == 'tabs' or page.dynamic_title %}
53
+ {% elsif page.collection == 'tabs' or page.layout == 'page' %}
54
54
  {%- capture tab_key -%}{{ page.url | split: '/' }}{%- endcapture -%}
55
55
  {{- site.data.locales[lang].tabs[tab_key] | default: page.title -}}
56
56
  {% else %}
@@ -63,7 +63,6 @@
63
63
  <i class="fas fa-search fa-fw"></i>
64
64
  <input class="form-control" id="search-input" type="search"
65
65
  aria-label="search" autocomplete="off" placeholder="{{ site.data.locales[lang].search.hint | capitalize }}...">
66
- <i class="fa fa-times-circle fa-fw" id="search-cleaner"></i>
67
66
  </span>
68
67
  <span id="search-cancel" >{{ site.data.locales[lang].search.cancel }}</span>
69
68
  </div>
@@ -3,8 +3,6 @@ layout: page
3
3
  # The Archives of posts.
4
4
  ---
5
5
 
6
- {% include lang.html %}
7
-
8
6
  <div id="archives" class="pl-xl-2">
9
7
 
10
8
  {% for post in site.posts %}
@@ -18,11 +16,11 @@ layout: page
18
16
  {% endif %}
19
17
  <li>
20
18
  <div>
21
- {% capture this_day %}{{ post.date | date: "%d" }}{% endcapture %}
22
- {% capture _mth_df %}{{ site.data.locales[lang].date_format.post.archive_month }}{% endcapture %}
23
- {% capture this_month %}{{ post.date | date: _mth_df }}{% endcapture %}
24
- <span class="date day">{{ this_day }}</span>
25
- <span class="date month small text-muted">{% include no-zero-date.html date_str=this_month %}</span>
19
+ {% assign ts = post.date | date: '%s' %}
20
+ <span class="date day" data-ts="{{ ts }}" data-df="DD">{{ post.date | date: "%d" }}</span>
21
+ <span class="date month small text-muted" data-ts="{{ ts }}" data-df="MMM">
22
+ {{ post.date | date: '%m' }}
23
+ </span>
26
24
  <a href="{{ post.url | relative_url }}">{{ post.title }}</a>
27
25
  </div>
28
26
  </li>
@@ -3,8 +3,6 @@ layout: page
3
3
  # The Category layout
4
4
  ---
5
5
 
6
- {% include lang.html %}
7
-
8
6
  <div id="page-category">
9
7
  <h1 class="pl-lg-2">
10
8
  <i class="far fa-folder-open fa-fw text-muted"></i>
@@ -13,13 +11,13 @@ layout: page
13
11
  </h1>
14
12
 
15
13
  <ul class="post-content pl-0">
16
- {% assign post_df = site.data.locales[lang].date_format.post.long %}
17
-
18
14
  {% for post in page.posts %}
19
15
  <li class="d-flex justify-content-between pl-md-3 pr-md-3">
20
16
  <a href="{{ post.url | relative_url }}">{{ post.title }}</a>
21
17
  <span class="dash flex-grow-1"></span>
22
- <span class="text-muted small">{{ post.date | date: post_df }}</span>
18
+ <span class="text-muted small" data-ts="{{ post.date | date: '%s' }}" data-df="ll">
19
+ {{ post.date | date: '%Y-%m-%d' }}
20
+ </span>
23
21
  </li>
24
22
  {% endfor %}
25
23
  </ul>
@@ -7,9 +7,11 @@ layout: compress
7
7
 
8
8
  {% include lang.html %}
9
9
 
10
+ {% include assets-origin.html %}
11
+
10
12
  {% capture prefer_mode %}
11
13
  {% if site.theme_mode %}
12
- mode="{{ site.theme_mode }}"
14
+ data-mode="{{ site.theme_mode }}"
13
15
  {% endif %}
14
16
  {% endcapture %}
15
17
 
@@ -21,7 +23,7 @@ layout: compress
21
23
  {% include mode-toggle.html %}
22
24
  {% endunless %}
23
25
 
24
- <body data-spy="scroll" data-target="#toc">
26
+ <body data-spy="scroll" data-target="#toc" data-topbar-visible="true">
25
27
 
26
28
  {% include sidebar.html %}
27
29
 
data/_layouts/home.html CHANGED
@@ -6,7 +6,7 @@ layout: page
6
6
  {% include lang.html %}
7
7
 
8
8
  {% assign pinned = site.posts | where: "pin", "true" %}
9
- {% assign default = site.posts | where_exp: "item", "item.pin != true" %}
9
+ {% assign default = site.posts | where_exp: "item", "item.pin != true and item.hidden != true" %}
10
10
 
11
11
  {% assign posts = "" | split: "" %}
12
12
 
@@ -62,7 +62,7 @@ layout: page
62
62
  <div class="mr-auto">
63
63
  <!-- posted date -->
64
64
  <i class="far fa-calendar fa-fw"></i>
65
- {% include timeago.html date=post.date tooltip=true %}
65
+ {% include timeago.html date=post.date tooltip=true capitalize=true %}
66
66
 
67
67
  <!-- time to read -->
68
68
  <i class="far fa-clock fa-fw"></i>