Manage Content
Variants
Sizes
States
With icon
PropTypeDefaultRequiredDescription
variant'primary' | 'secondary' | 'ghost' | 'danger''primary'NoVisual style.
size'sm' | 'md' | 'lg''md'NoControls height and padding.
loadingbooleanfalseNoShows a spinner and disables the button.
iconReactNodeNoOptional leading icon, hidden while loading.
disabledbooleanfalseNoStandard HTML disabled state.
Do
  • Use exactly one primary button per view for the main action.
  • Keep labels short and verb-first — "Save changes", not "Changes will be saved."
  • Use the loading state for any action that takes longer than ~300ms.
Don't
  • Use more than one primary button in the same view.
  • Disable a button without explaining why nearby.
  • Use danger styling for anything that isn’t destructive.