Initial commit
This commit is contained in:
commit
1522656f46
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
*.swp
|
59
LICENSE.md
Normal file
59
LICENSE.md
Normal file
@ -0,0 +1,59 @@
|
||||
All of the files in this repository are licensed under the MIT License, with the
|
||||
following exceptions:
|
||||
|
||||
static/header-bg-light.jpg: Pixabay License
|
||||
|
||||
----------------------
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018 Steven Engler
|
||||
|
||||
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.
|
||||
|
||||
----------------------
|
||||
|
||||
Pixabay License (29-01-2019)
|
||||
|
||||
Images and Videos on Pixabay are made available under the Pixabay License on the
|
||||
following terms. Under the Pixabay License you are granted an irrevocable,
|
||||
worldwide, non-exclusive and royalty free right to use, download, copy, modify
|
||||
or adapt the Images and Videos for commercial or non-commercial purposes.
|
||||
Attribution of the photographer or Pixabay is not required but is always
|
||||
appreciated.
|
||||
|
||||
The Pixabay License does not allow:
|
||||
|
||||
a. sale or distribution of Images or Videos as digital stock photos or as
|
||||
digital wallpapers;
|
||||
b. sale or distribution of Images or Videos e.g. as a posters, digital prints
|
||||
or physical products, without adding any additional elements or otherwise
|
||||
adding value;
|
||||
c. depiction of identifiable persons in an offensive, pornographic, obscene,
|
||||
immoral, defamatory or libelous way; or
|
||||
d. any suggestion that there is an endorsement of products and services by
|
||||
depicted persons, brands, and organisations, unless permission was granted.
|
||||
|
||||
Please be aware that while all Images and Videos on Pixabay are free to use for
|
||||
commercial and non-commercial purposes, depicted items in the Images or Videos,
|
||||
such as identifiable people, logos, brands, etc. may be subject to additional
|
||||
copyrights, property rights, privacy rights, trademarks etc. and may require the
|
||||
consent of a third party or the license of these rights - particularly for
|
||||
commercial applications. Pixabay does not represent or warrant that such
|
||||
consents or licenses have been obtained, and expressly disclaims any liability
|
||||
in this respect.
|
2
archetypes/default.md
Normal file
2
archetypes/default.md
Normal file
@ -0,0 +1,2 @@
|
||||
+++
|
||||
+++
|
0
layouts/404.html
Normal file
0
layouts/404.html
Normal file
62
layouts/_default/baseof.html
Normal file
62
layouts/_default/baseof.html
Normal file
@ -0,0 +1,62 @@
|
||||
{{ $themeStyleDefault := "light.css" }}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<base href="{{ .Site.BaseURL }}"/>
|
||||
{{ .Hugo.Generator }}{{/* See: https://gohugo.io/themes/creating/#theme-description-file */}}
|
||||
<title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title>
|
||||
<link rel="stylesheet" href="css/styles.css">
|
||||
<link id="theme_css" rel="stylesheet" href="css/themes/{{ .Site.Params.ThemeStyle | default $themeStyleDefault }}">
|
||||
{{ if .Site.Params.ThemeStyleSwitcher }}
|
||||
<script src="js/theme-switcher.js"></script>
|
||||
{{ end }}
|
||||
</head>
|
||||
<body>
|
||||
<input class="show-hide-menu-input" style="display:none;" autocomplete="off" type="checkbox" id="toggle-1">
|
||||
<div class="main">
|
||||
<div class="header">
|
||||
<div class="header-content">
|
||||
<div class="title">
|
||||
<a href="{{ .Site.BaseURL }}">{{ .Site.Title }}</a>
|
||||
</div>
|
||||
<div>
|
||||
<div class="header-right">
|
||||
{{ if .Site.Params.ThemeStyleSwitcher }}
|
||||
<div id="change-theme-button" style="display:none;" class="clickable-header-label">
|
||||
<img class="color-adapting-image" src="" onclick="toggle_theme()"></img>
|
||||
</div>
|
||||
{{ end }}
|
||||
<label id="show-hide-menu-label" class="clickable-header-label" for="toggle-1">
|
||||
<img class="color-adapting-image" src="images/hamburger.svg" alt="menu button">
|
||||
</label>
|
||||
</div>
|
||||
<label class="overlay" for="toggle-1"></label>
|
||||
{{ if .Site.Menus.main }}
|
||||
<div class="dont-show">
|
||||
Links:
|
||||
</div>
|
||||
<ul class="links">
|
||||
{{ range .Site.Menus.main.ByWeight }}
|
||||
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="body">
|
||||
<div class="body-content">
|
||||
{{ block "main" . }}{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
{{ if .Site.Params.FooterText }}
|
||||
{{ .Site.Params.FooterText }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
31
layouts/_default/list.html
Normal file
31
layouts/_default/list.html
Normal file
@ -0,0 +1,31 @@
|
||||
{{ define "title" }}{{ .Title }} – {{ .Site.Title }}{{ end }}
|
||||
{{ define "main" }}
|
||||
{{ .Content }}
|
||||
<div class="title-header">
|
||||
<h1>Posts</h1>
|
||||
</div>
|
||||
{{ range .Pages }}
|
||||
<article class="all-list">
|
||||
<div class="title-list">
|
||||
<h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
|
||||
<div class="title-list-date">
|
||||
{{ if eq .Date.IsZero false }}
|
||||
<time>{{ .Date.Format "Monday, January 2, 2006" }}</time>
|
||||
{{ end }}
|
||||
{{ if (and (eq .Lastmod.IsZero false) (ne .Lastmod .Date)) }}
|
||||
(updated)
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="body-list">
|
||||
<p></p> {{/* Spacing is weird if we don't include this */}}
|
||||
<p>
|
||||
{{ .Summary }}
|
||||
</p>
|
||||
{{ if .Truncated }}
|
||||
<a href="{{ .RelPermalink }}">Read More…</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</article>
|
||||
{{ end }}
|
||||
{{ end }}
|
18
layouts/_default/single.html
Normal file
18
layouts/_default/single.html
Normal file
@ -0,0 +1,18 @@
|
||||
{{ define "title" }}{{ .Title }} – {{ .Site.Title }}{{ end }}
|
||||
{{ define "main" }}
|
||||
<div class="title-header">
|
||||
<h1>{{ .Title }}</h1>
|
||||
<div class="title-header-date">
|
||||
{{ if eq .Date.IsZero false }}
|
||||
<time>{{ .Date.Format "Monday, January 2, 2006" }}</time>
|
||||
{{ end }}
|
||||
{{ if (and (eq .Lastmod.IsZero false) (ne .Lastmod .Date)) }}
|
||||
— last updated <time>{{ .Lastmod.Format "January 2, 2006" }}</time>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ .Content }}
|
||||
{{ end }}
|
||||
|
||||
|
||||
|
30
layouts/index.html
Normal file
30
layouts/index.html
Normal file
@ -0,0 +1,30 @@
|
||||
{{ define "main" }}
|
||||
{{ .Content }}
|
||||
{{ if gt ( len ( where .Pages "Section" "posts" )) 0 }}
|
||||
<h2>Recent Posts</h2>
|
||||
{{ range first 2 ( where .Pages "Section" "posts" ) }}
|
||||
<article class="all-list">
|
||||
<div class="title-list">
|
||||
<h3><a href="{{ .RelPermalink }}">{{ .Title }}</a></h3>
|
||||
<div class="title-list-date">
|
||||
{{ if eq .Date.IsZero false }}
|
||||
<time>{{ .Date.Format "Monday, January 2, 2006" }}</time>
|
||||
{{ end }}
|
||||
{{ if (and (eq .Lastmod.IsZero false) (ne .Lastmod .Date)) }}
|
||||
(updated)
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="body-list">
|
||||
<p></p> {{/* Spacing is weird if we don't include this */}}
|
||||
<p>
|
||||
{{ .Summary }}
|
||||
</p>
|
||||
{{ if .Truncated }}
|
||||
<a href="{{ .RelPermalink }}">Read More…</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</article>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
379
static/css/styles.css
Normal file
379
static/css/styles.css
Normal file
@ -0,0 +1,379 @@
|
||||
h1 { font-size: 1.4em; }
|
||||
h2 { font-size: 1.22em; }
|
||||
h3 { font-size: 1.15em; }
|
||||
h4 { font-size: 1.05em; }
|
||||
h5 { font-size: .83em; }
|
||||
h6 { font-size: .75em; }
|
||||
|
||||
h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 1.5em;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.dont-show {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Improvements to Hugo Chroma syntax highlighting */
|
||||
|
||||
.highlight > * {
|
||||
padding: 0.5em;
|
||||
border: 2px solid #E0E0E0;
|
||||
}
|
||||
|
||||
.highlight pre {
|
||||
margin: 0px;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.highlight table td:last-child {
|
||||
/* needed until this bug is fixed: https://github.com/alecthomas/chroma/issues/225 */
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
code {
|
||||
font-size: 98%;
|
||||
}
|
||||
|
||||
:not(pre) > code {
|
||||
/* inline code elements */
|
||||
background-color: rgba(25, 25, 25, 0.05);
|
||||
border-radius: 5px;
|
||||
font-size: 80%;
|
||||
padding-top: 0.2em;
|
||||
padding-bottom: 0.2em;
|
||||
padding-left: 0.4em;
|
||||
padding-right: 0.4em;
|
||||
}
|
||||
|
||||
/* ************************ */
|
||||
|
||||
blockquote {
|
||||
color: #404040;
|
||||
border-left: 0.25em solid #CCC;
|
||||
padding-left: 0.5em;
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
|
||||
.title-header {
|
||||
margin-top: 1.5em;
|
||||
margin-bottom: 1.5em;
|
||||
}
|
||||
|
||||
.title-header > h1{
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.3em;
|
||||
}
|
||||
|
||||
.title-header-date {
|
||||
color: rgb(90, 90, 90);
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
.title-list > h2, .title-list > h3, .title-list > h4, .title-list > h5, .title-list > h6{
|
||||
margin-bottom: 0.1em;
|
||||
}
|
||||
|
||||
.body-list p {
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.title-list-date {
|
||||
color: rgb(90, 90, 90);
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
.links {
|
||||
font-size: 120%;
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
margin-top: 9pt;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
overflow: hidden;
|
||||
transition: all 0.2s;
|
||||
-webkit-overflow-scrolling: touch; /* this needs to go here for some reason */
|
||||
}
|
||||
|
||||
.links li {
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
.links li > * {
|
||||
display:inline-block;
|
||||
}
|
||||
|
||||
.links li:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.links a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.links a:hover {
|
||||
color: #505050;
|
||||
}
|
||||
|
||||
.overlay {
|
||||
position: fixed;
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-color: rgba(0, 0, 0, 0.7);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.header-right {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.header-right * {
|
||||
margin-left: 0.8em;
|
||||
}
|
||||
|
||||
.header-right *:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.clickable-header-label {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.clickable-header-label * {
|
||||
height: 1em;
|
||||
}
|
||||
|
||||
#show-hide-menu-label {
|
||||
display: none;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 13pt;
|
||||
font-family: Lato, Arial, Helvetica, sans-serif;
|
||||
line-height: 1.4em;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-weight: bold;
|
||||
font-size: 140%;
|
||||
line-height: 1em;
|
||||
}
|
||||
|
||||
.title a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.header {
|
||||
background-color: lightgray;
|
||||
background-size: 100%;
|
||||
background-position: bottom;
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.header-content {
|
||||
margin: 15pt;
|
||||
position: relative; /* so that "position:absolute" works for the menu label */
|
||||
}
|
||||
|
||||
.body {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.body-content {
|
||||
margin: 15pt;
|
||||
}
|
||||
|
||||
/* Image/Figure formatting */
|
||||
|
||||
.body-content :not(figure) img {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
max-width: 70%;
|
||||
max-height: 40vw; /* if the image is really tall, we don't want the width to be 70% */
|
||||
}
|
||||
|
||||
.body-content figure {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
max-width: 70%;
|
||||
}
|
||||
|
||||
.body-content figure img {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-bottom: 0.5em;
|
||||
max-width: 100%;
|
||||
max-height: 40vw; /* if the image is really tall, we don't want the width to be 70% */
|
||||
}
|
||||
|
||||
.body-content figure figcaption {
|
||||
font-size: 90%;
|
||||
line-height: 1.5em;
|
||||
padding-bottom: 0.3em;
|
||||
border-bottom: 2px solid lightgray;
|
||||
}
|
||||
|
||||
.body-content figure figcaption * {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
@media only screen and (orientation: portrait) {
|
||||
.body-content :not(figure) img {
|
||||
max-height: 100vw;
|
||||
}
|
||||
|
||||
.body-content figure img {
|
||||
max-height: 100vw;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 400pt) {
|
||||
.body-content :not(figure) img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.body-content figure {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.body-content figure figcaption {
|
||||
margin-left: 5%;
|
||||
margin-right: 5%;
|
||||
}
|
||||
}
|
||||
|
||||
/* ************************ */
|
||||
|
||||
.main {
|
||||
width: 700pt; /* make sure to also change this in the media query */
|
||||
margin: 0 auto;
|
||||
margin-top: 10pt;
|
||||
margin-bottom: 10pt;
|
||||
box-sizing: border-box;
|
||||
box-shadow: 0 0 10px rgba(50, 50, 50, .17);
|
||||
}
|
||||
|
||||
.footer {
|
||||
text-align: center;
|
||||
padding-bottom: 10pt;
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (orientation: portrait) {
|
||||
.header {
|
||||
top: 0;
|
||||
position: sticky;
|
||||
position: -webkit-sticky; /* needed for iOS */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (max-width: 700pt) {
|
||||
.main {
|
||||
width: 100%;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 12pt;
|
||||
background-color: white;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 400pt) {
|
||||
.clickable-header-label * {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
#show-hide-menu-label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.show-hide-menu-input:checked ~ .main .links {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
right: 0;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
.show-hide-menu-input:checked ~ .main .overlay {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
transition: opacity 0.3s;
|
||||
}
|
||||
|
||||
.links {
|
||||
display: block;
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
overflow-y: scroll;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
right: -100px; /* start to the right for the transition */
|
||||
min-width: 75%;
|
||||
z-index: 3;
|
||||
background-color: rgb(247, 247, 247);
|
||||
padding: 10pt;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.links li {
|
||||
margin-right: 0;
|
||||
border-bottom: solid 1px gray;
|
||||
}
|
||||
|
||||
.links li > * {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
padding: 13px;
|
||||
}
|
||||
|
||||
.links li:first-child {
|
||||
border-top: solid 1px gray;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
.header-content {
|
||||
margin: 10pt;
|
||||
}
|
||||
|
||||
.body-content {
|
||||
margin: 10pt;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 120%
|
||||
}
|
||||
}
|
54
static/css/themes/dark.css
Normal file
54
static/css/themes/dark.css
Normal file
@ -0,0 +1,54 @@
|
||||
a {
|
||||
color: #A1A1EA;
|
||||
}
|
||||
|
||||
:not(pre) > code {
|
||||
/* inline code elements */
|
||||
background-color: rgba(90, 90, 90, 0.25);
|
||||
}
|
||||
|
||||
a > code {
|
||||
background-color: rgba(65, 65, 170, 0.3);
|
||||
}
|
||||
|
||||
body {
|
||||
color: rgb(210, 210, 210);
|
||||
background-color: rgb(25, 25, 25);
|
||||
}
|
||||
|
||||
blockquote {
|
||||
color: rgb(170, 170, 170);
|
||||
border-left: 0.25em solid #444;
|
||||
}
|
||||
|
||||
.color-adapting-image {
|
||||
filter: invert(80%);
|
||||
}
|
||||
|
||||
.header {
|
||||
background-color: rgb(40, 40, 40); /* still want a background color before the image loads */
|
||||
background-image: url(../../images/header-bg-dark.jpg);
|
||||
}
|
||||
|
||||
.main {
|
||||
background-color: rgb(12, 12, 12);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.footer {
|
||||
color: rgb(160, 160, 160);
|
||||
}
|
||||
|
||||
.title-header-date {
|
||||
color: rgb(150, 150, 150);
|
||||
}
|
||||
|
||||
.title-list-date {
|
||||
color: rgb(150, 150, 150);
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 400pt) {
|
||||
.links {
|
||||
background-color: rgb(30, 30, 30);
|
||||
}
|
||||
}
|
33
static/css/themes/light.css
Normal file
33
static/css/themes/light.css
Normal file
@ -0,0 +1,33 @@
|
||||
a {
|
||||
color: #0000A0;
|
||||
}
|
||||
|
||||
:not(pre) > code {
|
||||
/* inline code elements */
|
||||
background-color: rgba(25, 25, 25, 0.05);
|
||||
}
|
||||
|
||||
a > code {
|
||||
background-color: rgba(15, 15, 150, 0.05);
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: rgb(247, 247, 247);
|
||||
}
|
||||
|
||||
blockquote {
|
||||
color: #404040;
|
||||
border-left: 0.25em solid #CCC;
|
||||
}
|
||||
|
||||
.header {
|
||||
background-image: url(../../images/header-bg-light.jpg);
|
||||
}
|
||||
|
||||
.main {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.footer {
|
||||
color: #383838;
|
||||
}
|
3
static/images/hamburger.svg
Normal file
3
static/images/hamburger.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid meet" viewBox="119.0113345192303 189.00247805341664 83.99999999999997 65.28000000000006" width="80" height="61.28"><defs><path d="M194.37 190C197.48 190 200.01 192.53 200.01 195.65C200.01 196.77 200.01 194.52 200.01 195.65C200.01 198.76 197.48 201.29 194.37 201.29C179.5 201.29 140.53 201.29 125.65 201.29C122.54 201.29 120.01 198.76 120.01 195.65C120.01 194.52 120.01 196.77 120.01 195.65C120.01 192.53 122.54 190 125.65 190C140.53 190 179.5 190 194.37 190Z" id="eNJsZ8Kg3"></path><path d="M194.37 215C197.48 215 200.01 217.53 200.01 220.64C200.01 221.77 200.01 219.51 200.01 220.64C200.01 223.76 197.48 226.29 194.37 226.29C179.5 226.29 140.53 226.29 125.65 226.29C122.54 226.29 120.01 223.76 120.01 220.64C120.01 219.51 120.01 221.77 120.01 220.64C120.01 217.53 122.54 215 125.65 215C140.53 215 179.5 215 194.37 215Z" id="a2DqdC3JRN"></path><path d="M194.37 240C197.48 240 200.01 242.52 200.01 245.64C200.01 246.77 200.01 244.51 200.01 245.64C200.01 248.76 197.48 251.28 194.37 251.28C179.5 251.28 140.53 251.28 125.65 251.28C122.54 251.28 120.01 248.76 120.01 245.64C120.01 244.51 120.01 246.77 120.01 245.64C120.01 242.52 122.54 240 125.65 240C140.53 240 179.5 240 194.37 240Z" id="aVsnnO02n"></path></defs><g><g><use xlink:href="#eNJsZ8Kg3" opacity="1" fill="#000000" fill-opacity="1"></use></g><g><use xlink:href="#a2DqdC3JRN" opacity="1" fill="#000000" fill-opacity="1"></use></g><g><use xlink:href="#aVsnnO02n" opacity="1" fill="#000000" fill-opacity="1"></use></g></g></svg>
|
After Width: | Height: | Size: 1.7 KiB |
BIN
static/images/header-bg-dark.jpg
Normal file
BIN
static/images/header-bg-dark.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
BIN
static/images/header-bg-light.jpg
Normal file
BIN
static/images/header-bg-light.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 46 KiB |
93
static/images/theme-switcher-moon.svg
Normal file
93
static/images/theme-switcher-moon.svg
Normal file
@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="13.509594mm"
|
||||
height="14.165941mm"
|
||||
viewBox="0 0 13.509594 14.165941"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
sodipodi:docname="theme-switcher-moon.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Lstart"
|
||||
orient="auto"
|
||||
refX="1"
|
||||
id="Arrow2Lstart"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
refY="-0.1">
|
||||
<path
|
||||
id="path4819"
|
||||
style="fill:#00000f;fill-opacity:1;fill-rule:evenodd;stroke:#00000f;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="matrix(0.3,0,0,0.3,0.3,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Lstart"
|
||||
orient="auto"
|
||||
refX="1"
|
||||
id="Arrow2Lstart-7"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
refY="-0.1">
|
||||
<path
|
||||
id="path4819-9"
|
||||
style="fill:#00000f;fill-opacity:1;fill-rule:evenodd;stroke:#00000f;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="matrix(0.3,0,0,0.3,0.3,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.979899"
|
||||
inkscape:cx="-122.68578"
|
||||
inkscape:cy="-34.841124"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1015"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="30"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-133.69591,-59.597941)">
|
||||
<path
|
||||
style="opacity:0.98000004;vector-effect:none;fill:none;fill-opacity:1;stroke:#00000f;stroke-width:1.05833328;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 140.12254,60.12711 a 6.5537713,6.5537713 0 0 0 -0.13087,0.0046 5.6606021,5.6606021 0 0 1 1.69862,4.035792 5.6606021,5.6606021 0 0 1 -5.66076,5.660761 5.6606021,5.6606021 0 0 1 -1.8045,-0.301188 6.5537713,6.5537713 0 0 0 5.89751,3.707641 6.5537713,6.5537713 0 0 0 6.5538,-6.553803 6.5537713,6.5537713 0 0 0 -6.5538,-6.553805 z"
|
||||
id="path817-2-9-2"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.5 KiB |
139
static/images/theme-switcher-sun.svg
Normal file
139
static/images/theme-switcher-sun.svg
Normal file
@ -0,0 +1,139 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="20.008001mm"
|
||||
height="20.292175mm"
|
||||
viewBox="0 0 20.008001 20.292174"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
sodipodi:docname="theme-switcher-sun.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Lstart"
|
||||
orient="auto"
|
||||
refX="1"
|
||||
id="Arrow2Lstart"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
refY="-0.1">
|
||||
<path
|
||||
id="path4819"
|
||||
style="fill:#00000f;fill-opacity:1;fill-rule:evenodd;stroke:#00000f;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="matrix(0.3,0,0,0.3,0.3,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Lstart"
|
||||
orient="auto"
|
||||
refX="1"
|
||||
id="Arrow2Lstart-7"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
refY="-0.1">
|
||||
<path
|
||||
id="path4819-9"
|
||||
style="fill:#00000f;fill-opacity:1;fill-rule:evenodd;stroke:#00000f;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="matrix(0.3,0,0,0.3,0.3,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.979899"
|
||||
inkscape:cx="-81.16043"
|
||||
inkscape:cy="-22.76665"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1015"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="30"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-96.115683,-56.666412)">
|
||||
<circle
|
||||
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#00000f;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path817"
|
||||
cx="105.83332"
|
||||
cy="66.8125"
|
||||
r="5.1500478" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 113.09949,72.909536 110.72812,70.91972"
|
||||
id="path823"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 107.48045,76.153702 106.9429,73.105129"
|
||||
id="path823-3"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 101.09069,75.027017 1.5478,-2.680871"
|
||||
id="path823-3-6"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 96.92007,70.056669 2.908914,-1.058761"
|
||||
id="path823-3-7"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 96.920061,63.568331 2.908915,1.058759"
|
||||
id="path823-3-5"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 101.09068,58.597987 1.5478,2.680871"
|
||||
id="path823-3-3"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 107.48043,57.471296 -0.53754,3.048574"
|
||||
id="path823-3-56"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 113.09949,60.715466 -2.37136,1.989816"
|
||||
id="path823-3-5-2"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 115.31863,66.812497 h -3.0956"
|
||||
id="path823-3-3-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.7 KiB |
39
static/js/theme-switcher.js
Normal file
39
static/js/theme-switcher.js
Normal file
@ -0,0 +1,39 @@
|
||||
// in Firefox we need to add a new css style with document.write rather than modifying the href
|
||||
// of the existing one, otherwise the screen will flash white while loading on dark themes
|
||||
var theme_css_elem = document.getElementById('theme_css');
|
||||
if(localStorage.getItem('theme') === 'dark'){
|
||||
var clone = theme_css_elem.cloneNode(false);
|
||||
clone.href = "css/themes/dark.css";
|
||||
theme_css_elem.remove();
|
||||
document.write(clone.outerHTML);
|
||||
}else if(localStorage.getItem('theme') === 'light'){
|
||||
var clone = theme_css_elem.cloneNode(false);
|
||||
clone.href = "css/themes/light.css";
|
||||
theme_css_elem.remove();
|
||||
document.write(clone.outerHTML);
|
||||
}
|
||||
|
||||
window.addEventListener("load", function(event){update_toggle_button();}, false);
|
||||
|
||||
function update_toggle_button(){
|
||||
var elem = document.getElementById('theme_css');
|
||||
var button = document.getElementById('change-theme-button');
|
||||
button.style.display = "";
|
||||
if(elem.href.endsWith('light.css')){
|
||||
button.getElementsByTagName('img')[0].src = 'images/theme-switcher-moon.svg';
|
||||
}else if(elem.href.endsWith('dark.css')){
|
||||
button.getElementsByTagName('img')[0].src = 'images/theme-switcher-sun.svg';
|
||||
}
|
||||
}
|
||||
|
||||
function toggle_theme(){
|
||||
var elem = document.getElementById('theme_css');
|
||||
if(elem.href.endsWith('light.css')){
|
||||
elem.href = "css/themes/dark.css";
|
||||
localStorage.setItem('theme', 'dark');
|
||||
}else if(elem.href.endsWith('dark.css')){
|
||||
elem.href = "css/themes/light.css";
|
||||
localStorage.setItem('theme', 'light');
|
||||
}
|
||||
update_toggle_button();
|
||||
}
|
9
theme.toml
Normal file
9
theme.toml
Normal file
@ -0,0 +1,9 @@
|
||||
name = "No-JS Hugo Theme"
|
||||
license = "MIT (except for stock photos)"
|
||||
description = "A minimal and responsive Hugo theme that does not require the client to enable JavaScript."
|
||||
tags = []
|
||||
features = []
|
||||
min_version = "0.38"
|
||||
|
||||
[author]
|
||||
name = "Steven Engler"
|
Loading…
x
Reference in New Issue
Block a user