Button
Buttons let people trigger primary, secondary, or low-emphasis actions with Material 3 visual treatments.
Action components convert title into the library tooltip. See Action Tooltips for the shared behavior.
text is the safe default when an action's hierarchy is not known. Use filled only for the single primary, flow-completing action in a surface or action group. Use outlined for important secondary actions and tonal when they need more emphasis than an outline.
Anatomy
| Element | Part | Selector |
|---|---|---|
<component> | root | [data-scope="button"][data-part="root"]LMBCopy |
<span> | leadingconditional | [data-scope="button"][data-part="leading"]LMBCopy |
<span> | trailingconditional | [data-scope="button"][data-part="trailing"]LMBCopy |
Props
| Name | Description | Default | Control |
|---|---|---|---|
toggleableOptional | Whether the button is toggleable (like a checkbox). When true, the button must contain an input element of type checkbox or radio. boolean | undefined | undefined | |
variantOptional | The visual emphasis of the button. textoutlinedtonalfilledelevated | - | |
sizeOptional | The size of the button. smalllargeextra-smallmediumextra-large | - | |
shapeOptional | The shape of the button. roundedsquare | - | |
pressShapeMorphOptional | Whether pressed-state shape morphing is enabled. boolean | undefined | undefined | |
hrefOptional | The href attribute. If provided, the button will be rendered as an anchor element. string | undefined | - | |
leadingIconOptional | Name of the leading icon. string | undefined | - | |
trailingIconOptional | Name of the trailing icon. string | undefined | - | |
disabledOptional | Whether the button is disabled. boolean | undefined | undefined |
Events0
No events documented.
Slots3
| Name | Parameters | Description |
|---|---|---|
leading | - | Slot for leading content, such as an icon. Receives `disabled` as a prop. Will not be used if `leadingIcon` prop is set. |
default | - | Default slot for the main content of the button. Receives `disabled` as a prop. |
trailing | - | Slot for trailing content, such as an icon. Receives `disabled` as a prop. Will not be used if `trailingIcon` prop is set. |
Styling123
| Token | Description |
|---|---|
--md-button-container-colorColorFallback var(--md-sys-color-primary) | Controls container color. |
--md-button-container-elevationElevationFallback var(--md-sys-elevation-level0) | Controls container elevation. |
--md-button-container-shapeShapeFallback var(--md-button-container-shape-round,var(--md-shape-action)) | Controls container shape. |
--md-button-container-shape-roundShapeFallback var(--md-shape-action) | Controls container shape round. |
--md-button-container-shape-squareShapeFallback var(--md-shape-action-square-small) | Controls container shape square. |
--md-button-disabled-container-colorDisabledFallback var(--md-sys-color-on-surface) | Controls disabled container color. |
--md-button-disabled-container-elevationDisabledFallback var(--md-sys-elevation-level0) | Controls disabled container elevation. |
--md-button-disabled-label-text-colorDisabledFallback var(--md-sys-color-on-surface) | Controls disabled label text color. |
--md-button-elevated-container-colorColorFallback var(--md-sys-color-surface-container-low) | Controls elevated container color. |
--md-button-elevated-container-elevationElevationFallback var(--md-sys-elevation-level1) | Controls elevated container elevation. |
--md-button-elevated-disabled-container-colorDisabledFallback var(--md-sys-color-on-surface) | Controls elevated disabled container color. |
--md-button-elevated-disabled-container-elevationDisabledFallback var(--md-sys-elevation-level0) | Controls elevated disabled container elevation. |
--md-button-elevated-disabled-label-text-colorDisabledFallback var(--md-sys-color-on-surface) | Controls elevated disabled label text color. |
--md-button-elevated-focused-container-elevationFocusFallback var(--md-sys-elevation-level1) | Controls elevated focused container elevation. |
--md-button-elevated-focused-label-text-colorFocusFallback var(--md-sys-color-primary) | Controls elevated focused label text color. |
--md-button-elevated-hovered-container-elevationElevationFallback var(--md-sys-elevation-level2) | Controls elevated hovered container elevation. |
--md-button-elevated-hovered-label-text-colorStateFallback var(--md-sys-color-primary) | Controls elevated hovered label text color. |
--md-button-elevated-label-text-colorColorFallback var(--md-sys-color-primary) | Controls elevated label text color. |
--md-button-elevated-pressed-container-elevationElevationFallback var(--md-sys-elevation-level1) | Controls elevated pressed container elevation. |
--md-button-elevated-pressed-label-text-colorStateFallback var(--md-sys-color-primary) | Controls elevated pressed label text color. |
--md-button-elevated-selected-container-colorStateFallback var(--md-sys-color-primary) | Controls elevated selected container color. |
--md-button-elevated-selected-label-text-colorStateFallback var(--md-sys-color-on-primary) | Controls elevated selected label text color. |
--md-button-elevated-unselected-container-colorStateFallback var(--md-sys-color-surface-container-low) | Controls elevated unselected container color. |
--md-button-elevated-unselected-label-text-colorStateFallback var(--md-sys-color-primary) | Controls elevated unselected label text color. |
--md-button-filled-container-colorColorFallback var(--md-sys-color-primary) | Controls filled container color. |
--md-button-filled-container-elevationElevationFallback var(--md-sys-elevation-level0) | Controls filled container elevation. |
--md-button-filled-disabled-container-colorDisabledFallback var(--md-sys-color-on-surface) | Controls filled disabled container color. |
--md-button-filled-disabled-container-elevationDisabledFallback var(--md-sys-elevation-level0) | Controls filled disabled container elevation. |
--md-button-filled-disabled-label-text-colorDisabledFallback var(--md-sys-color-on-surface) | Controls filled disabled label text color. |
--md-button-filled-focused-container-elevationFocusFallback var(--md-sys-elevation-level0) | Controls filled focused container elevation. |
--md-button-filled-focused-label-text-colorFocusFallback var(--md-sys-color-on-primary) | Controls filled focused label text color. |
--md-button-filled-hovered-container-elevationElevationFallback var(--md-sys-elevation-level1) | Controls filled hovered container elevation. |
--md-button-filled-hovered-label-text-colorStateFallback var(--md-sys-color-on-primary) | Controls filled hovered label text color. |
--md-button-filled-label-text-colorColorFallback var(--md-sys-color-on-primary) | Controls filled label text color. |
--md-button-filled-pressed-container-elevationElevationFallback var(--md-sys-elevation-level0) | Controls filled pressed container elevation. |
--md-button-filled-pressed-label-text-colorStateFallback var(--md-sys-color-on-primary) | Controls filled pressed label text color. |
--md-button-filled-selected-container-colorStateFallback var(--md-sys-color-primary) | Controls filled selected container color. |
--md-button-filled-selected-label-text-colorStateFallback var(--md-sys-color-on-primary) | Controls filled selected label text color. |
--md-button-filled-unselected-container-colorStateFallback var(--md-sys-color-surface-container) | Controls filled unselected container color. |
--md-button-filled-unselected-label-text-colorStateFallback var(--md-sys-color-on-surface-variant) | Controls filled unselected label text color. |
--md-button-focus-indicator-colorFocusFallback var(--md-sys-color-secondary) | Controls focus indicator color. |
--md-button-focus-indicator-outline-offsetFocusFallback var(--md-sys-state-focus-indicator-outer-offset) | Controls focus indicator outline offset. |
--md-button-focus-indicator-thicknessFocusFallback var(--md-sys-state-focus-indicator-thickness) | Controls focus indicator thickness. |
--md-button-focused-container-elevationFocusFallback var(--md-sys-elevation-level0) | Controls focused container elevation. |
--md-button-focused-label-text-colorFocusFallback var(--md-sys-color-on-primary) | Controls focused label text color. |
--md-button-hovered-container-elevationElevationFallback var(--md-button-elevated-hovered-container-elevation,var(--md-sys-elevation-level2)) | Controls hovered container elevation. |
--md-button-hovered-label-text-colorStateFallback var(--md-sys-color-on-primary) | Controls hovered label text color. |
--md-button-icon-label-spaceLayoutFallback 0.5rem | Controls icon label space. |
--md-button-icon-sizeLayoutFallback 1.25rem | Controls icon size. |
--md-button-label-text-colorColorFallback var(--md-sys-color-on-primary) | Controls label text color. |
--md-button-label-text-selected-colorStateFallback var(--md-sys-color-on-primary) | Controls label text selected color. |
--md-button-label-text-unselected-colorStateFallback var(--md-sys-color-on-surface-variant) | Controls label text unselected color. |
--md-button-large-container-shape-squareShapeFallback var(--md-shape-action-square-large) | Controls large container shape square. |
--md-button-large-icon-label-spaceLayoutFallback 0.75rem | Controls large icon label space. |
--md-button-large-icon-sizeLayoutFallback 2rem | Controls large icon size. |
--md-button-large-outlined-outline-widthLayoutFallback 0.125rem | Controls large outlined outline width. |
--md-button-large-pressed-container-shapeShapeFallback var(--md-shape-action-pressed-large) | Controls large pressed container shape. |
--md-button-large-selected-container-shape-roundShapeFallback var(--md-shape-action-selected-large) | Controls large selected container shape round. |
--md-button-medium-container-shape-squareShapeFallback var(--md-shape-action-square-medium) | Controls medium container shape square. |
--md-button-medium-icon-label-spaceLayoutFallback 0.5rem | Controls medium icon label space. |
--md-button-medium-icon-sizeLayoutFallback 1.5rem | Controls medium icon size. |
--md-button-medium-outlined-outline-widthLayoutFallback 0.0625rem | Controls medium outlined outline width. |
--md-button-medium-pressed-container-shapeShapeFallback var(--md-shape-action-pressed-medium) | Controls medium pressed container shape. |
--md-button-medium-selected-container-shape-roundShapeFallback var(--md-shape-action-selected-medium) | Controls medium selected container shape round. |
--md-button-outlined-disabled-label-text-colorDisabledFallback var(--md-sys-color-on-surface) | Controls outlined disabled label text color. |
--md-button-outlined-focused-label-text-colorFocusFallback var(--md-sys-color-on-surface-variant) | Controls outlined focused label text color. |
--md-button-outlined-hovered-label-text-colorStateFallback var(--md-sys-color-on-surface-variant) | Controls outlined hovered label text color. |
--md-button-outlined-label-text-colorColorFallback var(--md-sys-color-on-surface-variant) | Controls outlined label text color. |
--md-button-outlined-outline-colorColorFallback var(--md-sys-color-outline-variant) | Controls outlined outline color. |
--md-button-outlined-pressed-label-text-colorStateFallback var(--md-sys-color-on-surface-variant) | Controls outlined pressed label text color. |
--md-button-outlined-selected-container-colorStateFallback var(--md-sys-color-inverse-surface) | Controls outlined selected container color. |
--md-button-outlined-selected-label-text-colorStateFallback var(--md-sys-color-inverse-on-surface) | Controls outlined selected label text color. |
--md-button-outlined-unselected-label-text-colorStateFallback var(--md-sys-color-on-surface-variant) | Controls outlined unselected label text color. |
--md-button-pressed-container-elevationElevationFallback var(--md-sys-elevation-level0) | Controls pressed container elevation. |
--md-button-pressed-container-shapeShapeFallback var(--md-shape-action-pressed-small) | Controls pressed container shape. |
--md-button-pressed-label-text-colorStateFallback var(--md-sys-color-on-primary) | Controls pressed label text color. |
--md-button-selected-container-colorStateFallback var(--md-sys-color-primary) | Controls selected container color. |
--md-button-selected-container-shapeShapeFallback var(--md-button-xsmall-selected-container-shape-round,var(--md-shape-action-selected-small)) | Controls selected container shape. |
--md-button-selected-label-text-colorStateFallback var(--md-button-elevated-selected-label-text-color,var(--md-sys-color-on-primary)) | Controls selected label text color. |
--md-button-small-container-shape-squareShapeFallback var(--md-shape-action-square-small) | Controls small container shape square. |
--md-button-small-icon-label-spaceLayoutFallback 0.5rem | Controls small icon label space. |
--md-button-small-icon-sizeLayoutFallback 1.25rem | Controls small icon size. |
--md-button-small-outlined-outline-widthLayoutFallback 0.0625rem | Controls small outlined outline width. |
--md-button-small-pressed-container-shapeShapeFallback var(--md-shape-action-pressed-small) | Controls small pressed container shape. |
--md-button-small-selected-container-shape-roundShapeFallback var(--md-shape-action-selected-small) | Controls small selected container shape round. |
--md-button-text-disabled-label-text-colorDisabledFallback var(--md-sys-color-on-surface) | Controls text disabled label text color. |
--md-button-text-focused-label-text-colorFocusFallback var(--md-sys-color-primary) | Controls text focused label text color. |
--md-button-text-hovered-label-text-colorStateFallback var(--md-sys-color-primary) | Controls text hovered label text color. |
--md-button-text-label-text-colorColorFallback var(--md-sys-color-primary) | Controls text label text color. |
--md-button-text-pressed-label-text-colorStateFallback var(--md-sys-color-primary) | Controls text pressed label text color. |
--md-button-tonal-container-colorColorFallback var(--md-sys-color-secondary-container) | Controls tonal container color. |
--md-button-tonal-container-elevationElevationFallback var(--md-sys-elevation-level0) | Controls tonal container elevation. |
--md-button-tonal-disabled-container-colorDisabledFallback var(--md-sys-color-on-surface) | Controls tonal disabled container color. |
--md-button-tonal-disabled-container-elevationDisabledFallback var(--md-sys-elevation-level0) | Controls tonal disabled container elevation. |
--md-button-tonal-disabled-label-text-colorDisabledFallback var(--md-sys-color-on-surface) | Controls tonal disabled label text color. |
--md-button-tonal-focused-container-elevationFocusFallback var(--md-sys-elevation-level0) | Controls tonal focused container elevation. |
--md-button-tonal-focused-label-text-colorFocusFallback var(--md-sys-color-on-secondary-container) | Controls tonal focused label text color. |
--md-button-tonal-hovered-container-elevationElevationFallback var(--md-sys-elevation-level1) | Controls tonal hovered container elevation. |
--md-button-tonal-hovered-label-text-colorStateFallback var(--md-sys-color-on-secondary-container) | Controls tonal hovered label text color. |
--md-button-tonal-label-text-colorColorFallback var(--md-sys-color-on-secondary-container) | Controls tonal label text color. |
--md-button-tonal-pressed-container-elevationElevationFallback var(--md-sys-elevation-level0) | Controls tonal pressed container elevation. |
--md-button-tonal-pressed-label-text-colorStateFallback var(--md-sys-color-on-secondary-container) | Controls tonal pressed label text color. |
--md-button-tonal-selected-container-colorStateFallback var(--md-sys-color-secondary) | Controls tonal selected container color. |
--md-button-tonal-selected-label-text-colorStateFallback var(--md-sys-color-on-secondary) | Controls tonal selected label text color. |
--md-button-tonal-unselected-container-colorStateFallback var(--md-sys-color-secondary-container) | Controls tonal unselected container color. |
--md-button-tonal-unselected-label-text-colorStateFallback var(--md-sys-color-on-secondary-container) | Controls tonal unselected label text color. |
--md-button-unselected-container-colorStateFallback var(--md-sys-color-surface-container) | Controls unselected container color. |
--md-button-unselected-focused-label-text-colorFocusFallback var(--md-sys-color-on-surface-variant) | Controls unselected focused label text color. |
--md-button-unselected-hovered-label-text-colorStateFallback var(--md-sys-color-on-surface-variant) | Controls unselected hovered label text color. |
--md-button-unselected-label-text-colorStateFallback var(--md-button-elevated-unselected-label-text-color,var(--md-sys-color-primary)) | Controls unselected label text color. |
--md-button-unselected-pressed-label-text-colorStateFallback var(--md-sys-color-on-surface-variant) | Controls unselected pressed label text color. |
--md-button-xlarge-container-shape-squareShapeFallback var(--md-shape-action-square-large) | Controls xlarge container shape square. |
--md-button-xlarge-icon-label-spaceLayoutFallback 1rem | Controls xlarge icon label space. |
--md-button-xlarge-icon-sizeLayoutFallback 2.5rem | Controls xlarge icon size. |
--md-button-xlarge-outlined-outline-widthLayoutFallback 0.1875rem | Controls xlarge outlined outline width. |
--md-button-xlarge-pressed-container-shapeShapeFallback var(--md-shape-action-pressed-large) | Controls xlarge pressed container shape. |
--md-button-xlarge-selected-container-shape-roundShapeFallback var(--md-shape-action-selected-large) | Controls xlarge selected container shape round. |
--md-button-xsmall-container-shape-squareShapeFallback var(--md-shape-action-square-small) | Controls xsmall container shape square. |
--md-button-xsmall-icon-label-spaceLayoutFallback 0.5rem | Controls xsmall icon label space. |
--md-button-xsmall-icon-sizeLayoutFallback 1.25rem | Controls xsmall icon size. |
--md-button-xsmall-outlined-outline-widthLayoutFallback 0.0625rem | Controls xsmall outlined outline width. |
--md-button-xsmall-pressed-container-shapeShapeFallback var(--md-shape-action-pressed-small) | Controls xsmall pressed container shape. |
--md-button-xsmall-selected-container-shape-roundShapeFallback var(--md-shape-action-selected-small) | Controls xsmall selected container shape round. |
Examples
Default
Variants
Sizes
Shapes
Disabled
Toggleable
Leading Icons
The leadingIcon prop and leading slot share the same size and label spacing. Use the slot when the icon content needs custom rendering.
Trailing Icons
The trailingIcon prop and trailing slot use the same trailing alignment contract.
Tooltip
Use title for a simple text tooltip.
Vue Router
Use RouterLink custom and pass its href and navigate values into Button. That keeps Button responsible for rendering the final anchor element.