feat: recreate public frontend with Heritage Editorial identity
Replace placeholder visual system with EB Garamond/olive tokens, brand assets, editorial home narrative, São Paulo settings, real testimonials, and regenerated visual baselines. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,36 +1,44 @@
|
||||
@extends('layouts.public')
|
||||
|
||||
@section('content')
|
||||
<div class="container-amare space-y-10">
|
||||
<div class="max-w-2xl space-y-3">
|
||||
<h1 class="text-4xl font-semibold text-amare-text">Serviços</h1>
|
||||
<p class="text-lg text-amare-text-muted">Assessoria completa para casamentos e eventos corporativos.</p>
|
||||
</div>
|
||||
|
||||
@if ($services->isEmpty())
|
||||
<p class="text-amare-text-muted">Em breve publicaremos o catálogo de serviços.</p>
|
||||
@else
|
||||
<div class="grid gap-8 md:grid-cols-2">
|
||||
@foreach ($services as $service)
|
||||
<article class="space-y-3 border-t border-amare-border pt-6">
|
||||
@if (filled($service->cover_image_path))
|
||||
<x-media.image
|
||||
:path="$service->cover_image_path"
|
||||
:alt="$service->cover_image_alt ?: $service->title"
|
||||
sizes="(max-width: 768px) 100vw, 50vw"
|
||||
class="aspect-[16/10] w-full object-cover"
|
||||
/>
|
||||
@endif
|
||||
<h2 class="text-2xl font-semibold text-amare-text">{{ $service->title }}</h2>
|
||||
<p class="text-amare-text-muted">{{ $service->summary }}</p>
|
||||
@if (filled($service->description))
|
||||
<div class="prose prose-amare max-w-none text-amare-text-muted">
|
||||
{!! nl2br(e($service->description)) !!}
|
||||
</div>
|
||||
@endif
|
||||
</article>
|
||||
@endforeach
|
||||
<div class="border-b border-amare-border bg-amare-bg">
|
||||
<div class="container-amare space-y-10 py-16 md:py-24">
|
||||
<div class="max-w-2xl space-y-4">
|
||||
<p class="text-xs font-semibold uppercase tracking-[0.14em] text-amare-accent">Serviços</p>
|
||||
<h1 class="text-4xl font-medium tracking-tight text-amare-text md:text-5xl">Uma mesma excelência, diferentes ocasiões.</h1>
|
||||
<p class="text-lg text-amare-muted">O escopo é construído de acordo com o momento do projeto, o nível de apoio necessário e a complexidade de cada evento.</p>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if ($services->isEmpty())
|
||||
<p class="text-amare-muted">Em breve publicaremos o catálogo de serviços.</p>
|
||||
@else
|
||||
<div class="divide-y divide-amare-border border-y border-amare-border">
|
||||
@foreach ($services as $index => $service)
|
||||
<article class="grid gap-4 py-8 md:grid-cols-[5rem_minmax(0,1fr)_minmax(0,1.2fr)] md:items-start">
|
||||
<span class="text-sm font-semibold uppercase tracking-[0.14em] text-amare-accent">{{ str_pad((string) ($index + 1), 2, '0', STR_PAD_LEFT) }}</span>
|
||||
<div class="space-y-3">
|
||||
<h2 class="text-2xl font-medium text-amare-text md:text-3xl">{{ $service->title }}</h2>
|
||||
<p class="text-amare-muted">{{ $service->summary }}</p>
|
||||
</div>
|
||||
<div class="space-y-4">
|
||||
@if (filled($service->cover_image_path))
|
||||
<x-media.image
|
||||
:path="$service->cover_image_path"
|
||||
:alt="$service->cover_image_alt ?: $service->title"
|
||||
sizes="(max-width: 768px) 100vw, 40vw"
|
||||
class="img-editorial aspect-[16/10] w-full object-cover"
|
||||
/>
|
||||
@endif
|
||||
@if (filled($service->description))
|
||||
<div class="text-amare-muted">
|
||||
{!! nl2br(e($service->description)) !!}
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</article>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
Reference in New Issue
Block a user