Skip to content

Inventory

The vocabulary is larger than what emits. A concept with no implementation is inert: an annotated spec carries the role and every transform ignores it, so nothing breaks and nothing changes.

Three states, because a binary would be misleading:

StatusMeans
ImplementedEmitted by specs react and specs webcomponents, built from its page
PartialSomething emits, but it was written before the page existed and has not been checked against it. Treat the page as the specification and the output as unverified
SpecifiedThe page is the specification. Nothing emits yet

Status describes the React and Web Components transforms — the two that emit today. The iOS and Android tables on each role page record the intended native binding for those platforms; nothing emits for either yet.

Control roles

Name an interactive or announced thing. A control role changes what element is emitted and adds handlers to the contract.

RoleDeclaresStatus
buttonAn element that performs an action on activationImplemented
togglebuttonA button with a persistent pressed stateImplemented
linkAn element that navigates on activationImplemented
disclosureA trigger that shows and hides a companion panelImplemented
textboxA single-line free-text controlImplemented
passwordA concealed-text control
searchboxA search-text control
textareaA multi-line text control
spinbuttonA numeric control with stepper affordances
sliderA control selecting a value from a range
checkboxA binary (or indeterminate) selection controlImplemented
radioAn exclusive-selection control within a group
switchAn on/off control with immediate effectImplemented
groupA fieldset grouping related controls
alertAn assertive live region announcing interruptionsImplemented
statusA polite live region announcing transient updatesImplemented
progressbarAn element reporting progress toward completionImplemented

Part roles

Name a constituent of some control. Most add no handlers — their value is an id plus an attribute on a different element. A part resolves to its control by component, not by tree position; see precedence.

PartDeclaresStatus
labelThe control’s visible label; wires htmlFor. On a group it emits <legend>Implemented
indicatorDecorative state indicator (check glyph, switch thumb); aria-hiddenImplemented
descriptionSupplementary text; wires aria-describedbyImplemented — described on the errormessage page
errormessageValidation message; wires aria-describedby when it rendersImplemented
valueThe element standing in for the control’s valueImplemented
placeholderThe element standing in for placeholder textImplemented — described on the textbox page
panelThe region a disclosure shows and hidesImplemented
incrementStep-up affordance on a spinbutton
decrementStep-down affordance on a spinbutton

A dash means no page yet — the concept is in the vocabulary and nothing describes it in detail.

See also

  • Roles overview — what a role is, how one is authored, and the platform reach
  • Precedence — how a role, a states classification and an action resolve together
  • Actions — the second annotation key