Registry : ajoute 2 plugins : - theme-aquarelle (carnet naturaliste XIXᵉ, mutual exclusion avec theme-guyane) - image-gallery-aquarelle-seed (14 aquarelles → MinIO + Media carbets démo) Hooks : - theme-guyane et theme-aquarelle se désactivent mutuellement au toggle ON via disableOtherTheme() CSS (globals.css) : - body[data-theme=aquarelle] : background papier teinté #faf5e9 + texture grain papier inline SVG + radial gradients ocres/canopy délavés - Surcharges automatiques des borders zinc/gray vers sépia délavé Layout : - PT_Serif (au lieu de Cormorant) en theme aquarelle, plus dense et encrée - data-theme = aquarelle prioritaire sur guyane si les deux sont enabled (défensif — le hook garantit normalement la mutual exclusion) Hero : - 2 versions dans le composant : guyane (existant, SVG CarbetRiver) et aquarelle (image MinIO 01-hero-fleuve-maroni.jpg en fond, voile crème, texte sépia, CTAs carrés sans rounded, hairlines, ornement de planche) - Branchement via getActiveTheme() - aquarelleUrl() helper qui construit l'URL MinIO publique Partie 2/2 (PR ultérieure) : upload des 14 images dans MinIO + hook image-gallery-aquarelle-seed + variantes aquarelle des autres composants (CarbetCard, ExperiencesSection, HowItWorksSection, CESection, Footer).
28 lines
1 KiB
TypeScript
28 lines
1 KiB
TypeScript
/**
|
|
* Helpers theme — server-side.
|
|
*
|
|
* Centralise la résolution du theme actif (guyane | aquarelle | none) pour
|
|
* que chaque composant qui veut un rendu spécifique au theme appelle un seul
|
|
* helper plutôt que de checker `isPluginEnabled("theme-...")` individuellement.
|
|
*/
|
|
|
|
import "server-only";
|
|
import { isPluginEnabled } from "@/lib/plugins/server";
|
|
|
|
export type ActiveTheme = "guyane" | "aquarelle" | "none";
|
|
|
|
export async function getActiveTheme(): Promise<ActiveTheme> {
|
|
if (await isPluginEnabled("theme-aquarelle")) return "aquarelle";
|
|
if (await isPluginEnabled("theme-guyane")) return "guyane";
|
|
return "none";
|
|
}
|
|
|
|
/**
|
|
* URL publique d'une illustration aquarelle hébergée dans MinIO.
|
|
* Les fichiers sont uploadés dans karbe-medias/seed/aquarelle/ et servis via
|
|
* media.karbe.cosmolan.fr (bucket public-download).
|
|
*/
|
|
export function aquarelleUrl(filename: string): string {
|
|
const base = process.env.S3_PUBLIC_URL?.replace(/\/+$/, "") ?? "https://media.karbe.cosmolan.fr/karbe-medias";
|
|
return `${base}/seed/aquarelle/${filename}`;
|
|
}
|