Initial version

This commit is contained in:
James Musselman 2024-07-08 16:34:47 -05:00
commit ef156e49d1
Signed by: Musselman
GPG key ID: 1DAEFF35ECB5D6DB
26 changed files with 1003 additions and 0 deletions

21
LICENSE Normal file
View 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
View file

@ -0,0 +1,7 @@
# Theme Name
## Features
## Installation
## Configuration

5
archetypes/default.md Normal file
View file

@ -0,0 +1,5 @@
+++
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
date = {{ .Date }}
draft = true
+++

660
assets/css/main.css Normal file
View 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
View 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
View 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
View 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
View 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
View 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"

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

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

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

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

View 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">&#8599;</span>
<span class="ltr:hidden">&#8598;</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>

View file

@ -0,0 +1 @@
<p>Copyright {{ now.Year }}. All rights reserved.</p>

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

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

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

View file

@ -0,0 +1,2 @@
<h1>{{ site.Title }}</h1>
{{ partial "menu.html" (dict "menuID" "main" "page" .) }}

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

View file

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

View file

@ -0,0 +1,3 @@
<div>
<span>{{- .Inner | markdownify -}} </span>
</div>

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

31
theme.toml Normal file
View 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'