import React from 'react'; import { motion, AnimatePresence } from 'framer-motion'; interface WalletIllustrationProps { className?: string; circleColors?: [string, string, string, string]; currentStep: number; } interface AnimatedEllipseProps { cx: string; cy: string; rx: string; ry: string; transform: string; fill: string; filter: string; } export const WalletIllustration: React.FC = ({ className = '', circleColors = ['#5B48AD', '#DC1FFF', '#00FFA3', '#FECA1A'], currentStep, }) => { const springTransition = { type: 'spring', stiffness: 150, damping: 19, mass: 1.2, }; const svgVariants = { initial: { y: 50, rotate: -20, scale: 0, }, step1: { y: 0, rotate: 20, scale: 1, transition: { springTransition, }, }, step2: { y: -44, x: -115, rotate: 360, scale: 0.2, transition: { springTransition, }, }, step3: { y: 0, x: 0, rotate: 0, scale: 0.6, transition: { ...springTransition, }, }, }; const containerVariants = { hidden: {}, visible: { transition: { staggerChildren: 0.1, delayChildren: 0.2, }, }, }; const ellipseVariants = { hidden: { scale: 0, opacity: 0 }, visible: { scale: 1, opacity: 1, transition: { springTransition, delay: 0.2, }, }, }; const circleVariants = { visible: { scale: 1, opacity: 1, x: 0 }, hidden: { scale: 0, opacity: 0, x: -100 }, }; const backgroundVariants = { hidden: { opacity: 0, scale: 0.8 }, visible: { opacity: 1, scale: 1, transition: { ...springTransition } }, step3: { opacity: 1, scale: 1, transition: { ...springTransition } }, }; const tokenVariants = { hidden: { scale: 0, opacity: 0, x: -100 }, btcStep0: { x: 10, y: -120, scale: 0.8, rotate: -5, opacity: 1, transition: { springTransition, delay: 0.2 }, }, btcStep1: { x: -150, y: -22, scale: 0.23, rotate: -13, opacity: 1, transition: { springTransition }, }, ethStep0: { x: 48, y: 27, scale: 0.7, rotate: 0, opacity: 1, transition: { springTransition, delay: 0.3 }, }, ethStep1: { x: -150, y: 10, scale: 0.23, rotate: 0, opacity: 1, transition: { springTransition }, }, solStep0: { x: -150, y: -30, scale: 0.6, rotate: -15, opacity: 1, transition: { springTransition, delay: 0.4 }, }, solStep1: { x: -150, y: 42, scale: 0.23, rotate: 0, opacity: 1, transition: { springTransition }, }, }; const textVariants = { hidden: { opacity: 0, y: 50 }, visible: { opacity: 1, y: 0, transition: { springTransition }, }, }; const AnimatedEllipse: React.FC = ({ cx, cy, rx, ry, transform, fill, filter }) => ( ); return (
{currentStep === 0 && ( <>
)} {currentStep === 1 && ( <> Connected )} {currentStep === 2 && ( <> {/* New Background SVG for Step 3 */} )}
); };