Alert

A persistent inline message about the state of the thing it sits beside — a page, a form, a section. It stays until the condition it reports changes. The boundary against Toast is placement and lifetime: an alert sits in the flow next to its subject and persists, a toast floats above the page and leaves. The emphasis tiers follow that split — the subtle tint belongs to the alert, the solid fill to the toast — so the two never share a surface.

Against Dialog the test is simpler still: an alert reports, a dialog demands. If the reader cannot continue without answering, it is not an alert.

Variants

Neutral is the unmarked base — the only variant with a visible border, since it sits on a page surface with no tint to define its edge, and the only one without an icon: the canonical glyphs map 1:1 to the status variants, and a neutral alert wearing i-info would be the info variant in all but tint. The four status variants are shaped by their own fill and set the border transparent. Each arrives as a bg + text pair from the status roles and is consumed whole.

ExampleModifierRolesUsage

Draft saved locally.

surface.pageborder.subtleAmbient state with no status meaning — no icon, no claim

Domain verified.

--successstatus.success.bgstatus.success.textA condition that resolved and still holds

Your plan expires in three days.

--warningstatus.warning.bgstatus.warning.textReversible caution — still working, not for long
--errorstatus.error.bgstatus.error.textA failure the reader has to act on

Two-factor sign-in is available.

--infostatus.info.bgstatus.info.textNeutral information worth stating in place

In place

Placement is most of what an alert is. It belongs directly above the thing it describes, inside the same column, so the reader meets the condition before the controls it affects — a form alert above the fields, a section alert at the top of the content. An alert parked away from its subject is furniture.

Alert · In place

Payment method

A settings panel: the alert sits under the panel's heading, at the head of the form it concerns and at the panel's own width, and stays until the save succeeds. It reports the failure and names the next step — a message that only said “something went wrong” would leave the reader with nowhere to go. The title earns its place here because the body runs past a sentence; a one-line alert is a body alone, as in the variants above.

Usage notes

An alert describes a condition, so it lives and dies with it.

VerdictRule
DoUse an alert for a condition that persists, a toast for something that passes, and a dialog for something the user must answer.
DoPlace it next to what it describes — a form alert above the fields it concerns, a page alert at the top of the content column. An alert floating away from its subject is furniture.
DoGive error alerts role="alert" so they are announced immediately; everything else takes role="status", which waits for a pause.
DoSay what to do, not only what happened. An error alert that names no next step leaves the reader stuck.
Don’tAdd a dismiss control. If the condition has cleared, remove the alert; if it has not, hiding it hides a state that is still true.
Don’tStack alerts. Two at once means neither is read — combine them, or fix the ordering so only the live condition shows.