Skip to content

Accessibility

Every item on the stand is put through axe-core in a real browser, in the dark theme and in the light one, against WCAG 2.2 at A and AA and axe’s own best practices. The numbers below are that run. They are not typed here: the browser writes one file per item, the page is drawn from those files, and a gate holds the files to the stand - an item added without a report, an axe upgrade without a new run, or a fixed violation still listed as owed fails before anything is published. A page that claims a result the set no longer has is the one thing this report must not be.

What else holds the line. This run sees the examples as the stand draws them, closed. The unit tests put every primitive through axe as well, in every variant and open - a menu with its list showing, a dialog with its focus trapped - and drive the interactive ones by the keyboard. Colour contrast is also measured pair by pair - every ink on every ground it is promised on, for every accent of the line, in both themes and under more contrast (see Contrast) - the floor of a pointer target is a token at WCAG’s 24px, and every animation comes to rest for a reader who asked for less motion. The gates say what each one catches.

What no automated check sees. Whether a name makes sense when it is read aloud, whether the order a reader tabs in is the order the screen means, whether an error says what to do about it. axe marks some of these for a person - they are listed with each item - and the rest are what reading a screen with a screen reader is for.

123 items of the stand2 themes each47 rules applied13 WCAG criteria checked123 items with nothing owed

Run by axe 4.14.0 against wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa, best-practice.

The criteria checked

Each WCAG success criterion a rule that applied checks, and on how many items it applied.

CriterionRulesItems
1.1.1aria-meter-name aria-progressbar-name image-alt role-img-alt svg-img-alt15
1.3.1aria-required-children aria-required-parent definition-list dlitem list listitem td-headers-attr th-has-data-cells28
1.3.5autocomplete-valid7
1.4.1link-in-text-block2
1.4.3color-contrast123
1.4.12avoid-inline-spacing19
2.1.1scrollable-region-focusable4
2.1.3scrollable-region-focusable4
2.4.4link-name123
2.5.3label-content-name-mismatch10
2.5.8target-size123
3.3.2form-field-multiple-labels24
4.1.2aria-allowed-attr aria-conditional-attr aria-deprecated-role aria-hidden-focus aria-input-field-name aria-prohibited-attr aria-required-attr aria-roles aria-toggle-field-name aria-valid-attr aria-valid-attr-value button-name duplicate-id-aria label link-name nested-interactive123

Not yet passed

Nothing: every item passes every rule that applied to it, in both themes.

Rules about a page, off on the stand

  • landmark-unique - Two examples of a breadcrumb trail on one page are two landmarks with one name; a product shows one.
  • landmark-no-duplicate-main - An app shell and a sign-in screen are the page and bring its main; on the stand they sit inside the stand’s own.
  • landmark-main-is-top-level - For the same reason: the block’s main is the product’s top level, and the stand’s frame is around it.
  • heading-order - Where a heading sits in the outline is the page’s to say, and the stand’s headings are not a product’s.

Every item

ItemPassedLeft to a personOwed
about-plate10color-contrast
accordion19
action-bar17
activity-heatmap16
activity-legend4
activity-weeks4
alert10
app-shell17
avatar16
badge4
banner10
bar-chart16
big-calendar23
big-calendar-item8
breadcrumbs15
button16
calendar21
calendar-math4
checkbox18aria-toggle-field-name
chip17color-contrast
code-block17color-contrast
collapsible15
color-field19
column-resize-handle19
combobox21
command-palette7
commands21
confirm-dialog12
context-menu6
copy-button16
copyable18
date-picker15
date-range-picker15
dialog12
diff-lines4
diff-view17color-contrast
divider16
drawer12
duration-field13
empty-dashboard-screen26
empty-state7
error-boundary6
field24
field-draft14
file-drop13
filter-popover18
frame23
image14
inline-field13
input12
json-rows4
json-viewer19color-contrast
kbd5color-contrast
key-value6
layer12
line-chart17
line-scale4
list-detail-screen26
list-row19
login-screen23color-contrast
marked-text13color-contrast
menu13
nav-rail12
notification-bell15
number-field19
number-format4
page-header16
page-size16
pagination12label-content-name-mismatch
panel4
password-field17
popover12
preview-card5
product-mark15color-contrast
product-switcher13color-contrast
progress16
prose14
query-state12
radio-group18aria-toggle-field-name duplicate-id-aria
rating-scale17
relative-time4
reorderable-list6
save-state15
schema-check4
schema-fields24
schema-shape8
scroll-area19
search-field15
section-nav13
segmented-control18
select16
settings-screen21
shortcut13color-contrast
shortcuts-dialog6
skeleton5
skeleton-of6
slider17
sparkline15
spinner16
splash14color-contrast
splitter19
stat-tile7
status-dot16
stepper18color-contrast
switch18
table23color-contrast
table-sort4
tabs20
tag-input15
textarea7
tier19
time-field13
timeline18
toast6
tooltip12
track15
track-segments4
tree-rows5
tree-view20color-contrast duplicate-id-aria
truncate5
virtual-list18aria-required-children color-contrast
window-frame25color-contrast
wizard19