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:
| Status | Means |
|---|---|
| Implemented | Emitted by specs react and specs webcomponents, built from its page |
| Partial | Something 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 |
| Specified | The 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.
| Role | Declares | Status |
|---|---|---|
button | An element that performs an action on activation | Implemented |
togglebutton | A button with a persistent pressed state | Implemented |
link | An element that navigates on activation | Implemented |
disclosure | A trigger that shows and hides a companion panel | Implemented |
textbox | A single-line free-text control | Implemented |
password | A concealed-text control | — |
searchbox | A search-text control | — |
textarea | A multi-line text control | — |
spinbutton | A numeric control with stepper affordances | — |
slider | A control selecting a value from a range | — |
checkbox | A binary (or indeterminate) selection control | Implemented |
radio | An exclusive-selection control within a group | — |
switch | An on/off control with immediate effect | Implemented |
group | A fieldset grouping related controls | — |
alert | An assertive live region announcing interruptions | Implemented |
status | A polite live region announcing transient updates | Implemented |
progressbar | An element reporting progress toward completion | Implemented |
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.
| Part | Declares | Status |
|---|---|---|
label | The control’s visible label; wires htmlFor. On a group it emits <legend> | Implemented |
indicator | Decorative state indicator (check glyph, switch thumb); aria-hidden | Implemented |
description | Supplementary text; wires aria-describedby | Implemented — described on the errormessage page |
errormessage | Validation message; wires aria-describedby when it renders | Implemented |
value | The element standing in for the control’s value | Implemented |
placeholder | The element standing in for placeholder text | Implemented — described on the textbox page |
panel | The region a disclosure shows and hides | Implemented |
increment | Step-up affordance on a spinbutton | — |
decrement | Step-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