import React from 'react'; import { motion, HTMLMotionProps } from 'framer-motion'; interface ButtonProps extends HTMLMotionProps<'button'> { variant?: 'primary' | 'secondary' | 'outline' | 'ghost'; isLoading?: boolean; } export const Button: React.FC = ({ variant = 'primary', isLoading, children, className = '', ...props }) => { const baseStyles = "px-6 py-3 rounded-2xl font-semibold transition-all duration-300 flex items-center justify-center gap-2 active:scale-95 disabled:opacity-50 disabled:cursor-not-allowed"; const variants = { primary: "bg-gradient-to-r from-brand to-brand-dark text-white shadow-lg shadow-brand/30 hover:shadow-brand/50 hover:scale-[1.02]", secondary: "bg-white/40 backdrop-blur-md text-brand border border-brand/20 hover:bg-white/60 hover:border-brand/40 shadow-sm", outline: "border-2 border-brand text-brand hover:bg-brand hover:text-white", ghost: "text-brand hover:bg-brand/10" }; return ( {isLoading ? (
) : children} ); };