/**
 * StreamingResponse Animation Variants
 * Motion variants for streaming text animations
 */
/**
 * Token fade-in animation
 * Each new token fades in with a slight upward movement
 */
const tokenFadeIn = {
    hidden: {
        opacity: 0,
        y: 4,
        filter: 'blur(1.5px)',
    },
    visible: {
        opacity: 1,
        y: 0,
        filter: 'blur(0px)',
    },
};
const tokenTransition = {
    duration: 0.25,
    ease: [0.2, 0.8, 0.2, 1], // snappy easing
};
/**
 * Block slide-in animation
 * New markdown blocks (paragraphs, code, lists) slide in from below
 */
const blockSlideIn = {
    hidden: {
        opacity: 0,
        y: 6,
    },
    visible: {
        opacity: 1,
        y: 0,
    },
};
const blockTransition = {
    duration: 0.35,
    ease: [0.2, 0.8, 0.2, 1],
};
/**
 * Streaming cursor (caret) animation
 * Pulses while streaming is active
 */
const cursorPulse = {
    pulse: {
        opacity: [1, 0.4, 1],
        transition: {
            duration: 0.8,
            repeat: Infinity,
            ease: 'easeInOut',
        },
    },
};
/**
 * Inline token fade-in animation
 * Used for word-by-word animation inside markdown prose elements
 * No y-movement to prevent layout jitter in inline text
 */
const inlineTokenFadeIn = {
    hidden: {
        opacity: 0,
        filter: 'blur(1.5px)',
    },
    visible: {
        opacity: 1,
        filter: 'blur(0px)',
    },
};
const inlineTokenTransition = {
    duration: 0.25,
    ease: [0.2, 0.8, 0.2, 1],
};
/**
 * Container animation for staggered children
 */
const staggerContainer = {
    visible: {
        transition: {
            staggerChildren: 0.03,
        },
    },
};

export { blockSlideIn, blockTransition, cursorPulse, inlineTokenFadeIn, inlineTokenTransition, staggerContainer, tokenFadeIn, tokenTransition };
