{{-- @intent Bloco `highlights`: destaques editoriais (imagem + título + link) em grade. @description Lista semântica estática: **sem rotação automática** e sem carrossel (ADR-025); a mídia usa o fluxo único `` com `alt` obrigatório (ADR-026). --}} @props([ 'props' => [], 'media' => [], 'blockId' => null, ]) @php $title = is_string($props['title'] ?? null) ? $props['title'] : null; $items = []; foreach (is_array($props['items'] ?? null) ? $props['items'] : [] as $index => $item) { if (! is_array($item) || ! is_string($item['title'] ?? null) || ! is_string($item['url'] ?? null)) { continue; } $items[] = [ 'title' => $item['title'], // Caminho interno recebe o locale vigente; URL externa é externa (ADR-012). 'href' => str_starts_with($item['url'], '/') ? localized_url($item['url']) : $item['url'], 'summary' => is_string($item['summary'] ?? null) ? $item['summary'] : null, 'alt' => is_string($item['image_alt'] ?? null) ? $item['image_alt'] : '', 'image' => is_array($media['items.'.$index.'.image'] ?? null) && is_string($media['items.'.$index.'.image']['path'] ?? null) ? $media['items.'.$index.'.image'] : null, ]; } $headingId = is_string($blockId) && $blockId !== '' ? preg_replace('/[^a-z0-9-]/', '', strtolower($blockId)).'-title' : null; @endphp @if ($title !== null && $items !== [])

{{ $title }}

@endif