Initial commit

This commit is contained in:
Steven Engler 2019-05-17 18:45:07 -04:00
commit 1522656f46
18 changed files with 952 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*.swp

59
LICENSE.md Normal file
View 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
View File

@ -0,0 +1,2 @@
+++
+++

0
layouts/404.html Normal file
View File

View 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>

View File

@ -0,0 +1,31 @@
{{ define "title" }}{{ .Title }} &ndash; {{ .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 }}

View File

@ -0,0 +1,18 @@
{{ define "title" }}{{ .Title }} &ndash; {{ .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)) }}
&mdash; last updated <time>{{ .Lastmod.Format "January 2, 2006" }}</time>
{{ end }}
</div>
</div>
{{ .Content }}
{{ end }}

30
layouts/index.html Normal file
View 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
View 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%
}
}

View 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);
}
}

View 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;
}

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View 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

View 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

View 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
View 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"