Button

OverviewExamplesPropertiesSlotsMethodsCSS PropertiesDependenciesUsageIntegration

Buttons are used for interface actions. Primary style should be used only once per section for main call-to-action, while other styles can appear more frequently.

Properties

PropertyAttribute Description TypeDefault
variantvariantThe style variant of the button.'default' | 'primary' | 'dashed' | 'plain' | 'danger''default'
typetypeThe type of the button.'button' | 'submit' | 'reset''submit'
sizesizeThe size of the button. This affects font-size and padding.'s' | 'm' | 'l''m'
hrefhrefWhen provided, renders the button as a link, with its href attribute set to the given value.string | undefined
downloaddownloadWhen provided together with a href property, the button will trigger a file download instead of a page visit.booleanfalse
targettargetWhen provided together with a href property, determines where to open the linked URL. The keywords have special meanings for where to load the URL: “_self” means the current browsing context, “_blank” usually a new tab but users can configure browsers this to open a new window instead, “_parent” means the parent browsing context of the current one, but if no parent exists, behaves as _self, and finally “top” means the topmost browsing context.'_self' | '_blank' | '_parent' | '_top''_self'
expandexpandControls whether the button expands to fill the width of its container.booleanfalse
squaresquareWhen provided, the button is rendered as a square button. Use this for icon only buttons.booleanfalse
loadingloadingControls whether the button is in loading state. Please note that the spinner is hidden from assistive technologies, so you need to make sure to announce the loading state to e.g. screen reader users. We also recommend disabling all user interactions on the button itself while in loading state.booleanfalse
hideDropdownIconhide-dropdown-iconControls whether the `interface-dropdown-small` icon from Nordicons is hidden in the `end` slot when used as a dropdown toggle.booleanfalse
disableddisabledMakes the component disabled. This prevents users from being able to interact with the component, and conveys its inactive state to assistive technologies.booleanfalse
namenameThe name of the form component.string | undefined
valuevalueThe value of the form component.string''
formformGets the form, if any, associated with the form element. The setter accepts a string, which is the id of the form.HTMLFormElement | null

Slots

Slot name Description
Default slotThe button content
startUsed to place content at the start of button text. Typically used for icons.
endUsed to place content at the end of button text. Typically used for icons.

Methods

Method nameParameters Description
focus(options?: FocusOptions) => voidoptions: An object which controls aspects of the focusing process.Programmatically move focus to the component.
blur() => voidN/AProgrammatically remove focus from the component.
click() => voidN/AProgrammatically simulates a click on the component.

CSS Properties

CSS Custom Properties provide more fine grain control over component presentation. We advise utilizing existing properties on the component before using these.

PropertyDescriptionDefault
--n-button-border-radiusControls the rounded corners of the button, using border radius tokens.var(--n-border-radius-s)
--n-button-gapControls the spacing between items within the button, using our spacing tokens.var(--n-space-s)
--n-button-gradientControls the overlayed gradient background on the button.linear-gradient(to bottom, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.013) 100%))
--n-button-background-colorControls the background color of the button, using our color tokens.var(--n-color-button)
--n-button-border-colorControls the border color of the button, using our color tokens.var(--n-color-border-strong)
--n-button-text-alignControls the text alignment for the text in the button.center
--n-button-box-shadowControls the surrounding shadow, using our box shadow tokens.var(--n-box-shadow)
--n-button-colorControls the color of the text within the button, using our color tokens.var(--n-color-text)
--n-button-padding-inlineControls the inline, or left and right, padding of the button.calc(var(--n-space-m) / 1.2)
--n-button-font-sizeControls the size of the text within the button, using our font tokens.var(--n-font-size-m)
--n-button-font-weightControls the weight of the text within the button, using our font tokens.var(--n-font-weight)
--n-button-min-block-sizeControls the minimum block size, or height, of the button using our spacing tokens.var(--n-space-xl)
--n-button-toggle-icon-colorControls the color of toggle icon that gets rendered when the button is used as a Dropdown toggle.var(--n-color-icon)

Usage

This section includes guidelines for designers and developers about the usage of this component in different contexts.

Do

  • Only use one primary button per section, as a main call-to-action.
  • Use clear and accurate labels.
  • Use established button colors appropriately. For example, only use a danger button style for an action that’s difficult or impossible to undo.
  • Prioritize the most important actions. Too many buttons will cause confusion.
  • Be consistent with positioning of buttons in the user interface.
  • Use strong, actionable verbs in labels such as “Add”, “Close”, “Cancel”, or “Save”.

Don’t

  • Don't use a primary button in every row of a table.
  • Don’t use buttons to link to other pages. Use regular link or a plain style instead where necessary.
  • Don’t use buttons for navigation where the link appears within or following a sentence.
  • Don’t use labels such as “Read more”, “Click here” or “More”.

Content guidelines

Button labels should be clear, accurate and predictable. It should be possible for the user to understand what will happen when they click a button:

View user settings
Click here

When writing button labels, always write them in sentence case, not title case. The first word should be capitalized and the rest lowercase (unless a proper noun):

My tasks
My Tasks

Avoid unnecessary words and articles in button labels, such as “the”, “an” or “a”:

Add item
Add an item

Variants

This section describes the different component variants, their purpose, and when to use each variant.

NamePurpose
defaultDefault style is the most common button variant. Only switch to another variant if you need to adjust the visual weight of the element.
primaryPrimary style is reserved for main call-to-actions. Should be used only once per content area or panel, e.g. for a “Save” action.
dashedDashed style should be used for actions that trigger filtering.
dangerDanger style should be used for actions that delete data or otherwise make it hard to undo the action.
plainUsed for less important or less common actions. Can be also used for linking to other pages.
disabledUsed for actions that aren’t currently available or not available anymore. Also prevents users from being able to interact with the component, and conveys its inactive state to assistive technologies.

Icon usage in button

Illustrative icons should be always positioned in the start slot:

Button with icon in start slotButton with icon in start slot

When a button is used as a dropdown toggle, the interface-dropdown-small icon from Nordicons is automatically placed in the end slot (you can use the hideDropdownIcon property to hide it):

Dropdown button

Each button size has a recommended icon size. The medium button uses the s icon size, the small button uses the xs icon size, and the large button uses the m icon size. The icon will adjust size automatically based on the button size, so you will get the correct behavior by default. However, this can be overridden by explicitly setting a size on the icon.

Button icon sizesButton icon sizes

Use interface-add-small icon in the start slot for create/add type primary actions in the header:

Create/add type primary action with iconCreate/add type primary action with icon

Additional considerations

  • Users of assistive technology expect a button to submit data or do an action. If you need the button to navigate into another view, use the href property which will output <a> tag instead of a <button>.
  • When you need to disable a button, use disabled property as it conveys this information correctly to assistive technologies like screen readers.
  • Button component provides 3 size variants; small, medium and large. The large size should only be used for marketing purposes or on areas such as an empty space/content notice.

Integration

For integration guidelines, please see Web Components documentation .

Was this page helpful?

Yes No

We use this feedback to improve our documentation.