'use client' import { useState, useMemo } from 'react' import { useRouter, usePathname } from 'next/navigation' import Button from './Button' import SidebarFooter from './SidebarFooter' type Submenu = 'teams' | 'players' | null export default function Sidebar() { const router = useRouter() const pathname = usePathname() const [isOpen, setIsOpen] = useState(false) // mobile drawer const [openSubmenu, setOpenSubmenu] = useState(null) const isActive = (path: string) => pathname === path const navBtnBase = 'w-full flex items-center gap-x-3.5 py-2 px-2.5 text-sm rounded-lg transition-colors' const activeClasses = 'bg-gray-100 dark:bg-neutral-700 text-gray-900 dark:text-white' const idleClasses = 'text-gray-800 hover:bg-gray-100 dark:text-neutral-300 dark:hover:bg-neutral-700' const toggleSubmenu = (key: Exclude) => setOpenSubmenu(prev => (prev === key ? null : key)) // Gemeinsamer Inhalt (wird in Desktop-Aside und im Mobile-Drawer benutzt) const SidebarInner = useMemo( () => (
Iron:e {/* Close-Button nur im mobilen Drawer sichtbar */}
), // eslint-disable-next-line react-hooks/exhaustive-deps [pathname, openSubmenu] ) return ( <> {/* Mobile Toggle Button (nur < sm) */} {/* Desktop Sidebar (sticky) */} {/* Mobile Drawer */} {isOpen && (
{/* Backdrop */}
setIsOpen(false)} /> {/* Panel */}
{SidebarInner}
)} ) }