8 Commits
zola ... master

Author SHA1 Message Date
d4b7226871 Removed shit.
All checks were successful
Release / docker_build (push) Successful in 1m0s
Release / deploy_helm (push) Successful in 10s
2025-07-25 19:27:20 +02:00
5f4684d0cd Updated zola.
All checks were successful
Release / docker_build (push) Successful in 37s
Release / deploy_helm (push) Successful in 12s
2025-07-25 19:17:20 +02:00
54dd3042f8 Fixed code styles and preview images.
All checks were successful
Release / docker_build (push) Successful in 38s
Release / deploy_helm (push) Successful in 13s
2025-07-25 19:06:54 +02:00
8eaba16410 Fixed styles for code.
All checks were successful
Release / docker_build (push) Successful in 38s
Release / deploy_helm (push) Successful in 13s
2025-07-25 17:36:15 +02:00
c921e6cc95 Added previews.
All checks were successful
Release / docker_build (push) Successful in 38s
Release / deploy_helm (push) Successful in 13s
2025-07-25 17:09:07 +02:00
4eba454a90 Fixed theme.
All checks were successful
Release / docker_build (push) Successful in 38s
Release / deploy_helm (push) Successful in 11s
2025-07-25 09:08:30 +02:00
f80a0c8634 Removed submodule. 2025-07-25 00:16:44 +02:00
ef8d91e6e3 Merge pull request 'zola' (#3) from zola into master
Some checks failed
Release / docker_build (push) Failing after 43s
Release / deploy_helm (push) Has been skipped
Reviewed-on: #3
2025-07-24 21:01:51 +00:00
31 changed files with 2350 additions and 11 deletions

View File

@ -1,4 +1,4 @@
FROM ghcr.io/getzola/zola:v0.17.1 AS zola
FROM ghcr.io/getzola/zola:v0.21.0 AS zola
COPY . /project
WORKDIR /project

View File

@ -1,9 +1,9 @@
# The URL the site will be built for
title = "s3rius"
title = "s3rius blog"
base_url = "https://s3rius.blog"
theme = "hermit_zola"
compile_sass = true
minify_html = true
minify_html = false
build_search_index = true
generate_sitemap = true
@ -16,6 +16,7 @@ render_emojis = true
smart_punctuation = true
[extra]
preview_image = "preview.png"
home_subtitle = "Notes on writing unmaintainable software"
footer_copyright = ' &#183; <a href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank" rel="noopener">CC BY-NC 4.0</a>'
@ -32,11 +33,6 @@ hermit_social = [
]
[extra.highlightjs]
enable = true
clipboard = true
theme = "https://unpkg.com/nord-highlightjs@0.1.0/dist/nord.css"
[extra.author]
name = "Pavel Kirilin"
email = "s3rius@le-memese.com"

View File

@ -2,8 +2,6 @@
title = "About Me"
+++
# Who Am I?
My name is Pavel Kirilin, and my nickname is [@s3rius](https://github.com/s3rius). I am a backend developer with diverse experience. Currently, I hold the position of CTO at [Intree](https://www.intree.com/).
In my free time, I enjoy experimenting with various technologies and building new projects. You can find some of my work on [GitHub](https://github.com/s3rius) or on my self-hosted Gitea instance at [gitea.le-memese.com](https://gitea.le-memese.com/s3rius).

View File

@ -2,6 +2,9 @@
title = "Intro to kubernetes"
weight = 0
date = "2025-07-22"
[extra]
preview_image = "posts/kube-intro/preview.png"
+++
![Intro](./imgs/intro.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

BIN
static/preview.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Submodule themes/hermit_zola deleted from 94faef2295

1
themes/hermit_zola/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
public/

View File

@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2019 VersBinarii
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -0,0 +1,82 @@
[![Build Status](https://travis-ci.org/VersBinarii/hermit_zola.svg?branch=master)](https://travis-ci.org/VersBinarii/hermit_zola)
# Hermit
> this is a port of the [Hermit theme](https://github.com/Track3/hermit) for [Zola](https://www.getzola.org/)
Hermit is a minimal & fast Zola theme for bloggers.
![screenshot](screenshot.png)
[View demo](https://versbinarii.gitlab.io/blog/)
## Installation
First download the theme to your `themes` directory:
```bash
$ cd themes
$ git clone https://github.com/VersBinarii/hermit_zola
```
and then enable it in your `config.toml`:
```toml
theme = "hermit_zola"
```
## Configuration
```toml
[extra]
home_subtitle = "Some profound and catchy statement"
footer_copyright = ' &#183; <a href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank" rel="noopener">CC BY-NC 4.0</a>'
hermit_menu = [
{ link = "/posts", name = "Posts" },
{ link = "/about", name = "About" }
]
hermit_social = [
{ name = "twitter", link = "https://twitter.com" },
{ name = "github", link = "https://github.com" },
{ name = "email", link = "mailto:author@domain.com" }
]
[extra.highlightjs]
enable = true
clipboard = true
theme = "vs2015"
[extra.disqus]
enable = false
# Take this from your Disqus account
shortname = "my-supa-dupa-blog"
[extra.author]
name = "The Author"
email = "author@domain.com"
[extra.google_analytics]
enable = false
id = "UA-4XXXXXXX-X"
```
### Table of content
Table of content can be enabled by adding
```
+++
[extra]
toc=true
+++
```
to the page front matter. Icon will then appear above the page title that will
allow to toggle the ToC.
## License
[MIT](LICENSE)
Thanks to [Track3](https://github.com/Track3) for creating the original!

View File

@ -0,0 +1 @@
theme: jekyll-theme-midnight

View File

@ -0,0 +1,108 @@
# Base URL of the site, the only required config argument
base_url = "https://example.com/blog"
# Used in RSS by default
title = "Hermit Zola"
description = "My blog"
# The default language, used in RSS
default_language = "en"
# Theme name to use
# theme = ""
# Highlight all code blocks found
# Or enable the highlight.js in the 'extra' config section
highlight_code = false
# Which theme to use for the code highlighting.
# See below for list of accepted values
highlight_theme = "agola-dark"
# Whether to generate a RSS feed automatically
generate_feed = true
feed_filename = "rss.xml"
# The number of articles to include in the RSS feed. Will include all items if
# not set (the default).
# rss_limit = 20
# The taxonomies to be rendered for that site and their configuration
# Example:
# taxonomies = [
# {name = "tags", rss = true}, # each tag will have its own RSS feed
# {name = "categories", paginate_by = 5}, # 5 items per page for a term
# {name = "authors"}, # Basic definition: no RSS or pagination
# ]
#
taxonomies = [
{name = "tags", rss = true}
]
# Whether to compile the Sass files found in the `sass` directory
compile_sass = true
# Whether to build a search index out of the pages and section
# content for the `default_language`
build_search_index = false
# A list of glob patterns specifying asset files to ignore when
# processing the content directory.
# Defaults to none, which means all asset files are copied over to the public folder.
# Example:
# ignored_content = ["*.{graphml,xlsx}", "temp.*"]
ignored_content = []
# A list of directories to search for additional `.sublime-syntax` files in.
extra_syntaxes = []
# Optional translation object. The key if present should be a language code
[translations]
# You can put any kind of data in there and it
# will be accessible in all templates
[extra]
home_subtitle = "Some profound and catchy statement"
footer_copyright = ' &#183; <a href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank" rel="noopener">CC BY-NC 4.0</a>'
hermit_menu = [
{ link = "/posts", name = "Posts" },
{ link = "/about", name = "About" }
]
hermit_social = [
{ name = "twitter", link = "https://twitter.com" },
{ name = "github", link = "https://github.com" },
{ name = "email", link = "mailto:author@domain.com" }
]
# You can use highlight.js for code highlighting if you dont like the
# default one
[extra.highlightjs]
enable = true
clipboard = true
theme = "railscasts"
[extra.footer]
index = true
[extra.disqus]
enable = false
# Take this from your Disqus account
shortname = "my-supa-dupa-blog"
# Comments can be disabled per page by setting:
# [extra]
# disable_comments = true
#
# in the posts front-matter
[extra.author]
name = "The Author"
email = "author@domain.com"
[extra.google_analytics]
enable = false
id = "UA-4XXXXXXX-X"

View File

@ -0,0 +1,11 @@
@charset "UTF-8";
/*!
* animate.css -https://daneden.github.io/animate.css/
* Version - 3.7.0
* Licensed under the MIT license - http://opensource.org/licenses/MIT
*
* Copyright (c) 2018 Daniel Eden
*/
@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.delay-1s{-webkit-animation-delay:1s;animation-delay:1s}.animated.delay-2s{-webkit-animation-delay:2s;animation-delay:2s}.animated.delay-3s{-webkit-animation-delay:3s;animation-delay:3s}.animated.delay-4s{-webkit-animation-delay:4s;animation-delay:4s}.animated.delay-5s{-webkit-animation-delay:5s;animation-delay:5s}.animated.fast{-webkit-animation-duration:.8s;animation-duration:.8s}.animated.faster{-webkit-animation-duration:.5s;animation-duration:.5s}.animated.slow{-webkit-animation-duration:2s;animation-duration:2s}.animated.slower{-webkit-animation-duration:3s;animation-duration:3s}@media (prefers-reduced-motion){.animated{-webkit-animation:unset!important;animation:unset!important;-webkit-transition:none!important;transition:none!important}}

View File

@ -0,0 +1,60 @@
/* From: https://css.gg/app */
.gg-check {
box-sizing: border-box;
position: relative;
display: block;
transform: scale(var(--ggs, 1));
width: 22px;
height: 22px;
border: 2px solid transparent;
border-radius: 100px;
}
.gg-check::after {
content: "";
display: block;
box-sizing: border-box;
position: absolute;
left: 3px;
top: -1px;
width: 6px;
height: 10px;
border-width: 0 2px 2px 0;
border-style: solid;
transform-origin: bottom left;
transform: rotate(45deg);
}
.gg-clipboard {
box-sizing: border-box;
position: relative;
display: block;
transform: scale(var(--ggs, 1));
width: 18px;
height: 18px;
border: 2px solid;
border-radius: 2px;
}
.gg-clipboard::after,
.gg-clipboard::before {
content: "";
display: block;
box-sizing: border-box;
position: absolute;
border-radius: 2px;
width: 10px;
left: 2px;
}
.gg-clipboard::before {
border: 2px solid;
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
top: -2px;
height: 6px;
}
.gg-clipboard::after {
height: 2px;
background: currentColor;
box-shadow: 0 -4px 0 0;
bottom: 2px;
}

View File

@ -0,0 +1,341 @@
/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
line-height: 1.15; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers.
*/
body {
margin: 0;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* Remove the gray background on active links in IE 10.
*/
a {
background-color: transparent;
}
/**
* 1. Remove the bottom border in Chrome 57-
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Remove the border on images inside links in IE 10.
*/
img {
border-style: none;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers.
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input { /* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
* Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
vertical-align: baseline;
}
/**
* Remove the default vertical scrollbar in IE 10+.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10.
* 2. Remove the padding in IE 10.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in Edge, IE 10+, and Firefox.
*/
details {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Misc
========================================================================== */
/**
* Add the correct display in IE 10+.
*/
template {
display: none;
}
/**
* Add the correct display in IE 10.
*/
[hidden] {
display: none;
}

View File

@ -0,0 +1,37 @@
// Colors
//
$theme: #018574;
$text: #c6cddb;
$light-grey: #494f5c;
$dark-grey: #3b3e48;
$highlight-grey: #7d828a;
$midnightblue: #31333d;
// Fonts
//
$fonts: "Trebuchet MS", Verdana, "Verdana Ref", "Segoe UI", Candara,
"Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Tahoma, sans-serif;
$code-fonts: Consolas, "Andale Mono WT", "Andale Mono", Menlo, Monaco,
"Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New",
Courier, "YaHei Consolas Hybrid", monospace, "Segoe UI Emoji", "PingFang SC",
"Microsoft YaHei";
// Mixins
//
@mixin dimmed {
opacity: 0.6;
}
@mixin aTag {
a {
word-break: break-all;
border: none;
box-shadow: inset 0 -4px 0 $theme;
transition-property: background-color;
&:hover {
background-color: $theme;
}
}
}

View File

@ -0,0 +1,59 @@
/* Background */ .chroma { color: #eee; background-color: $midnightblue }
/* Error */ .chroma .err { color: #960050; background-color: #1e0010 }
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; }
/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc }
/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; }
/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; }
/* Keyword */ .chroma .k { color: #66d9ef }
/* KeywordConstant */ .chroma .kc { color: #66d9ef }
/* KeywordDeclaration */ .chroma .kd { color: #66d9ef }
/* KeywordNamespace */ .chroma .kn { color: #f92672 }
/* KeywordPseudo */ .chroma .kp { color: #66d9ef }
/* KeywordReserved */ .chroma .kr { color: #66d9ef }
/* KeywordType */ .chroma .kt { color: #66d9ef }
/* NameAttribute */ .chroma .na { color: #a6e22e }
/* NameClass */ .chroma .nc { color: #a6e22e }
/* NameConstant */ .chroma .no { color: #66d9ef }
/* NameDecorator */ .chroma .nd { color: #a6e22e }
/* NameException */ .chroma .ne { color: #a6e22e }
/* NameFunction */ .chroma .nf { color: #a6e22e }
/* NameOther */ .chroma .nx { color: #a6e22e }
/* NameTag */ .chroma .nt { color: #f92672 }
/* Literal */ .chroma .l { color: #ae81ff }
/* LiteralDate */ .chroma .ld { color: #e6db74 }
/* LiteralString */ .chroma .s { color: #e6db74 }
/* LiteralStringAffix */ .chroma .sa { color: #e6db74 }
/* LiteralStringBacktick */ .chroma .sb { color: #e6db74 }
/* LiteralStringChar */ .chroma .sc { color: #e6db74 }
/* LiteralStringDelimiter */ .chroma .dl { color: #e6db74 }
/* LiteralStringDoc */ .chroma .sd { color: #e6db74 }
/* LiteralStringDouble */ .chroma .s2 { color: #e6db74 }
/* LiteralStringEscape */ .chroma .se { color: #ae81ff }
/* LiteralStringHeredoc */ .chroma .sh { color: #e6db74 }
/* LiteralStringInterpol */ .chroma .si { color: #e6db74 }
/* LiteralStringOther */ .chroma .sx { color: #e6db74 }
/* LiteralStringRegex */ .chroma .sr { color: #e6db74 }
/* LiteralStringSingle */ .chroma .s1 { color: #e6db74 }
/* LiteralStringSymbol */ .chroma .ss { color: #e6db74 }
/* LiteralNumber */ .chroma .m { color: #ae81ff }
/* LiteralNumberBin */ .chroma .mb { color: #ae81ff }
/* LiteralNumberFloat */ .chroma .mf { color: #ae81ff }
/* LiteralNumberHex */ .chroma .mh { color: #ae81ff }
/* LiteralNumberInteger */ .chroma .mi { color: #ae81ff }
/* LiteralNumberIntegerLong */ .chroma .il { color: #ae81ff }
/* LiteralNumberOct */ .chroma .mo { color: #ae81ff }
/* Operator */ .chroma .o { color: #f92672 }
/* OperatorWord */ .chroma .ow { color: #f92672 }
/* Comment */ .chroma .c { color: #75715e }
/* CommentHashbang */ .chroma .ch { color: #75715e }
/* CommentMultiline */ .chroma .cm { color: #75715e }
/* CommentSingle */ .chroma .c1 { color: #75715e }
/* CommentSpecial */ .chroma .cs { color: #75715e }
/* CommentPreproc */ .chroma .cp { color: #75715e }
/* CommentPreprocFile */ .chroma .cpf { color: #75715e }
/* GenericDeleted */ .chroma .gd { color: #f92672 }
/* GenericEmph */ .chroma .ge { font-style: italic }
/* GenericInserted */ .chroma .gi { color: #a6e22e }
/* GenericStrong */ .chroma .gs { font-weight: bold }
/* GenericSubheading */ .chroma .gu { color: #75715e }

View File

@ -0,0 +1,868 @@
@import "predefined.scss";
@import "normalize.scss";
@import "syntax.scss";
@import "animate.scss";
@import "icons.scss";
/* Webkit Scrollbar Customize */
::-webkit-scrollbar {
width: 8px;
height: 8px;
background: $midnightblue;
}
::-webkit-scrollbar-thumb {
background: #888;
&:hover {
background: $text;
}
}
html {
background: $light-grey;
line-height: 1.6;
letter-spacing: 0.06em;
}
body,
button,
input,
select,
textarea {
color: $text;
font-family: $fonts;
}
pre,
code,
pre tt {
font-family: $code-fonts;
}
pre {
max-height: 40em;
padding: 0em;
overflow: auto;
overflow-y: auto;
overflow-x: scroll;
font-size: 0.9em;
line-height: 1.5;
letter-spacing: normal;
white-space: pre-wrap;
word-wrap: break-word;
color: #eee;
border-radius: 4px;
// -webkit-overflow-scrolling: touch;
.code-badge {
position: absolute !important;
right: 0;
top: 0;
z-index: 10;
.code-badge-language {
display: none;
}
}
code {
display: block;
padding: 0.7em;
margin: 0;
table {
td {
padding: 0;
border: none;
word-break: keep-all;
padding-right: 0.5em;
}
}
}
code[data-name] {
position: relative;
padding-top: 2em !important;
&::before {
content: attr(data-name);
position: absolute;
font-weight: bold;
top: 0;
left: 0;
padding-left: 0.7em;
padding-top: 0.2em;
width: 100%;
background-color: $highlight-grey;
z-index: 1;
color: $text;
}
}
}
code {
color: #eee;
border-radius: 3px;
padding: 0 3px;
margin: 0 4px;
word-break: break-all;
letter-spacing: normal;
}
blockquote {
border-left: 0.25em solid;
margin: 1em;
padding: 0 1em;
font-style: italic;
cite {
font-weight: bold;
font-style: normal;
&::before {
content: "—— ";
}
}
}
a {
color: $text;
text-decoration: none;
border: none;
transition-property: color;
transition-duration: 0.4s;
transition-timing-function: ease-out;
&:hover {
color: #fff;
}
&:focus {
outline: none;
}
}
hr {
opacity: 0.2;
border-width: 0 0 5px 0;
border-style: dashed;
background: transparent;
width: 50%;
margin: 1.8em auto;
}
table {
border-collapse: collapse;
border-spacing: 0;
empty-cells: show;
width: 100%;
max-width: 100%;
th,
td {
padding: 1.5%;
border: 1px solid;
}
th {
font-weight: 700;
vertical-align: bottom;
}
}
.section-inner {
margin: 0 auto;
max-width: 1200px;
width: 93%;
}
.thin {
max-width: 720px;
margin: auto;
}
.feather {
display: inline-block;
vertical-align: -0.125em;
width: 1em;
height: 1em;
}
.desktop-only,
.desktop-only-ib {
display: none;
}
// Accessibility
//
.screen-reader-text {
border: 0;
clip: rect(1px, 1px, 1px, 1px);
clip-path: inset(50%);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute !important;
width: 1px;
word-wrap: normal !important;
}
.screen-reader-text:focus {
background-color: #f1f1f1;
border-radius: 3px;
box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
clip: auto !important;
clip-path: none;
color: #21759b;
display: block;
font-size: 14px;
font-size: 0.875rem;
font-weight: bold;
height: auto;
left: 5px;
line-height: normal;
padding: 15px 23px 14px;
text-decoration: none;
top: 5px;
width: auto;
z-index: 100000;
}
// Header & Footer
//
#site-header {
position: fixed;
z-index: 1;
bottom: 0;
width: 100%;
box-sizing: border-box;
box-shadow: -1px -2px 3px rgba(0, 0, 0, 0.45);
background-color: $dark-grey;
}
.hdr-wrapper {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.5em 0;
font-size: 1.2rem;
.site-branding {
display: inline-block;
margin-right: 0.8em;
font-size: 1.2em;
}
.site-nav {
display: inline-block;
font-size: 1.1em;
opacity: 0.8;
a {
margin-left: 0.8em;
}
}
}
.hdr-icons {
font-size: 1.2em;
}
.hdr-social {
display: inline-block;
margin-left: 0.6em;
& > a {
margin-left: 0.4em;
}
}
.hdr-btn {
border: none;
background: none;
padding: 0;
margin-left: 0.4em;
cursor: pointer;
}
#menu-btn {
display: none;
margin-left: 0.6em;
cursor: pointer;
}
#mobile-menu {
position: fixed;
bottom: 4.8em;
right: 1.5em;
display: none;
padding: 0.6em 1.8em;
z-index: 1;
box-sizing: border-box;
box-shadow: -1px -2px 3px 0px rgba(0, 0, 0, 0.45);
background-color: $dark-grey;
ul {
list-style: none;
margin: 0;
padding: 0;
line-height: 2;
font-size: 1.2em;
}
}
#site-footer {
text-align: center;
font-size: 0.9em;
margin-bottom: 96px;
margin-top: 64px;
p {
margin: 0;
}
}
// Spotlight
//
#spotlight {
display: flex;
height: 100vh;
flex-direction: column;
align-items: center;
justify-content: center;
max-width: 93%;
margin: auto;
font-size: 1.5rem;
&.error-404 {
flex-direction: row;
line-height: normal;
}
}
p.img-404 {
margin: 0;
svg {
width: 180px;
max-width: 100%;
height: auto;
}
}
.banner-404 {
margin-left: 2em;
h1 {
font-size: 3em;
margin: 0.5rem 0;
}
p {
margin-top: 0;
margin-bottom: 0.6em;
}
.btn-404 {
font-size: 0.8em;
a {
display: inline-block;
border: 2px solid $text;
border-radius: 5px;
padding: 5px;
transition-property: color, border-color;
word-break: break-all;
&:first-child {
margin-right: 1em;
}
&:hover {
border-color: #fff;
}
svg {
margin-right: 0.5em;
}
}
}
}
#home-center {
display: flex;
flex-grow: 1;
flex-direction: column;
justify-content: center;
}
#home-title {
margin: 0;
text-align: center;
}
#home-subtitle {
margin-top: 0;
margin-bottom: 1.5em;
text-align: center;
line-height: normal;
font-size: 0.7em;
font-style: italic;
opacity: 0.9;
}
#home-social {
font-size: 1.4em;
text-align: center;
opacity: 0.8;
a {
margin: 0 0.2em;
}
}
#home-nav {
opacity: 0.8;
a {
display: block;
text-align: center;
margin-top: 0.5em;
}
}
#home-footer {
text-align: center;
font-size: 0.6em;
line-height: normal;
@include dimmed;
p {
margin-top: 0;
}
}
// list.html
//
.posts-group {
display: flex;
margin-bottom: 1.9em;
line-height: normal;
.post-year {
padding-top: 6px;
margin-right: 1.8em;
font-size: 1.6em;
@include dimmed;
}
.posts-list {
flex-grow: 1;
margin: 0;
padding: 0;
list-style: none;
}
.post-item {
border-bottom: 1px $highlight-grey dashed;
a {
display: flex;
justify-content: space-between;
align-items: baseline;
padding: 12px 0;
}
}
.post-day {
flex-shrink: 0;
margin-left: 1em;
@include dimmed;
}
}
// single.html
//
.bg-img {
width: 100vw;
height: 100vh;
opacity: 0.03;
z-index: -1;
position: fixed;
top: 0;
background-attachment: fixed;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
transition: opacity 0.5s;
}
.show-bg-img {
z-index: 100;
opacity: 1;
cursor: pointer;
}
.post-header {
margin-top: 1.2em;
line-height: normal;
.post-meta {
font-size: 0.9em;
letter-spacing: normal;
@include dimmed;
}
h1 {
margin-top: 0.1em;
}
}
hr.post-end {
width: 50%;
margin-top: 1.6em;
margin-bottom: 0.8em;
margin-left: 0;
border-style: solid;
border-bottom-width: 4px;
}
.content {
text-align: justify;
text-justify: inter-ideograph; //For IE/Edge
@include aTag;
figure {
max-width: 100%;
height: auto;
margin: 0;
text-align: center;
p {
font-size: 0.8em;
font-style: italic;
@include dimmed;
}
}
figure.left {
float: left;
margin-right: 1.5em;
max-width: 50%;
}
figure.right {
float: right;
margin-left: 1.5em;
max-width: 50%;
}
figure.big {
max-width: 100vw;
}
img {
display: block;
max-width: 100%;
height: auto;
margin: auto;
border-radius: 4px;
}
ul,
ol {
padding: 0;
margin-left: 1.8em;
}
}
.footnote-definition {
font-size: 0.85em;
a {
box-shadow: none;
text-decoration: underline;
transition-property: color;
&:hover {
background: transparent;
}
&.footnote-return {
text-decoration: none;
}
}
ol {
line-height: 1.8;
}
p {
display: inline;
}
}
.footnote-ref a {
box-shadow: none;
text-decoration: none;
padding: 2px;
border-radius: 2px;
background-color: $midnightblue;
}
.post-info {
font-size: 0.8rem;
line-height: normal;
@include dimmed;
p {
margin: 0.8em 0;
}
a:hover {
border-bottom: 1px solid $theme;
}
svg {
margin-right: 0.8em;
}
.tag {
margin-right: 0.5em;
&::before {
content: "#";
}
}
}
#toc {
position: fixed;
left: 50%;
top: 0;
display: none;
}
.toc-title {
margin-left: 1em;
margin-bottom: 0.5em;
font-size: 0.8em;
font-weight: bold;
}
#TableOfContents {
font-size: 0.8em;
@include dimmed;
ul {
padding-left: 1em;
margin: 0;
}
& > ul {
list-style-type: none;
ul ul {
font-size: 0.9em;
}
}
a:hover {
border-bottom: $theme 1px solid;
}
}
.post-nav {
display: flex;
justify-content: space-between;
margin-top: 1.5em;
margin-bottom: 2.5em;
font-size: 1.2em;
a {
flex-basis: 50%;
flex-grow: 1;
}
.next-post {
text-align: left;
padding-right: 5px;
}
.prev-post {
text-align: right;
padding-left: 5px;
}
.post-nav-label {
font-size: 0.8em;
opacity: 0.8;
text-transform: uppercase;
}
}
// Media Queries
//
@media (min-width: 800px) {
.site-main {
margin-top: 3em;
}
hr.post-end {
width: 40%;
}
}
@media (min-width: 960px) {
.site-main {
margin-top: 6em;
}
}
@media (min-width: 1300px) {
.site-main {
margin-top: 8em;
}
.desktop-only,
#toc.show-toc {
display: block;
}
.desktop-only-ib {
display: inline-block;
}
figure.left {
margin-left: -240px;
p {
text-align: left;
}
}
figure.right {
margin-right: -240px;
p {
text-align: right;
}
}
figure.big {
width: 1200px;
margin-left: -240px;
}
hr.post-end {
width: 30%;
}
#toc {
top: 13em;
margin-left: 370px;
max-width: 220px;
}
}
@media (min-width: 1800px) {
.site-main {
margin-top: 10em;
}
.section-inner {
max-width: 1600px;
}
.thin {
max-width: 960px;
}
figure.left {
max-width: 75%;
margin-left: -320px;
}
figure.right {
max-width: 75%;
margin-right: -320px;
}
figure.big {
width: 1600px;
margin-left: -320px;
}
hr.post-end {
width: 30%;
}
#toc {
top: 15em;
margin-left: 490px;
max-width: 300px;
}
}
@media (max-width: 760px) {
.hide-in-mobile,
.site-nav.hide-in-mobile {
display: none;
}
#menu-btn {
display: inline-block;
}
.posts-group {
display: block;
.post-year {
margin: -6px 0 4px;
}
}
#spotlight.error-404 {
flex-direction: column;
text-align: center;
.banner-404 {
margin: 0;
}
}
}
@media (max-width: 520px) {
.content figure.left,
.content figure.right {
float: unset;
max-width: 100%;
margin: 0;
}
hr.post-end {
width: 60%;
}
#mobile-menu {
right: 1.2em;
}
}
.code-badge {
margin: 0.4em 0em;
}
.highlight-copy-btn {
margin-right: 7px;
float: right;
border: 0;
border-radius: 4px;
padding: 1px;
font-size: 0.7em;
line-height: 1.8;
color: #fff;
background-color: #777;
opacity: 0.6;
min-width: 55px;
text-align: center;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -0,0 +1,98 @@
/**
* Utils
*/
// Throttle
//
const throttle = (callback, limit) => {
let timeoutHandler = null;
return () => {
if (timeoutHandler == null) {
timeoutHandler = setTimeout(() => {
callback();
timeoutHandler = null;
}, limit);
}
};
};
// addEventListener Helper
//
const listen = (ele, e, callback) => {
if (document.querySelector(ele) !== null) {
document.querySelector(ele).addEventListener(e, callback);
}
};
/**
* Functions
*/
// Auto Hide Header
//
let header = document.getElementById('site-header');
let lastScrollPosition = window.pageYOffset;
const autoHideHeader = () => {
let currentScrollPosition = window.pageYOffset;
if (currentScrollPosition > lastScrollPosition) {
header.classList.remove('slideInUp');
header.classList.add('slideOutDown');
} else {
header.classList.remove('slideOutDown');
header.classList.add('slideInUp');
}
lastScrollPosition = currentScrollPosition;
};
// Mobile Menu Toggle
//
let mobileMenuVisible = false;
const toggleMobileMenu = () => {
let mobileMenu = document.getElementById('mobile-menu');
if (mobileMenuVisible == false) {
mobileMenu.style.animationName = 'bounceInRight';
mobileMenu.style.webkitAnimationName = 'bounceInRight';
mobileMenu.style.display = 'block';
mobileMenuVisible = true;
} else {
mobileMenu.style.animationName = 'bounceOutRight';
mobileMenu.style.webkitAnimationName = 'bounceOutRight';
mobileMenuVisible = false;
}
};
// Featured Image Toggle
//
const showImg = () => {
document.querySelector('.bg-img').classList.add('show-bg-img');
};
const hideImg = () => {
document.querySelector('.bg-img').classList.remove('show-bg-img');
};
// ToC Toggle
//
const toggleToc = () => {
document.getElementById('toc').classList.toggle('show-toc');
};
if (header !== null) {
listen('#menu-btn', 'click', toggleMobileMenu);
listen('#toc-btn', 'click', toggleToc);
listen('#img-btn', 'click', showImg);
listen('.bg-img', 'click', hideImg);
window.addEventListener(
'scroll',
throttle(() => {
autoHideHeader();
if (mobileMenuVisible == true) {
toggleMobileMenu();
}
}, 250)
);
}

View File

@ -0,0 +1,24 @@
{% extends "index.html" %}
{% block header %}
{% endblock header %}
{% block title %}
{% endblock title %}
{% block main %}
<div id="spotlight" class="error-404 animated fadeIn">
<p class="img-404">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 167.8 163.4" fill="currentColor"><title>404-lighthouse</title><path d="M83,27.5c.5-8.4,12.5-8.4,13,0,.2,3.2,5.2,3.2,5,0C100.7,21.3,96,16,89.5,16S78.3,21.3,78,27.5c-.2,3.2,4.8,3.2,5,0Z" transform="translate(-6.6 -6.6)"/><path d="M92,18V9c0-3.2-5-3.2-5,0v9c0,3.2,5,3.2,5,0Z" transform="translate(-6.6 -6.6)"/><path d="M78,44.5l-7.9,86.7L69,143.5c-.3,3.2,4.7,3.2,5,0l7.9-86.7L83,44.5c.3-3.2-4.7-3.2-5,0Z" transform="translate(-6.6 -6.6)"/><path d="M96,44.5l7.9,86.7,1.1,12.3c.3,3.2,5.3,3.2,5,0l-7.9-86.7L101,44.5c-.3-3.2-5.3-3.2-5,0Z" transform="translate(-6.6 -6.6)"/><path d="M88.5,26.5v18a1,1,0,0,0,2,0v-18a1,1,0,0,0-2,0Z" transform="translate(-6.6 -6.6)"/><path d="M79.1,69.6l21.2-12.2a1.5,1.5,0,0,0-1.5-2.6L77.6,67a1.5,1.5,0,0,0,1.5,2.6Z" transform="translate(-6.6 -6.6)"/><path d="M76.4,99.2,102.7,84a1.5,1.5,0,0,0-1.5-2.6L74.9,96.6a1.5,1.5,0,0,0,1.5,2.6Z" transform="translate(-6.6 -6.6)"/><path d="M73.7,128.7l31.4-18.1a1.5,1.5,0,0,0-1.5-2.6L72.2,126.1a1.5,1.5,0,0,0,1.5,2.6Z" transform="translate(-6.6 -6.6)"/><path d="M98.5,42h-18L83,44.5v-18L80.5,29h18L96,26.5v18c0,3.2,5,3.2,5,0v-18A2.5,2.5,0,0,0,98.5,24h-18A2.5,2.5,0,0,0,78,26.5v18A2.5,2.5,0,0,0,80.5,47h18C101.7,47,101.7,42,98.5,42Z" transform="translate(-6.6 -6.6)"/><path d="M172,165c-5.8-.3-9.5-4.7-15.8-3.8-2.6.4-4.4,1.6-6.7,2.7s-6.9,1.3-10.2-.5-9.5-3.2-14.3-1c-3.3,1.5-5.6,3.3-9.5,2.4-2.4-.5-4.3-2.3-6.7-3.1a15.5,15.5,0,0,0-8.3-.3c-2.5.6-4.3,2.2-6.7,3.1-6.2,2.2-10.8-3.5-16.9-3.5s-10.7,5.6-17,3.5c-2.3-.8-4.2-2.5-6.7-3.1a15.4,15.4,0,0,0-8.3.3c-3.1,1-5.4,3.3-8.9,3.3s-5.8-2.2-8.9-3.3a15.4,15.4,0,0,0-8.8-.2c-3.4,1-5.7,3.3-9.5,3.5s-3.2,5.2,0,5c6-.3,10.9-5.5,17-3.5,2.4.8,4.2,2.5,6.7,3.1a15.4,15.4,0,0,0,8.3-.3c2.3-.8,4.2-2.5,6.7-3.1s6.3.9,9.5,2.4c4.8,2.3,9.8,1.5,14.3-1s6.7-2.2,10.2-.5,4.1,2.3,6.7,2.7a14.9,14.9,0,0,0,7.9-1c2.7-1.2,4.8-2.9,7.9-2.9s5.2,1.7,7.9,2.9a14.9,14.9,0,0,0,7.9,1c2.6-.4,4.4-1.6,6.7-2.7s6.9-1.3,10.2.5a15.9,15.9,0,0,0,16.1,0c7.3-3.9,11.9,2,19.1,2.3,3.2.2,3.2-4.8,0-5Z" transform="translate(-6.6 -6.6)"/><path d="M46.3,165.8l9.6-9.3c4.9-4.6,9.7-11.1,17.2-9.2,4.9,1.2,9.2,5.5,13,8.5s8,6.5,12.1,9.7c2.6,2,5-2.4,2.5-4.3-5-3.8-9.7-7.9-14.7-11.7s-8.7-7-14.6-7.6-11.2,3.6-15.9,8S47,158,42.7,162.2c-2.3,2.3,1.2,5.8,3.5,3.5Z" transform="translate(-6.6 -6.6)"/><path d="M84.8,152.8c8.3-3.7,16.7-8.3,26.1-5.6s15.5,9,19.4,16.6c1.5,2.9,5.8.3,4.3-2.5-4.5-8.7-12.9-16.2-22.4-18.9s-20.3,1.7-29.9,6.1c-2.9,1.3-.4,5.6,2.5,4.3Z" transform="translate(-6.6 -6.6)"/><g class="animated flash infinite slower" ><path d="M62.5,34h-23a1.5,1.5,0,0,0,0,3h23a1.5,1.5,0,0,0,0-3Z" transform="translate(-6.6 -6.6)"/><path d="M63.3,25.2l-18-9c-1.7-.9-3.2,1.7-1.5,2.6l18,9c1.7.9,3.2-1.7,1.5-2.6Z" transform="translate(-6.6 -6.6)"/><path d="M61.7,43.2l-18,9c-1.7.9-.2,3.5,1.5,2.6l18-9c1.7-.9.2-3.5-1.5-2.6Z" transform="translate(-6.6 -6.6)"/><path d="M116.5,37h23a1.5,1.5,0,0,0,0-3h-23a1.5,1.5,0,0,0,0,3Z" transform="translate(-6.6 -6.6)"/><path d="M117.3,27.8l18-9c1.7-.9.2-3.5-1.5-2.6l-18,9c-1.7.9-.2,3.5,1.5,2.6Z" transform="translate(-6.6 -6.6)"/><path d="M115.7,45.8l18,9c1.7.9,3.2-1.7,1.5-2.6l-18-9c-1.7-.9-3.2,1.7-1.5,2.6Z" transform="translate(-6.6 -6.6)"/></g></svg>
</p>
<div class="banner-404">
<h1>404</h1>
<p>Oops, page not found…</p>
<p class="btn-404">
<a href="{{config.base_url}}"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-home"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>Home</a>
<a href='{{config.base_url}}/posts'><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-archive"><polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line></svg>Archives</a>
</p>
{% endblock main %}
{% block footer %}
{% endblock footer %}

View File

@ -0,0 +1,140 @@
{% import "macros.html" as macros %}
<!DOCTYPE html>
<html lang="{% if config.default_language %}{{ config.default_language }}{% else %}en-us{% endif %}">
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<meta itemprop="name" content="{{config.title}}" />
<meta itemprop="description" content="{{config.description}}" />
<link rel="apple-touch-icon" sizes="180x180" href="{{get_url(path="apple-touch-icon.png")}}"/>
<link rel="icon" type="image/png" sizes="32x32" href="{{get_url(path="favicon-32x32.png")}}" />
<link
rel="icon"
type="image/png"
sizes="16x16"
href="{{get_url(path="favicon-16x16.png")}}"
/>
<link
rel="shortcut icon"
href="{{get_url(path="favicon.ico")}}"
/>
<!-- Open Graph -->
<meta property="og:type" content="{% if page and page.relative_path is starting_with("posts") %}article{% else %}website{% endif %}" />
<meta property="og:site_name" content="{{config.title}}" />
{% if page.title %}
<meta property="og:title" content="{{page.title}}" />
<meta name="twitter:title" content="{{page.title}}" />
{% else %}
<meta property="og:title" content="{{config.title}}" />
<meta name="twitter:title" content="{{config.title}}" />
{% endif %}
{% if page.description %}
<meta property="og:description" content="{{page.description}}" />
<meta name="twitter:description" content="{{page.description}}" />
{% else %}
<meta property="og:description" content="{{config.extra.home_subtitle}}" />
<meta name="twitter:description" content="{{config.extra.home_subtitle}}" />
{% endif %}
{% if page.relative_url %}
<meta property="og:url" content="{{get_url(path=page.relative_url)}}" />
{% endif %}
<meta name="twitter:card" content="summary_large_image" />
{% if page.extra and page.extra.preview_image %}
{% set meta = get_image_metadata(path=page.extra.preview_image) %}
<meta property="og:image" content="{{get_url(path=page.extra.preview_image)}}" />
<meta property="og:image:width" content="{{meta.width}}" />
<meta property="og:image:height" content="{{meta.height}}" />
<meta name="twitter:image" content="{{get_url(path=page.extra.preview_image)}}" />
<meta name="twitter:image:width" content="{{meta.width}}" />
<meta name="twitter:image:height" content="{{meta.height}}" />
{% else %}
{% set meta = get_image_metadata(path=config.extra.preview_image) %}
<meta property="og:image" content="{{get_url(path=config.extra.preview_image)}}" />
<meta property="og:image:width" content="{{meta.width}}" />
<meta property="og:image:height" content="{{meta.height}}" />
<meta name="twitter:image" content="{{get_url(path=config.extra.preview_image)}}" />
<meta name="twitter:image:width" content="{{meta.width}}" />
<meta name="twitter:image:height" content="{{meta.height}}" />
{% endif %}
<!-- Twitter/X -->
<link rel="stylesheet" href="{{get_url(path="style.css")}}"/>
{% if page.title %}
<title>{{page.title}}</title>
{% else %}
<title>{{config.title}}</title>
{% endif %}
{% if config.generate_feed %}
<link rel="alternate" type="application/rss+xml" title="RSS" href="{{ get_url(path=config.feed_filename, trailing_slash=false) }}">
{% endif %}
<body id="page">
{% block header %}
{% endblock header %}
{% block title %}
<div id="spotlight" class="animated fadeIn">
<div id="home-center">
<h1 id="home-title">{{config.title}}</h1>
<p id="home-subtitle">{{config.extra.home_subtitle}}</p>
<div id="home-social">
{{macros::render_social_icons()}}
</div>
{% endblock title %}
{% block main %}
<nav id="home-nav" class="site-nav">
{% for s in config.extra.hermit_menu %}
<a href="{{config.base_url ~ s.link}}">{{s.name}}</a>
{% endfor %}
</nav>
{% endblock main %}
</div>
{% if config.extra.footer.index %}
{% block footer %}
<div id="home-footer">
<p>&copy; {{ now() | date(format="%Y")}}
<a href="{{config.base_url}}">{{config.extra.author.name}}</a>
{% if config.generate_feed %}
&#183; <a href="{{ get_url(path=config.feed_filename, trailing_slash=false) }}" target="_blank" title="rss">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-rss"><path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle></svg>
</a>
{% endif %}
</p>
</div>
{% endblock footer %}
{% endif %}
</div>
<script src="{{get_url(path="js/main.js")}}"></script>
<!-- Math rendering -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css" integrity="sha384-zB1R0rpPzHqg7Kpt0Aljp8JPLqbXI3bhnPWROx27a9N0Ll6ZP/+DiW/UqRcLbRjq" crossorigin="anonymous">
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js" integrity="sha384-y23I5Q6l+B6vatafAwxRu/0oK/79VlbSz7Q9aiSZUvyWYIYsd+qj+o24G5ZU2zJz" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous"
onload="renderMathInElement(document.body, { delimiters: [ {left: '$$', right: '$$', display: true}, {left: '$', right: '$', display: false}, {left: '\\[', right: '\\]', display: true}, {left: '\\(', right: '\\)', display: false}]});"></script>
<script src="{{get_url(path="js/main.js")}}"></script>
{% block js_footer %}
{% endblock js_footer %}
{% if config.extra.google_analytics.enable %}
<!-- Global Site Tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id={{ config.extra.google_analytics.id }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{ config.extra.google_analytics.id }}');
</script>
{% endif %}
</body>
</html>

View File

@ -0,0 +1,87 @@
{% macro read_time(words) %}
<span class="reading-time" title="Estimated read time">
{% if words < 530 %}
1 min read
{% else %}
{{ words / 265 | round }} min read
{% endif %}
</span>
{% endmacro read_time %}
{% macro footer() %}
<footer id="site-footer" class="section-inner thin animated fadeIn faster">
<p>&copy; {{ now() | date(format="%Y") }} <a href="{{ config.base_url }}">{{ config.extra.author.name }}</a>{{ config.extra.footer_copyright | safe }}</p>
<p>Made with <a href="https://www.getzola.org" target="_blank" rel="noopener">Zola</a> &#183; Theme <a href="https://github.com/VersBinarii/hermit_zola" target="_blank" rel="noopener">Hermit_Zola</a>
{% if config.generate_feed %}
&#183; <a href="{{ get_url(path=config.feed_filename, trailing_slash=false) }}" target="_blank" title="rss"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-rss"><path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle></svg></a>
{% endif %}
</p>
</footer>
{% endmacro footer %}
{% macro render_social_icons() %}
{% for icon in config.extra.hermit_social %}
<a href="{{ icon.link }}" target="_blank" rel="noopener me"
title="{{ icon.name }}">
{% if icon.name == "codepen" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2"></polygon><line x1="12" y1="22" x2="12" y2="15.5"></line><polyline points="22 8.5 12 15.5 2 8.5"></polyline><polyline points="2 15.5 12 8.5 22 15.5"></polyline><line x1="12" y1="2" x2="12" y2="8.5"></line></svg>
{% elif icon.name == "facebook" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg>
{% elif icon.name == "github" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"></path></svg>
{% elif icon.name == "gitlab" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path></svg>
{% elif icon.name == "instagram" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="20" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" y1="6.5" x2="17.5" y2="6.5"></line></svg>
{% elif icon.name == "linkedin" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg>
{% elif icon.name == "slack" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22.08 9C19.81 1.41 16.54-.35 9 1.92S-.35 7.46 1.92 15 7.46 24.35 15 22.08 24.35 16.54 22.08 9z"></path><line x1="12.57" y1="5.99" x2="16.15" y2="16.39"></line><line x1="7.85" y1="7.61" x2="11.43" y2="18.01"></line><line x1="16.39" y1="7.85" x2="5.99" y2="11.43"></line><line x1="18.01" y1="12.57" x2="7.61" y2="16.15"></line></svg>
{% elif icon.name == "stackoverflow" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2.913 16.041v6.848h17.599v-6.848M7.16 18.696h8.925M7.65 13.937l8.675 1.8M9.214 9.124l8.058 3.758M12.086 4.65l6.849 5.66M15.774 1.111l5.313 7.162"/></svg>
{% elif icon.name == "telegram" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21.198 2.433a2.242 2.242 0 0 0-1.022.215l-8.609 3.33c-2.068.8-4.133 1.598-5.724 2.21a405.15 405.15 0 0 1-2.849 1.09c-.42.147-.99.332-1.473.901-.728.968.193 1.798.919 2.286 1.61.516 3.275 1.009 4.654 1.472.509 1.793.997 3.592 1.48 5.388.16.36.506.494.864.498l-.002.018s.281.028.555-.038a2.1 2.1 0 0 0 .933-.517c.345-.324 1.28-1.244 1.811-1.764l3.999 2.952.032.018s.442.311 1.09.355c.324.022.75-.04 1.116-.308.37-.27.613-.702.728-1.196.342-1.492 2.61-12.285 2.997-14.072l-.01.042c.27-1.006.17-1.928-.455-2.474a1.654 1.654 0 0 0-1.034-.407z"/></svg>
{% elif icon.name == "mastodon" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" stroke="none"><path fill="none" d="M0 0h24v24H0z"/> <path fill-rule="nonzero" d="M3.018 12.008c-.032-1.26-.012-2.448-.012-3.442 0-4.338 2.843-5.61 2.843-5.61 1.433-.658 3.892-.935 6.45-.956h.062c2.557.02 5.018.298 6.451.956 0 0 2.843 1.272 2.843 5.61 0 0 .036 3.201-.396 5.424-.275 1.41-2.457 2.955-4.963 3.254-1.306.156-2.593.3-3.965.236-2.243-.103-4.014-.535-4.014-.535 0 .218.014.426.04.62.084.633.299 1.095.605 1.435.766.85 2.106.93 3.395.974 1.82.063 3.44-.449 3.44-.449l.076 1.646s-1.274.684-3.542.81c-1.25.068-2.803-.032-4.612-.51-1.532-.406-2.568-1.29-3.27-2.471-1.093-1.843-1.368-4.406-1.431-6.992zm3.3 4.937v-2.548l2.474.605a20.54 20.54 0 0 0 1.303.245c.753.116 1.538.2 2.328.235 1.019.047 1.901-.017 3.636-.224 1.663-.199 3.148-1.196 3.236-1.65.082-.422.151-.922.206-1.482a33.6 33.6 0 0 0 .137-2.245c.015-.51.02-.945.017-1.256v-.059c0-1.43-.369-2.438-.963-3.158a3.008 3.008 0 0 0-.584-.548c-.09-.064-.135-.089-.13-.087-1.013-.465-3.093-.752-5.617-.773h-.046c-2.54.02-4.62.308-5.65.782.023-.01-.021.014-.112.078a3.008 3.008 0 0 0-.584.548c-.594.72-.963 1.729-.963 3.158 0 .232 0 .397-.003.875a77.483 77.483 0 0 0 .014 2.518c.054 2.197.264 3.835.7 5.041.212.587.472 1.07.78 1.45a5.7 5.7 0 0 1-.18-1.505zM8.084 6.37a1.143 1.143 0 1 1 0 2.287 1.143 1.143 0 0 1 0-2.287z"/> </svg>
{% elif icon.name == "twitter" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z"></path></svg>
{% elif icon.name == "twitter_x" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
{% elif icon.name == "bluesky" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 600 530" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m135.72 44.03c66.496 49.921 138.02 151.14 164.28 205.46 26.262-54.316 97.782-155.54 164.28-205.46 47.98-36.021 125.72-63.892 125.72 24.795 0 17.712-10.155 148.79-16.111 170.07-20.703 73.984-96.144 92.854-163.25 81.433 117.3 19.964 147.14 86.092 82.697 152.22-122.39 125.59-175.91-31.511-189.63-71.766-2.514-7.3797-3.6904-10.832-3.7077-7.8964-0.0174-2.9357-1.1937 0.51669-3.7077 7.8964-13.714 40.255-67.233 197.36-189.63 71.766-64.444-66.128-34.605-132.26 82.697-152.22-67.108 11.421-142.55-7.4491-163.25-81.433-5.9562-21.282-16.111-152.36-16.111-170.07 0-88.687 77.742-60.816 125.72-24.795z"fill="currentColor"/></svg>
{% elif icon.name == "youtube" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z"></path><polygon points="9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"></polygon></svg>
{% elif icon.name == "email" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg>
{% elif icon.name == "dribbble" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle style="font-variation-settings:normal" cx="12.004" cy="12" r="9.39" paint-order="stroke fill markers"/><path style="font-variation-settings:normal" d="M5.858 19.136s2.343-5.79 8.161-6.422c5.818-.633 7.442.479 7.442.479M2.68 10.839s4.91.752 10.112-1.11c5.202-1.863 5.887-4.601 5.887-4.601"/><path style="font-variation-settings:normal" d="M8.533 3.208s2.888 2.73 5.339 9.235c2.451 6.505 2.344 8.4 2.344 8.4"/></svg>
{% elif icon.name == "behance" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path paint-order="stroke fill markers" stroke-linejoin="miter" stroke-width="2" style="font-variation-settings:normal" d="M1.774 18.063V5.466h5.51c1.978 0 3.116 1.326 3.055 2.806-.043 1.049-.711 2.988-2.643 2.988h-5.93H7.73c1.224 0 3.532 1.13 3.532 3.532 0 2.4-1.873 3.27-3.318 3.27zm12.57-4.459h7.89s.012-4.18-4.167-4.18c-5.237 0-5.277 9.11-.3 9.11 3.06 0 3.935-1.806 3.935-1.806M15.526 5.823h4.987"/></svg>
{% elif icon.name == "freepik" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5.737 17.28s3.423.84 7.61.162c4.188-.676 6.862-2.57 6.862-2.57s.28 3.943-4.967 5.33c-5.248 1.388-8.543.657-9.506-2.923zm-.62-3.104s4.491 1.361 8.728.344c4.237-1.016 5.94-2.568 5.94-2.568s-1.81-6.448-7.405-5.648c-5.597.8-8.061 4.414-7.263 7.872z" style="font-variation-settings:normal" stroke-linejoin="round"/><path d="M1.265 12.607c.159-1.98.561-3.898 2.08-5.701m5.148-3.29c2.006-.66 3.968-1.157 6.446-.844m5.202 2.98c1.192 1.275 1.963 2.163 2.594 3.815" style="font-variation-settings:normal" stroke="currentColor" stroke-linejoin="round"/><circle r=".989" cy="10.404" cx="14.746" fill="currentColor" stroke="none"/><circle cx="9.637" cy="11.305" r="1.477" fill="currentColor" stroke="none"/></svg>
{% elif icon.name == "adobestock" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path style="font-variation-settings:normal" d="M2.235 2.235h19.53v19.53H2.235z"/><path style="font-variation-settings:normal" d="M6.165 16.659s3.16 1.2 4.602-.17c1.37-1.3.787-3.163-.754-4.05-1.68-.969-3.284-1.788-3.036-3.536.446-3.138 4.386-1.851 4.386-1.851M15.792 7.794v7.774c0 1.023.635 1.766 2.043 1.624M17.826 10.04h-3.582"/></svg>
{% elif icon.name == "shutterstock" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect ry="5" rx="5" height="20" width="20" y="2" x="2"/><path d="M7.728 11.725V9.032c0-1.025.824-1.85 1.849-1.85h2.815m3.88 5.093v2.693a1.845 1.845 0 0 1-1.849 1.85h-2.815" stroke-linecap="square" stroke-linejoin="miter"/></svg>
{% elif icon.name == "123rf" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path style="font-variation-settings:normal" d="M7.48 3.826c-.702 0-1.345.388-1.675 1.008l-.711 1.334a4.214 4.214 0 0 1-1.614 1.67l-.388.224a2.207 2.207 0 0 0-1.104 1.913v8.607c0 .878.712 1.592 1.59 1.592h1.186c.468 0 .916-.19 1.244-.524l1.478-1.504c.266-.27.628-.421 1.006-.421h7.04c.378 0 .74.151 1.005.421l1.478 1.504c.329.334.778.524 1.247.524h1.183c.879 0 1.592-.714 1.592-1.592V9.975c0-.79-.422-1.518-1.106-1.912l-.388-.225a4.214 4.214 0 0 1-1.613-1.67l-.711-1.334a1.899 1.899 0 0 0-1.676-1.008z" stroke-linejoin="miter"/><circle cx="12" cy="12.467" r="2.723"/></svg>
{% elif icon.name == "dreamstime" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19.834 20.994s4.824-4.08 2.044-12.03C19.252 1.456 6.822-1.223 2.508 7.566c-3.936 8.023 2.18 14.46 7.88 14.374 4.889-.075 8.475-3.226 7.813-8.604-.76-6.18-6.73-6.816-9.275-4.184-2.256 2.334-1.816 7.034.873 7.823 2.241.844 4.661-1.265 3.161-3.215" style="font-variation-settings:normal" stroke="currentColor" stroke-linejoin="bevel" paint-order="stroke fill markers"/></svg>
{% elif icon.name == "paypal" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7.144 19.532l1.049-5.751c.11-.606.691-1.002 1.304-.948 2.155.192 6.877.1 8.818-4.002 2.554-5.397-.59-7.769-6.295-7.769H7.43a1.97 1.97 0 0 0-1.944 1.655L2.77 19.507a.857.857 0 0 0 .846.994h2.368a1.18 1.18 0 0 0 1.161-.969zM7.967 22.522a.74.74 0 0 0 .666.416h2.313c.492 0 .923-.351 1.003-.837l.759-4.601c.095-.523.597-.866 1.127-.819 1.86.166 5.567-.118 6.85-3.821.554-1.6.705-2.954.408-4.018" style="font-variation-settings:normal" stroke="currentColor" stroke-linejoin="miter"/></svg>
{% elif icon.name == "orcid" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.372 12-12S18.628 0 12 0zM7.369 4.378c.525 0 .947.431.947.947s-.422.947-.947.947a.95.95 0 0 1-.947-.947c0-.525.422-.947.947-.947zm-.722 3.038h1.444v10.041H6.647V7.416zm3.562 0h3.9c3.712 0 5.344 2.653 5.344 5.025 0 2.578-2.016 5.025-5.325 5.025h-3.919V7.416zm1.444 1.303v7.444h2.297c3.272 0 4.022-2.484 4.022-3.722 0-2.016-1.284-3.722-4.097-3.722h-2.222z"/></svg>
{% elif icon.name == "vsco" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" stroke="none" role="img"><path d="M12 0C5.376 0 0 5.376 0 12s5.376 12 12 12 12-5.376 12-12S18.624 0 12 0zm11.52 12c0 .408-.023.792-.072 1.176l-2.04-.24c.024-.312.05-.624.05-.936 0-.288-.025-.6-.05-.888l2.04-.24c.072.384.072.744.072 1.128zM.479 12c0-.384.024-.769.049-1.152l2.04.24c-.024.312-.047.6-.047.912s.023.6.047.912l-2.04.24C.479 12.769.479 12.384.479 12zm20.472-3.096l1.921-.72c.264.72.433 1.464.552 2.232l-2.04.24c-.097-.6-.24-1.2-.433-1.752zM21 12c0 .6-.072 1.176-.167 1.752l-2.017-.455c.071-.409.119-.841.119-1.297s-.048-.912-.119-1.344l2.017-.457c.118.577.167 1.177.167 1.801zm-9 6.456C8.435 18.455 5.545 15.565 5.544 12 5.545 8.435 8.435 5.545 12 5.544c3.565.001 6.455 2.891 6.456 6.456.008 3.559-2.871 6.448-6.429 6.456H12zM12.216 21v-2.064c.885-.029 1.756-.224 2.568-.575l.888 1.872c-1.09.482-2.264.742-3.456.767zm-3.936-.791l.912-1.873c.792.359 1.656.575 2.568.6V21c-1.202-.023-2.386-.293-3.48-.791zM3 12c0-.624.072-1.224.192-1.824l2.016.456c-.098.45-.146.908-.144 1.368 0 .432.048.864.12 1.272l-2.016.455C3.051 13.159 2.994 12.58 3 12zm8.76-9v2.064c-.877.029-1.74.224-2.544.576l-.888-1.871C9.411 3.291 10.577 3.03 11.76 3zm3.935.792l-.911 1.872c-.809-.363-1.682-.559-2.568-.576V3.024c1.248 0 2.424.288 3.479.768zm5.088 4.656c-.231-.56-.513-1.098-.84-1.608l1.681-1.152c.407.648.768 1.32 1.056 2.04l-1.897.72zm-.07 1.296l-2.018.456c-.23-.85-.621-1.648-1.151-2.352l1.632-1.295c.72.959 1.248 2.015 1.537 3.191zm-3.457-2.256c-.572-.667-1.264-1.22-2.04-1.633l.912-1.871c1.056.549 1.993 1.299 2.76 2.208l-1.632 1.296zm-.6-3.744l.96-1.824c.672.384 1.295.816 1.896 1.32L18.145 4.8c-.461-.401-.959-.754-1.489-1.056zm-.408-.216c-.54-.266-1.102-.483-1.68-.648l.504-1.992c.744.216 1.464.48 2.159.84l-.983 1.8zm-2.16-.768c-.6-.144-1.2-.216-1.824-.239V.479c.793.024 1.584.12 2.328.289l-.504 1.992zm-2.28-.239c-.605.021-1.207.094-1.8.216L9.528.744c.72-.168 1.487-.265 2.28-.265v2.042zm-2.28.334c-.586.167-1.156.384-1.704.649l-.96-1.824c.691-.343 1.415-.616 2.16-.816l.504 1.991zm-2.112.865c-.529.294-1.027.64-1.488 1.032L4.56 3.216c.6-.504 1.224-.936 1.896-1.319l.96 1.823zm.48.264l.888 1.871c-.792.408-1.464.96-2.04 1.608L5.136 6.168c.775-.895 1.711-1.636 2.76-2.184zM4.848 6.552l1.608 1.295c-.53.705-.921 1.503-1.152 2.353l-2.016-.456c.312-1.2.84-2.28 1.56-3.192zM3.24 8.4l-1.92-.72c.287-.72.648-1.416 1.08-2.04l1.68 1.176c-.341.494-.623 1.025-.84 1.584zm-.168.455c-.192.577-.36 1.152-.432 1.776L.6 10.393c.12-.769.288-1.537.553-2.257l1.919.719zm-.456 4.513c.096.6.239 1.2.432 1.776l-1.92.72c-.271-.728-.456-1.485-.552-2.257l2.04-.239zm.624 2.208c.239.576.528 1.104.84 1.607L2.4 18.336c-.435-.629-.797-1.306-1.08-2.016l1.92-.744zm.024-1.392l2.017-.456c.216.864.624 1.681 1.128 2.376L4.8 17.4c-.725-.957-1.247-2.051-1.536-3.216zm3.432 2.28c.577.672 1.272 1.248 2.064 1.656l-.912 1.872c-1.063-.557-2.009-1.315-2.784-2.232l1.632-1.296zm.72 3.815l-.96 1.825c-.674-.376-1.31-.819-1.896-1.321l1.368-1.535c.456.407.936.744 1.488 1.031zm.408.217c.528.264 1.104.48 1.705.647l-.504 1.992c-.747-.196-1.471-.469-2.16-.815l.959-1.824zm2.16.768c.576.12 1.176.193 1.8.217v2.039c-.774-.026-1.544-.114-2.305-.264l.505-1.992zm2.28.216c.605-.021 1.207-.094 1.801-.217l.479 1.992c-.749.168-1.513.264-2.28.287V21.48zm2.257-.336c.586-.165 1.155-.382 1.703-.647l.96 1.824c-.688.35-1.412.623-2.159.815l-.504-1.992zm2.086-.865c.528-.287 1.032-.647 1.488-1.031l1.369 1.535c-.588.502-1.223.945-1.896 1.321l-.961-1.825zm-.479-.263l-.888-1.871c.788-.414 1.489-.977 2.064-1.656l1.606 1.296c-.778.91-1.722 1.668-2.782 2.231zm3.071-2.592l-1.607-1.296c.532-.708.916-1.517 1.128-2.376l2.017.456c-.311 1.157-.831 2.248-1.538 3.216zM20.76 15.6l1.92.721c-.288.72-.648 1.392-1.079 2.04l-1.682-1.177c.337-.504.624-1.032.841-1.584zm.168-.455c.192-.553.336-1.152.433-1.752l2.039.239c-.11.761-.294 1.508-.551 2.232l-1.921-.719zm.456-9.841l-1.681 1.152c-.358-.49-.76-.947-1.199-1.368l1.368-1.536c.552.552 1.056 1.128 1.512 1.752zM4.2 3.528l1.368 1.536c-.456.408-.84.864-1.2 1.368l-1.68-1.176c.431-.636.94-1.216 1.512-1.728zM2.664 18.744l1.68-1.152c.36.48.769.937 1.2 1.369l-1.368 1.535c-.548-.545-1.054-1.131-1.512-1.752zm17.16 1.729l-1.368-1.537c.432-.407.841-.863 1.199-1.344l1.682 1.176c-.457.6-.961 1.175-1.513 1.705z"/></svg>
{% elif icon.name == "substack" %}
<svg xmlns="http://www.w3.org/2000/svg" class="feather" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M22.539 8.242H1.46V5.406h21.08v2.836zM1.46 10.812V24L12 18.11 22.54 24V10.812H1.46zM22.54 0H1.46v2.836h21.08V0z"/></svg>
{% else %}
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>
{% endif %}
</a>
{% endfor %}
{% endmacro render_social_icons %}

View File

@ -0,0 +1,176 @@
{% extends "index.html" %}
{% import "macros.html" as macros %}
{% block header %}
<header id="site-header" class="animated slideInUp faster">
<div class="hdr-wrapper section-inner">
<div class="hdr-left">
<div class="site-branding">
<a href="{{ config.base_url}}">{{ config.title }}</a>
</div>
<nav class="site-nav hide-in-mobile">
{% for menu_item in config.extra.hermit_menu %}
<a href="{{ config.base_url ~ menu_item.link }}">{{ menu_item.name }}</a>
{% endfor %}
</nav>
</div>
<div class="hdr-right hdr-icons">
<span class="hdr-social hide-in-mobile">
{{ macros::render_social_icons() }}
</span>
<button id="menu-btn" class="hdr-btn" title="Menu">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="feather feather-menu"
>
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</button>
</div>
</div>
</header>
<div id="mobile-menu" class="animated fast">
<ul>
{% for menu_item in config.extra.hermit_menu %}
<li><a href="{{ config.base_url ~ menu_item.link }}">{{ menu_item.name }}</a></li>
{% endfor %}
</ul>
</div>
{% endblock header %}
{% block title %}
{% endblock title %}
{% block main %}
<main class="site-main section-inner animated fadeIn faster">
<article class="thin">
<header class="post-header">
<div class="post-meta">
{% if page.date %}
<span>{{ page.date | date(format="%b %d, %Y")}}</span>
<small> - {{ macros::read_time(words=page.word_count) }}</small>
{% endif %}
{% if page.toc %}
<button id="toc-btn" class="hdr-btn desktop-only-ib">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"
viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="feather feather-list">
<line x1="8" y1="6" x2="21" y2="6"></line>
<line x1="8" y1="12" x2="21" y2="12"></line>
<line x1="8" y1="18" x2="21" y2="18"></line>
<line x1="3" y1="6" x2="3" y2="6"></line>
<line x1="3" y1="12" x2="3" y2="12"></line>
<line x1="3" y1="18" x2="3" y2="18"></line>
</svg>
</button>
{% endif %}
</div>
<h1>{{ page.title }}</h1>
</header>
<div class="content">
{{ page.content | safe }}
</div>
<hr class="post-end">
<footer class="post-info">
{% if page.taxonomies and page.taxonomies.tags %}
<p>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-tag meta-icon"><path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"></path><line x1="7" y1="7" x2="7" y2="7"></line></svg>
{% for k, tags in page.taxonomies %}
{% for t in tags %}
<span class="tag"><a href="{{get_taxonomy_url(kind="tags", name=t)}}">{{t}}</a></span>
{% endfor %}
{% endfor %}
</p>
{% endif %}
<p><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file-text"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>{{ page.word_count}} Words</p>
{% if page.date %}
<p><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-calendar"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>{{ page.date }}</p>
{% endif %}
</footer>
</article>
{% if page.toc %}
<aside id="toc">
<div id="TableOfContents">
<div class="toc-title">Table of content</div>
<ul>
{% for h1 in page.toc %}
<li>
<a href="{{h1.permalink | safe}}">{{ h1.title }}</a>
{% if h1.children %}
<ul>
{% for h2 in h1.children %}
<li>
<a href="{{h2.permalink | safe}}">{{ h2.title }}</a>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
</div>
</aside>
{% endif %}
<div class="post-nav thin">
{% if page.later %}
<a class="next-post" href="{{ page.later.permalink }}">
<span class="post-nav-label">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-left">
<line x1="19" y1="12" x2="5" y2="12"></line>
<polyline points="12 19 5 12 12 5"></polyline>
</svg>&nbsp;Newer</span><br>
<span>{{ page.later.title }}</span>
</a>
{% endif %}
{% if page.earlier %}
<a class="prev-post" href="{{ page.earlier.permalink }}">
<span class="post-nav-label">Older&nbsp;<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg></span><br>
<span>{{ page.earlier.title }}</span>
</a>
{% endif %}
</div>
{% if config.extra.disqus.enable and not page.extra.disable_comments%}
<div id="disqus_thread" class="thin"></div>
<script>
/**
* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
* LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables */
(function() { // DON'T EDIT BELOW THIS LINE
var disqus_config = function () {
this.page.url = "{{ page.permalink }}"; // Replace PAGE_URL with your page's canonical URL variable
this.page.identifier = "{{ page.permalink }}"; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
};
var d = document, s = d.createElement('script');
s.src = 'https://{{config.extra.disqus.shortname}}.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
{% endif %}
</main>
{% endblock main %}
{% block footer %}
{{ macros::footer() }}
{% endblock footer %}

View File

@ -0,0 +1,73 @@
{% extends "index.html" %} {% import "macros.html" as macros %} {% block header
%}
<header id="site-header" class="animated slideInUp faster">
<div class="hdr-wrapper section-inner">
<div class="hdr-left">
<div class="site-branding">
<a href="{{ config.base_url}}">{{ config.title }}</a>
</div>
<nav class="site-nav hide-in-mobile">
{% for menu_item in config.extra.hermit_menu %}
<a href="{{ config.base_url ~ menu_item.link }}"
>{{ menu_item.name }}</a
>
{% endfor %}
</nav>
</div>
<div class="hdr-right hdr-icons">
<span class="hdr-social hide-in-mobile">
{{ macros::render_social_icons() }}
</span>
<button id="menu-btn" class="hdr-btn" title="Menu">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="feather feather-menu"
>
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</button>
</div>
</div>
</header>
<div id="mobile-menu" class="animated fast">
<ul>
{% for menu_item in config.extra.hermit_menu %}
<li>
<a href="{{ config.base_url ~ menu_item.link }}">{{ menu_item.name }}</a>
</li>
{% endfor %}
</ul>
</div>
{% endblock header %} {% block title %} {% endblock title %} {% block main %}
<main class="site-main section-inner thin animated fadeIn faster">
<h1>{{ section.title }}</h1>
{% for year, pages in section.pages | group_by(attribute="year") %}
<div class="posts-group">
<div class="post-year">{{ year }}</div>
<ul class="posts-list">
{% for page in pages %}
<li class="post-item">
<a href="{{ page.permalink }}">
<span class="post-title">{{ page.title }}</span>
<span class="post-day">{{ page.date | date(format="%b %d") }}</span>
</a>
</li>
{% endfor %}
</ul>
</div>
{% endfor %}
</main>
{% endblock main %} {% block footer %} {{ macros::footer() }} {% endblock footer
%}

View File

@ -0,0 +1,54 @@
{% extends "index.html" %} {% import "macros.html" as macros %} {% block header
%}
<header id="site-header" class="animated slideInUp faster">
<div class="hdr-wrapper section-inner">
<div class="hdr-left">
<div class="site-branding">
<a href="{{ config.base_url}}">{{ config.title }}</a>
</div>
<nav class="site-nav hide-in-mobile">
{% for menu_item in config.extra.hermit_menu %}
<a href="{{ config.base_url ~ menu_item.link }}">{{ menu_item.name }}</a>
{% endfor %}
</nav>
</div>
<div class="hdr-right hdr-icons">
<span class="hdr-social hide-in-mobile">
{{ macros::render_social_icons() }}
</span>
<button id="menu-btn" class="hdr-btn" title="Menu">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="feather feather-menu">
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</button>
</div>
</div>
</header>
<div id="mobile-menu" class="animated fast">
<ul>
{% for menu_item in config.extra.hermit_menu %}
<li><a href="{{ config.base_url ~ menu_item.link }}">{{ menu_item.name }}</a></li>
{% endfor %}
</ul>
</div>
{% endblock header %} {% block title %} {% endblock title %} {% block main %}
<main class="site-main section-inner thin animated fadeIn faster" style="text-align: center;">
{% block content %}
{% for tag in terms %}
<header class="post-header">
<h1 class="post-header__title"><a href="{{ config.base_url }}/tags/{{ tag.slug }}">{{ tag.name }}</a></h1>
<p class="post-header__info">
{{ tag.pages | length }} post{{ tag.pages | length | pluralize }}
</p>
</header>
{% endfor %}
{% endblock content %}
</main>
{% endblock main %} {% block footer %} {{ macros::footer() }} {% endblock footer
%}

View File

@ -0,0 +1,71 @@
{% extends "index.html" %} {% import "macros.html" as macros %} {% block header
%}
<header id="site-header" class="animated slideInUp faster">
<div class="hdr-wrapper section-inner">
<div class="hdr-left">
<div class="site-branding">
<a href="{{ config.base_url}}">{{ config.title }}</a>
</div>
<nav class="site-nav hide-in-mobile">
{% for menu_item in config.extra.hermit_menu %}
<a href="{{ config.base_url ~ menu_item.link }}">{{ menu_item.name }}</a>
{% endfor %}
</nav>
</div>
<div class="hdr-right hdr-icons">
<span class="hdr-social hide-in-mobile">
{{ macros::render_social_icons() }}
</span>
<button id="menu-btn" class="hdr-btn" title="Menu">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="feather feather-menu"
>
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</button>
</div>
</div>
</header>
<div id="mobile-menu" class="animated fast">
<ul>
{% for menu_item in config.extra.hermit_menu %}
<li><a href="{{ config.base_url ~ menu_item.link }}">{{ menu_item.name }}</a></li>
{% endfor %}
</ul>
</div>
{% endblock header %} {% block title %} {% endblock title %} {% block main %}
<main class="site-main section-inner thin animated fadeIn faster">
<h1>{{ term.name }}</h1>
{% for year, pages in term.pages | group_by(attribute="year") %}
<div class="posts-group">
<div class="post-year">{{ year }}</div>
<ul class="posts-list">
{% for page in pages %}
<li class="post-item">
<a href="{{ page.permalink }}">
<span class="post-title">{{ page.title }}</span>
<span class="post-day"
>{{ page.date | date(format="%b %d") }}</span
>
</a>
</li>
{% endfor %}
</ul>
</div>
{% endfor %}
</main>
{% endblock main %} {% block footer %} {{ macros::footer() }} {% endblock footer
%}

View File

@ -0,0 +1,31 @@
name = "Hermit_Zola"
description = "Minimal Zola theme"
license = "MIT"
homepage = "https://github.com/VersBinarii/hermit_zola"
min_version = "0.4.0"
demo = "https://versbinarii.gitlab.io/blog/"
[extra]
home_subtitle = "Some profound and catchy statement"
footer_copyright = ''
hermit_menu = [
{ link = "/posts", name = "Posts" },
{ link = "/about", name = "About" }
]
hermit_social = [
{ name = "twitter", link = "https://twitter.com" },
{ name = "github", link = "https://github.com" },
{ name = "email", link = "mailto:name@domain.com" }
]
[author]
name = "VersBinarii"
homepage = "https://versbinarii.gitlab.io/blog/"
repo = "https://github.com/VersBinarii/hermit_zola"
[original]
author = "Track3"
repo = "https://github.com/Track3/hermit"

View File

@ -11,6 +11,7 @@ ingress:
annotations:
cert-manager.io/cluster-issuer: cert-issuer
external-dns.alpha.kubernetes.io/hostname: s3rius.blog
external-dns.alpha.kubernetes.io/cloudflare-proxied: "false"
tls:
- hosts:
- s3rius.blog