# Button API

> Auto-generated API reference for `Button` from @vuetify/v0 (Vuetify0).
> Source of truth: https://0.vuetifyjs.com/api/button

## Related

- https://0.vuetifyjs.com/components/actions/button
- https://0.vuetifyjs.com/composables/selection/create-selection
- https://0.vuetifyjs.com/components/providers/single
- https://0.vuetifyjs.com/components/primitives/atom

## Button.Root

### Props

| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| `disabled` | `boolean \| undefined` | `false` | no | Disables the button — fully non-interactive, removed from tab order |
| `readonly` | `boolean \| undefined` | — | no | Non-clickable but looks normal, remains focusable/hoverable |
| `passive` | `boolean \| undefined` | `false` | no | Non-clickable, looks disabled via [data-passive], remains focusable/hoverable |
| `loading` | `boolean \| undefined` | `false` | no | Triggers loading state with grace period before visual indicator |
| `grace` | `number \| undefined` | `0` | no | Duration in ms before loading UI appears (0 to show immediately) |
| `value` | `V \| undefined` | — | no | Value for use inside Button.Group |
| `namespace` | `string \| undefined` | `"v0:button:root"` | no | Namespace for context provision to children |
| `groupNamespace` | `string \| undefined` | `"v0:button:group"` | no | Namespace for connecting to parent Button.Group |
| `name` | `string \| undefined` | — | no | Form field name — auto-renders HiddenInput when set |
| `form` | `string \| undefined` | — | no | Associate with form by ID |
| `ariaLabel` | `string \| undefined` | — | no | Accessible label for the button |

### Slots

| Name | Type | Description |
|---|---|---|
| `default` | `ButtonRootSlotProps` | — |

## Button.Content

### Props

| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| `id` | `any` | `useId()` | no | Unique identifier for ticket registration |
| `namespace` | `string \| undefined` | `"v0:button:root"` | no | Namespace for context injection from parent Button.Root |

### Slots

| Name | Type | Description |
|---|---|---|
| `default` | `ButtonContentSlotProps` | — |

## Button.Group

### Props

| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| `namespace` | `string \| undefined` | `"v0:button:group"` | no | Namespace for dependency injection |
| `disabled` | `boolean \| undefined` | `false` | no | Disables the entire button group |
| `multiple` | `boolean \| undefined` | `false` | no | Single (default) or multi-select |
| `mandatory` | `boolean \| "force" \| undefined` | `false` | no | Controls mandatory selection behavior: - false (default): No mandatory enforcement - true: Prevents deselecting the last selected item - `force`: Automatically selects the first non-disabled item on registration |
| `label` | `string \| undefined` | — | no | Accessible name for the group |
| `ariaLabelledby` | `string \| undefined` | — | no | ID of element that labels this group |
| `ariaDescribedby` | `string \| undefined` | — | no | ID of element that describes this group |
| `modelValue` | `T \| T[] \| undefined` | — | no | — |

### Events

| Name | Type | Description |
|---|---|---|
| `update:model-value` | `[value: T \| T[]]` | — |

### Slots

| Name | Type | Description |
|---|---|---|
| `default` | `ButtonGroupSlotProps` | — |

## Button.HiddenInput

### Props

| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| `namespace` | `string \| undefined` | `"v0:button:root"` | no | Namespace for context injection from parent Button.Root |
| `name` | `string \| undefined` | — | no | Form field name |
| `value` | `string \| undefined` | — | no | Submitted value (defaults to 'on') |
| `form` | `string \| undefined` | — | no | Associate with form by ID |

## Button.Icon

### Props

| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| `namespace` | `string \| undefined` | `"v0:button:root"` | no | Namespace for context injection from parent Button.Root |

### Slots

| Name | Type | Description |
|---|---|---|
| `default` | `ButtonIconSlotProps` | — |

## Button.Loading

### Props

| Name | Type | Default | Required | Description |
|---|---|---|---|---|
| `id` | `any` | `useId()` | no | Unique identifier for ticket registration |
| `namespace` | `string \| undefined` | `"v0:button:root"` | no | Namespace for context injection from parent Button.Root |

### Slots

| Name | Type | Description |
|---|---|---|
| `default` | `ButtonLoadingSlotProps` | — |
