import React, { useState, useRef, useEffect } from 'react'; import { useAuth } from 'react-oidc-context'; import { LogIn, LogOut, User, Loader2, Key, ChevronDown } from 'lucide-react'; interface AuthButtonProps { onAccountSettingsClick?: () => void; } export const AuthButton: React.FC = ({ onAccountSettingsClick }) => { const auth = useAuth(); const [dropdownOpen, setDropdownOpen] = useState(false); const dropdownRef = useRef(null); useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { setDropdownOpen(false); } }; if (dropdownOpen) { document.addEventListener('mousedown', handleClickOutside); } return () => { document.removeEventListener('mousedown', handleClickOutside); }; }, [dropdownOpen]); if (auth.isLoading) { return (
); } if (auth.error) { console.error('Auth error:', auth.error); return (
Auth Error: {auth.error.message}
); } if (auth.isAuthenticated) { return (
{dropdownOpen && (
{onAccountSettingsClick && ( )}
)}
); } return ( ); };