Actions
Components that trigger actions or move users to another page.
Components
| Component | Purpose |
|---|---|
| Button | Trigger an action (submit, cancel, delete, etc.) |
| Toggle group | Mutually exclusive button group for switching views or modes |
| Link | Navigate to another page or section |
Button
Types
button— triggers an action without form submissionsubmit— submits a formreset— resets form values
Roles
primary— main action on the pagesecondary— supporting actiondanger— destructive or irreversible action
Design and accessibility
- Use clear, specific labels (verb + noun)
- One primary button per section
- Danger buttons require confirmation for destructive actions
- Minimum touch target: 44×44px
- Focus indicator visible on keyboard navigation
- Disabled buttons use aria-disabled, not the disabled attribute
Button anatomy
Send money
1
2
3
4
5
- 1Container
- 2Label text
- 3Leading icon
- 4Focus ring
- 5Touch target area
Button variants
Button states
Primary
Secondary
Ghost / Tertiary
Destructive
Button specs
Send moneypadding: 0 24px
48px
min-width: 80px
Dimensions
Min height48px
Min width80px
Padding H16–24px
Border radius6px
Icon-text gap8px
Typography
Font size16px (1rem)
Font weight600 (SemiBold)
Line height24px
Focus ring
TypeInner border 3px
Offset2px
Touch target48px (AAA)
Send money
offset: 2px
Icon + label / Icon-only
Full-width button
Toggle group
Mutually exclusive set of toggle buttons — only one (or none) can be active at a time.
- Used for view switching (List / Grid), time period selection (Day / Week / Month)
- Single-select by default; can support multi-select
- Supports icon-only and text variants
- Active item is visually distinct from inactive items
- Keyboard navigable with arrow keys within the group
Toggle group — view switch
Toggle group — time period
Link
Inline text actions used for secondary navigation and contextual operations. All link buttons use <Button variant="link">.
Usage
- Use for secondary actions below primary buttons (Back to home, Edit payment method)
- Use destructive variant for irreversible actions (Delete contact, Remove method, Cancel transfer)
- Icon placement is always inline-start (left of text)
- Never use for primary page actions — use
<Button>instead
Variants
| Variant | Class | Color | Example |
|---|---|---|---|
| Default | base | var(--ds-link) | Forgot password?, Back to home |
| With icon | base | var(--ds-link) | + Add payment method |
| Destructive | .link-destructive | var(--ds-red-600) | Delete contact, Remove method |
Style
| Property | Value |
|---|---|
| Font size | var(--ds-text-sm) — 14px |
| Font weight | var(--ds-font-semibold) — 600 |
| Default state | Underline, offset 2px |
| Hover | Color var(--ds-primary-hover) |
| Disabled | var(--ds-gray-400), no underline |
| Height | auto (no min-height) |
| Padding | 0 (no horizontal padding) |
Link styles
Default
With icon
Destructive
Inline (in body text)
View your transaction history or download a statement.
Design and accessibility
- Link text must describe the action or destination
- Avoid generic text ("click here", "read more")
- Destructive links must use both color and text to convey intent (not color alone)
- Minimum touch target: 48px height when standalone (use
h-12class) - Focus indicator visible on keyboard navigation