Skip to main content

Components

Browse all accessibility patterns available for Web / React.

ComponentSummary
AccordionA set of show/hide sections with heading-wrapped buttons controlling associated panels via aria-expanded (and optionally aria-controls / region).
AvatarImage, initials, or glyph standing for a person or entity, where the accessible name identifies who is represented and stays the same whichever branch of the fallback chain renders.
BadgeSmall non-interactive indicator annotating a host element with a count or a status, where the meaning is folded into an accessible name and read on arrival rather than announced on change.
Button (Basic)Native button that triggers an action. Supports text-only, icon+text, and icon-only labeling patterns.
Button (Toggle)Two- or three-state button that toggles between pressed and not pressed using aria-pressed.
Carousel (Dots)Horizontally-advancing carousel (aka hero or marquee carousel) with 'dot' navigation, prev/next buttons, and pause behavior.
Carousel (Thumbnails)Horizontally-advancing carousel (aka hero or marquee carousel) with thumbnail navigation, prev/next buttons, and pause behavior.
CheckboxA single binary checkbox for an independent on/off choice submitted with a form. Uses a native <input type="checkbox"> with an associated <label>, or role="checkbox" with aria-checked when a native input cannot be used.
Checkbox GroupA set of related checkboxes that together answer one question. The group is named with <fieldset> and <legend>, or role="group" with aria-labelledby, and each option is an independent native <input type="checkbox">.
Collection RowHorizontal product shelf with a heading, list semantics, and Prev/Next paging that moves focus to newly revealed items.
Combobox (Autocomplete)An editable text input that filters a listbox of options as the user types; uses role="combobox" with aria-autocomplete, aria-expanded, aria-controls, and aria-activedescendant while DOM focus stays on the input.
Dialog (Basic)User-initiated blocking dialog. Uses the native <dialog> element with .showModal() so the browser handles focus trap, background inertness, Escape dismissal, focus restoration, and top-layer rendering.
DisclosureA button that shows and hides an associated content region; uses aria-expanded on the trigger and aria-controls to the region, with DOM show/hide.
Grid (Channel Guide)Interactive channel guide grid with one Tab stop and arrow-key navigation across channels and time slots.
LinkNative link for navigation using <a href>. Supports optional context in the accessible name, including "opens in new tab/window/dialog".
ListboxAn always-visible list of selectable options using role="listbox" and role="option", supporting single or multiple selection with roving tabindex or aria-activedescendant.
MenuA button that opens a menu of commands using role='menu' and role='menuitem', with roving tabindex focus management and the full menu keyboard contract.
MenubarA persistent horizontal bar of application command menus using role="menubar", role="menu", and role="menuitem", for desktop-application command surfaces only, never site navigation.
Navigation (Flat List)A non-modal header navigation pattern that supports top-level links and optional sub-menus. Uses disclosure-style toggles (buttons) with aria-expanded/controls and Tab-based navigation (no roving focus / no role=menu).
Navigation (Disclosure)A single-trigger, non-modal dropdown that reveals a short list of navigation links and optional actions, using a native button with aria-expanded plus DOM show/hide, and never role="menu".
PIN InputA fixed-length numeric code entered across segmented boxes, implemented as a single <input> whose expected length is carried in a description rather than by the box count, with the boxes and any group separator rendered as aria-hidden presentation.
PopoverA non-modal overlay anchored to its trigger; uses role="dialog" with an accessible name, moves focus in on open and restores it on close, but does not trap focus or inert the background.
Progress BarNon-interactive indicator of a process advancing toward completion, using the native <progress> element or role="progressbar" with aria-valuenow, and announcing completion through a separate live region rather than on every value change.
Select (Basic)A native select element styled with CSS, the default single-value form control; retains native keyboard, mobile, dismissal, and assistive-technology behavior.
Select (Custom Style)A custom-styled form select that matches native <select> behavior using a button trigger + listbox popup, and a visually hidden native <select> for form submission and browser autofill.
SeparatorStatic line separating sections of content, rendered as an hr and hidden from assistive technology unless the line itself is the only thing marking the boundary.
SpinnerIndeterminate loading glyph that carries no semantics of its own, where the graphic is decorative and the control or region hosting it reports the wait through aria-busy and a separate live region.
SplitterMoveable divider between two panes that changes their relative size, using a focusable role="separator" with aria-valuenow, aria-controls, and arrow-key movement.
SwitchTwo-state on/off control representing a persistent setting. Uses role="switch" with aria-checked, or native checkbox semantics when applicable.
TabsSame-page sections where one panel is visible at a time, using role="tablist", role="tab", and role="tabpanel" with aria-selected, a roving tabindex, and arrow-key traversal.
ToastTemporary, non-blocking status message announced via live region. May include optional dismiss control. Disappears automatically.
TooltipA brief supplementary text label shown on hover and focus of its trigger; uses role="tooltip" referenced by aria-describedby, and is hoverable, dismissible, and persistent.