Add full trilingual EN/FR/NB support across all pages and data

- Convert all data files (site, profile, norway, jazz, projects, cv) to Record<LocaleCode, string> fields
- Update all page templates to use LocaleCopy component for locale-aware rendering
- Fix CSS specificity conflict: .locale-copy .locale-copy__text (spec 20) now beats container span rules (spec 11)
- Update LocaleSwitcher, BaseLayout, and SectionCard for locale prop types
- Design system overhaul: Special Elite font, burgundy #8f2218, DG seal favicon

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-17 23:23:14 +02:00
parent ffb368670c
commit 2a06888fd6
21 changed files with 1377 additions and 848 deletions
+5 -4
View File
@@ -1,18 +1,19 @@
---
import { jazzArticle, jazzBody, jazzImages, jazzSources } from "../../data/jazz";
import BaseLayout from "../../layouts/BaseLayout.astro";
import LocaleCopy from "../../components/LocaleCopy.astro";
---
<BaseLayout
title={`${jazzArticle.title} | Dave Gilligan`}
description={jazzArticle.excerpt}
description={jazzArticle.excerpt.en}
>
<main class="jazz-page">
<section class="container jazz-hero">
<div class="jazz-hero__copy">
<span class="eyebrow">Article / Jazz and Music</span>
<h1>{jazzArticle.title}</h1>
<p class="jazz-hero__lede">{jazzArticle.excerpt}</p>
<p class="jazz-hero__lede"><LocaleCopy copy={jazzArticle.excerpt} /></p>
</div>
<aside class="panel jazz-hero__note">
@@ -47,8 +48,8 @@ import BaseLayout from "../../layouts/BaseLayout.astro";
<span>Field report</span>
<span>Kongsberg x Paris</span>
</div>
{jazzBody.map((paragraph) => (
<p>{paragraph}</p>
{jazzBody.en.map((_, i) => (
<p><LocaleCopy copy={{ en: jazzBody.en[i], fr: jazzBody.fr[i], nb: jazzBody.nb[i] }} /></p>
))}
</article>