import { motion, type HTMLMotionProps } from 'framer-motion'
import { cn } from '@/lib/utils'

interface CardProps extends HTMLMotionProps<'div'> {
  hover?: boolean
  glow?: boolean
  padding?: 'none' | 'sm' | 'md' | 'lg'
}

const paddings = { none: '', sm: 'p-4', md: 'p-5', lg: 'p-6' }

export function Card({ hover = true, glow = false, padding = 'md', className, children, ...props }: CardProps) {
  return (
    <motion.div
      initial={{ opacity: 0, y: 20 }}
      animate={{ opacity: 1, y: 0 }}
      whileHover={hover ? { y: -4, scale: 1.01, transition: { duration: 0.2 } } : undefined}
      className={cn(
        'glass rounded-2xl transition-all duration-300',
        glow && 'hover:shadow-lg hover:shadow-cyan-500/10',
        paddings[padding],
        className
      )}
      {...props}
    >
      {children}
    </motion.div>
  )
}
