@props([ 'variant' => 'default', 'status' => null, 'size' => 'md', ]) @php $classes = match($variant) { 'primary' => 'bg-liv-50 text-liv-700 border-liv-200', 'navy' => 'bg-navy-50 text-navy-900 border-navy-200', 'success' => 'bg-emerald-50 text-emerald-700 border-emerald-200', 'warning' => 'bg-amber-50 text-amber-700 border-amber-200', 'danger' => 'bg-rose-50 text-rose-700 border-rose-200', 'info' => 'bg-sky-50 text-sky-700 border-sky-200', default => 'bg-slate-100 text-slate-700 border-slate-200', }; if ($status) { $classes = match($status) { 'new' => 'bg-slate-100 text-slate-700 border-slate-300', 'awaiting_assignment' => 'bg-amber-50 text-amber-700 border-amber-300', 'confirmed' => 'bg-sky-50 text-sky-700 border-sky-300', 'en_route_to_pickup' => 'bg-blue-50 text-blue-700 border-blue-300 animate-pulse', 'arrived_at_pickup' => 'bg-indigo-50 text-indigo-700 border-indigo-300', 'passenger_onboard' => 'bg-emerald-50 text-emerald-700 border-emerald-300', 'arrived_at_destination' => 'bg-teal-50 text-teal-700 border-teal-300', 'completed' => 'bg-green-100 text-green-800 border-green-400', 'cancelled' => 'bg-rose-50 text-rose-700 border-rose-300', 'no_show' => 'bg-orange-50 text-orange-700 border-orange-300', 'terminated' => 'bg-red-100 text-red-800 border-red-400', 'delayed' => 'bg-amber-100 text-amber-800 border-amber-400', 'incident_open' => 'bg-rose-100 text-rose-800 border-rose-400 animate-pulse', default => 'bg-slate-100 text-slate-700 border-slate-200', }; } $sizeClasses = match($size) { 'sm' => 'px-1.5 py-0.5 text-[10px]', 'lg' => 'px-3 py-1 text-sm', default => 'px-2.5 py-0.5 text-xs', }; @endphp merge(['class' => "inline-flex items-center gap-1.5 font-semibold rounded-full border shadow-2xs {$sizeClasses} {$classes}"]) }}> {{ $slot }}