Skip to content
SproutAceve · v3.12.1
Get started
Overview What is your role? Getting started Install Adopting Sprout
Foundations
Brand & logos Color Typography Spacing & layout Elevation Iconography Accessibility
Components
Overview Buttons Inputs & forms Data grid Ribbon toolbar Navigation Cards Dialog Tabs Context menu
Practice
Interaction & motion Voice & content Product patterns AI patterns
People & ethics
Design principles Personas UX ethics Trust & direction Meet the makers UX Strategi
Playground
Build the systemplay Tower of tokensplay
Behind the system
How it works Why it pays Changelogv3.12 Roadmap Contribute
Components

Button.

Six variants. Always labelled "imperative singular verb + noun" — never just the verb. 32px high, 4px radius, 14px label, optional 16px icon.

Variants

React variantFigma TypeWhen to use
primaryPrimaryThe one action you want users to take. One per view.
secondaryNeutralPaired with primary for cancel or secondary flows.
subtle—Low-emphasis actions, toolbars. No Figma equivalent.
destructiveDangerIrreversible actions — delete, remove, reset.
successSuccessConfirm, approve, complete. Positive final step.

The Figma component uses the Type property — its values (Primary, Neutral, Danger, Success) map to the React variant names above. Dev Mode shows the correct React snippet via Code Connect.

States

Default → Hover → Pressed → Selected → Disabled.

Default
Hover
Pressed
Selected
Disabled

Anatomy

Don't change paddings; the ribbon depends on the 32px height.

Height32px
Horizontal padding14px
Icon size16px (left of label)
Icon ↔ label gap8px
LabelManrope Medium 14 / 100%
Border1px solid same as background
Radius4px

Do & don't

Do — verb + noun, the user knows what gets removed.
Don't — verb on its own. What is being deleted?

Props (React)

type ButtonProps = {
  variant?: "primary" | "secondary" | "subtle" | "destructive" | "success";
  icon?: IconName;             // optional leading icon
  trailing?: boolean;          // flip icon to right
  loading?: boolean;           // shows spinner, blocks clicks
  disabled?: boolean;
  pressed?: boolean;           // toggle state — adds aria-pressed
  children: ReactNode;         // verb + noun, please
  onClick?: (e) => void;
};
← PreviousAccessibilityNext →Inputs & forms
Sprout · Aceve Design System · v3.12.1
Figma library GitLabReleases