import React, { useState, useEffect } from "react"; import { Play, Puzzle, Settings, ChevronDown, Check, User, LogOut, } from "lucide-react"; import { getVersions } from "./services/LauncherService"; import { clsx, type ClassValue } from "clsx"; import { twMerge } from "tailwind-merge"; import Logo from "@/assets/logo.png"; // Utility for merging tailwind classes function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); } // Components import PlaySection from "./components/PlaySection"; import ModsSection from "./components/ModsSection"; import SettingsSection from "./components/SettingsSection"; import { GameVersion } from "./services/Types"; type Section = "play" | "mods" | "settings"; const App: React.FC = () => { const [activeSection, setActiveSection] = useState
("play"); const [versions, setVersions] = useState([]); const [selectedVersion, setSelectedVersion] = useState( null, ); const [isVersionDropdownOpen, setIsVersionDropdownOpen] = useState(false); const [isAccountDropdownOpen, setIsAccountDropdownOpen] = useState(false); const versionRef = React.useRef(null); const accountRef = React.useRef(null); useEffect(() => { const fetchVersions = async () => { const v = await getVersions(); setVersions(v); if (v.length > 0) setSelectedVersion(v[0]); }; fetchVersions(); }, []); 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); }; }, []); return (
{/* Sidebar */} {/* Main Content Area */}
{/* Top Bar */}
{/* Version Selector */}
{/* Glow */}
{versions.map((v) => ( ))}
{/* Account Selector */}
{/* Glow */}

SaturnDev

dev@saturnclient.com

{/* Content Sections */}
{activeSection === "play" && selectedVersion && ( )} {activeSection === "mods" && selectedVersion && ( )} {activeSection === "settings" && }
); }; export default App;