Files
minecraft-account-manager/docs/accessibility.md
T
dmg c131465ff5
CI / validate (push) Successful in 6m15s
Release / release (push) Successful in 7m49s
feat(admission): add scheduled group access
2026-08-02 14:04:48 -04:00

3.3 KiB

Accessibility review

Review date: 2026-08-02

Scope

Player account management, administrator navigation, dashboard metrics and chart, user records, group management, event filtering, event details, forms, tables, and status notifications.

Implemented checks and improvements

  • Added a keyboard-visible “Skip to main content” link and consistent high-visibility :focus-visible outlines.
  • Darkened the accent color so accent text reaches at least 4.5:1 contrast on both canvas and panel backgrounds.
  • Preserved reduced-motion behavior and disabled decorative cursor animation when requested.
  • Added labels or accessible names to search, Minecraft username, settings, group, and event-filter controls.
  • Added reusable per-user group dropdowns that open labelled confirmation dialogs, restore the prior selection on cancellation, prevent dismissal while pending, and provide live progress and result feedback.
  • Group creation, policy, schedule editing, metadata editing, and deletion use scrollable native modal dialogs with keyboard cancellation, focus management, descriptive confirmation text, and disabled pending controls.
  • Weekly schedule rows use labelled fieldsets, weekday and time controls, explicit exclusive-end wording, authoritative UTC values, and browser-local equivalents with the detected timezone.
  • Added fieldset and legend semantics to multi-select event-type filters.
  • Added table captions, column scopes, and row scopes to administrator data tables.
  • Added role=status with polite announcements for successful nickname changes and role=alert with assertive announcements for errors.
  • Added semantic time elements for audit and security activity timestamps.
  • Made event JSON keyboard-focusable so horizontally overflowing content can be reviewed without a pointer.
  • Added an accessible title, description, date labels, per-point labels, and textual values to the daily-active-user chart.
  • Added labelled, keyboard-linked world-map markers plus a complete semantic table equivalent for approximate user locations.
  • Collocated users share a visible count badge; hover and focus tooltips announce every nickname, while interactive grouped markers expose per-user popup links.
  • The semantic location table separates network company, connection type, Proxy/VPN status, and risk classification under explicit column headers.
  • Added keyboard-operable tabs for the server-rendered overview and opt-in interactive OpenStreetMap view.
  • Added explicit new-tab context to the external Discord invite link.
  • Kept destructive account and group actions behind native keyboard-operable details confirmation disclosures.
  • Allowed administrator navigation to wrap at narrow viewport widths instead of overflowing.

Validation

  • ESLint with the Next.js ruleset passes.
  • Component rendering tests verify nickname status and error announcement roles and dismissal text.
  • The production build passes and reports database-backed player and administrator pages as dynamic server-rendered routes.
  • Color contrast was calculated for the canvas, panel, muted text, accent text, and signal combinations used by the interface.

Follow-up

Authenticated browser automation is still recommended in CI with axe-core and a test Keycloak realm. It should cover keyboard order, zoom to 200%, reflow at 320 CSS pixels, and screen-reader announcements against a running production build.