pollo/src/components/Navbar.tsx

82 lines
2.2 KiB
TypeScript
Raw Normal View History

2023-04-20 04:20:00 -06:00
import { useSession, signOut } from "next-auth/react";
import Link from "next/link";
import Image from "next/image";
import { env } from "~/env.mjs";
interface NavbarProps {
title: string;
}
const Navbar: React.FC<NavbarProps> = ({ title }) => {
const { data: sessionData } = useSession();
return (
<nav className="navbar bg-base-100">
<div className="flex-1">
<Link
about="Back to home."
href="/"
className="btn btn-ghost normal-case text-xl"
>
<Image
className="mr-2"
src="/logo.webp"
alt="Nav Logo"
width={32}
height={32}
priority
/>
{title}
2023-05-30 12:31:47 -06:00
{env.NEXT_PUBLIC_APP_ENV === "development" && " >> DEV"}
2023-04-20 04:20:00 -06:00
</Link>
</div>
{sessionData?.user.image && (
<div className="flex-none gap-2">
<div className="dropdown dropdown-end">
<label tabIndex={0} className="btn btn-ghost btn-circle avatar">
<div className="w-10 rounded-full">
<Image
src={sessionData.user.image}
alt="Profile picture."
height={32}
width={32}
/>
</div>
</label>
<ul
tabIndex={0}
className="mt-3 p-2 shadow menu menu-compact dropdown-content bg-base-100 rounded-box w-52"
>
<li>
<Link
about="Profile Page"
href="/profile"
className="justify-between"
>
Profile
</Link>
</li>
{sessionData.user.role === "ADMIN" && (
<li>
<Link
about="Admin Page"
href="/admin"
className="justify-between"
>
Admin
</Link>
</li>
)}
<li>
<a onClick={() => void signOut()}>Sign Out</a>
</li>
</ul>
</div>
</div>
)}
</nav>
);
};
export default Navbar;