"use client";
import { useRef } from "react";
import { motion, useInView } from "motion/react";
import { ease, staggerVariants } from "./animations";
export function FadeUp({
children,
delay = 0,
className = "",
style,
}: {
children: React.ReactNode;
delay?: number;
className?: string;
style?: React.CSSProperties;
}) {
const ref = useRef<HTMLDivElement>(null);
const inView = useInView(ref, { once: true, margin: "-60px 0px" });
return (
<motion.div
ref={ref}
className={className}
initial={{ opacity: 0, y: 16 }}
animate={inView ? { opacity: 1, y: 0 } : {}}
transition={{ duration: 0.42, ease, delay }}
style={style}
>
{children}
</motion.div>
);
}
export function StaggerInView({
children,
className = "",
style,
}: {
children: React.ReactNode;
className?: string;
style?: React.CSSProperties;
}) {
const ref = useRef<HTMLDivElement>(null);
const inView = useInView(ref, { once: true, margin: "-60px 0px" });
return (
<motion.div
ref={ref}
className={className}
initial="hidden"
animate={inView ? "visible" : "hidden"}
variants={staggerVariants}
style={style}
>
{children}
</motion.div>
);
}