Deferred from PR #363 (CodeRabbit review: #363 (comment)).
Problem
The sortable table-header cells on the Students roster handle onClick only, so keyboard users cannot change the sort order and screen readers do not announce the headers as interactive or their sort state.
src/pages/StudentsPage.tsx — the Name / Email / Grades sort headers.
This pattern predates Phase 38 (it was not introduced by the cohort-chips work), so it was kept out of that PR's scope. The page's axe suite currently passes, but this is still a real keyboard / assistive-tech gap.
Suggested work
- Wrap each sortable header label in a
<button type="button"> (focusable, Enter/Space activates), keeping the existing handleSort.
- Add
aria-sort (ascending / descending / none) to the header reflecting the current sort.
- Verify with the existing axe test and manual keyboard navigation.
Scope: small. Accessibility improvement, non-blocking.
Deferred from PR #363 (CodeRabbit review: #363 (comment)).
Problem
The sortable table-header cells on the Students roster handle
onClickonly, so keyboard users cannot change the sort order and screen readers do not announce the headers as interactive or their sort state.src/pages/StudentsPage.tsx— the Name / Email / Grades sort headers.This pattern predates Phase 38 (it was not introduced by the cohort-chips work), so it was kept out of that PR's scope. The page's axe suite currently passes, but this is still a real keyboard / assistive-tech gap.
Suggested work
<button type="button">(focusable, Enter/Space activates), keeping the existinghandleSort.aria-sort(ascending/descending/none) to the header reflecting the current sort.Scope: small. Accessibility improvement, non-blocking.