1+ 'use client' ;
2+
3+ import {
4+ Avatar ,
5+ Button ,
6+ Menu ,
7+ MenuItem ,
8+ MenuList ,
9+ MenuPopover ,
10+ MenuTrigger ,
11+ tokens ,
12+ } from '@fluentui/react-components' ;
13+ import { Person24Regular , SignOut24Regular } from '@fluentui/react-icons' ;
14+ import { useRouter } from 'next/navigation' ;
15+ import useSlidesStore from '@/src/stores/store' ;
16+
17+ export const UserDropdown = ( ) => {
18+ const router = useRouter ( ) ;
19+ const { user } = useSlidesStore ( ) ;
20+
21+ const handleProfileClick = ( ) => {
22+ // Navigate to profile page - assuming /auth/profile route
23+ router . push ( '/auth/profile' ) ;
24+ } ;
25+
26+ const handleLogoutClick = ( ) => {
27+ // Clear user session and redirect to auth page
28+ // In a real app, you'd also clear authentication tokens/cookies
29+ router . push ( '/auth' ) ;
30+ } ;
31+
32+ return (
33+ < Menu positioning = "below-end" >
34+ < MenuTrigger disableButtonEnhancement >
35+ < Button
36+ style = { {
37+ border : 'none' ,
38+ backgroundColor : 'transparent' ,
39+ padding : 0 ,
40+ minWidth : 'auto' ,
41+ height : 'auto'
42+ } }
43+ >
44+ < Avatar
45+ className = "cursor-pointer"
46+ image = { {
47+ src : 'https://placekitten.com/32/32' ,
48+ as : 'img' ,
49+ } }
50+ />
51+ </ Button >
52+ </ MenuTrigger >
53+
54+ < MenuPopover >
55+ < MenuList >
56+ < div
57+ style = { {
58+ padding : '8px 12px' ,
59+ borderBottom : `1px solid ${ tokens . colorNeutralStroke2 } ` ,
60+ pointerEvents : 'none'
61+ } }
62+ >
63+ < Avatar
64+ size = { 40 }
65+ image = { {
66+ src : 'https://placekitten.com/40/40' ,
67+ as : 'img' ,
68+ } }
69+ />
70+ < div
71+ style = { {
72+ fontSize : '12px' ,
73+ color : tokens . colorNeutralForeground2 ,
74+ marginTop : '4px' ,
75+ } }
76+ >
77+ { user ?. email || 'user@example.com' }
78+ </ div >
79+ </ div >
80+
81+ < MenuItem
82+ icon = { < Person24Regular /> }
83+ onClick = { handleProfileClick }
84+ >
85+ Profile
86+ </ MenuItem >
87+
88+ < MenuItem
89+ icon = { < SignOut24Regular /> }
90+ onClick = { handleLogoutClick }
91+ >
92+ Logout
93+ </ MenuItem >
94+ </ MenuList >
95+ </ MenuPopover >
96+ </ Menu >
97+ ) ;
98+ } ;
99+
100+ export default UserDropdown ;
0 commit comments