{{-- ============================================ --}} {{-- GLOBAL FLASH POPUP NOTIFICATION --}} {{-- Reusable: include in any layout / page --}} {{-- ============================================ --}} @php // Susun semua flash messages dari berbagai sumber $flashMessages = []; // Error - dari validation errors if($errors->any()){ $title = 'Validasi Gagal!'; $msg = $errors->first(); if($errors->has('login_as')){ $title = 'Role Tidak Sesuai!'; } elseif($errors->has('password')){ $title = 'Password Salah!'; } elseif($errors->has('email')){ $emailMsg = $errors->first('email'); if(stripos($emailMsg, 'attempts') !== false || stripos($emailMsg, 'second') !== false || stripos($emailMsg, 'menit') !== false || stripos($emailMsg, 'detik') !== false){ $title = 'Terlalu Banyak Percobaan!'; } elseif(stripos($emailMsg, 'credentials') !== false || stripos($emailMsg, 'tidak cocok') !== false || stripos($emailMsg, 'invalid') !== false || stripos($emailMsg, 'failed') !== false){ $title = 'Email atau Password Salah!'; $msg = 'Email atau password yang Anda masukkan tidak cocok.'; } else { $title = 'Login Gagal!'; } } $flashMessages[] = ['type' => 'error', 'title' => $title, 'message' => $msg]; } // Error dari session if(session('error')){ $flashMessages[] = ['type' => 'error', 'title' => 'Terjadi Kesalahan!', 'message' => session('error')]; } // Success if(session('success')){ $flashMessages[] = ['type' => 'success', 'title' => 'Berhasil!', 'message' => session('success')]; } // Status (Laravel default) if(session('status') && !in_array(session('status'), ['verification-link-sent', 'profile-updated', 'password-updated'])){ $flashMessages[] = ['type' => 'success', 'title' => 'Berhasil!', 'message' => session('status')]; } // Warning if(session('warning')){ $flashMessages[] = ['type' => 'warning', 'title' => 'Peringatan!', 'message' => session('warning')]; } // Info if(session('info')){ $flashMessages[] = ['type' => 'info', 'title' => 'Informasi', 'message' => session('info')]; } @endphp @if(count($flashMessages) > 0)
@foreach($flashMessages as $idx => $flash) @php $colors = match($flash['type']){ 'error' => [ 'bg' => 'from-red-600 to-rose-600', 'border' => 'border-red-400/30', 'shadow' => 'shadow-red-900/40', 'text' => 'text-red-50', 'icon' => 'M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z', ], 'success' => [ 'bg' => 'from-emerald-600 to-teal-600', 'border' => 'border-emerald-400/30', 'shadow' => 'shadow-emerald-900/40', 'text' => 'text-emerald-50', 'icon' => 'M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z', ], 'warning' => [ 'bg' => 'from-amber-500 to-orange-500', 'border' => 'border-amber-400/30', 'shadow' => 'shadow-amber-900/40', 'text' => 'text-amber-50', 'icon' => 'M12 9v2m0 4h.01M5.07 19h13.86c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z', ], 'info' => [ 'bg' => 'from-blue-600 to-indigo-600', 'border' => 'border-blue-400/30', 'shadow' => 'shadow-blue-900/40', 'text' => 'text-blue-50', 'icon' => 'M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z', ], default => [ 'bg' => 'from-gray-600 to-gray-700', 'border' => 'border-gray-400/30', 'shadow' => 'shadow-gray-900/40', 'text' => 'text-gray-50', 'icon' => 'M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z', ], }; @endphp

{{ $flash['title'] }}

{{ $flash['message'] }}

@endforeach
@endif