11'use client'
22
33import i18n from 'i18next'
4+ import ky from 'ky'
45import { ActivityIcon , CogIcon , GlobeIcon , LanguagesIcon , NetworkIcon } from 'lucide-react'
56import Image from 'next/image'
67import Link from 'next/link'
7- import { usePathname } from 'next/navigation'
8+ import { usePathname , useRouter } from 'next/navigation'
89import { FC } from 'react'
910import { useTranslation } from 'react-i18next'
1011import { useUserQuery } from '~/apis/query'
1112import { LogoText } from '~/components/LogoText'
1213import { Avatar , AvatarFallback } from '~/components/ui/avatar'
1314import { Button } from '~/components/ui/button'
15+ import {
16+ DropdownMenu ,
17+ DropdownMenuContent ,
18+ DropdownMenuItem ,
19+ DropdownMenuSeparator ,
20+ DropdownMenuTrigger
21+ } from '~/components/ui/dropdown-menu'
1422import { ModeToggle } from '~/components/ui/mode-toggle'
1523import {
1624 NavigationMenu ,
@@ -24,6 +32,7 @@ import { Tooltip, TooltipContent, TooltipTrigger } from '~/components/ui/tooltip
2432const Header : FC = ( ) => {
2533 const { t } = useTranslation ( )
2634 const pathname = usePathname ( )
35+ const router = useRouter ( )
2736 const userQuery = useUserQuery ( )
2837
2938 const navigationMenus = [
@@ -77,13 +86,33 @@ const Header: FC = () => {
7786
7887 < ModeToggle />
7988
80- < Avatar >
81- { userQuery . data ?. user . avatar && (
82- < Image width = { 40 } height = { 40 } src = { userQuery . data . user . avatar } alt = "avatar" />
83- ) }
89+ < DropdownMenu >
90+ < DropdownMenuTrigger >
91+ < Avatar >
92+ { userQuery . data ?. user . avatar && (
93+ < Image width = { 40 } height = { 40 } src = { userQuery . data . user . avatar } alt = "avatar" />
94+ ) }
95+
96+ < AvatarFallback > daed</ AvatarFallback >
97+ </ Avatar >
98+ </ DropdownMenuTrigger >
99+
100+ < DropdownMenuContent >
101+ < DropdownMenuItem > Account Settings</ DropdownMenuItem >
102+
103+ < DropdownMenuSeparator />
104+
105+ < DropdownMenuItem
106+ onClick = { async ( ) => {
107+ await ky . post ( '/api/logout' )
84108
85- < AvatarFallback > daed</ AvatarFallback >
86- </ Avatar >
109+ router . replace ( '/login' )
110+ } }
111+ >
112+ { t ( 'actions.logout' ) }
113+ </ DropdownMenuItem >
114+ </ DropdownMenuContent >
115+ </ DropdownMenu >
87116 </ div >
88117 </ div >
89118 )
0 commit comments