@props([ 'variant' => 'primary', 'size' => 'md', 'href' => null, 'type' => 'button' ]) @php $baseClasses = 'flex whitespace-nowrap items-center justify-center font-medium transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed'; $variantClasses = [ 'primary' => 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500 shadow-sm hover:shadow-md', 'outline' => 'bg-transparent border-2 border-slate-300 text-slate-700 hover:border-slate-400 hover:bg-slate-50 focus:ring-slate-500', 'ghost' => 'bg-transparent text-slate-600 hover:bg-slate-100 focus:ring-slate-500', 'white' => 'bg-white text-blue-600 hover:bg-blue-50 focus:ring-white shadow-lg hover:shadow-xl' ]; $sizeClasses = [ 'sm' => 'px-3 py-1.5 text-sm rounded-md', 'md' => 'px-4 py-2 text-base rounded-lg', 'lg' => 'px-6 py-3 text-lg rounded-lg' ]; $classes = $baseClasses . ' ' . $variantClasses[$variant] . ' ' . $sizeClasses[$size]; @endphp @if($href) merge(['class' => $classes]) }}> {{ $slot }} @else @endif