Primary action trigger - four variants, two extra sizes, and a disabled state.
| Prop | Type | Default | Description |
|---|---|---|---|
| variant | "primary" | "secondary" | "ghost" | "link" | undefined | "primary" | Visual style. |
| size | "sm" | "md" | "lg" | undefined | "md" | |
| iconLeft | React.ReactNode | - | Optional leading icon node (Lucide). |
| tone | Tone | undefined | "accent" | Brand colour. "accent" (default) is the ember; amber/teal/indigo recolour the primary fill (kept AA-safe) and the ghost/link border+text. Secondary stays the neutral ink option. |
| as | React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined | "button" | Render as a different element/component (e.g. a routing link) while keeping Button styling. |
| href | string | undefined | - | Passed through when `as` renders a link (anchor / SmartLink / next-Link). |
import { Button } from "@atropos/ui"; <Button>Start a project</Button><Button variant="secondary">View work</Button><Button variant="ghost">See the work</Button><Button size="lg">Large</Button><Button disabled>Disabled</Button>