Skip to content

fix(a11y): WCAG 2.2 accessibility improvements#177

Open
Copilot wants to merge 1 commit into
mainfrom
copilot/review-accessibility-wcag-2-2
Open

fix(a11y): WCAG 2.2 accessibility improvements#177
Copilot wants to merge 1 commit into
mainfrom
copilot/review-accessibility-wcag-2-2

Conversation

Copilot AI commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

Several WCAG 2.2 violations across the client — missing programmatic labels, suppressed focus indicators, icon-only interactive elements with no accessible name, and a custom modal with no dialog semantics or focus management.

Modal dialog — UserManagement.tsx

  • role="dialog" + aria-modal + aria-labelledby on custom modal
  • Auto-focus Confirm on open; Escape closes; visible focus-visible rings on buttons

Form labels — UserManagement.tsx, TeacherView.tsx

  • Search <input> gets a visually-hidden <label>; icon-only search button gets aria-label
  • Invite-link <p> promoted to <label htmlFor="invite-link">

Enrollment switches — TeacherView.tsx

  • Both role="switch" buttons gain aria-label ("Open for Enrollment", "Auto Enroll") — previously had no programmatic name despite visible adjacent text

Navigation — Nav.tsx

  • Hamburger toggle: aria-label ("Open menu"/"Close menu"), aria-expanded, aria-controls
  • Drawer close button: aria-label="Close menu"

Focus indicators — Read.tsx, VideoHeader.tsx, Codeblock.tsx

  • focus:outline-none replaced with focus-visible:ring-2 throughout; previously keyboard focus was invisible on these buttons

Like button state — Read.tsx, VideoHeader.tsx

  • aria-pressed (toggled) + descriptive aria-label so toggled state is conveyed to assistive technology

Lesson links — StudentView.tsx

  • Links whose visible content is only a CheckCircleIcon or PlayIcon get aria-label (e.g. "Open lesson: Intro to Loops" / "Intro to Loops (completed)")

- UserManagement: add role/aria-modal/aria-labelledby/focus management/Escape
  key to custom modal; associate search input with visible label; add
  aria-label and focus ring to icon-only search button
- Nav: add aria-label/aria-expanded/aria-controls to hamburger toggle; add
  aria-label to drawer close button; expose drawer via id
- Read: replace focus:outline-none with focus-visible:ring on like button and
  ActionBtn; add aria-pressed and aria-label to like button
- VideoHeader: replace focus:outline-none with focus-visible:ring; add
  aria-label to like button
- Codeblock: replace focus:outline-none with focus-visible:ring on reset and
  submit buttons
- TeacherView: convert invite-link p tag to label; add aria-label to both
  role=switch enrollment toggle buttons
- StudentView: add descriptive aria-label to lesson links that contain only
  icons in their completed state
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants