← ComponentsButton
stablePrimary action primitive, pre-styled to the accent tokens. Six variants, four sizes, asChild for links.
shell
pnpm dlx shadcn@latest add @webzenia/button
statesdefaulthoverfocus-visible (ring)disabledpressed
propsvariantdefault | secondary | outline | ghost | destructive | link= default
Visual emphasis.sizedefault | sm | lg | icon= default
Control height + padding.asChildboolean= false
Render as a slot — wrap a <Link> to make a button-styled link. accessibility·Use accent-fill (not accent-default) for text-bearing fills — AA contrast (see Accessibility).
·Always has a visible focus ring; never remove outline without a replacement.
·For a link styled as a button, use asChild so it stays an <a>.
usagetsx
import { Button } from "@/components/ui/button"
<Button>Book a call</Button>
<Button variant="outline" size="lg">View work</Button>
<Button asChild><Link href="/contact">Contact</Link></Button>