import { createContext, useContext, useState } from 'react'; import { NavLink, Outlet } from 'react-router-dom'; const TOKEN_KEY = 'bridzik_admin_token'; const AdminTokenContext = createContext(''); /** Admin token, read from the input/sessionStorage owned by AdminLayout. * Kept separate from the player login -- /admin is gated by ADMIN_TOKEN only. */ export function useAdminToken(): string { return useContext(AdminTokenContext); } export default function AdminLayout() { const [token, setToken] = useState(() => sessionStorage.getItem(TOKEN_KEY) ?? ''); const [draft, setDraft] = useState(''); if (!token) { return (

Admin

{ e.preventDefault(); if (!draft.trim()) return; sessionStorage.setItem(TOKEN_KEY, draft.trim()); setToken(draft.trim()); }} className="flex flex-col gap-3" > setDraft(e.target.value)} placeholder="Admin token" className="bg-header border border-[#142018] rounded-lg px-3 py-2 text-green-score placeholder:text-green-dim outline-none focus:border-gold" autoFocus />
); } return (

Admin

); }