|
3 | 3 | import Image from "next/image";
|
4 | 4 | import Link from "next/link";
|
5 | 5 | import React, { useState } from "react";
|
| 6 | +import { Button } from "@/components/ui/button"; |
| 7 | +import { |
| 8 | + DropdownMenu, |
| 9 | + DropdownMenuContent, |
| 10 | + DropdownMenuItem, |
| 11 | + DropdownMenuTrigger, |
| 12 | +} from "@/components/ui/dropdown-menu"; |
| 13 | +import { Icons } from "@/components/icons"; |
| 14 | +import { SessionProvider, signOut, useSession } from "next-auth/react"; |
| 15 | +import { LoginButton } from "./ui/buttons"; |
| 16 | +import { ModeToggle } from "./mode-toggle"; |
6 | 17 |
|
7 |
| -import { Button } from "./ui/button"; |
8 |
| -import { SessionProvider, useSession } from "next-auth/react"; |
9 |
| -import { LoginButton, LogoutButton } from "./ui/buttons"; |
| 18 | +const AccountMenu = () => { |
| 19 | + const session = useSession(); |
| 20 | + |
| 21 | + return ( |
| 22 | + <DropdownMenu> |
| 23 | + <DropdownMenuTrigger asChild> |
| 24 | + <Button variant="ghost" className="px-2 py-4 flex gap-4 items-center"> |
| 25 | + <Image |
| 26 | + className="rounded-full" |
| 27 | + src={session?.data?.user.image ?? ""} |
| 28 | + alt="user avatar" |
| 29 | + height={30} |
| 30 | + width={30} |
| 31 | + /> |
| 32 | + <p className="text-gray-700 font-bold">{session?.data?.user?.name}</p> |
| 33 | + </Button> |
| 34 | + </DropdownMenuTrigger> |
| 35 | + <DropdownMenuContent align="end"> |
| 36 | + <DropdownMenuItem onClick={() => signOut()}> |
| 37 | + <Icons.logout className="mr-2 h-4 w-4" /> |
| 38 | + <span>Logout</span> |
| 39 | + </DropdownMenuItem> |
| 40 | + </DropdownMenuContent> |
| 41 | + </DropdownMenu> |
| 42 | + ); |
| 43 | +}; |
10 | 44 |
|
11 | 45 | const Header = () => {
|
12 | 46 | const [state, setState] = useState(false);
|
13 | 47 |
|
14 | 48 | const navigation = [
|
15 | 49 | { title: "Race", path: "/race" },
|
16 | 50 | { title: "Leaderboard", path: "/" },
|
17 |
| - { title: "About", path: "/" }, |
| 51 | + // { title: "About", path: "/about" }, |
18 | 52 | ];
|
19 | 53 |
|
20 | 54 | const session = useSession();
|
@@ -91,19 +125,10 @@ const Header = () => {
|
91 | 125 | <LoginButton />
|
92 | 126 | ) : (
|
93 | 127 | <>
|
94 |
| - <Image |
95 |
| - className="rounded-full" |
96 |
| - src={session?.data.user.image ?? ""} |
97 |
| - alt="user avatar" |
98 |
| - height={40} |
99 |
| - width={40} |
100 |
| - /> |
101 |
| - <p className="text-gray-700 font-bold"> |
102 |
| - {session?.data.user?.name} |
103 |
| - </p> |
104 |
| - <LogoutButton /> |
| 128 | + <AccountMenu /> |
105 | 129 | </>
|
106 | 130 | )}
|
| 131 | + <ModeToggle /> |
107 | 132 | </div>
|
108 | 133 | </div>
|
109 | 134 | </nav>
|
|
0 commit comments