presseportale/resources/views/layouts/web-master.blade.php
Kevin Adametz e8c47b7553
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
22-05-2026 Optimierung der User und Admin Panels
2026-05-22 11:18:59 +02:00

178 lines
8.4 KiB
PHP

<!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>
<!-- Domain-spezifisches Favicon -->
<link rel="icon" href="{{ asset('img/favicons/' . $theme . '-favicon.ico') }}">
<!-- Fonts -->
@include('partials.local-fonts')
<!-- Dynamisches CSS basierend auf Domain-Konfiguration -->
@if ($theme === 'landing1')
@vite('resources/css/web/theme-landing1.css')
@elseif($theme === 'landing2')
@vite('resources/css/web/theme-landing2.css')
@else
@vite('resources/css/web/theme-main.css')
@endif
@vite('resources/js/app.js')
<!-- Additional Styles -->
@stack('styles')
<!-- Domain-spezifische Inline-Styles -->
{{-- @if (isset($domainConfig['color_scheme']))
<style>
:root {
@if (isset($domainConfig['color_scheme']['primary']))
--primary-color: {{ $domainConfig['color_scheme']['primary'] }};
@endif
@if (isset($domainConfig['color_scheme']['accent']))
--accent-color: {{ $domainConfig['color_scheme']['accent'] }};
@endif
}
</style>
@endif --}}
</head>
<body class="antialiased">
<div class="min-h-screen bg-gray-100 dark:bg-gray-900 flex flex-col">
<!-- Header -->
<header class="bg-white dark:bg-gray-800 shadow">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between h-16">
<div class="flex items-center">
<a href="{{ url('/') }}" class="text-xl font-bold text-primary-800 dark:text-primary-200">
{{ $domainName ?? config('app.name', 'Laravel') }}
</a>
<nav class="ml-10 space-x-4">
<a href="{{ url('/') }}"
class="text-primary-600 hover:text-primary-900 dark:text-primary-300 dark:hover:text-primary-100">Home</a>
<a href="{{ url('/welcome') }}"
class="text-primary-600 hover:text-primary-900 dark:text-primary-300 dark:hover:text-primary-100">Welcome</a>
<a href="{{ config('domains.domain_portal_url') }}"
class="text-primary-600 hover:text-primary-900 dark:text-primary-300 dark:hover:text-primary-100">Portal</a>
<!-- Weitere Navigationspunkte hier -->
</nav>
</div>
<div class="flex items-center">
<!-- Theme-Switcher -->
<button id="theme-toggle" type="button"
class="text-accent-600 dark:text-accent-400 hover:text-accent-800 dark:hover:text-accent-200 rounded-lg text-sm p-2.5">
<svg id="theme-toggle-dark-icon" class="hidden w-5 h-5" fill="currentColor"
viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path>
</svg>
<svg id="theme-toggle-light-icon" class="hidden w-5 h-5" fill="currentColor"
viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path
d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
fill-rule="evenodd" clip-rule="evenodd"></path>
</svg>
</button>
@if (app()->environment('local'))
<!-- Domain-Simulationsanzeige (nur in local) -->
<div
class="ml-4 text-xs px-2 py-1 rounded bg-accent-100 text-accent-800 dark:bg-accent-800 dark:text-accent-100">
{{ $theme }} / {{ Request::getHost() }}
@if (config('domains.dev_settings.simulate_domain'))
<span
class="inline-flex items-center ml-1 px-1.5 py-0.5 rounded-full text-xs bg-yellow-100 text-yellow-800">
Simuliert
</span>
@endif
</div>
@endif
</div>
</div>
</div>
</header>
<!-- Page Content -->
<main class="flex-grow py-10">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
@yield('content')
</div>
</main>
<!-- Footer -->
<footer class="bg-white dark:bg-gray-800 shadow py-6">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between">
<div>
<p class="text-gray-500 dark:text-gray-400">
&copy; {{ date('Y') }} {{ $domainName ?? config('app.name', 'Laravel') }}. Alle Rechte
vorbehalten.
</p>
</div>
<div>
<!-- Footer-Links -->
<div class="flex space-x-4">
<a href="#"
class="text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300">Impressum</a>
<a href="#"
class="text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300">Datenschutz</a>
</div>
</div>
</div>
</div>
</footer>
</div>
<!-- Dark Mode Toggle Script -->
<script>
const themeToggleDarkIcon = document.getElementById('theme-toggle-dark-icon');
const themeToggleLightIcon = document.getElementById('theme-toggle-light-icon');
// Set initial icon state
if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia(
'(prefers-color-scheme: dark)').matches)) {
themeToggleLightIcon.classList.remove('hidden');
document.documentElement.classList.add('dark');
} else {
themeToggleDarkIcon.classList.remove('hidden');
document.documentElement.classList.remove('dark');
}
// Toggle theme
document.getElementById('theme-toggle').addEventListener('click', function() {
themeToggleDarkIcon.classList.toggle('hidden');
themeToggleLightIcon.classList.toggle('hidden');
if (localStorage.getItem('color-theme')) {
if (localStorage.getItem('color-theme') === 'light') {
document.documentElement.classList.add('dark');
localStorage.setItem('color-theme', 'dark');
} else {
document.documentElement.classList.remove('dark');
localStorage.setItem('color-theme', 'light');
}
} else {
if (document.documentElement.classList.contains('dark')) {
document.documentElement.classList.remove('dark');
localStorage.setItem('color-theme', 'light');
} else {
document.documentElement.classList.add('dark');
localStorage.setItem('color-theme', 'dark');
}
}
});
</script>
<!-- Additional Scripts -->
@stack('scripts')
</body>
</html>