Commit Graph

20 Commits

Author SHA1 Message Date
valknar 869e3e00d2 Replace data/issues.json with content/_index.md files per issue
Issue metadata (title, description, season, status) now lives in
content/issues/XX/_index.md. terms.html reads from those pages via
$.Site.GetPage, driven by issueIds param in hugo.toml. Removes the
JSON data file and its generation from import-posts.py.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 18:48:27 +02:00
valknar c766bba028 Homepage: show 5 featured plates, brand CTA button
Mark five posts (Gothic, Cyberpunk, Dark Fantasy, Urban, Sci-Fi) as
featured: true. Homepage grid now filters by that flag instead of
showing first 8. CTA button changed from plain black to brand russet.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 18:44:49 +02:00
valknar 39cffeb0bc Add pagination to category, tag, and issue pages (10 per page)
pagerSize set to 10 (5 columns × 2 rows). New pagination partial
renders prev/next links and numbered page buttons. Applied to
_default/list.html (categories + tags) and issues/list.html.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 18:33:21 +02:00
valknar 84ff82ac44 Fix doubled border below search bar
The search bar had its own border-b which stacked with the header's
border-b once the category tabs row was removed. Drop the redundant
one from the search bar.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 18:30:01 +02:00
valknar 9c9f420b12 Remove category tabs bar from header
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 18:28:15 +02:00
valknar 32a46a5a48 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>
2026-05-18 18:24:54 +02:00
valknar 8513c1c021 Derive header category tabs from taxonomy instead of hardcoded list
Tabs now reflect only categories that actually have posts, so stale
entries like Noir can't appear.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 18:22:20 +02:00
valknar 7ca816a3aa Capitalise descriptions and add trailing period
Normalise all post descriptions at import time: first character uppercased,
period appended if missing. Regenerated all 101 page bundles.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 18:13:13 +02:00
valknar 598e2f0593 Fix search input losing focus on mouse click
The click-outside handler was checking for .subhead (a BEM class removed
in the Tailwind refactor) so every click including on the input itself
triggered closeSearch(). Now checks for the actual search label and popup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 18:10:55 +02:00
valknar 54a87dc4ed Refactor: replace all BEM CSS with Tailwind utility classes
Remove all BEM component classes (hero__*, card__*, issue-card__*, foot__*,
masthead__*, searchpop__*, lb__*) from CSS and templates. Replace with
Tailwind v4 utility classes inline in HTML. Create card.html partial to
avoid repeating verbose utility strings across grid templates. Rename
lightbox CSS to flat lb-* and search popup to sp-*.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 18:06:55 +02:00
valknar e3e9cf6742 Fix Issues header link: /issue/ → /issues/
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 17:38:19 +02:00
valknar b77fec34de Add issue number to card overlay (bottom-left)
Each card frame now shows № 01 at the bottom-left alongside the
existing plate number (top-left) and category (top-right).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 17:35:38 +02:00
valknar e8226b2e2f Fix tab highlight: exact category URL match instead of substring
/categories/dark-fantasy/ was also activating the Fantasy tab
because path.includes('fantasy') matched. Now compares the full
/categories/{slug}/ path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 17:33:42 +02:00
valknar 073c4b804c Restore referrer URL on lightbox close
Save location.href before pushState when opening lightbox from a
grid page, and navigate back to it on close. Direct single-post
page loads still return to the issue page.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 17:31:57 +02:00
valknar 199883e8c6 Lightbox always scopes to full issue, not visible cards
Previously the lightbox list was built from whichever cards happened
to be in the DOM (e.g. only tagged posts on a /tags/ page). Now all
three open paths — card click, VTA navigation, and direct URL load —
scope the list to all posts sharing the same issue as the opened post.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 17:29:00 +02:00
valknar 76f87d5009 One category per post, display in grid without tag
Import script now takes only the first CSV category per post.
All card grid templates simplified to show just that single
category in card__sub — no tag alongside it.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 17:22:20 +02:00
valknar 0ae8afbf7b Replace posts/001/slug nesting with issue taxonomy
Use Hugo's `issue = "issues"` taxonomy so each post carries
`issues: ["01"]` in frontmatter. Issue pages live at /issues/01/
with a dedicated _index.md holding title, season, and description.
The /issues/ archive page uses data/issues.json for forthcoming
entries that have no posts yet.

Layouts:
- layouts/issues/list.html → plate grid for a single issue term
- layouts/issues/terms.html → issues archive (new)
- _default/single.html → scopes grid to issue term page, back-link to /issues/01/
- baseof.html → ribbon links to /issues/01/, JSON island includes issue field
- partials/header.html → Issues link → /issues/

JS:
- lbClose() navigates to /issues/${issueId}/ on a single-post page
- lightbox meta panel shows linked Issue fact

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 17:09:39 +02:00
valknar a4463f03e3 Close lightbox before navigating on tag/category link click
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 16:43:19 +02:00
valknar e46baf497b Fix lightbox tags: add # prefix and link to tag pages
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 16:38:39 +02:00
valknar f537f32295 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>
2026-05-18 16:27:47 +02:00