jekyll-theme-abd3lraouf 5.2.3
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.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +105 -0
- data/_config.yml +206 -0
- data/_data/assets/cross_origin.yml +62 -0
- data/_data/assets/self_host.yml +51 -0
- data/_data/authors.yml +17 -0
- data/_data/contact.yml +30 -0
- data/_data/locales/bg-BG.yml +83 -0
- data/_data/locales/en.yml +83 -0
- data/_data/locales/es-ES.yml +79 -0
- data/_data/locales/fr-FR.yml +79 -0
- data/_data/locales/hu-HU.yml +81 -0
- data/_data/locales/id-ID.yml +79 -0
- data/_data/locales/ko-KR.yml +79 -0
- data/_data/locales/my-MM.yml +79 -0
- data/_data/locales/pt-BR.yml +79 -0
- data/_data/locales/ru-RU.yml +79 -0
- data/_data/locales/tr-TR.yml +79 -0
- data/_data/locales/uk-UA.yml +79 -0
- data/_data/locales/vi-VN.yml +77 -0
- data/_data/locales/zh-CN.yml +78 -0
- data/_data/share.yml +27 -0
- data/_includes/assets-origin.html +12 -0
- data/_includes/comments/disqus.html +54 -0
- data/_includes/comments/giscus.html +56 -0
- data/_includes/comments/utterances.html +51 -0
- data/_includes/comments.html +5 -0
- data/_includes/datetime.html +21 -0
- data/_includes/favicons.html +17 -0
- data/_includes/footer.html +36 -0
- data/_includes/google-analytics.html +14 -0
- data/_includes/head.html +116 -0
- data/_includes/js-selector.html +104 -0
- data/_includes/jsdelivr-combine.html +32 -0
- data/_includes/lang.html +8 -0
- data/_includes/language-alias.html +70 -0
- data/_includes/mermaid.html +57 -0
- data/_includes/mode-toggle.html +129 -0
- data/_includes/no-linenos.html +10 -0
- data/_includes/post-nav.html +30 -0
- data/_includes/post-paginator.html +88 -0
- data/_includes/post-sharing.html +27 -0
- data/_includes/read-time.html +30 -0
- data/_includes/refactor-content.html +282 -0
- data/_includes/related-posts.html +103 -0
- data/_includes/search-loader.html +46 -0
- data/_includes/search-results.html +11 -0
- data/_includes/sidebar.html +93 -0
- data/_includes/toc.html +16 -0
- data/_includes/topbar.html +70 -0
- data/_includes/trending-tags.html +50 -0
- data/_includes/update-list.html +40 -0
- data/_layouts/archives.html +48 -0
- data/_layouts/categories.html +120 -0
- data/_layouts/category.html +24 -0
- data/_layouts/compress.html +10 -0
- data/_layouts/default.html +74 -0
- data/_layouts/home.html +103 -0
- data/_layouts/page.html +64 -0
- data/_layouts/post.html +159 -0
- data/_layouts/tag.html +23 -0
- data/_layouts/tags.html +23 -0
- data/_plugins/posts-lastmod-hook.rb +14 -0
- data/_sass/addon/commons.scss +1680 -0
- data/_sass/addon/module.scss +151 -0
- data/_sass/addon/syntax.scss +289 -0
- data/_sass/addon/variables.scss +34 -0
- data/_sass/colors/dark-syntax.scss +88 -0
- data/_sass/colors/dark-typography.scss +157 -0
- data/_sass/colors/light-syntax.scss +84 -0
- data/_sass/colors/light-typography.scss +94 -0
- data/_sass/jekyll-theme-abd3lraouf.scss +24 -0
- data/_sass/layout/archives.scss +147 -0
- data/_sass/layout/categories.scss +67 -0
- data/_sass/layout/category-tag.scss +73 -0
- data/_sass/layout/home.scss +184 -0
- data/_sass/layout/post.scss +369 -0
- data/_sass/layout/tags.scss +19 -0
- data/_sass/variables-hook.scss +3 -0
- data/_tabs/about.md +8 -0
- data/_tabs/archives.md +7 -0
- data/_tabs/categories.md +6 -0
- data/_tabs/tags.md +6 -0
- data/assets/404.html +16 -0
- data/assets/css/style.scss +12 -0
- data/assets/feed.xml +61 -0
- data/assets/img/favicons/android-chrome-192x192.png +0 -0
- data/assets/img/favicons/android-chrome-512x512.png +0 -0
- data/assets/img/favicons/apple-touch-icon.png +0 -0
- data/assets/img/favicons/browserconfig.xml +13 -0
- data/assets/img/favicons/favicon-16x16.png +0 -0
- data/assets/img/favicons/favicon-32x32.png +0 -0
- data/assets/img/favicons/favicon.ico +0 -0
- data/assets/img/favicons/mstile-150x150.png +0 -0
- data/assets/img/favicons/site.webmanifest +26 -0
- data/assets/js/data/search.json +18 -0
- data/assets/js/data/swcache.js +55 -0
- data/assets/js/dist/categories.min.js +6 -0
- data/assets/js/dist/commons.min.js +6 -0
- data/assets/js/dist/home.min.js +6 -0
- data/assets/js/dist/misc.min.js +6 -0
- data/assets/js/dist/page.min.js +6 -0
- data/assets/js/dist/post.min.js +6 -0
- data/assets/js/dist/pvreport.min.js +6 -0
- data/assets/js/pwa/app.js +47 -0
- data/assets/js/pwa/sw.js +89 -0
- data/assets/js/pwa/unregister.js +12 -0
- data/assets/robots.txt +10 -0
- data/index.html +4 -0
- metadata +243 -0
@@ -0,0 +1,79 @@
|
|
1
|
+
# The layout text of site
|
2
|
+
|
3
|
+
# ----- Commons label -----
|
4
|
+
|
5
|
+
layout:
|
6
|
+
post: Публікація
|
7
|
+
category: Категорія
|
8
|
+
tag: Тег
|
9
|
+
|
10
|
+
# The tabs of sidebar
|
11
|
+
tabs:
|
12
|
+
# format: <filename_without_extension>: <value>
|
13
|
+
home: Домашня сторінка
|
14
|
+
categories: Категорії
|
15
|
+
tags: Теги
|
16
|
+
archives: Архів
|
17
|
+
about: Про сайт
|
18
|
+
|
19
|
+
# the text displayed in the search bar & search results
|
20
|
+
search:
|
21
|
+
hint: пошук
|
22
|
+
cancel: Скасувати
|
23
|
+
no_results: Ох! Нічого не знайдено.
|
24
|
+
|
25
|
+
panel:
|
26
|
+
lastmod: Нещодавно оновлено
|
27
|
+
trending_tags: Популярні теги
|
28
|
+
toc: Зміст
|
29
|
+
|
30
|
+
copyright:
|
31
|
+
# Shown at the bottom of the post
|
32
|
+
license:
|
33
|
+
template: Публікація захищена ліцензією :LICENSE_NAME.
|
34
|
+
name: CC BY 4.0
|
35
|
+
link: https://creativecommons.org/licenses/by/4.0/
|
36
|
+
|
37
|
+
# Displayed in the footer
|
38
|
+
brief: Деякі права захищено.
|
39
|
+
verbose: >-
|
40
|
+
Публікації на сайті захищено ліцензією Creative Commons Attribution 4.0 International (CC BY 4.0),
|
41
|
+
якщо інше не вказано в тексті.
|
42
|
+
|
43
|
+
meta: Powered by :PLATFORM with :THEME theme.
|
44
|
+
|
45
|
+
not_found:
|
46
|
+
statment: Вибачте, це посилання вказує на ресурс, що не існує.
|
47
|
+
|
48
|
+
notification:
|
49
|
+
update_found: Доступна нова версія вмісту.
|
50
|
+
update: Оновлення
|
51
|
+
|
52
|
+
# ----- Posts related labels -----
|
53
|
+
|
54
|
+
post:
|
55
|
+
written_by: Автор
|
56
|
+
posted: Час публікації
|
57
|
+
updated: Оновлено
|
58
|
+
words: слів
|
59
|
+
pageview_measure: переглядів
|
60
|
+
read_time:
|
61
|
+
unit: хвилин
|
62
|
+
prompt: читання
|
63
|
+
relate_posts: Вас також може зацікавити
|
64
|
+
share: Поділитися
|
65
|
+
button:
|
66
|
+
next: Попередня публікація
|
67
|
+
previous: Наступна публікація
|
68
|
+
copy_code:
|
69
|
+
succeed: Успішно скопійовано!
|
70
|
+
share_link:
|
71
|
+
title: Скопіювати посилання
|
72
|
+
succeed: Посилання успішно скопійовано!
|
73
|
+
# pinned prompt of posts list on homepage
|
74
|
+
pin_prompt: Закріплено
|
75
|
+
|
76
|
+
# categories page
|
77
|
+
categories:
|
78
|
+
category_measure: категорії
|
79
|
+
post_measure: публікації
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# The layout text of site
|
2
|
+
|
3
|
+
# ----- Commons label -----
|
4
|
+
|
5
|
+
layout:
|
6
|
+
post: Bài viết
|
7
|
+
category: Danh mục
|
8
|
+
tag: Thẻ
|
9
|
+
|
10
|
+
# The tabs of sidebar
|
11
|
+
tabs:
|
12
|
+
# format: <filename_without_extension>: <value>
|
13
|
+
home: Trang chủ
|
14
|
+
categories: Các danh mục
|
15
|
+
tags: Các thẻ
|
16
|
+
archives: Lưu trữ
|
17
|
+
about: Giới thiệu
|
18
|
+
|
19
|
+
# the text displayed in the search bar & search results
|
20
|
+
search:
|
21
|
+
hint: tìm kiếm
|
22
|
+
cancel: Hủy
|
23
|
+
no_results: Không có kết quả tìm kiếm.
|
24
|
+
|
25
|
+
panel:
|
26
|
+
lastmod: Mới cập nhật
|
27
|
+
trending_tags: Các thẻ thịnh hành
|
28
|
+
toc: Mục lục
|
29
|
+
|
30
|
+
copyright:
|
31
|
+
# Shown at the bottom of the post
|
32
|
+
license:
|
33
|
+
template: Bài viết này được cấp phép bởi tác giả theo giấy phép :LICENSE_NAME.
|
34
|
+
name: CC BY 4.0
|
35
|
+
link: https://creativecommons.org/licenses/by/4.0/
|
36
|
+
|
37
|
+
# Displayed in the footer
|
38
|
+
brief: Một số quyền được bảo lưu.
|
39
|
+
verbose: >-
|
40
|
+
Trừ khi có ghi chú khác, các bài viết đăng trên trang này được cấp phép bởi tác giả theo giấy phép Creative Commons Attribution 4.0 International (CC BY 4.0).
|
41
|
+
meta: Trang web này được tạo bởi :PLATFORM với chủ đề :THEME.
|
42
|
+
|
43
|
+
not_found:
|
44
|
+
statment: Xin lỗi, chúng tôi đã đặt nhầm URL hoặc đường dẫn trỏ đến một trang nào đó không tồn tại.
|
45
|
+
|
46
|
+
notification:
|
47
|
+
update_found: Đã có phiên bản mới của nội dung.
|
48
|
+
update: Cập nhật
|
49
|
+
|
50
|
+
# ----- Posts related labels -----
|
51
|
+
|
52
|
+
post:
|
53
|
+
written_by: Viết bởi
|
54
|
+
posted: Đăng lúc
|
55
|
+
updated: Cập nhật lúc
|
56
|
+
words: từ
|
57
|
+
pageview_measure: lượt xem
|
58
|
+
read_time:
|
59
|
+
unit: phút
|
60
|
+
prompt: đọc
|
61
|
+
relate_posts: Bài viết liên quan
|
62
|
+
share: Chia sẻ
|
63
|
+
button:
|
64
|
+
next: Mới hơn
|
65
|
+
previous: Cũ hơn
|
66
|
+
copy_code:
|
67
|
+
succeed: Đã sao chép!
|
68
|
+
share_link:
|
69
|
+
title: Sao chép đường dẫn
|
70
|
+
succeed: Đã sao chép đường dẫn thành công!
|
71
|
+
# pinned prompt of posts list on homepage
|
72
|
+
pin_prompt: Bài ghim
|
73
|
+
|
74
|
+
# categories page
|
75
|
+
categories:
|
76
|
+
category_measure: danh mục
|
77
|
+
post_measure: bài viết
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# The layout text of site
|
2
|
+
|
3
|
+
# ----- Commons label -----
|
4
|
+
|
5
|
+
layout:
|
6
|
+
post: 文章
|
7
|
+
category: 分类
|
8
|
+
tag: 标签
|
9
|
+
|
10
|
+
# The tabs of sidebar
|
11
|
+
tabs:
|
12
|
+
# format: <filename_without_extension>: <value>
|
13
|
+
home: 首页
|
14
|
+
categories: 分类
|
15
|
+
tags: 标签
|
16
|
+
archives: 归档
|
17
|
+
about: 关于
|
18
|
+
|
19
|
+
# the text displayed in the search bar & search results
|
20
|
+
search:
|
21
|
+
hint: 搜索
|
22
|
+
cancel: 取消
|
23
|
+
no_results: 搜索结果为空
|
24
|
+
|
25
|
+
panel:
|
26
|
+
lastmod: 最近更新
|
27
|
+
trending_tags: 热门标签
|
28
|
+
toc: 文章内容
|
29
|
+
|
30
|
+
copyright:
|
31
|
+
# Shown at the bottom of the post
|
32
|
+
license:
|
33
|
+
template: 本文由作者按照 :LICENSE_NAME 进行授权
|
34
|
+
name: CC BY 4.0
|
35
|
+
link: https://creativecommons.org/licenses/by/4.0/
|
36
|
+
|
37
|
+
# Displayed in the footer
|
38
|
+
brief: 保留部分权利。
|
39
|
+
verbose: >-
|
40
|
+
除非另有说明,本网站上的博客文章均由作者按照知识共享署名 4.0 国际 (CC BY 4.0) 许可协议进行授权。
|
41
|
+
|
42
|
+
meta: 本站由 :PLATFORM 生成,采用 :THEME 主题。
|
43
|
+
|
44
|
+
not_found:
|
45
|
+
statment: 抱歉,我们放错了该 URL,或者它指向了不存在的内容。
|
46
|
+
|
47
|
+
notification:
|
48
|
+
update_found: 发现新版本的内容。
|
49
|
+
update: 更新
|
50
|
+
|
51
|
+
# ----- Posts related labels -----
|
52
|
+
|
53
|
+
post:
|
54
|
+
written_by: 作者
|
55
|
+
posted: 发表于
|
56
|
+
updated: 更新于
|
57
|
+
words: 字
|
58
|
+
pageview_measure: 次浏览
|
59
|
+
read_time:
|
60
|
+
unit: 分钟
|
61
|
+
prompt: 阅读
|
62
|
+
relate_posts: 相关文章
|
63
|
+
share: 分享
|
64
|
+
button:
|
65
|
+
next: 下一篇
|
66
|
+
previous: 上一篇
|
67
|
+
copy_code:
|
68
|
+
succeed: 已复制!
|
69
|
+
share_link:
|
70
|
+
title: 分享链接
|
71
|
+
succeed: 链接已复制!
|
72
|
+
# pinned prompt of posts list on homepage
|
73
|
+
pin_prompt: 顶置
|
74
|
+
|
75
|
+
# categories page
|
76
|
+
categories:
|
77
|
+
category_measure: 个分类
|
78
|
+
post_measure: 篇文章
|
data/_data/share.yml
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# Sharing options at the bottom of the post.
|
2
|
+
# Icons from <https://fontawesome.com/>
|
3
|
+
|
4
|
+
platforms:
|
5
|
+
-
|
6
|
+
type: Twitter
|
7
|
+
icon: "fab fa-twitter"
|
8
|
+
link: "https://twitter.com/intent/tweet?text=TITLE&url=URL"
|
9
|
+
-
|
10
|
+
type: Facebook
|
11
|
+
icon: "fab fa-facebook-square"
|
12
|
+
link: "https://www.facebook.com/sharer/sharer.php?title=TITLE&u=URL"
|
13
|
+
-
|
14
|
+
type: Telegram
|
15
|
+
icon: "fab fa-telegram"
|
16
|
+
link: "https://t.me/share/url?url=URL&text=TITLE"
|
17
|
+
|
18
|
+
# Uncomment below if you need to.
|
19
|
+
# -
|
20
|
+
# type: Linkedin
|
21
|
+
# icon: "fab fa-linkedin"
|
22
|
+
# link: "https://www.linkedin.com/sharing/share-offsite/?url=URL"
|
23
|
+
#
|
24
|
+
# -
|
25
|
+
# type: Weibo
|
26
|
+
# icon: "fab fa-weibo"
|
27
|
+
# link: "http://service.weibo.com/share/share.php?title=TITLE&url=URL"
|
@@ -0,0 +1,12 @@
|
|
1
|
+
{% comment %} Site static assets origin {% endcomment %}
|
2
|
+
{% assign origin = 'cross_origin' %}
|
3
|
+
|
4
|
+
{% if site.assets.self_host.enabled %}
|
5
|
+
{% if site.assets.self_host.env %}
|
6
|
+
{% if site.assets.self_host.env == jekyll.environment %}
|
7
|
+
{% assign origin = 'self_host' %}
|
8
|
+
{% endif %}
|
9
|
+
{% else %}
|
10
|
+
{% assign origin = 'self_host' %}
|
11
|
+
{% endif %}
|
12
|
+
{% endif %}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
<!--
|
2
|
+
The Disqus lazy loading.
|
3
|
+
-->
|
4
|
+
<div id="disqus_thread" class="pt-2 pb-2">
|
5
|
+
<p class="text-center text-muted small">
|
6
|
+
Comments powered by <a href="https://disqus.com/">Disqus</a>.
|
7
|
+
</p>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<script type="text/javascript">
|
11
|
+
|
12
|
+
var disqus_config = function () {
|
13
|
+
this.page.url = '{{ page.url | absolute_url }}';
|
14
|
+
this.page.identifier = '{{ page.url }}';
|
15
|
+
};
|
16
|
+
|
17
|
+
/* Lazy loading */
|
18
|
+
|
19
|
+
var disqus_observer = new IntersectionObserver(function (entries) {
|
20
|
+
if(entries[0].isIntersecting) {
|
21
|
+
(function () {
|
22
|
+
var d = document, s = d.createElement('script');
|
23
|
+
s.src = 'https://{{ site.comments.disqus.shortname }}.disqus.com/embed.js';
|
24
|
+
s.setAttribute('data-timestamp', +new Date());
|
25
|
+
(d.head || d.body).appendChild(s);
|
26
|
+
})();
|
27
|
+
|
28
|
+
disqus_observer.disconnect();
|
29
|
+
}
|
30
|
+
}, { threshold: [0] });
|
31
|
+
|
32
|
+
disqus_observer.observe(document.querySelector('#disqus_thread'));
|
33
|
+
|
34
|
+
/* Auto switch theme */
|
35
|
+
|
36
|
+
function reloadDisqus() {
|
37
|
+
/* Disqus hasn't been loaded */
|
38
|
+
if (typeof DISQUS === "undefined") {
|
39
|
+
return;
|
40
|
+
}
|
41
|
+
|
42
|
+
if (document.readyState == 'complete') {
|
43
|
+
DISQUS.reset({ reload: true, config: disqus_config });
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
const modeToggle = document.querySelector(".mode-toggle");
|
48
|
+
|
49
|
+
if (typeof modeToggle !== "undefined") {
|
50
|
+
/* modeToggle.addEventListener('click', reloadDisqus); // not pretty for 'color-scheme' */
|
51
|
+
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', reloadDisqus);
|
52
|
+
}
|
53
|
+
|
54
|
+
</script>
|
@@ -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>
|
@@ -0,0 +1,51 @@
|
|
1
|
+
<!-- https://utteranc.es/ -->
|
2
|
+
<script src="https://utteranc.es/client.js"
|
3
|
+
repo="{{ site.comments.utterances.repo }}"
|
4
|
+
issue-term="{{ site.comments.utterances.issue_term }}"
|
5
|
+
crossorigin="anonymous"
|
6
|
+
async>
|
7
|
+
</script>
|
8
|
+
|
9
|
+
<script type="text/javascript">
|
10
|
+
$(function() {
|
11
|
+
const origin = "https://utteranc.es";
|
12
|
+
const iframe = "iframe.utterances-frame";
|
13
|
+
const lightTheme = "github-light";
|
14
|
+
const darkTheme = "github-dark";
|
15
|
+
let initTheme = lightTheme;
|
16
|
+
|
17
|
+
if ($("html[data-mode=dark]").length > 0
|
18
|
+
|| ($("html[data-mode]").length == 0
|
19
|
+
&& window.matchMedia("(prefers-color-scheme: dark)").matches)) {
|
20
|
+
initTheme = darkTheme;
|
21
|
+
}
|
22
|
+
|
23
|
+
addEventListener("message", (event) => {
|
24
|
+
let theme;
|
25
|
+
|
26
|
+
/* credit to <https://github.com/utterance/utterances/issues/170#issuecomment-594036347> */
|
27
|
+
if (event.origin === origin) {
|
28
|
+
/* page initial */
|
29
|
+
theme = initTheme;
|
30
|
+
|
31
|
+
} else if (event.source === window && event.data &&
|
32
|
+
event.data.direction === ModeToggle.ID) {
|
33
|
+
/* global theme mode changed */
|
34
|
+
const mode = event.data.message;
|
35
|
+
theme = (mode === ModeToggle.DARK_MODE ? darkTheme : lightTheme);
|
36
|
+
|
37
|
+
} else {
|
38
|
+
return;
|
39
|
+
}
|
40
|
+
|
41
|
+
const message = {
|
42
|
+
type: "set-theme",
|
43
|
+
theme: theme
|
44
|
+
};
|
45
|
+
|
46
|
+
const utterances = document.querySelector(iframe).contentWindow;
|
47
|
+
utterances.postMessage(message, origin);
|
48
|
+
});
|
49
|
+
|
50
|
+
});
|
51
|
+
</script>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<!--
|
2
|
+
Date format snippet
|
3
|
+
See: ${JS_ROOT}/utils/locale-dateime.js
|
4
|
+
-->
|
5
|
+
|
6
|
+
{% assign wrap_elem = include.wrap | default: 'em' %}
|
7
|
+
|
8
|
+
{% if site.prefer_datetime_locale == 'en' or lang == 'en' %}
|
9
|
+
{% assign df_strftime = '%b %e, %Y' %}
|
10
|
+
{% assign df_dayjs = 'll' %}
|
11
|
+
{% else %}
|
12
|
+
{% assign df_strftime = '%F' %}
|
13
|
+
{% assign df_dayjs = 'YYYY-MM-DD' %}
|
14
|
+
{% endif %}
|
15
|
+
|
16
|
+
<{{ wrap_elem }} class="{% if include.class %}{{ include.class }}{% endif %}"
|
17
|
+
data-ts="{{ include.date | date: '%s' }}"
|
18
|
+
data-df="{{ df_dayjs }}"
|
19
|
+
{% if include.tooltip %}data-toggle="tooltip" data-placement="bottom"{% endif %}>
|
20
|
+
{{ include.date | date: df_strftime }}
|
21
|
+
</{{ wrap_elem }}>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<!--
|
2
|
+
The Favicons for Web, Android, Microsoft, and iOS (iPhone and iPad) Apps
|
3
|
+
Generated by: https://realfavicongenerator.net/
|
4
|
+
-->
|
5
|
+
|
6
|
+
{% capture favicon_path %}{{ '/assets/img/favicons' | relative_url }}{% endcapture %}
|
7
|
+
|
8
|
+
<link rel="apple-touch-icon" sizes="180x180" href="{{ favicon_path }}/apple-touch-icon.png">
|
9
|
+
<link rel="icon" type="image/png" sizes="32x32" href="{{ favicon_path }}/favicon-32x32.png">
|
10
|
+
<link rel="icon" type="image/png" sizes="16x16" href="{{ favicon_path }}/favicon-16x16.png">
|
11
|
+
<link rel="manifest" href="{{ favicon_path }}/site.webmanifest">
|
12
|
+
<link rel="shortcut icon" href="{{ favicon_path }}/favicon.ico">
|
13
|
+
<meta name="apple-mobile-web-app-title" content="{{ site.title }}">
|
14
|
+
<meta name="application-name" content="{{ site.title }}">
|
15
|
+
<meta name="msapplication-TileColor" content="#da532c">
|
16
|
+
<meta name="msapplication-config" content="{{ favicon_path }}/browserconfig.xml">
|
17
|
+
<meta name="theme-color" content="#ffffff">
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<!-- The Footer -->
|
2
|
+
|
3
|
+
<footer class="row pl-3 pr-3">
|
4
|
+
<div class="col-12 d-flex justify-content-between align-items-center text-muted pl-0 pr-0">
|
5
|
+
<div class="footer-left">
|
6
|
+
<p class="mb-0">
|
7
|
+
© {{ 'now' | date: "%Y" }}
|
8
|
+
<a href="{{ site.social.links[0] }}">{{ site.social.name }}</a>.
|
9
|
+
{% if site.data.locales[lang].copyright.brief %}
|
10
|
+
<span data-toggle="tooltip" data-placement="top"
|
11
|
+
title="{{ site.data.locales[lang].copyright.verbose }}">{{ site.data.locales[lang].copyright.brief }}</span>
|
12
|
+
{% endif %}
|
13
|
+
</p>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
<div class="footer-right">
|
17
|
+
<p class="mb-0">
|
18
|
+
{% capture _platform %}
|
19
|
+
<a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a>
|
20
|
+
{% endcapture %}
|
21
|
+
|
22
|
+
{% capture _theme %}
|
23
|
+
<a href="https://github.com/abd3lraouf/jekyll-theme-abd3lraouf" target="_blank" rel="noopener">Chirpy</a>
|
24
|
+
{% endcapture %}
|
25
|
+
|
26
|
+
{{ site.data.locales[lang].meta
|
27
|
+
| default: 'Powered by :PLATFORM with :THEME theme.'
|
28
|
+
| replace: ':PLATFORM', _platform | replace: ':THEME', _theme
|
29
|
+
}}
|
30
|
+
|
31
|
+
</p>
|
32
|
+
</div>
|
33
|
+
|
34
|
+
</div>
|
35
|
+
|
36
|
+
</footer>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<!--
|
2
|
+
The GA snippet
|
3
|
+
-->
|
4
|
+
<!-- Global site tag (gtag.js) - Google Analytics -->
|
5
|
+
<script defer src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics.id }}"></script>
|
6
|
+
<script>
|
7
|
+
document.addEventListener("DOMContentLoaded", function(event) {
|
8
|
+
window.dataLayer = window.dataLayer || [];
|
9
|
+
function gtag(){dataLayer.push(arguments);}
|
10
|
+
|
11
|
+
gtag('js', new Date());
|
12
|
+
gtag('config', '{{ site.google_analytics.id }}');
|
13
|
+
});
|
14
|
+
</script>
|
data/_includes/head.html
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
<!--
|
2
|
+
The Head
|
3
|
+
-->
|
4
|
+
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
8
|
+
|
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 %}
|
13
|
+
|
14
|
+
{% if page.layout == 'home' or page.layout == 'post' %}
|
15
|
+
|
16
|
+
{% if site.google_analytics.pv.proxy_endpoint %}
|
17
|
+
<meta name="pv-proxy-endpoint" content="{{ site.google_analytics.pv.proxy_endpoint }}">
|
18
|
+
{% endif %}
|
19
|
+
|
20
|
+
{% if site.google_analytics.pv.cache_path %}
|
21
|
+
<meta name="pv-cache-path" content="{{ site.google_analytics.pv.cache_path | relative_url }}">
|
22
|
+
{% endif %}
|
23
|
+
|
24
|
+
{% endif %}
|
25
|
+
|
26
|
+
{% capture seo_tags %}
|
27
|
+
{% seo title=false %}
|
28
|
+
{% endcapture %}
|
29
|
+
|
30
|
+
{% if site.img_cdn and seo_tags contains 'og:image' %}
|
31
|
+
{% assign properties = 'og:image,twitter:image' | split: ',' %}
|
32
|
+
|
33
|
+
{% for prop in properties %}
|
34
|
+
{% if site.img_cdn contains '//' %}
|
35
|
+
<!-- `site.img_cdn` is a cross-origin URL -->
|
36
|
+
{% capture target %}<meta property="{{ prop }}" content="{{ site.url }}{% endcapture %}
|
37
|
+
{% capture replacement %}<meta property="{{ prop }}" content="{{ site.img_cdn }}{% endcapture %}
|
38
|
+
{% else %}
|
39
|
+
<!-- `site.img_cdn` is a local file path -->
|
40
|
+
{% capture target %}<meta property="{{ prop }}" content="{{ site.url }}{{ site.baseurl }}{% endcapture %}
|
41
|
+
{% assign replacement = target | append: site.img_cdn %}
|
42
|
+
{% endif %}
|
43
|
+
|
44
|
+
{% assign seo_tags = seo_tags | replace: target, replacement %}
|
45
|
+
|
46
|
+
{% endfor %}
|
47
|
+
{% endif %}
|
48
|
+
|
49
|
+
{{ seo_tags }}
|
50
|
+
|
51
|
+
<title>
|
52
|
+
{%- unless page.layout == "home" -%}
|
53
|
+
{{ page.title | append: " | "}}
|
54
|
+
{%- endunless -%}
|
55
|
+
{{ site.title }}
|
56
|
+
</title>
|
57
|
+
|
58
|
+
{% include favicons.html %}
|
59
|
+
|
60
|
+
{% if site.resources.ignore_env != jekyll.environment and site.resources.self_hosted %}
|
61
|
+
|
62
|
+
<link href="{{ site.data.assets[origin].webfonts | relative_url }}" rel="stylesheet">
|
63
|
+
|
64
|
+
{% else %}
|
65
|
+
|
66
|
+
{% for cdn in site.data.assets[origin].cdns %}
|
67
|
+
<link rel="preconnect" href="{{ cdn.url }}" {{ cdn.args }}>
|
68
|
+
<link rel="dns-prefetch" href="{{ cdn.url }}" {{ cdn.args }}>
|
69
|
+
{% endfor %}
|
70
|
+
|
71
|
+
<link rel="stylesheet" href="{{ site.data.assets[origin].webfonts | relative_url }}">
|
72
|
+
|
73
|
+
{% endif %}
|
74
|
+
|
75
|
+
<!-- GA -->
|
76
|
+
{% if jekyll.environment == 'production'
|
77
|
+
and site.google_analytics.id != empty and site.google_analytics.id %}
|
78
|
+
<link rel="preconnect" href="https://www.google-analytics.com" crossorigin="use-credentials">
|
79
|
+
<link rel="dns-prefetch" href="https://www.google-analytics.com">
|
80
|
+
|
81
|
+
<link rel="preconnect" href="https://www.googletagmanager.com" crossorigin="anonymous">
|
82
|
+
<link rel="dns-prefetch" href="https://www.googletagmanager.com">
|
83
|
+
|
84
|
+
{% if site.google_analytics.pv.proxy_endpoint %}
|
85
|
+
{% assign proxy_url = site.google_analytics.pv.proxy_endpoint
|
86
|
+
| replace: "https://", "" | split: "/" | first | prepend: "https://" %}
|
87
|
+
<link rel="preconnect" href="{{ proxy_url }}" crossorigin="use-credentials">
|
88
|
+
<link rel="dns-prefetch" href="{{ proxy_url }}">
|
89
|
+
{% endif %}
|
90
|
+
{% endif %}
|
91
|
+
|
92
|
+
<!-- Bootstrap -->
|
93
|
+
<link rel="stylesheet" href="{{ site.data.assets[origin].bootstrap.css | relative_url}}">
|
94
|
+
|
95
|
+
<!-- Font Awesome -->
|
96
|
+
<link rel="stylesheet" href="{{ site.data.assets[origin].fontawesome.css | relative_url }}">
|
97
|
+
|
98
|
+
<link rel="stylesheet" href="{{ '/assets/css/style.css' | relative_url }}">
|
99
|
+
|
100
|
+
{% if site.toc and page.toc %}
|
101
|
+
<link rel="stylesheet" href="{{ site.data.assets[origin].bootstrap-toc.css | relative_url }}">
|
102
|
+
{% endif %}
|
103
|
+
|
104
|
+
{% if page.layout == 'page' or page.layout == 'post' %}
|
105
|
+
<!-- Manific Popup -->
|
106
|
+
<link rel="stylesheet" href="{{ site.data.assets[origin].magnific-popup.css | relative_url }}">
|
107
|
+
{% endif %}
|
108
|
+
|
109
|
+
<!-- JavaScript -->
|
110
|
+
|
111
|
+
<script src="{{ site.data.assets[origin].jquery.js | relative_url }}"></script>
|
112
|
+
|
113
|
+
{% unless site.theme_mode %}
|
114
|
+
{% include mode-toggle.html %}
|
115
|
+
{% endunless %}
|
116
|
+
</head>
|