Spaces:
Sleeping
Sleeping
| "use client"; | |
| import { signOut, useSession } from "next-auth/react"; | |
| import { Button } from "@/components/ui/button"; | |
| import { | |
| DropdownMenu, | |
| DropdownMenuContent, | |
| DropdownMenuItem, | |
| DropdownMenuTrigger, | |
| } from "@/components/ui/dropdown-menu"; | |
| import { Avatar, AvatarFallback } from "@/components/ui/avatar"; | |
| import { LogOut, Search } from "lucide-react"; | |
| import { GlobalSearch } from "@/components/shared/global-search"; | |
| export function Topbar() { | |
| const { data: session } = useSession(); | |
| const initials = session?.user?.name | |
| ?.split(" ") | |
| .map((n) => n[0]) | |
| .join("") | |
| .toUpperCase() || "U"; | |
| return ( | |
| <header className="sticky top-0 z-30 flex h-14 items-center gap-4 border-b bg-background px-6"> | |
| <GlobalSearch /> | |
| <div className="ml-auto flex items-center gap-2"> | |
| <DropdownMenu> | |
| <DropdownMenuTrigger asChild> | |
| <Button variant="ghost" className="relative h-8 w-8 rounded-full"> | |
| <Avatar className="h-8 w-8"> | |
| <AvatarFallback className="bg-primary text-primary-foreground text-xs"> | |
| {initials} | |
| </AvatarFallback> | |
| </Avatar> | |
| </Button> | |
| </DropdownMenuTrigger> | |
| <DropdownMenuContent align="end"> | |
| <DropdownMenuItem className="text-sm text-muted-foreground" disabled> | |
| {session?.user?.email} | |
| </DropdownMenuItem> | |
| <DropdownMenuItem onClick={() => signOut({ callbackUrl: "/login" })}> | |
| <LogOut className="mr-2 h-4 w-4" /> | |
| Sign out | |
| </DropdownMenuItem> | |
| </DropdownMenuContent> | |
| </DropdownMenu> | |
| </div> | |
| </header> | |
| ); | |
| } | |