{{-- Voyage template ana iskeleti. Tüm sayfalar bu layout'u extend eder; tasarım token'ları SiteSnapshot'tan CSS custom property olarak üretilir. Ziyaretçi ve panel önizlemesi aynı dosya. --}} @php /** @var \App\Services\Site\SiteSnapshot $snapshot */ $tokens = $snapshot->tokens(); $brand = $agency->brand_colors ?? []; $primary = $brand['primary'] ?? data_get($tokens, 'colors.primary'); $accent = $brand['accent'] ?? data_get($tokens, 'colors.accent'); $meta = $page['meta'] ?? []; $seo = $snapshot->seoDefaults(); $metaTitle = $meta['meta_title'] ?? ($page['title'] ?? null); $siteName = $agency->name; $fullTitle = $pageTitle ?? ($metaTitle ? $metaTitle . ' | ' . $siteName : $siteName); $metaDescription = $meta['meta_description'] ?? ($seo['meta_description'] ?? $agency->description); $favicon = $agency->favicon_path ? asset('storage/' . $agency->favicon_path) : ($agency->logo ? asset('storage/' . $agency->logo) : null); @endphp {{ $fullTitle }} @if($metaDescription)@endif @if(!empty($ogImage))@endif @if($favicon)@endif @if($preview)@endif @if($snapshot->customCss())@endif {!! $snapshot->headScripts() !!} @stack('head') {{-- $bare: tek bölümün örnek gösterimi (kütüphane önizlemesi). Header/footer/canlı destek çizilmez ki bölüm kendi başına görünsün. --}} @php $bare = $bare ?? false; @endphp @if($preview && ! $bare)
Önizleme modundasınız — bu sayfa yalnızca size görünür. Yayına almadan ziyaretçiler göremez.
@endif @unless($bare) @include('site.templates.voyage.partials.header') @endunless
@yield('content')
@unless($bare) @include('site.templates.voyage.partials.footer') @include('site.templates.voyage.partials.chat-widget') @endunless @if(session('site_form_success'))
{{ session('site_form_success') }}
@endif @if($snapshot->customJs())@endif {!! $snapshot->bodyScripts() !!} @if($editorMode ?? false) {{-- Editör iframe köprüsü: bölüm seçimi ↔ üst pencere --}} @endif @stack('scripts')