Vrai-Prix — l'évaluation du vrai prix des propriétés résidentielles au Québec.
1// Auteur : Simon-Pierre Boucher — contact@spboucher.ai2import type { Metadata, Viewport } from "next";3import { Inter, JetBrains_Mono, Space_Grotesk } from "next/font/google";4import "./globals.css";5import "../ka/ka-tabbar.css";6import { LangProvider, LangToggle } from "@/components/LangContext";7import AccountButton from "@/components/AccountButton";8import CookieConsent from "@/components/CookieConsent";9import FooterNav from "@/components/FooterNav";10import MobileTabBar from "@/components/MobileTabBar";11import HeaderNav from "@/components/HeaderNav";12import GroupeKaBadge from "@/ka/GroupeKaBadge";13import KaFooter from "@/ka/KaFooter";14import Link from "next/link";15import { SITE_URL } from "@/lib/seo";1617const inter = Inter({ subsets: ["latin"], variable: "--font-inter" });18const spaceGrotesk = Space_Grotesk({19 subsets: ["latin"],20 variable: "--font-space-grotesk",21});22const jetbrains = JetBrains_Mono({23 subsets: ["latin"],24 variable: "--font-jetbrains",25});2627export const metadata: Metadata = {28 metadataBase: new URL(SITE_URL),29 title: {30 default: "Vrai-Prix — Un service Groupe KA",31 template: "%s | Vrai-Prix",32 },33 description:34 "Estimation immobilière transparente pour le Québec : modèle hédonique + comparables réels, fourchette honnête et indice de confiance. 3,7 millions de propriétés, 1 100 municipalités.",35 applicationName: "Vrai-Prix",36 icons: { icon: "/favicon.svg", apple: "/apple-touch-icon.png" },37 openGraph: {38 type: "website",39 siteName: "Vrai-Prix",40 locale: "fr_CA",41 url: SITE_URL,42 title: "Vrai-Prix — Un service Groupe KA",43 description:44 "Estimation immobilière transparente pour le Québec : modèle hédonique + comparables réels, fourchette honnête et indice de confiance.",45 images: [46 { url: "https://www.vrai-prix.com/og.png", width: 1200, height: 630 },47 ],48 },49 twitter: {50 card: "summary_large_image",51 images: [52 { url: "https://www.vrai-prix.com/og.png", width: 1200, height: 630 },53 ],54 title: "Vrai-Prix — Un service Groupe KA",55 description:56 "Estimation immobilière transparente pour le Québec : 3,7 millions de propriétés estimées, calcul montré en entier.",57 },58 formatDetection: { telephone: false },59};6061/** Viewport mobile : viewport-fit=cover pour les encoches iOS (safe-area). */62export const viewport: Viewport = {63 width: "device-width",64 initialScale: 1,65 viewportFit: "cover",66};6768/** JSON-LD global : l'organisation et le site (entités schema.org). */69const ORG_JSONLD = {70 "@context": "https://schema.org",71 "@graph": [72 {73 "@type": "Organization",74 "@id": `${SITE_URL}/#org`,75 name: "Vrai-Prix",76 url: SITE_URL,77 email: "contact@spboucher.ai",78 founder: { "@type": "Person", name: "Simon-Pierre Boucher" },79 areaServed: { "@type": "AdministrativeArea", name: "Québec, Canada" },80 },81 {82 "@type": "WebSite",83 "@id": `${SITE_URL}/#site`,84 name: "Vrai-Prix",85 url: SITE_URL,86 inLanguage: "fr-CA",87 publisher: { "@id": `${SITE_URL}/#org` },88 description:89 "Estimation immobilière transparente pour le Québec : modèle hédonique + comparables réels, fourchette honnête et indice de confiance.",90 },91 ],92};9394const TICKER = [95 "3 747 008 unités d'évaluation",96 "745 119 ventes réelles 2021-2026",97 "22 M d'estimations calculées",98 "Fourchette honnête P10-P90",99 "Indice de confiance A-D",100 "Zéro boîte noire — le calcul est montré",101 "1 100 municipalités couvertes",102 "Erreur médiane 11 %",103];104105export default function RootLayout({ children }: LayoutProps<"/">) {106 return (107 <html lang="fr-CA">108 <body109 className={`${inter.variable} ${spaceGrotesk.variable} ${jetbrains.variable}`}110 >111 <script112 type="application/ld+json"113 dangerouslySetInnerHTML={{ __html: JSON.stringify(ORG_JSONLD) }}114 />115 <LangProvider>116 {/* header opaque compact (standard header/menu KA 2026-08-22) */}117 <header className="sticky top-0 z-[var(--z-header,500)] border-b border-[var(--line-strong)] bg-paper">118 <div className="relative mx-auto flex h-14 max-w-6xl items-center gap-6 px-4 sm:px-6">119 <Link120 href="/"121 className="vp-display relative flex items-baseline gap-1.5 text-[19px] font-bold leading-none tracking-[-0.04em] after:absolute after:-inset-2 after:content-['']"122 >123 Vrai Prix124 <span125 aria-hidden="true"126 className="inline-block h-[7px] w-[7px] bg-accent"127 />128 </Link>129 {/* badge Groupe KA — desktop seulement (l'espace manque sous xl ;130 le menu mobile porte sa propre entrée) */}131 <span className="hidden xl:inline-flex">132 <GroupeKaBadge />133 </span>134 <div className="ml-auto flex items-center gap-3 sm:gap-4">135 <HeaderNav />136 <span137 aria-hidden="true"138 className="hidden h-4 w-px bg-[var(--line)] lg:inline-block"139 />140 <AccountButton />141 <LangToggle />142 </div>143 </div>144 </header>145 <div className="ticker" aria-hidden="true">146 <div className="ticker-track">147 {[...TICKER, ...TICKER].map((s, i) => (148 <span key={i}>{s}</span>149 ))}150 </div>151 </div>152 <main className="mx-auto max-w-6xl px-4 pb-16 sm:px-6">{children}</main>153 {/* rangée locale (papier) : marque + liens de navigation du site,154 puis le bloc encre final = KaFooter (commun Groupe KA) */}155 <div className="mx-auto max-w-6xl px-4 sm:px-6">156 <div className="border-t-2 border-ink pt-7 text-[13px] text-ink-2">157 <p className="vp-display mb-3 flex items-baseline gap-2 text-[24px] font-bold tracking-[-0.04em] text-ink">158 Vrai Prix159 <span160 aria-hidden="true"161 className="inline-block h-[8px] w-[8px] bg-accent"162 />163 </p>164 <p className="max-w-2xl">165 Estimations bâties sur les rôles d'évaluation foncière du166 Québec (MAMH, données ouvertes) et 745 119 transactions réelles.167 Modèle hédonique + comparables ajustés, calcul montré en entier.168 Estimation statistique à titre indicatif.169 </p>170 <FooterNav />171 </div>172 </div>173 <KaFooter174 siteId="vrai-prix"175 localLegal={[176 { label: "Conditions", href: "/conditions" },177 { label: "Confidentialité", href: "/confidentialite" },178 { label: "Méthodologie", href: "/methodologie" },179 ]}180 />181 <MobileTabBar />182 <CookieConsent />183 <script184 dangerouslySetInnerHTML={{185 __html: 'window.KA_AGENT={site:"vrai-prix"}',186 }}187 />188 <script src="/ka-agent.js" defer />189 </LangProvider>190 </body>191 </html>192 );193}194