export type TrackDisplayMode = 'none' | 'full' | 'tail' export type TrackStyleProfile = 'classic' | 'neon' export type TrackTailLengthPreset = 'short' | 'medium' | 'long' export type TrackColorPreset = | 'mint' | 'cyan' | 'sky' | 'blue' | 'violet' | 'pink' | 'orange' | 'yellow' export interface TrackColorPresetEntry { colorHex: string headColorHex: string } export const TRACK_TAIL_LENGTH_METERS: Record = { short: 32, medium: 52, long: 78, } export const TRACK_COLOR_PRESET_MAP: Record = { mint: { colorHex: '#15a38d', headColorHex: '#63fff0', }, cyan: { colorHex: '#18b8c9', headColorHex: '#7cf4ff', }, sky: { colorHex: '#4a9cff', headColorHex: '#c9eeff', }, blue: { colorHex: '#3a63ff', headColorHex: '#9fb4ff', }, violet: { colorHex: '#7c4dff', headColorHex: '#d0b8ff', }, pink: { colorHex: '#ff4fb3', headColorHex: '#ffc0ec', }, orange: { colorHex: '#ff8a2b', headColorHex: '#ffd0a3', }, yellow: { colorHex: '#f0c419', headColorHex: '#fff0a8', }, } export interface TrackVisualizationConfig { mode: TrackDisplayMode style: TrackStyleProfile tailLength: TrackTailLengthPreset colorPreset: TrackColorPreset tailMeters: number tailMaxSeconds: number fadeOutWhenStill: boolean stillSpeedKmh: number fadeOutDurationMs: number colorHex: string headColorHex: string widthPx: number headWidthPx: number glowStrength: number } export const DEFAULT_TRACK_VISUALIZATION_CONFIG: TrackVisualizationConfig = { mode: 'full', style: 'neon', tailLength: 'medium', colorPreset: 'mint', tailMeters: TRACK_TAIL_LENGTH_METERS.medium, tailMaxSeconds: 30, fadeOutWhenStill: true, stillSpeedKmh: 0.6, fadeOutDurationMs: 3000, colorHex: TRACK_COLOR_PRESET_MAP.mint.colorHex, headColorHex: TRACK_COLOR_PRESET_MAP.mint.headColorHex, widthPx: 4.2, headWidthPx: 6.8, glowStrength: 0.2, }