// Auteur : Simon-Pierre Boucher — contact@spboucher.ai // Constantes et aides SEO : URL canonique du site, slugs, libellés de types. export const SITE_URL = process.env.NEXT_PUBLIC_SITE_URL ?? "https://www.vrai-prix.com"; export const SITE_NAME = "Vrai-Prix"; /** Slug URL d'un nom de municipalité (unique sur les 1 097 noms — vérifié). */ export function slugify(name: string): string { return name .normalize("NFD") // retire les diacritiques combinants (é → e) .replace(/[\u0300-\u036f]/g, "") .toLowerCase() .replace(/['’]/g, "-") .replace(/[^a-z0-9]+/g, "-") .replace(/^-+|-+$/g, ""); } /** type_prop (DB) → segment d'URL. */ export const TYPE_SLUGS: Record = { unifamilial: "maison", plex: "plex", chalet: "chalet", condo_ou_multi: "condo", terrain: "terrain", maison_mobile: "maison-mobile", autre: "autre", }; /** segment d'URL → type_prop (DB). */ export const SLUG_TYPES: Record = Object.fromEntries( Object.entries(TYPE_SLUGS).map(([k, v]) => [v, k]) ); /** Libellés français des types de propriété. */ export const TYPE_LABELS: Record = { unifamilial: { singulier: "maison unifamiliale", pluriel: "maisons unifamiliales" }, plex: { singulier: "plex", pluriel: "plex (2 à 5 logements)" }, chalet: { singulier: "chalet", pluriel: "chalets et résidences secondaires" }, condo_ou_multi: { singulier: "condo ou multirésidentiel", pluriel: "condos et multirésidentiel" }, terrain: { singulier: "terrain", pluriel: "terrains vacants" }, maison_mobile: { singulier: "maison mobile", pluriel: "maisons mobiles" }, autre: { singulier: "autre propriété", pluriel: "autres propriétés" }, }; /** 425 000 → « 425 000 $ » (fr-CA, sans décimales). */ export function moneyFr(v: number | null | undefined): string { if (v == null) return "—"; return new Intl.NumberFormat("fr-CA", { style: "currency", currency: "CAD", maximumFractionDigits: 0, }).format(v); } /** 3747008 → « 3 747 008 » (fr-CA). */ export function numFr(v: number): string { return v.toLocaleString("fr-CA"); } /** Millésime courant des estimations (dernier millésime du rôle chargé). */ export const EST_YEAR = 2026;