Redesign homepage as current-issue landing page
Replace full plate grid with issue identity hero (title, season, description, logo), 8-plate preview, and CTA strip linking to the full issue. All data is derived from the issues/01 taxonomy term page so the page stays in sync when the issue changes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+71
-14
@@ -1,24 +1,81 @@
|
|||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<section id="hero" class="px-[var(--pad)] pt-[clamp(36px,5vw,64px)] pb-[clamp(28px,3.5vw,48px)] border-b border-[var(--rule)]">
|
{{- $issueNum := .Site.Params.issueNumber }}
|
||||||
<div class="font-sans font-medium text-[10px] leading-none tracking-[.22em] uppercase text-ink-soft mb-4">
|
{{- $issuePage := $.Site.GetPage (printf "/issues/%s" $issueNum) }}
|
||||||
№ {{ .Site.Params.issueNumber }} · {{ .Site.Params.issueSeason }} ·
|
{{- $plates := cond (ne $issuePage nil) $issuePage.Pages .Site.RegularPages }}
|
||||||
<a href="/issues/" class="border-b border-current ml-1">View all issues</a>
|
{{- $total := len $plates }}
|
||||||
|
|
||||||
|
{{/* ── Hero ── */}}
|
||||||
|
<section id="hero"
|
||||||
|
class="grid max-[820px]:block
|
||||||
|
[grid-template-columns:1fr_1px_auto]
|
||||||
|
border-b border-[var(--rule)]">
|
||||||
|
|
||||||
|
{{/* Left: brand statement */}}
|
||||||
|
<div class="px-[var(--pad)] pt-[clamp(40px,6vw,80px)] pb-[clamp(32px,4vw,60px)]">
|
||||||
|
<div class="font-sans font-medium text-[10px] leading-none tracking-[.22em] uppercase text-ink-soft mb-6">
|
||||||
|
№ {{ $issueNum }} · {{ .Site.Params.issueSeason }}
|
||||||
</div>
|
</div>
|
||||||
<h1 class="font-display font-normal text-[clamp(48px,7vw,96px)] leading-[0.94] m-0 mb-4">
|
<h1 class="font-display font-normal text-[clamp(42px,6vw,88px)] leading-[0.94] m-0 mb-5">
|
||||||
An almanac<br/>of <em>fabric, light</em>,<br/>and gesture.
|
{{- if $issuePage }}{{ $issuePage.Title }}{{ else }}{{ .Site.Params.issueName }}{{ end }}
|
||||||
</h1>
|
</h1>
|
||||||
<p class="font-serif italic text-[clamp(13px,1vw,16px)] leading-[1.65] text-ink-2 max-w-[55ch] m-0">
|
<p class="font-serif italic text-[clamp(14px,1.1vw,17px)] leading-[1.65] text-ink-2 max-w-[44ch] m-0 mb-8">
|
||||||
Roux is a slow-publishing fashion journal — one hundred photographs at a time,
|
{{- if $issuePage }}{{ $issuePage.Params.description }}{{ else }}{{ .Site.Params.issueBlurb }}{{ end }}
|
||||||
gathered from <em>ateliers, streets, glasshouses and quiet hotel corridors</em>.
|
|
||||||
You are reading <em>{{ .Site.Params.issueName }}</em>, our № {{ .Site.Params.issueNumber }} issue.
|
|
||||||
</p>
|
</p>
|
||||||
|
<div class="flex items-center gap-4 flex-wrap">
|
||||||
|
<a href="/issues/{{ $issueNum }}/"
|
||||||
|
class="inline-flex items-center gap-2 px-6 py-3
|
||||||
|
bg-ink text-paper
|
||||||
|
font-sans font-medium text-[11px] leading-none tracking-[.16em] uppercase
|
||||||
|
transition-colors duration-200 hover:bg-roux">
|
||||||
|
Enter the issue
|
||||||
|
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg>
|
||||||
|
</a>
|
||||||
|
<a href="/issues/"
|
||||||
|
class="font-sans font-medium text-[11px] leading-none tracking-[.16em] uppercase text-ink-soft
|
||||||
|
border-b border-[var(--rule)] pb-px transition-colors duration-200 hover:text-ink hover:border-ink">
|
||||||
|
All issues
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{/* Divider */}}
|
||||||
|
<div class="bg-[var(--rule)] max-[820px]:hidden"></div>
|
||||||
|
|
||||||
|
{{/* Right: issue identity */}}
|
||||||
|
<div class="flex flex-col items-center justify-center gap-3
|
||||||
|
px-[clamp(24px,4vw,60px)] py-[clamp(32px,4vw,60px)]
|
||||||
|
border-l-0 max-[820px]:border-t max-[820px]:border-[var(--rule)]
|
||||||
|
text-center">
|
||||||
|
{{- partial "logo.html" . }}
|
||||||
|
<div class="font-sans font-medium text-[10px] leading-none tracking-[.22em] uppercase text-ink-soft mt-2">
|
||||||
|
{{- if $issuePage }}{{ $issuePage.Params.season }}{{ else }}{{ .Site.Params.issueSeason }}{{ end }}
|
||||||
|
</div>
|
||||||
|
<div class="font-mono text-[11px] tracking-[.14em] text-ink-soft tabular-nums">
|
||||||
|
{{ $total }} plates
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="grid" data-density="default"
|
{{/* ── Plate preview ── */}}
|
||||||
class="grid [grid-template-columns:repeat(auto-fill,minmax(220px,1fr))] gap-[var(--gap)] px-[var(--pad)] py-[var(--gap)]">
|
<section id="grid"
|
||||||
{{- $posts := where .Site.RegularPages "Section" "posts" }}
|
class="grid [grid-template-columns:repeat(auto-fill,minmax(220px,1fr))] gap-[var(--gap)] px-[var(--pad)] pt-[var(--gap)] pb-0">
|
||||||
{{- range $i, $p := $posts }}
|
{{- range $i, $p := first 8 $plates }}
|
||||||
{{- partial "card.html" (dict "Page" $p "Index" $i) }}
|
{{- partial "card.html" (dict "Page" $p "Index" $i) }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
{{/* ── CTA strip ── */}}
|
||||||
|
<div class="flex items-center justify-between gap-6 flex-wrap
|
||||||
|
px-[var(--pad)] py-[clamp(24px,3vw,40px)]
|
||||||
|
border-t border-[var(--rule)] mt-[var(--gap)]">
|
||||||
|
<p class="font-serif italic text-[clamp(15px,1.2vw,18px)] text-ink-2 m-0">
|
||||||
|
One hundred plates — <em>fabric, light, and the human form in motion.</em>
|
||||||
|
</p>
|
||||||
|
<a href="/issues/{{ $issueNum }}/"
|
||||||
|
class="shrink-0 inline-flex items-center gap-2
|
||||||
|
font-sans font-medium text-[11px] leading-none tracking-[.16em] uppercase text-ink
|
||||||
|
border-b border-[var(--rule)] pb-px transition-colors duration-200 hover:border-ink">
|
||||||
|
View all {{ $total }} plates →
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
Reference in New Issue
Block a user