Ripple
Installation
Copy and paste the following code into your project.
// tailwind.config.js
module.exports = {
theme: {
extend: {
animation: {
ripple: "ripple 3400ms ease infinite",
},
keyframes: {
ripple: {
"0%, 100%": {
transform: "translate(-50%, -50%) scale(1)",
},
"50%": {
transform: "translate(-50%, -50%) scale(0.9)",
},
},
},
},
},
};
components/magicui/ripple.tsx
import React, { CSSProperties } from "react";
// Modify these
const MAIN_CIRCLE_SIZE = 210;
const MAIN_CIRCLE_OPACITY = 0.24;
const NUM_CIRCLES = 8;
const Ripple = React.memo(() => {
return (
<div className="absolute left-1/2 top-1/2 h-full w-full overflow-visible">
{Array.from({ length: NUM_CIRCLES }, (_, i) => (
<div
key={i}
className={`absolute -translate-x-1/2 -translate-y-1/2 animate-ripple rounded-full bg-neutral-400`}
style={
{
width: MAIN_CIRCLE_SIZE + i * 70,
height: MAIN_CIRCLE_SIZE + i * 70,
opacity: MAIN_CIRCLE_OPACITY - i * 0.03,
animationDelay: `${i * 0.06}s`,
} as CSSProperties
}
></div>
))}
</div>
);
});
export default Ripple;