{{-- @intent Renderizador único do documento de página/Home (emenda ADR-016, P5.S1.2): percorre as seções visíveis na ordem do documento e delega cada uma ao componente do catálogo fechado. @description O documento já passou pelo `Layout\Blocks\BlocksSchema` (via `ParseHomepage`): `hidden` preserva a posição e só é pulado aqui; nenhum `props` cru chega ao Blade. A mídia é resolvida pelo chamador (`BlockMediaResolver`) e repassada **por seção** → caminho do schema (`image`, `items.0.image`, `thumbnail`), sem consulta na view e sem N+1 — duas seções com o mesmo campo têm mídias próprias. O conteúdo traduzível é resolvido aqui (`BlockLocalizer`) para o locale do shell, então o mesmo documento serve `/`, `/en`, `/es`, `/fr` e a prévia autenticada. Sem documento válido nada é emitido; sem JS tudo continua funcionando. --}} @use('Layout\Blocks\BlockCatalog') @use('Layout\Blocks\BlockLocalizer') @use('Layout\Blocks\BlocksDocument') @props([ 'document' => null, 'media' => [], 'locale' => null, ]) @php $sections = $document instanceof BlocksDocument ? $document->visible() : []; $contentLocale = BlockLocalizer::locale(is_string($locale) ? $locale : null); @endphp @if ($sections !== [])
@foreach ($sections as $section) @php($definition = BlockCatalog::get($section->type)) @endforeach
@endif