Replace tiny JPEG stubs with per-slot Unsplash editorial placeholders, align public type scale to DESIGN.md display/headline tokens, add final-cta on all subpages, about_image_path on site settings, and harden visual regression with solid-color VisualContentSeeder fixtures.
66 lines
2.8 KiB
PHP
66 lines
2.8 KiB
PHP
@props([
|
|
'settings',
|
|
])
|
|
|
|
<section
|
|
aria-labelledby="hero-heading"
|
|
class="border-b border-amare-border bg-amare-bg"
|
|
data-chapter="hero"
|
|
data-motion="dossie-hero"
|
|
>
|
|
<div class="container-amare grid gap-12 py-20 md:grid-cols-[minmax(0,1.1fr)_minmax(0,0.9fr)] md:items-center md:py-28">
|
|
<div class="space-y-8">
|
|
<div data-motion-beat="seal" class="flex items-center gap-4">
|
|
<x-brand.logo mark variant="on-light" class="h-8 w-auto" alt="" />
|
|
@if (filled($settings->hero_eyebrow))
|
|
<p class="text-sm font-medium uppercase tracking-[0.18em] text-amare-accent">{{ $settings->hero_eyebrow }}</p>
|
|
@endif
|
|
</div>
|
|
|
|
<h1 id="hero-heading" data-motion-beat="title" class="max-w-3xl text-display font-medium text-amare-text">
|
|
{{ $settings->hero_title }}
|
|
</h1>
|
|
|
|
@if (filled($settings->hero_subtitle))
|
|
<p class="max-w-2xl text-lg text-amare-text-muted">{{ $settings->hero_subtitle }}</p>
|
|
@endif
|
|
|
|
<div data-motion-beat="cta" class="flex flex-wrap items-center gap-4">
|
|
<a
|
|
href="{{ route('contact') }}"
|
|
data-testid="home-primary-cta"
|
|
class="inline-flex min-h-11 items-center bg-amare-accent px-5 py-3 text-sm font-semibold text-amare-accent-text transition-colors duration-(--amare-duration-normal) ease-(--amare-ease-standard) hover:bg-amare-accent-hover"
|
|
>
|
|
{{ $settings->hero_cta_label }}
|
|
</a>
|
|
|
|
@if (filled($settings->hero_secondary_cta_label))
|
|
<a
|
|
href="{{ route('portfolio.index') }}"
|
|
class="inline-flex min-h-11 items-center text-sm font-semibold text-amare-accent transition-colors hover:text-amare-accent-deep"
|
|
>
|
|
<span class="border-b border-amare-accent pb-1">{{ $settings->hero_secondary_cta_label }}</span>
|
|
</a>
|
|
@endif
|
|
</div>
|
|
|
|
@if (filled($settings->hero_note))
|
|
<p class="max-w-xl text-sm text-amare-text-muted">{{ $settings->hero_note }}</p>
|
|
@endif
|
|
</div>
|
|
|
|
@if (filled($settings->default_og_image_path))
|
|
<div data-motion-beat="media" class="min-h-72 overflow-hidden bg-amare-bg-deep">
|
|
<x-media.image
|
|
:path="$settings->default_og_image_path"
|
|
:alt="$settings->default_og_image_alt ?: $settings->brand_name"
|
|
loading="eager"
|
|
fetchpriority="high"
|
|
sizes="(max-width: 768px) 100vw, 40vw"
|
|
class="img-editorial h-full w-full object-cover"
|
|
/>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</section>
|