"use client"; import Link from "next/link"; import { FormEvent, useState } from "react"; import { useRouter } from "next/navigation"; import { usePathname } from "next/navigation"; import { useConnection } from "@/lib/connection"; import { cmd, DEFAULT_WS_URL } from "@/lib/protocol"; export default function Nav() { const pathname = usePathname(); const router = useRouter(); const { status, role, username, send, becomePlayer } = useConnection(); const [showPlayerModal, setShowPlayerModal] = useState(false); const [nextUsername, setNextUsername] = useState(username); const statusLabel = status === "connected" ? `Connected ${role === "player" ? `as ${username}` : "as observer"}` : status === "reconnecting" ? "Reconnecting..." : status === "connecting" ? "Connecting..." : "Not connected"; const isConnectionPage = pathname === "/"; const disableRoleSwitch = status === "connecting" || status === "reconnecting"; const handleBecomeObserver = () => { send(cmd.disconnect()); router.push("/spectate"); }; const handleBecomePlayer = (event: FormEvent) => { 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" />
)} ); }