diff options
| author | Ariel Costas Guerrero <ariel@costas.dev> | 2026-03-08 23:01:01 +0100 |
|---|---|---|
| committer | Ariel Costas Guerrero <ariel@costas.dev> | 2026-03-08 23:01:01 +0100 |
| commit | 2063f8101b1c887e079e11c96755a2441aa1b57b (patch) | |
| tree | 60b64c3567fa6d543c88bd0f827675df3b44ea90 | |
| parent | c3db1a9a85745597c1bec334443d630f009e30c8 (diff) | |
Rename LineIcon -> RouteIcon, fix some size issues
| -rw-r--r-- | src/frontend/app/components/LineIcon.css | 146 | ||||
| -rw-r--r-- | src/frontend/app/components/RouteIcon.css | 45 | ||||
| -rw-r--r-- | src/frontend/app/components/RouteIcon.tsx (renamed from src/frontend/app/components/LineIcon.tsx) | 27 | ||||
| -rw-r--r-- | src/frontend/app/components/StopGalleryItem.tsx | 4 | ||||
| -rw-r--r-- | src/frontend/app/components/StopItem.tsx | 4 | ||||
| -rw-r--r-- | src/frontend/app/components/arrivals/ArrivalCard.css | 23 | ||||
| -rw-r--r-- | src/frontend/app/components/arrivals/ArrivalCard.tsx | 129 | ||||
| -rw-r--r-- | src/frontend/app/components/arrivals/ReducedArrivalCard.tsx | 4 | ||||
| -rw-r--r-- | src/frontend/app/components/map/StopSummarySheet.tsx | 4 | ||||
| -rw-r--r-- | src/frontend/app/routes/favourites.tsx | 4 | ||||
| -rw-r--r-- | src/frontend/app/routes/planner.tsx | 6 | ||||
| -rw-r--r-- | src/frontend/app/routes/routes.tsx | 4 | ||||
| -rw-r--r-- | src/frontend/app/routes/stops-$id.css | 1 | ||||
| -rw-r--r-- | src/frontend/app/routes/stops-$id.tsx | 4 |
14 files changed, 160 insertions, 245 deletions
diff --git a/src/frontend/app/components/LineIcon.css b/src/frontend/app/components/LineIcon.css deleted file mode 100644 index a8a413c..0000000 --- a/src/frontend/app/components/LineIcon.css +++ /dev/null @@ -1,146 +0,0 @@ -/* Vigo line colors */ -:root { - --line-c1: hsl(14, 86%, 50%); - --line-c1-text: hsl(0, 0%, 100%); - --line-c3d: hsl(48, 100%, 50%); - --line-c3i: hsl(48, 100%, 50%); - --line-l4a: hsl(120, 100%, 30%); - --line-l4a-text: hsl(0, 0%, 100%); - --line-l4c: hsl(120, 100%, 30%); - --line-l4c-text: hsl(0, 0%, 100%); - --line-l5a: hsl(204, 100%, 54%); - --line-l5a-text: hsl(0, 0%, 100%); - --line-l5b: hsl(204, 100%, 54%); - --line-l5b-text: hsl(0, 0%, 100%); - --line-l6: hsl(330, 60%, 50%); - --line-l6-text: hsl(0, 0%, 100%); - --line-l7: hsl(120, 60%, 70%); - --line-l9b: hsl(36, 83%, 75%); - --line-l10: hsl(30, 80%, 20%); - --line-l10-text: hsl(0, 0%, 100%); - --line-l11: hsl(0, 100%, 44%); - --line-l11-text: hsl(0, 0%, 100%); - --line-l12a: hsl(210, 40%, 56%); - --line-l12b: hsl(209, 39%, 58%); - --line-l13: hsl(196, 100%, 47%); - --line-l14: hsl(120, 10%, 44%); - --line-l14-text: hsl(0, 0%, 100%); - --line-l15a: hsl(313, 38%, 75%); - --line-l15b: hsl(313, 38%, 75%); - --line-l15c: #d8a8a8; - --line-l16: hsl(120, 10%, 44%); - --line-l16-text: hsl(0, 0%, 100%); - --line-l17: hsl(69, 91%, 54%); - --line-l18a: hsl(320, 61%, 57%); - --line-l18a-text: hsl(0, 0%, 100%); - --line-l18b: hsl(320, 61%, 57%); - --line-l18b-text: hsl(0, 0%, 100%); - --line-l18h: hsl(320, 61%, 57%); - --line-l18h-text: hsl(0, 0%, 100%); - --line-l23: hsl(220, 100%, 41%); - --line-l23-text: hsl(0, 0%, 100%); - --line-l24: hsl(0, 0%, 75%); - --line-l25: hsl(34, 95%, 35%); - --line-l25-text: hsl(0, 0%, 100%); - --line-l27: hsl(30, 60%, 30%); - --line-l27-text: hsl(0, 0%, 100%); - --line-l28: hsl(230, 98%, 84%); - --line-l29: hsl(36, 92%, 66%); - --line-l31: hsl(60, 100%, 50%); - --line-a: hsl(300, 70%, 35%); - --line-a-text: hsl(0, 0%, 100%); - --line-a1: hsl(300, 70%, 35%); - --line-a1-text: hsl(0, 0%, 100%); - --line-h: hsl(210, 100%, 33%); - --line-h-text: hsl(0, 0%, 100%); - --line-h1: hsl(210, 100%, 33%); - --line-h1-text: hsl(0, 0%, 100%); - --line-h2: hsl(210, 100%, 33%); - --line-h2-text: hsl(0, 0%, 100%); - --line-h3: hsl(210, 100%, 33%); - --line-h3-text: hsl(0, 0%, 100%); - --line-lzd: hsl(220, 60%, 50%); - --line-n1: hsl(0, 51%, 53%); - --line-n1-text: hsl(0, 0%, 100%); - --line-n4: hsl(300, 33%, 30%); - --line-n4-text: hsl(0, 0%, 100%); - --line-psa1: hsl(120, 100%, 30%); - --line-psa4: hsl(120, 100%, 30%); - --line-ptl: hsl(120, 60%, 70%); - --line-tur: hsl(300, 33%, 30%); - --line-tur-text: hsl(0, 0%, 100%); - --line-u1: hsl(30, 80%, 20%); - --line-u1-text: hsl(0, 0%, 100%); - --line-u2: hsl(30, 80%, 20%); - --line-u2-text: hsl(0, 0%, 100%); - --line-vts: hsl(300, 33%, 30%); - --line-vts-text: hsl(0, 0%, 100%); - - /* Special christmas line - Touristic bus */ - --line-nad: hsl(0, 100%, 40%); - --line-nad-text: hsl(0, 0%, 100%); - - --line-mar: hsl(208, 68%, 66%); - --line-mar-text: hsl(0, 0%, 100%); - --line-rio: hsl(208, 68%, 66%); - --line-rio-text: hsl(0, 0%, 100%); - --line-gol: hsl(208, 68%, 66%); - --line-gol-text: hsl(0, 0%, 100%); - - --line-md: hsl(316, 99%, 27%); - --line-md-text: hsl(0, 0%, 100%); - --line-ave: hsl(316, 99%, 27%); - --line-ave-text: hsl(0, 0%, 100%); - --line-alvia: hsl(316, 99%, 27%); - --line-alvia-text: hsl(0, 0%, 100%); - --line-trencelta: hsl(135, 58%, 25%); - --line-trencelta-text: hsl(0, 0%, 100%); - --line-regional: hsl(316, 99%, 27%); - --line-regional-text: hsl(0, 0%, 100%); -} - -.line-icon-default { - display: inline-block; - padding: 0.25rem 0.5rem; - margin-right: 0.5rem; - font-size: 0.9rem; - font-weight: 600; - text-transform: uppercase; - border-radius: 0.25rem 0.25rem 0 0; - color: var(--text-color); - background-color: var(--background-color); - - border-bottom: 3px solid; - border-color: var(--line-colour); -} - -.line-icon-pill { - display: inline-block; - padding: 0.25rem 0.5rem; - margin-right: 0.5rem; - font-size: 0.9rem; - font-weight: 600; - border-radius: 0.25rem; - - background-color: var(--line-colour); - color: var(--line-text-colour); -} - -.line-icon-rounded { - display: flex; - align-items: center; - justify-content: center; - min-width: 4.25ch; - height: 4.25ch; - box-sizing: border-box; - - background-color: var(--line-colour); - color: var(--line-text-colour); - padding: 0 0.8ch; - text-align: center; - border-radius: 2.125ch; - - font: 600 13px / 1 monospace; - letter-spacing: 0.05em; - white-space: nowrap; -} diff --git a/src/frontend/app/components/RouteIcon.css b/src/frontend/app/components/RouteIcon.css new file mode 100644 index 0000000..f74b01f --- /dev/null +++ b/src/frontend/app/components/RouteIcon.css @@ -0,0 +1,45 @@ +.line-icon-default { + display: inline-block; + padding: 0.25rem 0.5rem; + margin-right: 0.5rem; + font-size: 0.9rem; + font-weight: 600; + text-transform: uppercase; + border-radius: 0.25rem 0.25rem 0 0; + color: var(--text-color); + background-color: var(--background-color); + + border-bottom: 3px solid; + border-color: var(--line-colour); +} + +.line-icon-pill { + display: inline-block; + padding: 0.25rem 0.5rem; + margin-right: 0.5rem; + font-size: 0.9rem; + font-weight: 600; + border-radius: 0.25rem; + + background-color: var(--line-colour); + color: var(--line-text-colour); +} + +.line-icon-rounded { + display: flex; + align-items: center; + justify-content: center; + min-width: 4.25ch; + height: 4.25ch; + box-sizing: border-box; + + background-color: var(--line-colour); + color: var(--line-text-colour); + padding: 0 0.8ch; + text-align: center; + border-radius: 2.125ch; + + font: 600 13px / 1 monospace; + letter-spacing: 0.05em; + white-space: nowrap; +} diff --git a/src/frontend/app/components/LineIcon.tsx b/src/frontend/app/components/RouteIcon.tsx index 5d85c60..7d984b9 100644 --- a/src/frontend/app/components/LineIcon.tsx +++ b/src/frontend/app/components/RouteIcon.tsx @@ -1,14 +1,15 @@ import React, { useMemo } from "react"; -import "./LineIcon.css"; +import { formatHex } from "~/utils/colours"; +import "./RouteIcon.css"; -interface LineIconProps { +interface RouteIconProps { line: string; mode?: "rounded" | "pill" | "default"; - colour?: string; - textColour?: string; + colour: string; + textColour: string; } -const LineIcon: React.FC<LineIconProps> = ({ +const RouteIcon: React.FC<RouteIconProps> = ({ line, mode = "default", colour, @@ -23,17 +24,11 @@ const LineIcon: React.FC<LineIconProps> = ({ }, [actualLine]); const actualLineColour = useMemo(() => { - const actualColour = colour?.startsWith("#") ? colour : `#${colour}`; - return colour ? actualColour : `var(--line-${formattedLine.toLowerCase()})`; - }, [formattedLine]); + return formatHex(colour, true); + }, [colour]); const actualTextColour = useMemo(() => { - const actualTextColour = textColour?.startsWith("#") - ? textColour - : `#${textColour}`; - return textColour - ? actualTextColour - : `var(--line-${formattedLine.toLowerCase()}-text, #000000)`; - }, [formattedLine]); + return formatHex(textColour, true); + }, [textColour]); return ( <span @@ -50,4 +45,4 @@ const LineIcon: React.FC<LineIconProps> = ({ ); }; -export default LineIcon; +export default RouteIcon; diff --git a/src/frontend/app/components/StopGalleryItem.tsx b/src/frontend/app/components/StopGalleryItem.tsx index de369d8..d407816 100644 --- a/src/frontend/app/components/StopGalleryItem.tsx +++ b/src/frontend/app/components/StopGalleryItem.tsx @@ -1,7 +1,7 @@ import React from "react"; import { Link } from "react-router"; import StopDataProvider, { type Stop } from "../data/StopDataProvider"; -import LineIcon from "./LineIcon"; +import RouteIcon from "./RouteIcon"; interface StopGalleryItemProps { stop: Stop; @@ -42,7 +42,7 @@ const StopGalleryItem: React.FC<StopGalleryItemProps> = ({ stop }) => { </div> <div className="flex flex-wrap gap-1 items-center"> {stop.lines?.slice(0, 5).map((lineObj) => ( - <LineIcon + <RouteIcon key={lineObj.line} line={lineObj.line} colour={lineObj.colour} diff --git a/src/frontend/app/components/StopItem.tsx b/src/frontend/app/components/StopItem.tsx index 391e605..35ccf6d 100644 --- a/src/frontend/app/components/StopItem.tsx +++ b/src/frontend/app/components/StopItem.tsx @@ -1,7 +1,7 @@ import React from "react"; import { Link } from "react-router"; import StopDataProvider, { type Stop } from "../data/StopDataProvider"; -import LineIcon from "./LineIcon"; +import RouteIcon from "./RouteIcon"; interface StopItemProps { stop: Stop; @@ -25,7 +25,7 @@ const StopItem: React.FC<StopItemProps> = ({ stop }) => { </div> <div className="flex flex-wrap gap-1 mt-1"> {stop.lines?.map((lineObj) => ( - <LineIcon + <RouteIcon key={lineObj.line} line={lineObj.line} colour={lineObj.colour} diff --git a/src/frontend/app/components/arrivals/ArrivalCard.css b/src/frontend/app/components/arrivals/ArrivalCard.css index 0e5af25..ee5f8e6 100644 --- a/src/frontend/app/components/arrivals/ArrivalCard.css +++ b/src/frontend/app/components/arrivals/ArrivalCard.css @@ -1,5 +1,28 @@ @import "../../tailwind.css"; +.arrival-card { + display: grid; + grid-template-areas: + "icon route minutes" + "meta meta meta"; + + grid-template-columns: auto 1fr auto; +} + +arrival-card--icon { + grid-area: icon; +} +.arrival-card--route { + grid-area: route; + min-width: 0; +} +.arrival-card--minutes { + grid-area: minutes; +} +.arrival-card--meta { + grid-area: meta; +} + .time-running { @apply bg-green-600/20 dark:bg-green-600/25 text-[#1a9e56] dark:text-[#22c55e]; } diff --git a/src/frontend/app/components/arrivals/ArrivalCard.tsx b/src/frontend/app/components/arrivals/ArrivalCard.tsx index f1fc1a5..b99d3aa 100644 --- a/src/frontend/app/components/arrivals/ArrivalCard.tsx +++ b/src/frontend/app/components/arrivals/ArrivalCard.tsx @@ -2,7 +2,7 @@ import { AlertTriangle, BusFront, LocateIcon } from "lucide-react"; import React, { useEffect, useMemo, useRef, useState } from "react"; import Marquee from "react-fast-marquee"; import { useTranslation } from "react-i18next"; -import LineIcon from "~/components/LineIcon"; +import RouteIcon from "~/components/RouteIcon"; import { type Arrival } from "../../api/schema"; import "./ArrivalCard.css"; @@ -188,21 +188,22 @@ export const ArrivalCard: React.FC<ArrivalCardProps> = ({ <Tag type={isClickable ? "button" : undefined} onClick={isClickable ? onClick : undefined} - className={`w-full text-left flex items-start gap-3 rounded-xl px-3 py-3 transition-all bg-slate-50 dark:bg-slate-800 border border-gray-200 dark:border-gray-700 shadow-sm ${ + className={`arrival-card w-full text-left gap-x-4 gap-y-3 rounded-xl p-2 transition-all bg-slate-50 dark:bg-slate-800 border border-gray-200 dark:border-gray-700 shadow-sm ${ isClickable ? "hover:border-blue-400 dark:hover:border-blue-500 active:scale-[0.98] cursor-pointer" : "" }`} > - <div className="shrink-0 min-w-[7ch] mt-0.5"> - <LineIcon + <div className="arrival-card--icon shrink-0 min-w-[3ch] mt-0.5"> + <RouteIcon line={route.shortName} colour={route.colour} textColour={route.textColour} mode="pill" /> </div> - <div className="flex-1 min-w-0 flex flex-col gap-1"> + + <div className="arrival-card--route shrink-0 flex flex-col gap-1"> <div className="flex justify-between items-start gap-2"> <div className="flex-1 min-w-0"> <span @@ -211,74 +212,70 @@ export const ArrivalCard: React.FC<ArrivalCardProps> = ({ {headsign.destination} </span> {headsign.marquee && ( - <div className="mt-0.5"> + <div className="mt-0.5 w-auto"> <AutoMarquee text={headsign.marquee} /> </div> )} </div> - <div - className={` - inline-flex items-center justify-center px-2 py-1 rounded-lg shrink-0 min-w-12 - ${timeClass} - `.trim()} - > - <div className="flex flex-col items-center leading-none"> - <span className="text-lg font-bold">{etaValue}</span> - <span className="text-[0.55rem] font-bold uppercase tracking-tighter opacity-80"> - {etaUnit} - </span> - </div> - </div> </div> + </div> + <div + className={` + arrival-card--minutes inline-flex items-center justify-center px-2 py-1 rounded-lg min-w-11 text-center ${timeClass} + `.trim()} + > + <span className="text-lg font-bold leading-tight"> + {etaValue}' + </span> + </div> - <div className="flex items-center gap-2 flex-wrap"> - {metaChips.map((chip, idx) => { - let chipColourClasses = ""; - switch (chip.tone) { - case "delay-ok": - chipColourClasses = - "bg-green-600/10 dark:bg-green-600/20 text-green-700 dark:text-green-300"; - break; - case "delay-warn": - chipColourClasses = - "bg-amber-600/10 dark:bg-yellow-600/20 text-amber-700 dark:text-yellow-300"; - break; - case "delay-critical": - chipColourClasses = - "bg-red-400/10 dark:bg-red-600/20 text-red-600 dark:text-red-300"; - break; - case "delay-early": - chipColourClasses = - "bg-blue-400/10 dark:bg-blue-600/20 text-blue-700 dark:text-blue-300"; - break; - case "warning": - chipColourClasses = - "bg-orange-400/10 dark:bg-orange-600/20 text-orange-700 dark:text-orange-300"; - break; - default: - chipColourClasses = - "bg-black/[0.04] dark:bg-white/[0.08] text-slate-500 dark:text-slate-400"; - } + <div className="arrival-card--meta flex w-auto items-center gap-2 flex-wrap"> + {metaChips.map((chip, idx) => { + let chipColourClasses = ""; + switch (chip.tone) { + case "delay-ok": + chipColourClasses = + "bg-green-600/10 dark:bg-green-600/20 text-green-700 dark:text-green-300"; + break; + case "delay-warn": + chipColourClasses = + "bg-amber-600/10 dark:bg-yellow-600/20 text-amber-700 dark:text-yellow-300"; + break; + case "delay-critical": + chipColourClasses = + "bg-red-400/10 dark:bg-red-600/20 text-red-600 dark:text-red-300"; + break; + case "delay-early": + chipColourClasses = + "bg-blue-400/10 dark:bg-blue-600/20 text-blue-700 dark:text-blue-300"; + break; + case "warning": + chipColourClasses = + "bg-orange-400/10 dark:bg-orange-600/20 text-orange-700 dark:text-orange-300"; + break; + default: + chipColourClasses = + "bg-black/[0.04] dark:bg-white/[0.08] text-slate-500 dark:text-slate-400"; + } - return ( - <span - key={`${chip.label}-${idx}`} - className={`text-xs px-2.5 py-0.5 rounded-full flex items-center justify-center gap-1 shrink-0 font-medium tracking-wide ${chipColourClasses}`} - > - {chip.kind === "gps" && ( - <LocateIcon className="w-3 h-3 inline-block" /> - )} - {chip.kind === "warning" && ( - <AlertTriangle className="w-3 h-3 inline-block" /> - )} - {chip.kind === "vehicle" && ( - <BusFront className="w-3 h-3 inline-block" /> - )} - {chip.label} - </span> - ); - })} - </div> + return ( + <span + key={`${chip.label}-${idx}`} + className={`text-xs px-2.5 py-0.5 rounded-full flex items-center justify-center gap-1 shrink-0 font-medium tracking-wide ${chipColourClasses}`} + > + {chip.kind === "gps" && ( + <LocateIcon className="w-3 h-3 inline-block" /> + )} + {chip.kind === "warning" && ( + <AlertTriangle className="w-3 h-3 inline-block" /> + )} + {chip.kind === "vehicle" && ( + <BusFront className="w-3 h-3 inline-block" /> + )} + {chip.label} + </span> + ); + })} </div> </Tag> ); diff --git a/src/frontend/app/components/arrivals/ReducedArrivalCard.tsx b/src/frontend/app/components/arrivals/ReducedArrivalCard.tsx index 44c8eda..4ba08b1 100644 --- a/src/frontend/app/components/arrivals/ReducedArrivalCard.tsx +++ b/src/frontend/app/components/arrivals/ReducedArrivalCard.tsx @@ -1,7 +1,7 @@ import { AlertTriangle, BusFront, LocateIcon } from "lucide-react"; import React, { useMemo } from "react"; import { useTranslation } from "react-i18next"; -import LineIcon from "~/components/LineIcon"; +import RouteIcon from "~/components/RouteIcon"; import { type Arrival } from "../../api/schema"; import "./ArrivalCard.css"; @@ -145,7 +145,7 @@ export const ReducedArrivalCard: React.FC<ArrivalCardProps> = ({ }`} > <div className="shrink-0 min-w-[7ch] mt-0.5"> - <LineIcon + <RouteIcon line={route.shortName} colour={route.colour} textColour={route.textColour} diff --git a/src/frontend/app/components/map/StopSummarySheet.tsx b/src/frontend/app/components/map/StopSummarySheet.tsx index 7b4dd7b..be2df67 100644 --- a/src/frontend/app/components/map/StopSummarySheet.tsx +++ b/src/frontend/app/components/map/StopSummarySheet.tsx @@ -6,7 +6,7 @@ import { Link } from "react-router"; import { ArrivalList } from "~/components/arrivals/ArrivalList"; import { useStopArrivals } from "../../hooks/useArrivals"; import { ErrorDisplay } from "../ErrorDisplay"; -import LineIcon from "../LineIcon"; +import RouteIcon from "../RouteIcon"; import "./StopSummarySheet.css"; import { StopSummarySheetSkeleton } from "./StopSummarySheetSkeleton"; @@ -53,7 +53,7 @@ export const StopSummarySheet: React.FC<StopSheetProps> = ({ <div className={`flex flex-wrap flex-row gap-2`}> {data?.routes.map((lineObj) => ( - <LineIcon + <RouteIcon key={lineObj.shortName} line={lineObj.shortName} mode="pill" diff --git a/src/frontend/app/routes/favourites.tsx b/src/frontend/app/routes/favourites.tsx index c05ab11..6b57256 100644 --- a/src/frontend/app/routes/favourites.tsx +++ b/src/frontend/app/routes/favourites.tsx @@ -1,7 +1,7 @@ import { useCallback, useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { Link } from "react-router"; -import LineIcon from "~/components/LineIcon"; +import RouteIcon from "~/components/RouteIcon"; import { usePageTitle } from "~/contexts/PageTitleContext"; import SpecialPlacesProvider, { type SpecialPlace, @@ -288,7 +288,7 @@ function FavouriteStopItem({ </div> <div className="flex flex-wrap gap-1 items-center"> {stop.lines?.slice(0, 6).map((lineObj) => ( - <LineIcon + <RouteIcon key={lineObj.line} line={lineObj.line} colour={lineObj.colour} diff --git a/src/frontend/app/routes/planner.tsx b/src/frontend/app/routes/planner.tsx index 5fd0ce7..7bfc5a3 100644 --- a/src/frontend/app/routes/planner.tsx +++ b/src/frontend/app/routes/planner.tsx @@ -7,8 +7,8 @@ import { Layer, Source, type MapRef } from "react-map-gl/maplibre"; import { useLocation } from "react-router"; import { type ConsolidatedCirculation } from "~/api/schema"; -import LineIcon from "~/components/LineIcon"; import { PlannerOverlay } from "~/components/PlannerOverlay"; +import RouteIcon from "~/components/RouteIcon"; import { AppMap } from "~/components/shared/AppMap"; import { APP_CONSTANTS } from "~/config/constants"; import { useBackButton, usePageTitle } from "~/contexts/PageTitleContext"; @@ -155,7 +155,7 @@ const ItinerarySummary = ({ </div> ) : ( <div className="flex items-center gap-2"> - <LineIcon + <RouteIcon line={leg.routeShortName || leg.routeName || leg.mode || ""} mode="pill" colour={leg.routeColor || undefined} @@ -505,7 +505,7 @@ const ItineraryDetail = ({ <Footprints className="w-4 h-4" /> </div> ) : ( - <LineIcon + <RouteIcon line={leg.routeShortName || leg.routeName || ""} mode="rounded" colour={leg.routeColor || undefined} diff --git a/src/frontend/app/routes/routes.tsx b/src/frontend/app/routes/routes.tsx index 1e85cfb..b33fe58 100644 --- a/src/frontend/app/routes/routes.tsx +++ b/src/frontend/app/routes/routes.tsx @@ -3,7 +3,7 @@ import { useState } from "react"; import { useTranslation } from "react-i18next"; import { Link } from "react-router"; import { fetchRoutes } from "~/api/transit"; -import LineIcon from "~/components/LineIcon"; +import RouteIcon from "~/components/RouteIcon"; import { usePageTitle } from "~/contexts/PageTitleContext"; import "../tailwind-full.css"; @@ -85,7 +85,7 @@ export default function RoutesPage() { to={`/routes/${route.id}`} className="flex items-center gap-3 p-4 bg-surface rounded-lg shadow hover:shadow-lg transition-shadow border border-border" > - <LineIcon + <RouteIcon line={route.shortName ?? "?"} mode="pill" colour={route.color ?? undefined} diff --git a/src/frontend/app/routes/stops-$id.css b/src/frontend/app/routes/stops-$id.css index dd0b8e3..583b5b9 100644 --- a/src/frontend/app/routes/stops-$id.css +++ b/src/frontend/app/routes/stops-$id.css @@ -47,6 +47,7 @@ flex-direction: column; padding-block: 1rem; + padding-inline: 0.75rem; box-sizing: border-box; gap: 1rem; diff --git a/src/frontend/app/routes/stops-$id.tsx b/src/frontend/app/routes/stops-$id.tsx index 8f84764..3198fca 100644 --- a/src/frontend/app/routes/stops-$id.tsx +++ b/src/frontend/app/routes/stops-$id.tsx @@ -17,8 +17,8 @@ import { } from "~/api/schema"; import { ArrivalList } from "~/components/arrivals/ArrivalList"; import { ErrorDisplay } from "~/components/ErrorDisplay"; -import LineIcon from "~/components/LineIcon"; import { PullToRefresh } from "~/components/PullToRefresh"; +import RouteIcon from "~/components/RouteIcon"; import { StopHelpModal } from "~/components/stop/StopHelpModal"; import { StopMapModal } from "~/components/stop/StopMapModal"; import { StopUsageModal } from "~/components/stop/StopUsageModal"; @@ -155,7 +155,7 @@ export default function Estimates() { <div className={`estimates-lines-container scrollable`}> {apiRoutes.map((line) => ( <div key={line.shortName} className="estimates-line-icon"> - <LineIcon + <RouteIcon line={line.shortName} colour={line.colour} textColour={line.textColour} |
