Import Hugo

This commit is contained in:
Smaug123
2023-09-30 18:30:52 +01:00
parent 85d784d889
commit 1f3e107106
250 changed files with 59591 additions and 48 deletions

2
hugo/themes/anatole/.gitattributes vendored Normal file
View File

@@ -0,0 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto

4
hugo/themes/anatole/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
**/themes/
demo/
.hugo/*
!.hugo/version

View File

@@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2020 lxndrblz
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,3 @@
This is a copy of [Anatole](https://github.com/lxndrblz/anatole/) by [Alexander Bilz](https://github.com/lxndrblz), with adjustments by Patrick Stevens.
It is substantially the original, which is licensed under the MIT licence, a copy of which is beside this README.
I license the edits I have made under the MIT licence too.

View File

@@ -0,0 +1,8 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
Description: ""
Tags: []
Categories: []
DisableComments: false
---

View File

@@ -0,0 +1,918 @@
@charset "UTF-8";
:root {
--bg-color: #fff;
--secondary-bg-color: #eeeeee;
--heading-color: #5f5f5f;
--body-color: rgba(0, 0, 0, 0.7);
--post-color: rgba(0, 0, 0, 0.44);
--border-color: rgba(0, 0, 0, 0.15);
--pre-bg-color: #f9f9fd;
--nav-text-color: #5a5a5a;
--tag-color: #424242;
--blockquote-text-color: #858585;
--blockquote-border-color: #dfe2e5;
scroll-padding-top: 100px;
}
html[data-theme='dark'] {
--bg-color: #292a2d;
--secondary-bg-color: #2c2d32;
--heading-color: rgb(169, 169, 179);
--body-color: rgb(169, 169, 179);
--post-color: rgba(0, 0, 0, 0.44);
--border-color: rgb(38, 38, 38);
--pre-bg-color: rgb(33, 33, 45);
--nav-text-color: rgb(191, 191, 191);
--tag-color: rgb(191, 191, 191);
--blockquote-text-color: #808080;
--blockquote-border-color: #424242;
}
html {
background-color: var(--bg-color);
-webkit-font-smoothing: antialiased;
}
body {
color: var(--body-color);
font-family: 'Verdana', sans-serif;
font-size: 15px;
width: 100%;
margin: 0 auto 30px auto;
background-color: var(--bg-color);
}
p {
line-height: 1.9em;
font-weight: 400;
font-size: 14px;
}
a {
text-decoration: none;
}
blockquote {
padding: 0 1em;
border-left: .25em solid var(--blockquote-border-color);
color: var(--blockquote-text-color);
}
.category {
padding: 4px 6px;
border-radius: 3px;
color: var(--tag-color) !important;
background-color: var(--secondary-bg-color);
border: 1px solid var(--border-color);
}
.tag::before {
content: "#";
opacity: .5;
}
.tag,
.category {
display: inline-block;
font-size: 15px;
line-height: 1;
margin: 5px 8px 5px 0;
}
pre {
background-color: var(--pre-bg-color);
padding: 5px;
display: block;
overflow-x: auto;
}
.info i {
opacity: 0.5;
margin-right: 5px;
}
a:link,
a:visited {
opacity: 1;
color: var(--tag-color);
}
a:hover,
a:active {
color: #2660ab;
}
/*basic styles ends*/
.main {
width: 80%;
height: auto;
float: right;
}
.content {
height: auto;
float: left;
width: 80%;
margin-top: 60px;
}
.page-top {
width: 80%;
position: fixed;
right: 0;
z-index: 3;
background-color: var(--bg-color);
height: 60px;
border-bottom: 1px solid var(--border-color);
}
.page-top .nav {
list-style: none;
float: left;
font-size: 12px;
width: calc(100% - 30px);
margin: 0;
padding-left: 15px;
}
.page-top .nav li {
position: relative;
display: initial;
padding-right: 20px;
padding-bottom: 10px;
}
.page-top .nav a {
color: var(--nav-text-color);
}
.page-top .nav a:hover {
color: #2660ab;
}
.page-top .nav a.current {
color: var(--nav-text-color);
padding-bottom: 6px;
border-bottom: 1px solid var(--nav-text-color);
}
.theme-switch-item {
position: relative;
float: right;
padding-top: 11px;
font-size: 2em;
margin-top: -12px;
}
.page-top .information {
float: right;
padding-top: 12px;
padding-right: 20px;
}
.page-top .information .avatar {
float: right;
}
.page-top .information .avatar img {
width: 32px;
height: 32px;
border-radius: 300px;
}
.page-top .information .back_btn {
float: left;
padding-top: 5px;
margin-right: -10px;
}
.page-top .information .back_btn li {
display: initial;
padding-right: 40px;
}
.sidebar {
width: 20%;
float: left;
-webkit-background-size: cover;
background-size: cover;
background-color: var(--bg-color);
height: 100%;
top: 0;
left: 0;
position: fixed;
z-index: 4;
border-right: 1px solid var(--border-color);
display: flex;
flex-direction: column;
min-height: 100%;
}
.sidebar .logo-title {
text-align: center;
padding-top: 240px;
flex: 1;
}
.sidebar .logo-title .description {
font-size: 14px;
}
.sidebar .logo-title .logo {
margin: 0 auto;
}
.sidebar .logo-title .title img {
width: 127px;
height: 127px;
border-radius: 50%;
}
.sidebar .logo-title .title h3 {
text-transform: uppercase;
font-size: 2rem;
font-weight: bold;
letter-spacing: 2px;
line-height: 1;
}
.sidebar .logo-title .title a {
text-decoration: none;
color: var(--heading-color);
font-size: 2rem;
font-weight: bold;
}
.sidebar .social-links {
list-style: none;
padding: 0;
font-size: 14px;
text-align: center;
flex: 7;
}
.sidebar .social-links span {
margin-right: 3px;
}
.sidebar .social-links td {
display: inline;
padding: 0 4px;
line-height: 0;
}
.sidebar .social-links a {
color: var(--heading-color);
}
.sidebar .social-links a:hover {
color: #2660ab;
}
.post {
background-color: var(--bg-color);
margin: 30px;
}
.post .post-title h1 {
text-transform: uppercase;
font-size: 30px;
letter-spacing: 5px;
line-height: 1;
}
.post .post-title h2 {
text-transform: uppercase;
letter-spacing: 1px;
font-size: 28px;
line-height: 1;
font-weight: 600;
color: var(--heading-color);
}
.post .post-title h3 {
text-transform: uppercase;
letter-spacing: 1px;
line-height: 1;
font-weight: 600;
/* color: #464646; */
color: var(--heading-color);
font-size: 22px;
margin: 0;
}
.post .post-title a {
text-decoration: none;
letter-spacing: 1px;
color: var(--heading-color);
}
.post .post-title a:hover {
text-decoration: underline;
}
.post .post-content a {
text-decoration: none;
letter-spacing: 1px;
color: #2660ab;
}
.post .post-content a:hover {
color: #2F69B3;
}
.post .post-content h3 {
font-size: 22px;
font-weight: 600;
}
.post .post-content h4 {
/* color: var(--heading-color); */
font-size: 16px;
}
.post .post-content img {
max-width: 100%;
}
.post .post-footer {
padding: 0 0 10px 0;
border-bottom: 1px solid var(--border-color);
}
.post .post-footer .meta {
max-width: 100%;
display: flex;
color: #bbbbbb;
}
.post .post-footer .meta .info {
float: left;
font-size: 12px;
margin-bottom: 1em;
color: var(--body-color);
}
.post .post-footer .info .separator a {
margin-right: 0.2em;
}
.post .post-footer .meta .info .date {
margin-right: 10px;
margin-left: 5px
}
.info {
margin: 1em;
}
.post .post-footer .meta a {
text-decoration: none;
color: var(--body-color);
padding-right: 10px;
}
.post .post-footer .meta a:hover {
color: #2660ab;
}
.post .post-footer .meta i {
margin-right: 6px;
}
.post .post-footer .tags {
padding-bottom: 15px;
font-size: 13px;
}
.post .post-footer .tags ul {
list-style-type: none;
display: inline;
margin: 0;
padding: 0;
}
.post .post-footer .tags ul li {
list-style-type: none;
margin: 0;
padding-right: 5px;
display: inline;
}
.post .post-footer .tags a {
text-decoration: none;
color: var(--post-color);
font-weight: 400;
}
.post .post-footer .tags a:hover {
text-decoration: none;
}
.pagination {
margin: 30px;
padding: 0px 0 56px 0;
text-align: center;
}
.pagination ul {
list-style: none;
margin: 0;
padding: 0;
height: 13px;
}
.pagination ul li {
margin: 0 2px 0 2px;
display: inline;
line-height: 1;
}
.pagination ul li a {
text-decoration: none;
color: var(--body-color);
}
.pagination .pre {
float: left;
}
.pagination .next {
float: right;
}
.like-reblog-buttons {
float: right;
}
.like-button {
float: right;
padding: 0 0 0 10px;
}
.reblog-button {
float: right;
padding: 0;
}
#install-btn {
position: fixed;
bottom: 0px;
right: 6px;
}
#disqus_thread {
margin: 30px;
border-bottom: 1px solid var(--border-color);
}
.footer {
clear: both;
text-align: center;
font-size: 10px;
margin: 0 auto;
bottom: 0;
width: 100%;
padding-bottom: 20px;
flex: 0;
position: relative;
}
.footer a {
color: #A6A6A6;
}
.footer a:hover {
color: #2660ab;
}
/*for archive*/
.archive {
width: 100%;
}
.list-with-title {
font-size: 14px;
margin: 30px;
padding: 0;
}
.list-with-title li {
list-style-type: none;
padding: 0;
}
.list-with-title .listing-title {
font-size: 24px;
color: #666666;
font-weight: 600;
line-height: 2.2em;
}
.list-with-title .listing {
padding: 0;
}
.list-with-title .listing .listing-post {
padding-bottom: 5px;
}
.list-with-title .listing .listing-post .post-time {
float: right;
color: #C5C5C5;
}
.list-with-title .listing .listing-post a {
color: #8F8F8F;
}
.list-with-title .listing .listing-post a:hover {
color: #2660ab;
}
/* share */
.share {
margin: 0px 30px;
display: inline-flex;
}
.evernote {
width: 32px;
height: 32px;
border-radius: 300px;
background-color: #3E3E3E;
margin-right: 5px;
}
.evernote a {
color: #fff;
padding: 11px;
font-size: 12px;
}
.evernote a:hover {
color: #ED6243;
padding: 11px;
}
.weibo {
width: 32px;
height: 32px;
border-radius: 300px;
background-color: #ED6243;
margin-right: 5px;
}
.weibo a {
color: #fff;
padding: 9px;
}
.weibo a:hover {
color: #BD4226;
}
.twitter {
width: 32px;
height: 32px;
border-radius: 300px;
background-color: #59C0FD;
margin-right: 5px;
}
.twitter a {
color: #fff;
padding: 9px;
}
.twitter a:hover {
color: #4B9ECE;
}
/* about */
.about {
margin: 30px;
}
.about h3 {
font-size: 22px;
}
/* links*/
.links {
margin: 30px;
}
.links h3 {
font-size: 22px;
}
.links a {
cursor: pointer;
}
/* Comments */
.comment-count {
color: #666;
}
.tab-community {
color: #666;
}
.read_more {
font-size: 14px;
}
.back-button {
padding-top: 30px;
max-width: 100px;
padding-left: 40px;
float: left;
}
/* Facebook Comments */
#fb_comments_container {
margin: 30px;
}
/* Buttons */
a.btn {
color: #868686;
font-weight: 400;
}
.btn {
display: inline-block;
position: relative;
outline: 0;
color: var(--post-color);
background: transparent;
font-size: 14px;
text-align: center;
text-decoration: none;
cursor: pointer;
border: 1px solid var(--border-color);
white-space: nowrap;
font-weight: 400;
font-style: normal;
border-radius: 999em;
}
.btn:hover {
display: inline-block;
position: relative;
outline: 0px;
color: #464545;
background: transparent;
font-size: 14px;
text-align: center;
text-decoration: none;
cursor: pointer;
border: 1px solid #464545;
white-space: nowrap;
font-weight: 400;
font-style: normal;
border-radius: 999em;
}
[role="back"] {
padding: 0.5em 1.25em;
line-height: 1.666em;
}
[role="home"] {
padding: 0.5em 1.25em;
line-height: 1.666em;
}
[role="navigation"] {
padding: 0.5em 1.25em;
line-height: 1.666em;
}
[role="tags"] {
padding: 6px 12px;
}
/* In full-screen mode, the navbar toggle checkbox has no use; don't display it */
.navbar-toggle {
display:none
}
#navbar-toggle-cbox {
opacity: 0;
float: none;
position: absolute;
}
/* Menu */
.menu {
float: right;
padding-top: 30px;
}
.menu .btn-down {
margin: 0px;
}
.menu .btn-down li {
list-style: none;
width: 100px;
}
.menu .btn-down li a {
display: inline-block;
position: relative;
padding: 0.5em 1.25em;
outline: 0;
color: var(--post-color);
background: transparent;
font-size: 14px;
text-align: center;
text-decoration: none;
cursor: pointer;
border: 1px solid var(--border-color);
white-space: nowrap;
font-weight: 400;
font-style: normal;
border-radius: 999em;
margin-top: 5px;
}
.menu .btn-down li a:hover {
position: relative;
padding: 0.5em 1.25em;
outline: 0;
color: #fff;
background: #3CBD10;
font-size: 14px;
text-align: center;
text-decoration: none;
cursor: pointer;
border: 1px solid rgba(0, 0, 0, 0.15);
white-space: nowrap;
font-weight: 400;
font-style: normal;
border-radius: 999em;
margin-top: 5px;
}
.menu .btn-down div {
position: absolute;
visibility: hidden;
width: 100px;
float: right;
}
.page_404 {
text-align: center;
padding-top: 50px;
}
@media screen and (max-width: 960px),
print {
.sidebar {
width: 100%;
position: absolute;
border-right: none;
z-index: 1;
}
.sidebar .logo-title {
padding-top: 120px;
}
.sidebar .logo-title .title img {
width: 100px;
height: 100px;
}
.sidebar .logo-title .title h3 {
font-size: 20px;
}
.main {
width: 100%;
height: auto;
float: right;
}
.page-top {
width: 100%;
}
.post-title h3 {
line-height: 1.6;
}
.content {
margin-top: 420px;
width: 100%;
z-index: 2;
position: absolute;
}
.footer {
display: none;
}
.share {
display: grid;
}
.navbar-toggle {
display: inline-block;
padding: 11px 10px;
}
label.navbar-toggle {
position: fixed;
padding-top: 18px;
}
#navbar-toggle-cbox:focus ~ label span {
display: inline-block;
outline :1px dashed cyan;
}
#navbar-toggle-cbox:not(:checked) ~ .nav {
display: none;
}
.page-top .nav {
background-color: var(--secondary-bg-color);
box-shadow: 0 8px 16px rgba(10, 10, 10, .1);
padding: .5rem 0;
width: 100%;
margin-top: 0px;
}
.page-top .nav li {
flex-grow: 0;
flex-shrink: 0;
display: block;
line-height: 2.5;
padding: .5rem .75rem;
position: relative;
text-transform: uppercase;
text-align: center;
font-size: 1.3em;
}
.page-top .nav a.current {
border-bottom: none;
}
}
/* Medium zoom */
.medium-zoom-overlay {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
opacity: 0;
transition: opacity 300ms;
will-change: opacity;
background: var(--bg-color);
}
.medium-zoom--opened .medium-zoom-overlay {
cursor: pointer;
cursor: zoom-out;
opacity: 1;
}
.medium-zoom-image {
cursor: pointer;
cursor: zoom-in;
/*
The `transition` is marked as "!important" for the animation to happen
even though it's overriden by another inline `transition` style attribute.
This is problematic with frameworks that generate inline styles on their
images (e.g. Gatsby).
See https://github.com/francoischalifour/medium-zoom/issues/110
*/
transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) !important;
z-index: 100;
}
.medium-zoom-image--hidden {
visibility: hidden;
}
.medium-zoom-image--opened {
position: relative;
cursor: pointer;
cursor: zoom-out;
will-change: transform;
}
@media print {
.page-top {
display: none;
}
}

View File

@@ -0,0 +1,51 @@
// initialize default value
function getTheme() {
return localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
}
function setTheme(style) {
document.documentElement.setAttribute('data-theme', style);
localStorage.setItem('theme', style);
}
function init() {
// initialize default value
var theme = getTheme();
// check if a prefered color theme is set for users that have never been to our site
const userPrefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
if (theme === null) {
if (userPrefersDark) {
setTheme('dark');
} else if (!document.documentElement.getAttribute('data-theme')) {
setTheme('light');
} else {
setTheme(document.documentElement.getAttribute('data-theme'));
}
} else {
// load a stored theme
if (theme == 'light') {
document.documentElement.setAttribute('data-theme', 'light');
} else {
document.documentElement.setAttribute('data-theme', 'dark');
}
}
}
// switch themes
function switchTheme(e) {
var theme = getTheme();
if (theme == 'light') {
setTheme('dark');
} else {
setTheme('light');
}
}
document.addEventListener('DOMContentLoaded', function () {
var themeSwitcher = document.querySelector('.theme-switch');
themeSwitcher.addEventListener('click', switchTheme, false);
}, false);
init();

View File

@@ -0,0 +1,458 @@
/*! medium-zoom 1.0.5 | MIT License | https://github.com/francoischalifour/medium-zoom */
(function (global, factory) {
typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = global || self,
global.mediumZoom = factory());
})(this, function () {
"use strict";
var _extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
var isSupported = function isSupported(node) {
return node.tagName === "IMG";
};
var isNodeList = function isNodeList(selector) {
return NodeList.prototype.isPrototypeOf(selector);
};
var isNode = function isNode(selector) {
return selector && selector.nodeType === 1;
};
var isSvg = function isSvg(image) {
var source = image.currentSrc || image.src;
return source.substr(-4).toLowerCase() === ".svg";
};
var getImagesFromSelector = function getImagesFromSelector(selector) {
try {
if (Array.isArray(selector)) {
return selector.filter(isSupported);
}
if (isNodeList(selector)) {
return [].slice.call(selector).filter(isSupported);
}
if (isNode(selector)) {
return [selector].filter(isSupported);
}
if (typeof selector === "string") {
return [].slice.call(document.querySelectorAll(selector)).filter(isSupported);
}
return [];
} catch (err) {
throw new TypeError("The provided selector is invalid.\n" + "Expects a CSS selector, a Node element, a NodeList or an array.\n" + "See: https://github.com/francoischalifour/medium-zoom");
}
};
var createOverlay = function createOverlay() {
var overlay = document.createElement("div");
overlay.classList.add("medium-zoom-overlay");
return overlay;
};
var cloneTarget = function cloneTarget(template) {
var _template$getBounding = template.getBoundingClientRect(), top = _template$getBounding.top,
left = _template$getBounding.left, width = _template$getBounding.width,
height = _template$getBounding.height;
var clone = template.cloneNode();
var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;
clone.removeAttribute("id");
clone.style.position = "absolute";
clone.style.top = top + scrollTop + "px";
clone.style.left = left + scrollLeft + "px";
clone.style.width = width + "px";
clone.style.height = height + "px";
clone.style.transform = "";
return clone;
};
var createCustomEvent = function createCustomEvent(type, params) {
var eventParams = _extends({
bubbles: false,
cancelable: false,
detail: undefined
}, params);
if (typeof window.CustomEvent === "function") {
return new CustomEvent(type, eventParams);
}
var customEvent = document.createEvent("CustomEvent");
customEvent.initCustomEvent(type, eventParams.bubbles, eventParams.cancelable, eventParams.detail);
return customEvent;
};
var mediumZoom = function mediumZoom(selector) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var Promise = window.Promise || function Promise(fn) {
function noop() {
}
fn(noop, noop);
};
var _handleClick = function _handleClick(event) {
var target = event.target;
if (target === overlay) {
close();
return;
}
if (images.indexOf(target) === -1) {
return;
}
toggle({
target: target
});
};
var _handleScroll = function _handleScroll() {
if (isAnimating || !active.original) {
return;
}
var currentScroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
if (Math.abs(scrollTop - currentScroll) > zoomOptions.scrollOffset) {
setTimeout(close, 150);
}
};
var _handleKeyUp = function _handleKeyUp(event) {
var key = event.key || event.keyCode;
if (key === "Escape" || key === "Esc" || key === 27) {
close();
}
};
var update = function update() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var newOptions = options;
if (options.container && options.container instanceof Object) {
newOptions.container = _extends({}, zoomOptions.container, options.container);
}
if (options.template) {
var template = isNode(options.template) ? options.template : document.querySelector(options.template);
newOptions.template = template;
}
zoomOptions = _extends({}, zoomOptions, newOptions);
images.forEach(function (image) {
image.dispatchEvent(createCustomEvent("medium-zoom:update", {
detail: {
zoom: zoom
}
}));
});
return zoom;
};
var clone = function clone() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return mediumZoom(_extends({}, zoomOptions, options));
};
var attach = function attach() {
for (var _len = arguments.length, selectors = Array(_len), _key = 0; _key < _len; _key++) {
selectors[_key] = arguments[_key];
}
var newImages = selectors.reduce(function (imagesAccumulator, currentSelector) {
return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));
}, []);
newImages.filter(function (newImage) {
return images.indexOf(newImage) === -1;
}).forEach(function (newImage) {
images.push(newImage);
newImage.classList.add("medium-zoom-image");
});
eventListeners.forEach(function (_ref) {
var type = _ref.type, listener = _ref.listener, options = _ref.options;
newImages.forEach(function (image) {
image.addEventListener(type, listener, options);
});
});
return zoom;
};
var detach = function detach() {
for (var _len2 = arguments.length, selectors = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
selectors[_key2] = arguments[_key2];
}
if (active.zoomed) {
close();
}
var imagesToDetach = selectors.length > 0 ? selectors.reduce(function (imagesAccumulator, currentSelector) {
return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));
}, []) : images;
imagesToDetach.forEach(function (image) {
image.classList.remove("medium-zoom-image");
image.dispatchEvent(createCustomEvent("medium-zoom:detach", {
detail: {
zoom: zoom
}
}));
});
images = images.filter(function (image) {
return imagesToDetach.indexOf(image) === -1;
});
return zoom;
};
var on = function on(type, listener) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
images.forEach(function (image) {
image.addEventListener("medium-zoom:" + type, listener, options);
});
eventListeners.push({
type: "medium-zoom:" + type,
listener: listener,
options: options
});
return zoom;
};
var off = function off(type, listener) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
images.forEach(function (image) {
image.removeEventListener("medium-zoom:" + type, listener, options);
});
eventListeners = eventListeners.filter(function (eventListener) {
return !(eventListener.type === "medium-zoom:" + type && eventListener.listener.toString() === listener.toString());
});
return zoom;
};
var open = function open() {
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, target = _ref2.target;
var _animate = function _animate() {
var container = {
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight,
left: 0,
top: 0,
right: 0,
bottom: 0
};
var viewportWidth = void 0;
var viewportHeight = void 0;
if (zoomOptions.container) {
if (zoomOptions.container instanceof Object) {
container = _extends({}, container, zoomOptions.container);
viewportWidth = container.width - container.left - container.right - zoomOptions.margin * 2;
viewportHeight = container.height - container.top - container.bottom - zoomOptions.margin * 2;
} else {
var zoomContainer = isNode(zoomOptions.container) ? zoomOptions.container : document.querySelector(zoomOptions.container);
var _zoomContainer$getBou = zoomContainer.getBoundingClientRect(),
_width = _zoomContainer$getBou.width, _height = _zoomContainer$getBou.height,
_left = _zoomContainer$getBou.left, _top = _zoomContainer$getBou.top;
container = _extends({}, container, {
width: _width,
height: _height,
left: _left,
top: _top
});
}
}
viewportWidth = viewportWidth || container.width - zoomOptions.margin * 2;
viewportHeight = viewportHeight || container.height - zoomOptions.margin * 2;
var zoomTarget = active.zoomedHd || active.original;
var naturalWidth = isSvg(zoomTarget) ? viewportWidth : zoomTarget.naturalWidth || viewportWidth;
var naturalHeight = isSvg(zoomTarget) ? viewportHeight : zoomTarget.naturalHeight || viewportHeight;
var _zoomTarget$getBoundi = zoomTarget.getBoundingClientRect(), top = _zoomTarget$getBoundi.top,
left = _zoomTarget$getBoundi.left, width = _zoomTarget$getBoundi.width,
height = _zoomTarget$getBoundi.height;
var scaleX = Math.min(naturalWidth, viewportWidth) / width;
var scaleY = Math.min(naturalHeight, viewportHeight) / height;
var scale = Math.min(scaleX, scaleY);
var translateX = (-left + (viewportWidth - width) / 2 + zoomOptions.margin + container.left) / scale;
var translateY = (-top + (viewportHeight - height) / 2 + zoomOptions.margin + container.top) / scale;
var transform = "scale(" + scale + ") translate3d(" + translateX + "px, " + translateY + "px, 0)";
active.zoomed.style.transform = transform;
if (active.zoomedHd) {
active.zoomedHd.style.transform = transform;
}
};
return new Promise(function (resolve) {
if (target && images.indexOf(target) === -1) {
resolve(zoom);
return;
}
var _handleOpenEnd = function _handleOpenEnd() {
isAnimating = false;
active.zoomed.removeEventListener("transitionend", _handleOpenEnd);
active.original.dispatchEvent(createCustomEvent("medium-zoom:opened", {
detail: {
zoom: zoom
}
}));
resolve(zoom);
};
if (active.zoomed) {
resolve(zoom);
return;
}
if (target) {
active.original = target;
} else if (images.length > 0) {
var _images = images;
active.original = _images[0];
} else {
resolve(zoom);
return;
}
active.original.dispatchEvent(createCustomEvent("medium-zoom:open", {
detail: {
zoom: zoom
}
}));
scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
isAnimating = true;
active.zoomed = cloneTarget(active.original);
document.body.appendChild(overlay);
if (zoomOptions.template) {
var template = isNode(zoomOptions.template) ? zoomOptions.template : document.querySelector(zoomOptions.template);
active.template = document.createElement("div");
active.template.appendChild(template.content.cloneNode(true));
document.body.appendChild(active.template);
}
document.body.appendChild(active.zoomed);
window.requestAnimationFrame(function () {
document.body.classList.add("medium-zoom--opened");
});
active.original.classList.add("medium-zoom-image--hidden");
active.zoomed.classList.add("medium-zoom-image--opened");
active.zoomed.addEventListener("click", close);
active.zoomed.addEventListener("transitionend", _handleOpenEnd);
if (active.original.getAttribute("data-zoom-src")) {
active.zoomedHd = active.zoomed.cloneNode();
active.zoomedHd.removeAttribute("srcset");
active.zoomedHd.removeAttribute("sizes");
active.zoomedHd.src = active.zoomed.getAttribute("data-zoom-src");
active.zoomedHd.onerror = function () {
clearInterval(getZoomTargetSize);
console.warn("Unable to reach the zoom image target " + active.zoomedHd.src);
active.zoomedHd = null;
_animate();
};
var getZoomTargetSize = setInterval(function () {
if (active.zoomedHd.complete) {
clearInterval(getZoomTargetSize);
active.zoomedHd.classList.add("medium-zoom-image--opened");
active.zoomedHd.addEventListener("click", close);
document.body.appendChild(active.zoomedHd);
_animate();
}
}, 10);
} else if (active.original.hasAttribute("srcset")) {
active.zoomedHd = active.zoomed.cloneNode();
active.zoomedHd.removeAttribute("sizes");
var loadEventListener = active.zoomedHd.addEventListener("load", function () {
active.zoomedHd.removeEventListener("load", loadEventListener);
active.zoomedHd.classList.add("medium-zoom-image--opened");
active.zoomedHd.addEventListener("click", close);
document.body.appendChild(active.zoomedHd);
_animate();
});
} else {
_animate();
}
});
};
var close = function close() {
return new Promise(function (resolve) {
if (isAnimating || !active.original) {
resolve(zoom);
return;
}
var _handleCloseEnd = function _handleCloseEnd() {
active.original.classList.remove("medium-zoom-image--hidden");
document.body.removeChild(active.zoomed);
if (active.zoomedHd) {
document.body.removeChild(active.zoomedHd);
}
document.body.removeChild(overlay);
active.zoomed.classList.remove("medium-zoom-image--opened");
if (active.template) {
document.body.removeChild(active.template);
}
isAnimating = false;
active.zoomed.removeEventListener("transitionend", _handleCloseEnd);
active.original.dispatchEvent(createCustomEvent("medium-zoom:closed", {
detail: {
zoom: zoom
}
}));
active.original = null;
active.zoomed = null;
active.zoomedHd = null;
active.template = null;
resolve(zoom);
};
isAnimating = true;
document.body.classList.remove("medium-zoom--opened");
active.zoomed.style.transform = "";
if (active.zoomedHd) {
active.zoomedHd.style.transform = "";
}
if (active.template) {
active.template.style.transition = "opacity 150ms";
active.template.style.opacity = 0;
}
active.original.dispatchEvent(createCustomEvent("medium-zoom:close", {
detail: {
zoom: zoom
}
}));
active.zoomed.addEventListener("transitionend", _handleCloseEnd);
});
};
var toggle = function toggle() {
var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, target = _ref3.target;
if (active.original) {
return close();
}
return open({
target: target
});
};
var getOptions = function getOptions() {
return zoomOptions;
};
var getImages = function getImages() {
return images;
};
var getZoomedImage = function getZoomedImage() {
return active.original;
};
var images = [];
var eventListeners = [];
var isAnimating = false;
var scrollTop = 0;
var zoomOptions = options;
var active = {
original: null,
zoomed: null,
zoomedHd: null,
template: null
};
if (Object.prototype.toString.call(selector) === "[object Object]") {
zoomOptions = selector;
} else if (selector || typeof selector === "string") {
attach(selector);
}
zoomOptions = _extends({
margin: 0,
scrollOffset: 40,
container: null,
template: null
}, zoomOptions);
var overlay = createOverlay();
document.addEventListener("click", _handleClick);
document.addEventListener("keyup", _handleKeyUp);
document.addEventListener("scroll", _handleScroll);
window.addEventListener("resize", close);
var zoom = {
open: open,
close: close,
toggle: toggle,
update: update,
clone: clone,
attach: attach,
detach: detach,
on: on,
off: off,
getOptions: getOptions,
getImages: getImages,
getZoomedImage: getZoomedImage
};
return zoom;
};
return mediumZoom;
});
mediumZoom(document.querySelectorAll('div.post-content img'));

View File

@@ -0,0 +1,8 @@
{{ define "main" }}
<div class="page_404">
<h1>404</h1>
<h2>{{ i18n "page_not_found" }}</h2>
<p>{{ i18n "page_does_not_exist" }}</p>
<p>{{ i18n "head_back" . | safeHTML }}</p>
</div>
{{ end }}

View File

@@ -0,0 +1,21 @@
<!DOCTYPE html>
<html lang="{{- site.Language.Lang -}}" data-theme="{{- .Site.Params.displayMode -}}">
{{- partial "head.html" . -}}
<body>
<div>
{{ partial "navbar.html" . }}
<div class="main">
<div class="autopagerize_page_element">
<div class="content">
{{- block "main" . }}{{- end }}
</div>
</div>
</div>
{{- partial "sidebar.html" . -}}
</div>
{{- partial "footer.html" . -}}
</body>
</html>

View File

@@ -0,0 +1,18 @@
{{ define "main" }}
<div class="archive animated fadeInDown">
<ul class="list-with-title">
{{ range .Data.Pages.GroupByDate "2006" }}
<div class="listing-title">{{ .Key }}</div>
{{ range .Pages }}
<ul class="listing">
<div class="listing-item">
<div class="listing-post"><a href="{{ .Permalink }}" title="{{ .Title }}">{{ .Title }}</a>
<div class="post-time"><span class="date">{{.Date.Format "Jan 2" }}</span></div>
</div>
</div>
</ul>
{{ end }}
{{ end }}
</ul>
</div>
{{ end }}

View File

@@ -0,0 +1,42 @@
{{ define "main" }}
<div class="post animated fadeInDown">
<div class="post-content">
<div class="post-title">
<h3>{{ .Title }}</h3>
{{ if eq .Type "post"}}
<div class="info">
<em class="fas fa-calendar-day"></em>
<span class="date">{{ .Date.Format "Mon, Jan 2, 2006" }}</span>
<em class="fas fa-stopwatch"></em>
<span class="reading-time">{{ i18n "reading_time" .ReadingTime }}</span>
</div>
{{ end }}
</div>
{{ .Content }}
</div>
<div class="post-footer">
<div class="info">
{{ if not .PublishDate.IsZero }} Published: <span class="date"> {{ .PublishDate.Format "2006-01-02" }}</span><br /> {{end}}
{{ if not .Lastmod.IsZero }} Last modified: <span class="date"> {{ .Lastmod.Format "2006-01-02 15:04" }}</span><br /> {{end}}
{{ .WordCount }} words<br />
{{ with .Page.Params.Categories }}{{ partial "taxonomy/categories.html" . }}{{ end }}
{{ with .Page.Params.Tags }}{{ partial "taxonomy/tags.html" . }}{{ end }}
</div>
<div class="feedback-link">
<a href=https://docs.google.com/forms/d/e/1FAIpQLSfBIFO50asRr6QmzRzCmtiRBXrImIraOnHuum9I798pSW_pjA/viewform>Submit anonymous feedback</a>
</div>
</div>
{{ if eq .Type "post"}}
{{ if .Site.DisqusShortname -}}
<div id="fb_comments_container">
<h2>{{ i18n "comments" }}</h2>
{{ template "_internal/disqus.html" . }}
</div>
{{- end }}
{{ end }}
</div>
{{ end }}

View File

@@ -0,0 +1,3 @@
{{ define "main" }}
{{.Content}}
{{ end }}

View File

@@ -0,0 +1,30 @@
{{ define "main" }}
{{ $paginator := .Paginate (where .Site.RegularPages "Type" "in" .Site.Params.mainSections) }}
{{ range $paginator.Pages }}
<div class="post animated fadeInDown">
<div class="post-title">
<h3><a href="{{ .RelPermalink }}">{{ .Title }}</a>
</h3>
</div>
<div class="post-content">
<div class="p_part"><p>{{ .Summary }}</p></div>
</div>
<div class="post-footer">
<div class="meta">
<div class="info">
<em class="fas fa-calendar-day">&nbsp;</em><span class="date">{{ .Date.Format "2006-01-02" }}</span>
{{ with .Params.tags }}
{{- range $index, $el := . -}}
<a class="tag"
href="{{ ( printf "tags/%s/" ( . | urlize ) ) | relLangURL }}">{{ . }}</a>
{{- end -}}
{{ end }}
</div>
</div>
</div>
</div>
{{ end }}
<div class="pagination">
{{ template "_internal/pagination.html" . }}
</div>
{{ end }}

View File

@@ -0,0 +1,2 @@
{{if .Params.gallery }} {{- partial "medium-zoom.html" . -}} {{- partial "gallery.html" . -}}{{ end }}
{{if .Params.math }} {{- partial "math.html" . -}} {{ end }}

View File

@@ -0,0 +1,17 @@
{{- if (isset .Params "gallery") -}}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"
integrity="sha384-tsQFqpEReu7ZLhBV2VZlAu7zcOV+rXbYlF2cqB8txI/8aZajjp4Bqd+V6D5IgvKT"
crossorigin="anonymous"></script>
{{- $url := "https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.4.0/jquery.fancybox.min.js" -}}
{{- $hash := "sha384-fPPwDm9Mfp/tF9MgxjA4B33PPUlNmlXdP3oKSJgdAywm+cfAEYllAIRl/D3SBlpc" -}}
<script defer
src="{{- $url -}}"
integrity="{{- $hash -}}"
crossorigin="anonymous"></script>
{{- $url := "https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.4.0/jquery.fancybox.min.css" -}}
{{- $hash := "sha384-Ewh0nI9dXkThksh2nOTHmr8wAk5UlhiE2FiGSuZSnYkQ/G1W5wPuXGBnXodqD8GC" -}}
<link rel="stylesheet"
href="{{- $url -}}"
integrity="{{- $hash -}}"
crossorigin="anonymous" />
{{- end -}}

View File

@@ -0,0 +1,84 @@
<head>
<title> {{.Site.Params.author}}{{ with .Title }} | {{ . }}{{ end }} </title>
<!-- Meta -->
<meta charset="utf-8">
{{- hugo.Generator -}}
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">
<meta name="description" content="{{ .Site.Params.description }}">
{{- if .Site.Params.googleSiteVerify }}
<meta name="google-site-verification" content="{{ .Site.Params.googleSiteVerify }}">
{{- end -}}
<!-- CSS -->
{{ $style := resources.Get "css/style.css" | resources.Minify | resources.Fingerprint }}
<link rel="stylesheet"
href="{{ $style.Permalink }}"
integrity="{{ $style.Data.Integrity }}"
crossorigin="anonymous"
type="text/css">
{{ if .Params.sidenotes }}
{{ $style := resources.Get "css/sidenote.css" | resources.Minify | resources.Fingerprint }}
<link rel="stylesheet"
href="{{ $style.Permalink }}"
integrity="{{ $style.Data.Integrity }}"
crossorigin="anonymous"
type="text/css">
{{ end }}
{{- $css := "" -}}
{{- range .Site.Params.customCss -}}
{{ $css := resources.Get . | fingerprint }}
<link rel="stylesheet"
href="{{ $css.Permalink }}"
integrity="{{ $css.Data.Integrity }}"
crossorigin="anonymous"
type="text/css">
{{- end -}}
<!-- Desired parts of fontawesome have been extracted to fontawesome.css
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css"
integrity="sha512-+4zCK9k+qNFUR5X+cKL9EIR+ZOhtIloNl9GIKS57V1MyNsYpYcUrUeQc9vNfzsWfV28IaLL3i96P9sdNyeRssA=="
crossorigin="anonymous" />-->
<!-- Favicons -->
<link rel="shortcut icon" href="{{ .Site.Params.favicon | absURL }}favicon.ico" type="image/x-icon">
<link rel="canonical" href="{{ .Permalink }}">
<!-- RSS -->
{{ with .OutputFormats.Get "rss" -}}
{{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
{{ end -}}
<!-- JavaScript -->
{{ $anatole := resources.Get "js/anatole-header.js" }}
{{ $secureJS := $anatole | resources.Minify | resources.Fingerprint }}
<script src="{{ $secureJS.Permalink }}"
integrity="{{ $secureJS.Data.Integrity }}"
crossorigin="anonymous"></script>
{{- $js := "" -}}
{{- range .Site.Params.customJs -}}
{{- if or (in . "http://") (in . "https://") -}}
<script src="{{ . | relURL }}"></script>
{{- else -}}
{{- $customJS := resources.Get . -}}
{{- if $customJS -}}
{{- if eq $js "" -}}
{{- $js = $customJS -}}
{{- else -}}
{{- $js = slice $js $customJS | resources.Concat "js/custom.js" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- if ne $js "" -}}
{{- $secureJS := $js | resources.Minify | resources.Fingerprint -}}
<script src="{{ $secureJS.Permalink }}"
integrity="{{ $secureJS.Data.Integrity }}"
crossorigin="anonymous"></script>
{{- end -}}
<!-- Twitter Cards -->
{{ template "_internal/twitter_cards.html" . }}
</head>

View File

@@ -0,0 +1,79 @@
{{- if or (eq site.Params.math true) (eq .Params.math true) -}}
{{- $use := "katex" -}}
{{- with site.Params.math -}}
{{- if and (isset . "use") (eq (.use | lower) "mathjax") -}}
{{- $use = "mathjax" -}}
{{- else if and (isset . "use") (eq (.use | lower) "katex-css") -}}
{{- $use = "katex-css" -}}
{{- end -}}
{{- end -}}
{{- if eq $use "mathjax" -}}
{{- $url := "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS-MML_HTMLorMML" -}}
{{- $hash := "sha384-e/4/LvThKH1gwzXhdbY2AsjR3rm7LHWyhIG5C0jiRfn8AN2eTN5ILeztWw0H9jmN" -}}
<script defer
src="{{- $url -}}"
integrity="{{- $hash -}}"
crossorigin="anonymous"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']] } });
</script>
{{- else if eq $use "katex" -}}
{{- $url := "https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css" -}}
{{- $hash := "sha384-zB1R0rpPzHqg7Kpt0Aljp8JPLqbXI3bhnPWROx27a9N0Ll6ZP/+DiW/UqRcLbRjq" -}}
<link rel="preload"
as="script"
href="{{- $url -}}"
integrity="{{- $hash -}}"
crossorigin="anonymous" />
<noscript><link rel="stylesheet"
href="{{- $url -}}"
integrity="{{- $hash -}}"
crossorigin="anonymous" />
</noscript>
{{- $url := "https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js" -}}
{{- $hash := "sha384-y23I5Q6l+B6vatafAwxRu/0oK/79VlbSz7Q9aiSZUvyWYIYsd+qj+o24G5ZU2zJz" -}}
<script defer
src="{{- $url -}}"
integrity="{{- $hash -}}"
crossorigin="anonymous"></script>
{{- $url := "https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/auto-render.min.js" -}}
{{- $hash := "sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" -}}
<script defer
src="{{- $url -}}"
integrity="{{- $hash -}}"
crossorigin="anonymous"
onload="renderMathInElement(document.body);"></script>
{{- else if eq $use "katex-css" -}}
{{ $css := resources.Get "katex.min.css" | resources.Minify | resources.Fingerprint }}
<link rel="stylesheet"
href="{{ $css.Permalink }}"
integrity="{{ $css.Data.Integrity }}"
crossorigin="anonymous" />
{{ $katexjs := resources.Get "katex.min.js" | resources.Minify | resources.Fingerprint }}
<script defer
src="{{ $katexjs.Permalink }}"
integrity="{{ $katexjs.Data.Integrity }}"
crossorigin="anonymous"></script>
{{ $katexrender := resources.Get "contrib/auto-render.min.js" | resources.Minify | resources.Fingerprint }}
<script defer
src="{{ $katexrender.Permalink }}"
integrity="{{ $katexrender.Data.Integrity }}"
crossorigin="anonymous"
onload="renderMathInElement(document.body);"></script>
{{ $fonts := readDir "themes/anatole/assets/fonts" }}
{{- range $fonts -}}
{{- if strings.HasSuffix .Name ".woff2" -}}
{{ $font := resources.Get (printf "fonts/%s" .Name) }}
<link rel="preload"
href="{{ $font.Permalink }}"
as="font"
type="font/woff2"
crossorigin="anonymous" />
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,5 @@
{{ $js := resources.Get "js/medium-zoom.js" }}
{{ $secureJS := $js | resources.Minify | resources.Fingerprint }}
<script src="{{ $secureJS.Permalink }}"
integrity="{{ $secureJS.Data.Integrity }}"
crossorigin="anonymous"></script>

View File

@@ -0,0 +1,25 @@
<div class="page-top animated fadeInDown">
<div class="theme-switch-item">
<button class="theme-switch" title="Switch Theme">
<i>Lighting</i>
</button>
</div>
<input type="checkbox" class="navbar-toggle" tabindex="0" id="navbar-toggle-cbox" />
<label class="navbar-toggle" for="navbar-toggle-cbox"><span>Toggle navigation menu</span></label>
<ul class="nav">
<label for="navbar-toggle-cbox" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar-toggle-cbox">
&nbsp;
</label>
{{ $url := .RelPermalink }}
{{ range .Site.Menus.main }}
{{ $active := eq $url .URL }}
<li><a {{if $active }}class="current"{{end}}
href="{{ .URL }}"
{{ if strings.HasPrefix .URL "http" }}
target="_blank"
rel="noopener noreferrer"
{{ end }}
title="{{ .Title }}">{{ .Name }}</a></li>
{{ end }}
</ul>
</div>

View File

@@ -0,0 +1,27 @@
<div class="sidebar animated fadeInDown">
<div class="logo-title">
<div class="title">
<img src="{{ printf "%s.png" .Site.Params.profilePicture | absURL }}" srcset="{{ printf "%s-small.png" .Site.Params.profilePicture | absURL }} 337w, {{ printf "%s.png" .Site.Params.profilePicture | absURL }} 1020w" sizes="337px, 1020px" alt="profile picture" width="127" height="127" />
<h3 title=""><a href="/">{{ .Site.Params.Title }}</a></h3>
{{ if .Site.Params.description }}
<div class="description">
<p>{{ .Site.Params.description }}</p>
</div>
{{ end }}
</div>
</div>
<table class="social-links">
<tr>
{{ range $item := .Site.Params.socialIcons }}
<td>
<a href="{{ $item.url }}" rel="me" aria-label="{{ $item.title }}">
<span class="{{ $item.icon }} fa-2x" aria-hidden="true">&nbsp;</span>
</a>
</td>
{{ end }}
</tr>
</table>
<div class="footer">
<div class="by_farbox">&copy; {{ .Site.Params.author }} {{ now.Format "2006"}} </div>
</div>
</div>

View File

@@ -0,0 +1,5 @@
<span class="separator">
{{- range $index, $el := . -}}
<a class="category" href="{{ ( printf "categories/%s/" ( . | urlize ) ) | relLangURL }}">{{ . }}</a>
{{- end -}}
</span>

View File

@@ -0,0 +1,5 @@
<span class="separator">
{{- range $index, $el := . -}}
<a class="tag" href="{{ ( printf "tags/%s/" ( . | urlize ) ) | relLangURL }}">{{ . }}</a>
{{- end -}}
</span>

View File

@@ -0,0 +1,21 @@
# theme.toml template for a Hugo theme
# See https://github.com/gohugoio/hugoThemes#themetoml for an example
name = "Anatole"
license = "MIT"
licenselink = "https://github.com/lxndrblz/anatole/blob/master/LICENSE"
description = "Anatole is a beautiful minimalist two-column hugo theme based on farbox-theme-Anatole."
homepage = "https://github.com/lxndrblz/anatole/"
tags = ["blog", "responsive", "clean", "minimalist", "minimal", "personal", "dark"]
features = ["blog", "seo", "responsive", "mobile", "disqus", "fontawesome", "math"]
min_version = "0.53.0"
[author]
name = "Alexander Bilz"
homepage = "https://alexbilz.com"
# If porting an existing theme
[original]
author = "Cai Cai"
homepage = "https://www.caicai.me/"
repo = "https://github.com/hi-caicai/farbox-theme-Anatole"