import { readFile } from "node:fs/promises"; import path from "node:path"; import { ImageResponse } from "next/og"; import { SITE_NAME } from "@/lib/seo"; /** * Image de partage (Open Graph / Twitter) générée à la volée, 1200×630. * Sert de vignette par défaut à toutes les pages ; les fiches adhérents la * reprennent, leurs logos étant stockés en data-URI (illisibles par les * robots de prévisualisation). */ export const alt = "Plein R — Commerçants & entreprises du Bassin de Pompey"; export const size = { width: 1200, height: 630 }; export const contentType = "image/png"; /** Logo servi depuis `public/` (copié dans l'image standalone), en data-URI pour Satori. */ async function logoDataUri(): Promise { try { const file = await readFile(path.join(process.cwd(), "public", "assets", "logo.png")); return `data:image/png;base64,${file.toString("base64")}`; } catch { return null; } } export default async function OpenGraphImage() { const logo = await logoDataUri(); return new ImageResponse( (
{logo ? ( // eslint-disable-next-line @next/next/no-img-element ) : (
R
)}
{SITE_NAME}
Réseau · Rencontre · Réussite
Le cœur commerçant du  Bassin de Pompey
Annuaire des commerçants, artisans et entreprises · Bons plans · Rencontres
{["#E0A63C", "#2C6FB3", "#d8472b", "#1f8a5b"].map((c) => (
))}
), { ...size } ); }