aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/app/components/RouteIcon.tsx
diff options
context:
space:
mode:
authorAriel Costas Guerrero <ariel@costas.dev>2026-03-08 23:01:01 +0100
committerAriel Costas Guerrero <ariel@costas.dev>2026-03-08 23:01:01 +0100
commit2063f8101b1c887e079e11c96755a2441aa1b57b (patch)
tree60b64c3567fa6d543c88bd0f827675df3b44ea90 /src/frontend/app/components/RouteIcon.tsx
parentc3db1a9a85745597c1bec334443d630f009e30c8 (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.tsx48
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;