From ef156e49d1995ba7e76fea8205379b9f39e2ab80 Mon Sep 17 00:00:00 2001 From: Musselman Date: Mon, 8 Jul 2024 16:34:47 -0500 Subject: [PATCH] Initial version --- LICENSE | 21 + README.md | 7 + archetypes/default.md | 5 + assets/css/main.css | 660 ++++++++++++++++++++++++++ assets/js/main.js | 5 + content/_index.md | 9 + go.mod | 5 + go.sum | 2 + hugo.toml | 27 ++ layouts/_default/baseof.html | 15 + layouts/_default/home.html | 15 + layouts/_default/list.html | 12 + layouts/_default/single.html | 11 + layouts/partials/article-link.html | 74 +++ layouts/partials/footer.html | 1 + layouts/partials/head.html | 5 + layouts/partials/head/css.html | 9 + layouts/partials/head/js.html | 12 + layouts/partials/header.html | 2 + layouts/partials/menu.html | 51 ++ layouts/partials/recent-articles.html | 0 layouts/partials/terms.html | 13 + layouts/shortcodes/alert.html | 3 + layouts/shortcodes/button.html | 8 + static/favicon.ico | Bin 0 -> 15406 bytes theme.toml | 31 ++ 26 files changed, 1003 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 archetypes/default.md create mode 100644 assets/css/main.css create mode 100644 assets/js/main.js create mode 100644 content/_index.md create mode 100644 go.mod create mode 100644 go.sum create mode 100644 hugo.toml create mode 100644 layouts/_default/baseof.html create mode 100644 layouts/_default/home.html create mode 100644 layouts/_default/list.html create mode 100644 layouts/_default/single.html create mode 100644 layouts/partials/article-link.html create mode 100644 layouts/partials/footer.html create mode 100644 layouts/partials/head.html create mode 100644 layouts/partials/head/css.html create mode 100644 layouts/partials/head/js.html create mode 100644 layouts/partials/header.html create mode 100644 layouts/partials/menu.html create mode 100644 layouts/partials/recent-articles.html create mode 100644 layouts/partials/terms.html create mode 100644 layouts/shortcodes/alert.html create mode 100644 layouts/shortcodes/button.html create mode 100644 static/favicon.ico create mode 100644 theme.toml diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8aa2645 --- /dev/null +++ b/LICENSE @@ -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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..7cec74e --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# Theme Name + +## Features + +## Installation + +## Configuration diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..c6f3fce --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,5 @@ ++++ +title = '{{ replace .File.ContentBaseName "-" " " | title }}' +date = {{ .Date }} +draft = true ++++ diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000..a5b41a2 --- /dev/null +++ b/assets/css/main.css @@ -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%; +} diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..79818c5 --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,5 @@ +console.log("This site was generated by Hugo."); +function copyText() { + const text = document.getElementById("copyText").innerText; + navigator.clipboard.writeText(text); +} diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..652623b --- /dev/null +++ b/content/_index.md @@ -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. diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..c285044 --- /dev/null +++ b/go.mod @@ -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 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..3bdb64c --- /dev/null +++ b/go.sum @@ -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= diff --git a/hugo.toml b/hugo.toml new file mode 100644 index 0000000..792d8ec --- /dev/null +++ b/hugo.toml @@ -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" diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html new file mode 100644 index 0000000..af8d45c --- /dev/null +++ b/layouts/_default/baseof.html @@ -0,0 +1,15 @@ + + + + {{ partial "head.html" . }} + + +
{{ partial "header.html" . }}
+
{{ block "main" . }}{{ end }}
+ + + + diff --git a/layouts/_default/home.html b/layouts/_default/home.html new file mode 100644 index 0000000..4c8666a --- /dev/null +++ b/layouts/_default/home.html @@ -0,0 +1,15 @@ +{{ define "main" }} +
+ {{ with .Title }} +
+

{{ . | emojify }}

+
+ {{ end }} +
{{ .Content | emojify }}
+
+ +{{ range first 3 ( where .Site.RegularPages "Type" "posts" +).ByPublishDate.Reverse }} +

{{ .Title }}

+

{{.Summary}}

+{{ end }} {{ end }} diff --git a/layouts/_default/list.html b/layouts/_default/list.html new file mode 100644 index 0000000..39f6929 --- /dev/null +++ b/layouts/_default/list.html @@ -0,0 +1,12 @@ +{{ define "main" }} +

{{ .Title }}

+{{ .Content }} {{ range .Pages }} +

{{ .LinkTitle }}

+

+ {{ .ReadingTime }} mins · {{ $dateMachine := .Date | time.Format + "2006-01-02T15:04:05-07:00" }} {{ $dateHuman := .Date | time.Format + ":date_long" }} + + +

+{{ .Summary }} {{ end }} {{ end }} diff --git a/layouts/_default/single.html b/layouts/_default/single.html new file mode 100644 index 0000000..8a672c7 --- /dev/null +++ b/layouts/_default/single.html @@ -0,0 +1,11 @@ +{{ define "main" }} +

{{ .Title }}

+ +{{ .ReadingTime }} mins · {{ $dateMachine := .Date | time.Format +"2006-01-02T15:04:05-07:00" }} {{ $dateHuman := .Date | time.Format ":date_long" +}} + + + +{{ .Content }} {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }} {{ +end }} diff --git a/layouts/partials/article-link.html b/layouts/partials/article-link.html new file mode 100644 index 0000000..dce57f3 --- /dev/null +++ b/layouts/partials/article-link.html @@ -0,0 +1,74 @@ +
+ {{- $images := $.Resources.ByType "image" }} + {{- $thumbnail := $images.GetMatch (.Params.thumbnail | default "*thumb*") }} + {{- $feature := $images.GetMatch (.Params.feature | default "*feature*") | default $thumbnail }} + {{- with $feature }} +
+ + {{ $.Params.featureAlt | default $.Params.thumbnailAlt | default + +
+ {{- end }} +
+

+ {{ with .Params.externalUrl }} +
+ {{ $.Title | emojify }} + + + + +
+ {{ else }} + {{ .Title | emojify }} + {{ end }} + {{ if and .Draft .Site.Params.article.showDraftLabel }} +
+ {{ partial "badge.html" (i18n "article.draft" | emojify) }} +
+ {{ end }} + {{ if templates.Exists "partials/extend-article-link.html" }} + {{ partial "extend-article-link.html" . }} + {{ end }} +

+
+ {{ partial "article-meta.html" . }} +
+ {{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }} +
+ {{ .Summary | emojify }} +
+ {{ end }} +
+
diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html new file mode 100644 index 0000000..a7cd916 --- /dev/null +++ b/layouts/partials/footer.html @@ -0,0 +1 @@ +

Copyright {{ now.Year }}. All rights reserved.

diff --git a/layouts/partials/head.html b/layouts/partials/head.html new file mode 100644 index 0000000..02c2240 --- /dev/null +++ b/layouts/partials/head.html @@ -0,0 +1,5 @@ + + +{{ if .IsHome }}{{ site.Title }}{{ else }}{{ printf "%s | %s" .Title site.Title }}{{ end }} +{{ partialCached "head/css.html" . }} +{{ partialCached "head/js.html" . }} diff --git a/layouts/partials/head/css.html b/layouts/partials/head/css.html new file mode 100644 index 0000000..91b928d --- /dev/null +++ b/layouts/partials/head/css.html @@ -0,0 +1,9 @@ +{{- with resources.Get "css/main.css" }} + {{- if eq hugo.Environment "development" }} + + {{- else }} + {{- with . | minify | fingerprint }} + + {{- end }} + {{- end }} +{{- end }} diff --git a/layouts/partials/head/js.html b/layouts/partials/head/js.html new file mode 100644 index 0000000..18fe842 --- /dev/null +++ b/layouts/partials/head/js.html @@ -0,0 +1,12 @@ +{{- with resources.Get "js/main.js" }} + {{- if eq hugo.Environment "development" }} + {{- with . | js.Build }} + + {{- end }} + {{- else }} + {{- $opts := dict "minify" true }} + {{- with . | js.Build $opts | fingerprint }} + + {{- end }} + {{- end }} +{{- end }} diff --git a/layouts/partials/header.html b/layouts/partials/header.html new file mode 100644 index 0000000..7980a00 --- /dev/null +++ b/layouts/partials/header.html @@ -0,0 +1,2 @@ +

{{ site.Title }}

+{{ partial "menu.html" (dict "menuID" "main" "page" .) }} diff --git a/layouts/partials/menu.html b/layouts/partials/menu.html new file mode 100644 index 0000000..7183180 --- /dev/null +++ b/layouts/partials/menu.html @@ -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 }} + +{{- 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 }} +
  • + {{ $name }} + {{- with .Children }} + + {{- end }} +
  • + {{- end }} +{{- end }} diff --git a/layouts/partials/recent-articles.html b/layouts/partials/recent-articles.html new file mode 100644 index 0000000..e69de29 diff --git a/layouts/partials/terms.html b/layouts/partials/terms.html new file mode 100644 index 0000000..f944d93 --- /dev/null +++ b/layouts/partials/terms.html @@ -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 }} +
    +

    + {{ $label }}: {{- range . }} + {{ .LinkTitle }} + {{- end }} +

    +
    +{{- end }} diff --git a/layouts/shortcodes/alert.html b/layouts/shortcodes/alert.html new file mode 100644 index 0000000..7d69fd9 --- /dev/null +++ b/layouts/shortcodes/alert.html @@ -0,0 +1,3 @@ +
    + {{- .Inner | markdownify -}} +
    diff --git a/layouts/shortcodes/button.html b/layouts/shortcodes/button.html new file mode 100644 index 0000000..152d39a --- /dev/null +++ b/layouts/shortcodes/button.html @@ -0,0 +1,8 @@ + + {{ .Inner }} + diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..67f8b777851849527933b78b1f98bd564d8255d1 GIT binary patch literal 15406 zcmeI3%WEH16vro|f`O{FV5Nc>unpZA42Xe(zeP4Fn0Fu>#YKe(c41L;qszMJ-bXDi z>L1W57+rSdLS5OG#!V^IKxvbj6n@gC#QOREdT$vg^US^Tf(#t)%-r+%o^#KA&hHll zeL;V)Z(l$;7%c7yg4co|7#w``eB{|6_?CCW!=`>H2!44k2#&ym2ojIpQ{=j)r>9?; zot^z+et!PXxw*M}BHinq>XMXKboc`~d=&+uPNklCgSOc%pC zkdxhQd};55Lm1#0hSD%6>D`)|ni^JI((I(w8QJADo{YL>VsSr%Ckg*U$-2s8+X=sG z{FIYm*irl0d{!y{D{f@u4p-n@#^$z+5S`e?RJu8p?Lq>0x`@}vIu7kfT z8Od5bMN4D{&~ch_$NgBcM#n%A`@~N^|ABlif3x_ci!t%#JQ&cWarai1&Z6~TkWOa9 zw}_GQ!9UZ~o(wFidYcy6DoF0rq<yz2-5e zTyl`ty!pUE-U+vC*KNN6@vklal>5+`8rxs}uh#LW?(tW105Q;7(Wx&Lm6uJ~)`e`X z^RF;~r?T~jY{_Q$A_iJ-m%jcoHny$5gr&~)r;P=1C}sVP-puv4#i0EM{FfkKed1Em zy4%`}me{Us{}sjpj#~DgVGO#rYen+cu9FI~=yTd>3AzfcLA`SnbFXu|pT#pXGc&>2(2!(N+83v|%y-!B zH|JI#fb9Zw1NxWuxyA*n7Wlp875YYr(Gs{zKTE)l_AX1Q6wmo%>|9k+6aP<2dk>lant}U*_E8rG3D-5uK;;yPx-8W%=Kfda!;c%(fl0 ze&XHrrr^uM0oGf>Z1DFnHhqLl>1%^5TzTuk|3H|*ul4(0o-gE;Z3>^kyq|VB2&R>$ z;3|M)g|TQza{|6pwl*t(FLk^UW^(9F%1?ditXdD)PeI>TZP%AQuxqb<#h1RS^?+T! z8Ck2^t}lCF{~KLC_TZ^~%@^LN9`I|g*;@RHecST~{FkHc(w1kiUj^&=w&0Dy`6E8G zdj4Yla1TF#N4vKWh(zA3A5dm)G|O@NEjS_AkOu zAJA`duQdQy-kiND%)+h<+}gi?*&_V<{_uGJE+68oBmMcH-Rl|t`yCgB%e&5Zsqq=>yyS- z+H#S&ls3nqdmTC0`~O|AJhXPJKi1jW{{U!5hztM# literal 0 HcmV?d00001 diff --git a/theme.toml b/theme.toml new file mode 100644 index 0000000..3ba3164 --- /dev/null +++ b/theme.toml @@ -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'