import { useEffect, useMemo, useRef, useState } from 'react' import { useAuth } from '../auth/AuthContext' import { Button } from './ui/button' export function AuthenticationDisplay() { const { user, isConfigured, isLoading, login, logout } = useAuth() const [isOpen, setIsOpen] = useState(false) const menuRef = useRef(null) const email = useMemo( () => user?.profile?.email ?? user?.profile?.preferred_username ?? user?.profile?.name ?? user?.profile?.sub ?? null, [user], ) useEffect(() => { if (!isOpen) return const handleClickOutside = (event: MouseEvent) => { if (!menuRef.current) return if (!menuRef.current.contains(event.target as Node)) { setIsOpen(false) } } const handleEscape = (event: KeyboardEvent) => { if (event.key === 'Escape') setIsOpen(false) } document.addEventListener('mousedown', handleClickOutside) document.addEventListener('keydown', handleEscape) return () => { document.removeEventListener('mousedown', handleClickOutside) document.removeEventListener('keydown', handleEscape) } }, [isOpen]) if (isLoading) { return ( ) } if (!isConfigured) { return ( ) } if (!user) { return ( ) } return (
{isOpen && (

Signed in

{email ?? 'User'}

)}
) }