Components
Button
Solid, outline, ghost, or an inverse variant for dark surfaces.
Colour comes from the brand accent via the nearest data-brand scope, not a hardcoded value —
switch brands below to see it re-theme live. Calm interaction: hover darkens, press nudges down
1px, never bouncy.
Props
Accessibility
- Renders a real
<button>by default, so focus, keyboard activation (Space/Enter), and the disabled state come from the browser for free. asChildswaps the rendered element via RadixSlot(e.g. wrap a routerLinkfor a button-styled navigation action) — the ARIA role and keyboard behaviour follow whatever element you pass in, so make sure it's a real interactive element.ghostandoutlinehave no fill of their own — check contrast against whatever surface they sit on before shipping.
Do / Don't
- Do use
primaryfor the one action you want someone to take on a screen; reservesecondaryandghostfor everything else. - Do use
inverseon dark or photo backgrounds — neverprimarythere, its fill may not read against the surface behind it. - Don't stack more than one
primarybutton in the same view — it stops meaning "the" action.