--- import '../styles/global.css'; import Footer from '../components/astro/Footer.astro'; import SiteHeader from '../components/astro/SiteHeader.astro'; interface Props { title?: string; description?: string; ogImage?: string; canonical?: string; /** Article JSON-LD : passer true sur les pages articles (manifeste, etc.) */ isArticle?: boolean; articleDate?: string; articleDescription?: string; } const { title, description, ogImage, canonical, isArticle = false, articleDate, articleDescription, } = Astro.props; const SITE_NAME = 'trans-former.fr'; const SITE_URL = 'https://trans-former.fr'; const DEFAULT_DESC = "Architecture, ecologie, politique : un commun a construire ensemble. Manifeste et infrastructure vivante de Jules NENY."; const DEFAULT_OG = '/og-default.png'; const fullTitle = title ? `${title} - ${SITE_NAME}` : SITE_NAME; const finalDesc = description || DEFAULT_DESC; const finalCanonical = canonical || new URL(Astro.url.pathname, SITE_URL).href; const finalOg = ogImage || DEFAULT_OG; const finalOgAbsolute = finalOg.startsWith('http') ? finalOg : `${SITE_URL}${finalOg}`; const websiteSchema = { "@context": "https://schema.org", "@type": "WebSite", "name": SITE_NAME, "url": SITE_URL, "author": { "@type": "Person", "name": "Jules NENY", "url": `${SITE_URL}/a-propos`, "sameAs": [ "https://www.instagram.com/julesneny/", "https://www.instagram.com/aep.politique/", "https://julesneny.substack.com", "https://git.trans-former.fr/jules" ] }, "description": DEFAULT_DESC }; const articleSchema = isArticle ? { "@context": "https://schema.org", "@type": "Article", "headline": title || SITE_NAME, "author": { "@type": "Person", "name": "Jules NENY" }, "datePublished": articleDate || "2026-05-01", "publisher": { "@type": "Organization", "name": SITE_NAME }, "description": articleDescription || finalDesc } : null; --- {fullTitle}