A button is a UI control that triggers an instantaneous action. It is distinct from state buttons, which toggle persistent state. Allow one primary action per panel; primary labels should be verbs.
| Variant | Usage |
|---|---|
| Primary | Main panel action — Launch, Apply, Add; may close panel or start long processing |
| Secondary | Subsection actions; shorter height; may open settings dialogs |
| Tertiary | Adjacent to a related control — Browse, Reset |
| Outline | Brand-linked optional actions when primary is already used — Preview, Save draft, Test connection |
Primary buttons use a solid brand fill and white label. They represent the main commit action for a panel — only one primary button should appear per panel.
Primary buttons can include a leading icon when the glyph reinforces a familiar create-or-send action. Default to text-only for dialog footers and confirmations; add an icon when it improves recognition without replacing the label.
aria-label instead.Analysis may take several minutes. Start when settings are ready.
Panel footers: one primary on the right; label should be a verb describing the outcome.
Secondary buttons use a neutral filled background and gray border. They support subsection actions, settings entry points, and dismiss controls without competing with the primary action.
This removes the selected ROI and its statistics. This action cannot be undone.
Secondary is shorter (24px) than primary (28px); dismiss sits left of primary in the footer cluster.
Tertiary buttons have no fill or border by default. They sit beside a related control for lightweight, contextual actions such as browsing for a file or resetting a single field.
Tertiary controls align on the same row as their related input; hover adds a neutral fill.
Outline buttons use a transparent fill and brand-colored border. They signal a positive, on-brand action without competing with the single primary button in a panel.
Icon-only buttons save space for familiar actions (Save, Add, Settings). Always provide an accessible name via
aria-label or visually hidden text.
Link buttons look like hyperlinks but use <button> semantics for in-app actions that do not
navigate. For true navigation, use Hyperlinks.
Combines link appearance with a leading icon — common for help topics and external docs opened in context.
A split button pairs a primary action with a menu of related alternatives. The main area runs the default action; the chevron opens a dropdown.
Add a leading icon on the main action when the glyph aids recognition — export, save, share. The chevron toggle
stays icon-only; always provide an aria-label on the toggle.
Visually joins related options so users pick one of a small set (view mode, alignment, sort order).
aria-pressed="true" or .is-active styling.Button colors match the palette on the Color foundation page. Values below are fixed hex references; live buttons use CSS custom properties that adapt with theme.
| Variant | Background (light / dark) | Text (light / dark) |
|---|---|---|
| Primary |
|
Aa
Aa
|
| Primary hover |
|
Aa
Aa
|
| Secondary |
|
Aa
Aa
|
| Secondary hover |
|
— |
| Tertiary |
|
Aa
Aa
|
| Outline |
|
Aa
Aa
|
| Outline hover |
|
Aa
Aa
|
| Disabled |
|
Aa
Aa
|
Each variant is shown in default, hover, focus, and disabled states. Light and dark panels render side by side; use the header theme toggle to preview either mode full-page.
Light mode
Dark mode
| State | Primary | Secondary | Tertiary | Outline |
|---|---|---|---|---|
| Default | Brand background, white label | Neutral fill, gray border, theme text | Transparent, no border | Transparent, brand border and link-colored label |
| Hover | Darker blue (light) / lighter blue (dark) | Secondary hover fill | Neutral hover fill | Light brand tint fill; darker border and label |
| Focus | 2px primary outline, 2px offset — all variants | |||
| Disabled | Neutral gray fill and muted label | Muted label on neutral fill | Muted label; stays transparent | Muted label and border; stays transparent |
Platform-specific button catalogs for desktop, web, and portal products are deferred from this unified spec — report back if those should be merged later.