@props([ 'title' => null, 'description' => null, 'canonical' => null, 'ogType' => 'website', 'schema' => null, ]) @php $locale = app()->getLocale(); $appName = config('app.name', 'ToolZeno'); // Title deduplication: avoid duplicate branding if title already contains ToolZeno if ($title) { if (str_contains($title, $appName) || str_contains($title, 'ToolZeno')) { $pageTitle = $title; } else { $pageTitle = $title . ' — ' . $appName; } } else { $pageTitle = $appName . ' — ' . __('common.tagline'); } $pageDesc = $description ?? __('common.meta_description_default'); // Canonical URL with production origin normalization $prodOrigin = rtrim(config('app.url', 'https://toolzeno.site'), '/'); if (empty($canonical)) { $path = request()->path(); $currentUrl = $prodOrigin . '/' . ltrim($path, '/'); } else { $currentUrl = preg_replace('#^https?://[^/]+#', $prodOrigin, $canonical); } // Hreflang URLs $currentRoute = Route::currentRouteName() ?? 'home'; $params = Route::current() ? Route::current()->parameters() : []; try { $enUrl = route($currentRoute, array_merge($params, ['locale' => 'en'])); $bnUrl = route($currentRoute, array_merge($params, ['locale' => 'bn'])); $enUrl = preg_replace('#^https?://[^/]+#', $prodOrigin, $enUrl); $bnUrl = preg_replace('#^https?://[^/]+#', $prodOrigin, $bnUrl); } catch (\Throwable $e) { $enUrl = $prodOrigin . '/en'; $bnUrl = $prodOrigin . '/bn'; } @endphp