'use client' import { useState } from 'react' import { useRouter, usePathname } from 'next/navigation' import { BPIcon } from '@/components/Logo' import { useLanguage } from '@/lib/LanguageContext' import { useTheme } from '@/lib/ThemeContext' import { useAlerts } from '@/lib/AlertsContext' import { useAlertsB2B } from '@/lib/AlertsB2BContext' import { useMessages } from '@/lib/MessagesContext' import { UserMenu } from '@/components/UserMenu' interface SidebarProps { selectedTab?: string onTabChange?: (tab: string) => void } export function Sidebar({ selectedTab = 'dashboard', onTabChange }: SidebarProps) { const [sidebarHovered, setSidebarHovered] = useState(false) const { t } = useLanguage() const { isDark } = useTheme() const { unreadCount } = useAlerts() const { unreadCount: b2bUnreadCount } = useAlertsB2B() const { unreadCount: messagesUnreadCount } = useMessages() const router = useRouter() const pathname = usePathname() const navItems = [ { id: 'dashboard', labelKey: 'nav_dashboard', href: '/', icon: ( )}, { id: 'dokumente', labelKey: 'nav_dokumente', href: '/', icon: ( )}, { id: 'klausuren', labelKey: 'nav_klausuren', href: '/', icon: ( )}, { id: 'analytics', labelKey: 'nav_analytics', href: '/', icon: ( )}, { id: 'alerts', labelKey: 'nav_alerts', href: '/alerts', icon: ( ), showBadge: true }, { id: 'alerts-b2b', labelKey: 'nav_alerts_b2b', href: '/alerts-b2b', icon: ( ), showB2BBadge: true }, { id: 'messages', labelKey: 'nav_messages', href: '/messages', icon: ( ), showMessagesBadge: true }, { id: 'vokabeln', labelKey: 'nav_vokabeln', href: '/vocab-worksheet', icon: ( )}, { id: 'worksheet-editor', labelKey: 'nav_worksheet_editor', href: '/worksheet-editor', icon: ( )}, { id: 'worksheet-cleanup', labelKey: 'nav_worksheet_cleanup', href: '/worksheet-cleanup', icon: ( )}, { id: 'korrektur', labelKey: 'nav_korrektur', href: '/korrektur', icon: ( )}, { id: 'companion', labelKey: 'nav_companion', href: '/companion', icon: ( )}, { id: 'meet', labelKey: 'nav_meet', href: '/meet', icon: ( )}, ] const handleNavClick = (item: typeof navItems[0]) => { // Check if this is an external page (has a specific href) if (item.href !== '/') { router.push(item.href) } else if (item.id === 'vokabeln') { router.push('/vocab-worksheet') } else if (item.id === 'meet') { router.push('/meet') } else if (item.id === 'alerts') { router.push('/alerts') } else { // For dashboard tabs, either navigate or call the callback if (pathname !== '/') { router.push('/') } if (onTabChange) { onTabChange(item.id) } } } // Determine active item based on pathname or selectedTab const getActiveItem = () => { if (pathname === '/companion') return 'companion' if (pathname === '/meet') return 'meet' if (pathname === '/vocab-worksheet') return 'vokabeln' if (pathname === '/worksheet-editor') return 'worksheet-editor' if (pathname === '/worksheet-cleanup') return 'worksheet-cleanup' if (pathname === '/magic-help') return 'magic-help' if (pathname === '/alerts') return 'alerts' if (pathname === '/alerts-b2b') return 'alerts-b2b' if (pathname === '/messages') return 'messages' if (pathname?.startsWith('/korrektur')) return 'korrektur' return selectedTab } const activeItem = getActiveItem() return ( ) }