1
- import { faMusic , faSignOutAlt } from '@fortawesome/free-solid-svg-icons' ;
1
+ 'use client' ;
2
+ import {
3
+ faMusic ,
4
+ faPen ,
5
+ faSignOutAlt ,
6
+ } from '@fortawesome/free-solid-svg-icons' ;
2
7
import Image from 'next/image' ;
3
8
4
9
import { LoggedUserData } from '@web/src/modules/auth/types/User' ;
5
10
11
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' ;
12
+ import { useState } from 'react' ;
13
+ import { UserMenuButton } from '../client/UserMenuButton' ;
14
+ import { EditUsernameModal } from './EditUsernameModal' ;
15
+ import { UserMenuLink , UserMenuSplitLine } from './UserMenuLink' ;
6
16
import {
7
17
Popover ,
8
18
PopoverArrow ,
9
19
PopoverContent ,
10
20
PopoverTrigger ,
11
21
} from './popover' ;
12
- import { UserMenuLink , UserMenuSplitLine } from './UserMenuLink' ;
13
- import { UserMenuButton } from '../client/UserMenuButton' ;
14
22
15
- export function UserMenu ( { userData } : { userData : LoggedUserData } ) {
23
+ export const UserMenu = ( { userData } : { userData : LoggedUserData } ) => {
24
+ const [ isEditingUsername , setIsEditingUsername ] = useState ( false ) ;
16
25
return (
17
26
< Popover >
27
+ < EditUsernameModal
28
+ isOpen = { isEditingUsername }
29
+ setIsOpen = { setIsEditingUsername }
30
+ userData = { userData }
31
+ />
18
32
< PopoverTrigger >
19
33
< UserMenuButton userData = { userData } />
20
34
</ PopoverTrigger >
@@ -40,7 +54,15 @@ export function UserMenu({ userData }: { userData: LoggedUserData }) {
40
54
/>
41
55
</ div >
42
56
< div className = 'flex-shrink min-w-0 flex flex-col leading-tight' >
43
- < h4 className = 'truncate font-semibold' > { userData . username } </ h4 >
57
+ < h4 className = 'truncate font-semibold' >
58
+ { userData . username }
59
+ < button
60
+ className = 'ml-1 text-zinc-300 hover:text-white'
61
+ onClick = { ( ) => setIsEditingUsername ( true ) }
62
+ >
63
+ < FontAwesomeIcon icon = { faPen } />
64
+ </ button >
65
+ </ h4 >
44
66
< p className = 'text-zinc-300 text-xs truncate' > { userData . email } </ p >
45
67
</ div >
46
68
</ div >
@@ -57,4 +79,4 @@ export function UserMenu({ userData }: { userData: LoggedUserData }) {
57
79
</ PopoverContent >
58
80
</ Popover >
59
81
) ;
60
- }
82
+ } ;
0 commit comments