jekyll-theme-satellite 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 04ee424c66214fc5325ace025a1205d3bba00ef334240e2cd3b046414f8824a4
4
- data.tar.gz: 1d044b48a78e81a1aec1bac6f27ed8751b26636f04ae44aeaa449715754a5407
3
+ metadata.gz: f61521ac4ceb6e2957520d1c92d27f2c1c34d42d585a34e202f422496416d5b9
4
+ data.tar.gz: c1456cb304615bcf4aae2c4d67628faddb16a126923c816cf3b66f13773aba13
5
5
  SHA512:
6
- metadata.gz: 37cb13d4ea2f2870250ed1532c08e815c48eabb98ffffa540203b44359fcf3f8d50f1a845fd61368c855ac8b6acb783e1788283b0130db912c8e15fc23bc2aaf
7
- data.tar.gz: cd038d7ac09e27f1279345c23b8acc884b12de0469ad35a275f92fc2565ff36176a05547644bf4778bfca7efa79b14a5ca0f10c79ab40953777cfb428dab5075
6
+ metadata.gz: 6798782d1a8b76ffd229e6cb33cd8bebf688004d042c46149e9ac32ba4e1c26c0cf143639a4b55d700a870e00134e8feaf0afa346bddf96bde1bac8a62681152
7
+ data.tar.gz: 635fd4e98d98b4f7ec34aab3f0d22f1dc21ee9f5f3a98209ced7d09c18177e03b5b73c5891833280d368695f45a140d97d0474b58469c06cb7f0ae46db35fa63
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 way 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 in [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/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/docs/Posting%20guide.md)|
106
+ |Enabling ***comment system***|[link](https://github.com/byanko55/jekyll-theme-satellite/docs/Comment%20system.md)|
107
+ |Enabling ***Visitor counter***|[link](https://github.com/byanko55/jekyll-theme-satellite/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/docs/Contribution%20Guidelines.md) 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,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
8
  {{ page.title }}
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>
@@ -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,217 @@
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
+
45
+ /*
46
+ $('#search-input').on('keyup', function () {
47
+ var keyword = this.value.toLowerCase();
48
+ var searchResult = [];
49
+
50
+ if (keyword.length > 0) {
51
+ $('#search-result').show();
52
+ $('#btn-clear').show();
53
+ } else {
54
+ $('#search-result').hide();
55
+ $('#btn-clear').hide();
56
+ }
57
+
58
+ $('.result-item').remove();
59
+
60
+ for (var i = 0; i < posts.length; i++) {
61
+ var post = posts[i];
62
+
63
+ if (post.title === 'Home' && post.type == 'category') continue;
64
+
65
+ if (post.title.toLowerCase().indexOf(keyword) >= 0
66
+ || post.path.toLowerCase().indexOf(keyword) >= 0
67
+ || post.tags.toLowerCase().indexOf(keyword) >= 0){
68
+ searchResult.push(post);
69
+ }
70
+ }
71
+
72
+ if (searchResult.length === 0) {
73
+ $('#search-result').append(
74
+ '<li class="result-item"><span class="description">There is no search result.</span></li>'
75
+ );
76
+
77
+ return;
78
+ }
79
+
80
+ searchResult.sort(function (a, b) {
81
+ if (a.type == 'category') return 1;
82
+
83
+ return -1;
84
+ });
85
+
86
+ for (var i = 0; i < searchResult.length; i++) {
87
+ var highlighted_path = highlightKeyword(searchResult[i].path, keyword);
88
+
89
+ if (highlighted_path === '')
90
+ highlighted_path = "Home";
91
+
92
+ if (searchResult[i].type === 'post'){
93
+ var highlighted_title = highlightKeyword(searchResult[i].title, keyword);
94
+ var highlighted_tags = highlightKeyword(searchResult[i].tags, keyword);
95
+
96
+ if (highlighted_tags === '')
97
+ highlighted_tags = "none";
98
+
99
+ $('#search-result').append(
100
+ '<li class="result-item"><a href="' +
101
+ searchResult[i].url +
102
+ '"><table><thead><tr><th><svg class="ico-book"></svg></th><th>' + highlighted_title +
103
+ '</th></tr></thead><tbody><tr><td><svg class="ico-folder"></svg></td><td>' + highlighted_path +
104
+ '</td></tr><tr><td><svg class="ico-tags"></svg></td><td>' + highlighted_tags +
105
+ '</td></tr><tr><td><svg class="ico-calendar"></svg></td><td>' + searchResult[i].date +
106
+ '</td></tr></tbody></table></a></li>'
107
+ );
108
+ }
109
+ else {
110
+ $('#search-result').append(
111
+ '<li class="result-item"><a href="' +
112
+ searchResult[i].url +
113
+ '"><table><thead><tr><th><svg class="ico-folder"></svg></th><th>' + highlighted_path +
114
+ '</th></tr></thead></table></a></li>'
115
+ );
116
+ }
117
+ }
118
+ });
119
+
120
+ function highlightKeyword(txt, keyword) {
121
+ var index = txt.toLowerCase().lastIndexOf(keyword);
122
+
123
+ if (index >= 0) {
124
+ out = txt.substring(0, index) +
125
+ "<span class='highlight'>" +
126
+ txt.substring(index, index+keyword.length) +
127
+ "</span>" +
128
+ txt.substring(index + keyword.length);
129
+ return out;
130
+ }
131
+
132
+ return txt;
133
+ }
134
+
135
+ {% if page_type == "post" %}
136
+ displayRelatedPosts(posts);
137
+ {% endif %}
138
+
139
+ function displayRelatedPosts(pages){
140
+ const refBox = document.getElementById('related-box');
141
+
142
+ if (!refBox) return;
143
+
144
+ var relatedPosts = [];
145
+ var currPost = pages.find(obj => {return obj.url === location.pathname});
146
+
147
+ let currTags = currPost.tags.split(', ');
148
+ let currCategory = currPost.path.split(' > ').pop();
149
+
150
+ for (var i = 0; i < pages.length; i++) {
151
+ let page = pages[i];
152
+
153
+ if (page.type === 'category') continue;
154
+
155
+ if (page.title === currPost.title) continue;
156
+
157
+ let tags = page.tags.split(', ');
158
+ let category = page.path.split(' > ').pop();
159
+ let correlationScore = 0;
160
+
161
+ for (var j = 0; j < currTags.length; j++){
162
+ if (tags.indexOf(currTags[j]) != -1) correlationScore += 1;
163
+ }
164
+
165
+ if (category === currCategory) correlationScore += 1;
166
+
167
+ if (correlationScore == 0) continue;
168
+
169
+ relatedPosts.push({
170
+ 'title': page.title,
171
+ 'date': page.date,
172
+ 'category': category,
173
+ 'url': page.url,
174
+ 'thumbnail': page.image,
175
+ 'score': correlationScore
176
+ });
177
+ }
178
+
179
+ relatedPosts.sort(function (a, b) {
180
+ if(a.hasOwnProperty('score')){
181
+ return b.score - a.score;
182
+ }
183
+ });
184
+
185
+ if (relatedPosts.length == 0){
186
+ $('#related-box').hide();
187
+ return;
188
+ }
189
+
190
+ for (var i = 0; i < Math.min(relatedPosts.length, 6); i++){
191
+ let post = relatedPosts[i];
192
+ let date = '-';
193
+ let category = 'No category';
194
+
195
+ if (post.date !== '1900-01-01'){
196
+ date = new Date(post.date);
197
+ date = date.toLocaleString('en-US', {day: 'numeric', month:'long', year:'numeric'});
198
+ }
199
+
200
+ if (post.category !== '') category = post.category;
201
+
202
+ if (post.thumbnail === ''){
203
+ post.thumbnail = "/assets/img/thumbnail/empty.jpg";
204
+ }
205
+
206
+ $('#related-posts').append(
207
+ '<li class="related-item"><a href="' + post.url +
208
+ '"><img src="' + post.thumbnail +
209
+ '"/><p class="category">' + category +
210
+ '</p><p class="title">' + post.title +
211
+ '</p><p class="date">' + date +
212
+ '</p></a></li>'
213
+ );
214
+ }
215
+ }
216
+ */
217
+ </script>
@@ -1,7 +1,14 @@
1
+ {%- assign page_tree = page.path | remove_first: "_pages/" | split: "/" -%}
2
+ {%- assign page_level = page_tree.size -%}
3
+ {% if page_tree.last == "index.md" %}
4
+ {%- assign page_type = "category" -%}
5
+ {% else %}
6
+ {%- assign page_type = "post" -%}
7
+ {% endif %}
1
8
  <div class="sidebar sidebar-left">
2
9
  <div class="side-banner">
3
10
  <h1 class="site-name">
4
- <a href="/"><span class="highlight">example.com</span></a>
11
+ <a href="/"><mark class="highlight">example.com</mark></a>
5
12
  <button id="btn-brightness" aria-label="brightness-button">
6
13
  <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
14
  <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>