'use client'; import { useState, useRef, useEffect } from 'react'; import { useSession, signIn, signOut } from 'next-auth/react'; import { useTranslations, useLocale } from 'next-intl'; import Link from 'next/link'; import { LogIn, LogOut, User, Heart, ChevronDown, Settings } from 'lucide-react'; import { clsx } from 'clsx'; export function AuthButton() { const { data: session, status } = useSession(); const t = useTranslations('auth'); const locale = useLocale(); const [dropdownOpen, setDropdownOpen] = useState(false); const dropdownRef = useRef(null); // Close dropdown when clicking outside useEffect(() => { function handleClickOutside(event: MouseEvent) { if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { setDropdownOpen(false); } } document.addEventListener('mousedown', handleClickOutside); return () => document.removeEventListener('mousedown', handleClickOutside); }, []); if (status === 'loading') { return (
); } if (!session) { return ( ); } return (
{dropdownOpen && (
{/* User info */}

{session.user?.name || session.user?.username}

@{session.user?.username}

{/* Menu items */} setDropdownOpen(false)} className="flex items-center gap-2 px-4 py-2 text-sm text-text-secondary hover:bg-surface-subtle transition-colors" > {t('favorites')} setDropdownOpen(false)} className="flex items-center gap-2 px-4 py-2 text-sm text-text-secondary hover:bg-surface-subtle transition-colors" > {t('manageSkills')}
)}
); }