veza/apps/web/src/components/layout/PageTransition.tsx

27 lines
587 B
TypeScript
Raw Normal View History

import { motion } from 'framer-motion';
import { useLocation } from 'react-router-dom';
import { ReactNode } from 'react';
interface PageTransitionProps {
children: ReactNode;
}
export function PageTransition({ children }: PageTransitionProps) {
const location = useLocation();
return (
<motion.div
key={location.pathname}
initial={{ opacity: 0, y: 8 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: -8 }}
transition={{
duration: 0.2,
ease: [0.25, 0.1, 0.25, 1],
}}
>
{children}
</motion.div>
);
}