jekyll-theme-satellite 1.0.0 → 1.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 04ee424c66214fc5325ace025a1205d3bba00ef334240e2cd3b046414f8824a4
4
- data.tar.gz: 1d044b48a78e81a1aec1bac6f27ed8751b26636f04ae44aeaa449715754a5407
3
+ metadata.gz: a500e53a72b35809de612f591c923834f7316197a310d89a005b25b4195ad96e
4
+ data.tar.gz: 6c0fa7b0991fcdcd1a426eef7b2c9426d82b4b467872e74a1a44b39d11bdee1e
5
5
  SHA512:
6
- metadata.gz: 37cb13d4ea2f2870250ed1532c08e815c48eabb98ffffa540203b44359fcf3f8d50f1a845fd61368c855ac8b6acb783e1788283b0130db912c8e15fc23bc2aaf
7
- data.tar.gz: cd038d7ac09e27f1279345c23b8acc884b12de0469ad35a275f92fc2565ff36176a05547644bf4778bfca7efa79b14a5ca0f10c79ab40953777cfb428dab5075
6
+ metadata.gz: 3078471481814c98235d2ecb7800ddae35837d5555ec49738d89c310e163807ae99dafd5a0de534e1c3b5e83d829da89c091893e1678a0732c0b9b01761710cb
7
+ data.tar.gz: 39a32049e2333b2d15d75cac2a8061f27bf7c81313a52bed1e4e325038b8318a925742ddf1babf1a1808d3a82634408ab07e10aae8c3c195cbfb918368623ae0
data/README.md ADDED
@@ -0,0 +1,113 @@
1
+ [![CI](https://img.shields.io/badge/Github%20Pages-passing-gold.svg?logo=github)](ci)
2
+ [![License: MIT](https://img.shields.io/badge/License-MIT-orange.svg)](https://opensource.org/licenses/MIT)
3
+ [![Jekyll](https://img.shields.io/badge/jekyll-%3E%3D%204.3.2-green.svg)](https://jekyllrb.com/)
4
+ [![Jekyll](https://img.shields.io/badge/gem%20version-3.2.33-blue.svg)](gem)
5
+
6
+ # Satellite🛰️ - Jekyll blog theme
7
+ An emotional and adorable blog theme powered by ***Jekyll***. Live demo is available here: [https://byanko55.github.io](https://byanko55.github.io)
8
+
9
+ ![Demo Page](https://i.ibb.co/h1QF06V/demo.webp)
10
+
11
+ ### Light Mode
12
+ ![Demo Page-light](https://i.ibb.co/PtTbM1V/image-4.webp)
13
+
14
+ ### Dark Mode
15
+ ![Demo Page-dark](https://i.ibb.co/cY6hwG4/image-5.webp)
16
+
17
+ ### Fresh and Attractive Design
18
+ <p>
19
+ <img src="https://i.ibb.co/4NwrTyj/image-2.webp" height="400px" align="center"/>
20
+ <img src="https://i.ibb.co/WvyBzkL/Animation.gif" height="400px" align="center"/>
21
+ </p>
22
+
23
+ ## Features
24
+
25
+ * Comment System using *giscus*
26
+ * Copy contents of Code Block
27
+ * Dark/Light Theme
28
+ * Google Analytics
29
+ * Hierarchical Categorization
30
+ * Mobile friendly design
31
+ * Related Posts
32
+ * RSS/Sitemap support
33
+ * Search Post by Title or Tags
34
+ * Syntax Highlighter (*highlight.js*)
35
+ * Table of Contents
36
+ * Visitor Counter (*goatcounter*)
37
+
38
+ ## Installation
39
+
40
+ There are two ways to setup this theme:
41
+
42
+ ### Method 1: Build from source (Recommended)
43
+ Fork this repository or download the [source](https://github.com/byanko55/jekyll-theme-satellite/releases) as a zip.
44
+
45
+ If you use as destination a repository named USERNAME.github.io, then your url will be https://USERNAME.github.io/.
46
+
47
+
48
+ ### Method 2: Utilize Gem package
49
+ Create a clean site directory (Follow the **Instruction 1~4** described [here](https://jekyllrb.com/docs/)).
50
+
51
+ The following materials are redundant, so remove them.
52
+ * index.markdown
53
+ * about.markdown
54
+ * 404.html
55
+
56
+ Then, add this line to your Jekyll site's `Gemfile`:
57
+
58
+ ```
59
+ gem "jekyll-theme-satellite"
60
+ ```
61
+
62
+ You need to replace the initial `_config.yml` file with the [prepared one](https://github.com/byanko55/jekyll-theme-satellite/blob/master/docs/_config.yml).
63
+
64
+ ### Modify your site setting
65
+
66
+ Now fill in the **site variable** such as blog name, profile image, and social accounts in `_config.yml`.
67
+
68
+ ```
69
+ title: Example.com
70
+ description: "Satellite - jekyll blog theme"
71
+ logo_img: "/assets/img/favicon.webp"
72
+ profile_img: "/assets/img/profile.jpg"
73
+
74
+ # Social Links
75
+ email: example@gmail.com
76
+ github_username: github
77
+ twitter_username: twitter
78
+ instagram_username: instagram
79
+ linkedin_username: linkedin
80
+ facebook_username: facebook
81
+ ```
82
+
83
+ ### Run site locally
84
+
85
+ From the site root directory, install the dependencies:
86
+
87
+ ```
88
+ bundle install
89
+ ```
90
+
91
+ Start a Jekyll service.
92
+
93
+ ```
94
+ bundle exec jekyll serve
95
+ ```
96
+
97
+ Now open [http://localhost:4000](http://localhost:4000) in your browser.
98
+
99
+ ## Customizing
100
+
101
+ You can find useful manuals for customizing your site from the below table:
102
+
103
+ |||
104
+ |---|---|
105
+ |Posting guidelines|[link](https://github.com/byanko55/jekyll-theme-satellite/blob/master/docs/Posting%20Guide.md)|
106
+ |Enabling ***comment system***|[link](https://github.com/byanko55/jekyll-theme-satellite/blob/master/docs/Comment%20System.md)|
107
+ |Enabling ***Visitor counter***|[link](https://github.com/byanko55/jekyll-theme-satellite/blob/master/docs/Visitor%20Counter.md)|
108
+
109
+ ## Contribution
110
+ If you would like to report a bug or request a new feature, please open [an issue](https://github.com/byanko55/jekyll-theme-satellite/issues) We are open to any kind of feedback or collaboration.
111
+
112
+ ## License
113
+ © 2024 *Yankos*. This theme is available as open source under the terms of the [MIT License](https://opensource.org/license/mit/).
@@ -0,0 +1,23 @@
1
+ <div class="category-tree">
2
+ {%- assign page_link = "/" -%}
3
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z"/></svg>
4
+ <p>
5
+ {%- assign search_tree = page.path | remove: "/index.md" | split: "/" -%}
6
+ {%- for sub_tree in search_tree -%}
7
+ {% if forloop.first %}
8
+ <a href="/">Home</a>
9
+ >
10
+ {% elsif forloop.last %}
11
+ {% if page_type == "category" %}
12
+ {{ sub_tree }}
13
+ {% else %}
14
+ {{ page.title }}
15
+ {% endif %}
16
+ {% else %}
17
+ {%- assign page_link = page_link | append: sub_tree | append: "/" -%}
18
+ <a href="{{ page_link }}">{{ sub_tree }}</a>
19
+ >
20
+ {% endif %}
21
+ {%- endfor -%}
22
+ </p>
23
+ </div>
@@ -0,0 +1,10 @@
1
+ <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
2
+ <script src="{{ '/assets/js/background.js' }}"></script>
3
+ <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
4
+ <script>
5
+ window.dataLayer = window.dataLayer || [];
6
+ function gtag(){ dataLayer.push(arguments); }
7
+
8
+ gtag('js', new Date());
9
+ gtag('config', '{{ site.google_analytics }}');
10
+ </script>
@@ -0,0 +1,33 @@
1
+ <meta charset="utf-8">
2
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
3
+ <meta name="viewport" content="width=device-width, initial-scale=1">
4
+ {% seo %}
5
+
6
+ <link rel="shortcut icon" type="image/png" href="{{ site.logo_img }}">
7
+ <link rel="preload" href="{{ '/assets/css/fonts.css' }}" as="style" onload="this.onload=null; this.rel='stylesheet'">
8
+ <link rel="stylesheet" href="{{ '/assets/css/fonts.css' }}">
9
+
10
+ <script src="{{ '/assets/js/fontfaceobserver.js' }}" type="text/javascript"></script>
11
+ <script type="text/javascript">
12
+ const nunitoObserver = new FontFaceObserver('Nunito Sans');
13
+ const righteousObserver = new FontFaceObserver('Righteous');
14
+ const latoObserver = new FontFaceObserver('Lato');
15
+
16
+ Promise.all([
17
+ nunitoObserver.load(),
18
+ righteousObserver.load(),
19
+ latoObserver.load(),
20
+ ]).then(function(){
21
+ document.documentElement.className += " fonts-loaded";
22
+ });
23
+ </script>
24
+
25
+ <title>
26
+ {% if page.title %}{{ page.title }}
27
+ {% else %}{{ site.title }}
28
+ {% endif %}
29
+ </title>
30
+
31
+ <meta
32
+ name="description"
33
+ content="{% if page.description %}{{ page.description | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description }}{% endif %}">
@@ -1,41 +1,55 @@
1
1
  <nav id="navigation">
2
- {%- assign nav_pages = site.pages
3
- | where_exp: "item", "item.title != nil"
4
- | where_exp: "item", "item.bookmark == true"
5
- | sort: 'title' -%}
6
-
7
2
  {% assign first_level_pages = "" | split, "" %}
8
3
  {% assign second_level_pages = "" | split, "" %}
9
4
  {% assign third_level_pages = "" | split, "" %}
10
5
 
11
- {% for p in nav_pages %}
6
+ {% for p in site.pages %}
12
7
  {%- assign p_tree = p.url | remove_first: "/" | split: "/" -%}
8
+ {%- assign p_name = p_tree | last -%}
13
9
  {%- assign p_level = p_tree | size -%}
14
10
 
15
- {% if p_level <= 2 and p.bookmark %}
16
- {% assign first_level_pages = first_level_pages | push:p %}
17
- {% elsif (p_level == 3 and p.bookmark) or (p_level == 2 and p.bookmark == nil) %}
18
- {% assign second_level_pages = second_level_pages | push:p %}
19
- {% elsif (p_level == 4 and p.bookmark) or (p_level == 3 and p.bookmark == nil) %}
20
- {% assign third_level_pages = third_level_pages | push:p %}
11
+ {% if p.bookmark == nil and p_name != 'index.html' %}
12
+ {% continue %}
13
+ {% endif %}
14
+
15
+ {% if p.bookmark %}
16
+ {% if p_level == 1 %}
17
+ {% assign first_level_pages = first_level_pages | push:p %}
18
+ {% elsif p_level == 2 %}
19
+ {% assign second_level_pages = second_level_pages | push:p %}
20
+ {% elsif p_level == 3 %}
21
+ {% assign third_level_pages = third_level_pages | push:p %}
22
+ {% endif %}
23
+ {% else %}
24
+ {% if p_level <= 2 %}
25
+ {% assign first_level_pages = first_level_pages | push:p %}
26
+ {% elsif p_level == 3 %}
27
+ {% assign second_level_pages = second_level_pages | push:p %}
28
+ {% elsif p_level == 4 %}
29
+ {% assign third_level_pages = third_level_pages | push:p %}
30
+ {% endif %}
21
31
  {% endif %}
22
32
  {% endfor %}
23
33
 
34
+ {% assign first_level_pages = first_level_pages | sort: 'url' %}
35
+ {% assign second_level_pages = second_level_pages | sort: 'url' %}
36
+ {% assign third_level_pages = third_level_pages | sort: 'url' %}
37
+
24
38
  <ul class="nav-list">
25
39
  {%- for node in first_level_pages -%}
26
40
  {%- assign node_url = node.url | remove: 'index.html' -%}
41
+ {%- assign node_title = node.path | remove: 'index.md' | split: "/" | last | remove: '.md' | replace: "_pages", "Home" -%}
27
42
  {%- assign children_list = second_level_pages
28
- | where_exp: "item", "item.url contains node_url"
29
- | sort: 'title' -%}
43
+ | where_exp: "item", "item.url contains node_url" -%}
30
44
  {%- assign num_children = children_list | size -%}
31
- <li id="nav-first" aria-label="{{ node.title }}">
45
+ <li id="nav-first" aria-label="{{ node_title }}">
32
46
  <div class="nav-item">
33
47
  <a href="{{ node_url }}" class="nav-list-link nav-lh">
34
48
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128h95.1l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H347.1L325.8 320H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H315.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7H155.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l21.3-128H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320h95.1l21.3-128H187.1z"/></svg>
35
- <span>{{ node.title }}</span>
49
+ <span>{{ node_title }}</span>
36
50
  </a>
37
51
  {%- if num_children > 0 and node_url != "/" -%}
38
- <button class="nav-list-expander" aria-label="toggle items in {{ node.title }} category" aria-pressed="false">
52
+ <button class="nav-list-expander" aria-label="toggle items in {{ node_title }} category" aria-pressed="false">
39
53
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M201.4 342.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 274.7 86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"/></svg>
40
54
  </button>
41
55
  {%- endif -%}
@@ -44,18 +58,18 @@
44
58
  <ul class="nav-list">
45
59
  {%- for child in children_list -%}
46
60
  {%- assign child_url = child.url | remove: 'index.html' -%}
61
+ {%- assign child_title = child.path | remove: 'index.md' | split: "/" | last | remove: '.md' -%}
47
62
  {%- assign grand_children_list = third_level_pages
48
- | where_exp: "item", "item.url contains child_url"
49
- | sort: 'title' -%}
63
+ | where_exp: "item", "item.url contains child_url" -%}
50
64
  {%- assign num_grand_children = grand_children_list | size -%}
51
- <li id="nav-second" aria-label="{{ child.title }}">
65
+ <li id="nav-second" aria-label="{{ child_title }}">
52
66
  <div class="nav-item">
53
67
  <a href="{{ child_url }}" class="nav-list-link nav-sh">
54
68
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z"/></svg>
55
- <span>{{ child.title }}</span>
69
+ <span>{{ child_title }}</span>
56
70
  </a>
57
71
  {%- if num_grand_children > 0 -%}
58
- <button class="nav-list-expander" aria-label="toggle items in {{ child.title }} category" aria-pressed="false">
72
+ <button class="nav-list-expander" aria-label="toggle items in {{ child_title }} category" aria-pressed="false">
59
73
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M201.4 342.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 274.7 86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"/></svg>
60
74
  </button>
61
75
  {%- endif -%}
@@ -63,14 +77,15 @@
63
77
  {%- if num_grand_children > 0 -%}
64
78
  <ul class="nav-list">
65
79
  {%- for grand_child in grand_children_list -%}
66
- <li id="nav-third" aria-label="{{ grand_child.title }}">
67
- <div class="nav-item">
68
- <a href="{{ grand_child.url | relative_url }}" class="nav-list-link nav-sh">
69
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z"/></svg>
70
- <span>{{ grand_child.title }}</span>
71
- </a>
72
- </div>
73
- </li>
80
+ {%- assign grand_child_title = grand_child.path | remove: 'index.md' | split: "/" | last | remove: '.md' -%}
81
+ <li id="nav-third" aria-label="{{ grand_child_title }}">
82
+ <div class="nav-item">
83
+ <a href="{{ grand_child.url | relative_url }}" class="nav-list-link nav-sh">
84
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z"/></svg>
85
+ <span>{{ grand_child_title }}</span>
86
+ </a>
87
+ </div>
88
+ </li>
74
89
  {%- endfor -%}
75
90
  </ul>
76
91
  {%- endif -%}
@@ -1,13 +1,13 @@
1
1
  {%- assign list_pages = site.pages | sort:"date" | reverse -%}
2
2
  {%- assign post_counts = 0 -%}
3
3
 
4
- <p class="category-header">
4
+ <h1 class="category-header">
5
5
  {% if page_level == 1 %}
6
6
  All Posts
7
7
  {% else %}
8
- {{ page.title }}
8
+ {{ page.path | remove: 'index.md' | split: "/" | last }}
9
9
  {% endif %}
10
- </p>
10
+ </h1>
11
11
  <div id="category-list">
12
12
  <ul class="paginated-list" data-current-page="1" aria-live="polite">
13
13
  {%- for sub_page in list_pages -%}
@@ -26,7 +26,7 @@
26
26
  </div>
27
27
 
28
28
  <div class="box_contents">
29
- <a href="{{ sub_page.url }}" class="title_post">{{ sub_page.title }}</a>
29
+ <a href="{{ sub_page.url }}"><h1 class="title_post">{{ sub_page.title }}</h1></a>
30
30
  <a href="{{ sub_page.url }}" class="txt_post">
31
31
  {{ sub_page.content | markdownify | strip_html }}
32
32
  </a>
data/_includes/post.html CHANGED
@@ -41,9 +41,9 @@
41
41
  </div>
42
42
  </div>
43
43
  </div>
44
- <div class="tags">
44
+ <div class="tag-box">
45
45
  {%- for page_tag in page.tags -%}
46
- <span class="tag-box theme-{{ forloop.index0 | modulo: 3 }}" contentID="{{ page_tag }}">
46
+ <span class="tag theme-{{ forloop.index0 | modulo: 3 }}" contentID="{{ page_tag }}">
47
47
  {{ page_tag }}
48
48
  </span>
49
49
  {%- endfor -%}
@@ -4,7 +4,7 @@
4
4
  <div class="wave"></div>
5
5
 
6
6
  <div class="search-box">
7
- <h1>Touch background to close</h1>
7
+ <mark>Touch background to close</mark>
8
8
  <div class="input-box">
9
9
  <input id="search-input"
10
10
  type="search"
@@ -0,0 +1,44 @@
1
+ {%- assign page_list = site.pages
2
+ | where_exp: "item", "item.title != nil"
3
+ -%}
4
+ <script src="{{ '/assets/js/search.js' }}" type="text/javascript"></script>
5
+ <script>
6
+ var posts = [];
7
+
8
+ {% for page in page_list %}
9
+ {%- assign psearch_tree = page.path | split: "/" -%}
10
+
11
+ {% if psearch_tree.last == "index.md" %}
12
+ {%- assign p_type = "category" -%}
13
+ {% else %}
14
+ {%- assign p_type = "post" -%}
15
+ {% endif %}
16
+
17
+ {%- assign tree_len = psearch_tree.size | minus: 2 -%}
18
+ {%- assign psearch_tree = psearch_tree | slice:1, tree_len -%}
19
+ {%- assign p_link = "" -%}
20
+ {%- for sub_tree in psearch_tree -%}
21
+ {% if forloop.last %}
22
+ {%- assign p_link = p_link | append: sub_tree -%}
23
+ {% else %}
24
+ {%- assign p_link = p_link | append: sub_tree | append: " > " -%}
25
+ {% endif %}
26
+ {%- endfor -%}
27
+
28
+ posts.push({
29
+ 'title' : "{{ page.title | escape }}",
30
+ 'path' : "{{ p_link }}",
31
+ 'type' : "{{ p_type }}",
32
+ 'tags' : "{{ page.tags | join: ', ' }}",
33
+ 'url' : "{{ site.baseurl }}{{ page.url }}",
34
+ 'image' : "{{ page.thumbnail }}",
35
+ 'date' : "{{ page.date | date: '%Y-%m-%d' }}"
36
+ });
37
+ {% endfor %}
38
+
39
+ searchPost(posts);
40
+
41
+ {% if page_type == "post" %}
42
+ searchRelated(posts);
43
+ {% endif %}
44
+ </script>
@@ -1,7 +1,7 @@
1
1
  <div class="sidebar sidebar-left">
2
2
  <div class="side-banner">
3
3
  <h1 class="site-name">
4
- <a href="/"><span class="highlight">example.com</span></a>
4
+ <a href="/"><mark class="highlight">example.com</mark></a>
5
5
  <button id="btn-brightness" aria-label="brightness-button">
6
6
  <svg class='ico-dark' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path d="M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z"/></svg>
7
7
  <svg class='ico-light' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z"/></svg>
@@ -1,113 +1,18 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="en">
3
3
  <head>
4
- <meta charset="utf-8">
5
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
- <meta name="viewport" content="width=device-width, initial-scale=1">
7
- {% seo %}
8
- <link rel="shortcut icon" type="image/png" href="{{ '/assets/img/favicon.webp' }}">
9
- <link rel="preload" href="{{ '/assets/img/favicon.webp' }}" as="image">
10
- {% if site.goatcounter_code %}
11
- <script data-goatcounter="https://{{ site.goatcounter_code }}.goatcounter.com/count"
12
- async src="//gc.zgo.at/count.js"></script>
13
- {% endif %}
14
-
15
- <title>
16
- {% if page.title %}{{ page.title }}
17
- {% else %}{{ site.title }}
18
- {% endif %}
19
- </title>
20
-
21
- <meta
22
- name="description"
23
- content="{% if page.description %}{{ page.description | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description }}{% endif %}">
24
-
25
- <link rel="stylesheet" href="{{ '/assets/css/style.css' }}">
26
- {% if page.thumbnail %}
27
- <style>
28
- .thumbnail {
29
- background-image: url("{{ page.thumbnail }}");
30
- }
31
- </style>
32
- {% else %}
33
- <style>
34
- .thumbnail {
35
- aspect-ratio: auto !important;
36
- }
37
- .transbox {
38
- transform: none;
39
- position: relative;
40
- margin: auto;
41
- left: 0;
42
- top: 0;
43
- }
44
- </style>
45
- {% endif %}
46
- <script src="{{ '/assets/js/tocbot.min.js' }}"></script>
47
- <script src="{{ '/assets/js/sweet-scroll.min.js' }}"></script>
4
+ {% include head.html %}
5
+ <link rel="stylesheet" href="{{ '/assets/css/404.css' }}">
48
6
  </head>
49
7
  <body>
50
- <canvas id="stars" width="100%" height="100%"></canvas>
51
- {%- assign page_tree = page.path | remove_first: "_pages/" | split: "/" -%}
52
- {%- assign page_level = page_tree.size -%}
53
- {% if page_tree.last == "index.md" %}
54
- {%- assign page_type = "category" -%}
55
- {% else %}
56
- {%- assign page_type = "post" -%}
57
- {% endif %}
58
- {% include sidebar.html %}
59
- <div id="post">
60
- <div class="inner-header">
61
- <span class="dot" style="background-color: #F86158;"></span>
62
- <span class="dot" style="background-color: #FBBF2D;"></span>
63
- <span class="dot" style="background-color: #2ACB45;"></span>
64
- </div>
65
- <div class="inner-content">
66
- <div class="category-tree">
67
- {%- assign page_link = "/" -%}
68
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z"/></svg>
69
- <p>
70
- {%- assign search_tree = page.path | remove: "/index.md" | split: "/" -%}
71
- {%- for sub_tree in search_tree -%}
72
- {% if forloop.first %}
73
- <a href="/">Home</a>
74
- >
75
- {% elsif forloop.last %}
76
- {% if page_type == "category" %}
77
- {{ sub_tree }}
78
- {% else %}
79
- {{ page.title }}
80
- {% endif %}
81
- {% else %}
82
- {%- assign page_link = page_link | append: sub_tree | append: "/" -%}
83
- <a href="{{ page_link }}">{{ sub_tree }}</a>
84
- >
85
- {% endif %}
86
- {%- endfor -%}
87
- </p>
88
- </div>
89
- {% if page_type == "category" %}
90
- {% include loading.html %}
91
- {% include pagination.html %}
92
- {% else %}
93
- {% include post.html %}
94
- {% endif %}
95
- </div>
8
+ <div class="blank-page">
9
+ <a href="/" class="go-home">↩️ GO HOME</a>
10
+ <div class="not-found-msg">
11
+ <h1 class="sour-face">`Φ ?</h1>
12
+ <p style="font-size:1.75rem; color:#fa4251;">404: Page not found</p>
13
+ <p style="font-size:1.25rem;">D-Data breach...? &nbsp&nbsp No such thing allowed!</p>
14
+ </div>
96
15
  </div>
97
- {% include search.html %}
98
16
  </body>
99
- <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
100
- <script src="{{ '/assets/js/highlight.min.js' }}"></script>
101
- <link id="highlight-default" rel="stylesheet" href="{{ '/assets/css/highlight-default.min.css' }}">
102
- <link id="highlight-dark" rel="stylesheet" href="{{ '/assets/css/highlight-dark.min.css' }}">
103
- <script src="{{ '/assets/js/stars.js' }}"></script>
104
- <script src="{{ '/assets/js/main.js' }}"></script>
105
- <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
106
- <script>
107
- window.dataLayer = window.dataLayer || [];
108
- function gtag(){ dataLayer.push(arguments); }
109
-
110
- gtag('js', new Date());
111
- gtag('config', '{{ site.google_analytics }}');
112
- </script>
17
+ <script src="{{ '/assets/js/404.js' }}"></script>
113
18
  </html>
@@ -0,0 +1,86 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ {%- assign page_tree = page.path | remove_first: "_pages/" | split: "/" -%}
4
+ {%- assign page_level = page_tree.size -%}
5
+ {% if page_tree.last == "index.md" %}
6
+ {%- assign page_type = "category" -%}
7
+ {% else %}
8
+ {%- assign page_type = "post" -%}
9
+ {% endif %}
10
+ <head>
11
+ {% include head.html %}
12
+ <link rel="preload" href="{{ site.profile_img }}" as="image">
13
+ <link rel="stylesheet" href="{{ '/assets/css/style.css' }}">
14
+ {% if page_type == "post" %}
15
+ {% if site.goatcounter_code %}
16
+ <script data-goatcounter="https://{{ site.goatcounter_code }}.goatcounter.com/count"
17
+ async src="//gc.zgo.at/count.js"></script>
18
+ {% endif %}
19
+
20
+ <meta name="giscus_repo" content="{{ site.giscus_repo }}">
21
+ <meta name="giscus_repoId" content="{{ site.giscus_repoId }}">
22
+ <meta name="giscus_category" content="{{ site.giscus_category }}">
23
+ <meta name="giscus_categoryId" content="{{ site.giscus_categoryId }}">
24
+
25
+ {% if page.thumbnail %}
26
+ <style>
27
+ .thumbnail {
28
+ background-image: url("{{ page.thumbnail }}");
29
+ }
30
+ </style>
31
+ {% else %}
32
+ <style>
33
+ .thumbnail {
34
+ aspect-ratio: auto !important;
35
+ }
36
+ .transbox {
37
+ transform: none;
38
+ position: relative;
39
+ margin: auto;
40
+ left: 0;
41
+ top: 0;
42
+ }
43
+ </style>
44
+ {% endif %}
45
+ {% endif %}
46
+ </head>
47
+ <body>
48
+ <script type="text/javascript">
49
+ let currentTheme = localStorage.getItem('theme');
50
+
51
+ document.body.classList[currentTheme === 'dark' ? 'add' : 'remove']('dark-theme');
52
+ </script>
53
+ <canvas id="stars" width="100%" height="100%"></canvas>
54
+ {% include sidebar.html %}
55
+ <div id="post">
56
+ <div class="inner-header">
57
+ <span class="dot" style="background-color: #F86158;"></span>
58
+ <span class="dot" style="background-color: #FBBF2D;"></span>
59
+ <span class="dot" style="background-color: #2ACB45;"></span>
60
+ </div>
61
+ <div class="inner-content">
62
+ {% include category.html %}
63
+ {% if page_type == "category" %}
64
+ {% include loading.html %}
65
+ {% include pagination.html %}
66
+ {% else %}
67
+ {% include post.html %}
68
+ {% endif %}
69
+ </div>
70
+ </div>
71
+ {% include search.html %}
72
+ </body>
73
+ {% include footer.html %}
74
+ {% if page_type == "category" %}
75
+ <script src="{{ '/assets/js/subject.js' }}"></script>
76
+ {% else %}
77
+ <script src="{{ '/assets/js/tocbot.min.js' }}"></script>
78
+ <script src="{{ '/assets/js/sweet-scroll.min.js' }}"></script>
79
+ <script src="{{ '/assets/js/highlight.min.js' }}"></script>
80
+ <link id="highlight-default" rel="stylesheet" href="{{ '/assets/css/highlight-default.min.css' }}">
81
+ <link id="highlight-dark" rel="stylesheet" href="{{ '/assets/css/highlight-dark.min.css' }}">
82
+ <script src="{{ '/assets/js/post.js' }}"></script>
83
+ {% endif %}
84
+ {% include search_event.html %}
85
+ <script src="{{ '/assets/js/common.js' }}"></script>
86
+ </html>
data/_sass/darkmode.scss CHANGED
@@ -2,7 +2,7 @@ body.dark-theme {
2
2
 
3
3
  background: #1E1E1F;
4
4
 
5
- a, span, p, h1, h2, h3, i { color: #aaa; }
5
+ a, span, p, h1, h2, h3, i, mark { color: #aaa; }
6
6
 
7
7
  svg { fill: #aaa; }
8
8