"use client"; import Image from "next/image"; import Link from "next/link"; import { SubmitEvent, useEffect, useState } from "react"; import { Settings, X } from "lucide-react"; import { useRouter } from "next/navigation"; import { usePathname } from "next/navigation"; import AdminSettingsPanel from "@/components/AdminSettingsPanel"; import { useConnection } from "@/lib/connection"; export default function Nav() { const pathname = usePathname(); const router = useRouter(); const { status, role, username, becomePlayer, disconnect, isAdmin, shouldRedirectToConnect, } = useConnection(); const [showPlayerModal, setShowPlayerModal] = useState(false); const [showSettingsModal, setShowSettingsModal] = useState(false); const [nextUsername, setNextUsername] = useState(username); const isConnectionPage = pathname === "/"; const disableRoleSwitch = status === "connecting" || status === "reconnecting"; useEffect(() => { if (isConnectionPage || (status === "disconnected" && shouldRedirectToConnect)) { setShowSettingsModal(false); } }, [isConnectionPage, status, shouldRedirectToConnect]); const handleBecomePlayer = (event: SubmitEvent) => { event.preventDefault(); const trimmed = nextUsername.trim(); if (!trimmed) return; becomePlayer(trimmed); setShowPlayerModal(false); router.push("/play"); }; return ( <> {showPlayerModal && (

Become Player

Enter a username to connect as a player.

setNextUsername(event.target.value)} className="w-full bg-gray-800 border border-gray-600 rounded-lg px-3 py-2 text-sm text-white focus:border-blue-500 focus:outline-none" placeholder="Username" />
)} {showSettingsModal && (

Settings

Admin tools for tournaments, server values, and reservations.

{isAdmin ? "Admin" : "Observer"}
)} ); }