{{-- @intent Bloco `cards-links`: grade de cards que levam a páginas/serviços. @description Cada card tem **um** link com propósito explícito (título do card — WCAG 2.4.4) e ícone Lucide decorativo. Lista semântica; sem carrossel e sem JS. --}} @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 $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, 'icon' => is_string($item['icon'] ?? null) ? $item['icon'] : null, ]; } $headingId = is_string($blockId) && $blockId !== '' ? preg_replace('/[^a-z0-9-]/', '', strtolower($blockId)).'-title' : null; @endphp @if ($title !== null && $items !== [])

{{ $title }}

@endif