@php $eur = fn ($n) => '€'.number_format((float) $n); $initials = fn ($u) => strtoupper(mb_substr((string) $u->first_name, 0, 1).mb_substr((string) $u->last_name, 0, 1)) ?: '?'; $alphabet = range('A', 'Z'); @endphp
{{-- Search panel --}}
Matches first name, last name or campaign username.
  Browse by surname A–Z
@foreach ($alphabet as $L) @endforeach
{{-- Results meta --}}
@if ($fundraisers->total() === 0) No matches @else Showing {{ $fundraisers->firstItem() }}–{{ $fundraisers->lastItem() }} of {{ number_format($fundraisers->total()) }} {{ \Illuminate\Support\Str::plural('fundraiser', $fundraisers->total()) }} @if ($letter !== 'all') · surname “{{ $letter }}”@endif @if ($search !== '') · “{{ $search }}”@endif @endif
Show per page
{{-- Results --}} @if ($fundraisers->isEmpty())
No fundraisers found
Try a different name, username, or letter.
@else
@foreach ($fundraisers as $u) @php $raised = (float) ($u->campaign?->available_fund ?? 0); $goal = (int) ($u->campaign?->goal ?: $u->goal ?: 600); $pct = $goal > 0 ? (int) round($raised / $goal * 100) : 0; $over = $raised >= $goal && $goal > 0; $url = route('campaign.show', $u->username); @endphp
{{-- Whole-card link to the campaign page (the Sponsor button sits above it). --}}
{{ $initials($u) }}
{{ $u->full_name ?: trim($u->first_name.' '.$u->last_name) }}
{{ '@'.$u->username }}
@if ($u->county)
{{ $u->county }}
@endif
{{-- Listed participants are non-closed → authorised. --}} Authorised
{{ $eur($raised) }} of {{ $eur($goal) }} {{ $pct }}%
@endforeach
{{-- Pagination --}} @if ($fundraisers->hasPages()) @endif @endif