Variants
default
variant="secondary"
variant="outline"
variant="ghost"
variant="link"
variant="destructive"
variant="gradient"
Sizes
Caps Treatment
letterCase="caps" — uppercase with tracking-[0.09em] and font-semibold. Composes with any variant and tone.
Tone × Emphasis
States
loading — aria-busy + disabled
disabled — opacity-50 + pointer-events-none
With Icons
Composition
form actions
danger confirmation
status actions
hero CTAs — gradient + xl
Theme notes
- Ghost buttons use text-foreground/80 — always readable regardless of surface.
- Accent-toned buttons are intentionally low-contrast; use brand tone for primary CTAs.
- Strong emphasis adds shadow depth and an inset border — reserve for the most prominent action on a surface.
- Tone variants adapt automatically across light, dark, and dusk themes.
- The gradient variant draws from brand → accent: sapphire to lagoon in light mode, lagoon to sapphire in dark, amethyst to lagoon in dusk. Hover lifts luminance via filter — no shadow added.
Accessibility
- Loading state must set aria-busy="true" and disabled together.
- Icon-only buttons require aria-label; never rely on the icon alone for intent.
- Do not rely on colour or tone alone to convey destructive intent — use clear action labels.
- Focus rings are always visible on keyboard navigation; do not suppress them.