'use client'; import { forwardRef } from 'react'; import { cn } from '@/lib/utils'; export interface ButtonProps extends React.ButtonHTMLAttributes { variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger'; size?: 'sm' | 'md' | 'lg'; isLoading?: boolean; } const Button = forwardRef( ({ className, variant = 'primary', size = 'md', isLoading, children, disabled, ...props }, ref) => { const baseStyles = 'inline-flex items-center justify-center rounded-lg font-medium transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed'; const variants = { primary: 'bg-gradient-to-r from-pink-500 to-purple-500 text-white hover:from-pink-600 hover:to-purple-600 focus:ring-purple-500', secondary: 'bg-gray-100 text-gray-900 hover:bg-gray-200 focus:ring-gray-500', outline: 'border-2 border-gray-200 text-gray-700 hover:bg-gray-50 focus:ring-gray-500', ghost: 'text-gray-600 hover:bg-gray-100 hover:text-gray-900 focus:ring-gray-500', danger: 'bg-red-500 text-white hover:bg-red-600 focus:ring-red-500', }; const sizes = { sm: 'text-sm px-3 py-1.5 gap-1.5', md: 'text-base px-4 py-2 gap-2', lg: 'text-lg px-6 py-3 gap-2.5', }; return ( ); } ); Button.displayName = 'Button'; export { Button };