+
+ Make:{" "}
+ {effectiveSelected?.make ?? "—"}
+
+
+ Model:{" "}
+ {effectiveSelected?.model ?? "—"}
+
+
+ Colour:{" "}
+ {effectiveSelected?.color ?? "—"}
+
+
+ Category:{" "}
+ {effectiveSelected?.category ?? "—"}
+
+
+ Char Ht:{" "}
+
+ {effectiveSelected?.charHeight ?? "—"}
+
+
+
+ Plate Size:{" "}
+
+ {effectiveSelected?.plateSize ?? "—"}
+
+
+
+ Overview Size:{" "}
+
+ {effectiveSelected?.overviewSize ?? "—"}
+
+
+
+ Motion:{" "}
+ {effectiveSelected?.motion ?? "—"}
+
+
+ Seen:{" "}
+
+ {effectiveSelected?.seenCount ?? "—"}
+
+
+
+ Location:{" "}
+
+ {effectiveSelected?.locationName ?? "—"}
+
+
+
+ Lane:{" "}
+ {effectiveSelected?.laneID ?? "—"}
+
+
+ Radar:{" "}
+
+ {effectiveSelected?.radarSpeed ?? "—"}
+
+
+
+ Track:{" "}
+
+ {effectiveSelected?.trackSpeed ?? "—"}
+
+
+ {effectiveSelected?.detailsUrl ? (
+
+ ) : null}
+
+ );
+};
+
+export default SightingWidgetDetails;
diff --git a/src/context/SightingFeedContext.tsx b/src/context/SightingFeedContext.tsx
new file mode 100644
index 0000000..0b2edde
--- /dev/null
+++ b/src/context/SightingFeedContext.tsx
@@ -0,0 +1,50 @@
+import { createContext, useContext, type ReactNode } from "react";
+import type { SightingWidgetType } from "../types/types";
+import { useSightingFeed } from "../hooks/useSightingFeed";
+
+type SightingFeedContextType = {
+ items: (SightingWidgetType | null | undefined)[];
+ selectedRef: number | null;
+ setSelectedRef: (ref: number | null) => void;
+ effectiveSelected: SightingWidgetType | null;
+};
+
+type SightingFeedProviderProps = {
+ baseUrl: string;
+ entries?: number;
+ pollMs?: number;
+ autoSelectLatest?: boolean;
+ children: ReactNode;
+};
+
+const SightingFeedContext = createContext