10-04-2026

This commit is contained in:
Kevin Adametz 2026-04-10 17:18:17 +02:00
parent 4d6b4930b2
commit 4bb89aad8c
836 changed files with 52961 additions and 5950 deletions

View file

@ -21,7 +21,7 @@
<div class="relative">
<div class="relative rounded-3xl overflow-hidden shadow-elevated slide-left delay-300">
<img src="{{ asset('img/assets/' . $content['image']) }}"
<img src="{{ theme_image_url($content['image']) }}"
alt="{{ $content['image_alt'] }}"
class="w-full h-[600px] object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div>

View file

@ -20,7 +20,7 @@
<div class="sticky top-8">
<div class="relative rounded-3xl overflow-hidden shadow-elevated slide-right delay-300">
@if(isset($content['image']))
<img src="{{ asset('img/assets/' . $content['image']) }}"
<img src="{{ theme_image_url($content['image']) }}"
alt="{{ $content['image_alt'] ?? 'Benefits Image' }}"
class="w-full h-[400px] md:h-[500px] lg:h-[600px] object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div>
@ -122,7 +122,7 @@
<div class="sticky top-8">
<div class="relative rounded-3xl overflow-hidden shadow-elevated slide-left delay-300">
@if(isset($content['image']))
<img src="{{ asset('img/assets/' . $content['image']) }}"
<img src="{{ theme_image_url($content['image']) }}"
alt="{{ $content['image_alt'] ?? 'Benefits Image' }}"
class="w-full h-[400px] md:h-[500px] lg:h-[600px] object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div>

View file

@ -13,14 +13,17 @@
@foreach ($worlds as $world)
<div class="card-elevated overflow-hidden group hover:shadow-elevated transition-all duration-300 flex flex-col slide-up delay-500">
<div class="relative">
<img src="{{ asset('img/assets/' . $world['image']) }}" alt="{{ $world['title'] }}"
<x-web-picture
src="{{ theme_image_url($world['image']) }}"
alt="{{ $world['title'] }}"
class="w-full h-64 object-cover group-hover:scale-105 transition-transform duration-500" />
</div>
<div class="p-6 spacing-small flex flex-col justify-between flex-grow">
<div class="mb-4">
@if (isset($world['logo']))
<img src="{{ asset($world['logo']) }}" alt="{{ $world['title'] }}"
class="{{ $world['logo_width'] }} h-18 object-contain" />
class="{{ $world['logo_width'] }} h-18 object-contain"
loading="lazy" />
@else
<h3 class="text-xl font-medium">{{ $world['title'] }}</h3>
@endif
@ -30,9 +33,10 @@
</div>
<a href="{{ $world['link'] }}"
class="inline-flex items-center gap-2 text-secondary font-medium hover:gap-3 transition-all duration-300">
Mehr erfahren
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
class="inline-flex items-center gap-2 text-secondary font-medium hover:gap-3 transition-all duration-300"
@if(!empty($world['external'])) target="_blank" rel="noopener" @endif>
{{ __('ui.learn_more') }}
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7">
</path>
</svg>

View file

@ -9,13 +9,13 @@
</div>
{{-- Brand Cards --}}
<div class="grid md:grid-cols-3 gap-8">
<div class="grid md:grid-cols-2 gap-8">
@foreach ($content['cards'] as $index => $card)
<div class="card-elevated overflow-hidden group hover:shadow-elevated transition-all duration-300 flex flex-col slide-up delay-{{ $index * 200 }}">
@if(isset($card['image']))
<div class="relative">
<img src="{{ asset('img/assets/' . $card['image']) }}" alt="{{ $card['title'] }}"
<img src="{{ theme_image_url($card['image']) }}" alt="{{ $card['title'] }}"
class="w-full h-64 object-cover group-hover:scale-105 transition-transform duration-500" />
</div>
@endif
@ -54,7 +54,7 @@
@if(isset($card['link']))
<a href="{{ $card['link'] }}"
class="inline-flex items-center gap-2 text-secondary font-medium hover:gap-3 transition-all duration-300">
Mehr erfahren
{{ __('ui.learn_more') }}
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7">
</path>

View file

@ -13,7 +13,7 @@
@foreach($content['testimonials'] as $index => $testimonial)
<div class="card-elevated rounded-2xl p-8 text-left space-y-6 slide-up delay-{{ $index * 200 }}">
<div class="flex items-center gap-4">
<img src="{{ asset('img/assets/' . $testimonial['image']) }}" alt="{{ $testimonial['author'] }}" class="w-16 h-16 rounded-full object-cover">
<img src="{{ theme_image_url($testimonial['image']) }}" alt="{{ $testimonial['author'] }}" class="w-16 h-16 rounded-full object-cover">
<div>
<h4 class="font-bold text-foreground">{{ $testimonial['author'] }}</h4>
<p class="text-sm text-muted-foreground">{{ $testimonial['author_title'] }}</p>

View file

@ -7,7 +7,7 @@
{{-- Image --}}
<div class="relative lg:order-1">
<div class="card-elevated rounded-3xl overflow-hidden slide-left delay-400">
<img src="{{ asset('img/assets/' . $content['image']) }}" alt="{{ $content['image_alt'] }}"
<img src="{{ theme_image_url($content['image']) }}" alt="{{ $content['image_alt'] }}"
class="w-full h-[500px] object-cover" />
<div
class="absolute bottom-6 left-6 bg-card/95 backdrop-blur-sm rounded-xl p-4 shadow-lg border border-border/50 slide-left delay-500">
@ -58,7 +58,7 @@
{{-- Image --}}
<div class="relative">
<div class="card-elevated rounded-3xl overflow-hidden slide-left delay-400">
<img src="{{ asset('img/assets/' . $content['image']) }}" alt="{{ $content['image_alt'] }}"
<img src="{{ theme_image_url($content['image']) }}" alt="{{ $content['image_alt'] }}"
class="w-full h-full object-cover" />
<div
class="absolute bottom-6 left-6 bg-card/95 backdrop-blur-sm rounded-xl p-4 shadow-lg border border-border/50 slide-left delay-500">

View file

@ -38,7 +38,7 @@
<div class="relative">
<div class="card-elevated bg-muted p-0 overflow-hidden rounded-3xl">
<img src="{{ asset('img/assets/' . $content['image']) }}" alt="{{ $content['image_alt'] }}"
<img src="{{ theme_image_url($content['image']) }}" alt="{{ $content['image_alt'] }}"
class="w-full h-96 object-cover" />
</div>
</div>

View file

@ -1,5 +1,6 @@
{{-- Hero Icons Helper Function --}}
@php
if (!function_exists('renderHeroIcon')) {
function renderHeroIcon($iconName, $style = 'outline', $color = 'text-secondary')
{
$iconPath = public_path("heroicons/optimized/24/{$style}/{$iconName}.svg");
@ -19,13 +20,14 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 00-.182.557l1.285 5.385a.562.562 0 01-.84.61l-4.725-2.885a.563.563 0 00-.586 0L6.982 20.54a.562.562 0 01-.84-.61l1.285-5.386a.563.563 0 00-.182-.557l-4.204-3.602a.563.563 0 01.321-.988l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z"/>
</svg>';
}
}
@endphp
<section class="section-padding {{ $bg }}">
<div class="container-padding">
{{-- Section Title --}}
<div class="text-center mb-16 slide-up delay-300">
<h2 class="text-section-title">{{ $content['title'] }}</h2>
<h2 class="text-section-title">{!! $content['title'] !!}</h2>
@if (isset($content['subtitle']))
<p class="text-large text-muted-foreground mt-4 max-w-2xl mx-auto">
{{ $content['subtitle'] }}
@ -36,7 +38,11 @@
{{-- Pillars Grid --}}
<div class="grid md:grid-cols-3 gap-8 lg:gap-12 slide-up delay-400">
@foreach ($content['pillars'] as $index => $pillar)
@if (isset($pillar['link']))
<a href="{{ $pillar['link'] }}" class="card-elevated rounded-2xl p-8 text-center block hover:shadow-lg transition-shadow duration-300">
@else
<div class="card-elevated rounded-2xl p-8 text-center">
@endif
<div class="text-center spacing-content group">
<div
class="mx-auto w-20 h-20 icon-secondary-linear glow-soft group-hover:glow-medium rounded-2xl flex items-center justify-center transition-colors duration-300">
@ -50,7 +56,11 @@
</p>
</div>
</div>
@if (isset($pillar['link']))
</a>
@else
</div>
@endif
@endforeach
</div>
</div>

View file

@ -51,7 +51,7 @@
<div class="relative">
<div class="relative rounded-3xl overflow-hidden shadow-elevated">
<img src="{{ asset('img/assets/' . $content['image']) }}"
<img src="{{ theme_image_url($content['image']) }}"
alt="{{ $content['image_alt'] }}"
class="w-full h-[600px] object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div>

View file

@ -55,7 +55,7 @@
</div>
<div class="relative">
<div class="relative rounded-3xl overflow-hidden shadow-elevated">
<img src="{{ asset('img/assets/' . $content['image']) }}"
<img src="{{ theme_image_url($content['image']) }}"
alt="{{ $content['image_alt'] }}"
class="w-full h-[600px] object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div>

View file

@ -1,11 +1,12 @@
@php($faqCounter = 0)
<div x-data="{ openIndex: null }">
<section class="section-padding {{ $bg }}">
<div class="container-padding">
{{-- Section Title --}}
<div class="text-center mb-16">
<h2 class="text-hero mb-6">
<h1 class="text-hero mb-6">
{!! $content['title'] !!}
</h2>
</h1>
@if(!empty($content['subtitle']))
<p class="text-large text-muted-foreground max-w-2xl mx-auto">
{!! $content['subtitle'] !!}
@ -14,10 +15,12 @@
</div>
{{-- FAQ Container --}}
<div class="max-w-4xl mx-auto">
<div class="max-w-4xl mx-auto space-y-12">
{{-- Allgemeine Fragen (ungrouped) --}}
@if(!empty($content['questions']))
<div class="space-y-4">
@foreach($content['questions'] as $index => $faq)
@foreach($content['questions'] as $faq)
@php($index = $faqCounter++)
<div class="card-elevated rounded-xl overflow-hidden">
<dt>
<button
@ -55,8 +58,66 @@
</div>
@endforeach
</div>
@else
{{-- Fallback wenn keine FAQ-Daten vorhanden --}}
@endif
{{-- Gruppierte Sektionen --}}
@if(!empty($content['sections']))
@foreach($content['sections'] as $section)
<div>
{{-- Sektions-Header --}}
<div class="flex items-center gap-3 mb-6">
<div class="flex items-center justify-center w-10 h-10 rounded-full bg-secondary/10 text-secondary shrink-0">
@svg('heroicon-o-' . ($section['icon'] ?? 'question-mark-circle'), 'w-5 h-5')
</div>
<h2 class="text-lg font-semibold text-foreground">{{ $section['title'] }}</h2>
<div class="flex-1 h-px bg-border"></div>
</div>
<div class="space-y-4">
@foreach($section['questions'] as $faq)
@php($index = $faqCounter++)
<div class="card-elevated rounded-xl overflow-hidden">
<dt>
<button
@click="openIndex = openIndex === {{ $index }} ? null : {{ $index }}"
class="flex w-full items-center justify-between p-6 text-left hover:bg-muted/30 transition-colors duration-200"
:aria-expanded="openIndex === {{ $index }}"
>
<span class="text-lg font-medium text-foreground pr-6">
{{ $faq['question'] }}
</span>
<span class="flex-shrink-0 ml-6 flex h-8 w-8 items-center justify-center rounded-full bg-secondary/10 transition-all duration-200"
:class="openIndex === {{ $index }} ? 'bg-secondary text-white' : 'text-secondary hover:bg-secondary/20'">
<svg class="w-5 h-5 transition-transform duration-200"
:class="openIndex === {{ $index }} ? 'rotate-180' : ''"
fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
</svg>
</span>
</button>
</dt>
<dd x-show="openIndex === {{ $index }}"
x-transition:enter="transition ease-out duration-200"
x-transition:enter-start="opacity-0 transform -translate-y-2"
x-transition:enter-end="opacity-100 transform translate-y-0"
x-transition:leave="transition ease-in duration-150"
x-transition:leave-start="opacity-100 transform translate-y-0"
x-transition:leave-end="opacity-0 transform -translate-y-2"
class="px-6 pb-6">
<div class="border-t border-border pt-4">
<p class="text-muted-foreground leading-relaxed">
{{ $faq['answer'] }}
</p>
</div>
</dd>
</div>
@endforeach
</div>
</div>
@endforeach
@endif
@if(empty($content['questions']) && empty($content['sections']))
<div class="text-center py-12">
<p class="text-muted-foreground">Keine FAQ-Inhalte verfügbar.</p>
</div>

View file

@ -0,0 +1,24 @@
<section class="py-8 bg-background border-b border-border/30">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex flex-col sm:flex-row items-center gap-6 sm:gap-8">
@if(isset($content['image']))
<div class="shrink-0">
<x-web-picture
src="{{ theme_image_url($content['image']) }}"
alt="{{ $content['name'] ?? 'Founder' }}"
class="w-16 h-16 sm:w-20 sm:h-20 rounded-full object-cover border-2 border-secondary/30 shadow-lg"
width="80" height="80" />
</div>
@endif
<div class="text-center sm:text-left">
<p class="text-lg sm:text-xl font-medium text-foreground">
{!! $content['statement'] ?? '' !!}
</p>
<p class="text-sm text-muted-foreground mt-1">
{{ $content['name'] ?? '' }} · {{ $content['title'] ?? '' }}
</p>
</div>
</div>
</div>
</section>

View file

@ -25,7 +25,7 @@
{{-- Full Width Hero Image --}}
<div class="relative w-full">
<div class="relative rounded-2xl overflow-hidden shadow-elevated">
<img src="{{ asset('img/assets/' . ($content['hero_image'] ?? $content['tiles'][0]['image'])) }}"
<img src="{{ theme_image_url($content['hero_image'] ?? $content['tiles'][0]['image']) }}"
alt="{{ $content['hero_image_alt'] ?? $content['tiles'][0]['alt'] ?? '' }}"
class="w-full h-64 md:h-80 lg:h-96 object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-black/30 via-black/10 to-transparent"></div>

View file

@ -10,7 +10,7 @@
:class="currentSlide === {{ $index }} ? 'opacity-100' : 'opacity-0'"
>
<img
src="{{ asset('img/assets/' . $slide['image']) }}"
src="{{ theme_image_url($slide['image']) }}"
alt="{{ $slide['image_alt'] }}"
class="size-full object-cover"
/>
@ -38,7 +38,7 @@
@click="setSlide({{ $index }})"
class="w-3 h-3 rounded-full border-2 border-white/50 transition-all duration-300"
:class="currentSlide === {{ $index }} ? 'bg-white border-white' : 'bg-transparent hover:border-white/80'"
aria-label="Slide {{ $index + 1 }} anzeigen"
aria-label="{{ __('ui.show_slide', ['number' => $index + 1]) }}"
></button>
@endforeach
</div>
@ -50,7 +50,7 @@
<button
@click="previousSlide()"
class="absolute left-6 top-1/2 transform -translate-y-1/2 text-white/70 hover:text-white transition-colors duration-300 focus:outline-none focus:ring-2 focus:ring-white/50 rounded-full p-2"
aria-label="Vorheriges Bild"
aria-label="{{ __('ui.previous_image') }}"
>
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path>
@ -60,7 +60,7 @@
<button
@click="nextSlide()"
class="absolute right-6 top-1/2 transform -translate-y-1/2 text-white/70 hover:text-white transition-colors duration-300 focus:outline-none focus:ring-2 focus:ring-white/50 rounded-full p-2"
aria-label="Nächstes Bild"
aria-label="{{ __('ui.next_image') }}"
>
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>

View file

@ -37,7 +37,7 @@
{{-- First Column --}}
<div class="ml-auto w-44 flex-none space-y-8 pt-32 sm:ml-0 sm:pt-80 lg:order-last lg:pt-36 xl:order-0 xl:pt-80">
<div class="relative rounded-3xl overflow-hidden shadow-elevated">
<img src="{{ asset('img/assets/' . $content['tiles'][0]['image']) }}"
<img src="{{ theme_image_url($content['tiles'][0]['image']) }}"
alt="{{ $content['tiles'][0]['alt'] ?? '' }}"
class="aspect-2/3 w-full object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div>
@ -47,13 +47,13 @@
{{-- Second Column --}}
<div class="mr-auto w-44 flex-none space-y-8 sm:mr-0 sm:pt-52 lg:pt-36">
<div class="relative rounded-3xl overflow-hidden shadow-elevated">
<img src="{{ asset('img/assets/' . $content['tiles'][1]['image']) }}"
<img src="{{ theme_image_url($content['tiles'][1]['image']) }}"
alt="{{ $content['tiles'][1]['alt'] ?? '' }}"
class="aspect-2/3 w-full object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div>
</div>
<div class="relative rounded-3xl overflow-hidden shadow-elevated">
<img src="{{ asset('img/assets/' . $content['tiles'][2]['image']) }}"
<img src="{{ theme_image_url($content['tiles'][2]['image']) }}"
alt="{{ $content['tiles'][2]['alt'] ?? '' }}"
class="aspect-2/3 w-full object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div>
@ -63,13 +63,13 @@
{{-- Third Column --}}
<div class="w-44 flex-none space-y-8 pt-32 sm:pt-0">
<div class="relative rounded-3xl overflow-hidden shadow-elevated">
<img src="{{ asset('img/assets/' . $content['tiles'][3]['image']) }}"
<img src="{{ theme_image_url($content['tiles'][3]['image']) }}"
alt="{{ $content['tiles'][3]['alt'] ?? '' }}"
class="aspect-2/3 w-full object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div>
</div>
<div class="relative rounded-3xl overflow-hidden shadow-elevated">
<img src="{{ asset('img/assets/' . $content['tiles'][4]['image']) }}"
<img src="{{ theme_image_url($content['tiles'][4]['image']) }}"
alt="{{ $content['tiles'][4]['alt'] ?? '' }}"
class="aspect-2/3 w-full object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div>

View file

@ -37,7 +37,7 @@
{{-- Right Image --}}
<div class="relative">
<div class="relative rounded-3xl overflow-hidden shadow-elevated slide-left delay-300">
<img src="{{ asset('img/assets/' . $content['image']) }}" alt="{{ $content['image_alt'] }}"
<img src="{{ theme_image_url($content['image']) }}" alt="{{ $content['image_alt'] }}"
class="w-full h-[600px] object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div>
</div>

View file

@ -0,0 +1,21 @@
@if (!empty($content))
<section class="relative h-[30vh] min-h-[220px] overflow-hidden">
<x-web-picture
src="{{ theme_image_url($content['image'] ?? '') }}"
alt="{{ $content['image_alt'] ?? 'Dekoratives Bild' }}"
class="absolute inset-0 w-full h-full object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-black/60 via-black/30 to-black/10"></div>
@if (isset($content['quote']))
<div class="absolute inset-0 flex items-end justify-center pb-12 px-6">
<div class="text-center slide-up delay-300">
<p class="text-xl lg:text-2xl font-medium text-white italic max-w-2xl leading-relaxed">
"{{ $content['quote'] }}"
</p>
@if (isset($content['author']))
<p class="text-sm text-white/70 mt-3"> {{ $content['author'] }}</p>
@endif
</div>
</div>
@endif
</section>
@endif

View file

@ -0,0 +1,149 @@
<div>
@if ($success)
<div class="flex flex-col items-center text-center py-6 gap-4">
<div class="flex items-center justify-center w-16 h-16 rounded-full bg-green-100">
<svg class="w-8 h-8 text-green-600" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7" />
</svg>
</div>
<div>
<p class="text-lg font-semibold text-foreground">{{ __('ui.immobilien_form.success_title') }}</p>
<p class="text-muted-foreground mt-1 text-sm">{{ __('ui.immobilien_form.success_message') }}</p>
</div>
</div>
@else
<form wire:submit="submit" class="space-y-6">
{{-- Honeypot --}}
<div class="opacity-0 absolute top-0 left-0 h-0 w-0 -z-10 overflow-hidden" aria-hidden="true">
<label for="website_hp">Website</label>
<input type="text" id="website_hp" name="website" wire:model="website" tabindex="-1" autocomplete="off">
</div>
@if (!empty($interestOptions))
<div>
<label for="interest" class="block text-sm font-medium text-foreground mb-2">{{ __('ui.immobilien_form.interest') }}</label>
<div class="grid grid-cols-1">
<select
wire:model="interest"
id="interest"
class="col-start-1 row-start-1 w-full appearance-none rounded-lg border border-border bg-background px-4 py-3 text-foreground focus:border-secondary focus:ring-1 focus:ring-secondary sm:text-sm/6">
<option value="">{{ __('ui.immobilien_form.please_select') }}</option>
@foreach ($interestOptions as $value => $label)
<option value="{{ $value }}">{{ $label }}</option>
@endforeach
</select>
<svg viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"
class="pointer-events-none col-start-1 row-start-1 mr-3 size-4 self-center justify-self-end text-muted-foreground">
<path d="M4.22 6.22a.75.75 0 0 1 1.06 0L8 8.94l2.72-2.72a.75.75 0 1 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0L4.22 7.28a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd" fill-rule="evenodd" />
</svg>
</div>
@error('interest') <span class="text-red-500 text-xs mt-1 block">{{ $message }}</span> @enderror
</div>
@endif
<div class="grid sm:grid-cols-2 gap-4">
<div>
<label for="firstName" class="block text-sm font-medium text-foreground mb-2">{{ __('ui.immobilien_form.first_name') }}</label>
<input
wire:model="firstName"
id="firstName"
type="text"
placeholder="{{ __('ui.immobilien_form.first_name_placeholder') }}"
class="w-full rounded-lg border border-border bg-background px-4 py-3 text-foreground focus:border-secondary focus:ring-1 focus:ring-secondary sm:text-sm"
/>
@error('firstName') <span class="text-red-500 text-xs mt-1 block">{{ $message }}</span> @enderror
</div>
<div>
<label for="lastName" class="block text-sm font-medium text-foreground mb-2">{{ __('ui.immobilien_form.last_name') }}</label>
<input
wire:model="lastName"
id="lastName"
type="text"
placeholder="{{ __('ui.immobilien_form.last_name_placeholder') }}"
class="w-full rounded-lg border border-border bg-background px-4 py-3 text-foreground focus:border-secondary focus:ring-1 focus:ring-secondary sm:text-sm"
/>
@error('lastName') <span class="text-red-500 text-xs mt-1 block">{{ $message }}</span> @enderror
</div>
</div>
<div class="grid sm:grid-cols-2 gap-4">
<div>
<label for="email" class="block text-sm font-medium text-foreground mb-2">{{ __('ui.immobilien_form.email') }}</label>
<input
wire:model="email"
id="email"
type="email"
placeholder="{{ __('ui.immobilien_form.email_placeholder') }}"
class="w-full rounded-lg border border-border bg-background px-4 py-3 text-foreground focus:border-secondary focus:ring-1 focus:ring-secondary sm:text-sm"
/>
@error('email') <span class="text-red-500 text-xs mt-1 block">{{ $message }}</span> @enderror
</div>
<div>
<label for="phone" class="block text-sm font-medium text-foreground mb-2">
{{ __('ui.immobilien_form.phone') }}
</label>
<input
wire:model="phone"
id="phone"
type="tel"
placeholder="+49 ..."
class="w-full rounded-lg border border-border bg-background px-4 py-3 text-foreground focus:border-secondary focus:ring-1 focus:ring-secondary sm:text-sm"
/>
@error('phone') <span class="text-red-500 text-xs mt-1 block">{{ $message }}</span> @enderror
</div>
</div>
<div>
<label for="message" class="block text-sm font-medium text-foreground mb-2">
{{ __('ui.immobilien_form.message') }}
</label>
<textarea
wire:model="message"
id="message"
rows="3"
placeholder="{{ __('ui.immobilien_form.message_placeholder') }}"
class="w-full rounded-lg border border-border bg-background px-4 py-3 text-foreground focus:border-secondary focus:ring-1 focus:ring-secondary sm:text-sm resize-none"
></textarea>
@error('message') <span class="text-red-500 text-xs mt-1 block">{{ $message }}</span> @enderror
</div>
<div x-data="{ on: $wire.entangle('privacy') }">
<label class="flex items-start gap-3 cursor-pointer">
<input
x-model="on"
id="privacy_immo"
type="checkbox"
class="sr-only"
/>
<span
role="switch"
:aria-checked="on.toString()"
:class="on ? 'bg-green-500' : 'bg-muted'"
class="relative mt-0.5 w-11 h-6 shrink-0 rounded-full transition-colors duration-200"
>
<span
:class="on ? 'translate-x-5' : 'translate-x-0'"
class="absolute top-0.5 left-0.5 h-5 w-5 rounded-full bg-white shadow-sm transition-transform duration-200 pointer-events-none"
></span>
</span>
<span class="text-sm text-muted-foreground">
{{ __('ui.immobilien_form.privacy_prefix') }}
<a href="{{ route('privacy') }}" target="_blank" class="text-secondary underline underline-offset-2 hover:no-underline">Datenschutzerklärung</a>
{{ __('ui.immobilien_form.privacy_suffix') }}
</span>
</label>
@error('privacy') <span class="text-red-500 text-xs mt-1 block">{{ $message }}</span> @enderror
</div>
<button
type="submit"
wire:loading.attr="disabled"
class="w-full btn-primary-accent"
>
<span wire:loading.remove>{{ __('ui.immobilien_form.submit') }}</span>
<span wire:loading>{{ __('ui.immobilien_form.sending') }}</span>
</button>
</form>
@endif
</div>

View file

@ -15,7 +15,7 @@
<div class="card-elevated rounded-3xl overflow-hidden hover:scale-105 transition-all duration-300">
<div class="relative">
<img
src="{{ asset('img/assets/' . $member['image']) }}"
src="{{ theme_image_url($member['image']) }}"
alt="{{ $member['name'] }} - {{ $member['position'] }}"
class="w-full h-80 object-cover"
/>

View file

@ -38,16 +38,16 @@
<!-- Featured Image -->
<div class="mb-12 overflow-hidden rounded-lg shadow-md slide-up delay-200">
<img
src="{{ asset('img/assets/' . $article['image']) }}"
<x-web-picture
src="{{ theme_image_url($article['image']) }}"
alt="{{ $article['title'] }}"
class="w-full h-64 md:h-96 object-cover"
>
/>
</div>
<div class="grid md:grid-cols-4 gap-12">
<!-- Main Content -->
<div class="md:col-span-3">
<div class="md:col-span-4">
<div class="prose prose-lg max-w-none">
<p class="text-lg text-muted-foreground leading-relaxed mb-8 slide-up delay-200">
{{ $article['content']['intro'] }}
@ -67,7 +67,7 @@
</div>
<!-- Sidebar -->
<div class="md:col-span-1">
{{-- <div class="md:col-span-1">
<div class="sticky top-24">
<div class="card-elevated rounded-lg p-2 slide-left delay-400">
@ -93,7 +93,7 @@
</div>
</div>
</div>
</div>
</div> --}}
</div>
</div>
</article>

View file

@ -1,9 +1,9 @@
<section class="section-padding">
<div class="container-padding">
<div class="text-center mb-16">
<h2 class="text-hero mb-6">
<h1 class="text-hero mb-6">
{!! $content['title'] !!}
</h2>
</h1>
<p class="text-large text-muted-foreground mt-4 max-w-3xl mx-auto">
{{ $content['subtitle'] }}
</p>
@ -13,13 +13,13 @@
@foreach($this->posts as $post)
<article class="group">
<div class="card-elevated rounded-3xl overflow-hidden h-full transition-all duration-300">
<div class="flex flex-col md:flex-row">
<div class="relative md:w-3/4 aspect-[2/1] md:aspect-[2/1]">
<img
src="{{ asset('img/assets/' . $post['image']) }}"
<div class="flex flex-col lg:flex-row">
<div class="relative lg:w-3/4 aspect-[2/1] lg:aspect-[2/1]">
<x-web-picture
src="{{ theme_image_url($post['image']) }}"
alt="{{ $post['title'] }}"
class="w-full h-full object-cover"
>
/>
<div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div>
</div>
@ -45,14 +45,14 @@
<div class="flex items-center justify-between mt-6">
<div class="flex items-center text-secondary font-medium group-hover:text-secondary-dark transition-colors duration-200">
<a href="/magazin/{{ $post['id'] }}" class="text-sm">{{ $content['read_more'] }}</a>
<svg class="w-4 h-4 ml-2 transform group-hover:translate-x-1 transition-transform duration-200" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<svg class="w-4 h-4 ml-2 transform group-hover:translate-x-1 transition-transform duration-200" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3" />
</svg>
</div>
<div class="w-10 h-10 bg-primary rounded-full flex items-center justify-center group-hover:bg-secondary transition-colors duration-200">
<a href="/magazin/{{ $post['id'] }}">
<svg class="w-4 h-4 text-white transform group-hover:translate-x-1 transition-transform duration-200" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<a href="/magazin/{{ $post['id'] }}" aria-label="{{ __('ui.read_article', ['title' => $post['title']]) }}">
<svg class="w-4 h-4 text-white transform group-hover:translate-x-1 transition-transform duration-200" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3" />
</svg>
</a>
@ -65,10 +65,10 @@
@endforeach
</div>
<div class="text-center mt-16">
{{-- <div class="text-center mt-16">
<a href="/magazin?page=2" class="btn-primary-accent">
{{ $content['load_more'] }}
</a>
</div>
</div> --}}
</div>
</section>

View file

@ -7,7 +7,7 @@
</div>
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
<div class="grid md:grid-cols-2 lg:grid-cols-2 gap-8">
@foreach($content['timeline'] as $index => $card)
<div class="group {{ $index === 4 ? 'md:col-span-2 lg:col-span-1 lg:col-start-2' : '' }}">
<div class="card-elevated overflow-hidden group hover:shadow-elevated transition-all duration-300 flex flex-col h-full slide-up delay-{{ $index * 200 }}">

View file

@ -1,5 +1,6 @@
{{-- Hero Icons Helper Function --}}
@php
if (!function_exists('renderHeroIcon')) {
function renderHeroIcon($iconName, $style = 'outline') {
$iconPath = public_path("heroicons/optimized/24/{$style}/{$iconName}.svg");
$fallbackPath = public_path("heroicons/optimized/24/outline/sparkles.svg");
@ -18,8 +19,9 @@ function renderHeroIcon($iconName, $style = 'outline') {
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 00-.182.557l1.285 5.385a.562.562 0 01-.84.61l-4.725-2.885a.563.563 0 00-.586 0L6.982 20.54a.562.562 0 01-.84-.61l1.285-5.386a.563.563 0 00-.182-.557l-4.204-3.602a.563.563 0 01.321-.988l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z"/>
</svg>';
}
}
@endphp
<section class="section-padding">
<section class="section-padding bg-accent">
<div class="container-padding">
<div class="text-center mb-16 slide-up delay-300">
<h2 class="text-section-title">{!! $content['title'] !!}</h2>

View file

@ -138,7 +138,7 @@
<div class="relative">
<div class="card-elevated p-0 overflow-hidden rounded-xl">
<img src="{{ asset('img/assets/' . $content['supplier']['highlight']['image']) }}" alt="{{ $content['supplier']['highlight']['alt'] }}"
<img src="{{ theme_image_url($content['supplier']['highlight']['image']) }}" alt="{{ $content['supplier']['highlight']['alt'] }}"
class="w-full h-48 object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-black/60 to-transparent flex items-end">
<div class="p-6 text-white">

View file

@ -10,14 +10,7 @@
{{ $content['subtitle'] }}
</p>
<div class="grid md:grid-cols-3 gap-8 py-8 slide-up delay-400">
@foreach($content['stats'] as $stat)
<div class="text-center space-y-3">
<div class="text-4xl font-light text-secondary-foreground">{{ $stat['number'] }}</div>
<p class="text-secondary-foreground text-sm">{{ $stat['label'] }}</p>
</div>
@endforeach
</div>
<div class="spacing-content slide-up delay-500">
<a href="{{ $content['button_link'] }}" class="btn-primary-accent">

View file

@ -42,7 +42,7 @@
<div class="relative">
<div class="relative rounded-3xl overflow-hidden shadow-elevated slide-left delay-300">
<img src="{{ asset('img/assets/' . $content['image']) }}"
<img src="{{ theme_image_url($content['image']) }}"
alt="{{ $content['image_alt'] }}"
class="w-full h-[600px] object-cover" />
<div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div>

View file

@ -49,7 +49,7 @@
<!-- Image Container -->
<div class="relative aspect-[4/3] overflow-hidden cursor-pointer"
wire:click="openModal({{ json_encode($project) }})">
<img src="{{ asset('img/assets/' . $project['image']) }}"
<img src="{{ theme_image_url($project['image']) }}"
alt="{{ $project['title'] }}"
class="w-full h-full object-cover transition-transform duration-500 group-hover:scale-110">
@ -64,7 +64,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path>
</svg>
<span class="font-medium"> Ansehen</span>
<span class="font-medium"> {{ __('ui.view') }}</span>
</div>
</button>
</div>
@ -128,8 +128,8 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"></path>
</svg>
</div>
<h3 class="text-lg font-medium text-foreground mb-2">Keine Projekte gefunden</h3>
<p class="text-muted-foreground">Versuchen Sie einen anderen Filter</p>
<h3 class="text-lg font-medium text-foreground mb-2">{{ __('ui.portfolio.no_projects') }}</h3>
<p class="text-muted-foreground">{{ __('ui.portfolio.try_other_filter') }}</p>
</div>
@endif
</div>
@ -175,7 +175,7 @@
<div class="h-full max-h-[90vh] overflow-y-auto">
<!-- Image -->
<div class="aspect-[16/10] relative overflow-hidden rounded-t-2xl">
<img src="{{ asset('img/assets/' . $selectedProject['image']) }}"
<img src="{{ theme_image_url($selectedProject['image']) }}"
alt="{{ $selectedProject['title'] }}"
class="w-full h-full object-cover">
@ -200,7 +200,7 @@
<!-- Features -->
<div class="mb-6">
<h4 class="font-semibold text-foreground mb-3">Ausstattung</h4>
<h4 class="font-semibold text-foreground mb-3">{{ __('ui.portfolio.amenities') }}</h4>
<div class="flex flex-wrap gap-2">
@foreach($selectedProject['features'] as $feature)
<span class="bg-muted text-muted-foreground px-3 py-1 rounded-full text-sm">
@ -213,7 +213,7 @@
<!-- Details Sidebar -->
<div class="lg:w-80 card-elevated rounded-lg p-6">
<h4 class="font-semibold text-foreground mb-4">Projektdetails</h4>
<h4 class="font-semibold text-foreground mb-4">{{ __('ui.portfolio.project_details') }}</h4>
<div class="space-y-4">
@if(isset($selectedProject['location']) && $selectedProject['location'] != '')
@ -223,7 +223,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 11a3 3 0 11-6 0 3 3 0 016 0z"></path>
</svg>
<div>
<span class="text-sm text-muted-foreground">Standort</span>
<span class="text-sm text-muted-foreground">{{ __('ui.portfolio.location') }}</span>
<div class="font-medium text-foreground">{{ $selectedProject['location'] }}</div>
</div>
</div>
@ -235,7 +235,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1"></path>
</svg>
<div>
<span class="text-sm text-muted-foreground">Preis</span>
<span class="text-sm text-muted-foreground">{{ __('ui.portfolio.price') }}</span>
<div class="font-bold text-lg text-secondary">{{ $selectedProject['price'] }}</div>
</div>
</div>
@ -247,7 +247,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8V4a1 1 0 011-1h4m0 0V4m0-1h6m0 1v3M4 8h16v12a1 1 0 01-1 1H5a1 1 0 01-1-1V8z"></path>
</svg>
<div>
<span class="text-sm text-muted-foreground">Größe</span>
<span class="text-sm text-muted-foreground">{{ __('ui.portfolio.size') }}</span>
<div class="font-medium text-foreground">{{ $selectedProject['size'] }}</div>
</div>
</div>
@ -256,7 +256,7 @@
<!-- CTA Button -->
<button class="btn-primary-accent w-full mt-6">
Kontakt aufnehmen
{{ __('ui.contact') }}
</button>
</div>
</div>

View file

@ -6,7 +6,7 @@
{{-- Image --}}
<div class="relative">
<div class="card-elevated rounded-3xl overflow-hidden slide-left delay-400">
<img src="{{ asset('img/assets/' . $content['image']) }}" alt="{{ $content['image_alt'] }}"
<img src="{{ theme_image_url($content['image']) }}" alt="{{ $content['image_alt'] }}"
class="w-full h-full object-cover" />
<div

View file

@ -3,12 +3,12 @@
<div class="grid lg:grid-cols-2 gap-16 items-center">
<div class="space-y-8">
<h1 class="text-5xl lg:text-6xl font-light text-foreground">
Über <span class="text-secondary">B2In</span>
Über <span class="text-secondary">B2in</span>
</h1>
<blockquote class="text-xl lg:text-2xl text-muted-foreground italic leading-relaxed border-l-4 border-secondary pl-6">
"Unsere Vision ist es, Unternehmen durch innovative Konnektivitätslösungen zu verbinden
und nachhaltiges Wachstum in der digitalen Welt zu ermöglichen. Bei B2In schaffen wir
und nachhaltiges Wachstum in der digitalen Welt zu ermöglichen. Bei B2in schaffen wir
nicht nur Verbindungen wir bauen Brücken in die Zukunft."
</blockquote>
@ -16,7 +16,7 @@
<div class="w-16 h-px bg-secondary"></div>
<div>
<p class="font-semibold text-foreground">Marcel Scheibe</p>
<p class="text-sm text-muted-foreground">Gründer & CEO, B2In</p>
<p class="text-sm text-muted-foreground">Gründer & CEO, B2in</p>
</div>
</div>
</div>
@ -25,9 +25,8 @@
<div class="card-elevated rounded-3xl overflow-hidden">
<img
src="{{ asset('img/assets/marcel-scheibe.jpg') }}"
alt="Marcel Scheibe, Gründer und CEO von B2In"
class="w-full h-96 lg:h-[500px] object-cover"
/>
alt="Marcel Scheibe, Gründer und CEO von B2in"
class="w-full h-96 lg:h-[500px] object-cover" />
</div>
<div class="absolute -bottom-6 -right-6 bg-secondary text-secondary-foreground p-6 rounded-2xl">
<div class="text-3xl font-bold">2019</div>
@ -36,4 +35,4 @@
</div>
</div>
</div>
</section>
</section>

View file

@ -3,7 +3,7 @@
<div class="grid lg:grid-cols-2 gap-16 items-center">
<div class="space-y-8">
<h1 class="text-5xl lg:text-7xl font-light text-foreground">
B2In <span class="text-primary">Ecosystem</span>
B2in <span class="text-primary">Ecosystem</span>
</h1>
<p class="text-xl lg:text-2xl text-muted-foreground leading-relaxed">
@ -14,39 +14,39 @@
<div class="grid grid-cols-2 gap-6">
@foreach ($this->features as $feature)
<div class="flex items-center gap-3">
<div class="w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center">
@if ($feature['icon'] === 'users')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197m13.5-9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z" />
</svg>
@elseif($feature['icon'] === 'building-2')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4" />
</svg>
@elseif($feature['icon'] === 'network')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M8.684 13.342C8.886 12.938 9 12.482 9 12c0-.482-.114-.938-.316-1.342m0 2.684a3 3 0 110-2.684m0 2.684l6.632 3.316m-6.632-6l6.632-3.316m0 0a3 3 0 105.367-2.684 3 3 0 00-5.367 2.684zm0 9.316a3 3 0 105.367 2.684 3 3 0 00-5.367-2.684z" />
</svg>
@else
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M13 10V3L4 14h7v7l9-11h-7z" />
</svg>
@endif
</div>
<div>
<p class="font-semibold text-foreground">{{ $feature['title'] }}</p>
<p class="text-sm text-muted-foreground">{{ $feature['description'] }}</p>
</div>
<div class="flex items-center gap-3">
<div class="w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center">
@if ($feature['icon'] === 'users')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197m13.5-9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z" />
</svg>
@elseif($feature['icon'] === 'building-2')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4" />
</svg>
@elseif($feature['icon'] === 'network')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M8.684 13.342C8.886 12.938 9 12.482 9 12c0-.482-.114-.938-.316-1.342m0 2.684a3 3 0 110-2.684m0 2.684l6.632 3.316m-6.632-6l6.632-3.316m0 0a3 3 0 105.367-2.684 3 3 0 00-5.367 2.684zm0 9.316a3 3 0 105.367 2.684 3 3 0 00-5.367-2.684z" />
</svg>
@else
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M13 10V3L4 14h7v7l9-11h-7z" />
</svg>
@endif
</div>
<div>
<p class="font-semibold text-foreground">{{ $feature['title'] }}</p>
<p class="text-sm text-muted-foreground">{{ $feature['description'] }}</p>
</div>
</div>
@endforeach
</div>
</div>
@ -64,7 +64,7 @@
d="M8.684 13.342C8.886 12.938 9 12.482 9 12c0-.482-.114-.938-.316-1.342m0 2.684a3 3 0 110-2.684m0 2.684l6.632 3.316m-6.632-6l6.632-3.316m0 0a3 3 0 105.367-2.684 3 3 0 00-5.367 2.684zm0 9.316a3 3 0 105.367 2.684 3 3 0 00-5.367-2.684z" />
</svg>
</div>
<h3 class="text-xl font-semibold text-foreground">B2In Portal</h3>
<h3 class="text-xl font-semibold text-foreground">B2in Portal</h3>
<p class="text-sm text-muted-foreground">Zentrale Plattform</p>
</div>

View file

@ -2,7 +2,7 @@
<div class="max-w-7xl mx-auto">
<div class="text-center mb-16">
<h2 class="text-4xl lg:text-5xl font-light text-foreground mb-6">
B2In <span class="text-secondary">Magazin</span>
B2in <span class="text-secondary">Magazin</span>
</h2>
<p class="text-muted-foreground text-lg max-w-2xl mx-auto">
Entdecken Sie die neuesten Trends, Insights und Geschichten aus der Welt
@ -12,57 +12,56 @@
<div class="space-y-8">
@foreach($this->posts as $post)
<article class="group">
<div class="card-elevated rounded-3xl overflow-hidden h-full hover:scale-[1.02] transition-all duration-300">
<div class="flex flex-col md:flex-row">
<div class="relative md:w-3/4 aspect-[2/1] md:aspect-[2/1]">
<img
src="{{ asset('images/' . $post['image']) }}"
alt="{{ $post['title'] }}"
class="w-full h-full object-cover"
>
<div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div>
</div>
<article class="group">
<div class="card-elevated rounded-3xl overflow-hidden h-full hover:scale-[1.02] transition-all duration-300">
<div class="flex flex-col md:flex-row">
<div class="relative md:w-3/4 aspect-[2/1] md:aspect-[2/1]">
<img
src="{{ asset('images/' . $post['image']) }}"
alt="{{ $post['title'] }}"
class="w-full h-full object-cover">
<div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div>
</div>
<div class="lg:w-2/3 p-6 lg:p-8 flex flex-col justify-between">
<div class="space-y-4">
<div class="flex items-center gap-4 text-sm text-muted-foreground">
<time>{{ $post['date'] }}</time>
<span class="w-1 h-1 bg-muted-foreground rounded-full"></span>
<span>{{ $post['readTime'] }}</span>
</div>
<h3 class="text-xl lg:text-2xl font-semibold text-foreground leading-tight group-hover:text-secondary transition-colors duration-200">
<a href="/magazin/{{ $post['id'] }}" class="stretched-link">
{{ $post['title'] }}
</a>
</h3>
<p class="text-muted-foreground leading-relaxed text-base lg:text-lg">
{{ $post['excerpt'] }}
</p>
<div class="lg:w-2/3 p-6 lg:p-8 flex flex-col justify-between">
<div class="space-y-4">
<div class="flex items-center gap-4 text-sm text-muted-foreground">
<time>{{ $post['date'] }}</time>
<span class="w-1 h-1 bg-muted-foreground rounded-full"></span>
<span>{{ $post['readTime'] }}</span>
</div>
<div class="flex items-center justify-between mt-6">
<div class="flex items-center text-secondary font-medium group-hover:text-secondary-dark transition-colors duration-200">
<a href="/magazin/{{ $post['id'] }}" class="text-sm">Weiterlesen</a>
<svg class="w-4 h-4 ml-2 transform group-hover:translate-x-1 transition-transform duration-200" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3" />
</svg>
</div>
<h3 class="text-xl lg:text-2xl font-semibold text-foreground leading-tight group-hover:text-secondary transition-colors duration-200">
<a href="/magazin/{{ $post['id'] }}" class="stretched-link">
{{ $post['title'] }}
</a>
</h3>
<div class="w-10 h-10 bg-primary rounded-full flex items-center justify-center group-hover:bg-secondary transition-colors duration-200">
<a href="/magazin/{{ $post['id'] }}">
<p class="text-muted-foreground leading-relaxed text-base lg:text-lg">
{{ $post['excerpt'] }}
</p>
</div>
<div class="flex items-center justify-between mt-6">
<div class="flex items-center text-secondary font-medium group-hover:text-secondary-dark transition-colors duration-200">
<a href="/magazin/{{ $post['id'] }}" class="text-sm">Weiterlesen</a>
<svg class="w-4 h-4 ml-2 transform group-hover:translate-x-1 transition-transform duration-200" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3" />
</svg>
</div>
<div class="w-10 h-10 bg-primary rounded-full flex items-center justify-center group-hover:bg-secondary transition-colors duration-200">
<a href="/magazin/{{ $post['id'] }}">
<svg class="w-4 h-4 text-white transform group-hover:translate-x-1 transition-transform duration-200" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3" />
</svg>
</a>
</div>
</a>
</div>
</div>
</div>
</div>
</article>
</div>
</article>
@endforeach
</div>

View file

@ -6,21 +6,21 @@
<div class="grid md:grid-cols-3 gap-8 mb-16">
@foreach($this->timeline as $item)
<div class="spacing-small">
<div class="w-12 h-12 mx-auto bg-secondary/20 rounded-full flex items-center justify-center">
<div class="w-6 h-6 bg-secondary rounded-full"></div>
</div>
<h3 class="text-xl font-semibold text-[hsl(var(--dark-text))]">{{ $item['title'] }}</h3>
<p class="text-dark-muted text-sm leading-relaxed">
{{ $item['description'] }}
</p>
<div class="spacing-small">
<div class="w-12 h-12 mx-auto bg-secondary/20 rounded-full flex items-center justify-center">
<div class="w-6 h-6 bg-secondary rounded-full"></div>
</div>
<h3 class="text-xl font-semibold text-[hsl(var(--dark-text))]">{{ $item['title'] }}</h3>
<p class="text-dark-muted text-sm leading-relaxed">
{{ $item['description'] }}
</p>
</div>
@endforeach
</div>
<p class="text-large text-dark-muted leading-relaxed max-w-3xl mx-auto">
Was als Vision begann, traditionelle Geschäftsprozesse zu revolutionieren, ist heute eine
bewährte Plattform für digitale Innovation. B2In schließt die Lücke zwischen
bewährte Plattform für digitale Innovation. B2in schließt die Lücke zwischen
traditionellen Unternehmen und modernen, digitalen Lösungen durch maßgeschneiderte
Konnektivitätsservices, die Effizienz steigern und nachhaltiges Wachstum fördern.
</p>

View file

@ -5,7 +5,7 @@
Warum Partner werden?
</h2>
<p class="text-muted-foreground text-lg max-w-3xl mx-auto">
Entdecken Sie die Vorteile einer Partnerschaft mit B2In und
Entdecken Sie die Vorteile einer Partnerschaft mit B2in und
wie Sie von unserem innovativen Ecosystem profitieren können.
</p>
</div>
@ -29,41 +29,41 @@
<div class="space-y-6">
@foreach ($this->brokerBenefits as $index => $benefit)
<div class="card-elevated p-6 rounded-xl">
<div class="flex gap-4">
<div
class="flex-shrink-0 w-12 h-12 rounded-xl bg-primary/10 flex items-center justify-center">
@if ($benefit['icon'] === 'trending-up')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"></path>
</svg>
@elseif($benefit['icon'] === 'target')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg>
@else
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z">
</path>
</svg>
@endif
</div>
<div>
<h4 class="text-lg font-semibold text-foreground mb-2">
{{ $benefit['title'] }}
</h4>
<p class="text-muted-foreground">
{{ $benefit['description'] }}
</p>
</div>
<div class="card-elevated p-6 rounded-xl">
<div class="flex gap-4">
<div
class="flex-shrink-0 w-12 h-12 rounded-xl bg-primary/10 flex items-center justify-center">
@if ($benefit['icon'] === 'trending-up')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"></path>
</svg>
@elseif($benefit['icon'] === 'target')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg>
@else
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z">
</path>
</svg>
@endif
</div>
<div>
<h4 class="text-lg font-semibold text-foreground mb-2">
{{ $benefit['title'] }}
</h4>
<p class="text-muted-foreground">
{{ $benefit['description'] }}
</p>
</div>
</div>
</div>
@endforeach
</div>
@ -96,45 +96,45 @@
<div class="space-y-6">
@foreach ($this->supplierBenefits as $index => $benefit)
<div class="card-elevated p-6 rounded-xl">
<div class="flex gap-4">
<div
class="flex-shrink-0 w-12 h-12 rounded-xl bg-accent/20 flex items-center justify-center">
@if ($benefit['icon'] === 'globe')
<svg class="w-6 h-6 text-accent-foreground" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z">
</path>
</svg>
@elseif($benefit['icon'] === 'handshake')
<svg class="w-6 h-6 text-accent-foreground" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M8.684 13.342C8.886 12.938 9 12.482 9 12c0-.482-.114-.938-.316-1.342m0 2.684a3 3 0 110-2.684m0 2.684l6.632 3.316m-6.632-6l6.632-3.316m0 0a3 3 0 105.367-2.684 3 3 0 00-5.367 2.684zm0 9.316a3 3 0 105.367 2.684 3 3 0 00-5.367-2.684z">
</path>
</svg>
@else
<svg class="w-6 h-6 text-accent-foreground" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z">
</path>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
</svg>
@endif
</div>
<div>
<h4 class="text-lg font-semibold text-foreground mb-2">
{{ $benefit['title'] }}
</h4>
<p class="text-muted-foreground">
{{ $benefit['description'] }}
</p>
</div>
<div class="card-elevated p-6 rounded-xl">
<div class="flex gap-4">
<div
class="flex-shrink-0 w-12 h-12 rounded-xl bg-accent/20 flex items-center justify-center">
@if ($benefit['icon'] === 'globe')
<svg class="w-6 h-6 text-accent-foreground" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z">
</path>
</svg>
@elseif($benefit['icon'] === 'handshake')
<svg class="w-6 h-6 text-accent-foreground" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M8.684 13.342C8.886 12.938 9 12.482 9 12c0-.482-.114-.938-.316-1.342m0 2.684a3 3 0 110-2.684m0 2.684l6.632 3.316m-6.632-6l6.632-3.316m0 0a3 3 0 105.367-2.684 3 3 0 00-5.367 2.684zm0 9.316a3 3 0 105.367 2.684 3 3 0 00-5.367-2.684z">
</path>
</svg>
@else
<svg class="w-6 h-6 text-accent-foreground" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z">
</path>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
</svg>
@endif
</div>
<div>
<h4 class="text-lg font-semibold text-foreground mb-2">
{{ $benefit['title'] }}
</h4>
<p class="text-muted-foreground">
{{ $benefit['description'] }}
</p>
</div>
</div>
</div>
@endforeach
</div>

View file

@ -9,28 +9,28 @@
<div class="w-16 h-px bg-secondary mx-auto"></div>
<p class="text-large text-dark-muted leading-relaxed max-w-2xl mx-auto">
Werden Sie Teil des B2In-Partnernetzwerks und erschließen Sie neue
Werden Sie Teil des B2in-Partnernetzwerks und erschließen Sie neue
Geschäftsmöglichkeiten durch innovative Konnektivitätslösungen.
</p>
<div class="grid md:grid-cols-3 gap-8 py-8">
@foreach($this->stats as $stat)
<div class="text-center space-y-3">
<div class="text-4xl font-light text-secondary">{{ $stat['number'] }}</div>
<p class="text-dark-muted text-sm">{{ $stat['label'] }}</p>
</div>
<div class="text-center space-y-3">
<div class="text-4xl font-light text-secondary">{{ $stat['number'] }}</div>
<p class="text-dark-muted text-sm">{{ $stat['label'] }}</p>
</div>
@endforeach
</div>
<div class="spacing-content">
<a href="/contact" class="btn-accent px-12 py-6 rounded-2xl text-lg">
Werden Sie B2In Partner
Werden Sie B2in Partner
</a>
<p class="text-dark-muted text-sm">
Entdecken Sie die Vorteile einer strategischen Partnerschaft mit B2In
Entdecken Sie die Vorteile einer strategischen Partnerschaft mit B2in
</p>
</div>
</div>
</div>
</section>
</section>

View file

@ -4,50 +4,50 @@
<div class="space-y-8">
<h1 class="text-hero">
Wachsen Sie mit uns.<br />
Werden Sie <span class="text-secondary">B2In Partner</span>.
Werden Sie <span class="text-secondary">B2in Partner</span>.
</h1>
<p class="text-lg text-muted-foreground max-w-md leading-relaxed">
Werden Sie Teil des B2In Ecosystems und profitieren Sie von innovativen
Werden Sie Teil des B2in Ecosystems und profitieren Sie von innovativen
Geschäftsmodellen, die nachhaltiges Wachstum und langfristigen Erfolg ermöglichen.
Gemeinsam gestalten wir die Zukunft der Immobilienbranche.
</p>
<div class="grid grid-cols-2 gap-6">
@foreach ($this->partnerTypes as $partner)
<div class="flex items-center gap-3">
<div class="w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center">
@if ($partner['icon'] === 'trending-up')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6" />
</svg>
@elseif($partner['icon'] === 'globe')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
@elseif($partner['icon'] === 'handshake')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M7 12l3-3 3 3 4-4M8 21l4-4 4 4M3 4h18M4 4h16v12a1 1 0 01-1 1H5a1 1 0 01-1-1V4z" />
</svg>
@else
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z" />
</svg>
@endif
</div>
<div>
<p class="font-semibold text-foreground">{{ $partner['title'] }}</p>
<p class="text-sm text-muted-foreground">{{ $partner['description'] }}</p>
</div>
<div class="flex items-center gap-3">
<div class="w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center">
@if ($partner['icon'] === 'trending-up')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6" />
</svg>
@elseif($partner['icon'] === 'globe')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
@elseif($partner['icon'] === 'handshake')
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M7 12l3-3 3 3 4-4M8 21l4-4 4 4M3 4h18M4 4h16v12a1 1 0 01-1 1H5a1 1 0 01-1-1V4z" />
</svg>
@else
<svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z" />
</svg>
@endif
</div>
<div>
<p class="font-semibold text-foreground">{{ $partner['title'] }}</p>
<p class="text-sm text-muted-foreground">{{ $partner['description'] }}</p>
</div>
</div>
@endforeach
</div>
</div>

View file

@ -5,70 +5,70 @@
So werden Sie <span class="text-primary">Partner</span>
</h2>
<p class="text-muted-foreground text-lg max-w-3xl mx-auto">
In nur drei einfachen Schritten werden Sie Teil des B2In Ecosystems
In nur drei einfachen Schritten werden Sie Teil des B2in Ecosystems
und können von allen Vorteilen unserer Partnerschaft profitieren.
</p>
</div>
<div class="grid md:grid-cols-3 gap-8 mb-16">
@foreach ($this->steps as $index => $step)
<div class="card-elevated p-0 overflow-hidden group hover:shadow-elevated transition-all duration-300">
<div class="relative overflow-hidden">
<img src="{{ asset('img/assets/' . $step['image']) }}" alt="{{ $step['title'] }}"
class="w-full h-64 object-cover group-hover:scale-105 transition-transform duration-300" />
<div
class="absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300">
</div>
{{-- Step Number Badge --}}
<div
class="absolute top-4 left-4 w-12 h-12 rounded-full bg-primary text-white flex items-center justify-center font-bold text-lg">
{{ $step['step'] }}
</div>
<div class="card-elevated p-0 overflow-hidden group hover:shadow-elevated transition-all duration-300">
<div class="relative overflow-hidden">
<img src="{{ asset('img/assets/' . $step['image']) }}" alt="{{ $step['title'] }}"
class="w-full h-64 object-cover group-hover:scale-105 transition-transform duration-300" />
<div
class="absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300">
</div>
<div class="p-8">
<div class="flex items-center gap-3 mb-4">
<div class="w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center">
@if ($step['icon'] === 'file-text')
<svg class="w-5 h-5 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z">
</path>
</svg>
@elseif($step['icon'] === 'search')
<svg class="w-5 h-5 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
</svg>
@else
<svg class="w-5 h-5 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M13 10V3L4 14h7v7l9-11h-7z"></path>
</svg>
@endif
</div>
<h3 class="text-2xl font-medium text-foreground">
{{ $step['title'] }}
</h3>
</div>
<p class="text-muted-foreground leading-relaxed mb-6">
{{ $step['description'] }}
</p>
@if ($index === count($steps) - 1)
<a href="/contact">
<button class="btn-secondary w-full">
Jetzt starten
</button>
</a>
@endif
{{-- Step Number Badge --}}
<div
class="absolute top-4 left-4 w-12 h-12 rounded-full bg-primary text-white flex items-center justify-center font-bold text-lg">
{{ $step['step'] }}
</div>
</div>
<div class="p-8">
<div class="flex items-center gap-3 mb-4">
<div class="w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center">
@if ($step['icon'] === 'file-text')
<svg class="w-5 h-5 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z">
</path>
</svg>
@elseif($step['icon'] === 'search')
<svg class="w-5 h-5 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
</svg>
@else
<svg class="w-5 h-5 text-primary" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M13 10V3L4 14h7v7l9-11h-7z"></path>
</svg>
@endif
</div>
<h3 class="text-2xl font-medium text-foreground">
{{ $step['title'] }}
</h3>
</div>
<p class="text-muted-foreground leading-relaxed mb-6">
{{ $step['description'] }}
</p>
@if ($index === count($steps) - 1)
<a href="/contact">
<button class="btn-secondary w-full">
Jetzt starten
</button>
</a>
@endif
</div>
</div>
@endforeach
</div>
@ -79,7 +79,7 @@
Bereit für den nächsten <span class="text-primary">Schritt</span>?
</h3>
<p class="text-muted-foreground text-lg mb-8 max-w-2xl mx-auto">
Werden Sie noch heute Teil des B2In Ecosystems und profitieren Sie
Werden Sie noch heute Teil des B2in Ecosystems und profitieren Sie
von innovativen Geschäftsmodellen und nachhaltigen Erfolgsstrategien.
</p>
<a href="/contact">

View file

@ -0,0 +1,42 @@
@if (!empty($content) && ($content['enabled'] ?? false))
<div x-data="{ dismissed: localStorage.getItem('announcement_dismissed_{{ $content['id'] ?? 'default' }}') === 'true' }"
x-show="!dismissed"
x-transition:leave="transition ease-in duration-200"
x-transition:leave-start="opacity-100 max-h-16"
x-transition:leave-end="opacity-0 max-h-0"
class="bg-secondary text-secondary-foreground overflow-hidden"
id="topbar">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="relative flex items-center justify-center gap-x-3 gap-y-1 flex-wrap min-h-10 py-2 pr-8 text-sm">
@if (isset($content['badge']))
<span class="hidden sm:inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-bold uppercase tracking-wider bg-white/20 shrink-0">
{{ $content['badge'] }}
</span>
@endif
<span class="font-medium text-center leading-snug">
{{ $content['text'] ?? '' }}
</span>
@if (isset($content['link_text']) && isset($content['link_url']))
<a href="{{ $content['link_url'] }}"
class="inline-flex items-center gap-1 font-semibold underline underline-offset-2 decoration-white/50 hover:decoration-white transition-colors shrink-0">
{{ $content['link_text'] }}
<svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3" />
</svg>
</a>
@endif
<button
@click="dismissed = true; localStorage.setItem('announcement_dismissed_{{ $content['id'] ?? 'default' }}', 'true')"
class="absolute right-0 top-1/2 -translate-y-1/2 p-1.5 text-white/60 hover:text-white transition-colors"
aria-label="{{ __('ui.announcement_close') }}">
<svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
</svg>
</button>
</div>
</div>
</div>
@endif

View file

@ -4,7 +4,7 @@
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-20 bg-[hsl(var(--hero-container))] rounded-[20px] w-[95%]">
<div class="grid lg:grid-cols-2 gap-12 items-center">
<!-- Left Side - Hero Text -->
<div class="slide-right delay-200">
<div class="">
<h1 class="text-hero mb-6 tracking-wide">
{!! $content['hero']['title'] ?? 'Send us a<br /><span class="text-secondary font-medium">message.</span>' !!}
</h1>
@ -14,18 +14,27 @@
</div>
<!-- Right Side - Contact Form -->
<div class="card-elevated p-8 slide-left delay-200">
@if (session()->has('message'))
<div class="mb-6 p-4 bg-gray-50 border border-secondary/20 rounded-lg text-secondary">
{{ session('message') }}
<div class="card-elevated p-8 ">
@if ($success)
<div class="flex flex-col items-center text-center py-8 gap-5">
<div class="flex items-center justify-center w-20 h-20 rounded-full bg-green-100">
<svg class="w-10 h-10 text-green-600" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7" />
</svg>
</div>
<div>
<p class="text-2xl font-semibold text-foreground">{{ __('ui.contact_form.success_title') }}</p>
<p class="text-muted-foreground mt-2 max-w-sm mx-auto">
{{ $content['form']['success_message'] ?? __('ui.contact_form.success_message') }}
</p>
</div>
</div>
@endif
@else
<form wire:submit="submit" class="space-y-6">
<div class="grid md:grid-cols-2 gap-4">
<div>
<label for="firstName" class="text-foreground mb-2 block text-sm font-medium">
{{ $content['form']['labels']['first_name'] ?? 'First name *' }}
{{ $content['form']['labels']['first_name'] ?? __('ui.contact_form.first_name') }}
</label>
<input
wire:model="firstName"
@ -38,7 +47,7 @@
</div>
<div>
<label for="lastName" class="text-foreground mb-2 block text-sm font-medium">
{{ $content['form']['labels']['last_name'] ?? 'Last name *' }}
{{ $content['form']['labels']['last_name'] ?? __('ui.contact_form.last_name') }}
</label>
<input
wire:model="lastName"
@ -53,7 +62,7 @@
<div>
<label for="company" class="text-foreground mb-2 block text-sm font-medium">
{{ $content['form']['labels']['company'] ?? 'Company' }}
{{ $content['form']['labels']['company'] ?? __('ui.contact_form.company') }}
</label>
<input
wire:model="company"
@ -67,7 +76,7 @@
<div class="grid md:grid-cols-2 gap-4">
<div>
<label for="email" class="text-foreground mb-2 block text-sm font-medium">
{{ $content['form']['labels']['email'] ?? 'Email *' }}
{{ $content['form']['labels']['email'] ?? __('ui.contact_form.email') }}
</label>
<input
wire:model="email"
@ -80,7 +89,7 @@
</div>
<div>
<label for="phone" class="text-foreground mb-2 block text-sm font-medium">
{{ $content['form']['labels']['phone'] ?? 'Phone' }}
{{ $content['form']['labels']['phone'] ?? __('ui.contact_form.phone') }}
</label>
<input
wire:model="phone"
@ -94,7 +103,7 @@
<div>
<label for="subject" class="text-foreground mb-2 block text-sm font-medium">
{{ $content['form']['labels']['subject'] ?? 'Subject *' }}
{{ $content['form']['labels']['subject'] ?? __('ui.contact_form.subject') }}
</label>
<div class="grid grid-cols-1">
<select
@ -116,34 +125,70 @@
<div>
<label for="message" class="text-foreground mb-2 block text-sm font-medium">
{{ $content['form']['labels']['message'] ?? 'Message *' }}
{{ $content['form']['labels']['message'] ?? __('ui.contact_form.message') }}
</label>
<textarea
wire:model="message"
id="message"
rows="5"
class="w-full px-3 py-2 bg-gray-50 border border-border rounded-lg outline-1 -outline-offset-1 outline-gray-300 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-gray-600 sm:text-sm/6 resize-none"
placeholder="{{ $content['form']['placeholders']['message'] ?? 'Ihre Nachricht...' }}"
placeholder="{{ $content['form']['placeholders']['message'] ?? __('ui.contact_form.message_placeholder') }}"
required
></textarea>
@error('message') <span class="text-red-500 text-xs">{{ $message }}</span> @enderror
</div>
{{-- Honeypot --}}
<div class="opacity-0 absolute top-0 left-0 h-0 w-0 -z-10 overflow-hidden" aria-hidden="true">
<label for="website">Website</label>
<input type="text" id="website" name="website" wire:model="website" tabindex="-1" autocomplete="off">
</div>
<div x-data="{ on: $wire.entangle('privacy') }">
<label class="flex items-start gap-3 cursor-pointer">
<input
x-model="on"
id="privacy"
type="checkbox"
class="sr-only"
/>
<span
role="switch"
:aria-checked="on.toString()"
:class="on ? 'bg-green-500' : 'bg-muted'"
class="relative mt-0.5 w-11 h-6 shrink-0 rounded-full transition-colors duration-200"
>
<span
:class="on ? 'translate-x-5' : 'translate-x-0'"
class="absolute top-0.5 left-0.5 h-5 w-5 rounded-full bg-white shadow-sm transition-transform duration-200 pointer-events-none"
></span>
</span>
<span class="text-sm text-muted-foreground">
{{ __('ui.contact_form.privacy_prefix') }}
<a href="{{ route('privacy') }}" target="_blank" class="text-secondary underline underline-offset-2 hover:no-underline">Datenschutzerklärung</a>
{{ __('ui.contact_form.privacy_suffix') }}
</span>
</label>
@error('privacy') <span class="text-red-500 text-xs mt-1 block">{{ $message }}</span> @enderror
</div>
<button
type="submit"
class="w-full btn-primary flex items-center justify-center"
wire:loading.attr="disabled"
>
<div class="flex items-center justify-center">
<span wire:loading.remove>{{ $content['form']['button_text'] ?? 'Senden' }}</span>
<span wire:loading>{{ $content['form']['button_loading'] ?? 'Wird gesendet...' }}</span>
<span wire:loading.remove>{{ $content['form']['button_text'] ?? __('ui.contact_form.send') }}</span>
<span wire:loading>{{ $content['form']['button_loading'] ?? __('ui.contact_form.sending') }}</span>
<svg wire:loading.remove class="ml-2 w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"/>
</svg>
</div>
</button>
<p class="text-sm text-muted-foreground">{{ __('ui.required_fields') }}</p>
</form>
@endif
</div>
</div>
</div>
@ -172,7 +217,7 @@
@endif
</div>
<h3 class="text-xl mb-2 text-foreground">{{ $info['title'] }}</h3>
<div class="text-muted-foreground text-sm">
<div class="text-muted-foreground text-base">
@foreach($info['info'] as $line)
<p>{{ $line }}</p>
@endforeach
@ -184,7 +229,7 @@
</section>
<!-- Social Media Section -->
<section class="section-padding bg-accent">
{{-- <section class="section-padding bg-accent">
<div class="container-padding">
<div class="grid lg:grid-cols-2 gap-12 items-center">
<div class="slide-right delay-200">
@ -212,4 +257,5 @@
</div>
</div>
</section>
--}}
</div>

View file

@ -5,14 +5,16 @@
<div class="spacing-section">
<div class="flex items-center justify-center">
<img src="{{ asset(\App\Helpers\ThemeHelper::getLogoPath('negative')) }}"
alt="{{ $domainName ?? 'B2In' }} Logo" class="h-14 w-auto" />
alt="{{ $domainName ?? 'B2in' }} Logo" class="h-14 w-auto"
width="120" height="56"
loading="lazy" />
</div>
<div class="container-narrow spacing-content">
<h2 class="text-section-title text-dark-text leading-tight">
Connecting Design and <span class="text-secondary">Property</span>
</h2>
<p class="text-dark-muted text-sm mt-4">Marcel Scheibe {{ __('ui.founder_ceo') }}</p>
</div>
<hr class="border-t border-dark-muted/30 mt-12 pt-4">
@ -21,21 +23,19 @@
{{-- Links --}}
<div class="grid grid-cols-2 md:grid-cols-4 gap-8 text-left max-w-4xl mx-auto">
<div class="spacing-small text-center">
<a href="#" class="block hover-text-secondary transition-colors">Privacy Policy</a>
<a href="{{ route('privacy') }}" class="block hover-text-secondary transition-colors">Privacy Policy</a>
</div>
<div class="spacing-small text-center">
<a href="#" class="block hover-text-secondary transition-colors">Terms of Service</a>
<a href="{{ route('terms') }}" class="block hover-text-secondary transition-colors">Terms of Service</a>
</div>
<div class="spacing-small text-center">
<a href="#" class="block hover-text-secondary transition-colors">Cookie Policy</a>
<a href="{{ route('cookie-policy') }}" class="block hover-text-secondary transition-colors">Cookie Policy</a>
</div>
<div class="spacing-small text-center">
<a href="#" class="block hover-text-secondary transition-colors">Impressum</a>
<a href="{{ route('impressum') }}" class="block hover-text-secondary transition-colors">{{ __('ui.legal_notice') }}</a>
</div>
</div>
</div>
@ -43,25 +43,18 @@
{{-- Bottom Bar --}}
<div class="border-t border-dark-muted/30 mt-12 pt-8">
<div class="flex flex-col md:flex-row justify-between items-center spacing-small md:space-y-0">
<div class="text-dark-muted text-sm">
© {{ date('Y') }} B2In. All rights reserved.
<div class="text-dark-muted text-sm flex flex-col sm:flex-row items-center gap-2 sm:gap-4">
<span>© {{ date('Y') }} B2in. All rights reserved.</span>
<a href="#" onclick="window.dispatchEvent(new CustomEvent('open-cookie-settings')); return false;"
class="hover-text-secondary transition-colors">
{{ __('ui.cookie_settings') }}
</a>
</div>
<div class="flex items-center space-x-6 text-dark-muted text-sm">
<div class="flex space-x-4">
<a href="#" class="hover-text-secondary transition-colors" aria-label="Facebook">
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
<path
d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z" />
</svg>
</a>
<a href="#" class="hover-text-secondary transition-colors" aria-label="Instagram">
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
<path
d="M12.017 0C5.396 0 .029 5.367.029 11.987c0 6.62 5.367 11.987 11.988 11.987s11.987-5.367 11.987-11.987C24.004 5.367 18.637.001 12.017.001zM8.449 16.988c-1.297 0-2.448-.49-3.323-1.297C4.198 14.895 3.708 13.744 3.708 12.447s.49-2.448 1.418-3.323c.875-.807 2.026-1.297 3.323-1.297s2.448.49 3.323 1.297c.928.875 1.418 2.026 1.418 3.323s-.49 2.448-1.418 3.244c-.875.807-2.026 1.297-3.323 1.297zm7.83-9.281c-.49 0-.928-.175-1.297-.49-.368-.315-.49-.753-.49-1.243s.122-.928.49-1.243c.369-.315.807-.49 1.297-.49s.928.175 1.297.49c.368.315.49.753.49 1.243s-.122.928-.49 1.243c-.369.315-.807.49-1.297.49z" />
</svg>
</a>
<a href="#" class="hover-text-secondary transition-colors" aria-label="LinkedIn">
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
<a href="https://www.linkedin.com/in/marcel-scheibe/" target="_blank" class="hover-text-secondary transition-colors" aria-label="LinkedIn">
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24">
<path
d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z" />
</svg>

View file

@ -6,7 +6,7 @@
alt="{{ $domainName ?? 'B2IN' }} Logo" class="h-10 w-auto" />
</a>
<nav class="hidden md:flex items-center space-x-8">
<nav class="hidden md:flex items-center space-x-8" aria-label="{{ __('ui.main_navigation') }}">
@if(isset($content['navigation']) && is_array($content['navigation']))
@foreach ($content['navigation'] as $navItem)
<a href="{{ $navItem['url'] }}"
@ -21,19 +21,38 @@
</nav>
<div class="flex items-center space-x-4">
<a href="{{ config('domains.domain_portal_url') }}"
class=" md:block rounded-md px-3 py-2 text-sm font-medium bg-secondary hover-bg-primary glow-medium text-white transition-all duration-200">
{{ $content['portal_login'] ?? 'Portal Login' }}
</a>
{{-- Language Switcher --}}
<div class="hidden md:flex items-center space-x-1 text-sm" role="group" aria-label="Language">
@foreach ($availableLocales as $locale => $label)
<button wire:click="switchLanguage('{{ $locale }}')"
class="px-2 py-1 rounded transition-colors duration-200
{{ $currentLocale === $locale
? 'text-secondary font-semibold'
: 'text-muted-foreground hover:text-foreground' }}"
@if($currentLocale === $locale) aria-current="true" @endif>
{{ $label }}
</button>
@if (!$loop->last)
<span class="text-border">|</span>
@endif
@endforeach
</div>
<a href="{{ route('contact') }}"
class="hidden md:block rounded-md px-5 py-2.5 text-sm font-medium bg-secondary hover-bg-primary glow-medium text-white transition-all duration-200">
{{ __('ui.contact') }}
</a>
<button wire:click="toggleMobileMenu"
class="md:hidden w-5 h-5 text-muted-foreground hover:text-foreground transition-colors">
class="md:hidden w-5 h-5 text-muted-foreground hover:text-foreground transition-colors"
aria-label="{{ $this->isMobileMenuOpen ? __('ui.menu_close') : __('ui.menu_open') }}"
aria-expanded="{{ $this->isMobileMenuOpen ? 'true' : 'false' }}">
@if ($this->isMobileMenuOpen)
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M6 18L18 6M6 6l12 12"></path>
</svg>
@else
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M4 6h16M4 12h16M4 18h16"></path>
</svg>
@ -45,7 +64,7 @@
{{-- Mobile Menu --}}
@if ($this->isMobileMenuOpen)
<div class="md:hidden border-t border-border bg-background/95 backdrop-blur-sm">
<nav class="px-4 py-6 space-y-4">
<nav class="px-4 py-6 space-y-4" aria-label="{{ __('ui.mobile_navigation') }}">
@if(isset($content['navigation']) && is_array($content['navigation']))
@foreach ($content['navigation'] as $navItem)
<a href="{{ $navItem['url'] }}"
@ -58,10 +77,27 @@
</a>
@endforeach
@endif
<div class="pt-4 border-t border-border">
<a href="{{ config('domains.domain_portal_url') }}"
class="block w-full btn-secondary-accent text-center">
{{ $content['portal_login'] ?? 'Portal Login' }}
<div class="pt-4 border-t border-border space-y-3">
{{-- Mobile Language Switcher --}}
<div class="flex items-center space-x-1 text-sm px-3" role="group" aria-label="Language">
@foreach ($availableLocales as $locale => $label)
<button wire:click="switchLanguage('{{ $locale }}')"
class="px-3 py-1.5 rounded transition-colors duration-200
{{ $currentLocale === $locale
? 'text-secondary font-semibold bg-secondary/10'
: 'text-muted-foreground hover:text-foreground' }}"
@if($currentLocale === $locale) aria-current="true" @endif>
{{ $label }}
</button>
@if (!$loop->last)
<span class="text-border">|</span>
@endif
@endforeach
</div>
<a href="{{ route('contact') }}"
class="block rounded-md px-5 py-2.5 text-sm font-medium bg-secondary hover-bg-primary glow-medium text-white transition-all duration-200 text-center">
{{ __('ui.contact') }}
</a>
</div>
</nav>