@props([ 'variant' => null, 'status' => null, 'label' => null, 'dot' => true, ]) @php $normalized = strtolower(trim((string) ($status ?? ''))); $config = match ($normalized) { 'approved', 'disetujui' => [ 'variant' => 'emerald', 'label' => 'Disetujui', 'dot' => true, ], 'pending', 'menunggu', 'menunggu review', 'menunggu persetujuan' => [ 'variant' => 'amber', 'label' => 'Menunggu', 'dot' => true, ], 'rejected', 'ditolak', 'revisi' => [ 'variant' => 'rose', 'label' => 'Ditolak', 'dot' => true, ], 'aktif', 'active' => [ 'variant' => 'emerald', 'label' => 'Aktif', 'dot' => true, ], 'lulus' => [ 'variant' => 'blue', 'label' => 'Lulus', 'dot' => true, ], 'selesai' => [ 'variant' => 'blue', 'label' => 'Selesai', 'dot' => true, ], 'fail', 'failed', 'tidak lulus' => [ 'variant' => 'rose', 'label' => 'Tidak Lulus', 'dot' => true, ], 'nonaktif', 'inactive' => [ 'variant' => 'gray', 'label' => 'Nonaktif', 'dot' => true, ], 'superadmin' => [ 'variant' => 'rose', 'label' => 'Superadmin', 'dot' => true, ], 'mentor' => [ 'variant' => 'purple', 'label' => 'Mentor', 'dot' => true, ], 'intern' => [ 'variant' => 'indigo', 'label' => 'Intern', 'dot' => true, ], default => [ 'variant' => $variant ?? 'gray', 'label' => $normalized ? ucfirst($normalized) : '', 'dot' => $dot, ], }; $activeVariant = $variant ?? $config['variant']; $activeLabel = $label ?? $config['label']; $showDot = $dot ?? $config['dot']; $classes = match ($activeVariant) { 'emerald', 'success' => 'bg-emerald-50 text-emerald-700 border-emerald-200', 'amber', 'warning' => 'bg-amber-50 text-amber-700 border-amber-200', 'rose', 'danger', 'red' => 'bg-rose-50 text-rose-700 border-rose-200', 'blue', 'info' => 'bg-blue-50 text-blue-700 border-blue-200', 'purple' => 'bg-purple-50 text-purple-700 border-purple-200', 'indigo' => 'bg-indigo-50 text-indigo-700 border-indigo-200', default => 'bg-gray-100 text-gray-600 border-gray-200', }; $dotClasses = match ($activeVariant) { 'emerald', 'success' => 'bg-emerald-500', 'amber', 'warning' => 'bg-amber-500', 'rose', 'danger', 'red' => 'bg-rose-500', 'blue', 'info' => 'bg-blue-500', 'purple' => 'bg-purple-500', 'indigo' => 'bg-indigo-500', default => 'bg-gray-400', }; @endphp merge(['class' => "inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-semibold border $classes"]) }}> @if ($showDot) @endif {{ $slot->isNotEmpty() ? $slot : $activeLabel }}