{{-- Article hero partial. Expects $post array with keys: - frontmatter: array (title, excerpt, category, featured_image, published_at, updated_at) - author: array|null (display_name, title, avatar) - reading_time: int Renders full-bleed hero with soft orange gradient mesh background, category chip, display serif title, subtitle, author meta, scroll indicator. --}} @php $fm = $post['frontmatter'] ?? []; $title = $fm['title'] ?? ''; $excerpt = $fm['excerpt'] ?? ''; $category = $fm['category'] ?? null; $publishedAt = !empty($fm['published_at']) ? \Carbon\Carbon::parse($fm['published_at']) : null; $updatedAt = !empty($fm['updated_at']) ? \Carbon\Carbon::parse($fm['updated_at']) : null; $author = $post['author'] ?? null; $readingTime = $post['reading_time'] ?? 5; $heroImage = $fm['featured_image'] ?? null; @endphp
{{-- Soft radial glow bottom-right --}} {{-- Category blueprint as subtle bg pattern --}} @if(!empty($category)) @endif
@if($category)
{{ str_replace('-', ' ', $category) }}
@endif

{{ $title }}

@if($excerpt)

{{ $excerpt }}

@endif
@if($author)
@if(!empty($author['avatar'])) {{ $author['display_name'] ?? '' }} @else {{ strtoupper(substr($author['display_name'] ?? 'A', 0, 1)) }} @endif {{ $author['display_name'] ?? '' }}
@endif @if($publishedAt) {{ $publishedAt->format('M j, Y') }} @endif {{ $readingTime }} min read
@if($updatedAt && $publishedAt && $updatedAt->gt($publishedAt))
Updated {{ $updatedAt->format('M j, Y') }}
@endif
{{-- Scroll indicator --}}