Choosing the right primitive

Choose Salt components, layouts, and patterns by user intent first, then prefer the most constrained Salt option before creating custom UI.

Use this page as a short chooser, then follow the component usage pages for the authoritative details.

  • Trigger work in the current view: use Button.
  • Navigate to another route, page, or document: use Link.
  • Show or hide related content: use a disclosure primitive such as Accordion or Collapsible.
  • Structure a page or region: start with layouts.
  • Build a repeated multi-part flow: check patterns before inventing a new composition.
User intentPreferMain thing to avoid
Trigger workButtonLink or custom link-like actions
Navigate somewhereLinkButton used as route or document navigation
Repeated multi-part flowPatternsad hoc assemblies
Arrange page or shell structureLayoutsgeneric wrappers that add no value
Existing Salt screenSalt primitivesrecreated native or role-based interactive elements
  • Use Button for actions such as save, apply, retry, or open dialog.
  • Use Link for real destinations such as routes, pages, help articles, or document downloads.
  • Start with a component when you need one UI element with clear semantics.
  • Start with a pattern when the job spans multiple components or repeated page structure.
  • Prefer the Salt primitive first.
  • Add a wrapper only when it adds stable semantics, shared behavior, or a real domain API.