// components you own
UI that feels physical.
shadcn's distribution model, rebuilt on Base UI with a motion.dev feel layer — springs, touch feedback, depth.
Touch feedback
Every control recedes into the surface on press and springs back — with a haptic click on devices that can.
whileTap = depth.pressed · haptic = "tap"Docs →Listening…
Agent presence
State-driven motion for voice agents — dots that breathe with the audio level and never go dead.
state = "listening" · level = 0.42Docs →Built for agents
A whole workbench tier — status, git, mode — in the same springs, depth, and squircle language you own.
status = "working" · pr.state = "open"Docs →The condense
Overlays rise out of their trigger and fall back on dismiss — one motion, both directions, backdrop in sync.
condense.surfaceDocs →Start in one command.
init scaffolds — or wires up — your app: the theme tokens, the depth shadows, and the foundation. Then add any component. Next.js, Vite, or Remix; Tailwind v4.
bunx --bun @seamui/cli@latest initbunx --bun @seamui/cli@latest add buttonPrefer no extra CLI? Every component installs straight from the registry — the shadcn CLI or the raw URL:
bunx --bun shadcn@latest add @seamui/buttonhttps://seamui.dev/r/button.jsonThen open components/ui/button.tsx — it's yours. Retune every spring from one line in lib/motion.ts; give it all a click and a buzz with one provider.