@props([ 'variant' => 'default', 'size' => 'default', 'href' => null, // If provided, renders as ]) @php $baseClass = 'inline-flex max-w-full items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-green-500/50 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50'; $variants = [ 'default' => 'bg-slate-900 text-slate-50 hover:bg-slate-900/90 shadow-xs', 'destructive' => 'bg-red-500 text-slate-50 hover:bg-red-500/90 shadow-xs', 'outline' => 'border border-slate-200 bg-white hover:bg-slate-50 hover:text-slate-900', 'secondary' => 'bg-slate-100 text-slate-900 hover:bg-slate-200/80', 'ghost' => 'hover:bg-slate-100 hover:text-slate-900', 'link' => 'text-slate-900 underline-offset-4 hover:underline', 'primary' => 'bg-green-600 text-white hover:bg-green-700 shadow-xs', // Explicit Primary 'faint' => 'bg-green-50 text-green-700 hover:bg-green-100 border border-green-100', // Green Faint 'destructive-faint' => 'bg-red-50 text-red-600 hover:bg-red-100', 'info' => 'bg-blue-600 text-white hover:bg-blue-700 shadow-xs', ]; $sizes = [ 'default' => 'h-10 px-4 py-2', 'sm' => 'h-9 rounded-md px-3', 'lg' => 'h-11 rounded-md px-8', 'icon' => 'h-10 w-10', ]; $classes = $baseClass . ' ' . $variants[$variant] . ' ' . $sizes[$size]; @endphp @if ($href) merge(['class' => $classes]) }}> {{ $slot }} @else @endif