diff --git a/hugo.toml b/hugo.toml index 625a8ca..b72980f 100644 --- a/hugo.toml +++ b/hugo.toml @@ -8,19 +8,69 @@ googleAnalytics = 'G-LMKPZJ98Y8' contentDir = "content" +[pagination] + pagerSize = 8 + [Params] description = "Writer, thinker, technologist. Morning briefs, Stoic reflections, self-hosting, and systems thinking." +# Main nav: Posts as a direct link, then an Explore dropdown for everything else [[menus.main]] + identifier = "posts" name = "Posts" url = "/posts/" weight = 1 +[[menus.main]] + identifier = "explore" + name = "Explore" + url = "/explore/" + weight = 2 + +# Explore dropdown children — blog navigation [[menus.main]] name = "Tags" url = "/tags/" + parent = "explore" + weight = 1 + +[[menus.main]] + name = "Site Index" + url = "/explore/" + parent = "explore" weight = 2 +# Explore dropdown children — tools +[[menus.main]] + name = "Status Dashboard" + url = "/status" + parent = "explore" + weight = 3 + +[[menus.main]] + name = "Flights" + url = "/flights" + parent = "explore" + weight = 4 + +[[menus.main]] + name = "Volleyball Score" + url = "/volleyball-score" + parent = "explore" + weight = 5 + +[[menus.main]] + name = "Pixel Art" + url = "/pixel-art" + parent = "explore" + weight = 6 + +[[menus.main]] + name = "ASCII Art" + url = "/ascii-art" + parent = "explore" + weight = 7 + [[menus.footer]] name = "RSS" url = "/index.xml" diff --git a/layouts/index.html b/layouts/index.html new file mode 100644 index 0000000..8e74b2f --- /dev/null +++ b/layouts/index.html @@ -0,0 +1,42 @@ +{{ define "main" }} +{{- $pages := where .Site.RegularPages "Section" "posts" }} +{{- $paginator := .Paginate $pages }} + + +{{- /* Pagination controls — only shown when there's more than one page */}} +{{- if gt $paginator.TotalPages 1 }} + +{{- end }} +{{ end }} diff --git a/layouts/partials/head.html b/layouts/partials/head.html new file mode 100644 index 0000000..705b7b0 --- /dev/null +++ b/layouts/partials/head.html @@ -0,0 +1,23 @@ + + +{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }} — {{ .Site.Title }}{{ end }} +{{ with .Description }}{{ end }} +{{ with .Params.summary }}{{ end }} + + + + + + +{{ with .OutputFormats.Get "rss" -}} + +{{- end }} +{{ with .Site.Params.googleAnalytics -}} + + +{{- end }} diff --git a/layouts/partials/header.html b/layouts/partials/header.html new file mode 100644 index 0000000..ae9213c --- /dev/null +++ b/layouts/partials/header.html @@ -0,0 +1,37 @@ + diff --git a/static/css/custom.css b/static/css/custom.css new file mode 100644 index 0000000..37af75c --- /dev/null +++ b/static/css/custom.css @@ -0,0 +1,92 @@ +/* ── Explore dropdown nav ── */ + +/* Wrapper li needs relative positioning for the dropdown panel */ +.nav-has-dropdown { + position: relative; +} + +/* Show the dropdown on hover (desktop) and when focus is inside (keyboard/touch) */ +.nav-has-dropdown:hover .nav-dropdown, +.nav-has-dropdown:focus-within .nav-dropdown { + display: block; +} + +/* Dropdown panel */ +.nav-dropdown { + display: none; + position: absolute; + top: calc(100% + 4px); + right: 0; + min-width: 180px; + list-style: none; + margin: 0; + padding: 6px 0; + background: var(--color-surface); + border: 1px solid var(--color-border); + border-radius: 4px; + box-shadow: 0 4px 16px rgba(44, 36, 22, 0.10); + z-index: 200; +} + +.nav-dropdown li { + display: block; +} + +.nav-dropdown a { + display: block; + padding: 7px 16px; + font-size: 15px; + color: var(--color-secondary); + white-space: nowrap; + text-decoration: none; + transition: background 100ms ease, color 100ms ease; +} + +.nav-dropdown a:hover { + background: var(--color-neutral); + color: var(--color-primary); +} + +/* Subtle arrow nudge so it's clear it's a dropdown trigger */ +.nav-arrow { + font-size: 11px; + opacity: 0.6; + vertical-align: middle; +} + +/* ── Homepage post list improvements ── */ + +/* Slightly more breathing room between entries */ +.post-list__entry { + padding-bottom: 1.4rem; + margin-bottom: 1.4rem; +} + +/* Description/excerpt text under each post title */ +.post-list__excerpt { + margin-top: 0.3rem; + font-size: 0.9rem; + color: var(--color-secondary); + line-height: 1.55; +} + +/* Pagination controls at bottom of homepage */ +.post-list-pagination { + display: flex; + justify-content: space-between; + align-items: center; + padding-top: 1.5rem; + border-top: 1px solid var(--color-border); + font-size: 0.875rem; + color: var(--color-tertiary); +} + +.post-list-pagination a { + color: var(--color-accent); + text-decoration: none; + font-weight: 500; +} + +.post-list-pagination a:hover { + text-decoration: underline; +}