@props([ 'type' => 'button', 'variant' => 'primary', 'size' => 'md', 'icon' => null, 'iconPosition' => 'left' ]) @php $baseClasses = 'inline-flex items-center justify-center font-medium rounded-xl transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed'; $variants = [ 'primary' => 'bg-indigo-600 text-white hover:bg-indigo-700 focus:ring-indigo-500 active:scale-95', 'secondary' => 'bg-slate-100 dark:bg-slate-700 text-slate-700 dark:text-slate-200 hover:bg-slate-200 dark:hover:bg-slate-600 focus:ring-slate-500', 'success' => 'bg-emerald-600 text-white hover:bg-emerald-700 focus:ring-emerald-500 active:scale-95', 'danger' => 'bg-red-600 text-white hover:bg-red-700 focus:ring-red-500 active:scale-95', 'warning' => 'bg-amber-500 text-white hover:bg-amber-600 focus:ring-amber-500 active:scale-95', 'outline' => 'border-2 border-indigo-600 text-indigo-600 hover:bg-indigo-50 dark:hover:bg-indigo-900/20 focus:ring-indigo-500', 'ghost' => 'text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-700 focus:ring-slate-500', ]; $sizes = [ 'xs' => 'px-2.5 py-1.5 text-xs', 'sm' => 'px-3 py-2 text-sm', 'md' => 'px-4 py-2.5 text-sm', 'lg' => 'px-5 py-3 text-base', 'xl' => 'px-6 py-3.5 text-lg', ]; $classes = $baseClasses . ' ' . $variants[$variant] . ' ' . $sizes[$size]; @endphp