General
Validation Summary code
Copy the implementation or inspect every file that belongs to this component unit.
resources/views/components/ui/validation-summary.blade.php
@props([
'messages' => null,
'title' => 'Please fix the following',
'icon' => 'warning-circle',
])
@php
/*
| Validation summary. Defaults to the session error bag, but accepts an
| explicit message array/string for inline component rendering and tests.
|
| Usage:
| <x-ui.validation-summary />
| <x-ui.validation-summary :messages="['Email is required.']" />
*/
$source = $messages;
if ($source === null) {
$source = session('errors');
}
if ($source instanceof \Illuminate\Support\ViewErrorBag) {
$source = $source->all();
} elseif ($source instanceof \Illuminate\Support\MessageBag) {
$source = $source->all();
}
$items = collect(is_array($source) ? $source : ($source ? [$source] : []))
->flatten()
->filter()
->values();
@endphp
@if ($items->isNotEmpty())
<div {{ $attributes->merge(['class' => 'rounded-2xl border border-red-200 bg-red-50 p-4 text-sm text-red-800 dark:border-red-900/70 dark:bg-red-950/30 dark:text-red-200']) }} role="alert">
<div class="flex items-start gap-3">
<x-ui.icon :name="$icon" weight="fill" size="lg" class="mt-0.5 shrink-0 text-red-500 dark:text-red-400" />
<div class="min-w-0">
<p class="font-semibold">{{ $title }}</p>
<ul class="mt-2 list-disc space-y-1 ps-5">
@foreach ($items as $message)
<li>{{ $message }}</li>
@endforeach
</ul>
</div>
</div>
</div>
@endif