From 7b15ba609f1aecfd78a27da0e49720abaf6fc58b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Thu, 16 Jul 2026 07:20:17 +0200 Subject: [PATCH] feat(planner): restyle map markers + route on tokens MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bring the map surface on-brand (visual-redesign group 4): - Waypoint markers: sage accent numbered circles (was blue #2563eb); overnight stops keep the warm stop tone; note indicator uses the eg-mid gold token. - Plain route line + ghost (insert) marker: sage accent (was blue). - Map highlight dot (synced with the chart hover): sage accent (was red), so map and chart hovers match. - Day labels: bg-raised surface + text-hi. - No-go areas: danger token (#a03c3c) instead of bright red. - GPX drag-over overlay: accent tokens. Per-mode route coloring (surface/grade/…) is unchanged (data-viz); coordinating the elevation-mode gradient with the route line is task 1.5. Co-Authored-By: Claude Opus 4.8 --- apps/planner/app/components/ColoredRoute.tsx | 2 +- apps/planner/app/components/NoGoAreaLayer.tsx | 7 ++++--- apps/planner/app/components/PlannerMap.tsx | 13 +++++++------ apps/planner/app/components/RouteInteraction.tsx | 2 +- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/apps/planner/app/components/ColoredRoute.tsx b/apps/planner/app/components/ColoredRoute.tsx index b78c5c3..70ac44d 100644 --- a/apps/planner/app/components/ColoredRoute.tsx +++ b/apps/planner/app/components/ColoredRoute.tsx @@ -210,7 +210,7 @@ export function ColoredRoute({ coordinates, colorMode, surfaces, highways, maxsp return ( ); diff --git a/apps/planner/app/components/NoGoAreaLayer.tsx b/apps/planner/app/components/NoGoAreaLayer.tsx index 9179890..ea66aa8 100644 --- a/apps/planner/app/components/NoGoAreaLayer.tsx +++ b/apps/planner/app/components/NoGoAreaLayer.tsx @@ -12,10 +12,11 @@ interface NoGoAreaLayerProps { onToggle: () => void; } +// --color-danger (the no-go hue at full strength) const NO_GO_STYLE: L.PathOptions = { - color: "#ef4444", - fillColor: "#ef4444", - fillOpacity: 0.2, + color: "#a03c3c", + fillColor: "#a03c3c", + fillOpacity: 0.15, weight: 2, }; diff --git a/apps/planner/app/components/PlannerMap.tsx b/apps/planner/app/components/PlannerMap.tsx index 1aa013e..181cd01 100644 --- a/apps/planner/app/components/PlannerMap.tsx +++ b/apps/planner/app/components/PlannerMap.tsx @@ -33,10 +33,11 @@ import type { Poi } from "~/lib/pois"; import "leaflet/dist/leaflet.css"; function waypointIcon(index: number, overnight?: boolean, highlighted?: boolean, hasNote?: boolean): L.DivIcon { - const bg = overnight ? "#8B6D3A" : "#2563eb"; + // token colors: --color-accent / --color-stop (overnight). Note dot: --color-eg-mid. + const bg = overnight ? "#8b6d3a" : "#4a6b40"; const scale = highlighted ? "scale(1.17)" : "scale(1)"; const noteIndicator = hasNote - ? `` + ? `` : ""; return L.divIcon({ className: "", @@ -59,7 +60,7 @@ function dayLabelIcon(dayNumber: number, distanceKm: string): L.DivIcon { className: "", html: `
-
+
+
{t("dropGpxHere")}
@@ -280,7 +281,7 @@ export function PlannerMap({ yjs, sessionId, onRouteRequest, highlightPosition, interactive={false} icon={L.divIcon({ className: "", - html: '
', + html: '
', iconSize: [0, 0], })} /> diff --git a/apps/planner/app/components/RouteInteraction.tsx b/apps/planner/app/components/RouteInteraction.tsx index 205da20..802d402 100644 --- a/apps/planner/app/components/RouteInteraction.tsx +++ b/apps/planner/app/components/RouteInteraction.tsx @@ -18,7 +18,7 @@ const ghostIcon = L.divIcon({ className: "route-ghost-marker", html: `