@@ -27,6 +27,30 @@ function DropdownMenu({
27
27
) ;
28
28
}
29
29
30
+ function MenuLink ( {
31
+ path,
32
+ text,
33
+ side = false ,
34
+ children,
35
+ } : {
36
+ path : string ;
37
+ text : string ;
38
+ side ?: boolean ;
39
+ children ?: any ;
40
+ } ) {
41
+ return (
42
+ < Link
43
+ className = { `${ side ? "" : styles . menuItem } ${
44
+ useRouter ( ) . asPath . startsWith ( path ) ? styles . selected : ""
45
+ } `}
46
+ href = { path }
47
+ >
48
+ { text }
49
+ { children }
50
+ </ Link >
51
+ ) ;
52
+ }
53
+
30
54
function SideMenu ( {
31
55
headToggle : toggle ,
32
56
children,
@@ -98,31 +122,26 @@ export default function NavigationBar(props: {
98
122
const translations = useTranslationTable ( ) ;
99
123
100
124
const router = useRouter ( ) ;
125
+
101
126
const entries = [
102
- < Link
127
+ < MenuLink
103
128
key = { 0 }
104
- className = { styles . sidemenuItem }
105
- href = "/association"
106
- onClick = { toggleMenu }
107
- >
108
- { capitalize ( translations [ "association" ] ) }
109
- </ Link > ,
110
- < Link
129
+ side = { true }
130
+ path = "/association"
131
+ text = { capitalize ( translations [ "association" ] ) }
132
+ /> ,
133
+ < MenuLink
111
134
key = { 1 }
112
- className = { styles . sidemenuItem }
113
- href = "/commissions"
114
- onClick = { toggleMenu }
115
- >
116
- { capitalize ( translations [ "commissions" ] ) }
117
- </ Link > ,
118
- < Link
135
+ side = { true }
136
+ path = "/commissions"
137
+ text = { capitalize ( translations [ "commissions" ] ) }
138
+ /> ,
139
+ < MenuLink
119
140
key = { 2 }
120
- className = { styles . sidemenuItem }
121
- href = "/news"
122
- onClick = { toggleMenu }
123
- >
124
- { capitalize ( translations [ "news" ] ) }
125
- </ Link > ,
141
+ side = { true }
142
+ path = "/news"
143
+ text = { capitalize ( translations [ "news" ] ) }
144
+ /> ,
126
145
] ;
127
146
128
147
return (
@@ -132,30 +151,33 @@ export default function NavigationBar(props: {
132
151
</ Link >
133
152
134
153
< div className = { styles . navigationMenu } >
135
- < Link className = { styles . menuItem } href = "/association" >
136
- { capitalize ( translations [ "association" ] ) }
137
- </ Link >
154
+ < MenuLink
155
+ path = "/association"
156
+ text = { capitalize ( translations [ "association" ] ) }
157
+ />
138
158
139
159
{ props . commissions ? (
140
160
< DropdownMenu
141
161
head = {
142
- < Link className = { styles . menuItem } href = "/commissions" >
143
- { capitalize ( translations [ "commissions" ] ) }
144
- < i className = { styles . arrow } />
145
- </ Link >
162
+ < >
163
+ < MenuLink
164
+ path = "/commissions"
165
+ text = { capitalize ( translations [ "commissions" ] ) }
166
+ >
167
+ < i className = { styles . arrow } />
168
+ </ MenuLink >
169
+ </ >
146
170
}
147
171
>
148
172
{ props . commissions ? (
149
173
props . commissions . map ( ( c ) => {
150
174
if ( c . name && c . slug ) {
151
175
return (
152
- < Link
176
+ < MenuLink
153
177
key = { c . slug }
154
- href = { `/commissions/${ c . slug } ` }
155
- className = { styles . menuItem }
156
- >
157
- { c . name }
158
- </ Link >
178
+ path = { `/commissions/${ c . slug } ` }
179
+ text = { c . name }
180
+ />
159
181
) ;
160
182
} else {
161
183
console . error (
@@ -171,14 +193,10 @@ export default function NavigationBar(props: {
171
193
) }
172
194
</ DropdownMenu >
173
195
) : (
174
- < Link className = { styles . menuItem } href = "/commissions" >
175
- { capitalize ( translations [ "commissions" ] ) }
176
- </ Link >
196
+ < > </ >
177
197
) }
178
198
179
- < Link className = { styles . menuItem } href = "/news" >
180
- { capitalize ( translations [ "news" ] ) }
181
- </ Link >
199
+ < MenuLink path = "/news" text = { capitalize ( translations [ "news" ] ) } />
182
200
183
201
{ props . langs ? (
184
202
< DropdownMenu
0 commit comments