@@ -7,10 +7,17 @@ import { FaSteam } from "react-icons/fa";
77import { BsMusicNoteBeamed } from "react-icons/bs" ;
88import { useGuestAuth , useUser } from "@/api/auth" ;
99import { Avatar } from "./auth/Avatar" ;
10- import { LuLogOut } from "react-icons/lu" ;
10+ import { LuLogOut , LuSettings } from "react-icons/lu" ;
1111import { toast } from "sonner" ;
1212import { baseUrl } from "@/api/api" ;
1313import { useApp } from '@/hooks/context' ;
14+ import {
15+ DropdownMenu ,
16+ DropdownMenuContent ,
17+ DropdownMenuItem ,
18+ DropdownMenuTrigger
19+ } from "@radix-ui/react-dropdown-menu" ;
20+ import { NotImplemented } from "./modal/NotImplemented" ;
1421
1522export const Navbar = ( ) => {
1623 return (
@@ -49,27 +56,47 @@ export const UserProfile: FC<{}> = () => {
4956
5057 return (
5158 < div className = "flex items-center gap-1 text-ellipsis overflow-hidden" >
52- < div className = "flex items-center gap-1" >
53- < Avatar src = { user ?. avatar_url } seed = { user ?. user_id } />
54- < span className = "break-words block overflow-hidden text-ellipsis whitespace-nowrap" > { user ?. name } </ span >
55- </ div >
56- < button className = "button flex items-center gap-1" onClick = { logout } >
57- < LuLogOut className = "size-4" />
58- < span className = "hidden sm:block" > Logout</ span >
59- </ button >
59+ < DropdownMenu >
60+ < DropdownMenuTrigger asChild >
61+ < button className = "flex items-center gap-1 cursor-pointer outline-none px-3 mr-2 button border-b border-b-primarybg" >
62+ < Avatar src = { user ?. avatar_url } seed = { user ?. user_id } />
63+ < span className = "break-words block overflow-hidden text-ellipsis whitespace-nowrap" > { user ?. name } </ span >
64+ </ button >
65+ </ DropdownMenuTrigger >
66+ < DropdownMenuContent
67+ align = "end"
68+ sideOffset = { 5 }
69+ className = "bg-primary border border-tertiary rounded-md p-2 shadow-md z-50 min-w-[200px]"
70+ >
71+ < DropdownMenuItem className = "focus:outline-none focus:bg-secondary rounded-md" >
72+ < NotImplemented >
73+ < button className = "button flex items-center gap-2 w-full" >
74+ < LuSettings className = "size-4" />
75+ < span > Preferences</ span >
76+ </ button >
77+ </ NotImplemented >
78+ </ DropdownMenuItem >
79+ < DropdownMenuItem className = "focus:outline-none focus:bg-secondary rounded-md" >
80+ < button className = "button button-rust flex items-center gap-2 w-full" onClick = { logout } >
81+ < LuLogOut className = "size-4" />
82+ < span > Logout</ span >
83+ </ button >
84+ </ DropdownMenuItem >
85+ </ DropdownMenuContent >
86+ </ DropdownMenu >
6087 </ div >
6188 ) ;
6289} ;
6390
6491export const LoginModal : FC = ( ) => {
6592 const { isLoginOpen, closeLogin, openLogin } = useApp ( ) ;
66-
93+
6794 return (
6895 < Dialog open = { isLoginOpen } onOpenChange = { closeLogin } >
6996 { /* <DialogTrigger asChild> */ }
70- < button className = "button" onClick = { openLogin } >
71- < span > Login</ span >
72- </ button >
97+ < button className = "button" onClick = { openLogin } >
98+ < span > Login</ span >
99+ </ button >
73100 { /* </DialogTrigger> */ }
74101 < Modal size = "medium" >
75102 < LoginModalContent />
0 commit comments