Button
Carbon-spec Button re-implementation. Seven kinds × five sizes, plus `asChild` for Radix Slot composition (matches the legacy @avala/ui Button API surface).
Live playground
Edit the JSX below — preview updates instantly. Switch brand × tone in the toolbar to see the same component re-themed in place.
Edit JSX — preview updates livereact-live
import { Button } from "@avala/design"; <Button kind="primary" size="md">Click me</Button>
All variants
The Storybook stories file rendered as an iframe — every variant, every size, every state, baselined for visual regression.
primitives-button--defaultOpen in Storybook →
When to use
- Any user-triggered action — submit, save, cancel, open dialog, navigate via
asChild. - The exemplar primitive: every other interactive primitive defers to Button's kind/size matrix, so reach for it first.
When not to use
- Icon-only triggers without visible text → use `IconButton` (it requires
aria-label). - Anchor-styled inline links inside prose → use `Link`.
- A toggle on/off control → use `Toggle` or `Switch`.