coppermind 0.1.2 → 2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +22 -0
- data/README.md +3 -0
- data/_config.yml +45 -0
- data/_includes/archive-by-tagories.html +71 -0
- data/_includes/archive-by-years.html +32 -0
- data/_includes/back-to-top.html +6 -0
- data/_includes/custom-head.html +6 -0
- data/_includes/disqus.html +17 -0
- data/_includes/footer.html +39 -0
- data/_includes/google-analytics.html +9 -0
- data/_includes/head.html +13 -0
- data/_includes/header.html +20 -0
- data/_includes/mathjax.html +2 -0
- data/_layouts/archive.html +15 -0
- data/_layouts/default.html +23 -0
- data/_layouts/home.html +44 -0
- data/_layouts/page.html +8 -0
- data/_layouts/post.html +86 -0
- data/_sass/monophase/_base.scss +128 -0
- data/_sass/monophase/_highlight-dark.scss +91 -0
- data/_sass/monophase/_highlight-light.scss +217 -0
- data/_sass/monophase/_layout.scss +359 -0
- data/_sass/monophase/_predefined.scss +59 -0
- data/_sass/monophase/_variables.scss +54 -0
- data/_sass/monophase/main.scss +9 -0
- data/assets/monophase/styles.scss +3 -0
- data/assets/normalize.css +349 -0
- data/assets/open-color.css +343 -0
- metadata +38 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d85311b5f847dd20ebc63db72f8efc2525074715d54ebf76d1d9b1732af17303
|
4
|
+
data.tar.gz: 1f0b0cc4e492500878c5bafff2146ea220719c3ebd2753e78117e63fba0cc546
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6223994aba02357d888488e8152040b796c5d2e819b5633a66013bcb8410415b965724f6fe9df87ca972b943200e6e3ff1726ea0a2d064e2eb7ea03d38c12545
|
7
|
+
data.tar.gz: da4614c409421179969f7e37a360b1c698e620038aae0100280eaf40882ebe04c846ca558ed266141913e803577101d3a3bf6decf9f66426e7d189dc5a9f2331
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2021 Jesse Williamson
|
4
|
+
Copyright (c) 2021 Song-Zi Vong
|
5
|
+
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
8
|
+
in the Software without restriction, including without limitation the rights
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
11
|
+
furnished to do so, subject to the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be included in
|
14
|
+
all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
THE SOFTWARE.
|
data/README.md
ADDED
data/_config.yml
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# Welcome to Jekyll!
|
2
|
+
#
|
3
|
+
# This config file is meant for settings that affect your whole blog, values
|
4
|
+
# which you are expected to set up once and rarely edit after that. If you find
|
5
|
+
# yourself editing this file very often, consider using Jekyll's data files
|
6
|
+
# feature for the data you need to update frequently.
|
7
|
+
#
|
8
|
+
# For technical reasons, this file is *NOT* reloaded automatically when you use
|
9
|
+
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
|
10
|
+
|
11
|
+
# Site settings
|
12
|
+
# These are used to personalize your new site. If you look in the HTML files,
|
13
|
+
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
|
14
|
+
# You can create any custom variable you would like, and they will be accessible
|
15
|
+
# in the templates via {{ site.myvariable }}.
|
16
|
+
title: Coppermind
|
17
|
+
tagline:
|
18
|
+
author:
|
19
|
+
name: Jesse Williamson
|
20
|
+
|
21
|
+
# Build settings
|
22
|
+
markdown: kramdown
|
23
|
+
plugins:
|
24
|
+
- jekyll-feed
|
25
|
+
- jekyll-paginate
|
26
|
+
- jekyll-seo-tag
|
27
|
+
- kramdown-parser-gfm
|
28
|
+
|
29
|
+
paginate: 2
|
30
|
+
|
31
|
+
tags_path: /tags/
|
32
|
+
categories_path: /categories/
|
33
|
+
|
34
|
+
|
35
|
+
# Exclude from processing.
|
36
|
+
# The following items will not be processed, by default. Create a custom list
|
37
|
+
# to override the default setting.
|
38
|
+
# exclude:
|
39
|
+
# - Gemfile
|
40
|
+
# - Gemfile.lock
|
41
|
+
# - node_modules
|
42
|
+
# - vendor/bundle/
|
43
|
+
# - vendor/cache/
|
44
|
+
# - vendor/gems/
|
45
|
+
# - vendor/ruby/
|
@@ -0,0 +1,71 @@
|
|
1
|
+
{%- if page.type == 'categories' -%}
|
2
|
+
{%- assign taxonomies = site.categories -%}
|
3
|
+
{%- elsif page.type == 'tags' -%}
|
4
|
+
{%- assign taxonomies = site.tags -%}
|
5
|
+
{%- else -%}
|
6
|
+
{%- assign taxonomies = none -%}
|
7
|
+
{%- endif -%}
|
8
|
+
|
9
|
+
{%- assign max_count = 0 -%}
|
10
|
+
{%- for taxonomy in taxonomies -%}
|
11
|
+
{%- assign posts = taxonomy[1] -%}
|
12
|
+
{%- if posts.size > max_count -%}
|
13
|
+
{%- assign max_count = posts.size -%}
|
14
|
+
{%- endif -%}
|
15
|
+
{%- endfor -%}
|
16
|
+
|
17
|
+
<div class="taxonomies-wrapper">
|
18
|
+
<ul class="taxonomies">
|
19
|
+
{%- for i in (1..max_count) reversed -%}
|
20
|
+
{%- for taxonomy in taxonomies -%}
|
21
|
+
{%- assign taxonomy_name = taxonomy[0] -%}
|
22
|
+
{%- assign slugified_taxonomy_name = taxonomy_name | slugify -%}
|
23
|
+
{%- assign posts = taxonomy[1] -%}
|
24
|
+
{%- if posts.size == i -%}
|
25
|
+
<li>
|
26
|
+
{%- capture link -%}{{ page.permalink }}#{{ slugified_taxonomy_name }}{%- endcapture -%}
|
27
|
+
<a class="taxonomy" href="{{ link | relative_url }}">
|
28
|
+
<span>
|
29
|
+
{%- if page.type == 'tags' -%}
|
30
|
+
{{ slugified_taxonomy_name }}
|
31
|
+
{%- else -%}
|
32
|
+
{{ taxonomy_name }}
|
33
|
+
{%- endif -%}
|
34
|
+
</span>
|
35
|
+
<span class="taxonomy-count">{{ posts.size }}</span>
|
36
|
+
</a>
|
37
|
+
</li>
|
38
|
+
{%- endif -%}
|
39
|
+
{%- endfor -%}
|
40
|
+
{%- endfor -%}
|
41
|
+
</ul>
|
42
|
+
</div>
|
43
|
+
|
44
|
+
{%- for i in (1..max_count) reversed -%}
|
45
|
+
{%- for taxonomy in taxonomies -%}
|
46
|
+
{%- assign taxonomy_name = taxonomy[0] -%}
|
47
|
+
{%- assign slugified_taxonomy_name = taxonomy_name | slugify -%}
|
48
|
+
{%- assign posts = taxonomy[1] -%}
|
49
|
+
{%- if posts.size == i -%}
|
50
|
+
<h2 id="{{ slugified_taxonomy_name }}">
|
51
|
+
{%- if page.type == 'tags' -%}
|
52
|
+
{{ slugified_taxonomy_name }}
|
53
|
+
{%- else -%}
|
54
|
+
{{ taxonomy_name }}
|
55
|
+
{%- endif -%}
|
56
|
+
</h2>
|
57
|
+
<ul class="post-list-by-taxonomy">
|
58
|
+
{%- for post in posts -%}
|
59
|
+
<li>
|
60
|
+
<time datetime="{{ page.date | date_to_xmlschema }}">{{ post.date | date: "%Y-%m-%d" }}</time>
|
61
|
+
»
|
62
|
+
<a href="{{ post.url | relative_url }}">{{ post.title | escape }}</a>
|
63
|
+
</li>
|
64
|
+
{%- endfor -%}
|
65
|
+
</ul>
|
66
|
+
<a href="#" onclick="backToTop()" class="back-to-top">^</a>
|
67
|
+
{%- endif -%}
|
68
|
+
{%- endfor -%}
|
69
|
+
{%- endfor -%}
|
70
|
+
|
71
|
+
{% include back-to-top.html %}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
{% assign taxonomies = site.posts | group_by_exp: "post", "post.date | date: '%Y'" %}
|
2
|
+
|
3
|
+
<div class="taxonomies-wrapper">
|
4
|
+
<ul class="taxonomies">
|
5
|
+
{%- for taxonomy in taxonomies -%}
|
6
|
+
<li>
|
7
|
+
{%- capture link -%}{{ page.permalink }}#{{ taxonomy.name }}{%- endcapture -%}
|
8
|
+
<a class="taxonomy" href="{{ link | relative_url }}">
|
9
|
+
<span>{{ taxonomy.name }}</span>
|
10
|
+
<span class="taxonomy-count">{{ taxonomy.size }}</span>
|
11
|
+
</a>
|
12
|
+
</li>
|
13
|
+
{%- endfor -%}
|
14
|
+
</ul>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
{%- for taxonomy in taxonomies -%}
|
18
|
+
<h2 id="{{ taxonomy.name }}">{{ taxonomy.name }}</h2>
|
19
|
+
<ul class="post-list-by-taxonomy">
|
20
|
+
{%- assign posts = taxonomy.items -%}
|
21
|
+
{%- for post in posts -%}
|
22
|
+
<li>
|
23
|
+
<time datetime="{{ page.date | date_to_xmlschema }}">{{ post.date | date: "%Y-%m-%d" }}</time>
|
24
|
+
»
|
25
|
+
<a href="{{ post.url | relative_url }}">{{ post.title | escape }}</a>
|
26
|
+
</li>
|
27
|
+
{%- endfor -%}
|
28
|
+
</ul>
|
29
|
+
<a href="#" onclick="backToTop()" class="back-to-top">^</a>
|
30
|
+
{%- endfor -%}
|
31
|
+
|
32
|
+
{% include back-to-top.html %}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
{% comment %}
|
2
|
+
Placeholder to allow defining custom head, in principle, you can add anything here, e.g. favicons:
|
3
|
+
|
4
|
+
1. Head over to https://realfavicongenerator.net/ to add your own favicons.
|
5
|
+
2. Customize default _includes/custom-head.html in your source directory and insert the given code snippet.
|
6
|
+
{% endcomment %}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<div id="disqus_thread"></div>
|
2
|
+
<script>
|
3
|
+
var disqus_config = function () {
|
4
|
+
this.page.url = '{{ page.url | absolute_url }}';
|
5
|
+
this.page.identifier = '{{ page.url | absolute_url }}';
|
6
|
+
};
|
7
|
+
|
8
|
+
(function() {
|
9
|
+
var d = document, s = d.createElement('script');
|
10
|
+
|
11
|
+
s.src = 'https://{{ site.disqus }}.disqus.com/embed.js';
|
12
|
+
|
13
|
+
s.setAttribute('data-timestamp', +new Date());
|
14
|
+
(d.head || d.body).appendChild(s);
|
15
|
+
})();
|
16
|
+
</script>
|
17
|
+
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<footer class="footer">
|
2
|
+
<div class="footer-column">
|
3
|
+
<p>
|
4
|
+
<small>
|
5
|
+
©
|
6
|
+
{%- assign date_from = site.posts[-1].date | date_to_xmlschema -%}
|
7
|
+
{%- assign year_from = date_from | date: '%Y' -%}
|
8
|
+
{%- assign date_to = site.time | date_to_xmlschema -%}
|
9
|
+
{%- assign year_to = date_to | date: '%Y' -%}
|
10
|
+
{%- unless year_from == nil or year_from == year_to -%}
|
11
|
+
<time datetime="{{ date_from }}">{{ year_from }}</time>-
|
12
|
+
{%- endunless -%}
|
13
|
+
<time datetime="{{ date_to }}">{{ year_to }}</time>
|
14
|
+
{%- if site.author -%}
|
15
|
+
<a href="{{ site.author.url }}" target="_blank">{{ site.author.name }}</a>
|
16
|
+
{%- endif -%}
|
17
|
+
. All right reserved.
|
18
|
+
</small>
|
19
|
+
</p>
|
20
|
+
<p>
|
21
|
+
<small>
|
22
|
+
Powered by <a href="https://github.com/JustSoval/Coppermind" target="_blank">Coppermind</a>
|
23
|
+
</small>
|
24
|
+
</p>
|
25
|
+
</div>
|
26
|
+
{% if site.data.social %}
|
27
|
+
<div class="footer-column">
|
28
|
+
<ul class="social-icons">
|
29
|
+
{% for social in site.data.social %}
|
30
|
+
<li class="social-icon-item">
|
31
|
+
<a class="social-icon" href="{{ social.url }}" target="_blank">
|
32
|
+
<i class="{{ social.icon | default: 'fas fa-link' }}" title="{{ social.title }}"></i>
|
33
|
+
</a>
|
34
|
+
</li>
|
35
|
+
{% endfor %}
|
36
|
+
</ul>
|
37
|
+
</div>
|
38
|
+
{% endif %}
|
39
|
+
</footer>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<!-- Global site tag (gtag.js) - Google Analytics -->
|
2
|
+
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
|
3
|
+
<script>
|
4
|
+
window.dataLayer = window.dataLayer || [];
|
5
|
+
function gtag(){dataLayer.push(arguments);}
|
6
|
+
gtag('js', new Date());
|
7
|
+
|
8
|
+
gtag('config', '{{ site.google_analytics }}');
|
9
|
+
</script>
|
data/_includes/head.html
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
<head>
|
2
|
+
<meta charset="UTF-8">
|
3
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
4
|
+
<link rel="stylesheet" href="{{ 'assets/normalize.css' | relative_url }}">
|
5
|
+
<link rel="stylesheet" href="{{ 'assets/open-color.css' | relative_url }}">
|
6
|
+
<link rel="stylesheet" href="{{ 'assets/monophase/styles.css' | relative_url }}">
|
7
|
+
{% feed_meta %}
|
8
|
+
{% seo %}
|
9
|
+
|
10
|
+
<script async src="https://use.fontawesome.com/releases/v5.0.12/js/all.js"></script>
|
11
|
+
|
12
|
+
{% include custom-head.html %}
|
13
|
+
</head>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<header class="masthead">
|
2
|
+
<div class="masthead-title">
|
3
|
+
<a href="{{ '/' | relative_url }}" title="Home">{{ site.title }}</a>
|
4
|
+
<small class="tagline">{{ site.tagline }}</small>
|
5
|
+
</div>
|
6
|
+
|
7
|
+
{% if site.data.navigation %}
|
8
|
+
<nav class="nav">
|
9
|
+
<ul class="nav-list">
|
10
|
+
{% for item in site.data.navigation %}
|
11
|
+
<li class="nav-item">
|
12
|
+
<a href="{{ item.url | relative_url }}" class="{% if page.url == item.url %}current{% endif %}">
|
13
|
+
{{ item.title }}
|
14
|
+
</a>
|
15
|
+
</li>
|
16
|
+
{% endfor %}
|
17
|
+
</ul>
|
18
|
+
</nav>
|
19
|
+
{% endif %}
|
20
|
+
</header>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="{{ page.lang | default: site.lang | default: 'en' }}">
|
3
|
+
{% include head.html %}
|
4
|
+
<body>
|
5
|
+
<div class="container">
|
6
|
+
{% include header.html %}
|
7
|
+
|
8
|
+
<main>
|
9
|
+
{{ content }}
|
10
|
+
</main>
|
11
|
+
|
12
|
+
{% include footer.html %}
|
13
|
+
</div>
|
14
|
+
|
15
|
+
{% if page.math %}
|
16
|
+
{% include mathjax.html %}
|
17
|
+
{% endif %}
|
18
|
+
|
19
|
+
{% if jekyll.environment == 'production' and site.google_analytics %}
|
20
|
+
{% include google-analytics.html %}
|
21
|
+
{% endif %}
|
22
|
+
</body>
|
23
|
+
</html>
|
data/_layouts/home.html
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
<div class="posts">
|
6
|
+
{% assign posts = site.posts %}
|
7
|
+
{% if paginator %}
|
8
|
+
{% assign posts = paginator.posts %}
|
9
|
+
{% endif %}
|
10
|
+
{% for post in posts %}
|
11
|
+
<div class="post">
|
12
|
+
<h2 class="post-title">
|
13
|
+
<a href="{{ post.url | relative_url }}">
|
14
|
+
{{ post.title }}
|
15
|
+
</a>
|
16
|
+
</h2>
|
17
|
+
|
18
|
+
<time datetime="{{ post.date | date_to_xmlschema }}" class="post-meta">{{ post.date | date_to_string }}</time>
|
19
|
+
|
20
|
+
<p class="post-excerpt">
|
21
|
+
{% if post.description %}
|
22
|
+
{{ post.description | strip_html }}
|
23
|
+
{% else %}
|
24
|
+
{{ post.excerpt | strip_html }}
|
25
|
+
{% endif %}
|
26
|
+
</p>
|
27
|
+
</div>
|
28
|
+
{% endfor %}
|
29
|
+
</div>
|
30
|
+
|
31
|
+
{% if paginator %}
|
32
|
+
<div class="pagination">
|
33
|
+
{% if paginator.next_page %}
|
34
|
+
<a class="pagination-item older" href="{{ paginator.next_page_path | relative_url }}">Older</a>
|
35
|
+
{% else %}
|
36
|
+
<span class="pagination-item older">Older</span>
|
37
|
+
{% endif %}
|
38
|
+
{% if paginator.previous_page %}
|
39
|
+
<a class="pagination-item newer" href="{{ paginator.previous_page_path | relative_url }}">Newer</a>
|
40
|
+
{% else %}
|
41
|
+
<span class="pagination-item newer">Newer</span>
|
42
|
+
{% endif %}
|
43
|
+
</div>
|
44
|
+
{% endif %}
|
data/_layouts/page.html
ADDED
data/_layouts/post.html
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
<article class="post">
|
6
|
+
<h1 class="post-title">{{ page.title }}</h1>
|
7
|
+
<div class="post-meta">
|
8
|
+
<time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
|
9
|
+
{{ page.date | date_to_string }}
|
10
|
+
</time>
|
11
|
+
{%- if page.last_modified_at -%}
|
12
|
+
<span> ~ </span>
|
13
|
+
{%- assign mdate = page.last_modified_at | date_to_xmlschema -%}
|
14
|
+
<time datetime="{{ mdate }}" itemprop="dateModified">
|
15
|
+
{{ mdate | date_to_string }}
|
16
|
+
</time>
|
17
|
+
{%- endif -%}
|
18
|
+
{%- if page.author -%}
|
19
|
+
<span> • </span>
|
20
|
+
{% for author in page.author %}
|
21
|
+
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
|
22
|
+
{{ author }}
|
23
|
+
</span>
|
24
|
+
{%- if forloop.last == false %}, {% endif -%}
|
25
|
+
{% endfor %}
|
26
|
+
{%- endif -%}
|
27
|
+
{% if page.categories.size > 0 %}
|
28
|
+
<span> • </span>
|
29
|
+
<span class="post-categories-section">
|
30
|
+
<i class="post-categories-icon fas fa-folder"></i>
|
31
|
+
<ul class="post-categories">
|
32
|
+
{%- for category in page.categories -%}
|
33
|
+
<li>
|
34
|
+
{% assign slugified_category = category | slugify %}
|
35
|
+
{%- if site.categories_path -%}
|
36
|
+
<a class="post-category" href="{{ site.categories_path | relative_url }}#{{ slugified_category }}">{{ category }}</a>
|
37
|
+
{%- else -%}
|
38
|
+
<span class="post-category">{{ category }}</span>
|
39
|
+
{%- endif -%}
|
40
|
+
</li>
|
41
|
+
{%- endfor -%}
|
42
|
+
</ul>
|
43
|
+
</span>
|
44
|
+
{% endif %}
|
45
|
+
{% if page.tags.size > 0 %}
|
46
|
+
<span> • </span>
|
47
|
+
<span class="post-tags-section">
|
48
|
+
<i class="post-tags-icon fas fa-tag"></i>
|
49
|
+
<ul class="post-tags">
|
50
|
+
{%- for tag in page.tags -%}
|
51
|
+
<li>
|
52
|
+
{% assign slugified_tag = tag | slugify %}
|
53
|
+
{%- if site.tags_path -%}
|
54
|
+
<a class="post-tag" href="{{ site.tags_path | relative_url }}#{{ slugified_tag }}">{{ slugified_tag }}</a>
|
55
|
+
{%- else -%}
|
56
|
+
<span class="post-tag">{{ slugified_tag }}</span>
|
57
|
+
{%- endif -%}
|
58
|
+
</li>
|
59
|
+
{%- endfor -%}
|
60
|
+
</ul>
|
61
|
+
</span>
|
62
|
+
{% endif %}
|
63
|
+
</div>
|
64
|
+
|
65
|
+
{{ content }}
|
66
|
+
|
67
|
+
{% if jekyll.environment == "production" and site.disqus and page.comments != false %}
|
68
|
+
{% include disqus.html %}
|
69
|
+
{% endif %}
|
70
|
+
</article>
|
71
|
+
|
72
|
+
{% if site.related_posts != empty %}
|
73
|
+
<aside class="related">
|
74
|
+
<h2 class="related-title">Related posts</h2>
|
75
|
+
<ul class="related-posts">
|
76
|
+
{% for post in site.related_posts limit:3 %}
|
77
|
+
<li>
|
78
|
+
<a href="{{ post.url | relative_url }}">
|
79
|
+
{{ post.title }}
|
80
|
+
</a>
|
81
|
+
<small><time datetime="{{ post.date | date_to_xmlschema }}">{{ post.date | date_to_string }}</time></small>
|
82
|
+
</li>
|
83
|
+
{% endfor %}
|
84
|
+
</ul>
|
85
|
+
</aside>
|
86
|
+
{% endif %}
|
@@ -0,0 +1,128 @@
|
|
1
|
+
* {
|
2
|
+
box-sizing: border-box;
|
3
|
+
}
|
4
|
+
|
5
|
+
body {
|
6
|
+
color: var(--body-color);
|
7
|
+
background-color: var(--body-bg-color);
|
8
|
+
font-family: var(--body-font-family);
|
9
|
+
font-size: var(--body-font-size);
|
10
|
+
line-height: var(--body-line-height);
|
11
|
+
}
|
12
|
+
|
13
|
+
a {
|
14
|
+
color: var(--link-color);
|
15
|
+
text-decoration: none;
|
16
|
+
|
17
|
+
&:hover,
|
18
|
+
&:focus {
|
19
|
+
color: var(--link-hover-color);
|
20
|
+
text-decoration: underline;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
p {
|
25
|
+
margin-top: 0;
|
26
|
+
margin-bottom: var(--spacer);
|
27
|
+
}
|
28
|
+
|
29
|
+
ul, ol, dl {
|
30
|
+
margin-top: 0;
|
31
|
+
margin-bottom: var(--spacer);
|
32
|
+
}
|
33
|
+
|
34
|
+
blockquote {
|
35
|
+
padding: 0 var(--spacer);
|
36
|
+
margin: 0 0 var(--spacer) 0;
|
37
|
+
border-left: .25em solid var(--border-color);
|
38
|
+
opacity: .65;
|
39
|
+
}
|
40
|
+
|
41
|
+
figure {
|
42
|
+
margin: 0;
|
43
|
+
}
|
44
|
+
|
45
|
+
figcaption {
|
46
|
+
margin-bottom: var(--spacer);
|
47
|
+
font-size: .85em;
|
48
|
+
}
|
49
|
+
|
50
|
+
img {
|
51
|
+
display: block;
|
52
|
+
max-width: 100%;
|
53
|
+
margin-top: 0;
|
54
|
+
margin-bottom: var(--spacer);
|
55
|
+
border-radius: var(--border-radius);
|
56
|
+
}
|
57
|
+
|
58
|
+
code,
|
59
|
+
pre {
|
60
|
+
font-family: var(--code-font-family);
|
61
|
+
}
|
62
|
+
|
63
|
+
code {
|
64
|
+
padding: .1em .25em;
|
65
|
+
background-color: var(--code-bg-color);
|
66
|
+
border-radius: var(--border-radius);
|
67
|
+
}
|
68
|
+
|
69
|
+
pre {
|
70
|
+
display: block;
|
71
|
+
overflow: auto;
|
72
|
+
padding: var(--spacer);
|
73
|
+
margin: var(--spacer) 0;
|
74
|
+
|
75
|
+
code {
|
76
|
+
padding: 0;
|
77
|
+
background-color: inherit;
|
78
|
+
}
|
79
|
+
}
|
80
|
+
|
81
|
+
table {
|
82
|
+
margin-top: 0;
|
83
|
+
margin-bottom: var(--spacer);
|
84
|
+
width: 100%;
|
85
|
+
border: 0 solid var(--border-color);
|
86
|
+
border-collapse: collapse;
|
87
|
+
}
|
88
|
+
|
89
|
+
td,
|
90
|
+
th {
|
91
|
+
padding: .25em .5em;
|
92
|
+
border-color: inherit;
|
93
|
+
border-style: solid;
|
94
|
+
border-width: 0;
|
95
|
+
border-bottom-width: 1px;
|
96
|
+
}
|
97
|
+
|
98
|
+
th {
|
99
|
+
text-align: left;
|
100
|
+
}
|
101
|
+
|
102
|
+
thead th {
|
103
|
+
border-bottom-color: currentColor;
|
104
|
+
}
|
105
|
+
|
106
|
+
mark {
|
107
|
+
padding: .15em;
|
108
|
+
border-radius: var(--border-radius);
|
109
|
+
color: var(--body-bg-color);
|
110
|
+
background-color: var(--info-color);
|
111
|
+
}
|
112
|
+
|
113
|
+
hr {
|
114
|
+
position: relative;
|
115
|
+
margin: var(--spacer-2) 0;
|
116
|
+
border: 0;
|
117
|
+
border-top: 1px solid var(--border-color);
|
118
|
+
}
|
119
|
+
|
120
|
+
abbr {
|
121
|
+
font-weight: bold;
|
122
|
+
text-transform: uppercase;
|
123
|
+
|
124
|
+
&[title] {
|
125
|
+
cursor: help;
|
126
|
+
border-bottom: 1px dotted var(--border-color);
|
127
|
+
}
|
128
|
+
}
|