// ----------------------------------------------------------------------------- // Groupe KA — iconographie partagée (portée depuis Immo-Ka) // Auteur : Simon-Pierre Boucher — contact@spboucher.ai // components/Icons.tsx : iconographie MAISON — traits 1,7 px sur grille 24, // dessinée pour les plateformes Groupe KA (zéro emoji, zéro pack générique). Chaque icône est // un tracé « stroke » net qui hérite de la couleur du texte (currentColor). // ----------------------------------------------------------------------------- import { ReactNode } from "react"; const P: Record = { // --- navigation ----------------------------------------------------------- home: (<> ), map: (<> ), chart: (<> ), building: (<> ), // --- specs propriété -------------------------------------------------------- bed: (<> ), bath: (<> ), drop: (<> ), area: (<> ), land: (<> ), calendar: (<> ), tag: (<> ), camera: (<> ), // --- actions / états ---------------------------------------------------------- search: (<> ), arrow: (<> ), check: (), alert: (<> ), phone: (), trendup: (<> ), trenddown: (<> ), external: (<> ), pin: (<> ), download: (<> ), // --- quartier --------------------------------------------------------------------- leaf: (<> ), thermo: (<> ), sun: (<> ), shield: (<> ), cart: (<> ), bus: (<> ), tree: (<> ), school: (<> ), health: (<> ), pill: (<> ), people: (<> ), // --- fiche propriété (refonte premium 2026-09-07) — même trait 1,7, grille 24 --- chevdown: , chevleft: , chevright: , close: , expand: , share: (<> ), sparkles: (<> ), scale: , wallet: (<> ), droplets: , wind: (<> ), fuel: (<> ), train: (<> ), folder: , doc: (<> ), layers: (<> ), info: (<> ), ruler: (<> ), key: (<> ), bank: (<> ), percent: (<> ), car: (<> ), hammer: (<> ), store: (<> ), coffee: , book: (<> ), dumbbell: , baby: (<> ), history: (<> ), }; export type IconName = keyof typeof P; export function Ico({ name, size = 18, className = "", stroke = 1.7 }: { name: IconName | string; size?: number; className?: string; stroke?: number }) { const paths = P[name as IconName]; if (!paths) return null; return ( ); } /** Cœur (favoris) — plein quand actif ; même grille que le reste. */ export function IcoHeart({ size = 18, filled = false, className = "" }: { size?: number; filled?: boolean; className?: string }) { return ( ); } /** Version « chaîne HTML » pour les popups MapLibre (hors React). */ export function icoHTML(name: IconName, size = 30): string { const d: Record = { home: '', }; return `${d[name] ?? d.home}`; }