Fecha o gap do MAN-126 na navegação e no portfólio: âncoras das duas vertentes no header/footer, filtro por event_type e empty state honesto para Corporate sem prova inventada. Co-authored-by: Cursor <cursoragent@cursor.com>
108 lines
6.5 KiB
PHP
108 lines
6.5 KiB
PHP
@extends('layouts.public')
|
|
|
|
@section('content')
|
|
<x-public.photo-hero :image-path="$siteSettings->portfolio_hero_image_path" :image-alt="$siteSettings->portfolio_hero_image_alt" eyebrow="Portfólio" title="Atmosferas que contam histórias." summary="Casos conduzidos com atenção a ritmo, composição e cada detalhe da experiência." />
|
|
|
|
<div class="border-b border-amare-border bg-amare-bg-deep">
|
|
<div class="container-amare space-y-10 py-16 md:py-24">
|
|
<nav aria-label="Vertentes do portfólio" class="flex flex-wrap gap-x-6 gap-y-2 border-b border-amare-border pb-6 text-sm">
|
|
<a
|
|
href="{{ route('portfolio.index') }}"
|
|
@class([
|
|
'inline-flex min-h-11 items-center uppercase tracking-[0.08em] transition-colors',
|
|
'font-semibold text-amare-accent' => $vertical === null,
|
|
'text-amare-muted hover:text-amare-accent' => $vertical !== null,
|
|
])
|
|
>Todos</a>
|
|
@foreach (\App\Domain\Marketing\PortfolioVertical::cases() as $option)
|
|
<a
|
|
href="{{ route('portfolio.index', ['vertente' => $option->value]) }}"
|
|
@class([
|
|
'inline-flex min-h-11 items-center uppercase tracking-[0.08em] transition-colors',
|
|
'font-semibold text-amare-accent' => $vertical === $option,
|
|
'text-amare-muted hover:text-amare-accent' => $vertical !== $option,
|
|
])
|
|
>{{ $option->label() }}</a>
|
|
@endforeach
|
|
</nav>
|
|
|
|
@if ($cases->isEmpty())
|
|
@if ($vertical === \App\Domain\Marketing\PortfolioVertical::Corporate)
|
|
<div class="flex min-h-[280px] flex-col items-center justify-center gap-4 bg-amare-bg p-10 text-center">
|
|
<p class="text-xs font-bold uppercase tracking-[0.16em] text-amare-accent-deep">Portfólio Corporate</p>
|
|
<h2 class="text-[clamp(1.5625rem,2.7vw,2.125rem)] font-medium leading-tight text-amare-text">Conteúdo em construção</h2>
|
|
<p class="max-w-lg text-amare-text-muted">Ainda não publicamos cases corporativos autorizados. Em vez de inventar prova, mantemos este espaço pronto para projetos reais.</p>
|
|
<a href="{{ route('briefing') }}" class="btn btn-outline mt-2 text-xs font-bold uppercase tracking-[0.09em]">Falar sobre um evento corporativo</a>
|
|
</div>
|
|
@else
|
|
<p class="text-amare-muted">Novos casos serão publicados assim que o acervo estiver organizado. Enquanto isso, fale conosco para conhecer o nosso trabalho.</p>
|
|
@endif
|
|
@else
|
|
@php
|
|
$hasPrioritizedImage = false;
|
|
@endphp
|
|
<div class="grid gap-8 md:grid-cols-12 md:gap-x-8 md:gap-y-14" data-editorial-portfolio-grid data-reveal-group>
|
|
@foreach ($cases as $case)
|
|
@php
|
|
$isFeature = $loop->first;
|
|
$isOffset = ! $isFeature && $loop->even;
|
|
@endphp
|
|
<article
|
|
@class([
|
|
'space-y-4',
|
|
'md:col-span-7' => $isFeature,
|
|
'md:col-span-5 md:col-start-8 md:pt-12' => $isOffset,
|
|
'md:col-span-5' => ! $isFeature && ! $isOffset,
|
|
])
|
|
data-editorial-portfolio-item="{{ $isFeature ? 'feature' : ($isOffset ? 'offset' : 'standard') }}"
|
|
data-reveal
|
|
data-reveal-from="up"
|
|
>
|
|
@if (filled($case->cover_image_path))
|
|
@php
|
|
$prioritizeImage = ! $hasPrioritizedImage;
|
|
@endphp
|
|
<a href="{{ route('portfolio.show', $case->slug) }}" class="block overflow-hidden">
|
|
<x-media.image
|
|
:path="$case->cover_image_path"
|
|
:alt="$case->cover_image_alt ?: $case->title"
|
|
:loading="$prioritizeImage ? 'eager' : 'lazy'"
|
|
:fetchpriority="$prioritizeImage ? 'high' : null"
|
|
sizes="(max-width: 768px) calc(100vw - 3rem), 50vw"
|
|
@class([
|
|
'img-editorial w-full object-cover transition-transform duration-(--amare-duration-slow) ease-(--amare-ease-standard) motion-safe:hover:scale-[1.02]',
|
|
'aspect-[5/4]' => $isFeature,
|
|
'aspect-[4/5]' => $isOffset,
|
|
'aspect-[4/3]' => ! $isFeature && ! $isOffset,
|
|
])
|
|
/>
|
|
</a>
|
|
@php
|
|
$hasPrioritizedImage = true;
|
|
@endphp
|
|
@endif
|
|
<div class="space-y-2 border-t border-amare-border pt-4">
|
|
@if (filled($case->event_type))
|
|
<p class="text-xs font-bold uppercase tracking-[0.16em] text-amare-accent-deep">{{ $case->event_type }}</p>
|
|
@endif
|
|
<h2 class="text-2xl font-medium text-amare-text">
|
|
<a href="{{ route('portfolio.show', $case->slug) }}" class="transition-colors hover:text-amare-accent">{{ $case->title }}</a>
|
|
</h2>
|
|
<p class="text-sm text-amare-muted">{{ $case->summary }}</p>
|
|
</div>
|
|
</article>
|
|
@endforeach
|
|
</div>
|
|
|
|
<div>
|
|
{{ $cases->links() }}
|
|
</div>
|
|
@endif
|
|
|
|
<p class="text-sm text-amare-accent">Imagens demonstrativas enquanto o acervo autorizado da Amare está em organização.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<x-home.final-cta :settings="$siteSettings" />
|
|
@endsection
|