From ba8c98a8dccb8b561747168b90ae769a105d37cf Mon Sep 17 00:00:00 2001 From: schererleander Date: Fri, 26 Dec 2025 16:07:58 +0100 Subject: refactor: implement server-side rendering for auth-dependent pages --- src/components/UserNav.tsx | 82 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/components/UserNav.tsx (limited to 'src/components/UserNav.tsx') diff --git a/src/components/UserNav.tsx b/src/components/UserNav.tsx new file mode 100644 index 0000000..e11cad7 --- /dev/null +++ b/src/components/UserNav.tsx @@ -0,0 +1,82 @@ +"use client" + +import Link from "next/link" +import { signOut } from "next-auth/react" +import { LogOut, Settings } from "lucide-react" + +import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" +import { Button } from "@/components/ui/button" +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu" + +interface UserNavProps { + user: { + name?: string | null + email?: string | null + image?: string | null + } +} + +export function UserNav({ user }: UserNavProps) { + const getInitials = (name: string) => { + return name + .split(' ') + .map(word => word[0]) + .join('') + .toUpperCase() + .slice(0, 2) + } + + return ( + + + + + + +
+

+ {user.name} +

+

+ {user.email} +

+
+
+ + + + + Settings + + + + signOut()} + > + + Log out + +
+
+ ) +} -- cgit v1.3.1