Initial version
This commit is contained in:
commit
ef156e49d1
26 changed files with 1003 additions and 0 deletions
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) [year] [fullname]
|
||||
|
||||
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.
|
7
README.md
Normal file
7
README.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
# Theme Name
|
||||
|
||||
## Features
|
||||
|
||||
## Installation
|
||||
|
||||
## Configuration
|
5
archetypes/default.md
Normal file
5
archetypes/default.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
+++
|
||||
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
|
||||
date = {{ .Date }}
|
||||
draft = true
|
||||
+++
|
660
assets/css/main.css
Normal file
660
assets/css/main.css
Normal file
|
@ -0,0 +1,660 @@
|
|||
::backdrop,
|
||||
:root {
|
||||
--sans-font: -apple-system, BlinkMacSystemFont, "Avenir Next", Avenir,
|
||||
"Nimbus Sans L", Roboto, "Noto Sans", "Segoe UI", Arial, Helvetica,
|
||||
"Helvetica Neue", sans-serif;
|
||||
--mono-font: Consolas, Menlo, Monaco, "Andale Mono", "Ubuntu Mono", monospace;
|
||||
--standard-border-radius: 6px;
|
||||
--bg: #fff;
|
||||
--accent-bg: #0077aa;
|
||||
--text: #212121;
|
||||
--text-light: #585858;
|
||||
--border: #898ea4;
|
||||
--accent: #0099cc;
|
||||
--accent-hover: #0088dd;
|
||||
--accent-text: var(--bg);
|
||||
--code: #0099cc;
|
||||
--preformatted: #444;
|
||||
--marked: #ff8036;
|
||||
--disabled: #efefef;
|
||||
--caution: #ff3333;
|
||||
--warning: red;
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
::backdrop,
|
||||
:root {
|
||||
color-scheme: dark;
|
||||
--bg: black;
|
||||
--accent-bg: #0066aa;
|
||||
--text: #dcdcdc;
|
||||
--text-light: #ababab;
|
||||
--accent: #0099cc;
|
||||
--accent-hover: #0088dd;
|
||||
--accent-text: var(--bg);
|
||||
--code: #0099cc;
|
||||
--preformatted: #fff;
|
||||
--disabled: #111;
|
||||
--caution: #ff3333;
|
||||
--warning: red;
|
||||
}
|
||||
img,
|
||||
video {
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
*,
|
||||
*::after,
|
||||
*::before {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
input,
|
||||
progress,
|
||||
select,
|
||||
textarea {
|
||||
appearance: none;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
}
|
||||
html {
|
||||
font-family: var(--sans-font);
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
body {
|
||||
color: var(--text);
|
||||
background-color: var(--bg);
|
||||
font-size: 1.15rem;
|
||||
line-height: 1.5;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr min(60rem, 90%) 1fr;
|
||||
margin: 0;
|
||||
}
|
||||
body > * {
|
||||
grid-column: 2;
|
||||
}
|
||||
body > header {
|
||||
background-color: var(--accent-bg);
|
||||
border-bottom: 1px solid var(--border);
|
||||
text-align: center;
|
||||
padding: 0 0.5rem 2rem;
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
body > header > *:only-child {
|
||||
margin-block-start: 2rem;
|
||||
}
|
||||
body > header h1 {
|
||||
max-width: 1200px;
|
||||
margin: 1rem auto;
|
||||
}
|
||||
body > header p {
|
||||
max-width: 40rem;
|
||||
margin: 1rem auto;
|
||||
}
|
||||
main {
|
||||
padding-top: 1.5rem;
|
||||
}
|
||||
body > footer {
|
||||
margin-top: 4rem;
|
||||
padding: 2rem 1rem 1.5rem;
|
||||
color: var(--text-light);
|
||||
font-size: 0.9rem;
|
||||
text-align: center;
|
||||
border-top: 1px solid var(--border);
|
||||
}
|
||||
h1 {
|
||||
font-size: 3rem;
|
||||
text-decoration: solid underline #0099cc 6px;
|
||||
}
|
||||
h2 {
|
||||
font-size: 2.6rem;
|
||||
margin-top: 3rem;
|
||||
text-decoration: solid underline #0099cc 4px;
|
||||
}
|
||||
h3 {
|
||||
font-size: 2rem;
|
||||
margin-top: 3rem;
|
||||
text-decoration: solid underline #0099cc 3px;
|
||||
}
|
||||
h4 {
|
||||
font-size: 1.44rem;
|
||||
text-decoration: double underline #0099cc 1px;
|
||||
}
|
||||
h5 {
|
||||
font-size: 1.15rem;
|
||||
text-decoration: dotted underline #0099cc 1px;
|
||||
}
|
||||
h6 {
|
||||
font-size: 0.96rem;
|
||||
}
|
||||
p {
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
p {
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
h1,
|
||||
h2,
|
||||
h3 {
|
||||
line-height: 1.1;
|
||||
}
|
||||
@media only screen and (max-width: 720px) {
|
||||
h1 {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
h2 {
|
||||
font-size: 2.1rem;
|
||||
}
|
||||
h3 {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
h4 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
}
|
||||
a,
|
||||
a:visited {
|
||||
color: var(--accent);
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.button,
|
||||
a.button,
|
||||
button,
|
||||
input[type="submit"],
|
||||
input[type="button"],
|
||||
input[type="reset"],
|
||||
label[type="button"] {
|
||||
border: 1px solid var(--accent);
|
||||
background-color: var(--accent);
|
||||
color: var(--accent-text);
|
||||
padding: 0.5rem 0.9rem;
|
||||
text-decoration: none;
|
||||
line-height: normal;
|
||||
}
|
||||
.button[aria-disabled="true"],
|
||||
input:disabled,
|
||||
textarea:disabled,
|
||||
select:disabled,
|
||||
button[disabled] {
|
||||
cursor: not-allowed;
|
||||
background-color: var(--disabled);
|
||||
border-color: var(--disabled);
|
||||
color: var(--text-light);
|
||||
}
|
||||
input[type="range"] {
|
||||
padding: 0;
|
||||
}
|
||||
abbr[title] {
|
||||
color: var(--accent);
|
||||
cursor: help;
|
||||
text-decoration-line: underline;
|
||||
text-decoration-style: dashed;
|
||||
}
|
||||
.button:not([aria-disabled="true"]):hover,
|
||||
input[type="submit"]:enabled:hover,
|
||||
input[type="reset"]:enabled:hover,
|
||||
input[type="button"]:enabled:hover,
|
||||
label[type="button"]:hover,
|
||||
button:enabled:hover {
|
||||
background-color: var(--accent-hover);
|
||||
border-color: var(--accent-hover);
|
||||
cursor: pointer;
|
||||
}
|
||||
.button:not([aria-disabled="true"]):hover,
|
||||
button[type="reset"]:enabled:hover,
|
||||
input[type="reset"]:enabled:hover,
|
||||
label[type="button"]:hover {
|
||||
background-color: var(--warning);
|
||||
border-color: var(--warning);
|
||||
cursor: pointer;
|
||||
}
|
||||
button[type="reset"],
|
||||
input[type="reset"]:enabled,
|
||||
label[type="button"] {
|
||||
background-color: var(--caution);
|
||||
border-color: var(--caution);
|
||||
cursor: pointer;
|
||||
}
|
||||
.button:focus-visible,
|
||||
button:focus-visible:where(:enabled),
|
||||
input:enabled:focus-visible:where(
|
||||
[type="submit"],
|
||||
[type="reset"],
|
||||
[type="button"]
|
||||
) {
|
||||
outline: 2px solid var(--accent);
|
||||
outline-offset: 1px;
|
||||
}
|
||||
header > nav {
|
||||
font-size: 2rem;
|
||||
line-height: 2;
|
||||
padding: 1rem 0 0;
|
||||
}
|
||||
header > nav ol,
|
||||
header > nav ul {
|
||||
align-content: space-around;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
header > nav ol li,
|
||||
header > nav ul li {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.tags {
|
||||
display: inline-block;
|
||||
padding: 0.1rem;
|
||||
}
|
||||
header > nav a,
|
||||
header > nav a:visited {
|
||||
margin: 0 0.5rem 1rem;
|
||||
color: var(--text);
|
||||
display: inline-block;
|
||||
padding: 0.1rem 1rem;
|
||||
text-decoration: solid underline white 2px;
|
||||
}
|
||||
header > nav a.current,
|
||||
header > nav a:hover,
|
||||
header > nav a[aria-current="page"] {
|
||||
color: var(--preformatted);
|
||||
cursor: pointer;
|
||||
text-decoration: solid underline var(--accent) 4px;
|
||||
}
|
||||
@media only screen and (max-width: 720px) {
|
||||
header > nav a {
|
||||
border: none;
|
||||
padding: 0;
|
||||
text-decoration: underline;
|
||||
line-height: 1;
|
||||
}
|
||||
}
|
||||
aside,
|
||||
details,
|
||||
pre {
|
||||
background-color: var(--bg);
|
||||
border: 3px solid var(--accent);
|
||||
border-radius: var(--standard-border-radius);
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
aside {
|
||||
font-size: 1rem;
|
||||
width: 30%;
|
||||
padding: 0 15px;
|
||||
margin-inline-start: 15px;
|
||||
float: right;
|
||||
}
|
||||
*[dir="rtl"] aside {
|
||||
float: left;
|
||||
}
|
||||
@media only screen and (max-width: 720px) {
|
||||
aside {
|
||||
width: 100%;
|
||||
float: none;
|
||||
margin-inline-start: 0;
|
||||
}
|
||||
}
|
||||
article,
|
||||
dialog,
|
||||
fieldset {
|
||||
border: 1px solid var(--accent);
|
||||
padding: 1rem;
|
||||
border-radius: var(--standard-border-radius);
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
article h2:first-child,
|
||||
article h3:first-child,
|
||||
section h2:first-child,
|
||||
section h3:first-child {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
section {
|
||||
border-top: 1px solid var(--border);
|
||||
border-bottom: 1px solid var(--border);
|
||||
padding: 2rem 1rem;
|
||||
margin: 3rem 0;
|
||||
}
|
||||
section + section,
|
||||
section:first-child {
|
||||
border-top: 0;
|
||||
padding-top: 0;
|
||||
}
|
||||
section + section {
|
||||
margin-top: 0;
|
||||
}
|
||||
section:last-child {
|
||||
border-bottom: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
details {
|
||||
padding: 0.7rem 1rem;
|
||||
}
|
||||
summary {
|
||||
cursor: pointer;
|
||||
font-weight: bold;
|
||||
padding: 0.7rem 1rem;
|
||||
margin: -0.7rem -1rem;
|
||||
word-break: break-all;
|
||||
}
|
||||
details[open] > summary + * {
|
||||
margin-top: 0;
|
||||
}
|
||||
details[open] > summary {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
details[open] > :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
figure > table {
|
||||
width: max-content;
|
||||
margin: 0;
|
||||
}
|
||||
td,
|
||||
th {
|
||||
border: 1px solid var(--border);
|
||||
text-align: start;
|
||||
padding: 0.5rem;
|
||||
}
|
||||
th {
|
||||
background-color: var(--accent-bg);
|
||||
font-weight: bold;
|
||||
}
|
||||
tr:nth-child(even) {
|
||||
background-color: var(--accent-bg);
|
||||
}
|
||||
table caption {
|
||||
font-weight: bold;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
.button,
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
font-size: inherit;
|
||||
font-family: inherit;
|
||||
padding: 0.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
border-radius: var(--standard-border-radius);
|
||||
box-shadow: none;
|
||||
max-width: 100%;
|
||||
display: inline-block;
|
||||
}
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
color: var(--text);
|
||||
background-color: var(--bg);
|
||||
border: 1px solid var(--border);
|
||||
}
|
||||
label {
|
||||
display: block;
|
||||
}
|
||||
textarea:not([cols]) {
|
||||
width: 100%;
|
||||
}
|
||||
select:not([multiple]) {
|
||||
background-image: linear-gradient(45deg, transparent 49%, var(--text) 51%),
|
||||
linear-gradient(135deg, var(--text) 51%, transparent 49%);
|
||||
background-position: calc(100% - 15px), calc(100% - 10px);
|
||||
background-size:
|
||||
5px 5px,
|
||||
5px 5px;
|
||||
background-repeat: no-repeat;
|
||||
padding-inline-end: 25px;
|
||||
}
|
||||
*[dir="rtl"] select:not([multiple]) {
|
||||
background-position: 10px, 15px;
|
||||
}
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
vertical-align: middle;
|
||||
position: relative;
|
||||
width: min-content;
|
||||
}
|
||||
input[type="checkbox"] + label,
|
||||
input[type="radio"] + label {
|
||||
display: inline-block;
|
||||
}
|
||||
input[type="radio"] {
|
||||
border-radius: 100%;
|
||||
}
|
||||
input[type="checkbox"]:checked,
|
||||
input[type="radio"]:checked {
|
||||
background-color: var(--accent);
|
||||
}
|
||||
input[type="checkbox"]:checked::after {
|
||||
content: " ";
|
||||
width: 0.18em;
|
||||
height: 0.32em;
|
||||
border-radius: 0;
|
||||
position: absolute;
|
||||
top: 0.05em;
|
||||
left: 0.17em;
|
||||
background-color: transparent;
|
||||
border-right: solid var(--bg) 0.08em;
|
||||
border-bottom: solid var(--bg) 0.08em;
|
||||
font-size: 1.8em;
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
input[type="radio"]:checked::after {
|
||||
content: " ";
|
||||
width: 0.25em;
|
||||
height: 0.25em;
|
||||
border-radius: 100%;
|
||||
position: absolute;
|
||||
top: 0.125em;
|
||||
background-color: var(--bg);
|
||||
left: 0.125em;
|
||||
font-size: 32px;
|
||||
}
|
||||
@media only screen and (max-width: 720px) {
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
input[type="color"] {
|
||||
height: 2.5rem;
|
||||
padding: 0.2rem;
|
||||
}
|
||||
input[type="file"] {
|
||||
border: 0;
|
||||
}
|
||||
hr {
|
||||
border: none;
|
||||
height: 1px;
|
||||
background: var(--border);
|
||||
margin: 1rem auto;
|
||||
}
|
||||
mark {
|
||||
padding: 2px 5px;
|
||||
border-radius: var(--standard-border-radius);
|
||||
background-color: var(--marked);
|
||||
color: black;
|
||||
}
|
||||
mark a {
|
||||
color: #0d47a1;
|
||||
}
|
||||
audio,
|
||||
img,
|
||||
video {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
border-radius: var(--standard-border-radius);
|
||||
}
|
||||
figure {
|
||||
margin: 0;
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
}
|
||||
figure > img,
|
||||
figure > picture > img {
|
||||
display: block;
|
||||
margin-inline: auto;
|
||||
}
|
||||
figcaption {
|
||||
text-align: center;
|
||||
font-size: 0.9rem;
|
||||
color: var(--text-light);
|
||||
margin-block: 1rem;
|
||||
}
|
||||
blockquote {
|
||||
margin-inline-start: 2rem;
|
||||
margin-inline-end: 0;
|
||||
margin-block: 2rem;
|
||||
padding: 0.4rem 0.8rem;
|
||||
border-inline-start: 0.35rem solid var(--accent);
|
||||
color: var(--text-light);
|
||||
font-style: italic;
|
||||
}
|
||||
cite {
|
||||
font-size: 0.9rem;
|
||||
color: var(--text-light);
|
||||
font-style: normal;
|
||||
}
|
||||
dt {
|
||||
color: var(--text-light);
|
||||
}
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
pre span,
|
||||
samp {
|
||||
font-family: var(--mono-font);
|
||||
color: var(--code);
|
||||
}
|
||||
kbd {
|
||||
padding: 0.1rem 0.4rem;
|
||||
background-color: var(--accent);
|
||||
color: var(--accent-text);
|
||||
border-radius: 0.25rem;
|
||||
border: 1px solid var(--accent-bg);
|
||||
box-shadow: 0 2px 0 1px var(--accent-bg);
|
||||
cursor: default;
|
||||
font-family: var(--font-family-sans-serif);
|
||||
font-size: 0.75em;
|
||||
line-height: 1;
|
||||
min-width: 0.75rem;
|
||||
max-width: 3rem;
|
||||
text-align: center;
|
||||
padding: 2px 5px;
|
||||
position: relative;
|
||||
top: -1px;
|
||||
&:hover {
|
||||
box-shadow: 0 1px 0 0.5px var(--accent-bg);
|
||||
top: 1px;
|
||||
}
|
||||
}
|
||||
pre {
|
||||
padding: 1rem 1.4rem;
|
||||
max-width: 100%;
|
||||
overflow: auto;
|
||||
color: var(--preformatted);
|
||||
}
|
||||
pre code {
|
||||
color: var(--preformatted);
|
||||
background: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
meter,
|
||||
progress {
|
||||
border: solid black 0.3px;
|
||||
width: 100%;
|
||||
border-radius: var(--standard-border-radius);
|
||||
}
|
||||
progress:indeterminate {
|
||||
background-color: grey;
|
||||
}
|
||||
progress::-webkit-progress-bar {
|
||||
border-radius: var(--standard-border-radius);
|
||||
}
|
||||
progress::-webkit-progress-value {
|
||||
border-radius: var(--standard-border-radius);
|
||||
background-color: var(--accent);
|
||||
}
|
||||
progress::-moz-progress-bar {
|
||||
background-size: 100% 100%;
|
||||
transition-property: width;
|
||||
transition-duration: 0.3s;
|
||||
background-color: var(--accent);
|
||||
}
|
||||
dialog {
|
||||
max-width: 40rem;
|
||||
margin: auto;
|
||||
}
|
||||
dialog::backdrop {
|
||||
background-color: var(--bg);
|
||||
opacity: 0.8;
|
||||
}
|
||||
@media only screen and (max-width: 720px) {
|
||||
dialog {
|
||||
max-width: 100%;
|
||||
margin: auto 1em;
|
||||
}
|
||||
}
|
||||
sub,
|
||||
sup {
|
||||
vertical-align: baseline;
|
||||
position: relative;
|
||||
}
|
||||
sup {
|
||||
top: -0.4em;
|
||||
}
|
||||
sub {
|
||||
top: 0.3em;
|
||||
}
|
||||
.notice {
|
||||
background: var(--accent-bg);
|
||||
border: 2px solid var(--border);
|
||||
border-radius: var(--standard-border-radius);
|
||||
padding: 1.5rem;
|
||||
margin: 2rem 0;
|
||||
}
|
||||
meter {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
border-radius: var(--standard-border-radius);
|
||||
background: none;
|
||||
background-color: whitesmoke;
|
||||
}
|
||||
meter::-webkit-meter-bar {
|
||||
background: none;
|
||||
background-color: var(--text);
|
||||
}
|
||||
meter::-webkit-meter-optimum-value {
|
||||
transition: width 0.5s;
|
||||
background-image: linear-gradient(90deg, var(--accent));
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
meter::-webkit-meter-optimum-value:hover {
|
||||
background-image: linear-gradient(90deg, var(--accent));
|
||||
transition: width 0.5s;
|
||||
width: 100% !important;
|
||||
}
|
||||
meter::-moz-meter-bar {
|
||||
background-color: var(--accent);
|
||||
background-image: linear-gradient(0deg, var(--accent));
|
||||
background-size: 100% 100%;
|
||||
}
|
5
assets/js/main.js
Normal file
5
assets/js/main.js
Normal file
|
@ -0,0 +1,5 @@
|
|||
console.log("This site was generated by Hugo.");
|
||||
function copyText() {
|
||||
const text = document.getElementById("copyText").innerText;
|
||||
navigator.clipboard.writeText(text);
|
||||
}
|
9
content/_index.md
Normal file
9
content/_index.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
+++
|
||||
title = 'Home'
|
||||
date = 2023-01-01T08:00:00-07:00
|
||||
draft = false
|
||||
+++
|
||||
|
||||
Laborum voluptate pariatur ex culpa magna nostrud est incididunt fugiat
|
||||
pariatur do dolor ipsum enim. Consequat tempor do dolor eu. Non id id anim anim
|
||||
excepteur excepteur pariatur nostrud qui irure ullamco.
|
5
go.mod
Normal file
5
go.mod
Normal file
|
@ -0,0 +1,5 @@
|
|||
module git.musselman.dev/musselman/smolboi
|
||||
|
||||
go 1.22.5
|
||||
|
||||
require github.com/kaushalmodi/hugo-atom-feed v0.2.0 // indirect
|
2
go.sum
Normal file
2
go.sum
Normal file
|
@ -0,0 +1,2 @@
|
|||
github.com/kaushalmodi/hugo-atom-feed v0.2.0 h1:7jeUfQTBal7SjcAR0fPMKIsfMXb8OLoTo1BPMkLO1vQ=
|
||||
github.com/kaushalmodi/hugo-atom-feed v0.2.0/go.mod h1:eNCxNrqVpeR5IvtTrAB1J8ruthtI3KtHMlOIwp0rafo=
|
27
hugo.toml
Normal file
27
hugo.toml
Normal file
|
@ -0,0 +1,27 @@
|
|||
baseURL = 'https://example.org/'
|
||||
languageCode = 'en-US'
|
||||
title = 'My New Hugo Site'
|
||||
|
||||
[[menus.main]]
|
||||
name = 'Home'
|
||||
pageRef = '/'
|
||||
weight = 10
|
||||
|
||||
[[menus.main]]
|
||||
name = 'Posts'
|
||||
pageRef = '/posts'
|
||||
weight = 20
|
||||
|
||||
[[menus.main]]
|
||||
name = 'About Pages'
|
||||
pageRef = '/about-pages'
|
||||
weight = 30
|
||||
|
||||
[module]
|
||||
[module.hugoVersion]
|
||||
extended = false
|
||||
min = "0.116.0"
|
||||
|
||||
|
||||
[[module.imports]]
|
||||
path = "github.com/kaushalmodi/hugo-atom-feed"
|
15
layouts/_default/baseof.html
Normal file
15
layouts/_default/baseof.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
<!doctype html>
|
||||
<html
|
||||
lang="{{ or site.Language.LanguageCode }}"
|
||||
dir="{{ or site.Language.LanguageDirection `ltr` }}"
|
||||
>
|
||||
<head>
|
||||
{{ partial "head.html" . }}
|
||||
</head>
|
||||
<body>
|
||||
<header>{{ partial "header.html" . }}</header>
|
||||
<main>{{ block "main" . }}{{ end }}</main>
|
||||
<!--TODO: ADD author and share section-->
|
||||
<footer>{{ partial "footer.html" . }}</footer>
|
||||
</body>
|
||||
</html>
|
15
layouts/_default/home.html
Normal file
15
layouts/_default/home.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
{{ define "main" }}
|
||||
<article class="prose max-w-full dark:prose-invert">
|
||||
{{ with .Title }}
|
||||
<header>
|
||||
<h1>{{ . | emojify }}</h1>
|
||||
</header>
|
||||
{{ end }}
|
||||
<section>{{ .Content | emojify }}</section>
|
||||
</article>
|
||||
|
||||
{{ range first 3 ( where .Site.RegularPages "Type" "posts"
|
||||
).ByPublishDate.Reverse }}
|
||||
<h4><a href="{{ .Permalink }}">{{ .Title }}</a></h4>
|
||||
<p>{{.Summary}}</p>
|
||||
{{ end }} {{ end }}
|
12
layouts/_default/list.html
Normal file
12
layouts/_default/list.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
{{ define "main" }}
|
||||
<h2>{{ .Title }}</h2>
|
||||
{{ .Content }} {{ range .Pages }}
|
||||
<h3><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h3>
|
||||
<p>
|
||||
{{ .ReadingTime }} mins · {{ $dateMachine := .Date | time.Format
|
||||
"2006-01-02T15:04:05-07:00" }} {{ $dateHuman := .Date | time.Format
|
||||
":date_long" }}
|
||||
|
||||
<time datetime="{{ $dateMachine }}">{{ $dateHuman }}</time>
|
||||
</p>
|
||||
{{ .Summary }} {{ end }} {{ end }}
|
11
layouts/_default/single.html
Normal file
11
layouts/_default/single.html
Normal file
|
@ -0,0 +1,11 @@
|
|||
{{ define "main" }}
|
||||
<h1>{{ .Title }}</h1>
|
||||
|
||||
{{ .ReadingTime }} mins · {{ $dateMachine := .Date | time.Format
|
||||
"2006-01-02T15:04:05-07:00" }} {{ $dateHuman := .Date | time.Format ":date_long"
|
||||
}}
|
||||
|
||||
<time datetime="{{ $dateMachine }}">{{ $dateHuman }}</time>
|
||||
|
||||
{{ .Content }} {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }} {{
|
||||
end }}
|
74
layouts/partials/article-link.html
Normal file
74
layouts/partials/article-link.html
Normal file
|
@ -0,0 +1,74 @@
|
|||
<article >
|
||||
{{- $images := $.Resources.ByType "image" }}
|
||||
{{- $thumbnail := $images.GetMatch (.Params.thumbnail | default "*thumb*") }}
|
||||
{{- $feature := $images.GetMatch (.Params.feature | default "*feature*") | default $thumbnail }}
|
||||
{{- with $feature }}
|
||||
<div class="flex-none pe-4 sm:pe-6 ">
|
||||
<a
|
||||
href="{{ with $.Params.externalUrl }}
|
||||
{{ . }}
|
||||
{{ else }}
|
||||
{{ $.RelPermalink }}
|
||||
{{ end }}"
|
||||
aria-label="{{ $.Title | emojify }}"
|
||||
>
|
||||
<img
|
||||
alt="{{ $.Params.featureAlt | default $.Params.thumbnailAlt | default "" }}"
|
||||
{{ if eq .MediaType.SubType "svg" }}
|
||||
class="w-24 max-w-[6rem] max-h-[4.5rem] rounded-md sm:max-h-[7.5rem] sm:w-40
|
||||
sm:max-w-[10rem]" src="{{ .RelPermalink }}"
|
||||
{{ else }}
|
||||
class="w-24 rounded-md sm:w-40" srcset="
|
||||
{{- (.Fill "160x120 smart").RelPermalink }}
|
||||
160w, {{- (.Fill "320x240 smart").RelPermalink }} 2x"
|
||||
src="{{ (.Fill "160x120 smart").RelPermalink }}" width="160" height="120"
|
||||
{{ end }}
|
||||
{{ if $.Site.Params.enableImageLazyLoading | default true }}
|
||||
loading="lazy"
|
||||
{{ end }}
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
{{- end }}
|
||||
<div>
|
||||
<h3 >
|
||||
{{ with .Params.externalUrl }}
|
||||
<div>
|
||||
<a
|
||||
href="{{ . }}"
|
||||
target="_blank"
|
||||
rel="external"
|
||||
>{{ $.Title | emojify }}</a
|
||||
>
|
||||
<span
|
||||
title="{{ i18n "list.externalurl_title" }}"
|
||||
>
|
||||
<span class="rtl:hidden">↗</span>
|
||||
<span class="ltr:hidden">↖</span>
|
||||
</span>
|
||||
</div>
|
||||
{{ else }}
|
||||
<a
|
||||
href="{{ .RelPermalink }}"
|
||||
>{{ .Title | emojify }}</a
|
||||
>
|
||||
{{ end }}
|
||||
{{ if and .Draft .Site.Params.article.showDraftLabel }}
|
||||
<div class="ms-2">
|
||||
{{ partial "badge.html" (i18n "article.draft" | emojify) }}
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ if templates.Exists "partials/extend-article-link.html" }}
|
||||
{{ partial "extend-article-link.html" . }}
|
||||
{{ end }}
|
||||
</h3>
|
||||
<div>
|
||||
{{ partial "article-meta.html" . }}
|
||||
</div>
|
||||
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
|
||||
<div >
|
||||
{{ .Summary | emojify }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</article>
|
1
layouts/partials/footer.html
Normal file
1
layouts/partials/footer.html
Normal file
|
@ -0,0 +1 @@
|
|||
<p>Copyright {{ now.Year }}. All rights reserved.</p>
|
5
layouts/partials/head.html
Normal file
5
layouts/partials/head.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<title>{{ if .IsHome }}{{ site.Title }}{{ else }}{{ printf "%s | %s" .Title site.Title }}{{ end }}</title>
|
||||
{{ partialCached "head/css.html" . }}
|
||||
{{ partialCached "head/js.html" . }}
|
9
layouts/partials/head/css.html
Normal file
9
layouts/partials/head/css.html
Normal file
|
@ -0,0 +1,9 @@
|
|||
{{- with resources.Get "css/main.css" }}
|
||||
{{- if eq hugo.Environment "development" }}
|
||||
<link rel="stylesheet" href="{{ .RelPermalink }}">
|
||||
{{- else }}
|
||||
{{- with . | minify | fingerprint }}
|
||||
<link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
12
layouts/partials/head/js.html
Normal file
12
layouts/partials/head/js.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
{{- with resources.Get "js/main.js" }}
|
||||
{{- if eq hugo.Environment "development" }}
|
||||
{{- with . | js.Build }}
|
||||
<script src="{{ .RelPermalink }}"></script>
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
{{- $opts := dict "minify" true }}
|
||||
{{- with . | js.Build $opts | fingerprint }}
|
||||
<script src="{{ .RelPermalink }}" integrity="{{- .Data.Integrity }}" crossorigin="anonymous"></script>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
2
layouts/partials/header.html
Normal file
2
layouts/partials/header.html
Normal file
|
@ -0,0 +1,2 @@
|
|||
<h1>{{ site.Title }}</h1>
|
||||
{{ partial "menu.html" (dict "menuID" "main" "page" .) }}
|
51
layouts/partials/menu.html
Normal file
51
layouts/partials/menu.html
Normal file
|
@ -0,0 +1,51 @@
|
|||
{{- /*
|
||||
Renders a menu for the given menu ID.
|
||||
|
||||
@context {page} page The current page.
|
||||
@context {string} menuID The menu ID.
|
||||
|
||||
@example: {{ partial "menu.html" (dict "menuID" "main" "page" .) }}
|
||||
*/}}
|
||||
|
||||
{{- $page := .page }}
|
||||
{{- $menuID := .menuID }}
|
||||
|
||||
{{- with index site.Menus $menuID }}
|
||||
<nav>
|
||||
<ul>
|
||||
{{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
|
||||
</ul>
|
||||
</nav>
|
||||
{{- end }}
|
||||
|
||||
{{- define "partials/inline/menu/walk.html" }}
|
||||
{{- $page := .page }}
|
||||
{{- range .menuEntries }}
|
||||
{{- $attrs := dict "href" .URL }}
|
||||
{{- if $page.IsMenuCurrent .Menu . }}
|
||||
{{- $attrs = merge $attrs (dict "class" "active" "aria-current" "page") }}
|
||||
{{- else if $page.HasMenuCurrent .Menu .}}
|
||||
{{- $attrs = merge $attrs (dict "class" "ancestor" "aria-current" "true") }}
|
||||
{{- end }}
|
||||
{{- $name := .Name }}
|
||||
{{- with .Identifier }}
|
||||
{{- with T . }}
|
||||
{{- $name = . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
<li>
|
||||
<a
|
||||
{{- range $k, $v := $attrs }}
|
||||
{{- with $v }}
|
||||
{{- printf " %s=%q" $k $v | safeHTMLAttr }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
>{{ $name }}</a>
|
||||
{{- with .Children }}
|
||||
<ul>
|
||||
{{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
|
||||
</ul>
|
||||
{{- end }}
|
||||
</li>
|
||||
{{- end }}
|
||||
{{- end }}
|
0
layouts/partials/recent-articles.html
Normal file
0
layouts/partials/recent-articles.html
Normal file
13
layouts/partials/terms.html
Normal file
13
layouts/partials/terms.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
{{- /* For a given taxonomy, renders a list of terms assigned to the page.
|
||||
@context {page} page The current page. @context {string} taxonomy The taxonomy.
|
||||
@example: {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }} */}} {{-
|
||||
$page := .page }} {{- $taxonomy := .taxonomy }} {{- with $page.GetTerms
|
||||
$taxonomy }} {{- $label := (index . 0).Parent.LinkTitle }}
|
||||
<div>
|
||||
<p class="tags">
|
||||
{{ $label }}: {{- range . }}
|
||||
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
|
||||
{{- end }}
|
||||
</p>
|
||||
</div>
|
||||
{{- end }}
|
3
layouts/shortcodes/alert.html
Normal file
3
layouts/shortcodes/alert.html
Normal file
|
@ -0,0 +1,3 @@
|
|||
<div>
|
||||
<span>{{- .Inner | markdownify -}} </span>
|
||||
</div>
|
8
layouts/shortcodes/button.html
Normal file
8
layouts/shortcodes/button.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
<a
|
||||
{{ with .Get "href" }}href="{{ . }}"{{ end }}
|
||||
{{ with .Get "target" }}target="{{ . }}"{{ end }}
|
||||
{{ with .Get "download" }}download="{{ . }}"{{ end }}
|
||||
role="button"
|
||||
>
|
||||
{{ .Inner }}
|
||||
</a>
|
BIN
static/favicon.ico
Normal file
BIN
static/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
31
theme.toml
Normal file
31
theme.toml
Normal file
|
@ -0,0 +1,31 @@
|
|||
name = 'Theme name'
|
||||
license = 'MIT'
|
||||
licenselink = 'https://github.com/owner/repo/LICENSE'
|
||||
description = 'Theme description'
|
||||
|
||||
# The home page of the theme, where the source can be found
|
||||
homepage = 'https://github.com/owner/repo'
|
||||
|
||||
# If you have a running demo of the theme
|
||||
demosite = 'https://owner.github.io/repo'
|
||||
|
||||
# Taxonomy terms
|
||||
tags = ['blog', 'company']
|
||||
features = ['some', 'awesome', 'features']
|
||||
|
||||
# If the theme has multiple authors
|
||||
authors = [
|
||||
{name = 'Name of author', homepage = 'Website of author'},
|
||||
{name = 'Name of author', homepage = 'Website of author'}
|
||||
]
|
||||
|
||||
# If the theme has a single author
|
||||
[author]
|
||||
name = 'Your name'
|
||||
homepage = 'Your website'
|
||||
|
||||
# If porting an existing theme
|
||||
[original]
|
||||
author = 'Name of original author'
|
||||
homepage = 'Website of original author'
|
||||
repo = 'https://github.com/owner/repo'
|
Loading…
Reference in a new issue