b2in/resources/views/web/layouts/web-master.blade.php
2026-04-10 17:18:17 +02:00

122 lines
5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>@yield('title', $domainName ?? config('app.name', 'Laravel'))</title>
<meta name="description" content="@yield('meta_description', 'B2in Connecting Design and Property. Exklusive Immobilien in Dubai & europäisches Einrichtungsnetzwerk.')">
@hasSection('meta_image')
<meta property="og:image" content="@yield('meta_image')">
@else
<meta property="og:image" content="{{ asset('img/assets/b2in-og-default.jpg') }}">
@endif
<meta property="og:title" content="@yield('title', $domainName ?? config('app.name', 'Laravel'))">
<meta property="og:description" content="@yield('meta_description', 'B2in Connecting Design and Property. Exklusive Immobilien in Dubai & europäisches Einrichtungsnetzwerk.')">
<meta property="og:type" content="website">
<meta property="og:url" content="{{ url()->current() }}">
<meta property="og:locale" content="de_DE">
<meta name="twitter:card" content="summary_large_image">
@stack('meta')
<!-- Favicons (wie Backend) -->
<link rel="apple-touch-icon" sizes="57x57" href="/favicon/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="/favicon/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="/favicon/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="/favicon/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="/favicon/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="/favicon/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="/favicon/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="/favicon/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="/favicon/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="96x96" href="/favicon/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png">
<link rel="shortcut icon" href="{{ asset(\App\Helpers\ThemeHelper::getFaviconPath()) }}">
<link rel="manifest" href="/favicon/manifest.json">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="/favicon/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">
@php
$theme = config('app.theme', 'b2in');
@endphp
@vite([
\App\Helpers\ThemeHelper::getThemeCssPath(),
'resources/js/app.js'
], 'build/' . $theme)
<!-- Sticky Header Script -->
<script>
document.addEventListener('DOMContentLoaded', function() {
const topbar = document.getElementById('topbar');
const header = document.getElementById('header');
if (!topbar || !header) return;
let topbarHeight = topbar.offsetHeight;
let isHeaderSticky = false;
let ticking = false;
function updateHeaderPosition() {
const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
if (scrollTop >= topbarHeight && !isHeaderSticky) {
header.classList.remove('header-normal');
header.classList.add('header-sticky');
isHeaderSticky = true;
} else if (scrollTop < topbarHeight && isHeaderSticky) {
header.classList.remove('header-sticky');
header.classList.add('header-normal');
isHeaderSticky = false;
}
ticking = false;
}
updateHeaderPosition();
window.addEventListener('scroll', function() {
if (!ticking) {
requestAnimationFrame(updateHeaderPosition);
ticking = true;
}
}, { passive: true });
window.addEventListener('resize', function() {
topbarHeight = topbar.offsetHeight;
updateHeaderPosition();
}, { passive: true });
});
</script>
<!-- Additional Styles -->
@stack('styles')
</head>
<body class="antialiased bg-background text-foreground">
{{-- GTM noscript (nur bei GTM-Nutzung) --}}
<x-cookie-consent::gtm-noscript />
<!-- Announcement Bar -->
<livewire:web.components.ui.announcement-bar />
{{-- TopBar (Backup: Sprachwechsel & Social Icons folgt später) --}}
{{-- <livewire:web.components.ui.top-bar /> --}}
@yield('content')
{{-- Cookie Consent Manager (vor Livewire-Scripts) --}}
<x-cookie-consent::manager />
<!-- Additional Scripts -->
@stack('scripts')
</body>
</html>