mirror of
https://github.com/Smaug123/static-site-pipeline
synced 2025-10-10 18:28:53 +00:00
Import Hugo
This commit is contained in:
2
hugo/themes/anatole/.gitattributes
vendored
Normal file
2
hugo/themes/anatole/.gitattributes
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
4
hugo/themes/anatole/.gitignore
vendored
Normal file
4
hugo/themes/anatole/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
**/themes/
|
||||
demo/
|
||||
.hugo/*
|
||||
!.hugo/version
|
20
hugo/themes/anatole/LICENSE
Normal file
20
hugo/themes/anatole/LICENSE
Normal 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.
|
3
hugo/themes/anatole/README.md
Normal file
3
hugo/themes/anatole/README.md
Normal 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.
|
8
hugo/themes/anatole/archetypes/post.md
Normal file
8
hugo/themes/anatole/archetypes/post.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
date: {{ .Date }}
|
||||
Description: ""
|
||||
Tags: []
|
||||
Categories: []
|
||||
DisableComments: false
|
||||
---
|
918
hugo/themes/anatole/assets/css/style.css
Normal file
918
hugo/themes/anatole/assets/css/style.css
Normal 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;
|
||||
}
|
||||
}
|
51
hugo/themes/anatole/assets/js/anatole-header.js
Normal file
51
hugo/themes/anatole/assets/js/anatole-header.js
Normal 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();
|
458
hugo/themes/anatole/assets/js/medium-zoom.js
Normal file
458
hugo/themes/anatole/assets/js/medium-zoom.js
Normal 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'));
|
8
hugo/themes/anatole/layouts/404.html
Normal file
8
hugo/themes/anatole/layouts/404.html
Normal 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 }}
|
21
hugo/themes/anatole/layouts/_default/baseof.html
Normal file
21
hugo/themes/anatole/layouts/_default/baseof.html
Normal 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>
|
18
hugo/themes/anatole/layouts/_default/list.html
Normal file
18
hugo/themes/anatole/layouts/_default/list.html
Normal 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 }}
|
42
hugo/themes/anatole/layouts/_default/single.html
Normal file
42
hugo/themes/anatole/layouts/_default/single.html
Normal 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 }}
|
3
hugo/themes/anatole/layouts/_default/single.md
Normal file
3
hugo/themes/anatole/layouts/_default/single.md
Normal file
@@ -0,0 +1,3 @@
|
||||
{{ define "main" }}
|
||||
{{.Content}}
|
||||
{{ end }}
|
30
hugo/themes/anatole/layouts/index.html
Normal file
30
hugo/themes/anatole/layouts/index.html
Normal 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"> </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 }}
|
2
hugo/themes/anatole/layouts/partials/footer.html
Normal file
2
hugo/themes/anatole/layouts/partials/footer.html
Normal file
@@ -0,0 +1,2 @@
|
||||
{{if .Params.gallery }} {{- partial "medium-zoom.html" . -}} {{- partial "gallery.html" . -}}{{ end }}
|
||||
{{if .Params.math }} {{- partial "math.html" . -}} {{ end }}
|
17
hugo/themes/anatole/layouts/partials/gallery.html
Normal file
17
hugo/themes/anatole/layouts/partials/gallery.html
Normal 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 -}}
|
84
hugo/themes/anatole/layouts/partials/head.html
Normal file
84
hugo/themes/anatole/layouts/partials/head.html
Normal 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>
|
79
hugo/themes/anatole/layouts/partials/math.html
Normal file
79
hugo/themes/anatole/layouts/partials/math.html
Normal 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 -}}
|
5
hugo/themes/anatole/layouts/partials/medium-zoom.html
Normal file
5
hugo/themes/anatole/layouts/partials/medium-zoom.html
Normal 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>
|
25
hugo/themes/anatole/layouts/partials/navbar.html
Normal file
25
hugo/themes/anatole/layouts/partials/navbar.html
Normal 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">
|
||||
|
||||
</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>
|
27
hugo/themes/anatole/layouts/partials/sidebar.html
Normal file
27
hugo/themes/anatole/layouts/partials/sidebar.html
Normal 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"> </span>
|
||||
</a>
|
||||
</td>
|
||||
{{ end }}
|
||||
</tr>
|
||||
</table>
|
||||
<div class="footer">
|
||||
<div class="by_farbox">© {{ .Site.Params.author }} {{ now.Format "2006"}} </div>
|
||||
</div>
|
||||
</div>
|
@@ -0,0 +1,5 @@
|
||||
<span class="separator">
|
||||
{{- range $index, $el := . -}}
|
||||
<a class="category" href="{{ ( printf "categories/%s/" ( . | urlize ) ) | relLangURL }}">{{ . }}</a>
|
||||
{{- end -}}
|
||||
</span>
|
5
hugo/themes/anatole/layouts/partials/taxonomy/tags.html
Normal file
5
hugo/themes/anatole/layouts/partials/taxonomy/tags.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<span class="separator">
|
||||
{{- range $index, $el := . -}}
|
||||
<a class="tag" href="{{ ( printf "tags/%s/" ( . | urlize ) ) | relLangURL }}">{{ . }}</a>
|
||||
{{- end -}}
|
||||
</span>
|
21
hugo/themes/anatole/theme.toml
Normal file
21
hugo/themes/anatole/theme.toml
Normal 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"
|
Reference in New Issue
Block a user