All motion keywords
Press
tap-rippleRipple
Material-style radial ripple from the tap point.
tap / hover to play
const [ripples, setRipples] = useState<{ id: number; x: number; y: number }[]>([]);
function onTap(e: React.PointerEvent) {
const r = e.currentTarget.getBoundingClientRect();
setRipples((rs) => [...rs, { id: performance.now(), x: e.clientX - r.left, y: e.clientY - r.top }]);
}
<button onPointerDown={onTap} className="relative overflow-hidden">
{ripples.map((r) => (
<motion.span
key={r.id}
initial={{ scale: 0, opacity: 0.4 }}
animate={{ scale: 4, opacity: 0 }}
transition={{ duration: 0.6, ease: "easeOut" }}
onAnimationComplete={() => setRipples((rs) => rs.filter((x) => x.id !== r.id))}
style={{ position: "absolute", left: r.x, top: r.y, width: 40, height: 40, borderRadius: 999, background: "currentColor" }}
/>
))}
</button>How to use it
Copy-paste
Grab the code above and drop it onto any motion.* element.
Or name it
In Claude Code / Cursor, run /ss-motion tap-ripple and the recipe lands in your code.
Personality
Pairs naturally with the snap seed (instant, decisive).
Related Press moves
20+ named motion moves
All copy-paste, all in StyleSeed’s design engine. MIT.