drawDB/src/animations/SlideIn.jsx

31 lines
793 B
React
Raw Normal View History

2024-02-26 08:16:09 +08:00
import { useRef, useEffect } from "react";
import { motion, useInView, useAnimation } from "framer-motion";
export default function SlideIn({ children, duration, delay, className }) {
const ref = useRef(null);
const isInView = useInView(ref, { once: true });
const mainControls = useAnimation();
useEffect(() => {
if (isInView) {
mainControls.start("visible");
}
}, [isInView, mainControls]);
return (
<div ref={ref} className={className}>
<motion.div
variants={{
hidden: { opacity: 0, x: -60 },
visible: { opacity: 1, x: 0 },
}}
initial="hidden"
animate={mainControls}
transition={{ duration, delay }}
className="h-full"
>
{children}
</motion.div>
</div>
);
}