feat: profile overview and logout button
This commit is contained in:
parent
0e8a4da103
commit
dbe1d2417c
4 changed files with 52 additions and 12 deletions
BIN
public/missing.webp
Normal file
BIN
public/missing.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 122 B |
|
|
@ -1,9 +1,14 @@
|
|||
import Link from "next/link";
|
||||
import SearchBar from "./search-bar";
|
||||
|
||||
import { getServerSession } from "next-auth";
|
||||
import { Icon } from "@iconify/react";
|
||||
|
||||
export default function Header() {
|
||||
import SearchBar from "./search-bar";
|
||||
import ProfileOverview from "./profile-overview";
|
||||
import LogoutButton from "./logout-button";
|
||||
|
||||
export default async function Header() {
|
||||
const session = await getServerSession();
|
||||
|
||||
return (
|
||||
<div className="fixed top-0 w-full p-4 flex justify-between items-center bg-amber-50 border-b-4 border-amber-200 shadow-md">
|
||||
<Link href={"/"} className="font-black text-3xl tracking-wide text-orange-400">
|
||||
|
|
@ -12,22 +17,29 @@ export default function Header() {
|
|||
|
||||
<SearchBar />
|
||||
|
||||
<ul className="flex gap-3 items-center">
|
||||
<li>
|
||||
<Link href={"/random"} className="button !p-1.5">
|
||||
<ul className="flex gap-3 items-center h-11 *:h-full">
|
||||
<li title="Random Mii">
|
||||
<Link href={"/random"} className="button !p-0 h-full aspect-square">
|
||||
<Icon icon="mdi:dice-3" fontSize={28} />
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href={"/submit"} className="button">
|
||||
<Link href={"/submit"} className="button h-full">
|
||||
Submit
|
||||
</Link>
|
||||
</li>
|
||||
{!session?.user ? (
|
||||
<li>
|
||||
<Link href={"/login"} className="button">
|
||||
<Link href={"/login"} className="button h-full">
|
||||
Login
|
||||
</Link>
|
||||
</li>
|
||||
) : (
|
||||
<>
|
||||
<ProfileOverview />
|
||||
<LogoutButton />
|
||||
</>
|
||||
)}
|
||||
</ul>
|
||||
</div>
|
||||
);
|
||||
|
|
|
|||
14
src/app/components/logout-button.tsx
Normal file
14
src/app/components/logout-button.tsx
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
"use client";
|
||||
|
||||
import { Icon } from "@iconify/react";
|
||||
import { signOut } from "next-auth/react";
|
||||
|
||||
export default function LogoutButton() {
|
||||
return (
|
||||
<li title="Logout">
|
||||
<button onClick={() => signOut()} className="button !p-0 aspect-square h-full">
|
||||
<Icon icon="ic:round-logout" fontSize={24} />
|
||||
</button>
|
||||
</li>
|
||||
);
|
||||
}
|
||||
14
src/app/components/profile-overview.tsx
Normal file
14
src/app/components/profile-overview.tsx
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import { getServerSession } from "next-auth";
|
||||
|
||||
export default async function ProfileOverview() {
|
||||
const session = await getServerSession();
|
||||
|
||||
return (
|
||||
<li title="Your profile">
|
||||
<button className="button !gap-2 !p-0 h-full max-w-64">
|
||||
<img src={session?.user?.image ?? "/missing.webp"} alt="profile picture" className="rounded-full h-full outline-2 outline-orange-400" />
|
||||
<span className="pr-4 overflow-hidden whitespace-nowrap text-ellipsis w-full">{session?.user?.name}</span>
|
||||
</button>
|
||||
</li>
|
||||
);
|
||||
}
|
||||
Loading…
Reference in a new issue