"use client" import { useState, useRef, useEffect } from "react" import Link from "next/link" import { motion, AnimatePresence } from "framer-motion" import { LogOut, User, Settings, ChevronDown } from "lucide-react" import { useAuth } from "@/lib/auth-context" import { toast } from "sonner" export function UserMenu() { const { user, signOut, loading } = useAuth() const [open, setOpen] = useState(false) const menuRef = useRef(null) const displayName = user?.user_metadata?.full_name ?? user?.email?.split("@")[0] ?? "م" const initials = displayName.slice(0, 2).toUpperCase() // Close when clicking outside useEffect(() => { const handler = (e: MouseEvent) => { if (menuRef.current && !menuRef.current.contains(e.target as Node)) setOpen(false) } document.addEventListener("mousedown", handler) return () => document.removeEventListener("mousedown", handler) }, []) const handleSignOut = async () => { setOpen(false) await signOut() toast.success("تم تسجيل الخروج بنجاح") } // Skeleton while auth state is resolving if (loading) { return (
) } if (!user) return null return (
setOpen(v => !v)} className="flex items-center gap-2 px-3 py-2 rounded-2xl bg-primary/10 hover:bg-primary/15 border border-primary/20 transition-colors" aria-expanded={open} aria-haspopup="true" > {/* Avatar */}
{initials}
{displayName}
{open && ( {/* User info header */}

{displayName}

{user.email}

{/* Menu items */}
setOpen(false)} className="flex items-center gap-3 px-3 py-2.5 rounded-xl text-sm text-foreground hover:bg-primary/8 transition-colors group" > الملف الشخصي setOpen(false)} className="flex items-center gap-3 px-3 py-2.5 rounded-xl text-sm text-foreground hover:bg-primary/8 transition-colors group" > الإعدادات
)}
) } // Compact version for mobile menu export function MobileSignOut() { const { signOut } = useAuth() const handleSignOut = async () => { await signOut() toast.success("تم تسجيل الخروج") } return ( ) }