"use client";
import { motion, type Variants } from "framer-motion";
import type { ReactNode } from "react";
/* ─── Fade-up stagger container ─── */
const containerVariants: Variants = {
hidden: {},
show: { transition: { staggerChildren: 0.06, delayChildren: 0.1 } },
};
const itemVariants: Variants = {
hidden: { opacity: 0, y: 24, filter: "blur(4px)" },
show: {
opacity: 1,
y: 0,
filter: "blur(0px)",
transition: { duration: 0.5, ease: [0.25, 0.46, 0.45, 0.94] },
},
};
export function StaggerContainer({
children,
className,
}: {
children: ReactNode;
className?: string;
}) {
return (
{children}
);
}
export function StaggerItem({
children,
className,
}: {
children: ReactNode;
className?: string;
}) {
return (
{children}
);
}
/* ─── Fade in (standalone) ─── */
export function FadeIn({
children,
className,
delay = 0,
direction = "up",
}: {
children: ReactNode;
className?: string;
delay?: number;
direction?: "up" | "down" | "left" | "right" | "none";
}) {
const offsets = {
up: { y: 30 },
down: { y: -30 },
left: { x: 30 },
right: { x: -30 },
none: {},
};
return (
{children}
);
}
/* ─── Animated counter ─── */
export { AnimatedCounter } from "./AnimatedCounter";
/* ─── Hover card ─── */
export function HoverCard({
children,
className,
}: {
children: ReactNode;
className?: string;
}) {
return (
{children}
);
}
/* ─── Scale on tap ─── */
export function ScaleTap({
children,
className,
}: {
children: ReactNode;
className?: string;
}) {
return (
{children}
);
}