TypeScript 90.1%
JavaScript 3.2%
Python 3.2%
CSS 1.8%
HTML 1.8%
1// UQO Éval — laboratoire pédagogique d'évaluation immobilière2import 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 CookieConsent from "@/components/CookieConsent";8import FooterNav from "@/components/FooterNav";9import MobileTabBar from "@/components/MobileTabBar";10import HeaderNav from "@/components/HeaderNav";11import UqoFooter from "@/components/UqoFooter";12import Link from "next/link";13import { SITE_URL } from "@/lib/seo";1415const inter = Inter({ subsets: ["latin"], variable: "--font-inter" });16const spaceGrotesk = Space_Grotesk({17 subsets: ["latin"],18 variable: "--font-space-grotesk",19});20const jetbrains = JetBrains_Mono({21 subsets: ["latin"],22 variable: "--font-jetbrains",23});2425export const metadata: Metadata = {26 metadataBase: new URL(SITE_URL),27 title: {28 default: "UQO Éval — Laboratoire pédagogique d'évaluation immobilière",29 template: "%s | UQO Éval",30 },31 description:32 "Plateforme universitaire pour comprendre comment une propriété est évaluée : modèle hédonique, comparables réels, ajustements montrés en dollars, intervalle de confiance. 3,7 millions de propriétés du Québec, 1 100 municipalités.",33 applicationName: "UQO Éval",34 manifest: "/manifest.webmanifest",35 icons: { icon: "/favicon.svg", apple: "/apple-touch-icon.png" },36 openGraph: {37 type: "website",38 siteName: "UQO Éval",39 locale: "fr_CA",40 url: SITE_URL,41 title: "UQO Éval — Laboratoire pédagogique d'évaluation immobilière",42 description:43 "Comprendre comment une propriété est évaluée : modèle hédonique, comparables réels, ajustements en dollars, intervalle de confiance — le calcul montré en entier.",44 images: [{ url: `${SITE_URL}/og.png`, width: 1200, height: 630 }],45 },46 twitter: {47 card: "summary_large_image",48 images: [{ url: `${SITE_URL}/og.png`, width: 1200, height: 630 }],49 title: "UQO Éval — Laboratoire pédagogique d'évaluation immobilière",50 description:51 "Comprendre comment une propriété est évaluée : 3,7 millions de propriétés du Québec, le calcul montré en entier.",52 },53 formatDetection: { telephone: false },54};5556/** Viewport mobile : viewport-fit=cover pour les encoches iOS (safe-area). */57export const viewport: Viewport = {58 width: "device-width",59 initialScale: 1,60 viewportFit: "cover",61};6263/** JSON-LD global : l'organisation et le site (entités schema.org). */64const ORG_JSONLD = {65 "@context": "https://schema.org",66 "@graph": [67 {68 "@type": "EducationalOrganization",69 "@id": `${SITE_URL}/#org`,70 name: "UQO Éval",71 alternateName: "Laboratoire pédagogique d'évaluation immobilière",72 url: SITE_URL,73 parentOrganization: {74 "@type": "CollegeOrUniversity",75 name: "Université du Québec en Outaouais",76 url: "https://uqo.ca",77 },78 areaServed: { "@type": "AdministrativeArea", name: "Québec, Canada" },79 },80 {81 "@type": "WebSite",82 "@id": `${SITE_URL}/#site`,83 name: "UQO Éval",84 url: SITE_URL,85 inLanguage: "fr-CA",86 publisher: { "@id": `${SITE_URL}/#org` },87 description:88 "Laboratoire pédagogique d'évaluation immobilière : modèle hédonique, comparables réels, intervalle de confiance — le calcul montré en entier.",89 },90 ],91};9293const TICKER = [94 "3 747 008 unités d'évaluation",95 "745 119 ventes réelles 2021-2026",96 "22 M d'estimations calculées",97 "Intervalle de confiance P10-P90",98 "Indice de confiance A-D",99 "Chaque ajustement montré en dollars",100 "1 100 municipalités couvertes",101 "Modèle hédonique — erreur médiane 11 %",102 "Cours IMM1003 · IMM1033 — UQO",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 — logo officiel UQO + wordmark Éval */}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="relative flex items-end gap-3 after:absolute after:-inset-2 after:content-['']"122 aria-label="UQO Éval — accueil"123 >124 {/* eslint-disable-next-line @next/next/no-img-element */}125 <img126 src="/uqo/uqo-bleu.png"127 alt="UQO"128 className="h-[26px] w-auto"129 />130 <span className="vp-display text-[19px] font-bold leading-none tracking-[-0.04em] text-accent">131 Éval132 </span>133 </Link>134 {/* sous-titre — desktop large seulement */}135 <span className="vp-mono hidden text-[9.5px] uppercase leading-tight tracking-[0.1em] text-ink-3 xl:inline-block">136 Laboratoire pédagogique137 <br />138 d'évaluation immobilière139 </span>140 <div className="ml-auto flex items-center gap-3 sm:gap-4">141 <HeaderNav />142 <span143 aria-hidden="true"144 className="hidden h-4 w-px bg-[var(--line)] lg:inline-block"145 />146 <LangToggle />147 </div>148 </div>149 </header>150 <div className="ticker" aria-hidden="true">151 <div className="ticker-track">152 {[...TICKER, ...TICKER].map((s, i) => (153 <span key={i}>{s}</span>154 ))}155 </div>156 </div>157 <main className="mx-auto max-w-6xl px-4 pb-16 sm:px-6">{children}</main>158 {/* rangée locale (papier) : marque + liens de navigation du site,159 puis le bloc encre final = footer institutionnel UQO Éval */}160 <div className="mx-auto max-w-6xl px-4 sm:px-6">161 <div className="border-t-2 border-ink pt-7 text-[13px] text-ink-2">162 <p className="vp-display mb-3 flex items-baseline gap-2 text-[24px] font-bold tracking-[-0.04em] text-ink">163 UQO Éval164 <span165 aria-hidden="true"166 className="inline-block h-[8px] w-[8px] bg-accent"167 />168 </p>169 <p className="max-w-2xl">170 Laboratoire pédagogique d'évaluation immobilière. Estimations171 bâties sur les rôles d'évaluation foncière du Québec (MAMH,172 données ouvertes) et 745 119 transactions réelles. Modèle173 hédonique + comparables ajustés, calcul montré en entier — à des174 fins pédagogiques, universitaires et expérimentales.175 </p>176 <FooterNav />177 </div>178 </div>179 <UqoFooter />180 <MobileTabBar />181 <CookieConsent />182 <script183 dangerouslySetInnerHTML={{184 __html: 'window.KA_AGENT={site:"uqo-eval"}',185 }}186 />187 <script src="/assistant.js" defer />188 </LangProvider>189 </body>190 </html>191 );192}193