"use client"; import { useState, useEffect } from "react"; import Link from "next/link"; import type { LiveRidesResult, LiveRide } from "@/lib/scrapers/queuetimes"; import { slugifyRideName } from "@/lib/ride-slug"; interface LiveRidePanelProps { parkId: string; liveRides: LiveRidesResult; parkOpenToday: boolean; isWeatherDelay?: boolean; } export function LiveRidePanel({ parkId, liveRides, parkOpenToday, isWeatherDelay }: LiveRidePanelProps) { const { rides } = liveRides; const hasCoasters = rides.some((r) => r.isCoaster); const hasFastLane = rides.some((r) => r.hasFastLane); const [coastersOnly, setCoastersOnly] = useState(false); const [fastLaneMode, setFastLaneMode] = useState(false); // Pre-select coaster filter if Coaster Mode is enabled on the homepage. useEffect(() => { if (hasCoasters && localStorage.getItem("coasterMode") === "true") { setCoastersOnly(true); } }, [hasCoasters]); // Restore Fast Lane mode from a previous visit. useEffect(() => { if (hasFastLane && localStorage.getItem("fastLaneMode") === "true") { setFastLaneMode(true); } }, [hasFastLane]); const toggleFastLane = () => { setFastLaneMode((v) => { const next = !v; localStorage.setItem("fastLaneMode", String(next)); return next; }); }; const visible = coastersOnly ? rides.filter((r) => r.isCoaster) : rides; const openRides = visible.filter((r) => r.isOpen); const closedRides = visible.filter((r) => !r.isOpen); const anyOpen = openRides.length > 0; return (