/** * @file features/layout/components/user-menu.tsx * @description 사용자 프로필 드롭다운 메뉴 컴포넌트 * @remarks * - [레이어] Components/UI * - [사용자 행동] Avatar 클릭 -> 드롭다운 오픈 -> 프로필/설정 이동 또는 로그아웃 * - [연관 파일] header.tsx, features/auth/actions.ts (로그아웃) */ "use client"; import { signout } from "@/features/auth/actions"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { User } from "@supabase/supabase-js"; import { LogOut, Settings, User as UserIcon } from "lucide-react"; import { useRouter } from "next/navigation"; interface UserMenuProps { /** Supabase User 객체 */ user: User | null; } /** * 사용자 메뉴/프로필 컴포넌트 (로그인 시 헤더 노출) * @param user 로그인한 사용자 정보 * @returns Avatar 버튼 및 드롭다운 메뉴 */ export function UserMenu({ user }: UserMenuProps) { const router = useRouter(); if (!user) return null; return (

{user.user_metadata?.full_name || user.user_metadata?.name || "사용자"}

{user.email}

router.push("/profile")}> 프로필 router.push("/settings")}> 설정
); }