Files
neilhanlon.me/layouts/index.html
T
neilandClaude Opus 4.8 698d70d9ef Redesign: replace hugo-sustain with self-contained editorial theme
Drop the hugo-sustain submodule and build a custom theme forked from the
shrug.host design system, recolored to a potato identity (russet skin,
sprout-green leitmotif, purple-potato accent; potato-flesh light + soil
dark, follows prefers-color-scheme with a persisted toggle).

- Self-hosted Commit Mono + Source Serif 4 (no external requests)
- Token-based CSS: tokens / base / components / layouts
- Layouts: baseof, index (hero + latest posts + "now"), single, list,
  projects (card grid), partials for nav/footer/head + OG/Twitter/schema
- SEO scaffolding hugo-sustain lacked: OpenGraph, Person/BlogPosting
  schema, RSS, canonical
- Pipeline unchanged (Hugo 0.148.2, GitHub Pages); post URLs preserved

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 11:08:32 -04:00

78 lines
3.0 KiB
HTML

{{ define "body-class" }}page-home{{ end }}
{{ define "main" }}
<header class="hero">
<div class="container">
<p class="hero__eyebrow eyebrow">
<span class="dot dot--pulse" aria-hidden="true"></span>
{{ .Site.Params.hero_eyebrow | default "neil@potato:~$ whoami" }}
</p>
<h1 class="hero__title">
{{ .Site.Params.author }} —<br>
infrastructure, networks, systems<br>
&amp; the occasional <span class="grad">potato</span>.
</h1>
<div class="hero__lede">
{{ .Content }}
</div>
<div class="actions">
<a class="btn btn--primary" href="/posts/">Read the blog →</a>
<a class="btn btn--ghost" href="/projects/">Projects</a>
<a class="btn btn--ghost" href="https://shrugpw.com" rel="noopener">Hire me →</a>
</div>
<div class="social-inline">
{{- with .Site.Params.social.github }}<a href="https://github.com/{{ . }}" rel="me noopener"><span class="dot" aria-hidden="true"></span> github/{{ . }}</a>{{ end }}
{{- with .Site.Params.social.bluesky }}<a href="https://bsky.app/profile/{{ replace . "@" "" }}" rel="me noopener">bsky/{{ . }}</a>{{ end }}
{{- with .Site.Params.social.instagram }}<a href="https://instagram.com/{{ . }}" rel="noopener">the cat's instagram</a>{{ end }}
{{- with .Site.Params.social.email }}<a href="mailto:{{ . }}">{{ . }}</a>{{ end }}
</div>
</div>
</header>
<section class="section section--surface" aria-labelledby="writing-heading">
<div class="container">
<div class="section-head">
<span class="section-label">// writing</span>
<h2 id="writing-heading">Latest posts</h2>
<p>Homelab, infrastructure, and the occasional life event that turns into a systems-design problem.</p>
</div>
<div class="posts">
{{- range first 8 (where .Site.RegularPages "Section" "posts").ByDate.Reverse }}
<a href="{{ .RelPermalink }}" class="post-row">
<div class="post-row__meta">
<time datetime="{{ .Date.Format "2006-01-02" }}">{{ .Date.Format "Jan 2, 2006" }}</time>
{{- if .Draft }}<span class="chip chip--draft">draft</span>
{{- else }}{{ with .Params.tags }}<span class="chip chip--tag">{{ index . 0 }}</span>{{ end }}{{ end }}
</div>
<div>
<div class="post-row__title">{{ .Title }}</div>
<p class="post-row__dek">{{ .Description | default .Summary | truncate 180 }}</p>
</div>
</a>
{{- end }}
</div>
</div>
</section>
{{- with .Site.Params.now }}
<section class="section soil" aria-labelledby="now-heading">
<div class="container">
<div class="section-head">
<span class="section-label">// now</span>
<h2 id="now-heading">What's running</h2>
</div>
<div class="now-grid">
{{- range . }}
<div class="now-card">
<h3><span class="dot" aria-hidden="true"></span> {{ .title }}</h3>
<p>{{ .body | safeHTML }}</p>
</div>
{{- end }}
</div>
</div>
</section>
{{- end }}
{{ end }}