@props([ 'client', 'showActions' => true, 'showProductColumns' => true, 'liveQuantities' => false, 'gridTemplateColumns' => null, 'gridMinWidth' => null, 'logoClass' => 'h-14 w-14', ]) @php $products = $client->resolvedProducts(); $daysUntilRenewal = $client->renewal_date ? $client->daysUntilRenewal() : null; $isOverdue = $daysUntilRenewal !== null && $daysUntilRenewal < 0; $isDueToday = $daysUntilRenewal === 0; $productCount = count($products); $clientCol = 'minmax(10rem, 1.5fr)'; $renewalCol = 'minmax(12rem, 1.55fr)'; $productCol = 'minmax(6.5rem, 1fr)'; $actionCol = 'minmax(7.25rem, 8.75rem)'; if ($gridTemplateColumns !== null) { $resolvedGridTemplateColumns = $gridTemplateColumns; $resolvedGridMinWidth = $gridMinWidth; } else { $gridColumns = [$clientCol, $renewalCol]; if ($showProductColumns) { if ($productCount > 0) { foreach ($products as $_product) { $gridColumns[] = $productCol; $gridColumns[] = $productCol; } } else { $gridColumns[] = 'minmax(8rem, 1fr)'; } } if ($showActions) { $gridColumns[] = $actionCol; } $resolvedGridTemplateColumns = implode(' ', $gridColumns); $resolvedGridMinWidth = max($showProductColumns ? 800 : 520, count($gridColumns) * 105); } @endphp
$gridTemplateColumns !== null, ]) style="grid-template-columns: {{ $resolvedGridTemplateColumns }};@if ($gridTemplateColumns === null || $gridMinWidth !== null) min-width: {{ $resolvedGridMinWidth }}px;@endif" > {{-- Client --}}
$gridTemplateColumns !== null, 'min-w-[10rem] px-4 py-5' => $gridTemplateColumns === null, ])> @if ($client->logo_path) @else
$logoClass === 'h-14 w-14', 'text-base' => $logoClass !== 'h-14 w-14'])> {{ strtoupper(substr($client->name, 0, 1)) }}
@endif

$gridTemplateColumns !== null, 'mt-2 text-sm sm:text-base' => $gridTemplateColumns === null, ])>{{ $client->name }}

{{-- Renewal --}}
$gridTemplateColumns !== null, 'min-w-[12rem] px-3 py-5' => $gridTemplateColumns === null, ])>
! $client->renewal_date, ])>

Days until renewal

$isDueToday || $isOverdue, ])> @if ($client->renewal_date) @if ($daysUntilRenewal > 0) {{ $daysUntilRenewal }} {{ $daysUntilRenewal === 1 ? 'day' : 'days' }} @elseif ($daysUntilRenewal === 0) Today @else {{ abs($daysUntilRenewal) }} {{ abs($daysUntilRenewal) === 1 ? 'day' : 'days' }} overdue @endif @else Not set @endif

@if ($showProductColumns) @if ($productCount > 0) @foreach ($products as $index => $product)

{{ $product['name'] ?? '—' }}

{{ $product['quantity'] ?? '—' }}

@endforeach @else
No products
@endif @endif @if ($showActions)
$gridTemplateColumns !== null, 'flex flex-col items-stretch gap-2.5 px-4 py-4' => $gridTemplateColumns === null, ])> @php $compactActionBtn = 'inline-flex h-10 min-h-10 min-w-0 flex-1 basis-0 items-center justify-center rounded-full border-2 px-2 text-center text-sm font-semibold leading-none normal-case transition'; $tableActionBtn = 'w-full max-w-[8.75rem] rounded-full text-center font-bold uppercase leading-tight px-2.5 py-2 text-[10px]'; @endphp $gridTemplateColumns !== null, $compactActionBtn => $gridTemplateColumns !== null, 'btn-oah rounded-full px-4 py-2.5 text-xs' => $gridTemplateColumns === null, $tableActionBtn => $gridTemplateColumns === null, ])> Update $gridTemplateColumns !== null, $compactActionBtn => $gridTemplateColumns !== null, 'rounded-full border-2 border-oah-black px-4 py-2.5 text-xs' => $gridTemplateColumns === null, $tableActionBtn => $gridTemplateColumns === null, ])> Top up
@endif