{{-- Server-rendered SEO / OpenGraph / Twitter meta (App\Support\Seo). Controllers attach a Seo object via ->withViewData(['seo' => ...]); pages that declare none render fail-closed as noindex. Vue must never duplicate these tags — it owns only the (see resources/js/app.js). --}} @php($meta = ($seo ?? \App\Support\Seo::private())->toArray()) <meta name="description" content="{{ $meta['description'] }}"> <meta name="robots" content="{{ $meta['robots'] }}"> @if ($meta['canonical']) <link rel="canonical" href="{{ $meta['canonical'] }}"> @endif <meta property="og:site_name" content="{{ config('app.name') }}"> <meta property="og:type" content="{{ $meta['type'] }}"> <meta property="og:title" content="{{ $meta['title'] }}"> <meta property="og:description" content="{{ $meta['description'] }}"> @if ($meta['canonical']) <meta property="og:url" content="{{ $meta['canonical'] }}"> @endif <meta property="og:image" content="{{ $meta['image'] }}"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="630"> <meta property="og:locale" content="{{ $meta['og_locale'] }}"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="{{ $meta['title'] }}"> <meta name="twitter:description" content="{{ $meta['description'] }}"> <meta name="twitter:image" content="{{ $meta['image'] }}"> @if ($meta['twitter_site']) <meta name="twitter:site" content="{{ $meta['twitter_site'] }}"> @endif @foreach ($meta['json_ld'] as $schema) <script type="application/ld+json">{!! json_encode($schema, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_UNESCAPED_UNICODE) !!}</script> @endforeach