import type { Variants } from 'framer-motion'

/**
 * Fade In Up - Standard Section Animation
 */
export const fadeInUp: Variants = {
  initial: { opacity: 0, y: 30 },
  animate: { opacity: 1, y: 0 },
}

export const fadeInUpProps = {
  initial: 'initial',
  whileInView: 'animate',
  viewport: { once: true, margin: '-100px' },
  transition: { duration: 0.6, ease: 'easeOut' },
}

/**
 * Stagger Children
 */
export const staggerContainer: Variants = {
  initial: {},
  animate: {
    transition: {
      staggerChildren: 0.1,
    },
  },
}

/**
 * Scale In
 */
export const scaleIn: Variants = {
  initial: { opacity: 0, scale: 0.95 },
  animate: { opacity: 1, scale: 1 },
}

/**
 * Slide In from Left/Right
 */
export const slideInLeft: Variants = {
  initial: { opacity: 0, x: -30 },
  animate: { opacity: 1, x: 0 },
}

export const slideInRight: Variants = {
  initial: { opacity: 0, x: 30 },
  animate: { opacity: 1, x: 0 },
}

/**
 * Card Hover Effect (Definity Style)
 */
export const cardHover = {
  rest: {
    y: 0,
    boxShadow: '0px 1px 1px rgba(0, 0, 0, 0.2)',
  },
  hover: {
    y: -10,
    boxShadow: '0 22px 43px rgba(0, 0, 0, 0.15)',
    transition: { duration: 0.3 },
  },
}
