"use client"; import { motion, type Variants } from "motion/react"; import type { ReactNode } from "react"; import { cn } from "@/lib/utils"; type Direction = "up" | "down" | "left" | "right" | "none"; type RevealProps = { children: ReactNode; className?: string; direction?: Direction; distance?: number; delay?: number; duration?: number; once?: boolean; }; const offsets: Record = { up: { y: 40 }, down: { y: -40 }, left: { x: 40 }, right: { x: -40 }, none: {}, }; export function Reveal({ children, className, direction = "up", distance, delay = 0, duration = 0.7, once = true, }: RevealProps) { const offset = offsets[direction]; const x = offset.x !== undefined ? (distance ?? offset.x) : 0; const y = offset.y !== undefined ? (distance ?? offset.y) : 0; const variants: Variants = { hidden: { opacity: 0, x, y, filter: "blur(8px)" }, show: { opacity: 1, x: 0, y: 0, filter: "blur(0px)", transition: { duration, delay, ease: [0.22, 1, 0.36, 1] }, }, }; return ( {children} ); }