/** * Zustände eines Trails samt Farbe und Beschriftung. * * An einer Stelle, weil dieselben Farben in der Kartenlinie, im Abzeichen und * im Auswahlmenü auftauchen — liefen sie auseinander, hieße Grün auf der Karte * etwas anderes als Grün daneben. */ export type TrailStatusValue = 'offen' | 'eingeschraenkt' | 'gesperrt' export type TrailStatusInfo = { value: TrailStatusValue label: string /** Als CSS-Farbe, auch für MapLibre-Paint-Eigenschaften verwendbar. */ color: string /** Kurzer Hinweis, was der Zustand bedeutet. */ hint: string } export const TRAIL_STATUS: TrailStatusInfo[] = [ { value: 'offen', label: 'Offen', color: '#16a34a', hint: 'befahrbar' }, { value: 'eingeschraenkt', label: 'Eingeschränkt', color: '#ca8a04', hint: 'befahrbar, aber mit Hindernissen', }, { value: 'gesperrt', label: 'Gesperrt', color: '#dc2626', hint: 'nicht befahren' }, ] const BY_VALUE = new Map(TRAIL_STATUS.map((s) => [s.value, s])) export function trailStatus(value: string | undefined): TrailStatusInfo { return (value && BY_VALUE.get(value as TrailStatusValue)) || TRAIL_STATUS[0] } export function trailStatusColor(value: string | undefined): string { return trailStatus(value).color }