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 /src/frontend/app/components/RouteIcon.tsx | |
| parent | c3db1a9a85745597c1bec334443d630f009e30c8 (diff) | |
Rename LineIcon -> RouteIcon, fix some size issues
Diffstat (limited to 'src/frontend/app/components/RouteIcon.tsx')
| -rw-r--r-- | src/frontend/app/components/RouteIcon.tsx | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/frontend/app/components/RouteIcon.tsx b/src/frontend/app/components/RouteIcon.tsx new file mode 100644 index 0000000..7d984b9 --- /dev/null +++ b/src/frontend/app/components/RouteIcon.tsx @@ -0,0 +1,48 @@ +import React, { useMemo } from "react"; +import { formatHex } from "~/utils/colours"; +import "./RouteIcon.css"; + +interface RouteIconProps { + line: string; + mode?: "rounded" | "pill" | "default"; + colour: string; + textColour: string; +} + +const RouteIcon: React.FC<RouteIconProps> = ({ + line, + mode = "default", + colour, + textColour, +}) => { + const actualLine = useMemo(() => { + return line.trim().replace("510", "NAD"); + }, [line]); + + const formattedLine = useMemo(() => { + return /^[a-zA-Z]/.test(actualLine) ? actualLine : `L${actualLine}`; + }, [actualLine]); + + const actualLineColour = useMemo(() => { + return formatHex(colour, true); + }, [colour]); + const actualTextColour = useMemo(() => { + return formatHex(textColour, true); + }, [textColour]); + + return ( + <span + className={`line-icon-${mode}`} + style={ + { + "--line-colour": actualLineColour, + "--line-text-colour": actualTextColour, + } as React.CSSProperties + } + > + {actualLine} + </span> + ); +}; + +export default RouteIcon; |
