import { memo, useEffect, useMemo, useRef } from 'react'; import { motion } from 'motion/react'; import { SEYAR_INFO, SEYAR_SVG, type SeyarChar, type SeyarMood } from './seyar'; interface Props { char: SeyarChar; mood?: SeyarMood; size?: number; /** بالا و پایین رفتنِ آرام، برای ماسکوتی که منتظر است. */ bob?: boolean; className?: string; } function SeyarMascotBase({ char, mood = 'idle', size = 100, bob = false, className }: Props) { const svg = useMemo(() => SEYAR_SVG[char](mood), [char, mood]); // ظاهر شدن با فنر فقط وقتی حالت یا شخصیت عوض می‌شود؛ روی هر صفحه‌ی تازه، ماسکوت دیر از صفر بزرگ // می‌شد و بعد از رسیدنِ صفحه یک «پرش»ِ جدا می‌ساخت. const mounted = useRef(false); useEffect(() => { mounted.current = true; }, []); return ( ); } export const SeyarMascot = memo(SeyarMascotBase);