Skip to content

Commit 317dce6

Browse files
authored
fix: accessibility of the mobile nav bar (#7427)
* fix: accessibility of the mobile nav bar * fixup! fix: accessibility of the mobile nav bar * fixup! fix: accessibility of the mobile nav bar * fixup! fix: accessibility of the mobile nav bar * fixup! fix: accessibility of the mobile nav bar * fixup! fix: accessibility of the mobile nav bar * Update packages/i18n/locales/en.json Signed-off-by: Antoine du Hamel <[email protected]> * useTranslations * Apply suggestion from code review --------- Signed-off-by: Antoine du Hamel <[email protected]>
1 parent c4ea16e commit 317dce6

File tree

4 files changed

+190
-160
lines changed

4 files changed

+190
-160
lines changed

apps/site/components/Containers/NavBar/index.module.css

+11-1
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,22 @@
2828
dark:border-neutral-900;
2929
}
3030

31+
.sidebarItemToggler {
32+
@apply absolute
33+
right-4
34+
-z-10
35+
-translate-y-[200%]
36+
appearance-none
37+
opacity-0;
38+
}
39+
3140
.nodeIconWrapper {
3241
@apply h-[30px]
3342
flex-1;
3443
}
3544

36-
.navInteractionIcon {
45+
.navInteractionIcon,
46+
.sidebarItemToggler {
3747
@apply size-6;
3848
}
3949

apps/site/components/Containers/NavBar/index.tsx

+12-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import Hamburger from '@heroicons/react/24/solid/Bars3Icon';
44
import XMark from '@heroicons/react/24/solid/XMarkIcon';
55
import * as Label from '@radix-ui/react-label';
6+
import classNames from 'classnames';
67
import dynamic from 'next/dynamic';
8+
import { useTranslations } from 'next-intl';
79
import { useState } from 'react';
810
import type { FC, ComponentProps, HTMLAttributeAnchorTarget } from 'react';
911

@@ -46,6 +48,7 @@ const NavBar: FC<NavbarProps> = ({
4648
onThemeTogglerClick,
4749
}) => {
4850
const [isMenuOpen, setIsMenuOpen] = useState(false);
51+
const t = useTranslations();
4952

5053
return (
5154
<nav className={`${style.container}`}>
@@ -55,15 +58,22 @@ const NavBar: FC<NavbarProps> = ({
5558
</Link>
5659

5760
<Label.Root
58-
onClick={() => setIsMenuOpen(prev => !prev)}
5961
className={style.sidebarItemTogglerLabel}
6062
htmlFor="sidebarItemToggler"
6163
>
6264
{navInteractionIcons[isMenuOpen ? 'close' : 'show']}
6365
</Label.Root>
6466
</div>
6567

66-
<input className="peer hidden" id="sidebarItemToggler" type="checkbox" />
68+
<input
69+
className={classNames(['peer', style.sidebarItemToggler])}
70+
id="sidebarItemToggler"
71+
type="checkbox"
72+
onChange={e => setIsMenuOpen(() => e.target.checked)}
73+
aria-label={t(
74+
`components.containers.navBar.controls.${isMenuOpen ? 'close' : 'open'}`
75+
)}
76+
/>
6777

6878
<div className={`${style.main} peer-checked:flex`}>
6979
<div className={style.navItems}>

0 commit comments

Comments
 (0)