{{-- Entrance animations hide their targets in CSS only when JS is available, so nothing flashes visible-then-hidden before GSAP takes over. If the motion bundle never signals ready, the class is removed and content is revealed (nothing can get stuck hidden). --}} {{-- SEO head contract for Phase 5 controllers/views: - Pass a `$seo` array (or an Eloquent model) from the controller/view. Keys: model, title, description, image, canonical, robots, noindex, type, keywords, heroImage. - Push extra per-page JSON-LD with @push('json-ld') ... @endpush. - Or fully override this block with @section('seo') ... @endsection. --}} @php $seo = $seo ?? []; if ($seo instanceof \Illuminate\Database\Eloquent\Model) { $seo = ['model' => $seo]; } $seoData = is_array($seo) ? $seo : []; if (blank($seoData['title'] ?? null)) { $sectionTitle = \Illuminate\Support\Facades\View::getSection('title'); if (filled($sectionTitle)) { $seoData['title'] = $sectionTitle; } } @endphp @hasSection('seo') @yield('seo') @else @endif {{-- Global structured data: emitted exactly once per page. --}} @stack('json-ld') @vite(['resources/css/app.css', 'resources/js/app.js']) {{-- Admin-configurable brand palette; MUST stay after the Vite link. --}} @livewireStyles @php $consentRequired = (bool) app(\App\Services\SettingsService::class)->get('cookie_consent_enabled', false); $imageProtection = (bool) app(\App\Services\SettingsService::class)->get('image_protection_enabled', false); $imageProtectionNotice = (string) app(\App\Services\SettingsService::class)->get('image_protection_notice', 'Las imágenes de este sitio están protegidas. Contáctanos para su uso.'); $imageProtectionActive = $imageProtection && ! auth()->user()?->is_admin; @endphp {{-- Progressive images: without JS the real image must stay visible. --}} Saltar al contenido
@yield('content') {{-- Shared closing CTA band: identical on every public page and attached to the footer, so the editorial closing block never drifts per view. --}}
{{-- Persistent, non-modal order panel: present on every page (design A5). --}} @if ($imageProtectionActive) @endif @livewireScripts