jekyll-theme-chirpy 5.0.2 → 6.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +64 -74
  3. data/_data/locales/ar.yml +91 -0
  4. data/_data/locales/bg-BG.yml +81 -0
  5. data/_data/locales/cs-CZ.yml +89 -0
  6. data/_data/locales/de-DE.yml +80 -0
  7. data/_data/locales/el-GR.yml +91 -0
  8. data/_data/locales/en.yml +23 -23
  9. data/_data/locales/es-ES.yml +77 -0
  10. data/_data/locales/fi-FI.yml +90 -0
  11. data/_data/locales/fr-FR.yml +77 -0
  12. data/_data/locales/hu-HU.yml +79 -0
  13. data/_data/locales/id-ID.yml +5 -19
  14. data/_data/locales/it-IT.yml +90 -0
  15. data/_data/locales/ko-KR.yml +12 -19
  16. data/_data/locales/my-MM.yml +77 -0
  17. data/_data/locales/pt-BR.yml +77 -0
  18. data/_data/locales/ru-RU.yml +77 -0
  19. data/_data/locales/sl-SI.yml +91 -0
  20. data/_data/locales/sv-SE.yml +91 -0
  21. data/_data/locales/th.yml +91 -0
  22. data/_data/locales/tr-TR.yml +77 -0
  23. data/_data/locales/uk-UA.yml +77 -0
  24. data/_data/locales/vi-VN.yml +76 -0
  25. data/_data/locales/zh-CN.yml +13 -20
  26. data/_data/locales/zh-TW.yml +83 -0
  27. data/_data/origin/basic.yml +48 -0
  28. data/_data/origin/cors.yml +59 -0
  29. data/_includes/comments/disqus.html +27 -31
  30. data/_includes/comments/giscus.html +64 -0
  31. data/_includes/comments/utterances.html +2 -2
  32. data/_includes/datetime.html +20 -0
  33. data/_includes/embed/twitch.html +4 -0
  34. data/_includes/embed/youtube.html +6 -0
  35. data/_includes/footer.html +31 -32
  36. data/_includes/head.html +66 -46
  37. data/_includes/js-selector.html +83 -45
  38. data/_includes/jsdelivr-combine.html +26 -0
  39. data/_includes/lang.html +1 -1
  40. data/_includes/mermaid.html +30 -29
  41. data/_includes/metadata-hook.html +1 -0
  42. data/_includes/mode-toggle.html +66 -51
  43. data/_includes/notification.html +24 -0
  44. data/_includes/origin-type.html +13 -0
  45. data/_includes/post-nav.html +26 -22
  46. data/_includes/post-paginator.html +79 -76
  47. data/_includes/post-sharing.html +27 -16
  48. data/_includes/read-time.html +17 -10
  49. data/_includes/refactor-content.html +129 -73
  50. data/_includes/related-posts.html +48 -58
  51. data/_includes/search-loader.html +32 -31
  52. data/_includes/search-results.html +4 -5
  53. data/_includes/sidebar.html +79 -67
  54. data/_includes/toc.html +4 -7
  55. data/_includes/topbar.html +62 -56
  56. data/_includes/trending-tags.html +15 -19
  57. data/_includes/update-list.html +14 -15
  58. data/_layouts/archives.html +25 -29
  59. data/_layouts/categories.html +97 -58
  60. data/_layouts/category.html +8 -10
  61. data/_layouts/default.html +67 -31
  62. data/_layouts/home.html +67 -56
  63. data/_layouts/page.html +20 -58
  64. data/_layouts/post.html +85 -94
  65. data/_layouts/tag.html +8 -10
  66. data/_layouts/tags.html +6 -5
  67. data/_sass/addon/commons.scss +679 -878
  68. data/_sass/addon/module.scss +70 -23
  69. data/_sass/addon/syntax.scss +127 -110
  70. data/_sass/addon/variables.scss +16 -18
  71. data/_sass/colors/syntax-dark.scss +138 -0
  72. data/_sass/colors/syntax-light.scss +179 -0
  73. data/_sass/colors/{dark-typography.scss → typography-dark.scss} +58 -56
  74. data/_sass/colors/typography-light.scss +110 -0
  75. data/_sass/layout/archives.scss +86 -89
  76. data/_sass/layout/categories.scss +29 -13
  77. data/_sass/layout/category-tag.scss +9 -10
  78. data/_sass/layout/home.scss +132 -114
  79. data/_sass/layout/post.scss +213 -173
  80. data/_sass/layout/tags.scss +1 -1
  81. data/_sass/main.scss +13 -0
  82. data/assets/404.html +1 -20
  83. data/assets/css/jekyll-theme-chirpy.scss +6 -0
  84. data/assets/feed.xml +2 -2
  85. data/assets/js/data/search.json +8 -5
  86. data/assets/js/data/swcache.js +14 -29
  87. data/assets/js/dist/categories.min.js +2 -4
  88. data/assets/js/dist/commons.min.js +2 -4
  89. data/assets/js/dist/home.min.js +2 -4
  90. data/assets/js/dist/misc.min.js +4 -0
  91. data/assets/js/dist/page.min.js +2 -4
  92. data/assets/js/dist/post.min.js +2 -4
  93. data/assets/js/pwa/app.js +42 -4
  94. data/assets/js/pwa/sw.js +46 -44
  95. data/assets/js/pwa/unregister.js +12 -0
  96. metadata +64 -32
  97. data/_config.yml +0 -175
  98. data/_data/contact.yml +0 -30
  99. data/_data/share.yml +0 -27
  100. data/_includes/css-selector.html +0 -15
  101. data/_includes/no-zero-date.html +0 -13
  102. data/_includes/timeago.html +0 -26
  103. data/_plugins/posts-lastmod-hook.rb +0 -14
  104. data/_sass/colors/dark-syntax.scss +0 -87
  105. data/_sass/colors/light-syntax.scss +0 -79
  106. data/_sass/colors/light-typography.scss +0 -81
  107. data/_sass/jekyll-theme-chirpy.scss +0 -24
  108. data/_tabs/about.md +0 -8
  109. data/_tabs/archives.md +0 -7
  110. data/_tabs/categories.md +0 -6
  111. data/_tabs/tags.md +0 -6
  112. data/assets/css/style.scss +0 -12
  113. data/assets/js/dist/pvreport.min.js +0 -6
  114. data/index.html +0 -4
@@ -1,68 +1,106 @@
1
- <!--
2
- JS selector for site.
3
- -->
1
+ <!-- JS selector for site. -->
2
+
3
+ <!-- commons -->
4
+
5
+ {% assign urls = site.data.origin[type].jquery.js
6
+ | append: ','
7
+ | append: site.data.origin[type].bootstrap.js
8
+ | append: ','
9
+ | append: site.data.origin[type].search.js
10
+ %}
4
11
 
5
12
  <!-- layout specified -->
6
13
 
7
- {% if page.layout == 'post' %}
8
- {% if site.google_analytics.pv.proxy_endpoint or site.google_analytics.pv.cache_path %}
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>
11
- <script defer src="{{ '/assets/js/dist/pvreport.min.js' | relative_url }}"></script>
12
- {% endif %}
13
- {% endif %}
14
+ {% if page.layout == 'post' or page.layout == 'page' or page.layout == 'home' %}
15
+ {% assign urls = urls | append: ',' | append: site.data.origin[type].lazysizes.js %}
14
16
 
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>
17
+ {% unless page.layout == 'home' %}
18
+ <!-- image lazy-loading & popup & clipboard -->
19
+ {% assign urls = urls
20
+ | append: ','
21
+ | append: site.data.origin[type]['magnific-popup'].js
22
+ | append: ','
23
+ | append: site.data.origin[type].clipboard.js
24
+ %}
25
+ {% endunless %}
18
26
  {% endif %}
19
27
 
20
28
  {% if page.layout == 'home'
21
- or page.layout == 'categories'
22
- or page.layout == 'post'
23
- or page.layout == 'page' %}
24
- {% assign type = page.layout %}
25
- {% else %}
26
- {% assign type = "commons" %}
29
+ or page.layout == 'post'
30
+ or page.layout == 'archives'
31
+ or page.layout == 'category'
32
+ or page.layout == 'tag'
33
+ %}
34
+ {% assign locale = site.lang | split: '-' | first %}
35
+
36
+ {% assign urls = urls
37
+ | append: ','
38
+ | append: site.data.origin[type].dayjs.js.common
39
+ | append: ','
40
+ | append: site.data.origin[type].dayjs.js.locale
41
+ | replace: ':LOCALE', locale
42
+ | append: ','
43
+ | append: site.data.origin[type].dayjs.js.relativeTime
44
+ | append: ','
45
+ | append: site.data.origin[type].dayjs.js.localizedFormat
46
+ %}
47
+ {% endif %}
48
+
49
+ {% if page.content contains '<h2' or page.content contains '<h3' and site.toc and page.toc %}
50
+ {% assign urls = urls | append: ',' | append: site.data.origin[type].toc.js %}
51
+ {% endif %}
52
+
53
+ {% if page.mermaid %}
54
+ {% assign urls = urls | append: ',' | append: site.data.origin[type].mermaid.js %}
27
55
  {% endif %}
28
56
 
29
- {% assign js = type | prepend: '/assets/js/dist/' | append: '.min.js' %}
30
- <script defer src="{{ js | relative_url }}"></script>
57
+ {% include jsdelivr-combine.html urls=urls %}
58
+
59
+ {% case page.layout %}
60
+ {% when 'home', 'categories', 'post', 'page' %}
61
+ {% assign js = page.layout %}
62
+ {% when 'archives', 'category', 'tag' %}
63
+ {% assign js = 'misc' %}
64
+ {% else %}
65
+ {% assign js = 'commons' %}
66
+ {% endcase %}
67
+
68
+ {% capture script %}/assets/js/dist/{{ js }}.min.js{% endcapture %}
69
+ <script defer src="{{ script | relative_url }}"></script>
31
70
 
32
71
  {% if page.math %}
33
72
  <!-- MathJax -->
34
73
  <script>
35
- /* see: <https://docs.mathjax.org/en/latest/options/input/tex.html#tex-options> */
36
- MathJax = {
37
- tex: {
38
- inlineMath: [ /* start/end delimiter pairs for in-line math */
39
- ['$','$'],
40
- ['\\(','\\)']
41
- ],
42
- displayMath: [ /* start/end delimiter pairs for display math */
43
- ['$$', '$$'],
44
- ['\\[', '\\]']
45
- ]
46
- }
47
- };
48
- </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">
74
+ /* see: <https://docs.mathjax.org/en/latest/options/input/tex.html#tex-options> */
75
+ MathJax = {
76
+ tex: {
77
+ /* start/end delimiter pairs for in-line math */
78
+ inlineMath: [
79
+ ['$', '$'],
80
+ ['\\(', '\\)']
81
+ ],
82
+ /* start/end delimiter pairs for display math */
83
+ displayMath: [
84
+ ['$$', '$$'],
85
+ ['\\[', '\\]']
86
+ ]
87
+ }
88
+ };
52
89
  </script>
90
+ <script src="{{ site.data.origin[type].polyfill.js | relative_url }}"></script>
91
+ <script id="MathJax-script" async src="{{ site.data.origin[type].mathjax.js | relative_url }}"></script>
53
92
  {% endif %}
54
93
 
55
- <!-- commons -->
56
-
57
- <script src="https://cdn.jsdelivr.net/combine/npm/popper.js@1.16.1,npm/bootstrap@4/dist/js/bootstrap.min.js"></script>
58
-
59
94
  {% if jekyll.environment == 'production' %}
60
95
  <!-- PWA -->
61
- <script defer src="{{ '/app.js' | relative_url }}"></script>
96
+ {% if site.pwa.enabled %}
97
+ <script defer src="{{ '/app.js' | relative_url }}"></script>
98
+ {% else %}
99
+ <script defer src="{{ '/unregister.js' | relative_url }}"></script>
100
+ {% endif %}
62
101
 
63
102
  <!-- GA -->
64
- {% if site.google_analytics.id %}
103
+ {% if site.google_analytics.id != empty and site.google_analytics.id %}
65
104
  {% include google-analytics.html %}
66
105
  {% endif %}
67
-
68
106
  {% endif %}
@@ -0,0 +1,26 @@
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
+ {% if url contains domain %}
9
+ {% assign url_snippet = url | slice: domain.size, url.size %}
10
+
11
+ {% if combined_urls %}
12
+ {% assign combined_urls = combined_urls | append: ',' | append: url_snippet %}
13
+ {% else %}
14
+ {% assign combined_urls = domain | append: 'combine/' | append: url_snippet %}
15
+ {% endif %}
16
+
17
+ {% elsif url contains '//' %}
18
+ <script src="{{ url }}"></script>
19
+ {% else %}
20
+ <script src="{{ url | relative_url }}"></script>
21
+ {% endif %}
22
+ {% endfor %}
23
+
24
+ {% if combined_urls %}
25
+ <script src="{{ combined_urls }}"></script>
26
+ {% endif %}
data/_includes/lang.html CHANGED
@@ -1,5 +1,5 @@
1
1
  {% comment %}
2
- Detect appearance language and return it through variable "lang"
2
+ Detect appearance language and return it through variable "lang"
3
3
  {% endcomment %}
4
4
  {% if site.data.locales[site.lang] %}
5
5
  {% assign lang = site.lang %}
@@ -1,57 +1,58 @@
1
- <!--
2
- mermaid-js loader
3
- -->
4
-
5
- <script src="https://cdn.jsdelivr.net/npm/mermaid@8/dist/mermaid.min.js"></script>
6
-
7
- <script>
8
- $(function() {
1
+ <!-- mermaid-js loader -->
2
+ <script type="text/javascript">
3
+ (function () {
9
4
  function updateMermaid(event) {
10
- if (event.source === window && event.data &&
11
- event.data.direction === ModeToggle.ID) {
12
-
5
+ if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
13
6
  const mode = event.data.message;
14
7
 
15
- if (typeof mermaid === "undefined") {
8
+ if (typeof mermaid === 'undefined') {
16
9
  return;
17
10
  }
18
11
 
19
- let expectedTheme = (mode === ModeToggle.DARK_MODE? "dark" : "default");
12
+ let expectedTheme = mode === ModeToggle.DARK_MODE ? 'dark' : 'default';
20
13
  let config = { theme: expectedTheme };
21
14
 
22
15
  /* Re-render the SVG › <https://github.com/mermaid-js/mermaid/issues/311#issuecomment-332557344> */
23
- $(".mermaid").each(function() {
16
+ $('.mermaid').each(function () {
24
17
  let svgCode = $(this).prev().children().html();
25
- $(this).removeAttr("data-processed");
18
+ $(this).removeAttr('data-processed');
26
19
  $(this).html(svgCode);
27
20
  });
28
21
 
29
22
  mermaid.initialize(config);
30
- mermaid.init(undefined, ".mermaid");
23
+ mermaid.init(undefined, '.mermaid');
31
24
  }
32
25
  }
33
26
 
34
- let initTheme = "default";
27
+ let initTheme = 'default';
28
+ const html = document.documentElement;
35
29
 
36
- if ($("html[mode=dark]").length > 0
37
- || ($("html[mode]").length == 0
38
- && window.matchMedia("(prefers-color-scheme: dark)").matches ) ) {
39
- initTheme = "dark";
30
+ if (
31
+ (html.hasAttribute('data-mode') && html.getAttribute('data-mode') === 'dark') ||
32
+ (!html.hasAttribute('data-mode') && window.matchMedia('(prefers-color-scheme: dark)').matches)
33
+ ) {
34
+ initTheme = 'dark';
40
35
  }
41
36
 
42
37
  let mermaidConf = {
43
- theme: initTheme /* <default|dark|forest|neutral> */
38
+ theme: initTheme /* <default|dark|forest|neutral> */
44
39
  };
45
40
 
46
- /* Markdown converts to HTML */
47
- $("pre").has("code.language-mermaid").each(function() {
48
- let svgCode = $(this).children().html();
49
- $(this).addClass("unloaded");
50
- $(this).after(`<div class=\"mermaid\">${svgCode}</div>`);
41
+ /* Create mermaid tag */
42
+ document.querySelectorAll('pre>code.language-mermaid').forEach((elem) => {
43
+ const svgCode = elem.textContent;
44
+ const backup = elem.parentElement;
45
+ backup.classList.add('unloaded');
46
+ /* create mermaid node */
47
+ let mermaid = document.createElement('pre');
48
+ mermaid.classList.add('mermaid');
49
+ const text = document.createTextNode(svgCode);
50
+ mermaid.appendChild(text);
51
+ backup.after(mermaid);
51
52
  });
52
53
 
53
54
  mermaid.initialize(mermaidConf);
54
55
 
55
- window.addEventListener("message", updateMermaid);
56
- });
56
+ window.addEventListener('message', updateMermaid);
57
+ })();
57
58
  </script>
@@ -0,0 +1 @@
1
+ <!-- A placeholder to allow defining custom metadata -->
@@ -1,13 +1,22 @@
1
- <!--
2
- Switch the mode between dark and light.
3
- -->
1
+ <!-- Switch the mode between dark and light. -->
4
2
 
5
3
  <script type="text/javascript">
6
4
  class ModeToggle {
7
- static get MODE_KEY() { return "mode"; }
8
- static get DARK_MODE() { return "dark"; }
9
- static get LIGHT_MODE() { return "light"; }
10
- static get ID() { return "mode-toggle"; }
5
+ static get MODE_KEY() {
6
+ return 'mode';
7
+ }
8
+ static get MODE_ATTR() {
9
+ return 'data-mode';
10
+ }
11
+ static get DARK_MODE() {
12
+ return 'dark';
13
+ }
14
+ static get LIGHT_MODE() {
15
+ return 'light';
16
+ }
17
+ static get ID() {
18
+ return 'mode-toggle';
19
+ }
11
20
 
12
21
  constructor() {
13
22
  if (this.hasMode) {
@@ -25,13 +34,12 @@
25
34
  let self = this;
26
35
 
27
36
  /* always follow the system prefers */
28
- this.sysDarkPrefers.addEventListener("change", () => {
37
+ this.sysDarkPrefers.addEventListener('change', () => {
29
38
  if (self.hasMode) {
30
39
  if (self.isDarkMode) {
31
40
  if (!self.isSysDarkPrefer) {
32
41
  self.setDark();
33
42
  }
34
-
35
43
  } else {
36
44
  if (self.isSysDarkPrefer) {
37
45
  self.setLight();
@@ -42,27 +50,36 @@
42
50
  }
43
51
 
44
52
  self.notify();
45
-
46
53
  });
47
-
48
54
  } /* constructor() */
49
55
 
50
- get sysDarkPrefers() { return window.matchMedia("(prefers-color-scheme: dark)"); }
56
+ get sysDarkPrefers() {
57
+ return window.matchMedia('(prefers-color-scheme: dark)');
58
+ }
51
59
 
52
- get isSysDarkPrefer() { return this.sysDarkPrefers.matches; }
60
+ get isSysDarkPrefer() {
61
+ return this.sysDarkPrefers.matches;
62
+ }
53
63
 
54
- get isDarkMode() { return this.mode === ModeToggle.DARK_MODE; }
64
+ get isDarkMode() {
65
+ return this.mode === ModeToggle.DARK_MODE;
66
+ }
55
67
 
56
- get isLightMode() { return this.mode === ModeToggle.LIGHT_MODE; }
68
+ get isLightMode() {
69
+ return this.mode === ModeToggle.LIGHT_MODE;
70
+ }
57
71
 
58
- get hasMode() { return this.mode != null; }
72
+ get hasMode() {
73
+ return this.mode != null;
74
+ }
59
75
 
60
- get mode() { return sessionStorage.getItem(ModeToggle.MODE_KEY); }
76
+ get mode() {
77
+ return sessionStorage.getItem(ModeToggle.MODE_KEY);
78
+ }
61
79
 
62
80
  /* get the current mode on screen */
63
81
  get modeStatus() {
64
- if (this.isDarkMode
65
- || (!this.hasMode && this.isSysDarkPrefer)) {
82
+ if (this.isDarkMode || (!this.hasMode && this.isSysDarkPrefer)) {
66
83
  return ModeToggle.DARK_MODE;
67
84
  } else {
68
85
  return ModeToggle.LIGHT_MODE;
@@ -70,59 +87,57 @@
70
87
  }
71
88
 
72
89
  setDark() {
73
- $('html').attr(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
90
+ document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.DARK_MODE);
74
91
  sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE);
75
92
  }
76
93
 
77
94
  setLight() {
78
- $('html').attr(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
95
+ document.documentElement.setAttribute(ModeToggle.MODE_ATTR, ModeToggle.LIGHT_MODE);
79
96
  sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE);
80
97
  }
81
98
 
82
99
  clearMode() {
83
- $('html').removeAttr(ModeToggle.MODE_KEY);
100
+ document.documentElement.removeAttribute(ModeToggle.MODE_ATTR);
84
101
  sessionStorage.removeItem(ModeToggle.MODE_KEY);
85
102
  }
86
103
 
87
104
  /* Notify another plugins that the theme mode has changed */
88
105
  notify() {
89
- window.postMessage({
90
- direction: ModeToggle.ID,
91
- message: this.modeStatus
92
- }, "*");
106
+ window.postMessage(
107
+ {
108
+ direction: ModeToggle.ID,
109
+ message: this.modeStatus
110
+ },
111
+ '*'
112
+ );
93
113
  }
94
114
 
95
- } /* ModeToggle */
96
-
97
- const toggle = new ModeToggle();
98
-
99
- function flipMode() {
100
- if (toggle.hasMode) {
101
- if (toggle.isSysDarkPrefer) {
102
- if (toggle.isLightMode) {
103
- toggle.clearMode();
115
+ flipMode() {
116
+ if (this.hasMode) {
117
+ if (this.isSysDarkPrefer) {
118
+ if (this.isLightMode) {
119
+ this.clearMode();
120
+ } else {
121
+ this.setLight();
122
+ }
104
123
  } else {
105
- toggle.setLight();
124
+ if (this.isDarkMode) {
125
+ this.clearMode();
126
+ } else {
127
+ this.setDark();
128
+ }
106
129
  }
107
-
108
130
  } else {
109
- if (toggle.isDarkMode) {
110
- toggle.clearMode();
131
+ if (this.isSysDarkPrefer) {
132
+ this.setLight();
111
133
  } else {
112
- toggle.setDark();
134
+ this.setDark();
113
135
  }
114
136
  }
115
137
 
116
- } else {
117
- if (toggle.isSysDarkPrefer) {
118
- toggle.setLight();
119
- } else {
120
- toggle.setDark();
121
- }
122
- }
123
-
124
- toggle.notify();
125
-
126
- } /* flipMode() */
138
+ this.notify();
139
+ } /* flipMode() */
140
+ } /* ModeToggle */
127
141
 
142
+ const modeToggle = new ModeToggle();
128
143
  </script>
@@ -0,0 +1,24 @@
1
+ <aside
2
+ id="notification"
3
+ class="toast"
4
+ role="alert"
5
+ aria-live="assertive"
6
+ aria-atomic="true"
7
+ data-bs-animation="true"
8
+ data-bs-autohide="false"
9
+ >
10
+ <div class="toast-header">
11
+ <button
12
+ type="button"
13
+ class="btn-close ms-auto"
14
+ data-bs-dismiss="toast"
15
+ aria-label="Close"
16
+ ></button>
17
+ </div>
18
+ <div class="toast-body text-center pt-0">
19
+ <p class="px-2 mb-3">{{ site.data.locales[include.lang].notification.update_found }}</p>
20
+ <button type="button" class="btn btn-primary" aria-label="Update">
21
+ {{ site.data.locales[include.lang].notification.update }}
22
+ </button>
23
+ </div>
24
+ </aside>
@@ -0,0 +1,13 @@
1
+ {% comment %} Site static assets origin type {% endcomment %}
2
+
3
+ {% assign type = 'cors' %}
4
+
5
+ {% if site.assets.self_host.enabled %}
6
+ {% if site.assets.self_host.env %}
7
+ {% if site.assets.self_host.env == jekyll.environment %}
8
+ {% assign type = 'basic' %}
9
+ {% endif %}
10
+ {% else %}
11
+ {% assign type = 'basic' %}
12
+ {% endif %}
13
+ {% endif %}
@@ -1,30 +1,34 @@
1
- <!--
2
- Navigation buttons at the bottom of the post.
3
- -->
1
+ <!-- Navigation buttons at the bottom of the post. -->
2
+
3
+ <nav class="post-navigation d-flex justify-content-between" aria-label="Post Navigation">
4
+ {% assign previous = site.data.locales[include.lang].post.button.previous %}
5
+ {% assign next = site.data.locales[include.lang].post.button.next %}
4
6
 
5
- <div class="post-navigation d-flex justify-content-between">
6
7
  {% if page.previous.url %}
7
- <a href="{{ site.baseurl }}{{ page.previous.url }}" class="btn btn-outline-primary"
8
- prompt="{{ site.data.locales[lang].post.button.previous }}">
9
- <p>{{ page.previous.title }}</p>
10
- </a>
8
+ <a
9
+ href="{{ site.baseurl }}{{ page.previous.url }}"
10
+ class="btn btn-outline-primary"
11
+ aria-label="{{ previous }}"
12
+ >
13
+ <p>{{ page.previous.title }}</p>
14
+ </a>
11
15
  {% else %}
12
- <span class="btn btn-outline-primary disabled"
13
- prompt="{{ site.data.locales[lang].post.button.previous }}">
14
- <p>-</p>
15
- </span>
16
+ <div class="btn btn-outline-primary disabled" aria-label="{{ previous }}">
17
+ <p>-</p>
18
+ </div>
16
19
  {% endif %}
17
20
 
18
21
  {% if page.next.url %}
19
- <a href="{{ site.baseurl }}{{page.next.url}}" class="btn btn-outline-primary"
20
- prompt="{{ site.data.locales[lang].post.button.next }}">
21
- <p>{{ page.next.title }}</p>
22
- </a>
22
+ <a
23
+ href="{{ site.baseurl }}{{page.next.url}}"
24
+ class="btn btn-outline-primary"
25
+ aria-label="{{ next }}"
26
+ >
27
+ <p>{{ page.next.title }}</p>
28
+ </a>
23
29
  {% else %}
24
- <span class="btn btn-outline-primary disabled"
25
- prompt="{{ site.data.locales[lang].post.button.next }}">
26
- <p>-</p>
27
- </span>
30
+ <div class="btn btn-outline-primary disabled" aria-label="{{ next }}">
31
+ <p>-</p>
32
+ </div>
28
33
  {% endif %}
29
-
30
- </div>
34
+ </nav>