jekyll-theme-chirpy 7.1.0 → 7.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/_data/locales/fr-FR.yml +3 -3
  3. data/_data/locales/hu-HU.yml +20 -7
  4. data/_data/origin/cors.yml +4 -4
  5. data/_includes/analytics/cloudflare.html +0 -1
  6. data/_includes/analytics/fathom.html +2 -3
  7. data/_includes/analytics/google.html +1 -1
  8. data/_includes/analytics/matomo.html +6 -7
  9. data/_includes/comments/disqus.html +36 -29
  10. data/_includes/comments/giscus.html +14 -30
  11. data/_includes/comments/utterances.html +26 -37
  12. data/_includes/head.html +25 -4
  13. data/_includes/js-selector.html +3 -23
  14. data/_includes/jsdelivr-combine.html +4 -4
  15. data/_includes/search-loader.html +22 -20
  16. data/_includes/sidebar.html +1 -3
  17. data/_includes/toc-status.html +10 -0
  18. data/_includes/toc.html +4 -8
  19. data/_layouts/default.html +8 -4
  20. data/_layouts/home.html +26 -19
  21. data/_layouts/post.html +29 -2
  22. data/_sass/abstracts/_breakpoints.scss +73 -0
  23. data/_sass/abstracts/_index.scss +4 -0
  24. data/_sass/abstracts/_mixins.scss +80 -0
  25. data/_sass/{addon/module.scss → abstracts/_placeholders.scss} +22 -55
  26. data/_sass/{addon/variables.scss → abstracts/_variables.scss} +0 -4
  27. data/_sass/base/_base.scss +476 -0
  28. data/_sass/base/_index.scss +4 -0
  29. data/_sass/base/_reset.scss +41 -0
  30. data/_sass/{addon/syntax.scss → base/_syntax.scss} +46 -85
  31. data/_sass/base/_typography.scss +266 -0
  32. data/_sass/components/_buttons.scss +51 -0
  33. data/_sass/components/_index.scss +2 -0
  34. data/_sass/components/_popups.scss +172 -0
  35. data/_sass/layout/_footer.scss +36 -0
  36. data/_sass/layout/_index.scss +4 -0
  37. data/_sass/layout/_panel.scss +70 -0
  38. data/_sass/layout/_sidebar.scss +258 -0
  39. data/_sass/layout/_topbar.scss +86 -0
  40. data/_sass/main.bundle.scss +2 -2
  41. data/_sass/main.scss +4 -13
  42. data/_sass/{layout/archives.scss → pages/_archives.scss} +12 -16
  43. data/_sass/{layout/categories.scss → pages/_categories.scss} +5 -6
  44. data/_sass/{layout/category-tag.scss → pages/_category-tag.scss} +11 -20
  45. data/_sass/{layout/home.scss → pages/_home.scss} +54 -70
  46. data/_sass/pages/_index.scss +7 -0
  47. data/_sass/{layout/post.scss → pages/_post.scss} +183 -45
  48. data/_sass/pages/_search.scss +184 -0
  49. data/_sass/{layout/tags.scss → pages/_tags.scss} +7 -3
  50. data/_sass/{colors/typography-dark.scss → themes/_dark.scss} +163 -7
  51. data/_sass/themes/_light.scss +313 -0
  52. data/_sass/vendors/_bootstrap.scss +5 -0
  53. data/assets/css/jekyll-theme-chirpy.scss +1 -1
  54. data/assets/feed.xml +1 -1
  55. data/assets/js/dist/app.min.js +2 -2
  56. data/assets/js/dist/categories.min.js +2 -2
  57. data/assets/js/dist/commons.min.js +2 -2
  58. data/assets/js/dist/home.min.js +2 -2
  59. data/assets/js/dist/misc.min.js +2 -2
  60. data/assets/js/dist/page.min.js +2 -2
  61. data/assets/js/dist/post.min.js +2 -2
  62. data/assets/js/dist/sw.min.js +2 -2
  63. data/assets/js/dist/theme.min.js +4 -0
  64. metadata +35 -22
  65. data/_includes/mermaid.html +0 -62
  66. data/_includes/mode-toggle.html +0 -116
  67. data/_sass/addon/commons.scss +0 -1542
  68. data/_sass/colors/syntax-dark.scss +0 -164
  69. data/_sass/colors/syntax-light.scss +0 -210
  70. data/_sass/colors/typography-light.scss +0 -112
  71. data/_sass/dist/bootstrap.css +0 -5
  72. data/_sass/variables-hook.scss +0 -3
  73. /data/_includes/{comments.html → comment.html} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2ff815d5dbeba09f4ae176a5431e6e151f061cc1f39a389f7ff979eb71ca44b9
4
- data.tar.gz: 32a350e7854e34edd6e95096fcc7a2bda4303fc8d82e7045d384a90d9b9c14ce
3
+ metadata.gz: 9c749c4a08f2636682588e8485511c640b72565c7c1c9216d1b991b88aea098b
4
+ data.tar.gz: 1c49935df9a20c9b2b2746b659f625eaa2d2623cacf267ef398b494b2f713f52
5
5
  SHA512:
6
- metadata.gz: fb461ad55b3cff7e3f17c0ea386c06fdb63f9b7f8473f0989be21bdeb9149435d93ef4074f6e6039c70eb271fdecc8d16103626c66933dd9a43f78da5618b63b
7
- data.tar.gz: 4fa6ab293ba18f21a4a206a7e0ef497a3578acfe640c270a1ef972a2974ff6ae034c97e7314c4006a76632bdb68af0a94144753386bf9eb8c71924f6b649bf69
6
+ metadata.gz: 29a98ae874961852fc8b375815adbd9ac7cfb6a94e9083d5cc4353a6029b7b0af0e61b9e05274ef05e7b1471c2eba279dea538287d82b5fccd39582231b0ab8e
7
+ data.tar.gz: 30618a4727a026badb6884da95877ac67da3e5842ce92e28eb3203b5cb0d8351b115549859f9158c40df5d42b4606f7eadbb9b8311a17783c9103e9c7e540fca
@@ -14,7 +14,7 @@ tabs:
14
14
  categories: Catégories
15
15
  tags: Tags
16
16
  archives: Archives
17
- about: A propos de
17
+ about: À propos
18
18
 
19
19
  # the text displayed in the search bar & search results
20
20
  search:
@@ -32,12 +32,12 @@ copyright:
32
32
  license:
33
33
  template: Cet article est sous licence :LICENSE_NAME par l'auteur.
34
34
  name: CC BY 4.0
35
- link: https://creativecommons.org/licenses/by/4.0/
35
+ link: https://creativecommons.org/licenses/by/4.0/deed.fr
36
36
 
37
37
  # Displayed in the footer
38
38
  brief: Certains droits réservés.
39
39
  verbose: >-
40
- Sauf mention contraire, les articles de ce site sont publiés sous licence
40
+ Sauf mention contraire, les articles de ce site sont publiés
41
41
  sous la licence Creative Commons Attribution 4.0 International (CC BY 4.0) par l'auteur.
42
42
 
43
43
  meta: Propulsé par :PLATFORM avec le thème :THEME
@@ -14,24 +14,23 @@ tabs:
14
14
  categories: Kategóriák
15
15
  tags: Címkék
16
16
  archives: Archívum
17
- about: Rólam
17
+ about: Bemutatkozás
18
18
 
19
19
  # the text displayed in the search bar & search results
20
20
  search:
21
21
  hint: keresés
22
22
  cancel: Mégse
23
- no_results: Oops! Nincs találat a keresésre.
23
+ no_results: Hoppá! Nincs találat a keresésre.
24
24
 
25
25
  panel:
26
26
  lastmod: Legutóbb frissítve
27
27
  trending_tags: Népszerű Címkék
28
28
  toc: Tartalom
29
- links: Blog linkek
30
29
 
31
30
  copyright:
32
31
  # Shown at the bottom of the post
33
32
  license:
34
- template: A bejegyzés :LICENSE_NAME licenccel rendelkezik.
33
+ template: A bejegyzést a szerző :LICENSE_NAME licenc alatt engedélyezte.
35
34
  name: CC BY 4.0
36
35
  link: https://creativecommons.org/licenses/by/4.0/
37
36
 
@@ -42,7 +41,7 @@ copyright:
42
41
  Creative Commons Attribution 4.0 International (CC BY 4.0) licenccel rendelkeznek,
43
42
  hacsak másképp nincs jelezve.
44
43
 
45
- meta: Készítve :PLATFORM motorral :THEME témával
44
+ meta: Készítve :THEME témával a :PLATFORM platformra.
46
45
 
47
46
  not_found:
48
47
  statement: Sajnáljuk, az URL-t rosszul helyeztük el, vagy valami nem létezőre mutat.
@@ -73,7 +72,21 @@ post:
73
72
  title: Link másolása
74
73
  succeed: Link sikeresen másolva!
75
74
 
75
+ # Date time format.
76
+ # See: <http://strftime.net/>, <https://day.js.org/docs/en/display/format>
77
+ df:
78
+ post:
79
+ strftime: "%Y. %B. %e."
80
+ dayjs: "YYYY. MMMM D."
81
+ archives:
82
+ strftime: "%B"
83
+ dayjs: "MMM"
84
+
76
85
  # categories page
77
86
  categories:
78
- category_measure: kategória
79
- post_measure: bejegyzés
87
+ category_measure:
88
+ singular: kategória
89
+ plural: kategória
90
+ post_measure:
91
+ singular: bejegyzés
92
+ plural: bejegyzés
@@ -20,17 +20,17 @@ webfonts: https://fonts.googleapis.com/css2?family=Lato:wght@300;400&family=Sour
20
20
  # Libraries
21
21
 
22
22
  toc:
23
- css: https://cdn.jsdelivr.net/npm/tocbot@4.29.0/dist/tocbot.min.css
24
- js: https://cdn.jsdelivr.net/npm/tocbot@4.29.0/dist/tocbot.min.js
23
+ css: https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.css
24
+ js: https://cdn.jsdelivr.net/npm/tocbot@4.32.2/dist/tocbot.min.js
25
25
 
26
26
  fontawesome:
27
- css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.6.0/css/all.min.css
27
+ css: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.7.1/css/all.min.css
28
28
 
29
29
  search:
30
30
  js: https://cdn.jsdelivr.net/npm/simple-jekyll-search@1.10.0/dest/simple-jekyll-search.min.js
31
31
 
32
32
  mermaid:
33
- js: https://cdn.jsdelivr.net/npm/mermaid@11.0.2/dist/mermaid.min.js
33
+ js: https://cdn.jsdelivr.net/npm/mermaid@11.4.0/dist/mermaid.min.js
34
34
 
35
35
  dayjs:
36
36
  js:
@@ -4,4 +4,3 @@
4
4
  src="https://static.cloudflareinsights.com/beacon.min.js"
5
5
  data-cf-beacon='{"token": "{{ site.analytics.cloudflare.id }}"}'
6
6
  ></script>
7
- <!-- End Cloudflare Web Analytics -->
@@ -2,6 +2,5 @@
2
2
  <script
3
3
  src="https://cdn.usefathom.com/script.js"
4
4
  data-site="{{ site.analytics.fathom.id }}"
5
- defer>
6
- </script>
7
- <!-- End Fathom Code -->
5
+ defer
6
+ ></script>
@@ -1,7 +1,7 @@
1
1
  <!-- Global site tag (gtag.js) - Google Analytics -->
2
2
  <script defer src="https://www.googletagmanager.com/gtag/js?id={{ site.analytics.google.id }}"></script>
3
3
  <script>
4
- document.addEventListener('DOMContentLoaded', function (event) {
4
+ document.addEventListener('DOMContentLoaded', () => {
5
5
  window.dataLayer = window.dataLayer || [];
6
6
  function gtag() {
7
7
  dataLayer.push(arguments);
@@ -1,14 +1,13 @@
1
1
  <!-- Matomo -->
2
- <script type="text/javascript">
3
- var _paq = window._paq = window._paq || [];
4
- _paq.push(['trackPageView']);
5
- _paq.push(['enableLinkTracking']);
6
- (function() {
2
+ <script>
3
+ document.addEventListener('DOMContentLoaded', () => {
4
+ var _paq = (window._paq = window._paq || []);
5
+ _paq.push(['trackPageView']);
6
+ _paq.push(['enableLinkTracking']);
7
7
  var u="//{{ site.analytics.matomo.domain }}/";
8
8
  _paq.push(['setTrackerUrl', u+'matomo.php']);
9
9
  _paq.push(['setSiteId', {{ site.analytics.matomo.id }}]);
10
10
  var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
11
11
  g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
12
- })();
12
+ });
13
13
  </script>
14
- <!-- End Matomo Code -->
@@ -1,38 +1,25 @@
1
- <!-- The Disqus lazy loading. -->
2
-
3
- <div id="disqus_thread">
4
- <p class="text-center text-muted small">Comments powered by <a href="https://disqus.com/">Disqus</a>.</p>
5
- </div>
6
-
7
- <script type="text/javascript">
1
+ <script>
8
2
  var disqus_config = function () {
9
3
  this.page.url = '{{ page.url | absolute_url }}';
10
4
  this.page.identifier = '{{ page.url }}';
11
5
  };
12
6
 
13
- {%- comment -%} Lazy loading {%- endcomment -%}
14
- var disqus_observer = new IntersectionObserver(
15
- function (entries) {
16
- if (entries[0].isIntersecting) {
17
- (function () {
18
- var d = document,
19
- s = d.createElement('script');
20
- s.src = 'https://{{ site.comments.disqus.shortname }}.disqus.com/embed.js';
21
- s.setAttribute('data-timestamp', +new Date());
22
- (d.head || d.body).appendChild(s);
23
- })();
24
-
25
- disqus_observer.disconnect();
26
- }
27
- },
28
- { threshold: [0] }
29
- );
7
+ function addDisqus() {
8
+ let disqusThread = document.createElement('div');
9
+ let paragraph = document.createElement('p');
30
10
 
31
- disqus_observer.observe(document.getElementById('disqus_thread'));
11
+ disqusThread.id = 'disqus_thread';
12
+ paragraph.className = 'text-center text-muted small';
13
+ paragraph.innerHTML = 'Comments powered by <a href="https://disqus.com/">Disqus</a>.';
14
+ disqusThread.appendChild(paragraph);
15
+
16
+ const footer = document.querySelector('footer');
17
+ footer.insertAdjacentElement("beforebegin", disqusThread);
18
+ }
32
19
 
33
20
  {%- comment -%} Auto switch theme {%- endcomment -%}
34
- function reloadDisqus() {
35
- if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
21
+ function reloadDisqus(event) {
22
+ if (event.source === window && event.data && event.data.id === Theme.ID) {
36
23
  {%- comment -%} Disqus hasn't been loaded {%- endcomment -%}
37
24
  if (typeof DISQUS === 'undefined') {
38
25
  return;
@@ -44,7 +31,27 @@
44
31
  }
45
32
  }
46
33
 
47
- if (document.getElementById('mode-toggle')) {
48
- window.addEventListener('message', reloadDisqus);
34
+ addDisqus();
35
+
36
+ if (Theme.switchable) {
37
+ addEventListener('message', reloadDisqus);
49
38
  }
39
+
40
+ {%- comment -%} Lazy loading {%- endcomment -%}
41
+ var disqusObserver = new IntersectionObserver(
42
+ function (entries) {
43
+ if (entries[0].isIntersecting) {
44
+ var d = document,
45
+ s = d.createElement('script');
46
+ s.src = 'https://{{ site.comments.disqus.shortname }}.disqus.com/embed.js';
47
+ s.setAttribute('data-timestamp', +new Date());
48
+ (d.head || d.body).appendChild(s);
49
+
50
+ disqusObserver.disconnect();
51
+ }
52
+ },
53
+ { threshold: [0] }
54
+ );
55
+
56
+ disqusObserver.observe(document.getElementById('disqus_thread'));
50
57
  </script>
@@ -1,21 +1,8 @@
1
1
  <!-- https://giscus.app/ -->
2
- <script type="text/javascript">
2
+ <script>
3
3
  (function () {
4
- const origin = 'https://giscus.app';
5
- const lightTheme = 'light';
6
- const darkTheme = 'dark_dimmed';
7
-
8
- let initTheme = lightTheme;
9
- const html = document.documentElement;
10
-
11
- if (
12
- (html.hasAttribute('data-mode') &&
13
- html.getAttribute('data-mode') === 'dark') ||
14
- (!html.hasAttribute('data-mode') &&
15
- window.matchMedia('(prefers-color-scheme: dark)').matches)
16
- ) {
17
- initTheme = darkTheme;
18
- }
4
+ const themeMapper = Theme.getThemeMapper('light', 'dark_dimmed');
5
+ const initTheme = themeMapper[Theme.visualState];
19
6
 
20
7
  let lang = '{{ site.comments.giscus.lang | default: lang }}';
21
8
  {%- comment -%} https://github.com/giscus/giscus/tree/main/locales {%- endcomment -%}
@@ -41,30 +28,27 @@
41
28
  async: ''
42
29
  };
43
30
 
44
- let giscusScript = document.createElement('script');
31
+ let giscusNode = document.createElement('script');
45
32
  Object.entries(giscusAttributes).forEach(([key, value]) =>
46
- giscusScript.setAttribute(key, value)
33
+ giscusNode.setAttribute(key, value)
47
34
  );
48
- document.getElementById('tail-wrapper').appendChild(giscusScript);
35
+
36
+ const $footer = document.querySelector('footer');
37
+ $footer.insertAdjacentElement("beforebegin", giscusNode);
49
38
 
50
39
  addEventListener('message', (event) => {
51
- if (
52
- event.source === window &&
53
- event.data &&
54
- event.data.direction === ModeToggle.ID
55
- ) {
56
- {%- comment -%} global theme mode changed {%- endcomment -%}
57
- const mode = event.data.message;
58
- const theme = mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme;
40
+ if (event.source === window && event.data && event.data.id === Theme.ID) {
41
+ const newTheme = themeMapper[Theme.visualState];
59
42
 
60
43
  const message = {
61
44
  setConfig: {
62
- theme: theme
45
+ theme: newTheme
63
46
  }
64
47
  };
65
48
 
66
- const giscus = document.getElementsByClassName('giscus-frame')[0].contentWindow;
67
- giscus.postMessage({ giscus: message }, origin);
49
+ const giscus =
50
+ document.getElementsByClassName('giscus-frame')[0].contentWindow;
51
+ giscus.postMessage({ giscus: message }, 'https://giscus.app');
68
52
  }
69
53
  });
70
54
  })();
@@ -1,49 +1,38 @@
1
1
  <!-- https://utteranc.es/ -->
2
- <script
3
- src="https://utteranc.es/client.js"
4
- repo="{{ site.comments.utterances.repo }}"
5
- issue-term="{{ site.comments.utterances.issue_term }}"
6
- crossorigin="anonymous"
7
- async
8
- ></script>
9
-
10
- <script type="text/javascript">
2
+ <script>
11
3
  (function () {
12
4
  const origin = 'https://utteranc.es';
13
- const lightTheme = 'github-light';
14
- const darkTheme = 'github-dark';
15
- let initTheme = lightTheme;
16
- const html = document.documentElement;
5
+ const themeMapper = Theme.getThemeMapper('github-light', 'github-dark');
6
+ const initTheme = themeMapper[Theme.visualState];
7
+
8
+ let script = document.createElement('script');
9
+ script.src = 'https://utteranc.es/client.js';
10
+ script.setAttribute('repo', '{{ site.comments.utterances.repo }}');
11
+ script.setAttribute('issue-term', '{{ site.comments.utterances.issue_term }}');
12
+ script.setAttribute('theme', initTheme);
13
+ script.crossOrigin = 'anonymous';
14
+ script.async = true;
17
15
 
18
- if (
19
- (html.hasAttribute('data-mode') && html.getAttribute('data-mode') === 'dark') ||
20
- (!html.hasAttribute('data-mode') && window.matchMedia('(prefers-color-scheme: dark)').matches)
21
- ) {
22
- initTheme = darkTheme;
23
- }
16
+ const $footer = document.querySelector('footer');
17
+ $footer.insertAdjacentElement('beforebegin', script);
24
18
 
25
19
  addEventListener('message', (event) => {
26
- let theme;
20
+ let newTheme;
27
21
 
28
- {%- comment -%} credit to <https://github.com/utterance/utterances/issues/170#issuecomment-594036347> {%- endcomment -%}
29
- if (event.origin === origin) {
30
- {%- comment -%} page initial {%- endcomment -%}
31
- theme = initTheme;
32
- } else if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
33
- {%- comment -%} global theme mode changed {%- endcomment -%}
34
- const mode = event.data.message;
35
- theme = mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme;
36
- } else {
37
- return;
38
- }
22
+ {%- comment -%}
23
+ Credit to <https://github.com/utterance/utterances/issues/170#issuecomment-594036347>
24
+ {%- endcomment -%}
25
+ if (event.source === window && event.data && event.data.id === Theme.ID) {
26
+ newTheme = themeMapper[Theme.visualState];
39
27
 
40
- const message = {
41
- type: 'set-theme',
42
- theme: theme
43
- };
28
+ const message = {
29
+ type: 'set-theme',
30
+ theme: newTheme
31
+ };
44
32
 
45
- const utterances = document.getElementsByClassName('utterances-frame')[0].contentWindow;
46
- utterances.postMessage(message, origin);
33
+ const utterances = document.querySelector('.utterances-frame').contentWindow;
34
+ utterances.postMessage(message, origin);
35
+ }
47
36
  });
48
37
  })();
49
38
  </script>
data/_includes/head.html CHANGED
@@ -2,7 +2,7 @@
2
2
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3
3
  <meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7">
4
4
  <meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e">
5
- <meta name="apple-mobile-web-app-capable" content="yes">
5
+ <meta name="mobile-web-app-capable" content="yes">
6
6
  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
7
7
  <meta
8
8
  name="viewport"
@@ -70,7 +70,7 @@
70
70
 
71
71
  <!-- Bootstrap -->
72
72
  {% unless jekyll.environment == 'production' %}
73
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css">
73
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
74
74
  {% endunless %}
75
75
 
76
76
  <!-- Theme style -->
@@ -97,11 +97,32 @@
97
97
  <link rel="stylesheet" href="{{ site.data.origin[type].glightbox.css | relative_url }}">
98
98
  {% endif %}
99
99
 
100
- <!-- JavaScript -->
100
+ <!-- Scripts -->
101
101
 
102
102
  {% unless site.theme_mode %}
103
- {% include mode-toggle.html %}
103
+ <script src="{{ '/assets/js/dist/theme.min.js' | relative_url }}"></script>
104
104
  {% endunless %}
105
105
 
106
+ {% include js-selector.html lang=lang %}
107
+
108
+ {% if jekyll.environment == 'production' %}
109
+ <!-- PWA -->
110
+ {% if site.pwa.enabled %}
111
+ <script
112
+ defer
113
+ src="{{ '/app.min.js' | relative_url }}?baseurl={{ site.baseurl | default: '' }}&register={{ site.pwa.cache.enabled }}"
114
+ ></script>
115
+ {% endif %}
116
+
117
+ <!-- Web Analytics -->
118
+ {% for analytics in site.analytics %}
119
+ {% capture str %}{{ analytics }}{% endcapture %}
120
+ {% assign platform = str | split: '{' | first %}
121
+ {% if site.analytics[platform].id and site.analytics[platform].id != empty %}
122
+ {% include analytics/{{ platform }}.html %}
123
+ {% endif %}
124
+ {% endfor %}
125
+ {% endif %}
126
+
106
127
  {% include metadata-hook.html %}
107
128
  </head>
@@ -62,12 +62,12 @@
62
62
 
63
63
  {% capture script %}/assets/js/dist/{{ js }}.min.js{% endcapture %}
64
64
 
65
- <script src="{{ script | relative_url }}"></script>
65
+ <script defer src="{{ script | relative_url }}"></script>
66
66
 
67
67
  {% if page.math %}
68
68
  <!-- MathJax -->
69
- <script src="{{ '/assets/js/data/mathjax.js' | relative_url }}"></script>
70
- <script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
69
+ <script async src="{{ '/assets/js/data/mathjax.js' | relative_url }}"></script>
70
+ <script async src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
71
71
  <script id="MathJax-script" async src="{{ site.data.origin[type].mathjax.js | relative_url }}"></script>
72
72
  {% endif %}
73
73
 
@@ -84,23 +84,3 @@
84
84
  {% endcase %}
85
85
  {% endif %}
86
86
  {% endif %}
87
-
88
- {% if page.mermaid %}
89
- {% include mermaid.html %}
90
- {% endif %}
91
-
92
- {% if jekyll.environment == 'production' %}
93
- <!-- PWA -->
94
- {% if site.pwa.enabled %}
95
- <script defer src="{{ 'app.min.js' | relative_url }}"></script>
96
- {% endif %}
97
-
98
- <!-- Web Analytics -->
99
- {% for analytics in site.analytics %}
100
- {% capture str %}{{ analytics }}{% endcapture %}
101
- {% assign type = str | split: '{' | first %}
102
- {% if site.analytics[type].id and site.analytics[type].id != empty %}
103
- {% include analytics/{{ type }}.html %}
104
- {% endif %}
105
- {% endfor %}
106
- {% endif %}
@@ -1,6 +1,6 @@
1
1
  {% assign urls = include.urls | split: ',' %}
2
2
 
3
- {% assign combined_urls = nil %}
3
+ {% assign combined_urls = null %}
4
4
 
5
5
  {% assign domain = 'https://cdn.jsdelivr.net/' %}
6
6
 
@@ -15,12 +15,12 @@
15
15
  {% endif %}
16
16
 
17
17
  {% elsif url contains '//' %}
18
- <script src="{{ url }}"></script>
18
+ <script defer src="{{ url }}"></script>
19
19
  {% else %}
20
- <script src="{{ url | relative_url }}"></script>
20
+ <script defer src="{{ url | relative_url }}"></script>
21
21
  {% endif %}
22
22
  {% endfor %}
23
23
 
24
24
  {% if combined_urls %}
25
- <script src="{{ combined_urls }}"></script>
25
+ <script defer src="{{ combined_urls }}"></script>
26
26
  {% endif %}
@@ -19,29 +19,31 @@
19
19
  {% capture not_found %}<p class="mt-5">{{ site.data.locales[include.lang].search.no_results }}</p>{% endcapture %}
20
20
 
21
21
  <script>
22
- {%- comment -%} Note: dependent library will be loaded in `js-selector.html` {%- endcomment -%}
23
- SimpleJekyllSearch({
24
- searchInput: document.getElementById('search-input'),
25
- resultsContainer: document.getElementById('search-results'),
26
- json: '{{ '/assets/js/data/search.json' | relative_url }}',
27
- searchResultTemplate: '{{ result_elem | strip_newlines }}',
28
- noResultsText: '{{ not_found }}',
29
- templateMiddleware: function(prop, value, template) {
30
- if (prop === 'categories') {
31
- if (value === '') {
32
- return `${value}`;
33
- } else {
34
- return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`;
22
+ {% comment %} Note: dependent library will be loaded in `js-selector.html` {% endcomment %}
23
+ document.addEventListener('DOMContentLoaded', () => {
24
+ SimpleJekyllSearch({
25
+ searchInput: document.getElementById('search-input'),
26
+ resultsContainer: document.getElementById('search-results'),
27
+ json: '{{ '/assets/js/data/search.json' | relative_url }}',
28
+ searchResultTemplate: '{{ result_elem | strip_newlines }}',
29
+ noResultsText: '{{ not_found }}',
30
+ templateMiddleware: function(prop, value, template) {
31
+ if (prop === 'categories') {
32
+ if (value === '') {
33
+ return `${value}`;
34
+ } else {
35
+ return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`;
36
+ }
35
37
  }
36
- }
37
38
 
38
- if (prop === 'tags') {
39
- if (value === '') {
40
- return `${value}`;
41
- } else {
42
- return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`;
39
+ if (prop === 'tags') {
40
+ if (value === '') {
41
+ return `${value}`;
42
+ } else {
43
+ return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`;
44
+ }
43
45
  }
44
46
  }
45
- }
47
+ });
46
48
  });
47
49
  </script>
@@ -11,9 +11,7 @@
11
11
  {%- endif -%}
12
12
  </a>
13
13
 
14
- <h1 class="site-title">
15
- <a href="{{ '/' | relative_url }}">{{ site.title }}</a>
16
- </h1>
14
+ <a class="site-title d-block" href="{{ '/' | relative_url }}">{{ site.title }}</a>
17
15
  <p class="site-subtitle fst-italic mb-0">{{ site.tagline }}</p>
18
16
  </header>
19
17
  <!-- .profile-wrapper -->
@@ -0,0 +1,10 @@
1
+ {% comment %}
2
+ Determine TOC state and return it through variable "enable_toc"
3
+ {% endcomment %}
4
+
5
+ {% assign enable_toc = false %}
6
+ {% if site.toc and page.toc %}
7
+ {% if page.content contains '<h2' or page.content contains '<h3' %}
8
+ {% assign enable_toc = true %}
9
+ {% endif %}
10
+ {% endif %}
data/_includes/toc.html CHANGED
@@ -1,13 +1,9 @@
1
- {% assign enable_toc = false %}
2
- {% if site.toc and page.toc %}
3
- {% if page.content contains '<h2' or page.content contains '<h3' %}
4
- {% assign enable_toc = true %}
5
- {% endif %}
6
- {% endif %}
1
+ {% include toc-status.html %}
7
2
 
8
3
  {% if enable_toc %}
9
- <section id="toc-wrapper" class="d-none ps-0 pe-4">
10
- <h2 class="panel-heading ps-3 mb-2">{{- site.data.locales[include.lang].panel.toc -}}</h2>
4
+ <div class="toc-border-cover z-3"></div>
5
+ <section id="toc-wrapper" class="position-sticky ps-0 pe-4">
6
+ <h2 class="panel-heading ps-3 pb-2 mb-0">{{- site.data.locales[include.lang].panel.toc -}}</h2>
11
7
  <nav id="toc"></nav>
12
8
  </section>
13
9
  {% endif %}
@@ -33,7 +33,7 @@ layout: compress
33
33
  </main>
34
34
 
35
35
  <!-- panel -->
36
- <aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 mb-5 text-muted">
36
+ <aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 text-muted">
37
37
  <div class="access">
38
38
  {% include_cached update-list.html lang=lang %}
39
39
  {% include_cached trending-tags.html lang=lang %}
@@ -68,14 +68,18 @@ layout: compress
68
68
  </aside>
69
69
  </div>
70
70
 
71
- <div id="mask"></div>
71
+ <div id="mask" class="d-none position-fixed w-100 h-100 z-1"></div>
72
72
 
73
73
  {% if site.pwa.enabled %}
74
74
  {% include_cached notification.html lang=lang %}
75
75
  {% endif %}
76
76
 
77
- <!-- JavaScripts -->
78
- {% include js-selector.html lang=lang %}
77
+ <!-- Embedded scripts -->
78
+
79
+ {% for _include in layout.script_includes %}
80
+ {% assign _include_path = _include | append: '.html' %}
81
+ {% include {{ _include_path }} %}
82
+ {% endfor %}
79
83
 
80
84
  {% include_cached search-loader.html lang=lang %}
81
85
  </body>