import { MoveRight, MoveUpRight, MoveDownRight, CornerUpRight, CornerUpLeft, MoveLeft, MoveUpLeft, MoveDownLeft, CircleDot, RotateCw, GitMerge, CornerRightDown, CornerRightUp, Navigation, Mountain, Map, AlertTriangle } from 'lucide-react' import { useStore } from '../store' function formatDistKm(km) { const miles = km * 0.621371 if (miles < 0.1) return Math.round(miles * 5280) + ' ft' return miles.toFixed(1) + ' mi' } function formatTimeMin(minutes) { if (minutes < 60) return Math.round(minutes) + ' min' const h = Math.floor(minutes / 60) const m = Math.round(minutes % 60) return m > 0 ? h + 'h ' + m + 'm' : h + 'h' } 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() { const routeResult = useStore((s) => s.routeResult) const routeLoading = useStore((s) => s.routeLoading) const routeError = useStore((s) => s.routeError) if (routeLoading) { return (
Calculating route...
) } if (routeError) { return (
{routeError}
) } if (!routeResult?.summary) return null const summary = routeResult.summary const networkFeature = routeResult.route?.features?.find(f => f.properties?.segment_type === 'network') const maneuvers = networkFeature?.properties?.maneuvers || [] return (
{/* Total summary */}
{formatDistKm(summary.total_distance_km)} {formatTimeMin(summary.total_effort_minutes)}
{/* Segment breakdown */}
{summary.wilderness_distance_km > 0 && (
Wilderness {formatDistKm(summary.wilderness_distance_km)} / {formatTimeMin(summary.wilderness_effort_minutes)}
)} {summary.network_distance_km > 0 && (
Road/Trail {formatDistKm(summary.network_distance_km)} / {formatTimeMin(summary.network_duration_minutes)}
)}
{/* Warnings */} {(summary.barrier_crossings > 0 || summary.mvum_closed_crossings > 0) && (
{summary.barrier_crossings > 0 && (
{summary.barrier_crossings} barrier crossing{summary.barrier_crossings > 1 ? 's' : ''}
)} {summary.mvum_closed_crossings > 0 && (
{summary.mvum_closed_crossings} MVUM closure{summary.mvum_closed_crossings > 1 ? 's' : ''}
)}
)} {/* Turn-by-turn directions */} {maneuvers.length > 0 && (
Directions
{maneuvers.map((man, i) => (

{man.instruction}

{formatDistKm(man.distance_km)}

))}
)}
) }