---
url: "https://vueda.dev/v3/reference/api/vue/Button.md"
title: "Button"
---

# Button

## Overview

A button control built on Reka UI's Primitive. Its look resolves on two axes,
`tone` (color) and `emphasis` (structure). A bare button rests at neutral fill;
the primary fill is opt-in with `tone="primary"`. Size styles also resolve via
the theme system.

Theme entry: [Button](/v3/reference/theming/keys/Button.md)

## Props

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="prop-themeOverride">themeOverride</span> | `Object` |  | `null` | A partial ThemeObject keyed by component name, merged over this component's theme and provided to descendants. |
| <span id="prop-tone">tone</span> | `string` |  | `undefined` | Color axis. |
| <span id="prop-emphasis">emphasis</span> | `string` |  | `undefined` | Structure axis. |
| <span id="prop-size">size</span> | `string` |  | `undefined` | Size axis. |
| <span id="prop-class">class</span> | `import('vue').HTMLAttributes['class']` |  | `undefined` | Additional CSS classes to apply to the root element. |
| <span id="prop-as">as</span> | `string\|object` |  | `"button"` | The element or component to render as. |
| <span id="prop-asChild">asChild</span> | `boolean` |  | `false` | When true, merges props onto the child element instead of rendering a wrapper. |

## Slots

### `default` {#slot-default}

Slot.

## Source

`client/lib/controls/button/Button.vue`
