das marketing frontend wurde auf lokalisierte urls umgestellt.

This commit is contained in:
Codex Agent
2025-11-03 15:50:10 +01:00
parent c0c1d31385
commit 55c606bdd4
47 changed files with 1592 additions and 251 deletions

View File

@@ -0,0 +1,88 @@
<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ __('marketing.not_found.title', [], app()->getLocale()) }} · Fotospiel</title>
@vite(['resources/css/app.css'])
</head>
<body class="min-h-screen bg-gradient-to-br from-slate-900 via-gray-900 to-black text-white antialiased">
@php
$tips = trans('marketing.not_found.tips');
if (! is_array($tips)) {
$tips = [
__('Prüfe die URL auf Tippfehler.', [], 'de'),
];
}
@endphp
<main class="relative mx-auto flex min-h-screen max-w-5xl flex-col items-center justify-center px-6 py-16 text-center">
<div class="pointer-events-none absolute inset-0">
<div class="absolute -left-32 -top-32 h-96 w-96 rounded-full bg-pink-500/30 blur-3xl"></div>
<div class="absolute right-0 top-1/3 h-80 w-80 rounded-full bg-purple-500/20 blur-3xl"></div>
<div class="absolute bottom-0 left-1/2 h-72 w-72 -translate-x-1/2 rounded-full bg-blue-500/20 blur-3xl"></div>
</div>
<section class="relative z-10 w-full space-y-8 rounded-3xl border border-white/10 bg-white/5 p-10 shadow-2xl shadow-black/40 backdrop-blur">
<div class="inline-flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-4 py-2 text-xs font-semibold uppercase tracking-widest text-pink-200 shadow-lg shadow-pink-500/30">
404 · {{ __('marketing.not_found.title') }}
</div>
<h1 class="text-balance text-4xl font-bold leading-tight text-white sm:text-5xl md:text-6xl">
{{ __('marketing.not_found.subtitle') }}
</h1>
@if(request()->path())
<p class="text-sm text-white/60">
{{ __('marketing.not_found.requested_path_label') }}:
<span class="font-mono">{{ request()->getRequestUri() }}</span>
</p>
@endif
<p class="mx-auto max-w-2xl text-lg text-white/70 sm:text-xl">
{{ __('marketing.not_found.description') }}
</p>
<div class="flex flex-col gap-6 rounded-3xl border border-white/10 bg-white/10 p-8 text-left shadow-lg shadow-black/30 backdrop-blur md:flex-row md:gap-8">
<div class="md:w-1/3">
<h2 class="text-lg font-semibold uppercase tracking-widest text-pink-200">
{{ __('marketing.not_found.tip_heading') }}
</h2>
<div class="mt-4 h-1 w-16 rounded-full bg-pink-400"></div>
</div>
<ul class="space-y-3 text-base text-white/80 md:w-2/3">
@foreach($tips as $index => $tip)
<li class="flex items-start gap-3">
<span class="mt-1 flex h-6 w-6 flex-none items-center justify-center rounded-full bg-white/10 text-xs font-semibold text-pink-200">
{{ $index + 1 }}
</span>
<span>{{ $tip }}</span>
</li>
@endforeach
</ul>
</div>
<div class="flex flex-col gap-3 sm:flex-row sm:justify-center">
<a
href="{{ route('marketing.home', ['locale' => app()->getLocale()]) }}"
class="inline-flex items-center justify-center rounded-full bg-white px-6 py-3 font-medium text-gray-900 shadow-lg shadow-pink-500/30 transition hover:-translate-y-1 hover:bg-pink-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white"
>
{{ __('marketing.not_found.cta_home') }}
</a>
<a
href="{{ route('packages', ['locale' => app()->getLocale()]) }}"
class="inline-flex items-center justify-center rounded-full border border-white/40 px-6 py-3 font-medium text-white transition hover:-translate-y-1 hover:border-white hover:bg-white/10 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white"
>
{{ __('marketing.not_found.cta_packages') }}
</a>
<a
href="{{ app()->getLocale() === 'en' ? route('marketing.contact', ['locale' => app()->getLocale()]) : route('kontakt', ['locale' => app()->getLocale()]) }}"
class="inline-flex items-center justify-center rounded-full border border-transparent bg-gradient-to-r from-pink-500 to-purple-500 px-6 py-3 font-medium text-white shadow-lg shadow-pink-500/30 transition hover:-translate-y-1 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white"
>
{{ __('marketing.not_found.cta_contact') }}
</a>
</div>
</section>
</main>
</body>
</html>

View File

@@ -6,7 +6,7 @@
<h2 class="text-xl font-semibold mb-2">{{ __('legal.payments') }}</h2>
<p class="mb-4">{{ __('legal.payments_desc') }} <a href="https://stripe.com/de/privacy" target="_blank" rel="noopener noreferrer">{{ __('legal.stripe_privacy') }}</a> {{ __('legal.and') }} <a href="https://www.paypal.com/de/webapps/mpp/ua/privacy-full" target="_blank" rel="noopener noreferrer">{{ __('legal.paypal_privacy') }}</a>.</p>
<p class="mb-4">{{ __('legal.data_retention') }}</p>
<p class="mb-4">{{ __('legal.rights') }} <a href="{{ route('kontakt') }}">{{ __('legal.contact') }}</a>.</p>
<p class="mb-4">{{ __('legal.rights') }} <a href="{{ route('kontakt', ['locale' => app()->getLocale()]) }}">{{ __('legal.contact') }}</a>.</p>
<p class="mb-4">{{ __('legal.cookies') }}</p>
<h2 class="text-xl font-semibold mb-2">{{ __('legal.personal_data') }}</h2>
@@ -17,4 +17,4 @@
<h2 class="text-xl font-semibold mb-2">{{ __('legal.data_security') }}</h2>
<p class="mb-4">{{ __('legal.data_security_desc') }}</p>
</div>
</div>

View File

@@ -11,7 +11,7 @@
<h2 class="text-xl font-semibold mb-2">{{ __('legal.payments') }}</h2>
<p class="mb-4">{{ __('legal.payments_desc') }} <a href="https://stripe.com/de/privacy" target="_blank">{{ __('legal.stripe_privacy') }}</a> {{ __('legal.and') }} <a href="https://www.paypal.com/de/webapps/mpp/ua/privacy-full" target="_blank">{{ __('legal.paypal_privacy') }}</a>.</p>
<p class="mb-4">{{ __('legal.data_retention') }}</p>
<p class="mb-4">{{ __('legal.rights') }} <a href="{{ route('kontakt') }}">{{ __('legal.contact') }}</a>.</p>
<p class="mb-4">{{ __('legal.rights') }} <a href="{{ route('kontakt', ['locale' => app()->getLocale()]) }}">{{ __('legal.contact') }}</a>.</p>
<p class="mb-4">{{ __('legal.cookies') }}</p>
<h2 class="text-xl font-semibold mb-2">{{ __('legal.personal_data') }}</h2>
@@ -23,4 +23,4 @@
<h2 class="text-xl font-semibold mb-2">{{ __('legal.data_security') }}</h2>
<p class="mb-4">{{ __('legal.data_security_desc') }}</p>
</div>
@endsection
@endsection

View File

@@ -10,7 +10,7 @@
{{ __('legal.company') }}<br>
{{ __('legal.address') }}<br>
{{ __('legal.representative') }}<br>
{{ __('legal.contact') }}: <a href="{{ route('kontakt') }}">{{ __('legal.contact') }}</a>
{{ __('legal.contact') }}: <a href="{{ route('kontakt', ['locale' => app()->getLocale()]) }}">{{ __('legal.contact') }}</a>
</p>
<p class="mb-4">{{ __('legal.vat_id') }}</p>
<h2 class="text-xl font-semibold mb-2">{{ __('legal.monetization') }}</h2>
@@ -18,4 +18,4 @@
<p class="mb-4">{{ __('legal.register_court') }}</p>
<p class="mb-4">{{ __('legal.commercial_register') }}</p>
</div>
@endsection
@endsection

View File

@@ -92,8 +92,8 @@
</div>
</div>
@else
<p class="text-center">{{ __('marketing.occasions.not_found') }} <a href="{{ route('marketing') }}">{{ __('nav.home') }}</a>.</p>
<p class="text-center">{{ __('marketing.occasions.not_found') }} <a href="{{ route('marketing.home', ['locale' => app()->getLocale()]) }}">{{ __('nav.home') }}</a>.</p>
@endif
</div>
</section>
@endsection
@endsection

View File

@@ -1,29 +1,29 @@
<header class="bg-white shadow-md sticky top-0 z-50">
<div class="container mx-auto px-4 py-4 flex items-center justify-between">
<div class="flex items-center space-x-2">
<a href="{{ route('marketing') }}" class="text-2xl font-bold text-gray-900">Die Fotospiel.App</a>
<a href="{{ route('marketing.home', ['locale' => app()->getLocale()]) }}" class="text-2xl font-bold text-gray-900">Die Fotospiel.App</a>
<svg class="w-6 h-6 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"></path>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 13a3 3 0 11-6 0 3 3 0 016 0z"></path>
</svg>
</div>
<nav class="hidden md:flex space-x-6 items-center">
<a href="{{ route('marketing') }}#how-it-works" class="text-gray-600 hover:text-gray-900">{{ __('marketing.nav.how_it_works') }}</a>
<a href="{{ route('marketing') }}#features" class="text-gray-600 hover:text-gray-900">{{ __('marketing.nav.features') }}</a>
<a href="{{ route('marketing.home', ['locale' => app()->getLocale()]) }}#how-it-works" class="text-gray-600 hover:text-gray-900">{{ __('marketing.nav.how_it_works') }}</a>
<a href="{{ route('marketing.home', ['locale' => app()->getLocale()]) }}#features" class="text-gray-600 hover:text-gray-900">{{ __('marketing.nav.features') }}</a>
<div x-data="{ open: false }" @mouseenter="open = true" @mouseleave="open = false" @click.away="open = false" class="relative">
<button class="text-gray-600 hover:text-gray-900" @click.stop="open = !open">{{ __('marketing.nav.occasions') }}</button>
<div x-show="open" x-transition:enter="transition ease-out duration-200" x-transition:enter-start="opacity-0 transform scale-95" x-transition:enter-end="opacity-100 transform scale-100" x-transition:leave="transition ease-in duration-150" x-transition:leave-start="opacity-100 transform scale-100" x-transition:leave-end="opacity-0 transform scale-95" class="absolute top-full left-0 mt-2 bg-white border rounded shadow-lg z-10">
<a href="{{ route('anlaesse.type', ['type' => 'hochzeit']) }}" class="block px-4 py-2 text-gray-600 hover:text-gray-900 hover:bg-gray-50 transition">{{ __('marketing.nav.occasions_types.weddings') }}</a>
<a href="{{ route('anlaesse.type', ['type' => 'geburtstag']) }}" class="block px-4 py-2 text-gray-600 hover:text-gray-900 hover:bg-gray-50 transition">{{ __('marketing.nav.occasions_types.birthdays') }}</a>
<a href="{{ route('anlaesse.type', ['type' => 'firmenevent']) }}" class="block px-4 py-2 text-gray-600 hover:text-gray-900 hover:bg-gray-50 transition">{{ __('marketing.nav.occasions_types.corporate') }}</a>
<a href="{{ route('anlaesse.type', ['locale' => app()->getLocale(), 'type' => 'hochzeit']) }}" class="block px-4 py-2 text-gray-600 hover:text-gray-900 hover:bg-gray-50 transition">{{ __('marketing.nav.occasions_types.weddings') }}</a>
<a href="{{ route('anlaesse.type', ['locale' => app()->getLocale(), 'type' => 'geburtstag']) }}" class="block px-4 py-2 text-gray-600 hover:text-gray-900 hover:bg-gray-50 transition">{{ __('marketing.nav.occasions_types.birthdays') }}</a>
<a href="{{ route('anlaesse.type', ['locale' => app()->getLocale(), 'type' => 'firmenevent']) }}" class="block px-4 py-2 text-gray-600 hover:text-gray-900 hover:bg-gray-50 transition">{{ __('marketing.nav.occasions_types.corporate') }}</a>
</div>
</div>
<a href="{{ route('blog') }}" class="text-gray-600 hover:text-gray-900">{{ __('marketing.nav.blog') }}</a>
<a href="{{ route('packages') }}" class="text-gray-600 hover:text-gray-900">{{ __('marketing.nav.packages') }}</a>
<a href="{{ route('kontakt') }}" class="text-gray-600 hover:text-gray-900">{{ __('marketing.nav.contact') }}</a>
<a href="{{ route('packages') }}" class="bg-[#FFB6C1] text-white px-6 py-2 rounded-full font-semibold hover:bg-[#FF69B4] transition">{{ __('marketing.nav.discover_packages') }}</a>
<a href="{{ route('blog', ['locale' => app()->getLocale()]) }}" class="text-gray-600 hover:text-gray-900">{{ __('marketing.nav.blog') }}</a>
<a href="{{ route('packages', ['locale' => app()->getLocale()]) }}" class="text-gray-600 hover:text-gray-900">{{ __('marketing.nav.packages') }}</a>
<a href="{{ route('kontakt', ['locale' => app()->getLocale()]) }}" class="text-gray-600 hover:text-gray-900">{{ __('marketing.nav.contact') }}</a>
<a href="{{ route('packages', ['locale' => app()->getLocale()]) }}" class="bg-[#FFB6C1] text-white px-6 py-2 rounded-full font-semibold hover:bg-[#FF69B4] transition">{{ __('marketing.nav.discover_packages') }}</a>
</nav>
<!-- Mobile Menu Placeholder (Hamburger) -->
<button class="md:hidden text-gray-600"></button>
</div>
</header>
</header>