Spinner

An indeterminate loading indicator. Sized and colored by the text context it sits in, so it drops into buttons, fields, and empty states unchanged.

tsx
import { Spinner } from "@/registry/seam/ui/spinner"

export default function SpinnerDemo() {
  return (
    <div className="text-muted-foreground flex items-center gap-4">
      <Spinner />
      <Spinner className="size-6" />
      <Spinner className="text-primary size-8" />
    </div>
  )
}
bunx --bun @seamui/cli@latest add spinner

Notes

  • Under reduced motion the continuous rotation swaps for an opacity pulse, so loading feedback never disappears.
  • Carries role="status" and a default aria-label of “Loading”; override the label to describe what is loading when several spinners can be on screen.

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