// Main badge variants with optimized transitions
const badgeVariants = {
    initial: {
        opacity: 1,
        scale: 1,
    },
    animate: {
        opacity: 1,
        scale: 1,
        transition: {
            type: "spring",
            stiffness: 500,
            damping: 30,
            mass: 1,
        },
    },
    exit: {
        opacity: 0,
        scale: 0.2,
        transition: {
            type: "spring",
            stiffness: 500,
            damping: 25,
            mass: 0.8,
            duration: 0.3,
        },
    },
};
// Dot variants
const dotVariants = {
    initial: {
        opacity: 0,
        scale: 0,
    },
    animate: {
        opacity: 1,
        scale: 1,
        transition: {
            type: "spring",
            stiffness: 500,
            damping: 30,
        },
    },
    exit: {
        opacity: 0,
        scale: 0,
        transition: {
            duration: 0.15,
            ease: "easeIn",
        },
    },
};
// Dismiss button variants - optimized for performance
const dismissButtonVariants = {
    initial: {
        opacity: 0.75,
    },
    hover: {
        opacity: 1,
        transition: { duration: 0.15, ease: "easeOut" },
    },
    tap: {
        scale: 0.95,
        transition: { duration: 0.1, ease: "easeOut" },
    },
};
// Optimized dismiss animation sequence
// This uses Framer Motion's built-in sequencing capabilities
const dismissVariants = {
    initial: {
        opacity: 0,
        scale: 0.8,
    },
    animate: {
        opacity: 1,
        scale: 1,
        transition: {
            type: "spring",
            stiffness: 500,
            damping: 30,
            mass: 1,
        },
    },
    // First stage of exit - slight pop
    exit: {
        opacity: 0,
        scale: 0.2,
        transition: {
            opacity: {
                duration: 0.3,
                ease: "easeOut",
            },
            scale: {
                type: "spring",
                stiffness: 300,
                damping: 20,
                // Add a slight delay to create the pop effect
                delay: 0.05,
            },
            duration: 0.4,
        },
    },
};
// Animation timing constants (in ms)
const animationTiming = {
    dismissDelay: 400, // Total animation duration
};

export { animationTiming, badgeVariants, dismissButtonVariants, dismissVariants, dotVariants };
