"use client"; import Link from "next/link"; import { useEffect, useState } from "react"; import { usePathname, useRouter } from "next/navigation"; /** Volledige desktop-navigatie — logische groepen: overzicht → infra → bibliotheek → live → mensen → systeem */ const desktopLinks = [ { href: "/dashboard", label: "Dashboard" }, { href: "/nodes", label: "Nodes" }, { href: "/movies", label: "Movies" }, { href: "/series", label: "Series" }, { href: "/pending", label: "Te koppelen" }, { href: "/downloads", label: "Downloads" }, { href: "/streams", label: "Streams" }, { href: "/live-lists", label: "Live-lijsten" }, { href: "/drm", label: "DRM" }, { href: "/scripts", label: "Scripts" }, { href: "/agent", label: "Agent" }, { href: "/viewers", label: "Gebruikers" }, { href: "/settings", label: "Instellingen" }, ]; /** Bottom-nav (max 6): Series via drawer/desktop */ const mobileLinks = [ { href: "/dashboard", label: "Home", short: "Home" }, { href: "/nodes", label: "Nodes", short: "Nodes" }, { href: "/movies", label: "Movies", short: "Films" }, { href: "/downloads", label: "Downloads", short: "DL" }, { href: "/streams", label: "Streams", short: "Live" }, { href: "/viewers", label: "Users", short: "Users" }, ]; export function Nav() { const pathname = usePathname(); const router = useRouter(); const [menuOpen, setMenuOpen] = useState(false); useEffect(() => { setMenuOpen(false); }, [pathname]); useEffect(() => { if (!menuOpen) return; const onKey = (e: KeyboardEvent) => { if (e.key === "Escape") setMenuOpen(false); }; window.addEventListener("keydown", onKey); return () => window.removeEventListener("keydown", onKey); }, [menuOpen]); async function logout() { await fetch("/api/v1/auth/logout", { method: "POST", credentials: "include" }); router.push("/"); } const isActive = (href: string) => pathname === href || pathname.startsWith(`${href}/`); return ( <> {menuOpen && (