Five visual ButtonVariants crossed with three ButtonSizes.
disabled is styling-only but still forwards the native disabled attribute,
so disabled buttons are genuinely non-interactive. busy marks an in-flight
async action: it disables the button (so a second tap can't re-fire the
handler) and sets aria-busy while keeping the label readable. Defaults to
type="button" so it never accidentally submits an ancestor form. Extra
<button> attributes (e.g. onClick, aria-*) pass straight through.
Colours come from design tokens — see the design-system stylesheet.
Design-system button mirroring the iOS button design.