@php use App\Enums\VirtualCard\CardholderType; @endphp @extends('frontend.layouts.user.index') @section('title', __('Cardholders')) @push('styles') @endpush @section('content')
{{ __('My Cards') }} {{ __('Add New') }}
{{-- Stat strip — quick facts about this user's cardholders --}} @php $totalCount = $cardholders->total(); $approvedCount = $cardholders->where('status.value', 'approved')->count(); $pendingCount = $cardholders->where('status.value', 'pending')->count(); $personalCount = $cardholders->filter(fn ($c) => $c->card_type instanceof CardholderType && $c->card_type === CardholderType::PERSONAL)->count(); $businessCount = $cardholders->filter(fn ($c) => $c->card_type instanceof CardholderType && $c->card_type === CardholderType::BUSINESS)->count(); @endphp
{{ __('Total') }}
{{ $totalCount }}
{{ __('cardholder profiles') }}
{{ __('Approved') }}
{{ $approvedCount }}
{{ __('ready to issue') }}
{{ __('Pending') }}
{{ $pendingCount }}
{{ __('awaiting review') }}
{{ __('Mix') }}
{{ $personalCount }} / {{ $businessCount }}
{{ __(':p personal · :b business', ['p' => $personalCount, 'b' => $businessCount]) }}
{{-- Cardholder grid — responsive: table-style desktop / stacked cards mobile --}}
@forelse($cardholders as $cardholder) @php $isBusiness = $cardholder->card_type instanceof CardholderType && $cardholder->card_type === CardholderType::BUSINESS; $displayName = $isBusiness && $cardholder->business ? $cardholder->business->business_name : $cardholder->full_name; $displayEmail = $isBusiness && $cardholder->business ? $cardholder->business->contact_email : $cardholder->email; $displayPhone = $isBusiness && $cardholder->business ? $cardholder->business->contact_phone : $cardholder->mobile; $displayCountry = $isBusiness && $cardholder->business ? $cardholder->business->country : $cardholder->country; $statusColor = $cardholder->status?->badgeColor() ?? 'secondary'; $statusTone = match ($statusColor) { 'success' => 'green', 'warning' => 'amber', 'danger' => 'red', 'primary', 'info' => 'blue', default => 'neutral', }; $initials = strtoupper(substr($displayName ?? '?', 0, 1)); @endphp
@if($isBusiness) @else {{ $initials }} @endif

{{ $displayName ?: __('Unnamed cardholder') }}

{{ $cardholder->card_type?->label() }}
@if($displayEmail) {{ $displayEmail }} @endif
{{ $cardholder->status?->label() }}
{{ __('Phone') }}
{{ $displayPhone ?: '—' }}
{{ __('Country') }}
{{ $displayCountry ?: '—' }}
@if(!$isBusiness && $cardholder->id_type)
{{ __('ID') }}
{{ Str::headline(str_replace('_', ' ', $cardholder->id_type)) }}
@endif @if($isBusiness && $cardholder->business?->incorporation_country)
{{ __('Incorporated') }}
{{ $cardholder->business->incorporation_country }}
@endif
{{ __('Created') }}
{{ $cardholder->created_at?->diffForHumans() }}
{{ __('View') }} @if($cardholder->status?->isPending()) {{ __('Edit') }} @elseif($cardholder->status?->isRejected()) @endif
@empty @endforelse
@if($cardholders->hasPages())
{{ $cardholders->links() }}
@endif
{{-- Delete confirmation modal --}} @include('frontend.user.virtual_card.partials._delete_cardholder_modal') @endsection @push('scripts') @endpush