@php
// Build responsive srcsets from manifest entry; gracefully degrade if variants missing.
$avifSet = $webpSet = $jpgSet = '';
$lqip = $thumb = null;
$fallbackSrc = $fallback ? asset($fallback) : null;
if ($entry) {
$variants = $entry['variants'] ?? [];
if (!empty($variants)) {
usort($variants, fn($a,$b)=> ($a['width']??0) <=> ($b['width']??0));
$avifSet = collect($variants)->filter(fn($v)=>!empty($v['avif']))->map(fn($v)=> asset($v['avif']).' '.($v['width']).'w')->join(', ');
$webpSet = collect($variants)->filter(fn($v)=>!empty($v['webp']))->map(fn($v)=> asset($v['webp']).' '.($v['width']).'w')->join(', ');
$jpgSet = collect($variants)->filter(fn($v)=>!empty($v['jpg']))->map(fn($v)=> asset($v['jpg']).' '.($v['width']).'w')->join(', ');
$largest = end($variants) ?: null;
if ($largest && !empty($largest['jpg'])) {
$fallbackSrc = asset($largest['jpg']);
}
}
// If no variants but original exists in manifest, use it directly so image still displays
if (empty($variants) && !empty($entry['original'])) {
$fallbackSrc = asset($entry['original']);
}
if (isset($entry['lqip'])) $lqip = asset($entry['lqip']);
if (isset($entry['thumb'])) $thumb = asset($entry['thumb']);
}
$sizesAttr = $sizes ?? ($type === 'slider' ? '(max-width: 768px) 100vw, 90vw' : '(max-width: 640px) 50vw, (max-width: 1024px) 33vw, 300px');
$cls = $class ?? '';
@endphp
@if($entry)
@if($avifSet)@endif
@if($webpSet)@endif
@else
@if($fallbackSrc)
@else
@endif
@endif
@once
@push('scripts')
@endpush
@endonce