-
Notifications
You must be signed in to change notification settings - Fork 269
Expand file tree
/
Copy pathmeControlDropdownMenu.tsx
More file actions
85 lines (81 loc) · 3.03 KB
/
meControlDropdownMenu.tsx
File metadata and controls
85 lines (81 loc) · 3.03 KB
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
'use client';
import {
LogOut,
Settings,
} from "lucide-react"
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu"
import { cn } from "@/lib/utils"
import { signOut } from "next-auth/react"
import posthog from "posthog-js";
import { useDomain } from "@/hooks/useDomain";
import { Session } from "next-auth";
import { AppearanceDropdownMenuGroup } from "./appearanceDropdownMenuGroup";
import { UserAvatar } from "@/components/userAvatar";
interface MeControlDropdownMenuProps {
menuButtonClassName?: string;
session: Session;
}
export const MeControlDropdownMenu = ({
menuButtonClassName,
session,
}: MeControlDropdownMenuProps) => {
const domain = useDomain();
return (
<DropdownMenu>
<DropdownMenuTrigger asChild>
<UserAvatar
email={session.user.email}
imageUrl={session.user.image}
className={cn("h-8 w-8 cursor-pointer", menuButtonClassName)}
/>
</DropdownMenuTrigger>
<DropdownMenuContent className="w-64" align="end" sideOffset={5}>
<DropdownMenuGroup>
<div className="flex flex-row items-center gap-3 px-3 py-3">
<UserAvatar
email={session.user.email}
imageUrl={session.user.image}
className="h-10 w-10 flex-shrink-0"
/>
<div className="flex flex-col flex-1 min-w-0">
<p className="text-sm font-semibold truncate">{session.user.name ?? "User"}</p>
{session.user.email && (
<p className="text-xs text-muted-foreground truncate">{session.user.email}</p>
)}
</div>
</div>
</DropdownMenuGroup>
<DropdownMenuSeparator />
<AppearanceDropdownMenuGroup />
<DropdownMenuItem asChild>
<a href={`/${domain}/settings`}>
<Settings className="h-4 w-4 mr-2" />
<span>Settings</span>
</a>
</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuGroup>
<DropdownMenuItem
onClick={() => {
signOut({
redirectTo: "/login",
}).then(() => {
posthog.reset();
})
}}
>
<LogOut className="mr-2 h-4 w-4" />
<span>Log out</span>
</DropdownMenuItem>
</DropdownMenuGroup>
</DropdownMenuContent>
</DropdownMenu>
)
}