@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 {{$alt}} @else @if($fallbackSrc) {{$alt}} @else @endif @endif @once @push('scripts') @endpush @endonce