seamui.

// 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. The code lands in your repo; edit it like you wrote it.

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 →

The condense

Overlays rise out of their trigger and fall back on dismiss — one motion, both directions, backdrop in sync.

condense.surfaceDocs →

Wherever your stack lives.

seamuibunx --bun seamui@latest add button
shadcnbunx --bun shadcn@latest add @seamui/button
registryhttps://seamui.dev/r/button.json

Then 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.