Learning Design Systems Course index

Lesson 0003 · 10 minutes

Components Have States

A component is not a screenshot. It is a small product contract across states, inputs, permissions, and failure modes.

The tangible win

After this lesson, you should be able to review a component and ask for the missing states before it becomes production debt.

Static UI asks: “How does it look?” System UI asks: “What are all the valid states, and what does each state mean?”

Why states matter

Material Design documents interaction states such as enabled, disabled, hovered, focused, and pressed (Material states). This matters because users do not experience components as still images. They experience them while deciding, typing, waiting, making mistakes, and recovering.

A button that only has a “normal” design is like an API that only specifies the success response.

Backend analogy: success-only APIs are incomplete

If you shipped an endpoint with only 200 OK documented, another engineer would ask:

Components need the same discipline. The visible part is just the response body. The state model is the contract.

The state matrix

State familyProduct questionExample
AvailabilityCan the user use it now?Enabled, disabled, loading.
InteractionWhat feedback confirms the user’s action?Hover, focus, pressed.
ValidationWhat mistake or success needs explanation?Error, warning, success.
PermissionIs the action blocked, hidden, or explainable?Read-only, upgrade required.
AsyncWhat happens while the system works?Submitting, retrying, optimistic.

Accessibility is part of state

Some states must be exposed semantically, not just visually. The W3C button pattern notes that toggle buttons use aria-pressed to communicate pressed state to assistive technologies (WAI-ARIA Button Pattern).

<button aria-pressed="false">Mute</button>
<button aria-pressed="true">Mute</button>

If the state only changes color, some users and tools may not receive the contract.

Practice: review the component

Scenario: A product designer gives you a button spec with default, hover, and disabled. The button submits a payment. What is the best next question?

Your review checklist

Before accepting a component, ask:

  1. What are the valid states?
  2. What triggers each state?
  3. What can the user do next?
  4. How is the state communicated visually and semantically?
  5. Which states are forbidden or should never occur?

Read next

Primary source: read Material’s States page. Focus on enabled, disabled, hovered, focused, and pressed. Then skim GOV.UK’s Button page to see how practical usage guidance complements visual states.

Ask me if you want a real component teardown. We can inspect a button, input, modal, or table and build its state matrix.