Skip to content

Components

All 110 of them, with zero runtime dependencies between them and your project. Every preview below is the exact fixture the conformance suite renders in CI, the same render axe audits and the SSR pass exercises, so nothing here can drift from what is actually verified.

110 components

Feedback & status

  • Loaded content

    Loading, error, empty, and offline states — announced, focus-managed, and shift-free.

  • A live banner for offline, restored, and constrained connections.

  • Contained content

    Contains a render crash to its own subtree instead of the whole page, with a focusable, announced fallback.

  • Active

    A small status label where color never carries meaning alone.

  • Online

    A coloured status indicator with an always-present text label.

  • Heads up

    Informational message.

    A static in-flow message, polite or assertive by tone.

  • Uploading

    A determinate or indeterminate progress bar with a real accessible value.

  • Loading

    A loading indicator announced once via role=status.

  • A placeholder shape that reserves space for content that has not arrived yet.

  • No results

    Try a different search.

    A placeholder for a list, table, or panel with nothing in it yet.

  • A toast queue with correctly-timed live regions.

  • 01:00

    A live countdown with locale-correct digits.

  • A declarative live region for components that track their own message as state.

  • All changes saved

    The autosave indicator, announced — and distinguishing 'failed' from 'offline'.

  • A retry control with visible exponential backoff that stays disabled while offline.

  • Tells the reader how old the data is, and says it differently when offline explains why.

Media & layout

  • A small ship sailing toward the horizon at sunset

    An image that defers its own download on Save-Data and 2G-class connections.

  • A horizontal or vertical rule, with an optional inline label.

  • Content

    A centred, max-width content column.

  • Copies to the clipboard and announces success.

  • Web Share API with a plain-link fallback.

  • Mounted content

    Defers mounting expensive children until visible, sooner on good connections.

  • A button that prints the page.

Forms & input

  • A text field with label, description, and error wired to assistive technology.

  • A form that keeps drafts, queues offline submits, and gives errors a focusable summary.

  • A binary toggle built on role=switch, not a disguised checkbox.

  • A checkbox with a real, clickable, bound label.

  • Choose one

    A fieldset/legend group of real radio inputs.

  • A native range input with an RTL-correct thumb direction.

  • A star rating, read-only or editable, announced as one value.

  • A search input with a clear button that returns focus correctly.

  • A free-text tag list that announces additions and removals.

  • A password field with an accessible visibility toggle and strength meter.

  • Verification code

    One-time-code entry wired for platform SMS autofill.

  • 1

    A numeric field with increment/decrement buttons for motor-impaired users.

  • A bot trap invisible to real users without trapping keyboard or screen reader users.

  • A native select — fully accessible, in every language, at zero extra bytes.

  • A drag-and-drop zone that is a real keyboard-activatable button first.

  • June 2026
    Sun
    Mon
    Tue
    Wed
    Thu
    Fri
    Sat

    A month grid in the reader's own calendar system and week start.

  • 9:30 AM

    A native time input matching the platform's own 12/24-hour convention.

  • A searchable single-select following the ARIA combobox pattern.

  • A real multi-select control rendered as removable chips plus toggle buttons.

  • Given and family name inputs, ordered the way the reader's locale orders them.

  • An address form whose field order and required fields follow the country being addressed.

  • A real radiogroup with roving tabindex and direction-aware arrow keys.

  • 7 of 20

    A character counter that counts graphemes, so one emoji costs one, not eleven.

  • A money input that parses the locale's own separators, so "1.234,56" means what a German user meant.

  • mile

    A measurement input shown in the reader's units and always stored in metric.

  • A timezone picker labelled in the reader's language and ordered by current offset.

  • The focusable list of what went wrong, at the top of a form — usable with any form library.

Accessibility & preferences

  • Screen-reader-only text

    Content for assistive technology only, removed from the visual layout without leaving the accessibility tree.

  • Esc

    Kbd

    XS

    A single keyboard key, styled and marked up as one.

  • A light/dark/system toggle that persists its choice.

  • We use only the storage this site needs to work. No third-party tracking.

    A cookie banner where decline is exactly as easy to press as accept.

  • An in-page opt-in to reduced motion, for people who never touch OS settings.

  • A manual override for the library's constrained-connection behaviour.

  • One panel for larger text and higher contrast.

  • In-page text scaling for low-vision readers, persisted and announced.

  • Page title

    Section inside it

    Headings that know their own level, so a reusable component never breaks the page outline.

Data display

  • A person's picture, or script-aware initials when there is none.

    An overlapping avatar stack with an accessible overflow indicator.

  • A dismissible tag with a real accessible name for its remove action.

  • Title

    Description text

    Body

    A bordered content container with header, title, and description parts.

  • Collapsible sections built on the WAI-ARIA Accordion pattern.

    1. 9:00Order placed
    2. 10:00Shipped

    A vertical event sequence marked up as a real ordered list.

  • Revenue$12,400+4% vs last week

    A single KPI figure with an optional trend line.

  • const x = 1;

    A code sample, always left-to-right regardless of page direction, with copy.

  • The Analytical Engine has no pretensions to originate anything.
    Ada Lovelace

    A real blockquote/cite pair, not a styled div.

  • Row 0
    Row 1
    Row 2
    Row 3
    Row 4
    Row 5
    Row 6
    Row 7
    Row 8
    Row 9
    Row 10
    Row 11

    Renders only visible rows plus overscan, for smooth scrolling on low-end devices.

  • Aisha
    Bo

    A real, sortable table screen readers can navigate by row and column.

  • Loads more content near the viewport, and refuses to on constrained connections.

  • Card A
    Card B

    A zero-JS masonry layout via CSS columns.

  • A single collapsible section.

    A disclosure tree following the ARIA tree pattern, with one tab stop and RTL-aware arrows.

  • Contributors
    Ångström12
    Élodie30
    Zhang7

    A table that sorts text with Intl.Collator, so accents and non-Latin scripts file correctly.

Internationalisation

  • Live, localised relative time ("3 days ago") with the exact timestamp always available.

  • 3 items

    Grammatically correct plural forms via Intl.PluralRules, not an English if/else.

  • Aisha, Bo, and Chidi

    "A, B, and C" formatted correctly for the current locale via Intl.ListFormat.

  • $12.50

    Locale- and currency-correct money formatting via Intl.NumberFormat.

  • A native, per-option lang-tagged language switcher.

  • Mirrors a directional icon (arrows, chevrons) under RTL.

  • 3.2 km

    Locale-correct unit formatting (distance, data, temperature) via Intl.NumberFormat.

  • 1,234,567

    A large number shortened the way the reader's locale shortens it — 1.2K, 1.2万, 12 lakh.

  • 5.4 MB

    A file size with a translated, locale-positioned unit, in decimal or binary.

  • 23rd

    An ordinal via Intl.PluralRules — correct at 11th, and silent where suffixes do not apply.

  • 6 min read

    Estimated reading time, in the locale's own digits and word order.

  • Reply from محمد (3 replies)

    Isolates user-controlled text so a mixed-direction sentence does not reorder around it.

  • A headline long enough t…

    Truncation that counts user-perceived characters, so emoji and Devanagari clusters are never split.

  • Jan 1 – 5, 2026

    A date range formatted as one range, collapsing shared parts in the locale's own calendar.

Overlays

  • A hover/focus label bound with aria-describedby, keyboard accessible.

  • Renders children into document.body, deferred to a client-only mount.

  • A modal with a focus trap, Escape to close, and focus returned on exit.

  • A modal panel anchored to a screen edge, using logical start/end sides.

  • A disclosure panel that closes on outside click and Escape.

  • A dropdown menu following the WAI-ARIA Menu Button pattern.

  • Right-click me

    A right-click menu also reachable via the keyboard Menu key.

Navigation

  • Content A

    Keyboard-navigable tabs whose arrow-key direction flips correctly under RTL.

  • A landmark trail with the current page marked aria-current.

  • Page controls with locale-correct numerals.

    1. Cart (step 1 of 3, complete)
    2. Shipping (step 2 of 3, current)
    3. Payment (step 3 of 3, upcoming)

    A wizard's progress, with each step's status in its accessible name.

  • Appears after scrolling a screenful; honours reduced motion.

  • A reading-progress bar with a real accessible value.

  • A jump-list that tracks the visible heading via IntersectionObserver.

  • A shortcut reference dialog inheriting the focus trap every overlay gets.

  • A keyboard-first fuzzy launcher following the ARIA combobox pattern.

  • A labelled nav landmark with the current page marked aria-current.

  • A simple site footer with locale-aware link list.

  • A landmark navigation column with a logical-side active indicator.

  • The page's first focusable element, visible only once focused.

  • Skip links for every landmark, giving sighted keyboard users the rotor screen readers already have.