Components / Actions / ButtonOpen in Figma
Button
ReadyStarts the one main action on a screen, or records a decision.
When to use
- The screen has one main thing to do: save, submit, continue, confirm.
- A person must decide on a request: Approve and Reject together.
- A pair of equal choices at the foot of a filter or sheet: Outline beside Main, both compact.
When not to use
| If people need to | Use |
|---|---|
| Add a new record from a list | Add button |
| Reach second and later actions | Menu |
| Switch between views of the same list | Secondary tab |
| Confirm something that can't be undone | Confirm |
Anatomy
check_circleAction
Action
- Container · required
- Icon · optional, before the label, 24
- Label · required
- Outline container · for the quieter of two choices
Variants
| Variant | Purpose | Figma |
|---|---|---|
| Main | The one main action on a screen. Antz green, 56 tall, full width of the action bar | Designed |
| Navy | Same job as Main in Teal ink, used to vary a run of screens that would all be green | Designed |
| Approve and reject | The decision pair on a request, 48 tall. Stacked on phone, side by side on tablet | Designed |
| Outline | The quieter of two choices, such as Cancel or Clear all | Designed |
| Compact | Buttons 40 tall in tight footers, such as a filter screen | Designed |
States
| State | When | What changes | Figma |
|---|---|---|---|
| Default | Ready to use | As specified | Designed |
| Pressed | Finger is down | A 10% black layer over the fill | Temporary rule |
| Focus | Reached with a keyboard on tablet | 2px Teal ink ring, 2 outside the edge | Temporary rule |
| Disabled | The action can't be taken yet | Disabled fill #DAE7DF, label in Hint #839D8D; outline keeps its white fill and grey border | Temporary rule |
Behaviour
- One main action per screen. Every other action goes in the menu behind the more icon.
- The main action sits in a white bar fixed to the bottom of the screen, 16 padding on phone and 20 on tablet.
- Reject always asks for a reason before it completes.
- A button that can't be used yet shows as disabled rather than disappearing, so the layout does not jump.
- Delete never sits in red beside Edit; it lives in the menu and asks for confirmation.
Phone and tablet
| Phone | Tablet | |
|---|---|---|
| Main button width | Full width of the action bar | Full width of the action bar or panel |
| Approve and reject | Stacked, Approve on top, gap 12, in a white bar with corners 16 on top | Side by side, equal widths, Reject left, gap 24 |
| Action bar padding | 16 | 20 |
Content
| Part | Rule |
|---|---|
| Label | A verb, or verb and noun, in sentence case: "Save", "Submit request" |
| Length | One to three words; never wraps to a second line |
| Decision pair | Always "Approve" and "Reject" |
| Avoid | "OK", "Yes", "Click here", all capitals |
Do and don't
Action
DoGive the screen one main action.
Action
Action
Don'tStack two main buttons. Move the second one into the menu.
Cancel
Save
DoPair an outline button with the main one when both choices matter.
Delete
Edit
Don'tPut a red Delete beside Edit.
Related
Specs
Click a value to copy it.
| Part | Property | Phone | Tablet |
|---|---|---|---|
| Main | Height | ||
| Corners | |||
| Fill | |||
| Label | |||
| Label colour | |||
| Icon | |||
| Navy | Fill | ||
| Height | |||
| Approve | Height | ||
| Fill | |||
| Label | |||
| Reject | Height | ||
| Fill | |||
| Label | |||
| Decision pair | Gap | ||
| Bar | |||
| Outline | Fill | ||
| Border | |||
| Label | |||
| Label colour | |||
| Compact | Height | ||
| Padding left and right | |||
| Compact outline | Label | ||
| Disabled | Fill | ||
| Label colour | |||
| Confirm buttons | Height |
Accessibility
- Every button is at least 44 tall; Main and Navy are 56, decisions 48, compact 40 in an 80 footer, with the tap area extended to 44 above and below.
- The label says what happens; an icon never stands alone in a button.
- White on Antz green scores 2.4 for readability, so labels are 16 Semibold and never smaller. White on Teal ink scores 8.8.
- White on Red scores 4.1; Reject is always written out, not shown by colour alone.
- Disabled buttons are announced as unavailable, and the reason appears near the field that blocks them.
Changes
| Date | Change |
|---|---|
| 26 Oct 2026 | Main 56 green, Navy 56 allowed, decisions 48, confirm buttons 56. |
| 26 Oct 2026 | Disabled set to Disabled fill with Hint text (decision, not yet in Figma). Pressed and focus added as temporary rules. |