init blog
commit
15e4a08675
@ -0,0 +1,31 @@
|
||||
target
|
||||
.idea/
|
||||
test_site/public
|
||||
test_site_i18n/public
|
||||
docs/public
|
||||
docs/out
|
||||
|
||||
small-blog
|
||||
medium-blog
|
||||
big-blog
|
||||
huge-blog
|
||||
extra-huge-blog
|
||||
small-kb
|
||||
medium-kb
|
||||
huge-kb
|
||||
|
||||
current.bench
|
||||
now.bench
|
||||
*.zst
|
||||
|
||||
# snapcraft artifacts
|
||||
snap/.snapcraft
|
||||
parts
|
||||
prime
|
||||
stage
|
||||
|
||||
# nixos dependencies snippet
|
||||
shell.nix
|
||||
# vim temporary files
|
||||
**/.*.sw*
|
||||
.swp
|
@ -0,0 +1,45 @@
|
||||
# The URL the site will be built for
|
||||
base_url = "https://www.loom.run"
|
||||
|
||||
# Whether to automatically compile all Sass files in the sass directory
|
||||
compile_sass = true
|
||||
|
||||
# Whether to build a search index to be used later on by a JavaScript library
|
||||
build_search_index = false
|
||||
taxonomies = [{ name = "tags" }]
|
||||
title = "Loom Blog"
|
||||
|
||||
[markdown]
|
||||
# Whether to do syntax highlighting
|
||||
# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
|
||||
highlight_code = true
|
||||
|
||||
[extra]
|
||||
# Put all your custom variables here
|
||||
copyright = "JimZhang"
|
||||
icp= "皖ICP备20008287号-1"
|
||||
mode = "toggle"
|
||||
# config social icon info in the footer
|
||||
[[extra.social]]
|
||||
icon = "github"
|
||||
name = "GitHub"
|
||||
url = "https://github.com/zzl221000"
|
||||
|
||||
[[extra.social]]
|
||||
icon = "twitter"
|
||||
name = "Twitter"
|
||||
url = "https://github.com/XXXMrG/"
|
||||
|
||||
[[extra.social]]
|
||||
icon = "gitlab"
|
||||
name = "GitLab"
|
||||
url = "https://gitlab.com/your-name/"
|
||||
|
||||
[[extra.translations.en]]
|
||||
show_more = "Read more ⟶"
|
||||
previous_page = "← Previous"
|
||||
next_page = "Next →"
|
||||
posted_on = "on "
|
||||
posted_by = "Published by"
|
||||
read_time = "minute read"
|
||||
all_tags = "All tags"
|
@ -0,0 +1,4 @@
|
||||
+++
|
||||
paginate_by = 10
|
||||
sort_by = "date"
|
||||
+++
|
@ -0,0 +1,8 @@
|
||||
+++
|
||||
path = "posts"
|
||||
title = "Posts"
|
||||
paginate_by = 10
|
||||
template = "posts.html"
|
||||
transparent = true
|
||||
sort_by = "date"
|
||||
+++
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My first post"
|
||||
date = 2019-11-27
|
||||
+++
|
||||
|
||||
This is my first blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,8 @@
|
||||
+++
|
||||
title = "My second post 2"
|
||||
date = 2019-11-29
|
||||
[taxonomies]
|
||||
tags=["Demo","Test"]
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = "My second post"
|
||||
date = 2019-11-28
|
||||
+++
|
||||
|
||||
This is my second blog post.
|
@ -0,0 +1 @@
|
||||
@font-face{font-family:'MapleMono';src:url("/fonts/MapleMono-Regular.ttf");font-weight:normal;font-style:normal;font-display:block}@font-face{font-family:'MapleMono';src:url("/fonts/MapleMono-Bold.ttf");font-weight:bold;font-style:normal;font-display:block}@font-face{font-family:'MapleMono';src:url("/fonts/MapleMono-Italic.ttf");font-weight:normal;font-style:italic;font-display:block}@font-face{font-family:'MapleMono';src:url("/fonts/MapleMono-Bolditalic.ttf");font-weight:bold;font-style:italic;font-display:block}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -0,0 +1,23 @@
|
||||
function setTheme(mode) {
|
||||
localStorage.setItem("theme-storage", mode);
|
||||
if (mode === "dark") {
|
||||
document.documentElement.setAttribute('data-theme', 'dark')
|
||||
document.getElementById("dark-mode-toggle").innerHTML = "<i data-feather=\"sun\"></i>";
|
||||
feather.replace()
|
||||
} else if (mode === "light") {
|
||||
document.documentElement.setAttribute('data-theme', 'light')
|
||||
document.getElementById("dark-mode-toggle").innerHTML = "<i data-feather=\"moon\"></i>";
|
||||
feather.replace()
|
||||
}
|
||||
}
|
||||
|
||||
function toggleTheme() {
|
||||
if (localStorage.getItem("theme-storage") === "light") {
|
||||
setTheme("dark");
|
||||
} else if (localStorage.getItem("theme-storage") === "dark") {
|
||||
setTheme("light");
|
||||
}
|
||||
}
|
||||
|
||||
var savedTheme = localStorage.getItem("theme-storage") || "light";
|
||||
setTheme(savedTheme);
|
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
html[data-theme="dark"]{--page-back-color: rgb(27, 27, 27);--main-text-color: rgb(240, 240, 240);--main-back-color: rgb(17, 17, 17);--link-text-color: rgb(120, 217, 113);--target-highlight-color: rgb(255, 255, 0);--github-icon-url: url(https://img.icons8.com/material-sharp/64/f0f0f0/github.png);--twitter-icon-url: url(https://img.icons8.com/material-sharp/64/f0f0f0/twitter-squared.png);--email-icon-url: url(https://img.icons8.com/material-sharp/64/f0f0f0/email.png);--coffee-icon-url: url(https://img.icons8.com/material-sharp/64/f0f0f0/kawaii-coffee.png);--webring-icon-url: url(https://webring.xxiivv.com/icon.white.svg);--rss-icon-url: url(https://img.icons8.com/material/64/f0f0f0/rss.png);--search-icon-url: url(https://img.icons8.com/material-sharp/64/f0f0f0/search.png);--cc-icon-url: url(https://img.icons8.com/material-outlined/64/f0f0f0/creative-commons.png);--attribution-icon-url: url(https://img.icons8.com/material-outlined/64/f0f0f0/creative-commons-by.png);--non_com-icon-url: url(https://img.icons8.com/material-outlined/64/f0f0f0/creative-commons-nc.png);--share_alike-icon-url: url(https://img.icons8.com/material-outlined/64/f0f0f0/creative-commons-sa.png);--copyright-icon-url: url(https://img.icons8.com/material-outlined/64/f0f0f0/copyright.png)}
|
@ -0,0 +1 @@
|
||||
html[data-theme="light"]{--page-back-color: rgb(240, 240, 240);--main-text-color: rgb(0, 0, 0);--main-back-color: rgb(255, 255, 255);--link-text-color: rgb(255, 76, 31);--target-highlight-color: rgb(125, 0, 255);--github-icon-url: url(https://img.icons8.com/material-sharp/64/000000/github.png);--twitter-icon-url: url(https://img.icons8.com/material-sharp/64/000000/twitter-squared.png);--email-icon-url: url(https://img.icons8.com/material-sharp/64/000000/email.png);--coffee-icon-url: url(https://img.icons8.com/material-sharp/64/000000/kawaii-coffee.png);--webring-icon-url: url(https://webring.xxiivv.com/icon.black.svg);--rss-icon-url: url(https://img.icons8.com/material/64/000000/rss.png);--search-icon-url: url(https://img.icons8.com/material-sharp/64/000000/search.png);--cc-icon-url: url(https://img.icons8.com/material-outlined/64/000000/creative-commons.png);--attribution-icon-url: url(https://img.icons8.com/material-outlined/64/000000/creative-commons-by.png);--non_com-icon-url: url(https://img.icons8.com/material-outlined/64/000000/creative-commons-nc.png);--share_alike-icon-url: url(https://img.icons8.com/material-outlined/64/000000/creative-commons-sa.png);--copyright-icon-url: url(https://img.icons8.com/material-outlined/64/000000/copyright.png)}
|
@ -0,0 +1,31 @@
|
||||
@font-face {
|
||||
font-family: 'MapleMono';
|
||||
src: url("/fonts/MapleMono-Regular.ttf");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-display: block
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'MapleMono';
|
||||
src: url("/fonts/MapleMono-Bold.ttf");
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
font-display: block
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'MapleMono';
|
||||
src: url("/fonts/MapleMono-Italic.ttf");
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
font-display: block
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'MapleMono';
|
||||
src: url("/fonts/MapleMono-Bolditalic.ttf");
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
font-display: block
|
||||
}
|
@ -0,0 +1,364 @@
|
||||
@import "theme/dark";
|
||||
@import "theme/light";
|
||||
:root {
|
||||
--text-0: rgba(0, 0, 0, 87%);
|
||||
--text-1: rgba(0, 0, 0, 66%);
|
||||
--bordercl: rebeccapurple;
|
||||
--bg-0: #fff;
|
||||
--bg-1: #f2f2f2;
|
||||
|
||||
--primary-color: #ef5350;
|
||||
--hover-color: white;
|
||||
}
|
||||
// -------------- THEME SWITCHER -------------- //
|
||||
@mixin dark-appearance {
|
||||
filter: invert(1);
|
||||
img {
|
||||
filter: invert(1);
|
||||
|
||||
&.ioda {
|
||||
filter: invert(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
body[a="dark"] {
|
||||
@include dark-appearance;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body[a="auto"] {
|
||||
@include dark-appearance;
|
||||
}
|
||||
}
|
||||
// -------------------------------------------- //
|
||||
|
||||
// bg color is also needed in html in order to
|
||||
// block body's background propagation
|
||||
// see: https://stackoverflow.com/a/61265706
|
||||
html,
|
||||
input,
|
||||
select,
|
||||
textarea,
|
||||
label,
|
||||
button {
|
||||
color: var(--main-text-color);
|
||||
background-color: var(--page-back-color);
|
||||
font-family: 'MapleMono';
|
||||
font-size: 1rem;
|
||||
line-height: 1.5;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
.post-meta {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
margin-top: 3rem;
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 2rem 0;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 1rem 0;
|
||||
}
|
||||
|
||||
li {
|
||||
margin: 0.4rem 0;
|
||||
}
|
||||
|
||||
*:target {
|
||||
background-color: var(--target-highlight-color);
|
||||
color: var(--main-back-color);
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
position: relative;
|
||||
background-color: var(--main-back-color);
|
||||
min-height: calc(100vh - 8rem);
|
||||
max-width: 70ch;
|
||||
margin: 2rem auto;
|
||||
padding: 2rem 2rem;
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 2rem 0;
|
||||
text-align: center;
|
||||
border: 0;
|
||||
color: var(--main-text-color);
|
||||
|
||||
&:before {
|
||||
content: "| | |";
|
||||
}
|
||||
&:after {
|
||||
content: attr(data-content) "| | |";
|
||||
}
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table,
|
||||
th,
|
||||
td {
|
||||
border: thin solid var(--main-text-color);
|
||||
border-collapse: collapse;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
|
||||
code {
|
||||
color: white;
|
||||
background: black;
|
||||
}
|
||||
code {
|
||||
color: var(--main-back-color);
|
||||
background-color: var(--main-text-color);
|
||||
padding: 0.15rem;
|
||||
}
|
||||
div.highlighter-rouge code {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
white-space: pre-wrap;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
font-style: italic;
|
||||
border: thin solid black;
|
||||
padding: 1rem;
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--link-text-color);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.post_date {
|
||||
font-size: 1rem;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
margin-bottom: 2rem;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
.github_icon {
|
||||
content: var(--github-icon-url);
|
||||
}
|
||||
|
||||
.twitter_icon {
|
||||
content: var(--twitter-icon-url);
|
||||
}
|
||||
|
||||
.email_icon {
|
||||
content: var(--email-icon-url);
|
||||
}
|
||||
|
||||
.coffee_icon {
|
||||
content: var(--coffee-icon-url);
|
||||
}
|
||||
|
||||
.search_icon {
|
||||
content: var(--search-icon-url);
|
||||
}
|
||||
|
||||
.webring_icon {
|
||||
content: var(--webring-icon-url);
|
||||
}
|
||||
|
||||
.rss_icon {
|
||||
content: var(--rss-icon-url);
|
||||
}
|
||||
|
||||
a.cc_list {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.copyright_icon {
|
||||
content: var(--copyright-icon-url);
|
||||
height: 16px;
|
||||
margin: -3px;
|
||||
}
|
||||
|
||||
.cc_icon {
|
||||
content: var(--cc-icon-url);
|
||||
height: 16px;
|
||||
margin: -3px;
|
||||
}
|
||||
|
||||
.attribution_icon {
|
||||
content: var(--attribution-icon-url);
|
||||
height: 16px;
|
||||
margin: -3px;
|
||||
}
|
||||
|
||||
.non_com_icon {
|
||||
content: var(--non_com-icon-url);
|
||||
height: 16px;
|
||||
margin: -3px;
|
||||
}
|
||||
|
||||
.share_alike_icon {
|
||||
content: var(--share_alike-icon-url);
|
||||
height: 16px;
|
||||
margin: -3px;
|
||||
}
|
||||
|
||||
.octicon:hover {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
h1 .octicon {
|
||||
margin-left: -2.4em;
|
||||
margin-right: calc(2.4em - 1.8em);
|
||||
}
|
||||
|
||||
h2 .octicon {
|
||||
margin-left: -2.9em;
|
||||
margin-right: calc(2.9em - 1.8em);
|
||||
}
|
||||
|
||||
h3 .octicon {
|
||||
margin-left: -3.4em;
|
||||
margin-right: calc(3.4em - 1.8em);
|
||||
}
|
||||
|
||||
h4 .octicon {
|
||||
margin-left: -3.9em;
|
||||
margin-right: calc(3.9em - 1.8em);
|
||||
}
|
||||
|
||||
h5 .octicon {
|
||||
margin-left: -4.4em;
|
||||
margin-right: calc(4.4em - 1.8em);
|
||||
}
|
||||
|
||||
h6 .octicon {
|
||||
margin-left: -4.9em;
|
||||
margin-right: calc(4.9em - 1.8em);
|
||||
}
|
||||
|
||||
.octicon {
|
||||
fill: currentColor;
|
||||
visibility: visible;
|
||||
pointer-events: all;
|
||||
vertical-align: middle;
|
||||
width: 1.2em;
|
||||
height: 1.2em;
|
||||
}
|
||||
|
||||
input,
|
||||
select,
|
||||
textarea,
|
||||
label,
|
||||
button {
|
||||
border-radius: 0.3em;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
border: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.textfield {
|
||||
max-width: 100%;
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
|
||||
.narrowfield {
|
||||
width: 420px;
|
||||
}
|
||||
|
||||
.hp {
|
||||
display: none;
|
||||
}
|
||||
|
||||
textarea {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.textfield__input {
|
||||
border: 1px solid rgba(0, 0, 0, 0.12);
|
||||
border-radius: 0.3em;
|
||||
padding: 0.4em;
|
||||
width: 100%;
|
||||
max-width: -webkit-fill-available;
|
||||
}
|
||||
|
||||
.notify-me,
|
||||
.g-recaptcha {
|
||||
padding-bottom: 1rem;
|
||||
max-width: min-content;
|
||||
}
|
||||
|
||||
.button {
|
||||
border: 1px solid rgba(0, 0, 0, 0.12);
|
||||
background: var(--page-back-color);
|
||||
border-radius: 0.3em;
|
||||
padding: 0.4em;
|
||||
overflow: hidden;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: var(--main-text-color);
|
||||
color: var(--main-back-color);
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 2rem;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
padding: 0.5rem 0rem;
|
||||
}
|
||||
|
||||
.soc {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
margin-right: 1rem;
|
||||
}
|
||||
.soc:hover {
|
||||
color: var(--main-back-color);
|
||||
background: var(--link-text-color);
|
||||
}
|
||||
.footer-info {
|
||||
padding: var(--footer-padding);
|
||||
}
|
||||
|
||||
.list {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.horizon{
|
||||
display: flex;
|
||||
justify-content: end;
|
||||
.start {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
html[data-theme="dark"] {
|
||||
--page-back-color: rgb(27, 27, 27);
|
||||
--main-text-color: rgb(240, 240, 240);
|
||||
--main-back-color: rgb(17, 17, 17);
|
||||
--link-text-color: rgb(120, 217, 113);
|
||||
--target-highlight-color: rgb(255, 255, 0);
|
||||
--github-icon-url: url(https://img.icons8.com/material-sharp/64/f0f0f0/github.png);
|
||||
--twitter-icon-url: url(https://img.icons8.com/material-sharp/64/f0f0f0/twitter-squared.png);
|
||||
--email-icon-url: url(https://img.icons8.com/material-sharp/64/f0f0f0/email.png);
|
||||
--coffee-icon-url: url(https://img.icons8.com/material-sharp/64/f0f0f0/kawaii-coffee.png);
|
||||
--webring-icon-url: url(https://webring.xxiivv.com/icon.white.svg);
|
||||
--rss-icon-url: url(https://img.icons8.com/material/64/f0f0f0/rss.png);
|
||||
--search-icon-url: url(https://img.icons8.com/material-sharp/64/f0f0f0/search.png);
|
||||
--cc-icon-url: url(https://img.icons8.com/material-outlined/64/f0f0f0/creative-commons.png);
|
||||
--attribution-icon-url: url(https://img.icons8.com/material-outlined/64/f0f0f0/creative-commons-by.png);
|
||||
--non_com-icon-url: url(https://img.icons8.com/material-outlined/64/f0f0f0/creative-commons-nc.png);
|
||||
--share_alike-icon-url: url(https://img.icons8.com/material-outlined/64/f0f0f0/creative-commons-sa.png);
|
||||
--copyright-icon-url: url(https://img.icons8.com/material-outlined/64/f0f0f0/copyright.png);
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
html[data-theme="light"] {
|
||||
--page-back-color: rgb(240, 240, 240);
|
||||
--main-text-color: rgb(0, 0, 0);
|
||||
--main-back-color: rgb(255, 255, 255);
|
||||
--link-text-color: rgb(255, 76, 31);
|
||||
--target-highlight-color: rgb(125, 0, 255);
|
||||
--github-icon-url: url(https://img.icons8.com/material-sharp/64/000000/github.png);
|
||||
--twitter-icon-url: url(https://img.icons8.com/material-sharp/64/000000/twitter-squared.png);
|
||||
--email-icon-url: url(https://img.icons8.com/material-sharp/64/000000/email.png);
|
||||
--coffee-icon-url: url(https://img.icons8.com/material-sharp/64/000000/kawaii-coffee.png);
|
||||
--webring-icon-url: url(https://webring.xxiivv.com/icon.black.svg);
|
||||
--rss-icon-url: url(https://img.icons8.com/material/64/000000/rss.png);
|
||||
--search-icon-url: url(https://img.icons8.com/material-sharp/64/000000/search.png);
|
||||
--cc-icon-url: url(https://img.icons8.com/material-outlined/64/000000/creative-commons.png);
|
||||
--attribution-icon-url: url(https://img.icons8.com/material-outlined/64/000000/creative-commons-by.png);
|
||||
--non_com-icon-url: url(https://img.icons8.com/material-outlined/64/000000/creative-commons-nc.png);
|
||||
--share_alike-icon-url: url(https://img.icons8.com/material-outlined/64/000000/creative-commons-sa.png);
|
||||
--copyright-icon-url: url(https://img.icons8.com/material-outlined/64/000000/copyright.png);
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -0,0 +1,23 @@
|
||||
function setTheme(mode) {
|
||||
localStorage.setItem("theme-storage", mode);
|
||||
if (mode === "dark") {
|
||||
document.documentElement.setAttribute('data-theme', 'dark')
|
||||
document.getElementById("dark-mode-toggle").innerHTML = "<i data-feather=\"sun\"></i>";
|
||||
feather.replace()
|
||||
} else if (mode === "light") {
|
||||
document.documentElement.setAttribute('data-theme', 'light')
|
||||
document.getElementById("dark-mode-toggle").innerHTML = "<i data-feather=\"moon\"></i>";
|
||||
feather.replace()
|
||||
}
|
||||
}
|
||||
|
||||
function toggleTheme() {
|
||||
if (localStorage.getItem("theme-storage") === "light") {
|
||||
setTheme("dark");
|
||||
} else if (localStorage.getItem("theme-storage") === "dark") {
|
||||
setTheme("light");
|
||||
}
|
||||
}
|
||||
|
||||
var savedTheme = localStorage.getItem("theme-storage") || "light";
|
||||
setTheme(savedTheme);
|
@ -0,0 +1,21 @@
|
||||
{% import "macros/macros.html" as post_macros %}
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
{% include "partials/header.html" %}
|
||||
|
||||
<body>
|
||||
<div class="content">
|
||||
<div class="wrapper">
|
||||
{% include "partials/nav.html" %}
|
||||
|
||||
{# Post page is the default #}
|
||||
{% block main_content %}
|
||||
Nothing here?!
|
||||
{% endblock main_content %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -0,0 +1,15 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
<h1 class="title">
|
||||
<title>
|
||||
{{ section.title }}
|
||||
</title>
|
||||
</h1>
|
||||
<ul>
|
||||
<!-- If you are using pagination, section.pages will be empty. You need to use the paginator object -->
|
||||
{% for page in section.pages %}
|
||||
<li><a href="{{ page.permalink | safe }}">{{ page.title }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endblock content %}
|
@ -0,0 +1 @@
|
||||
{% extends "posts.html" %}
|
@ -0,0 +1,128 @@
|
||||
{% macro list_posts(pages, tag_name=false) %}
|
||||
<ul>
|
||||
{% if tag_name %}
|
||||
<li>{{ term.name }}</li>
|
||||
{% else %}
|
||||
<li>blog posts</li>
|
||||
{% endif -%}
|
||||
|
||||
<ul>
|
||||
{%- for page in pages %}
|
||||
{%- if page.draft %}
|
||||
{% continue %}
|
||||
{% endif -%}
|
||||
|
||||
<li >
|
||||
{{ page.date | date(format="%Y-%m-%d") }} <a href={{ page.permalink }}>{{page.title}}</a>
|
||||
</li>
|
||||
|
||||
{% endfor -%}
|
||||
</ul>
|
||||
</ul>
|
||||
{% endmacro list_posts %}
|
||||
|
||||
{% macro tags(page, short=false) %}
|
||||
{%- if page.taxonomies and page.taxonomies.tags %}
|
||||
<span class="post-tags-inline">
|
||||
{%- if short %}
|
||||
::
|
||||
{%- set sep = "," -%}
|
||||
{% else %}
|
||||
:: tags:
|
||||
{%- set sep = " " -%}
|
||||
{% endif -%}
|
||||
{%- for tag in page.taxonomies.tags %}
|
||||
<a class="post-tag" href="{{ get_taxonomy_url(kind='tags', name=tag) | safe }}">#{{ tag }}</a>
|
||||
{%- if not loop.last %}{{ sep | safe }}{% endif -%}
|
||||
{% endfor -%}
|
||||
</span>
|
||||
{% endif -%}
|
||||
{% endmacro tags %}
|
||||
|
||||
{% macro page_header(title) %}
|
||||
<h1 >
|
||||
{{ title }}
|
||||
</h1>
|
||||
{% endmacro content %}
|
||||
|
||||
{% macro content(page) %}
|
||||
<main>
|
||||
{% set words = page.word_count %}
|
||||
{% set time = page.reading_time %}
|
||||
{% if time < 1 %}
|
||||
{% set time = 1 %}
|
||||
{% endif %}
|
||||
<article>
|
||||
<div class="title">
|
||||
{#<h1 class="title">{{ page.title }}</h1>#}
|
||||
{{ post_macros::page_header(title=page.title) }}
|
||||
|
||||
{% if page.date %}
|
||||
<div class="meta">
|
||||
<span class="post_date">{{ page.date | date(format="%Y-%m-%d") }}</span>|
|
||||
{{ time }} {% if time > 1 %} mins{% else %}min{% endif %}
|
||||
|
||||
{% if page.draft %}
|
||||
|<span class="draft-label">DRAFT</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if page.taxonomies and page.taxonomies.tags %}
|
||||
<br>
|
||||
tags:
|
||||
{% for tag in page.taxonomies.tags %}
|
||||
<a href={{ get_taxonomy_url(kind='tags', name=tag) | safe }}>
|
||||
{{ tag }}</a>{% if loop.index != page.taxonomies.tags | length %},{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if page.extra.tldr %}
|
||||
<div class="tldr">
|
||||
<strong>tl;dr:</strong>
|
||||
{{ page.extra.tldr }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{# Optional table of contents #}
|
||||
{% if config.extra.toc | default(value=false) %}
|
||||
{% if page.toc %}
|
||||
<h1>Table of Contents</h1>
|
||||
<ul>
|
||||
{% for h1 in page.toc %}
|
||||
<li>
|
||||
<a href="{{ h1.permalink | safe }}">{{ h1.title }}</a>
|
||||
{% if h1.children %}
|
||||
<ul>
|
||||
{% for h2 in h1.children %}
|
||||
<li>
|
||||
<a href="{{ h2.permalink | safe }}">{{ h2.title }}</a>
|
||||
</li>
|
||||
|
||||
{% if h2.children %}
|
||||
<ul>
|
||||
{% for h3 in h2.children %}
|
||||
<li>
|
||||
<a href="{{ h3.permalink | safe }}">{{ h3.title }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<section class="body">
|
||||
{{ page.content | safe }}
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</main>
|
||||
{% endmacro content %}
|
@ -0,0 +1,4 @@
|
||||
{% extends "base.html" %}
|
||||
{% block main_content %}
|
||||
{{ post_macros::content(page=page)}}
|
||||
{% endblock main_content %}
|
@ -0,0 +1,20 @@
|
||||
<footer>
|
||||
<div style="display:flex">
|
||||
{% for social in config.extra.social %}
|
||||
<a class="soc" href={{ social.url }} title={{ social.name }}>
|
||||
<i data-feather={{ social.icon }}></i>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="footer-info">
|
||||
{{ now() | date(format="%Y") }} © {{ config.extra.copyright }} | <a
|
||||
href="https://beian.miit.gov.cn/" target="_blank">{{ config.extra.icp | default(value="icpcode") }}</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
{% if config.extra.social %}
|
||||
<script>
|
||||
feather.replace();
|
||||
</script>
|
||||
{% endif %}
|
||||
|
@ -0,0 +1,53 @@
|
||||
{% import "macros/macros.html" as post_macros %}
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
{# Site title #}
|
||||
{% set current_path = current_path | default(value="/") %}
|
||||
{% if current_path == "/" %}
|
||||
<title>
|
||||
{{ config.title }}
|
||||
|
||||
|
||||
</title>
|
||||
{% else %}
|
||||
<title>
|
||||
{{ page.title | default(value=config.title) | default(value="Post") }}
|
||||
</title>
|
||||
{% endif %}
|
||||
|
||||
{# Favicon #}
|
||||
{% if config.extra.favicon %}
|
||||
<link rel="icon" type="image/png" href={{ config.extra.favicon }} />
|
||||
{% endif %}
|
||||
|
||||
{# Font from cdn or disk #}
|
||||
{% if config.extra.use_cdn | default(value=false) %}
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jetbrains-mono@1.0.6/css/jetbrains-mono.min.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource/space-grotesk@4.5.8/index.min.css">
|
||||
{% else %}
|
||||
<link href={{ get_url(path="fonts.css") }} rel="stylesheet" />
|
||||
{% endif %}
|
||||
|
||||
{# if need icon, load feather.js #}
|
||||
{% if config.extra.social and config.extra.useCDN | default(value=false) %}
|
||||
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
||||
{% elif config.extra.social or config.extra.mode == "toggle" %}
|
||||
<script src={{ get_url(path="js/feather.min.js") }}></script>
|
||||
{% endif %}
|
||||
|
||||
{# RSS #}
|
||||
<link rel="alternate" type="application/atom+xml" title="{{ config.title }}" href="{{ get_url(path="atom.xml", trailing_slash=false) }}">
|
||||
|
||||
|
||||
<link rel="stylesheet" type="text/css" media="screen" href={{ get_url(path="no-style-please.css") }} />
|
||||
|
||||
|
||||
{% if config.extra.stylesheets %}
|
||||
{% for stylesheet in config.extra.stylesheets %}
|
||||
<link rel="stylesheet" href="{{ get_url(path=stylesheet) }}">
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</head>
|
@ -0,0 +1,15 @@
|
||||
<header>
|
||||
|
||||
|
||||
<nav class="horizon">
|
||||
{% set current_path = current_path | default(value="/") %}
|
||||
{% if current_path =="/" or current_path =="/posts/" or current_path is starting_with("/page/") %}
|
||||
{% else %}
|
||||
<a href="/" class="start">••</a>
|
||||
{% endif %}
|
||||
{% if config.extra.mode == "toggle" %}
|
||||
<a id="dark-mode-toggle" onclick="toggleTheme()" href=""></a>
|
||||
<script src={{ get_url(path="/js/themetoggle.js") }}></script>
|
||||
{% endif %}
|
||||
</nav>
|
||||
</header>
|
@ -0,0 +1,33 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block main_content %}
|
||||
|
||||
<h1>{{ config.title }}</h1>
|
||||
<main class="list">
|
||||
{%- if paginator %}
|
||||
{%- set show_pages = paginator.pages -%}
|
||||
{% else %}
|
||||
{% set section = get_section(path="posts/_index.md") %}
|
||||
{%- set show_pages = section.pages -%}
|
||||
{% endif -%}
|
||||
|
||||
{{ post_macros::list_posts(pages=show_pages) }}
|
||||
</main>
|
||||
|
||||
{% if paginator %}
|
||||
<ul class="pagination">
|
||||
{% if paginator.previous %}
|
||||
<span class="page-item page-prev">
|
||||
<a href={{ paginator.previous }} class="page-link" aria-label="Previous"><span aria-hidden="true">← Prev</span></a>
|
||||
</span>
|
||||
{% endif %}
|
||||
|
||||
{% if paginator.next %}
|
||||
<span class="page-item page-next">
|
||||
<a href={{ paginator.next }} class="page-link" aria-label="Next"><span aria-hidden="true">Next →</span></a>
|
||||
</span>
|
||||
{% endif %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% include "partials/footer.html" %}
|
||||
{% endblock main_content %}
|
@ -0,0 +1,19 @@
|
||||
{% extends "index.html" %}
|
||||
|
||||
|
||||
{% block main_content %}
|
||||
<h1 class="page-title">{{ config.extra.translations[lang][0].all_tags }}</h1>
|
||||
|
||||
<div class="tag-cloud">
|
||||
<ul class="tags">
|
||||
{% for term in terms %}
|
||||
<li>
|
||||
<a href="{{ term.permalink | safe }}">
|
||||
{{ term.name }} ({{ term.pages | length }} post{{ term.pages | length | pluralize }})
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{% endblock main_content %}
|
@ -0,0 +1,7 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block main_content %}
|
||||
|
||||
{{ post_macros::list_posts(pages=term.pages,tag_name=true) }}
|
||||
|
||||
{% endblock main_content %}
|
Loading…
Reference in New Issue