40 lines
2.9 KiB
Markdown
40 lines
2.9 KiB
Markdown
# 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 per-user group dropdowns with immediate-change instructions, keyboard submission fallback, and live success or error feedback.
|
|
- 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.
|