← All demos and usage

Real-world example · SaaS control room

Audit findings without losing the last columns

An accessibility lead is reviewing a release queue on a narrow screen. A11y Scroll Cue makes the table’s horizontal overflow visible and gives keyboard users a temporary tab stop only when it is needed.

Scenario

Release review at tablet width

The lead needs to compare ownership, severity, evidence, and release status without hiding table columns or replacing the semantic table with a custom grid.

User goal

Reach the audit queue with the keyboard, discover that more columns are available, review them with native scrolling, and restore the cue for another tester.

Try it

Test the complete state change

  1. Narrow the viewport until the queue overflows and the text cue appears.
  2. Press Tab until the table region receives focus, then use ArrowLeft and ArrowRight.
  3. Scroll horizontally and confirm that the cue moves to its dismissed state.
  4. Activate Show cue again and check that focus stays on the button while the visible status text updates.

Live example

Release accessibility queue

Four unresolved findings are ready for triage. The status line describes the demo state without making the plugin cue itself a live region.

Current review

Checkout release · 4 findings

The cue is ready. Horizontal scrolling will dismiss it.

Open findings for the checkout release
Finding Journey Severity Owner Evidence Target Release status
A11Y-142 Payment method High Checkout UI Keyboard focus skips the saved-card error summary. 29 July Fix in review
A11Y-158 Address lookup Medium Forms Suggestion count is not announced after filtering. 30 July Test pending
A11Y-161 Order review High Design system Focus indicator is clipped at 200% zoom. 29 July Fix in progress
A11Y-169 Confirmation Medium Notifications Success heading is not programmatically focused. 31 July Owner assigned

Accessibility notes

What this example preserves

Developer notes

The copyable contract

Demo toolbar and status classes are page chrome. Only the data-a11y-scroll-cue* attributes belong to the plugin setup.

Root

[data-a11y-scroll-cue]

Wraps the scrollport and receives lifecycle state.

Child

[data-a11y-scroll-cue-scrollport]

The explicit element that owns native horizontal scrolling.

Options

Label + description

This demo sets regionLabel and opts into describeScrollport.

CSS imports

import "a11y-scroll-cue/styles.css";

Initialization

import { createA11yScrollCue } from "a11y-scroll-cue";

const root = document.querySelector("[data-a11y-scroll-cue]");

if (root instanceof HTMLElement) {
  createA11yScrollCue(root, {
    regionLabel: "Checkout release accessibility findings",
    describeScrollport: true,
  });
}