blob: 815ef05de096e84e1264940bc18a1835c9c4f3ed (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
// app/pending/components/user-profile-badge.tsx
"use client"
import { Avatar, AvatarImage, AvatarFallback } from "@/components/ui/avatar"
import { Button } from "@/components/ui/button"
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuLabel,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu"
import { Clock, LogOut } from "lucide-react"
import { signOut } from "next-auth/react"
interface UserProfileBadgeProps {
user?: {
name?: string | null
email?: string | null
image?: string | null
} | null
}
export function UserProfileBadge({ user }: UserProfileBadgeProps) {
if (!user) return null
const initials = user.name
?.split(" ")
.map((word) => word[0]?.toUpperCase())
.join("")
return (
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="ghost" className="flex items-center gap-2">
<Avatar className="w-8 h-8">
<AvatarImage src={user.image || ""} alt={user.name || ""} />
<AvatarFallback>
{initials || "?"}
</AvatarFallback>
</Avatar>
<span className="text-sm font-medium">{user.name}</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>계정 정보</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuItem disabled>
<Clock className="w-4 h-4 mr-2" />
승인 대기 중
</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem onClick={() => signOut()}>
<LogOut className="w-4 h-4 mr-2" />
로그아웃
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
)
}
|