âButtonsâ Component
Design: zeplin.
Buttons are used for actions that a user can perform on a page. Unlike text links, buttons should not be used solely for navigational purposes. A button might bring a user to a new page to start a user flow, for instance, but it should not be used just to link to another page.
Button Labels
- Button labels should always start with a verb (e.g. âSave changesâ), to indicate its action-oriented purpose.
- Avoid generic labels like âSubmitââthe button label should adequately describe the action that the user will perform.
- Button labels should always contain text. Donât use icon-only button labels, because icons are subject to interpretation. Exceptions apply to rare cases where an icon is well-recognized, e.g. on the toolbar of a rich text editor.
- Button labels should follow sentence-case capitalization where the first word and proper nouns are capitalized.
- Button labels should be as short as possibleâ3 words or fewer.
- For buttons that confirm an actionâe.g. to delete a payment method or generate a Course Certificateâthe label should always be explicit. For instance, instead of âYesâ or âOkâ, it should say âDelete payment methodâ.
- Button labels should be in the first person: for instance, âSubmit my answerâ.
Icons in Button Labels
- Icons can be used to complement text in a button label. Often, this helps users quickly identify the function of a button.
- Icons should have the right size (see Iconography).
- Icons should be placed on the left of the textâthe exception is for buttons with chevrons, where the chevron icon is placed on the right of the text.
Common Uses
Button Type | Use |
---|---|
Primary | For calls to action on a page |
Primary with chevron | Used to indicate primary actions along multi-step flows |
Large primary | Used sparingly to call great attention to an action |
Large primary with chevron | Used sparingly to call great attention to initiate a multi-step flow |
Dropdown | Used sparingly to group actions into a dropdown button |
Secondary | For secondary actions on a page |
Warning | For actions with harmful consequences on user data, e.g. to delete user data or cancel a membership |
Small | For interfaces with limited space |
Ghost | For actions that should not take up prominence, e.g. in a modal dialog |
Primary Button
Regular Primary Button
Primary Button with Chevron
Large Primary Button
Usage
<button class="button button--primary">Primary Button</button>
<button class="button button--primary" disabled>Primary Button Disabled</button>
<button class="button button--primary button--loading">Primary Button Loading</button>
<button class="button button--primary button--withArrow">
Button with chevron
<x-svg-icon name="chevron-right-bold" class="button__arrowIcon ml-tiny"/>
</button>
<button class="button button--primary button--large">
Large Button
</button>
<button class="button button--primary button--large button--withArrow">
Large Button with chevron
<x-svg-icon name="chevron-right-bold" class="button__arrowIcon ml-tiny"/>
</button>
Dropdown button
Usage
@component('components.dropdownButton', ['uniqueId' => 'dropdownButtonSample', 'buttonInnerHTML' => 'dropdown button'])
<li class="dropdown__item">
<button role="menuitem">Member support</button>
</li>
<li class="dropdown__item">
<button role="menuitem">Email notifier</button>
</li>
@endcomponent
Secondary Button
Regular Button
Button Dark
Small Button
Small Dark Button
Usage
<button class="button button--secondary">Secondary Button</button>
<button class="button button--secondary" disabled>Secondary Button Disabled</button>
<button class="button button--secondary button--small">Secondary Button Small</button>
<button class="button button--secondary button--small button--secondaryDark">Secondary Button Small dark</button>
Warning button
Usage
<button class="button button--warning">Warning Button</button>
<button class="button button--warning" disabled>Warning Button Disabled</button>
Ghost Button
Regular Button
Dark Button
Usage
<button class="button button--ghost">Ghost Button</button>
<button class="button button--ghost" disabled>Ghost Button Disabled</button>
<button class="button button--ghost button--ghostDark">Ghost Button Dark</button>
Accessibility
<button>
or <a>
or element? The rule, in a nutshell, is pretty simple: use anchor only if it has a link,
otherwise it should be a button. So, these examples are totally valid:
<a href="/home" class="button button--ghost">Press me</a>
<button class="link" type="button">Click me</button>
As for button element, we always recommend to specify a type: button
or submit
.
Read more: Button versus Link.