Decision reference


Take it one answer at a time
This page keeps every decision behind Accessible first in one place: 78 answers and what each one shaped. It's a reference, not a reading list. Most days you only need one answer.
Three easy ways in- Take a minute with Where it starts. It shows the few first answers the rest grow from.
- Open one section when you wonder why. For example, why Accessible first's spacing is spacious, or why its voice is plain and direct.
- Come in from a component page. Each one links here, to the answers that shaped it.
Everything else can wait until you need it.
- Question
- Answer
- Why, and what it came from
- Design values
- In the UI
Where it starts
The first answers lead to the rest. Each branch is an answer that follows from the one above it.
- Serves the public What does the product do for the business?
- Everyone, including people with disabilities Who uses it most?
- AAA What accessibility level do we commit to?
- Light and dark theming →
- One idea at a time How much is on one screen?
- Low effort to understand What must the interface protect?
- Calm and clear What should the brand feel like?
- Balanced color → color.neutral.0 color.gray.dark.0: #0A0A0A
- Slightly rounded shape → radius.control radius.6: 0.375rem
- Quiet How visible is the brand in the interface?
- Spacious spacing → space.gap.tight space.12: 0.75rem
- Calm and clear What should the brand feel like?
- Anywhere, on any device Where do people use it?
- Large typography → type.body.font-size font.size.19: 1.1875rem
- Moderate motion → motion.duration.feedback duration.moderate: 200ms
- Larger than the text iconography → size.icon size.20: 1.25rem
- Large accessibility → size.control.default size.52: 3.25rem
- Plain and direct voice and tone →
- Only when the meaning changes components →
- AAA What accessibility level do we commit to?
- Forms and tasks What is the main content?
- Complete a form What is the main task?
- Completion without errors Which outcome matters most?
- A task that fails What is a costly mistake?
- One sitting How long is one visit?
- Complete a form What is the main task?
- Rarely How often do people repeat actions?
- They see it fresh each time How do people recall the interface?
- Everyone, including people with disabilities Who uses it most?
- One How many brands or products share the system?
- A platform team Who maintains the system?
- Lowercase words in paths naming →
- Rarely How fast does it change?
Every question
All 78, by section, in the order every scheme answers them. Each answer shows why, what it came from, and every design decision it made. The menu in the sidebar opens a section; its number is how many decisions that section made.
Reasons
- Serves the public
- Why
A public service everyone must be able to use.
- Because of
Nothing before it. It's one of the first answers.
- What it decided (3)Answers it led to (3)
- Who uses it most? → Everyone, including people with disabilities
- What is the main content? → Forms and tasks
- How often do people repeat actions? → Rarely
- Why
- One
- Why
One service, one brand.
- Because of
Nothing before it. It's one of the first answers.
- What it decided (3)
- Why
- Everyone, including people with disabilities
- Why
Everyone, including people with low vision, motor and cognitive needs.
- Because of
- What does the product do for the business? → Serves the public
- What it decided (20)Answers it led to (18)
- What accessibility level do we commit to? → AAA
- How much is on one screen? → One idea at a time
- What must the interface protect? → Low effort to understand
- Where do people use it? → Anywhere, on any device
- Typography · How large is body text? → LargeTypography →
- Spacing · Which spacing roles does it need? → Gaps, insets and row heightsSpacing →
- Spacing · How many densities exist? → OneSpacing →
- Motion · What is motion for? → Feedback onlyMotion →
- Motion · How is easing defined? → Standard ease-outMotion →
- Motion · How fast does feedback feel? → ModerateMotion →
- Iconography · What icon style? → FilledIconography →
- Iconography · How big are icons next to text? → Larger than the textIconography →
- Accessibility · What is the smallest target? → LargeAccessibility →
- Voice and tone · How is the voice defined? → Rules and a word listVoice and tone →
- Voice and tone · How does it sound? → Plain and directVoice and tone →
- Components · Which component families does it need? → Actions, forms, feedback, overlays, layout and navigationComponents →
- Components · How does a component earn its place? → It works for everyone, with any device and assistive technologyComponents →
- Components · When does a component get another look? → Only when the meaning changesComponents →
Rules it sets (2)- For a number in a table, use type.body. Don't use a small or mono font. Every number must be readable at large size.Typography →
- When no component in the inventory fits, use a native HTML element with a label and a hint. Don't use a custom widget that needs hover, drag or precise pointing. Native elements work with every assistive technology without extra work.Components →
- Why
- AAA
- Why
AAA where it applies; nobody is left out.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What it decided (22)Answers it led to (10)
- Typography · How are sizes and line heights defined? → A ratio, line heights in proportionTypography →
- Color · How is the palette defined? → Neutrals and one brand rampColor →
- Elevation · What rises above the page? → NothingElevation →
- Elevation · What separates groups on the page? → LinesElevation →
- Theming · Which modes ship? → Light and darkTheming →
- Accessibility · Which states get their own visible value? → All, including loadingAccessibility →
- Accessibility · How many signals carry each meaning? → Three: color, icon and wordAccessibility →
- Accessibility · What contrast floor do we hold? → AAA for textAccessibility →
- Components · How far does the inventory reach? → Only what today's screens useComponents →
- Components · How does a component earn its place? → It works for everyone, with any device and assistive technologyComponents →
Rules it sets (3)- For a field label or column header, use type.label, above the field, always visible. Don't use a placeholder as the label. Labels must stay visible while typing.Typography →
- For a link, use color.text.link, underlined. Don't use color only. Underline works without color perception.Color →
- For keyboard focus, use button/focus-ring at border-width.focus, with an offset. Don't use a thin or faint outline. Focus must be seen by everyone.Accessibility →
Variants it picks (9)- Button's danger variant. The confirm of a delete, always with the verb and an icon, so color is never the only cue.Button →
- Button's focus state. Seen by everyone: the focus ring with an offset.Button →
- Button's disabled state isn't used. Keep it enabled and explain on press: nobody is left out, and nobody remembers the interface from last time.Button →
- Field's vertical orientation. Every question: the label above the field, always visible.Field →
- Field's horizontal orientation isn't used. Labels stay above the field, visible while typing and in the same place on any screen.Field →
- Input group's inline-start align. A currency sign before the amount, with the label still above the field.Input group →
- Input group's inline-end align. A unit after the value, as a word people can read, with the label still above the field.Input group →
- Input group's block-start align isn't used. The label stays above the field, outside it, always visible.Input group →
- Input group's block-end align isn't used. Hints and errors sit in the field layout, in the same place on every question.Input group →
- Why
- Forms and tasks
- Why
Most screens are forms and steps.
- Because of
- What does the product do for the business? → Serves the public
- What it decided (8)Answers it led to (8)
- What is the main task? → Complete a form
- Typography · Where does type do the most work? → Forms and labelsTypography →
- Spacing · Where does spacing matter most? → Between fieldsSpacing →
- Shape · Where does shape show most? → Controls and cardsShape →
- Accessibility · Where are the floors hardest to hold? → FormsAccessibility →
- Voice and tone · Which kinds of copy does it need? → Labels, messages and helpVoice and tone →
- Components · Which component families does it need? → Actions, forms, feedback, overlays, layout and navigationComponents →
- Components · Where do components do the most work? → Forms and stepsComponents →
- Why
- One idea at a time
- Why
One question per screen lowers effort.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- Why
- Complete a form
- Why
People must finish the form.
- Because of
- What is the main content? → Forms and tasks
- What it decided (7)Answers it led to (4)
- Which outcome matters most? → Completion without errors
- What is a costly mistake? → A task that fails
- How long is one visit? → One sitting
- Components · Where do components do the most work? → Forms and stepsComponents →
Rules it sets (1)- For a field label or column header, use type.label, above the field, always visible. Don't use a placeholder as the label. Labels must stay visible while typing.Typography →
Variants it picks (2)- Field's vertical orientation. Every question: the label above the field, always visible.Field →
- Input group's inline-start align. A currency sign before the amount, with the label still above the field.Input group →
- Why
- Rarely
- Why
People do this once or twice a year.
- Because of
- What does the product do for the business? → Serves the public
- What it decided (1)Answers it led to (1)
- How do people recall the interface? → They see it fresh each time
- Why
- Low effort to understand
- Why
Low effort to understand each step.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What it decided (15)Answers it led to (10)
- What should the brand feel like? → Calm and clear
- How visible is the brand in the interface? → Quiet
- Typography · Which text roles does it need? → Core: heading, body, labelTypography →
- Typography · How many steps does the type scale take? → Only the steps the screens needTypography →
- Color · Which color roles does it need? → Surface, text, action and statusColor →
- Color · How many emphasis levels do actions need? → TwoColor →
- Spacing · How are spacing steps defined? → Big, even stepsSpacing →
- Spacing · How dense is the layout? → SpaciousSpacing →
- Shape · Which shape roles does it need? → Controls, badges and containersShape →
- Voice and tone · How many tones does it use? → OneVoice and tone →
Rules it sets (3)- For a page title, use type.title. Don't use type.display. The same title size on every page tells people where they are. The display size changes from page to page and pushes the content down.Typography →
- For a paragraph or help text, use type.body, short sentences. Don't use type.caption. Large text and short lines lower effort.Typography →
- For a first visit, use say how many steps there are and how long it takes. Don't use marketing copy. Knowing the length lowers effort and anxiety.Voice →
- Why
- They see it fresh each time
- Why
Nobody remembers the interface from last time.
- Because of
- How often do people repeat actions? → Rarely
- What it decided (8)Answers it led to (1)
- Iconography · What do icons do? → Actions and statusIconography →
Rules it sets (2)- For an alternative or cancel, use button secondary. Don't use a text link. Every action looks like a button people can find.Color →
- For an action on one row or item, use button secondary with a word. Don't use an icon on its own. A word says what will happen.Iconography →
Variants it picks (5)- Button's secondary variant. Every other action, always with a word: alternatives, row actions, and the first step of a delete.Button →
- Button's ghost variant isn't used. Every action looks like a button people can find.Button →
- Button's disabled state isn't used. Keep it enabled and explain on press: nobody is left out, and nobody remembers the interface from last time.Button →
- Field's responsive orientation isn't used. One layout on every device, so people meet the same form every time.Field →
- Toggle's default variant isn't used. Every action looks like a control people can find, so the toggle keeps its border.Toggle →
- Why
- Completion without errors
- Why
Completion without errors is the measure.
- Because of
- What is the main task? → Complete a form
- What it decided (5)Answers it led to (2)
- Color · Where does color carry meaning first? → Links and actionsColor →
- Voice and tone · Where do the words matter most? → Form steps and errorsVoice and tone →
Rules it sets (1)- For a success message, use confirm what happened and what comes next. Don't use a confirmation with no next step. People need to know the task is finished and what happens now.Voice →
- Why
- A task that fails
- Why
A failed form can cost someone a benefit.
- Because of
- What is the main task? → Complete a form
- What it decided (8)Rules it sets (3)
- For an error message, use color.status.danger, an icon and a sentence next to the field. Don't use color alone. People must know what went wrong and where.Color →
- For a delete or remove, use button secondary, then a confirm page with Button danger. Don't use button primary. A confirm step prevents a costly error.Color →
- For a confirmation question, use say what will happen in plain words, and offer a way back. Don't use a double negative. Plain words prevent a choice people did not mean.Voice →
Variants it picks (5)- Button's secondary variant. Every other action, always with a word: alternatives, row actions, and the first step of a delete.Button →
- Button's danger variant. The confirm of a delete, always with the verb and an icon, so color is never the only cue.Button →
- Alert's destructive variant. Errors, with what went wrong, where, and exactly how to fix it, next to the field.Alert →
- Badge's warning tone. A risk people can still fix before they finish, with an icon and a word.Badge →
- Badge's danger tone. A failure that blocks the task, with a filled icon and a word; an alert says how to fix it.Badge →
- Why
- Calm and clear
- Why
Calm and clear, never clever.
- Because of
- What must the interface protect? → Low effort to understand
- What it decided (4)Answers it led to (4)
- Color · How saturated is the palette? → BalancedColor →
- Shape · What should control corners say? → Slightly roundedShape →
- Voice and tone · How does it sound? → Plain and directVoice and tone →
- Components · When does a component get another look? → Only when the meaning changesComponents →
- Why
- Quiet
- Why
The brand stays out of the way.
- Because of
- What must the interface protect? → Low effort to understand
- What it decided (1)Variants it picks (1)
- Empty's default variant isn't used. The brand stays out of the way: words say what will appear and how to start.Empty →
- Why
- Anywhere, on any device
- Why
Public services are used on any device, with any assistive technology.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What it decided (1)Variants it picks (1)
- Field's responsive orientation isn't used. One layout on every device, so people meet the same form every time.Field →
- Why
- One sitting
- Why
An application is finished in one sitting, or saved and resumed.
- Because of
- What is the main task? → Complete a form
- What it decided (2)Rules it sets (1)
- For a first visit, use say how many steps there are and how long it takes. Don't use marketing copy. Knowing the length lowers effort and anxiety.Voice →
Variants it picks (1)- Badge's neutral tone. A waiting state, such as an application saved to resume later, with an icon and a word.Badge →
- Why
- A platform team
- Why
A platform team serves many services.
- Because of
Nothing before it. It's one of the first answers.
- What it decided (2)
- Why
- Rarely
- Why
Changes are rare and tested.
- Because of
Nothing before it. It's one of the first answers.
- What it decided (4)Answers it led to (4)
- Naming · What gets a name? → Tokens and component keysNaming →
- Naming · How many token tiers? → ThreeNaming →
- Naming · What do components read? → Component keysNaming →
- Components · How far does the inventory reach? → Only what today's screens useComponents →
- Why
Scopes
- Core: heading, body, label
- Why
Few roles keep pages predictable.
- Because of
- What must the interface protect? → Low effort to understand
- What it decided
It sets the values of the typography tokens: Typography →
- Why
- Only the steps the screens need
- Why
Only the sizes the screens need, each clearly different.
- Because of
- What must the interface protect? → Low effort to understand
- What it decided
It sets the values of the typography tokens: Typography →
- Why
- A ratio, line heights in proportion
- Why
Line height grows with text size for zoom users.
- Because of
- What accessibility level do we commit to? → AAA
- What it decided
It sets the values of the typography tokens: Typography →
- Why
- Large
- Why
Large text is readable for more people.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What it decided
It sets the values of the typography tokens: Typography →
- Why
- Forms and labels
- Why
Type matters most in form labels and hints.
- Because of
- What is the main content? → Forms and tasks
- What it decided
It sets the values of the typography tokens: Typography →
- Why
- Surface, text, action and status
- Why
Few color roles, each with one clear meaning.
- Because of
- What must the interface protect? → Low effort to understand
- What it decided
It sets the values of the color tokens: Color →
- Why
- Two
- Why
Primary and secondary only; fewer choices, fewer errors.
- Because of
- What must the interface protect? → Low effort to understand
- What it decided (2)Rules it sets (1)
- For the action that completes the task, use button primary, one per page. Don't use two primaries. One clear next step. Two primaries make people stop and compare, which adds effort.Color →
Variants it picks (1)- Button's primary variant. The one next step on a page.Button →
- Why
- Neutrals and one brand ramp
- Why
True neutrals and one strong blue, checked for contrast.
- Because of
- What accessibility level do we commit to? → AAA
- What it decided
It sets the values of the color tokens: Color →
- Why
- Balanced
- Why
Strong but not loud color.
- Because of
- What should the brand feel like? → Calm and clear
- What it decided
It sets the values of the color tokens: Color →
- Why
- Links and actions
- Why
Links and actions must be found by everyone.
- Because of
- Which outcome matters most? → Completion without errors
- What it decided
It sets the values of the color tokens: Color →
- Why
- Gaps, insets and row heights
- Why
Large rows matter for touch and zoom.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What it decided
It sets the values of the spacing tokens: Spacing →
- Why
- One
- Why
One density; no compact mode to fail people.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What it decided (1)Variants it picks (1)
- Item's sm size isn't used. Large targets help people with motor needs; nothing smaller.Item →
- Why
- Big, even steps
- Why
Big, even steps lower effort.
- Because of
- What must the interface protect? → Low effort to understand
- What it decided
It sets the values of the spacing tokens: Spacing →
- Why
- Spacious
- Why
Space lowers effort and mis-taps.
- Because of
- What must the interface protect? → Low effort to understand
- What it decided (1)Rules it sets (1)
- For items that belong together, use space.gap.default. Don't use space.gap.tight. Generous space lowers mis-taps.Spacing →
- Why
- Between fields
- Why
Space between fields prevents mis-taps.
- Because of
- What is the main content? → Forms and tasks
- What it decided
It sets the values of the spacing tokens: Spacing →
- Why
- Controls, badges and containers
- Why
Badges keep a clear rectangle.
- Because of
- What must the interface protect? → Low effort to understand
- What it decided (2)Answers it led to (1)
- Shape · How many corner sizes exist? → ThreeShape →
Rules it sets (1)- For the shape of a status badge, use radius.badge (rectangle). Don't use a pill. Clear shapes with a word inside.Shape →
- Why
- Three
- Why
Control, badge and container corners differ.
- Because of
- Shape · Which shape roles does it need? → Controls, badges and containers
- What it decided
It sets the values of the shape tokens: Shape →
- Why
- Fixed for the product
- Why
One brand, one set of corners.
- Because of
- How many brands or products share the system? → One
- What it decided
It sets the values of the shape tokens: Shape →
- Why
- Slightly rounded
- Why
Clear, slightly rounded controls.
- Because of
- What should the brand feel like? → Calm and clear
- What it decided (1)Rules it sets (1)
- For the corners of buttons and inputs, use radius.control. Don't use a pill. Clear rectangles read as fields and buttons.Shape →
- Why
- Controls and cards
- Why
Corners show on controls and step cards.
- Because of
- What is the main content? → Forms and tasks
- What it decided
It sets the values of the shape tokens: Shape →
- Why
- Nothing
- Why
Flat is easier to read at high zoom.
- Because of
- What accessibility level do we commit to? → AAA
- What it decided (4)Answers it led to (3)
- Elevation · How many shadow levels exist? → NoneElevation →
- Elevation · How soft are shadows? → No shadowsElevation →
- Elevation · Where does elevation show? → Dialogs onlyElevation →
Rules it sets (1)- For a card on the page, use a strong border, no shadow. Don't use a shadow. Shadows are hard to see; borders are not.Elevation →
- Why
- None
- Why
No shadows.
- Because of
- Elevation · What rises above the page? → Nothing
- What it decided
It sets the values of the elevation tokens: Elevation →
- Why
- Lines
- Why
Strong borders separate groups at any zoom.
- Because of
- What accessibility level do we commit to? → AAA
- What it decided (5)Rules it sets (1)
- Between page sections, use space.gap.section. Don't use a thin line. Space is easy to see; thin lines are not.Spacing →
Variants it picks (4)- Item's default variant isn't used. A row with no border is hard to see at high zoom; borders do the work.Item →
- Item's outline variant. Each saved application, with a strong border that separates it at any zoom.Item →
- Toggle's default variant isn't used. Every action looks like a control people can find, so the toggle keeps its border.Toggle →
- Toggle's outline variant. Every toggle, with a strong border and a word, so it reads as a control at any zoom.Toggle →
- Why
- No shadows
- Why
No shadows; borders do the work.
- Because of
- Elevation · What rises above the page? → Nothing
- What it decided (2)
- Why
- Dialogs only
- Why
Only dialogs separate, with a dimmed page and a border.
- Because of
- Elevation · What rises above the page? → Nothing
- What it decided (1)Rules it sets (1)
- For a menu or dialog, use a strong border and a dimmed page. Don't use a shadow only. The dimmed page makes the dialog obvious.Elevation →
- Why
- Feedback only
- Why
Motion only confirms an action.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What it decided (3)Answers it led to (2)Rules it sets (1)
- When someone asks for less motion, use no motion. Don't use reduced motion. A shorter motion still moves. When people ask for less motion, nothing moves.Motion →
- Why
- One
- Why
One speed.
- Because of
- Motion · What is motion for? → Feedback only
- What it decided
It sets the values of the motion tokens: Motion →
- Why
- Standard ease-out
- Why
A standard ease-out is easy to follow.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What it decided
It sets the values of the motion tokens: Motion →
- Why
- Moderate
- Why
Moderate speed is easy to follow.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What it decided (2)Rules it sets (1)
- For hover and press feedback, use motion.duration.feedback (moderate). Don't use fast flicker. Moderate speed is easy to follow.Motion →
Variants it picks (1)- Button's hover state. Moderate feedback that is easy to follow.Button →
- Why
- State changes only
- Why
Only state changes move.
- Because of
- Motion · What is motion for? → Feedback only
- What it decided
It sets the values of the motion tokens: Motion →
- Why
- Actions and status
- Why
Icons support words; they never replace them.
- Because of
- How do people recall the interface? → They see it fresh each time
- What it decided (4)Rules it sets (1)
- For an icon with no label, use not used: always add a word. Don't use an icon button. Icons alone are guesswork.Iconography →
Variants it picks (3)- Button's icon size isn't used. Icons alone are guesswork: always add a word.Button →
- Input group's inline-end align. A unit after the value, as a word people can read, with the label still above the field.Input group →
- Toggle's outline variant. Every toggle, with a strong border and a word, so it reads as a control at any zoom.Toggle →
- Why
- One
- Why
One size, larger than the text.
- Because of
- Iconography · How big are icons next to text? → Larger than the text
- What it decided
It sets the values of the iconography tokens: Iconography →
- Why
- Filled
- Why
Filled icons stay visible at low vision.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What it decided (1)Variants it picks (1)
- Empty's icon variant. A filled icon in a tile, beside words that say what will appear here and how to start.Empty →
- Why
- Larger than the text
- Why
Larger icons are easier to see.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What it decided (1)Answers it led to (1)
- Iconography · How many icon sizes exist? → OneIconography →
- Why
- Status and messages
- Why
Icons work hardest beside status words and errors.
- Because of
- Accessibility · How many signals carry each meaning? → Three: color, icon and word
- What it decided
It sets the values of the iconography tokens: Iconography →
- Why
- Mode only
- Why
One brand, so only the mode changes.
- Because of
- How many brands or products share the system? → One
- What it decided (1)Answers it led to (1)
- Theming · What changes when the theme changes? → Colors onlyTheming →
- Why
- Two
- Why
Light and dark.
- Because of
- Theming · Which modes ship? → Light and dark
- What it decided
It sets the values of the theming tokens: Theming →
- Why
- One brand
- Why
One service, one brand.
- Because of
- How many brands or products share the system? → One
- What it decided
It sets the values of the theming tokens: Theming →
- Why
- Light and dark
- Why
Light and dark ship as standard; both hold AAA text.
- Because of
- What accessibility level do we commit to? → AAA
- What it decided (2)Answers it led to (1)
- Theming · How many themes ship? → TwoTheming →
Rules it sets (1)- When someone switches to dark, use the dark semantic mode, or high contrast. Don't use one mode only. People pick the mode they can read.Theming →
- Why
- Colors only
- Why
Only colors change.
- Because of
- Theming · What can a theme change? → Mode only
- What it decided
It sets the values of the theming tokens: Theming →
- Why
- All, including loading
- Why
Every state, including loading, gets its own value.
- Because of
- What accessibility level do we commit to? → AAA
- What it decided
It sets the values of the accessibility tokens: Accessibility →
- Why
- Three: color, icon and word
- Why
Never color alone.
- Because of
- What accessibility level do we commit to? → AAA
- What it decided (10)Answers it led to (1)
- Iconography · Where do icons work hardest? → Status and messagesIconography →
Rules it sets (3)- For a selected row or item, use color.surface.selected and a check icon. Don't use color alone. Selection never relies on color alone.Color →
- For an error message, use color.status.danger, an icon and a sentence next to the field. Don't use color alone. People must know what went wrong and where.Color →
- For a status, use badge with an icon and a word. Don't use color alone. Status must survive no color and a screen reader.Color →
Variants it picks (6)- Alert's destructive variant. Errors, with what went wrong, where, and exactly how to fix it, next to the field.Alert →
- Badge's neutral tone. A waiting state, such as an application saved to resume later, with an icon and a word.Badge →
- Badge's success tone. A finished task, with a filled icon and a word.Badge →
- Badge's warning tone. A risk people can still fix before they finish, with an icon and a word.Badge →
- Badge's danger tone. A failure that blocks the task, with a filled icon and a word; an alert says how to fix it.Badge →
- Item's muted variant isn't used. A fill alone marks a row by color; status goes in a badge with an icon and a word.Item →
- Why
- AAA for text
- Why
AAA contrast for text.
- Because of
- What accessibility level do we commit to? → AAA
- What it decided (1)Rules it sets (1)
- For a value with no token, use the closest semantic token, then ask for a new one. Don't use a raw value in the component. A raw value skips the contrast checks every token passed.Naming →
- Why
- Large
- Why
Large targets for tremor and touch.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What it decided (10)Rules it sets (2)
- For a table row height, use size.row (large). Don't use a compact row. Large rows are easy to read and tap.Spacing →
- For the smallest clickable thing, use size.control.default (large). Don't use touch-minimum size. Large targets help people with motor needs.Accessibility →
Variants it picks (8)- Button's default size. Every button. Large targets help people with motor needs.Button →
- Button's compact size isn't used. Large targets help people with motor needs; nothing smaller.Button →
- Button's large size isn't used. The default size is already large for motor needs; a bigger one adds nothing.Button →
- Item's default size. Every row. Large targets help people with motor needs.Item →
- Item's sm size isn't used. Large targets help people with motor needs; nothing smaller.Item →
- Toggle's default size. Every toggle. Large targets help people with motor needs.Toggle →
- Toggle's sm size isn't used. Large targets help people with motor needs; nothing smaller.Toggle →
- Toggle's lg size isn't used. The default size is already large for motor needs; a bigger one adds nothing.Toggle →
- Why
- Forms
- Why
Forms are where people are blocked.
- Because of
- What is the main content? → Forms and tasks
- What it decided
It sets the values of the accessibility tokens: Accessibility →
- Why
- Tokens and component keys
- Why
Components get their own keys.
- Because of
- How fast does it change? → Rarely
- What it decided
It sets the values of the naming tokens: Naming →
- Why
- Three
- Why
Primitives, semantics and component keys.
- Because of
- How fast does it change? → Rarely
- What it decided
It sets the values of the naming tokens: Naming →
- Why
- By role
- Why
Role names survive a redesign.
- Because of
- Who maintains the system? → A platform team
- What it decided
It sets the values of the naming tokens: Naming →
- Why
- Lowercase words in paths
- Why
Lowercase paths read the same everywhere.
- Because of
- Who maintains the system? → A platform team
- What it decided
It sets the values of the naming tokens: Naming →
- Why
- Component keys
- Why
A component API keeps changes local.
- Because of
- How fast does it change? → Rarely
- What it decided (1)Rules it sets (1)
- For a value with no token, use the closest semantic token, then ask for a new one. Don't use a raw value in the component. A raw value skips the contrast checks every token passed.Naming →
- Why
- Labels, messages and help
- Why
Hints and help text carry people through each step.
- Because of
- What is the main content? → Forms and tasks
- What it decided (1)Variants it picks (1)
- Input group's block-end align isn't used. Hints and errors sit in the field layout, in the same place on every question.Input group →
- Why
- One
- Why
One plain tone everywhere; no surprises.
- Because of
- What must the interface protect? → Low effort to understand
- What it decided
It sets the values of the voice and tone tokens: Voice and tone →
- Why
- Rules and a word list
- Why
A word list of common words, with terms to avoid.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What it decided (1)Rules it sets (1)
- For a button label, use a common verb that says what happens next. Don't use "Submit" or "Proceed". Common words are understood by the most people.Voice →
- Why
- Plain and direct
- Why
Every sentence is easy to read on the first try.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What should the brand feel like? → Calm and clear
- What it decided (7)Rules it sets (5)
- For a button label, use a common verb that says what happens next. Don't use "Submit" or "Proceed". Common words are understood by the most people.Voice →
- For the words of an error, use say what is wrong, where, and exactly how to fix it. Don't use "Invalid input". People must be able to fix the error without help.Voice →
- For a success message, use confirm what happened and what comes next. Don't use a confirmation with no next step. People need to know the task is finished and what happens now.Voice →
- For an empty state, use explain what will appear here and how to start. Don't use a blank page. A blank page leaves people unsure if something failed.Voice →
- For a confirmation question, use say what will happen in plain words, and offer a way back. Don't use a double negative. Plain words prevent a choice people did not mean.Voice →
- Why
- Form steps and errors
- Why
Words decide whether a form gets finished.
- Because of
- Which outcome matters most? → Completion without errors
- What it decided (1)Rules it sets (1)
- For the words of an error, use say what is wrong, where, and exactly how to fix it. Don't use "Invalid input". People must be able to fix the error without help.Voice →
- Why
- Actions, forms, feedback, overlays, layout and navigation
- Why
Forms, steps and feedback are all a public service needs.
- Because of
- What is the main content? → Forms and tasks
- Who uses it most? → Everyone, including people with disabilities
- What it decided
It sets the values of the components tokens: Components →
- Why
- Only what today's screens use
- Why
Only the parts in use, each tested with assistive technology.
- Because of
- What accessibility level do we commit to? → AAA
- How fast does it change? → Rarely
- What it decided
It sets the values of the components tokens: Components →
- Why
- It works for everyone, with any device and assistive technology
- Why
A component joins only when it works with any device and assistive technology.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What accessibility level do we commit to? → AAA
- What it decided (1)Rules it sets (1)
- When no component in the inventory fits, use a native HTML element with a label and a hint. Don't use a custom widget that needs hover, drag or precise pointing. Native elements work with every assistive technology without extra work.Components →
- Why
- Only when the meaning changes
- Why
One clear way to do each thing.
- Because of
- Who uses it most? → Everyone, including people with disabilities
- What should the brand feel like? → Calm and clear
- What it decided (1)Variants it picks (1)
- Badge's info tone isn't used. Neutral covers news with nothing to do: one clear way to do each thing.Badge →
- Why
- Forms and steps
- Why
Components do their work in forms and steps.
- Because of
- What is the main content? → Forms and tasks
- What is the main task? → Complete a form
- What it decided
It sets the values of the components tokens: Components →
- Why