import React, { useState, useRef, useEffect } from 'react'; import { User, UserRole } from '../../types'; interface AvatarDropdownProps { user: User; onLogout: () => void; onAdmin?: () => void; onChangePassword?: () => void; } const getInitials = (name: string) => { return name ? name.charAt(0).toUpperCase() : '?'; }; const AvatarDropdown: React.FC = ({ user, onLogout, onAdmin, onChangePassword, }) => { const [isOpen, setIsOpen] = useState(false); const dropdownRef = useRef(null); useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if ( dropdownRef.current && !dropdownRef.current.contains(event.target as Node) ) { setIsOpen(false); } }; document.addEventListener('mousedown', handleClickOutside); return () => document.removeEventListener('mousedown', handleClickOutside); }, []); return (
{isOpen && (

Signed in as

{user.username}

{user.role === UserRole.ADMIN && (

Administrator

)}
{/* Password Change Option - Only for password-based accounts */} {user.password && onChangePassword && ( )} {/* Admin Interface - Only for admins */} {user.role === UserRole.ADMIN && onAdmin && ( )}
)}
); }; export default AvatarDropdown;