'use client'; import Link from 'next/link'; import Image from 'next/image'; import { useTranslations } from 'next-intl'; import { ArrowSquareIn, SignOut, User } from '@phosphor-icons/react'; import { useAuth } from '@/components/auth-provider'; import { getLoginUrl, logout } from '@/lib/auth'; import { useState, useRef, useEffect } from 'react'; export function UserMenu() { const { session, isLoading, refresh } = useAuth(); const t = useTranslations('common'); const [open, setOpen] = useState(false); const handleLogout = async () => { setOpen(false); await logout(); await refresh(); }; const menuRef = useRef(null); useEffect(() => { const handleClickOutside = (e: MouseEvent) => { if (menuRef.current && !menuRef.current.contains(e.target as Node)) { setOpen(false); } }; if (open) { document.addEventListener('mousedown', handleClickOutside); } return () => document.removeEventListener('mousedown', handleClickOutside); }, [open]); if (isLoading) { return
; } if (!session) { return ( {t('signIn')} ); } return (
{open && (

{session.displayName ?? session.handle}

@{session.handle}

setOpen(false)} >
)}
); }