Skip to content

Commit 2bd9ad4

Browse files
committed
feat: Add skip link to main content
1 parent 495942d commit 2bd9ad4

File tree

4 files changed

+26
-3
lines changed

4 files changed

+26
-3
lines changed

public/locales/en/translation.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@
8585
"fi": "Valitse kieli: suomi",
8686
"sv": "Välj språk: svenska",
8787
"en": "Select language: English"
88-
}
88+
},
89+
"skipToContent": "Skip to content"
8990
},
9091
"validationErrors": {
9192
"required": "This field is required",

public/locales/fi/translation.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@
8080
"organisationCode": "Organisaatiokoodi",
8181
"startDate": "Aloituspvm",
8282
"endDate": "Lopetuspvm",
83-
"opensInNewTab": ", avautuu uudelle välilehdelle"
83+
"opensInNewTab": ", avautuu uudelle välilehdelle",
84+
"skipToContent": "Siirry sisältöön"
8485
},
8586
"validationErrors": {
8687
"required": "Tämä kenttä vaaditaan",

public/locales/sv/translation.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@
7575
"notEditable": "Inställningen kan inte ändras, då den har offentligjorts på en högre nivå.",
7676
"feedbacksGivenRatio": "Givna återkopplingar / Antal anmälda studenter",
7777
"additional": "Ytterligare",
78-
"opensInNewTab": ", öppnas i en ny flik"
78+
"opensInNewTab": ", öppnas i en ny flik",
79+
"skipToContent": "Gå till innehållet"
7980
},
8081
"validationErrors": {
8182
"required": "Fältet krävs",

src/client/components/NavBar/NavBar.jsx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
Box,
1313
Container,
1414
Badge,
15+
Link as MuiLink,
1516
} from '@mui/material'
1617
import { visuallyHidden } from '@mui/utils'
1718
import { uniq } from 'lodash-es'
@@ -102,6 +103,22 @@ const styles = {
102103
color: theme => theme.palette.primary.main,
103104
fontWeight: theme => theme.typography.fontWeightMedium,
104105
},
106+
skipLink: {
107+
position: 'fixed',
108+
top: 0,
109+
left: 0,
110+
zIndex: 1300,
111+
px: 2,
112+
py: 1,
113+
bgcolor: '#01263a',
114+
color: 'white',
115+
// Hide visually but keep focusable
116+
transform: 'translateY(-100%)',
117+
'&:focus': {
118+
transform: 'translateY(0)',
119+
outline: '2px solid #fff',
120+
},
121+
},
105122
}
106123

107124
const NavLabelWrapper = ({ renderBadge, children }) => {
@@ -279,6 +296,9 @@ const NavBar = ({ guest = false }) => {
279296

280297
return (
281298
<Box component="header" role="banner" id="header">
299+
<MuiLink href="#main-content" sx={styles.skipLink}>
300+
{t('common:skipToContent')}
301+
</MuiLink>
282302
<UserPermissionsWindow isOpen={permissionsWindowOpen} onClose={() => setPermissionsWindowOpen(false)} />
283303
{menu}
284304
<AppBar

0 commit comments

Comments
 (0)