From 1f49f0ee88a75f16de144c1c8fbe92452b5382cb Mon Sep 17 00:00:00 2001 From: Nikolaos Karaolidis Date: Tue, 5 Aug 2025 21:46:57 +0200 Subject: [PATCH] Draw the rest of the fucking owl Signed-off-by: Nikolaos Karaolidis --- README.md | 2 +- layouts/404.html | 4 + layouts/_default/_markup/render-heading.html | 3 + layouts/_default/_markup/render-image.html | 6 + layouts/_default/_markup/render-link.html | 9 + layouts/_default/baseof.html | 55 +++++ layouts/_default/list.html | 10 + layouts/_default/single.html | 4 + layouts/gallery/list.html | 7 + layouts/gallery/single.html | 18 ++ layouts/index.html | 7 + layouts/partials/comments.html | 0 layouts/partials/favicon.html | 0 layouts/partials/footer.html | 1 + layouts/partials/gallery.html | 17 ++ layouts/partials/header.html | 35 +++ layouts/partials/opengraph.html | 78 +++++++ layouts/partials/posts.html | 11 + layouts/partials/twitter.html | 23 ++ layouts/posts/single.html | 12 + layouts/sitemap.xml | 16 ++ static/css/huell.css | 227 +++++++++++++++++++ 22 files changed, 544 insertions(+), 1 deletion(-) create mode 100644 layouts/404.html create mode 100644 layouts/_default/_markup/render-heading.html create mode 100644 layouts/_default/_markup/render-image.html create mode 100644 layouts/_default/_markup/render-link.html create mode 100644 layouts/_default/baseof.html create mode 100644 layouts/_default/list.html create mode 100644 layouts/_default/single.html create mode 100644 layouts/gallery/list.html create mode 100644 layouts/gallery/single.html create mode 100644 layouts/index.html create mode 100644 layouts/partials/comments.html create mode 100644 layouts/partials/favicon.html create mode 100644 layouts/partials/footer.html create mode 100644 layouts/partials/gallery.html create mode 100644 layouts/partials/header.html create mode 100644 layouts/partials/opengraph.html create mode 100644 layouts/partials/posts.html create mode 100644 layouts/partials/twitter.html create mode 100644 layouts/posts/single.html create mode 100644 layouts/sitemap.xml diff --git a/README.md b/README.md index 5fd44da..5c7e9d2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # huell -A Hugo Shell theme \ No newline at end of file +A Hugo Shell theme diff --git a/layouts/404.html b/layouts/404.html new file mode 100644 index 0000000..f6e793c --- /dev/null +++ b/layouts/404.html @@ -0,0 +1,4 @@ +{{ define "main" }} +

Page not found

+

Return to the home page.

+{{ end }} diff --git a/layouts/_default/_markup/render-heading.html b/layouts/_default/_markup/render-heading.html new file mode 100644 index 0000000..df3c3fa --- /dev/null +++ b/layouts/_default/_markup/render-heading.html @@ -0,0 +1,3 @@ + + +{{ .Text | safeHTML }} diff --git a/layouts/_default/_markup/render-image.html b/layouts/_default/_markup/render-image.html new file mode 100644 index 0000000..659dd83 --- /dev/null +++ b/layouts/_default/_markup/render-image.html @@ -0,0 +1,6 @@ +{{ .Text }} diff --git a/layouts/_default/_markup/render-link.html b/layouts/_default/_markup/render-link.html new file mode 100644 index 0000000..08b7825 --- /dev/null +++ b/layouts/_default/_markup/render-link.html @@ -0,0 +1,9 @@ +{{ .Text | safeHTML }} diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html new file mode 100644 index 0000000..c92054d --- /dev/null +++ b/layouts/_default/baseof.html @@ -0,0 +1,55 @@ + + + + + + + + {{ .Site.Title }}{{ $url := urls.Parse .Page.Permalink }}{{ $url.Path }} + + {{ with .Site.Params.description }} + + {{ end }} + + + + + + + + + + + + + {{ ` + + ` | safeHTML + }} + + {{- partial "favicon.html" . -}} + + {{ with .OutputFormats.Get "RSS" }} + {{ printf ` + ` .Permalink .Rel .MediaType.Type $.Site.Title | safeHTML + }} + {{ end }} + + {{- partial "opengraph.html" . -}} + {{- partial "twitter.html" . -}} + + + + {{- partial "header.html" . -}} + + +
+ {{ block "main" . }} + {{ end }} + {{ partial "footer.html" . }} +
+ + diff --git a/layouts/_default/list.html b/layouts/_default/list.html new file mode 100644 index 0000000..3c4d1a1 --- /dev/null +++ b/layouts/_default/list.html @@ -0,0 +1,10 @@ +{{ define "main" }} +

{{ .Title }}

+
+ {{ .Content }} + + +
+ {{ partial "posts.html" . }} +
+{{ end }} diff --git a/layouts/_default/single.html b/layouts/_default/single.html new file mode 100644 index 0000000..4cfd224 --- /dev/null +++ b/layouts/_default/single.html @@ -0,0 +1,4 @@ +{{ define "main" }} +

{{ .Title }}

+ {{ .Content }} +{{ end }} diff --git a/layouts/gallery/list.html b/layouts/gallery/list.html new file mode 100644 index 0000000..0ced4cd --- /dev/null +++ b/layouts/gallery/list.html @@ -0,0 +1,7 @@ +{{ define "main" }} +

{{ .Title }}

+ {{ .Content }} +
+ {{ partial "gallery.html" . }} +
+{{ end }} diff --git a/layouts/gallery/single.html b/layouts/gallery/single.html new file mode 100644 index 0000000..3084a8d --- /dev/null +++ b/layouts/gallery/single.html @@ -0,0 +1,18 @@ +{{ define "main" }} +

{{ .Title }}

+ +
+ {{ .Date | time.Format ":date_medium" }} +
+ + {{ if and (isset .Params "image") .Params.image }} + {{ $image := .Page.Resources.GetMatch .Params.image }} + {{ with $image }} + {{ $thumb := .Resize "1000x" }} + {{ printf `%s` $thumb.RelPermalink .Title | safeHTML }} + {{ end }} + {{ end }} + + {{ .Content }} + {{ partial "comments.html" . }} +{{ end }} diff --git a/layouts/index.html b/layouts/index.html new file mode 100644 index 0000000..94ae906 --- /dev/null +++ b/layouts/index.html @@ -0,0 +1,7 @@ +{{ define "main" }} +
+ {{ with .Site.GetPage "/posts" }} + {{ partial "posts.html" . }} + {{ end }} +
+{{ end }} diff --git a/layouts/partials/comments.html b/layouts/partials/comments.html new file mode 100644 index 0000000..e69de29 diff --git a/layouts/partials/favicon.html b/layouts/partials/favicon.html new file mode 100644 index 0000000..e69de29 diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html new file mode 100644 index 0000000..255f644 --- /dev/null +++ b/layouts/partials/footer.html @@ -0,0 +1 @@ + diff --git a/layouts/partials/gallery.html b/layouts/partials/gallery.html new file mode 100644 index 0000000..8e05ba9 --- /dev/null +++ b/layouts/partials/gallery.html @@ -0,0 +1,17 @@ +{{ range sort .Pages "Date" "desc" }} + {{ if not .Params.private }} + {{ if and (isset .Params "image") .Params.image }} + + {{ $image := .Page.Resources.GetMatch .Params.image }} + {{ with $image }} + {{ $thumb := .Resize "400x" }} + {{ .Title }} + {{ end }} + + {{ end }} + {{ end }} +{{ end }} diff --git a/layouts/partials/header.html b/layouts/partials/header.html new file mode 100644 index 0000000..3470165 --- /dev/null +++ b/layouts/partials/header.html @@ -0,0 +1,35 @@ +
+
+ + +
+
diff --git a/layouts/partials/opengraph.html b/layouts/partials/opengraph.html new file mode 100644 index 0000000..4ed8db0 --- /dev/null +++ b/layouts/partials/opengraph.html @@ -0,0 +1,78 @@ + + + + + +{{- with .Params.image }} + {{ $image := $.Resources.GetMatch . }} + {{ with $image }} + {{ $thumb := .Resize "400x" }} + + {{ end }} +{{ end }} + +{{- $iso8601 := "2000-01-01T00:00:00-01:00" -}} +{{- if .IsPage }} + {{- if not .PublishDate.IsZero }} + + {{ else if not .Date.IsZero }} + + {{ end }} +{{- end }} +{{/* .IsPage */}} + +{{- with .Params.audio }} + +{{ end }} +{{- with .Params.locale }} + +{{ end }} +{{- with .Site.Params.title }} + +{{ end }} +{{- with .Params.videos }} + {{- range . }} + + {{ end }} +{{ end }} + +{{- $permalink := .Permalink }} +{{- $siteSeries := .Site.Taxonomies.series }}{{ with .Params.series }} + {{- range $name := . }} + {{- $series := index $siteSeries $name }} + {{- range $page := first 6 $series.Pages }} + {{- if ne $page.Permalink $permalink }} + + {{ end }} + {{- end }} + {{ end }} +{{ end }} + +{{- if .IsPage }} + + {{- with .Params.tags }} + {{ range first 6 . }} + + {{- end }} + {{ end }} +{{- end }} diff --git a/layouts/partials/posts.html b/layouts/partials/posts.html new file mode 100644 index 0000000..c392dde --- /dev/null +++ b/layouts/partials/posts.html @@ -0,0 +1,11 @@ +{{ range sort .Pages "Date" "desc" }} +{{ if not .Params.private }} +
+

+

{{ .Date | time.Format ":date_medium" }}
+

{{ .Title }}

+ {{ .Summary }} +

+
+{{ end }} +{{ end }} diff --git a/layouts/partials/twitter.html b/layouts/partials/twitter.html new file mode 100644 index 0000000..4182c78 --- /dev/null +++ b/layouts/partials/twitter.html @@ -0,0 +1,23 @@ +{{- with .Params.image }} + {{ $image := $.Resources.GetMatch . }} + {{ with $image }} + {{ $thumb := .Resize "400x" }} + + + {{ end }} +{{ end }} + + + + diff --git a/layouts/posts/single.html b/layouts/posts/single.html new file mode 100644 index 0000000..e3ece26 --- /dev/null +++ b/layouts/posts/single.html @@ -0,0 +1,12 @@ +{{ define "main" }} +

{{ .Title }}

+ +
+ {{ .Date | time.Format ":date_medium" }} +
+ +
+ + {{ .Content }} + {{ partial "comments.html" . }} +{{ end }} diff --git a/layouts/sitemap.xml b/layouts/sitemap.xml new file mode 100644 index 0000000..2c7e31a --- /dev/null +++ b/layouts/sitemap.xml @@ -0,0 +1,16 @@ +{{ printf "" | safeHTML }} + + {{ range .Pages }} + {{ if not .Params.private }} + + {{ .Permalink }}{{ if not .Lastmod.IsZero }} + {{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}{{ end }}{{ with .Sitemap.ChangeFreq }} + {{ . }}{{ end }}{{ if ge .Sitemap.Priority 0.0 }} + {{ .Sitemap.Priority }}{{ end }}{{ if .IsTranslated }}{{ range .Translations }} + {{ end }} + {{ end }} + + {{ end }} + {{ end }} + \ No newline at end of file diff --git a/static/css/huell.css b/static/css/huell.css index 0a230f8..e0cb864 100644 --- a/static/css/huell.css +++ b/static/css/huell.css @@ -29,3 +29,230 @@ font-weight: 700; text-rendering: optimizeLegibility; } + +:root { + --global-font-size: 16px; + --global-font-color: #444; + --mono-font-stack: Roboto Mono, Menlo, Monaco, Lucida Console, + Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, + Courier New, monospace, serif; + --font-stack: Roboto Mono, Menlo, Monaco, Lucida Console, Liberation Mono, + DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, + serif; + --global-line-height: 1.6em; + --page-width: 45em; + --display-h1-decoration: 1; +} + +@media (prefers-color-scheme: dark) { + :root { + --background-color: #222225; + --font-color: #e8e9ed; + --invert-font-color: #222225; + --primary-color: #62c4ff; + --secondary-color: #a3abba; + --tertiary-color: #a3abba; + --error-color: #ff3c74; + --progress-bar-background: #3f3f44; + --progress-bar-fill: #62c4ff; + --code-bg-color: #3f3f44; + } +} + +@media (prefers-color-scheme: light) { + :root { + --background-color: #fff; + --font-color: #151515; + --invert-font-color: #fff; + --primary-color: #1a95e0; + --secondary-color: #727578; + --tertiary-color: #727578; + --error-color: #d20962; + --progress-bar-background: #727578; + --progress-bar-fill: #151515; + --code-bg-color: #e8eff2; + } +} + +@media only screen and (max-width: 850px) { + :root { + --global-font-size: 14px; + --global-font-color: #444; + --global-line-height: 1.6em; + --page-width: 70em; + } +} + +body { + font-family: var(--font-stack); + font-size: var(--global-font-size); + background-color: var(--background-color); + margin-bottom: 75px; +} + +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: var(--font-stack); + clear: both; +} + +h1 { + margin-bottom: 10px; + display: inline-block; +} + +.logo { + font-weight: normal; +} + +.terminal-menu li { + margin-right: 30px; +} + +figure { + margin-top: 15px; + margin-bottom: 15px; + margin-left: 60px; + margin-right: 60px; +} + +.footer { + clear: both; + margin-top: 100px; + padding-top: 10px; + border-top: 1px solid var(--secondary-color); + color: var(--global-font-color); +} + +.image-grid { + display: grid; + grid-template-rows: auto; + display: grid; + grid-gap: 1em; + grid-template-rows: auto; + grid-template-columns: repeat(auto-fit, + minmax(calc(var(--page-width) / 4), 1fr)); +} + +.prompt-symbol { + padding-left: 1ch; + padding-right: 1ch; +} + +.terminal-prompt { + display: flex; + align-items: center; + flex-wrap: nowrap; + white-space: nowrap; +} + +.terminal-prompt::after { + -webkit-animation: cursor 1s infinite; + animation: cursor 1s infinite; + width: 10px; +} + +.terminal-prompt::before { + content: none; +} + +.gallery-image { + margin-top: 10px; + margin-bottom: 10px; +} + +.posts-list { + position: relative; + padding-left: 130px; + top: 0; +} + +.post h1, +.post h2 { + padding-top: 0; + margin: 0; + margin-bottom: 5px; +} + +.posts-list .date { + display: inline-block; + position: absolute; + left: 0px; + width: 130px; + z-index: 400; + padding-top: 0; +} + +@media only screen and (max-width: 45em) { + .site-name { + width: 2ch; + overflow: hidden; + display: inline-block; + } + + .terminal-nav { + align-items: flex-start; + flex-direction: column; + display: flex; + } + + .terminal-menu ul { + align-items: flex-start; + display: flex; + flex-direction: row; + justify-content: left; + margin-top: 0; + } + + .terminal-menu li { + margin-right: 20px; + } + + .logo { + padding: calc(var(--global-space) * 1) 0 calc(var(--global-space) * 1); + } + + figure { + margin-top: 5px; + margin-bottom: 5px; + margin-left: 30px; + margin-right: 30px; + } + + .posts-list { + position: relative; + padding-left: 0; + top: 0; + } + + .post h1, + .post h2 { + padding-top: 0; + } + + .posts-list .date { + display: inline-block; + position: absolute; + left: 0px; + width: 150px; + z-index: 400; + font-weight: bold; + padding-top: 0; + display: none; + } + + .footer { + margin-top: 50px; + padding-top: 5px; + } +}