1 viewer
Component · Feedback
EmptyState
What a list, table or page shows when it has nothing yet: a short title, an optional explanation, and optional next actions as children.
- Category
- Feedback
- Slots
- 4
- States
- 2
- Writer
- Shared
Preview
<EmptyState body="Orders appear here once a buyer checks out." title="No orders yet" > <Action href="/view/shops" label="Open storefront" /> </EmptyState>
Anatomy
The named parts of the rendered markup. Recipes style these hooks, and every renderer keeps them stable.
| Slot | DOM class |
|---|---|
| root | .primitive-empty-state |
| title | .primitive-empty-state__title |
| body | .primitive-empty-state__body |
| actions | .primitive-empty-state__actions |
- Modifier
- primitive-empty-state--{intent}
- State attribute
- data-intentfrom the intent prop
States and platforms
The states the contract publishes, the platforms it declares, and the style recipes that dress it.
States
Platforms
Recipes
Renderers
Every tag in the example above renders through a shared writer.
Declared adapters. A status is the manifest's declaration, not a measured parity result.
| Target | Renderer | Status |
|---|---|---|
| web | react | experimental |
| runtime-node | view-node | ready |
| ssr | html-semantic | ready |
| terminal | terminal-text | planned |
Accessibility
Plain text in document flow; not a live region and not a heading.
- The title is a paragraph, so an empty state never adds a heading level to the outline.
- The error intent is carried by its words as well as its color.
- Action children are real links or buttons, reachable in reading order after the text.