Design system
Docs
Surfaces

Toasts and notices

Where a message goes when it is not part of a form or a transcript

HostImplementationNote
Primitive@nyte-ai/ui/sonner
Desktopcomponents/toaster.tsx
Terminalshell.ts notice()the Ephemeral slot under the composer (later pass)

Decision table

The message is…UseExample
An outcome of something the user just did, in placeInline role="status" / role="alert" textSaved / Unsaved changes in the file editor
An outcome of something in the backgroundtoast(...)Couldn't open folder
A question the run is waiting onInline cardConsent
A question nothing can proceed withoutAlert dialogDelete chat?, Do you trust this folder?
A count or state the user watchesLive region, one stable nodePalette result count, customize inventory count

Live regions

  • One node, mounted for the life of the surface. Replacing the node re-announces from scratch.
  • role="status" for progress and success; role="alert" for failure.
  • aria-busy on the container while a request is in flight.
  • srOnly text where the visual state is color or motion only (tool calls).

Toasts

Configuration and rules are on the Toaster page. In short: give a repeatable toast an id, keep titles short, and let a failure that blocks the user stay until dismissed (duration: Infinity).

Session state

Session rows and palette results show state through StatusDot, a labelled role="img": Idle, Running, Needs attention, Retrying, Failed. See Button and focus › StatusDot.