Initial Roux Hugo site — fashion journal for roux.pivoine.art
100-post fashion journal generated from ~/projects/ginger content: - Hugo Extended static site with TailwindCSS v4 - WebP image pipeline (thumb/card/og/full sizes via Hugo image processing) - Full SEO: sitemap (501 URLs), OpenGraph with per-post images, Twitter cards - Async page transitions via View Transitions API - Deep-linked URLs: /posts/[slug]/, /categories/[cat]/, /tags/[tag]/, /issues/ - Lightbox with keyboard/swipe nav, thumbnail strip, inverted search index - Issues archive with quarterly release structure - Multi-stage Dockerfile (Tailwind → Hugo → nginx:alpine) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
{{ define "main" }}
|
||||
{{- $issues := .Site.Data.issues }}
|
||||
<section class="hero" id="hero">
|
||||
<div class="hero__eyebrow">Archive · Every issue</div>
|
||||
<h1 class="hero__title">The <em>issues</em></h1>
|
||||
<p class="hero__lede">Roux publishes one hundred photographs at a time, once a season. Each issue is a complete thing.</p>
|
||||
</section>
|
||||
|
||||
<div class="issues-grid">
|
||||
{{- range $i, $iss := $issues }}
|
||||
{{- $delay := mul $i 80 }}
|
||||
{{- $isCurrent := eq $iss.status "current" }}
|
||||
{{- $isForth := eq $iss.status "forthcoming" }}
|
||||
|
||||
{{- if $isCurrent }}
|
||||
<a href="/posts/" class="issue-card{{ if $isForth }} issue-card--forthcoming{{ end }}" style="--d:{{ $delay }}ms">
|
||||
{{- else if $isForth }}
|
||||
<div class="issue-card issue-card--forthcoming" style="--d:{{ $delay }}ms">
|
||||
{{- else }}
|
||||
<a href="/posts/" class="issue-card" style="--d:{{ $delay }}ms">
|
||||
{{- end }}
|
||||
|
||||
<div class="issue-card__cover">
|
||||
{{- if $isForth }}
|
||||
<div class="issue-card__forth">
|
||||
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>
|
||||
Forthcoming
|
||||
</div>
|
||||
{{- else }}
|
||||
{{/* Use first post image as cover */}}
|
||||
{{- $posts := where $.Site.RegularPages "Section" "posts" }}
|
||||
{{- $first := index $posts 0 }}
|
||||
{{- if $first }}
|
||||
{{- $img := $first.Resources.GetMatch "*.png" }}
|
||||
{{- if $img }}
|
||||
{{- $cover := $img.Resize "480x720 webp" }}
|
||||
<picture>
|
||||
<source srcset="{{ $cover.RelPermalink }}" type="image/webp" />
|
||||
<img src="{{ $cover.RelPermalink }}" alt="Issue {{ $iss.number }} cover" loading="lazy" />
|
||||
</picture>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
</div>
|
||||
|
||||
<div class="issue-card__meta">
|
||||
<div class="issue-card__num">{{ $iss.number }}</div>
|
||||
<h2 class="issue-card__title">{{ $iss.title | replaceRE `^(.+)$` "$1" }}</h2>
|
||||
<p class="issue-card__blurb">{{ $iss.blurb }}</p>
|
||||
<div class="issue-card__foot">
|
||||
<span>{{ $iss.season }}</span>
|
||||
{{- if $isCurrent }}
|
||||
<span class="issue-card__cta">Read the issue →</span>
|
||||
{{- else if $isForth }}
|
||||
<span class="issue-card__cta issue-card__cta--muted">Subscribe →</span>
|
||||
{{- end }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{- if or $isCurrent (not $isForth) }}</a>{{- else }}</div>{{- end }}
|
||||
{{- end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
Reference in New Issue
Block a user