Files
PleinR/src/components/SiteHeader.tsx
T
Claude a52e13e623 Promotions : page publique dédiée, l'accueil garde les six dernières
`/promotions` liste toutes les offres en cours ; l'accueil en montre six et
renvoie vers elle. Les deux listes partagent `PromoCard`, extrait de la page
d'accueil : un seul rendu de carte à maintenir.

- `getLivePromotions(limit)` accepte `null` pour « toutes les offres », la
  limite restant appliquée en SQL et non après coup.
- Page complète : `<h1>` unique, `<main>`, métadonnées et canonique via
  `pageMetadata`, JSON-LD `BreadcrumbList` + `ItemList`, entrée au sitemap,
  état vide qui renvoie vers l'annuaire.
- Les liens « Promotions » de l'en-tête, du pied de page et de l'espace
  adhérent visent désormais cette page. Idem pour le lien d'une publication
  réseau sans adhérent rattaché, qui pointait sur l'ancre `/#promotions`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QXNXRC4j5VLfKvpyyisrnb
2026-09-06 14:34:27 +00:00

46 lines
1.4 KiB
TypeScript

import Link from "next/link";
const NAV = [
{ key: "accueil", label: "Accueil", href: "/" },
{ key: "annuaire", label: "Annuaire", href: "/annuaire" },
{ key: "promotions", label: "Promotions", href: "/promotions" },
{ key: "association", label: "L'association", href: "/association" },
];
export function SiteHeader({ active, logo = false }: { active?: string; logo?: boolean }) {
return (
<header className="container site-header">
{/* Sur téléphone le logo est toujours visible : c'est le seul retour à
l'accueil, la page d'accueil ne l'affichant qu'en grand dans le hero. */}
<Link
href="/"
aria-label="Plein R — accueil"
className={`site-header__brand${logo ? "" : " is-desktop-hidden"}`}
>
{/* eslint-disable-next-line @next/next/no-img-element */}
<img src="/assets/logo.png" alt="Plein R" />
</Link>
<nav className="site-header__nav">
{NAV.map((n) => {
const isActive = active === n.key;
return (
<Link
key={n.key}
href={n.href}
aria-current={isActive ? "page" : undefined}
className={`site-header__link${isActive ? " is-active" : ""}`}
>
{n.label}
</Link>
);
})}
</nav>
<Link href="/backend" className="site-header__cta">
Espace adhérent
</Link>
</header>
);
}