From bb6366af0c07116ecb54144dca129f099127d4c3 Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Fri, 30 Jan 2026 20:48:51 +0100 Subject: feat: Add trip selection functionality and localization updates for trips in English, Spanish, and Galician --- src/frontend/app/routes/routes-$id.tsx | 196 +++++++++++++++++++++++++++------ 1 file changed, 165 insertions(+), 31 deletions(-) (limited to 'src/frontend/app/routes') diff --git a/src/frontend/app/routes/routes-$id.tsx b/src/frontend/app/routes/routes-$id.tsx index 7de16eb..6fe0424 100644 --- a/src/frontend/app/routes/routes-$id.tsx +++ b/src/frontend/app/routes/routes-$id.tsx @@ -1,5 +1,13 @@ import { useQuery } from "@tanstack/react-query"; -import { LayoutGrid, List, Map as MapIcon } from "lucide-react"; +import { + Bus, + ChevronDown, + Clock, + LayoutGrid, + List, + Map as MapIcon, + X, +} from "lucide-react"; import { useMemo, useRef, useState } from "react"; import { useTranslation } from "react-i18next"; import { @@ -28,6 +36,7 @@ export default function RouteDetailsPage() { const [layoutMode, setLayoutMode] = useState<"balanced" | "map" | "list">( "balanced" ); + const [isPatternPickerOpen, setIsPatternPickerOpen] = useState(false); const [selectedWeekDate, setSelectedWeekDate] = useState( () => new Date() ); @@ -148,6 +157,10 @@ export default function RouteDetailsPage() { const selectedPattern = activePatterns.find((p) => p.id === selectedPatternId) || activePatterns[0]; + const selectedPatternLabel = selectedPattern + ? selectedPattern.headsign || selectedPattern.name + : t("routes.details", "Detalles de ruta"); + const mapHeightClass = layoutMode === "map" ? "h-[75%] md:h-[75%]" @@ -312,37 +325,25 @@ export default function RouteDetailsPage() {
- +
+ + {selectedPatternLabel} + + {selectedPattern?.tripCount != null && ( + + {t("routes.trip_count_short", { + count: selectedPattern.tripCount, + })} + + )} + +
+