// native html first, ARIA only when needed

Accessible components, done right.

Production-ready patterns with live demos, copy-paste code, and the reasoning behind every decision — built on the elements the browser already ships.

// 23 patterns & growing

Component Patterns

Each includes a working demo, complete source, keyboard guide, screen reader notes, and WCAG 2.2 success-criteria mapping.

View all 23 →
why-native-first.md

// the premiseWhy native HTML first?

Most accessibility failures come from reinventing what the browser already provides. A <button> gives you keyboard interaction, focus management, and screen reader semantics for free.

A <div onclick> gives you none of that — and needs ARIA, tabindex, and keyboard handlers just to catch up.

Every pattern here starts with native elements and only layers ARIA when semantics fall short. Modals, accordions and breadcrumbs use zero or minimal ARIA.

Others — tabs, comboboxes, dropdown menus — show exactly why ARIA exists: no native equivalent, so roles are the only way to convey structure to assistive tech.

Each pattern explains why each decision was made, and where the line sits between helpful ARIA and needless complexity.

// conceptual deep dives

Guides

Read these to understand the why behind the patterns.

View all 14 →
// interactive · progress saved locally

Checklists

Check off items as you go — progress is saved automatically. Print-friendly for code review and QA.

View all 10 →