"use client"; import { motion, useInView, Variants } from "framer-motion"; import { useRef } from "react"; interface BlurFadeProps { children: React.ReactNode; className?: string; variant?: { hidden: { y: number }; visible: { y: number }; }; duration?: number; delay?: number; yOffset?: number; inView?: boolean; inViewMargin?: `${number}px` | `${number}%` | `${number}px ${number}px` | `${number}px ${number}px ${number}px ${number}px`; blur?: string; } export function BlurFade({ children, className, variant, duration = 0.4, delay = 0, yOffset = 6, inView = false, inViewMargin = "-50px", blur = "6px", }: BlurFadeProps) { const ref = useRef(null); const isInView = useInView(ref, { once: true, margin: inViewMargin }); const defaultVariants: Variants = { hidden: { y: yOffset, opacity: 0, filter: `blur(${blur})` }, visible: { y: -yOffset, opacity: 1, filter: `blur(0px)` }, }; const combinedVariants = variant || defaultVariants; return ( {children} ); }