The view switcher at the top of the Board is a row of plain <Box onClick={() => setView(o.k)}> elements - no role, no tabIndex, no key handler, no selected state. You cannot Tab to it or switch views from the keyboard, and a screen reader announces nothing.
Where: website/src/BoardView.jsx, the setView(o.k) switcher.
Done when it is a real control: MUI ToggleButtonGroup (exclusive), or role="tab" items in a role="tablist" with tabIndex={0}, aria-selected, and Enter/Space switching. It should look the same as today.
Check - npm run lint:undef and npm run build in website/. Bonus: a website/test/*.test.mjs source check that the switcher items carry aria-selected. Please commit the rebuilt taskuary/web bundle with the change.
Getting started: pip install -e ".[dev]", then python -m pytest -q (offline, a few seconds). UI work: cd website && npm ci && npm test. See CONTRIBUTING.md. One small PR with the change and its test is perfect.
The view switcher at the top of the Board is a row of plain
<Box onClick={() => setView(o.k)}>elements - norole, notabIndex, no key handler, no selected state. You cannot Tab to it or switch views from the keyboard, and a screen reader announces nothing.Where:
website/src/BoardView.jsx, thesetView(o.k)switcher.Done when it is a real control: MUI
ToggleButtonGroup(exclusive), orrole="tab"items in arole="tablist"withtabIndex={0},aria-selected, and Enter/Space switching. It should look the same as today.Check -
npm run lint:undefandnpm run buildinwebsite/. Bonus: awebsite/test/*.test.mjssource check that the switcher items carryaria-selected. Please commit the rebuilttaskuary/webbundle with the change.Getting started:
pip install -e ".[dev]", thenpython -m pytest -q(offline, a few seconds). UI work:cd website && npm ci && npm test. See CONTRIBUTING.md. One small PR with the change and its test is perfect.