TypeScript 87.7%
CSS 12.3%
1/**2 * Author: Simon-Pierre Boucher3 * Contact: contact@spboucher.ai4 * Project: Groupe Ka / Ka Maps5 *6 * Fond de carte Ka Maps : Mapbox Standard, configuré pour l'immobilier.7 * Le style Standard apporte les bâtiments 3D photoréalistes, les repères8 * et l'éclairage dynamique. Chaque produit choisit son niveau de réalisme9 * via KaBasemapOptions (thème pleine couleur ou « faded », préréglage de10 * lumière, repères 3D) — le jour/nuit bascule via lightPreset (Ka Light /11 * Ka Dark) sans recharger le style.12 */1314import type { Map as MapboxMap } from "mapbox-gl";15import type { KaMapMode, KaMapTheme } from "../theming/tokens.js";1617/** Style Mapbox Standard — 3D natif, repères, éclairage. */18export const KA_STYLE_URL = "mapbox://styles/mapbox/standard";1920export const KA_ATTRIBUTION = "© Mapbox © OpenStreetMap";2122/** Réglages produit du fond Mapbox Standard. */23export interface KaBasemapOptions {24 /** "default" = pleine couleur réaliste ; "faded" = atténué (les prix25 * dominent) ; "monochrome" = neutre. Défaut : "faded". */26 theme?: "default" | "faded" | "monochrome";27 /** Préréglage lumière du mode clair (le mode sombre force "dusk").28 * "day" à midi, "dawn" pour une lumière rasante plus sculpturale. */29 lightPreset?: "dawn" | "day" | "dusk" | "night";30 /** Repères 3D emblématiques (stades, ponts, églises…). Défaut : true. */31 showLandmarks?: boolean;32 /** Étiquettes de commerces/POI. Défaut : false (la carte montre des33 * propriétés, pas des commerces). */34 showPointOfInterestLabels?: boolean;35 /** Couleur du bâtiment « sélectionné » (état select du featureset36 * buildings) — utilisée par KaMap.focusBuilding. */37 colorBuildingSelect?: string;38 /** Couleur du bâtiment « survolé » (état highlight). */39 colorBuildingHighlight?: string;40}4142/**43 * Retourne l'URL de style pour un mode/thème. (Signature conservée : le44 * jour/nuit et les réglages passent par applyKaBasemapConfig, pas par un45 * style différent.)46 */47export function buildKaStyle(_mode: KaMapMode, _theme: KaMapTheme): string {48 return KA_STYLE_URL;49}5051/**52 * Applique les réglages du fond Standard — à appeler après style.load et à53 * chaque changement de mode. Les propriétés absentes d'une future version54 * du style sont ignorées (non bloquant).55 */56export function applyKaBasemapConfig(57 map: MapboxMap,58 mode: KaMapMode,59 basemap?: KaBasemapOptions,60): void {61 const set = (key: string, value: unknown) => {62 try {63 map.setConfigProperty("basemap", key, value);64 } catch {65 // propriété absente sur une future version du style : non bloquant66 }67 };68 set("theme", basemap?.theme ?? "faded");69 set(70 "lightPreset",71 mode === "dark" ? "dusk" : basemap?.lightPreset ?? "day",72 );73 set("showPointOfInterestLabels", basemap?.showPointOfInterestLabels ?? false);74 set("showTransitLabels", false);75 set("showPedestrianRoads", true);76 set("show3dObjects", true);77 set("showLandmarkIcons", basemap?.showLandmarks ?? true);78 if (basemap?.colorBuildingSelect)79 set("colorBuildingSelect", basemap.colorBuildingSelect);80 if (basemap?.colorBuildingHighlight)81 set("colorBuildingHighlight", basemap.colorBuildingHighlight);82}83