@@ -4,15 +4,23 @@ import ListItemIcon from "@material-ui/core/ListItemIcon"
4
4
import ListItemText from "@material-ui/core/ListItemText"
5
5
import MenuItem from "@material-ui/core/MenuItem"
6
6
import { fade , makeStyles } from "@material-ui/core/styles"
7
+ import AccountIcon from "@material-ui/icons/AccountCircleOutlined"
7
8
import KeyboardArrowDown from "@material-ui/icons/KeyboardArrowDown"
8
9
import KeyboardArrowUp from "@material-ui/icons/KeyboardArrowUp"
9
10
import React , { useState } from "react"
11
+ import { Link } from "react-router-dom"
10
12
import { UserResponse } from "../../api/types"
11
13
import { LogoutIcon } from "../Icons"
14
+ import { DocsIcon } from "../Icons/DocsIcon"
12
15
import { UserAvatar } from "../User"
13
16
import { UserProfileCard } from "../User/UserProfileCard"
14
17
import { BorderedMenu } from "./BorderedMenu"
15
18
19
+ export const Language = {
20
+ accountLabel : "Account" ,
21
+ docsLabel : "Documentation" ,
22
+ signOutLabel : "Sign Out" ,
23
+ }
16
24
export interface UserDropdownProps {
17
25
user : UserResponse
18
26
onSignOut : ( ) => void
@@ -32,7 +40,7 @@ export const UserDropdown: React.FC<UserDropdownProps> = ({ user, onSignOut }: U
32
40
return (
33
41
< >
34
42
< div >
35
- < MenuItem onClick = { handleDropdownClick } >
43
+ < MenuItem onClick = { handleDropdownClick } data-testid = "user-dropdown-trigger" >
36
44
< div className = { styles . inner } >
37
45
< Badge overlap = "circle" >
38
46
< UserAvatar username = { user . username } />
@@ -65,13 +73,31 @@ export const UserDropdown: React.FC<UserDropdownProps> = ({ user, onSignOut }: U
65
73
< div className = { styles . userInfo } >
66
74
< UserProfileCard user = { user } />
67
75
68
- < Divider className = { styles . divider } />
76
+ < Divider />
77
+
78
+ < Link to = "/preferences" className = { styles . link } >
79
+ < MenuItem className = { styles . menuItem } onClick = { handleDropdownClick } >
80
+ < ListItemIcon className = { styles . icon } >
81
+ < AccountIcon />
82
+ </ ListItemIcon >
83
+ < ListItemText primary = { Language . accountLabel } />
84
+ </ MenuItem >
85
+ </ Link >
86
+
87
+ < a href = "https://coder.com/docs" target = "_blank" rel = "noreferrer" className = { styles . link } >
88
+ < MenuItem className = { styles . menuItem } onClick = { handleDropdownClick } >
89
+ < ListItemIcon className = { styles . icon } >
90
+ < DocsIcon />
91
+ </ ListItemIcon >
92
+ < ListItemText primary = { Language . docsLabel } />
93
+ </ MenuItem >
94
+ </ a >
69
95
70
96
< MenuItem className = { styles . menuItem } onClick = { onSignOut } >
71
97
< ListItemIcon className = { styles . icon } >
72
98
< LogoutIcon />
73
99
</ ListItemIcon >
74
- < ListItemText primary = "Sign Out" />
100
+ < ListItemText primary = { Language . signOutLabel } />
75
101
</ MenuItem >
76
102
</ div >
77
103
</ BorderedMenu >
@@ -84,6 +110,7 @@ export const useStyles = makeStyles((theme) => ({
84
110
marginTop : theme . spacing ( 1 ) ,
85
111
marginBottom : theme . spacing ( 1 ) ,
86
112
} ,
113
+
87
114
inner : {
88
115
display : "flex" ,
89
116
alignItems : "center" ,
@@ -94,12 +121,14 @@ export const useStyles = makeStyles((theme) => ({
94
121
userInfo : {
95
122
marginBottom : theme . spacing ( 1 ) ,
96
123
} ,
124
+
97
125
arrowIcon : {
98
126
color : fade ( theme . palette . primary . contrastText , 0.7 ) ,
99
127
marginLeft : theme . spacing ( 1 ) ,
100
128
width : 16 ,
101
129
height : 16 ,
102
130
} ,
131
+
103
132
arrowIconUp : {
104
133
color : theme . palette . primary . contrastText ,
105
134
} ,
@@ -114,6 +143,11 @@ export const useStyles = makeStyles((theme) => ({
114
143
} ,
115
144
} ,
116
145
146
+ link : {
147
+ textDecoration : "none" ,
148
+ color : "inherit" ,
149
+ } ,
150
+
117
151
icon : {
118
152
color : theme . palette . text . secondary ,
119
153
} ,
0 commit comments