Button
Start actions with consistent emphasis, sizing, and loading states.
Preview
Example
<.button color={:primary}>Save changes</.button>
API contract
button/1 uses declared Phoenix attributes and slots. This table is generated from the compiled component metadata.
| Attribute | Type | Required | Default | Accepted values |
|---|---|---|---|---|
type |
:string |
No | "button" |
["button", "submit", "reset"] |
color |
:atom |
No | nil |
[nil, :neutral, :primary, :secondary, :accent, :info, :success, :warning, :error] |
variant |
:atom |
No | nil |
[nil, :outline, :dash, :soft, :ghost, :link] |
size |
:atom |
No | nil |
[:xs, :sm, :md, :lg, :xl, nil] |
shape |
:atom |
No | nil |
[nil, :wide, :block, :square, :circle] |
loading |
:boolean |
No | false |
Any value matching the declared type |
disabled |
:boolean |
No | false |
Any value matching the declared type |
class |
:any |
No | nil |
Any value matching the declared type |
rest |
:global |
No | — |
global includes ["form", "name", "value", "phx-click", "phx-disable-with"] |
| Slot | Required | Slot attributes |
|---|---|---|
leading |
No | No slot attributes |
inner_block |
Yes | No slot attributes |
trailing |
No | No slot attributes |
States and behavior
Current, disabled, loading, or active state is exposed where the component supports it.
Keyboard and accessibility
Actions and destinations remain native buttons or links and retain standard Enter, Space, and focus behavior.