import { useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import { useAuthStore } from '@/features/auth/store/authStore'; import { useUser } from '@/features/auth/hooks/useUser'; import { useUIStore } from '@/stores/ui'; import { useTranslation } from '@/hooks/useTranslation'; import { EmailVerificationBadge } from '@/features/auth/components/EmailVerificationBadge'; import { NotificationMenu } from '@/components/notifications/NotificationMenu'; import { RateLimitIndicator } from '@/components/RateLimitIndicator'; import { Button } from '@/components/ui/button'; import { FocusTrap } from '@/components/ui/focus-trap'; import { Tooltip } from '@/components/ui/tooltip'; import { cn } from '@/lib/utils'; import { User, Settings, LogOut, Moon, Sun, Monitor, Search, Command, Menu, } from 'lucide-react'; import { FeatureHighlight } from '@/components/ui/feature-highlight'; import type { BaseComponentProps } from '../types'; export interface HeaderProps extends BaseComponentProps { } export function Header(_props: HeaderProps) { const [isUserMenuOpen, setIsUserMenuOpen] = useState(false); const { logout } = useAuthStore(); const { data: user } = useUser(); const { theme, setTheme, sidebarOpen, setSidebarOpen } = useUIStore(); const { t } = useTranslation(); const navigate = useNavigate(); const handleLogout = async () => { await logout(); navigate('/login'); }; const toggleTheme = () => { const newTheme = theme === 'light' ? 'dark' : theme === 'dark' ? 'system' : 'light'; setTheme(newTheme); }; const getThemeIcon = () => { switch (theme) { case 'light': return ; case 'dark': return ; default: return ; } }; return ( {/* Mobile Sidebar Toggle */} setSidebarOpen(!sidebarOpen)} className="lg:hidden p-2 rounded-lg hover:bg-muted/50 text-muted-foreground hover:text-foreground mr-2 transition-colors" > {/* Search — Spotify-style: subtle, rounded */} K {/* Right Actions */} Online {getThemeIcon()} {/* User — compact pill */} setIsUserMenuOpen(!isUserMenuOpen)} className="flex items-center gap-2 pl-0.5 pr-2 py-0.5 rounded-full hover:bg-muted/50 transition-colors focus:outline-none focus:ring-2 focus:ring-ring group" > {user?.username?.substring(0, 2).toUpperCase() || 'VZ'} {user?.username} {isUserMenuOpen && ( setIsUserMenuOpen(false)}> {user?.username} {user?.email} {!user?.is_verified && ( )} Profil Paramètres Déconnexion )} ); }
{user?.username}
{user?.email}