import { useState, useRef, useEffect } from 'react' import { Link } from 'react-router-dom' import { useAuth } from '../context/AuthContext' import { SampleDataMenuItem } from './SampleDataMenuItem' import { SpeechSettingsMenuItem } from './SpeechSettingsPanel' type Props = { onProfile: () => void onAccount: () => void onClearData: () => void } export function UserMenu({ onProfile, onAccount, onClearData }: Props) { const { user, signOut } = useAuth() const [open, setOpen] = useState(false) const [speechOpen, setSpeechOpen] = useState(false) const [sampleDataOpen, setSampleDataOpen] = useState(false) const ref = useRef(null) useEffect(() => { function close(e: MouseEvent) { if (ref.current && !ref.current.contains(e.target as Node)) { setOpen(false) setSpeechOpen(false) setSampleDataOpen(false) } } document.addEventListener('mousedown', close) return () => document.removeEventListener('mousedown', close) }, []) const label = user ? user.firstName || user.email : 'Guest' return (
{open && (
{ setSampleDataOpen((s) => !s) setSpeechOpen(false) }} onActionComplete={() => { setOpen(false) setSpeechOpen(false) setSampleDataOpen(false) }} />
{ setSpeechOpen((s) => !s) setSampleDataOpen(false) }} /> {user ? ( ) : ( { setOpen(false) setSpeechOpen(false) setSampleDataOpen(false) }} style={{ display: 'block', padding: '0.5rem 1rem', textDecoration: 'none', color: 'inherit' }} > Sign In / Create Account )}
)}
) }