/** * User Dropdown Component * Reusable header dropdown with user information and navigation * * @author David Valera Melendez * @created 2025-08-07 * @location Made in Germany 🇩🇪 */ 'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import { User, FileText, ChevronDown, Settings, LogOut } from 'lucide-react'; interface UserDropdownProps { /** Current page identifier to highlight in dropdown */ currentPage?: 'dashboard' | 'settings'; /** Whether to show the logo icon */ showLogo?: boolean; /** Custom CSS classes */ className?: string; } /** * UserDropdown Component - Reusable header dropdown * * Professional user dropdown component with user information display * and navigation options. Can be customized for different pages. * * Features: * - User information display (name + email) * - Navigation menu with current page highlighting * - Settings and logout functionality * - Optional logo display * - Responsive design * * @param currentPage - Current page to highlight in dropdown * @param showLogo - Whether to display the logo icon * @param className - Additional CSS classes * @returns Reusable user dropdown component */ export function UserDropdown({ currentPage, showLogo = false, className = '', }: UserDropdownProps) { const router = useRouter(); const [isUserMenuOpen, setIsUserMenuOpen] = useState(false); /** * Handles navigation to settings page */ const handleAccountSettings = () => { setIsUserMenuOpen(false); router.push('/settings'); }; /** * Handles logout functionality */ const handleLogout = () => { setIsUserMenuOpen(false); // Here you would typically clear user session/tokens console.log('Logging out...'); // Redirect to login or home page router.push('/'); }; /** * Closes dropdown when clicking outside */ const handleDropdownToggle = () => { setIsUserMenuOpen(!isUserMenuOpen); }; return (
{/* Optional Logo */} {showLogo && (
)} {/* User Info Display */}

David Valera Melendez

david@valera-melendez.de

{/* User Dropdown */}
{/* Dropdown Menu */} {isUserMenuOpen && ( <> {/* Backdrop for mobile */}
setIsUserMenuOpen(false)} />
{/* Settings Option */} {/* Divider */}
{/* Logout Option */}
)}
); } export default UserDropdown;