Skip to content
Checklist

Before you copy that component: the a11y checklist

Every asset in the library passes these checks before it earns a card. Run the same five on anything you paste from anywhere else — most copy-paste libraries skip all of them.

Beginner1 min read (computed · recorded 8)updated 2026-09-06accessibilitychecklistmotion

Part 4 of 4 in The fundamentalsWrite AI prompts that reproduce — not ones that 'inspire'

The five checks

  • Keyboard reachable — can I Tab to it and operate it with Enter/Space/Arrows? A hover-only interaction is a bug.
  • Focus visible — does the browser's focus ring survive your border-radius and colour changes? Never remove outlines without a visible replacement.
  • Contrast AA — body text 4.5:1, large text 3:1. Watch dim captions: that 'subtle' #9AA text on #0B0D14 fails AA at small sizes.
  • Reduced motion — prefers-reduced-motion must produce a calmer-but-present state, not a frozen or broken one.
  • Announced state — switches need role/aria-checked; loaders need role=status/aria-live; count-ups should reveal their final value to screen readers immediately.

Two traps specific to animated UI

The first trap: decorative motion that carries meaning. If a number counts up, the visual is decoration — the *meaning* must exist in the DOM from the start (the final value, read out loud immediately).

The second trap: hover-only affordances. Anything revealed on hover must also be discoverable by keyboard — that usually means 'make it a real button or link, or expose the action another way'.

Our bar

We publish the automated a11y score on every asset card and re-check with a human pass before 'Verified'. If a submitted asset can't reach ~90, it doesn't ship — that's the quality gate that keeps this library from becoming a pile of pretty failures.

Words this guide uses that the glossary defines: Reduced motion

Practise the lesson

Theory sticks when you ship it. These original Motif assets put this guide's lesson to work — open one and copy it into your own page.