Overview
- Buttons communicate actions that users can take.
- Use style — not size — to visually distinguish the preferred choice among multiple options.
- Use a filled button for the most likely action in a section or view.
Anatomy
- Container
- Icon
- Text
Variants & States
Variant
Our button types follow our semantic mapping of the color the button represents.
Style
All Buttons have three levels of emphasis. The hierarchy is the following filled, outline, transparent. The higher in the hierarchy the style is the more attention it will bring to the button.
Size
Size can be used to emphasize or deemphasize a buttons hierarchy. Our default size is the md size. Button sizes do not change on different breakpoints and stay consistent.
darkMode
Some of the buttons have a different visual appearance if they are placed on a dark background. For cases where this is needed we have the reversed property that needs to be applied.
States
The button states are named after their css pseudo-class.
Hover is activated when the user interacts with an element with a pointing device, but does not necessarily activate it.
Active state represents a button that is being activated by the user by clicking on it.
The focus state is globally defined, no special adjustment is made on this component.
Disabled is if the button can’t be activated (clicked on) or accept focus.
Icon
In rare cases an optional icon can be added to the button. The icon should always support and reflect the action and text the button has. On lg and md button sizes we are using md icon sizes with a light stroke style while the sm button uses sm icon size and a regular style for easier readability on the smaller scale .
Internationalization
For RTL (right-to-left) languages, the layout of the button is mirrored.
Writing Guidelines
Buttons are designed to guide users to take specific actions. The text on a button should be concise, clear, and action-oriented. Be descriptive in your button labels and keep screenreaders in mind.
Character Limit recommendations:
While it might be daunting to rather write longer button copy than shorter, we should be aware that our buttons need to fit on a multitude of devices and screens and multiple line breaks in the button label copy will induce reading difficulty.
Maximum: 40 characters
Recommendation: ~27 characters
Usage
All eyes on you, CTA! Stakes are high because this is the copy for the component that prompts action. Even though it feels like it’s really hard to get this one wrong here are some tips with examples.
Accessibility
Keep screen readers in mind.
For instance, hearing “get plan” several times about different plans the visually impaired user might get confused. It will be helpful to sound specific and clear.
✅ Do —
❌ Don’t —
Localization
The phrase’s length should be prioritized over preciseness. Translators don’t have to be literal, they can go creative while sticking to the point and keeping the phrase short.
In this instance for the Ukrainian language, we could go with “Buy Ultra”, etc. The literal translation that is currently used is “Get plan Ultra,” but “get” in Ukrainian is quite long and “buy” is shorter, and it still looks clear if you take away the word “plan.” Then button copy would fit into one row, and it would look nice and fit the guidelines without losing any value.
✅ Do —
❌ Don’t —
Accessibility
Accessibility
Keep screen readers in mind.
For instance, hearing “get plan” several times about different plans the visually impaired user might get confused. It will be helpful to sound specific and clear.
✅ Do —
❌ Don’t —
Properties
| Name | Type | Values | Description |
|---|---|---|---|
| variant | String | criticalaccentneutral |
|
| appearance | String | filloutlinetransparent |
|
| size | String | lgmdsm |
|
| darkMode | Boolean | truefalse |
|
| disabled | Boolean | truefalse |
|
| isFullWidth | Bolean | truefalse |
Enables the button to switch from content wide to container wide width. |
Usage Guidelines
Content Guidelines
Buttons are how users trigger an immediate action or move to a new experience. They’re a primary way users interact with our product.
Voice and tone
We aim for an encouraging and action-oriented tone.
Copy
- We always start with a strong verb.
- We keep it concise, aiming for 1-3 words.
- We make sure the label clearly communicates what will happen after clicking.
- We use sentence case in product UI (apps + Nord Account) because it fits UX norms, supports readability, and matches how users scan interactive UI.
- We use title case in web/marketing writing (landing pages, blog CTAs, and promotional content, etc.) where visual emphasis takes priority.
- We don’t use punctuation marks at the end.
- We avoid unnecessary articles like “the,” “an,” or “a”.
- We follow the common “Verb + Noun” pattern if possible.
Accessibility
- We ensure that the button text clearly and concisely describes the action that will occur when the button is clicked.
- For buttons without visible text, we provide a descriptive text to ensure the announcement is the action name (for example, “Search”), not a description of the visual icon.
- Buttons must be reachable via standard navigation. We ensure disabled buttons are not focusable by the keyboard, as focusing an un-interactable element can be confusing. We ensure that the disabled state is communicated for screen readers to announce that the button is unavailable or dimmed.
- We provide a brief, visible explanation near the button detailing why the button is currently disabled (for example, “Please accept the terms to continue”). This provides context for all users, including those using screen readers.