@php
$projectsList = $projects instanceof \Illuminate\Contracts\Pagination\Paginator
? $projects->items()
: collect($projects)->values()->all();
$bentoRows = [];
$rowPatterns = ['wide-first', 'trio', 'narrow-first'];
$cursor = 0;
$totalProjects = count($projectsList);
$patternIndex = 0;
while ($cursor < $totalProjects) {
$pattern = $rowPatterns[$patternIndex % 3];
$cards = [];
if ($pattern === 'trio') {
for ($slot = 0; $slot < 3 && $cursor < $totalProjects; $slot++) {
$cards[] = [
'project' => $projectsList[$cursor],
'size' => 'third',
];
$cursor++;
}
} else {
$sizes = $pattern === 'wide-first' ? ['wide', 'narrow'] : ['narrow', 'wide'];
foreach ($sizes as $size) {
if ($cursor >= $totalProjects) {
break;
}
$cards[] = [
'project' => $projectsList[$cursor],
'size' => $size,
];
$cursor++;
}
}
if ($cards !== []) {
$bentoRows[] = [
'type' => $pattern,
'cards' => $cards,
];
}
$patternIndex++;
}
$animIndex = 0;
@endphp
@foreach($bentoRows as $row)
@foreach($row['cards'] as $card)
@include('components.portfolio-bento-card', [
'project' => $card['project'],
'size' => $card['size'],
'animIndex' => $animIndex,
'portfolioText' => $portfolioText,
'compactCategory' => $compactCategory,
'localizedRoute' => $localizedRoute,
'locale' => $locale,
])
@php $animIndex++; @endphp
@endforeach
@endforeach
@if(method_exists($projects, 'hasPages') && $projects->hasPages())
{{ $projects->withQueryString()->links() }}
@endif