'use client' /** * Admin Layout with Sidebar Navigation * * Shared layout for all admin pages with collapsible sidebar */ import Link from 'next/link' import { usePathname } from 'next/navigation' import { useState } from 'react' interface NavItem { name: string href: string icon: React.ReactNode description?: string } const navigation: NavItem[] = [ { name: 'Dashboard', href: '/admin', icon: ( ), description: 'Übersicht & Statistiken', }, { name: 'GPU Infrastruktur', href: '/admin/gpu', icon: ( ), description: 'vast.ai GPU Management', }, { name: 'Consent Verwaltung', href: '/admin/consent', icon: ( ), description: 'Rechtliche Dokumente & Versionen', }, { name: 'Datenschutzanfragen', href: '/admin/dsr', icon: ( ), description: 'DSGVO Art. 15-21 Anfragen', }, { name: 'DSMS', href: '/admin/dsms', icon: ( ), description: 'Datenschutz-Management-System', }, { name: 'Übersetzungen', href: '/admin/content', icon: ( ), description: 'Website Content & Sprachen', }, { name: 'Education Search', href: '/admin/edu-search', icon: ( ), description: 'Bildungsquellen & Crawler', }, { name: 'Personensuche', href: '/admin/staff-search', icon: ( ), description: 'Uni-Mitarbeiter & Publikationen', }, { name: 'Uni-Crawler', href: '/admin/uni-crawler', icon: ( ), description: 'Universitaets-Crawling Orchestrator', }, { name: 'LLM Vergleich', href: '/admin/llm-compare', icon: ( ), description: 'KI-Provider Vergleich', }, { name: 'Daten & RAG', href: '/admin/rag', icon: ( ), description: 'Training Data & RAG Management', }, { name: 'PCA Platform', href: '/admin/pca-platform', icon: ( ), description: 'Bot-Erkennung & Monetarisierung', }, { name: 'Production Backlog', href: '/admin/backlog', icon: ( ), description: 'Go-Live Checkliste', }, { name: 'Developer Docs', href: '/admin/docs', icon: ( ), description: 'API & Architektur Dokumentation', }, { name: 'Kommunikation', href: '/admin/communication', icon: ( ), description: 'Matrix & Jitsi Monitoring', }, { name: 'Unified Inbox', href: '/admin/mail', icon: ( ), description: 'E-Mail-Konten & KI-Analyse', }, { name: 'Security', href: '/admin/security', icon: ( ), description: 'DevSecOps Dashboard & Scans', }, { name: 'SBOM', href: '/admin/sbom', icon: ( ), description: 'Software Bill of Materials', }, { name: 'Brandbook', href: '/admin/brandbook', icon: ( ), description: 'Corporate Design & Styleguide', }, { name: 'Unity Bridge', href: '/admin/unity-bridge', icon: ( ), description: 'Unity Editor Steuerung', }, { name: 'Qualitaet', href: '/admin/quality', icon: ( ), description: 'BQAS Quality Dashboard', }, ] interface AdminLayoutProps { children: React.ReactNode title?: string description?: string } export default function AdminLayout({ children, title, description }: AdminLayoutProps) { const pathname = usePathname() const [sidebarCollapsed, setSidebarCollapsed] = useState(false) const isActive = (href: string) => { if (href === '/admin') { return pathname === '/admin' } return pathname.startsWith(href) } return (
{description}
}