import { MoveRight, MoveUpRight, MoveDownRight, CornerUpRight, CornerUpLeft, MoveLeft, MoveUpLeft, MoveDownLeft, CircleDot, RotateCw, GitMerge, CornerRightDown, CornerRightUp, Navigation } from 'lucide-react' import { useStore } from '../store' function formatTime(seconds) { if (seconds < 60) return `${Math.round(seconds)}s` if (seconds < 3600) return `${Math.round(seconds / 60)} min` const h = Math.floor(seconds / 3600) const m = Math.round((seconds % 3600) / 60) return m > 0 ? `${h}h ${m}m` : `${h}h` } function formatDist(miles) { if (miles < 0.1) return `${Math.round(miles * 5280)} ft` return `${miles.toFixed(1)} mi` } function ManeuverIcon({ type }) { const size = 16 const props = { size, strokeWidth: 1.5 } switch (type) { case 0: return case 1: return case 2: return case 3: return case 4: case 5: return case 6: return case 7: return case 8: return case 9: return case 10: case 11: case 12: return case 15: case 16: return case 24: return case 25: return case 26: return default: return } } export default function ManeuverList({ onManeuverClick }) { const route = useStore((s) => s.route) const routeLoading = useStore((s) => s.routeLoading) const routeError = useStore((s) => s.routeError) if (routeLoading) { return (
Calculating route...
) } if (routeError) { return (
{routeError}
) } if (!route || !route.legs) return null const totalTime = route.summary?.time || 0 const totalDist = route.summary?.length || 0 const allManeuvers = [] let timeRemaining = totalTime for (let legIdx = 0; legIdx < route.legs.length; legIdx++) { const leg = route.legs[legIdx] for (const man of leg.maneuvers || []) { allManeuvers.push({ ...man, _legIndex: legIdx, timeRemaining }) timeRemaining -= man.time || 0 } } return (
{/* Route summary */}
{formatDist(totalDist)} {formatTime(totalTime)}
{/* Maneuver steps */}
{allManeuvers.map((man, i) => ( ))}
) }