"use client"; import React from "react"; import { motion } from "framer-motion"; type RippleLoaderProps = { icon?: React.ReactNode; size?: number; duration?: number; // in seconds logoColor?: string; }; const RippleLoader: React.FC = ({ icon, size = 250, duration = 2, // use number for easier calculations logoColor = "grey", }) => { const baseInset = 40; const rippleBoxes = Array.from({ length: 5 }, (_, i) => ({ inset: `${baseInset - i * 10}%`, zIndex: 99 - i, delay: i * 0.2, opacity: 1 - i * 0.2, })); return (
{rippleBoxes.map((box, i) => ( ))}
{icon && React.cloneElement(icon as React.ReactElement, { style: { width: "100%", height: "100%", fill: "currentColor", }, })}
); }; export default RippleLoader;