"use client"; import { clsx } from "clsx"; import { BookOpen, FileStack, History, LayoutDashboard, LogOut, Menu, Rocket, ScrollText, Server, Settings, Layers, X, } from "lucide-react"; import Link from "next/link"; import { usePathname, useRouter } from "next/navigation"; import { useState } from "react"; import { istAktiv, type NavigationsEintrag } from "@/lib/navigation"; import type { Theme } from "@/lib/theme"; import { Symbol, Wortmarke } from "@/components/wortmarke"; import { ThemeUmschalter } from "@/components/theme-umschalter"; const SYMBOLE: Record< NavigationsEintrag["symbol"], React.ComponentType<{ size?: number; "aria-hidden"?: boolean }> > = { uebersicht: LayoutDashboard, ausrollen: Rocket, verlauf: History, templates: Layers, vorlagen: FileStack, katalog: BookOpen, server: Server, protokoll: ScrollText, einstellungen: Settings, }; type Eigenschaften = { eintraege: readonly NavigationsEintrag[]; benutzer: { anzeigename: string; rolle: string }; version: string; theme: Theme; serverUmschalter: React.ReactNode; }; export function Seitenleiste({ eintraege, benutzer, version, theme, serverUmschalter }: Eigenschaften) { const pfad = usePathname(); const router = useRouter(); const [offen, setOffen] = useState(false); async function abmelden() { await fetch("/api/v1/auth/abmelden", { method: "POST" }); router.replace("/anmelden"); router.refresh(); } const inhalt = (
{benutzer.anzeigename}
{benutzer.rolle === "ADMIN" ? "Administrator" : "Operator"}
{version}