Button

Displays a button. Built on Base UI, animated with seam depth motion.

tsx
import { Button } from "@/registry/seam/ui/button"

export default function ButtonDemo() {
  return <Button>Continue</Button>
}
bunx --bun seamui@latest add button

API

PropTypeDefaultDescription
variant"default" | "destructive" | "outline" | "secondary" | "ghost" | "link""default"Visual style.
size"default" | "sm" | "lg" | "icon""default"Dimensions.
renderReactElement | (props, state) => ReactElementRender a different element (e.g. an <a>) — Base UI's replacement for asChild.
hapticboolean | "tap" | "tick" | "success" | "error"trueHaptic on press when a HapticsProvider is mounted; false opts out.
disabledbooleanfalseAlso accepts Base UI's focusableWhenDisabled.

Plus all native <button> props.

Notes

  • ghost and link stay flat — no press depth by design.
  • focusableWhenDisabled keeps tab order stable when a button disables mid-interaction.

Press feedback, reduced motion, and haptics follow the global policy — see Motion and Haptics.