1 viewer
Component · Input
Button
Accessible action primitive.
- Category
- Input
- Slots
- 1
- States
- 3
- Writer
- Shared
Preview
<Row gap="12px">
<Button intent="primary" label="Primary Action" />
<Button intent="secondary" label="Secondary Action" />
<Button intent="ghost" label="Ghost Action" />
<Button intent="danger" label="Destructive" />
<Button disabled={true} label="Disabled" />
</Row>Variants
Anatomy
The named parts of the rendered markup. Recipes style these hooks, and every renderer keeps them stable.
| Slot | DOM class |
|---|---|
| root | .primitive-button |
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-form-control | ready |
| terminal | terminal-action | planned |
| native | native-adapter | experimental |
Accessibility
Uses native button semantics by default.
- Disabled and pressed states must be exposed semantically.
- Loading buttons stay inert and expose a busy state without requiring recipe-only affordances.