import { useEffect, useRef, useState } from "react"; import Sidebar from "./components/layout/Sidebar"; import TopBar from "./components/layout/TopBar"; import PlaySection from "./components/PlaySection"; import ModsSection from "./components/ModsSection"; import SettingsSection from "./components/SettingsSection"; import { versions } from "./lib/saturn"; import { GameVersion } from "./lib/types"; type Section = "play" | "mods" | "settings"; export default function App() { const [active, setActive] = useState
("play"); const [selectedVersion, setSelectedVersion] = useState( null, ); const [isVersionDropdownOpen, setIsVersionDropdownOpen] = useState(false); const [isAccountDropdownOpen, setIsAccountDropdownOpen] = useState(false); const versionRef = useRef(null); const accountRef = useRef(null); useEffect(() => { function handleClickOutside(event: MouseEvent) { const target = event.target as Node; // Close version dropdown if clicked outside if (versionRef.current && !versionRef.current.contains(target)) { setIsVersionDropdownOpen(false); } // Close account dropdown if clicked outside if (accountRef.current && !accountRef.current.contains(target)) { setIsAccountDropdownOpen(false); } } document.addEventListener("mousedown", handleClickOutside); return () => { document.removeEventListener("mousedown", handleClickOutside); }; }, []); useEffect(() => { setSelectedVersion(versions[0]); }, []); return (
{active === "play" && selectedVersion && ( )} {active === "mods" && selectedVersion && ( )} {active === "settings" && }
); }