Button
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
Complete example markup
<button type="button" class="primary" data-action="save">Save changes</button>Link
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
Complete example markup
<a href="#main-content">View the first-screen example</a>IconButton
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
Complete example markup
<button type="button" aria-label="Close details"><span aria-hidden="true">×</span></button>TextField and SearchField
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
Search by name or code.
Complete example markup
<label for="query">Search inventory</label><input id="query" type="search" aria-describedby="query-hint"><p id="query-hint">Search by name or code.</p>Checkbox
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
Complete example markup
<label class="choice"><input type="checkbox">Include archived items</label>Radio
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
Complete example markup
<fieldset><legend>Layout</legend><label class="choice"><input type="radio" name="layout" value="list" checked>List</label><label class="choice"><input type="radio" name="layout" value="cards">Cards</label></fieldset>Switch
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
Complete example markup
<label class="choice"><input type="checkbox" role="switch">Send the follow-up</label>Select
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
Complete example markup
<label for="density">Density</label><select id="density"><option value="comfortable">Comfortable</option><option value="compact">Compact</option></select>Tabs
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
Complete example markup
<nav aria-label="Item sections"><a href="#tabs" aria-current="page">Details</a> <a href="#table">History</a></nav>SegmentedControl
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
Complete example markup
<fieldset class="segments"><legend>Inventory view</legend><label class="choice"><input type="radio" name="segment" value="list" checked>List</label><label class="choice"><input type="radio" name="segment" value="cards">Cards</label></fieldset>Dialog
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
Review deletion consequences
This permanently deletes the draft.
Complete example markup
<details><summary>Review deletion consequences</summary><p>This permanently deletes the draft.</p><button type="button" data-open="dialog-demo">Open confirmation</button></details><dialog id="dialog-demo" aria-labelledby="dialog-title"><h3 id="dialog-title">Delete draft?</h3><p>This permanently deletes the draft.</p><form method="dialog"><button value="cancel">Cancel</button><button value="confirm">Delete draft</button></form></dialog>Drawer / Sheet
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
Complete example markup
<button type="button" data-open="drawer-demo">Open item details</button><dialog id="drawer-demo" class="drawer" aria-labelledby="drawer-title"><h3 id="drawer-title">Drill press</h3><p>Available for supervised use.</p><form method="dialog"><button>Close</button></form></dialog><noscript><p>Drill press: available for supervised use.</p></noscript>Table
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
| Item | Status |
|---|---|
| Drill press | Available |
Complete example markup
<div class="table-scroll" role="region" aria-label="Inventory" tabindex="0"><table><caption>Inventory</caption><thead><tr><th scope="col">Item</th><th scope="col">Status</th></tr></thead><tbody><tr><td>Drill press</td><td>Available</td></tr></tbody></table></div>Pagination
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
Complete example markup
<nav aria-label="Pagination"><span>1–24 of 248</span><button type="button" disabled>Previous</button><span>Page 1 of 11</span><button type="button" data-page-next>Next</button></nav>StatusPill
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
Complete example markup
<span class="pill">Available</span>EmptyState
One centred sentence naming the situation and next step. Keep filter focus; current message branch is role=status.
No items match your filters. Clear filters above to see all inventory.
Complete example markup
<div class="empty"><p>No items match your filters. Clear filters above to see all inventory.</p><button type="button" data-clear-filters>Clear filters</button></div>Toast
Required visible name, correct role and truthful current value/context. Enabled actions follow §8; no automatic announcement for static content.
Complete example markup
<button type="button" data-toast>Archive sample item</button><aside class="toast-list" aria-label="Notifications"></aside>Skeleton / Loader
Decorative still placeholder plus one named loading status. Product exposes aria-busy on the affected region.
Loading inventory…
Complete example markup
<section aria-label="Inventory loading" aria-busy="true"><p role="status">Loading inventory…</p><div class="placeholder" aria-hidden="true"></div><label for="upload-progress">Uploading evidence</label><progress id="upload-progress" max="100" value="40">40%</progress></section>