Button
Displays a button component that can be used to trigger actions like submitting forms or triggering JavaScript functions.
<dui-button variant="ButtonVariant.Outline">
<dui-icon name="undo-2"/>
Cancel Changes
</dui-button>
<dui-button>Save Changes</dui-button>Usage
<dui-button>Proceed</button>Examples
Sizes and Variants
Specify the size and variant using the size and variant attribute.
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.ExtraSmall">Default</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Secondary">
Secondary
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Outline">
Outline
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Ghost">
Ghost
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Destructive">
Destructive
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Link">
Link
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.Small">Default</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Secondary">
Secondary
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Outline">
Outline
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Ghost">
Ghost
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Destructive">
Destructive
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Link">
Link
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button>Default</dui-button>
<dui-button variant="ButtonVariant.Secondary">Secondary</dui-button>
<dui-button variant="ButtonVariant.Outline">Outline</dui-button>
<dui-button variant="ButtonVariant.Ghost">Ghost</dui-button>
<dui-button variant="ButtonVariant.Destructive">Destructive</dui-button>
<dui-button variant="ButtonVariant.Link">Link</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.Large">Default</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Secondary">
Secondary
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Outline">
Outline
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Ghost">
Ghost
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Destructive">
Destructive
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Link">
Link
</dui-button>
</div>Icon Right
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.ExtraSmall">
Default
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Secondary">
Secondary
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Outline">
Outline
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Ghost">
Ghost
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Destructive">
Destructive
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Link">
Link
<dui-icon name="arrow-right"/>
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.Small">
Default
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Secondary">
Secondary
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Outline">
Outline
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Ghost">
Ghost
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Destructive">
Destructive
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Link">
Link
<dui-icon name="arrow-right"/>
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button>
Default
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button variant="ButtonVariant.Secondary">
Secondary
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button variant="ButtonVariant.Outline">
Outline
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button variant="ButtonVariant.Ghost">
Ghost
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button variant="ButtonVariant.Destructive">
Destructive
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button variant="ButtonVariant.Link">
Link
<dui-icon name="arrow-right"/>
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.Large">
Default
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Secondary">
Secondary
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Outline">
Outline
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Ghost">
Ghost
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Destructive">
Destructive
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Link">
Link
<dui-icon name="arrow-right"/>
</dui-button>
</div>Icon Left
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.ExtraSmall">
<dui-icon name="circle-arrow-left"/>
Default
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Secondary">
<dui-icon name="circle-arrow-left"/>
Secondary
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Outline">
<dui-icon name="circle-arrow-left"/>
Outline
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Ghost">
<dui-icon name="circle-arrow-left"/>
Ghost
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Destructive">
<dui-icon name="circle-arrow-left"/>
Destructive
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Link">
<dui-icon name="circle-arrow-left"/>
Link
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.Small">
<dui-icon name="circle-arrow-left"/>
Default
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Secondary">
<dui-icon name="circle-arrow-left"/>
Secondary
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Outline">
<dui-icon name="circle-arrow-left"/>
Outline
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Ghost">
<dui-icon name="circle-arrow-left"/>
Ghost
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Destructive">
<dui-icon name="circle-arrow-left"/>
Destructive
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Link">
<dui-icon name="circle-arrow-left"/>
Link
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button>
<dui-icon name="circle-arrow-left"/>
Default
</dui-button>
<dui-button variant="ButtonVariant.Secondary">
<dui-icon name="circle-arrow-left"/>
Secondary
</dui-button>
<dui-button variant="ButtonVariant.Outline">
<dui-icon name="circle-arrow-left"/>
Outline
</dui-button>
<dui-button variant="ButtonVariant.Ghost">
<dui-icon name="circle-arrow-left"/>
Ghost
</dui-button>
<dui-button variant="ButtonVariant.Destructive">
<dui-icon name="circle-arrow-left"/>
Destructive
</dui-button>
<dui-button variant="ButtonVariant.Link">
<dui-icon name="circle-arrow-left"/>
Link
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.Large">
<dui-icon name="circle-arrow-left"/>
Default
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Secondary">
<dui-icon name="circle-arrow-left"/>
Secondary
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Outline">
<dui-icon name="circle-arrow-left"/>
Outline
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Ghost">
<dui-icon name="circle-arrow-left"/>
Ghost
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Destructive">
<dui-icon name="circle-arrow-left"/>
Destructive
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Link">
<dui-icon name="circle-arrow-left"/>
Link
</dui-button>
</div>Icon Only
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.IconExtraSmall">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.IconExtraSmall" variant="ButtonVariant.Secondary">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.IconExtraSmall" variant="ButtonVariant.Outline">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.IconExtraSmall" variant="ButtonVariant.Ghost">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.IconExtraSmall" variant="ButtonVariant.Destructive">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.IconExtraSmall" variant="ButtonVariant.Link">
<dui-icon name="arrow-right"/>
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.IconSmall">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.IconSmall" variant="ButtonVariant.Secondary">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.IconSmall" variant="ButtonVariant.Outline">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.IconSmall" variant="ButtonVariant.Ghost">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.IconSmall" variant="ButtonVariant.Destructive">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.IconSmall" variant="ButtonVariant.Link">
<dui-icon name="arrow-right"/>
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.Icon">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.Icon" variant="ButtonVariant.Secondary">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.Icon" variant="ButtonVariant.Outline">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.Icon" variant="ButtonVariant.Ghost">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.Icon" variant="ButtonVariant.Destructive">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.Icon" variant="ButtonVariant.Link">
<dui-icon name="arrow-right"/>
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.IconLarge">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.IconLarge" variant="ButtonVariant.Secondary">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.IconLarge" variant="ButtonVariant.Outline">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.IconLarge" variant="ButtonVariant.Ghost">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.IconLarge" variant="ButtonVariant.Destructive">
<dui-icon name="arrow-right"/>
</dui-button>
<dui-button size="ButtonSize.IconLarge" variant="ButtonVariant.Link">
<dui-icon name="arrow-right"/>
</dui-button>
</div>Spinner
Indicate that the system is busy with a spinner.
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.ExtraSmall" disabled>
<dui-spinner/>
Default
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Secondary" disabled>
<dui-spinner/>
Secondary
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Outline" disabled>
<dui-spinner/>
Outline
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Ghost" disabled>
<dui-spinner/>
Ghost
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Destructive" disabled>
<dui-spinner/>
Destructive
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Link" disabled>
<dui-spinner/>
Link
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.Small" disabled>
<dui-spinner/>
Default
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Secondary" disabled>
<dui-spinner/>
Secondary
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Outline" disabled>
<dui-spinner/>
Outline
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Ghost" disabled>
<dui-spinner/>
Ghost
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Destructive" disabled>
<dui-spinner/>
Destructive
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Link" disabled>
<dui-spinner/>
Link
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button disabled>
<dui-spinner/>
Default
</dui-button>
<dui-button variant="ButtonVariant.Secondary" disabled>
<dui-spinner/>
Secondary
</dui-button>
<dui-button variant="ButtonVariant.Outline" disabled>
<dui-spinner/>
Outline
</dui-button>
<dui-button variant="ButtonVariant.Ghost" disabled>
<dui-spinner/>
Ghost
</dui-button>
<dui-button variant="ButtonVariant.Destructive" disabled>
<dui-spinner/>
Destructive
</dui-button>
<dui-button variant="ButtonVariant.Link" disabled>
<dui-spinner/>
Link
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.Large" disabled>
<dui-spinner/>
Default
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Secondary" disabled>
<dui-spinner/>
Secondary
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Outline" disabled>
<dui-spinner/>
Outline
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Ghost" disabled>
<dui-spinner/>
Ghost
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Destructive" disabled>
<dui-spinner/>
Destructive
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Link" disabled>
<dui-spinner/>
Link
</dui-button>
</div>Invalid States
Indicate an invalid state using the aria-invalid attribute.
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.ExtraSmall" aria-invalid="true">Default</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Secondary" aria-invalid="true">
Secondary
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Outline" aria-invalid="true">
Outline
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Ghost" aria-invalid="true">
Ghost
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Destructive" aria-invalid="true">
Destructive
</dui-button>
<dui-button size="ButtonSize.ExtraSmall" variant="ButtonVariant.Link" aria-invalid="true">
Link
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.Small" aria-invalid="true">Default</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Secondary" aria-invalid="true">
Secondary
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Outline" aria-invalid="true">
Outline
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Ghost" aria-invalid="true">
Ghost
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Destructive" aria-invalid="true">
Destructive
</dui-button>
<dui-button size="ButtonSize.Small" variant="ButtonVariant.Link" aria-invalid="true">
Link
</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button aria-invalid="true">Default</dui-button>
<dui-button variant="ButtonVariant.Secondary" aria-invalid="true">Secondary</dui-button>
<dui-button variant="ButtonVariant.Outline" aria-invalid="true">Outline</dui-button>
<dui-button variant="ButtonVariant.Ghost" aria-invalid="true">Ghost</dui-button>
<dui-button variant="ButtonVariant.Destructive" aria-invalid="true">Destructive</dui-button>
<dui-button variant="ButtonVariant.Link" aria-invalid="true">Link</dui-button>
</div>
<div class="flex flex-wrap items-center gap-2">
<dui-button size="ButtonSize.Large" aria-invalid="true">Default</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Secondary" aria-invalid="true">
Secondary
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Outline" aria-invalid="true">
Outline
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Ghost" aria-invalid="true">
Ghost
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Destructive" aria-invalid="true">
Destructive
</dui-button>
<dui-button size="ButtonSize.Large" variant="ButtonVariant.Link" aria-invalid="true">
Link
</dui-button>
</div>Additional attributes
Since dui-button is a wrapper around the HTML Button (<button>) element, you can use any of the Button element
attributes.
<dui-button variant="ButtonVariant.Outline" onclick="alert('Hello')">
Display Alert
</dui-button>
<dui-button variant="ButtonVariant.Outline"
class="bg-linear-to-r from-orange-500 to-red-500 hover:from-red-500 hover:to-orange-500 border-red-500 border-2 text-white/90 hover:text-white"
onclick="confirm('Are you sure?')"
>
<dui-icon name="trash"/>
Delete
</dui-button>