'use client'; /** Admin token (`X-CA-Admin-Token`) kept in localStorage; entered once on /admin. Never rendered back into the page. */ import { useEffect, useState } from 'react'; export const ADMIN_KEY = 'ca-admin-token'; const EVENT = 'ca-admin-change'; export function readAdminToken(): string | null { if (typeof window === 'undefined') return null; try { return window.localStorage.getItem(ADMIN_KEY) || null; } catch { return null; } } export function setAdminToken(t: string | null) { try { if (t) window.localStorage.setItem(ADMIN_KEY, t); else window.localStorage.removeItem(ADMIN_KEY); } catch { /* ignore */ } window.dispatchEvent(new CustomEvent(EVENT)); } /** `undefined` while unknown (before mount), `null` when absent. */ export function useAdminToken(): string | null | undefined { const [t, setT] = useState(undefined); useEffect(() => { const read = () => setT(readAdminToken()); read(); window.addEventListener(EVENT, read); return () => window.removeEventListener(EVENT, read); }, []); return t; } export { ADMIN_MODULES } from './admin-modules';