Python 51.6%
TypeScript 46.7%
CSS 1.7%
1import type { Metadata } from "next";2import { apiSafe } from "@/lib/api";3import { Compass, type CompassData } from "@/components/compass";4import { Empty } from "@/components/ui";56export const metadata: Metadata = { title: "Boussole électorale Québec 2026", description: "48 énoncés, 6 axes. Chaque position de parti est tirée d'un document officiel (page, citation) : vous pouvez voir pourquoi vous correspondez à un parti." };7export const revalidate = 300;89export default async function Page() {10 const data = await apiSafe<CompassData>("/api/compass/questions");11 if (!data) return <Empty title="Boussole indisponible" />;12 return (13 <div className="space-y-6">14 <div>15 <div className="eyebrow">Boussole électorale · {data.questions.length} énoncés · 6 axes</div>16 <h1 className="display text-[40px] md:text-[56px] mt-3">Boussole QC26</h1>17 <p className="text-ink-2 mt-3 max-w-2xl text-[15px] leading-relaxed">Répondez aux énoncés qui vous parlent, pondérez leur importance, puis comparez. Chaque position de parti provient <b>exclusivement</b> de documents officiels ingérés par QC26 (plateforme, programme, engagements) avec page et citation ; quand un document ne permet pas de conclure, la question ne compte pas pour ce parti. Vos réponses restent dans votre navigateur.</p>18 </div>19 <Compass data={data} />20 </div>21 );22}23