Umsetzung der beiden finalen Webseitentexte aus dev/2026-08-28/. Die angekündigte Aufgabenliste umsetzung-03-09-2026.md war leer, Grundlage sind daher die Umsetzungshinweise in den PDFs selbst. - Neue Felder in cms_brands: sections, widget_label, cta_title, cta_text. Einleitung und Leistungskacheln reichten für diese Texte nicht aus. - Die als Vertiefung gelieferten Blöcke werden aufklappbar dargestellt, mit aria-expanded und aria-controls. Bewusst x-transition statt x-collapse, weil das Collapse-Plugin hier nicht registriert ist. - Kein zweiter CTA-Button: das schwebende Terminanfrage-Widget trägt auf der Markenseite die Beschriftung der Marke und liest den Kontext aus der Route, da es im Layout und nicht je Seite eingebunden ist. - Footer bekommt unten Platz und lange Beschriftungen brechen um, damit das Widget auf dem Smartphone nichts verdeckt. - Abschnitte sind im Admin vollständig pflegbar, inklusive Sortierung. - Interne Quellenhinweise der PDFs sind nicht übernommen; ein Test prüft, dass sie nicht im Ausgabe-HTML stehen. - BrandPageTextSeeder fasst nur die Textfelder an, Bilder, Galerie und Leistungen bleiben unangetastet. Vor der Veröffentlichung: Herstellerfreigabe einholen und die Aussage zur erhaltenen Waldfläche nur mit ausdrücklicher Bestätigung verwenden. Beides steht in der Deployment-Checkliste. 854 Tests grün (3150 Assertions), Pint sauber. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
69 lines
4 KiB
PHP
69 lines
4 KiB
PHP
{{-- pb-28 auf kleinen Schirmen: darunter schwebt das Terminanfrage-Widget, das sonst die
|
||
letzten Zeilen des Footers verdecken wuerde. --}}
|
||
<footer class="section-dark section-padding pb-28 sm:pb-16">
|
||
<div class="container-padding">
|
||
{{-- Main Content --}}
|
||
<div class="text-center spacing-section">
|
||
<div class="spacing-section">
|
||
<div class="flex items-center justify-center">
|
||
<img src="{{ asset(\App\Helpers\ThemeHelper::getLogoPath('negative')) }}"
|
||
alt="{{ $domainName ?? 'B2in Interior' }} Logo" class="h-16 w-auto"
|
||
width="81" height="64"
|
||
loading="lazy" />
|
||
</div>
|
||
|
||
<div class="container-narrow spacing-content">
|
||
<h2 class="text-section-title text-dark-text leading-tight">
|
||
{!! $content['claim'] ?? 'Premium-Einrichtung. <span class="text-secondary">Persönlich gemacht.</span>' !!}
|
||
</h2>
|
||
<p class="text-dark-muted text-sm mt-4">{{ $content['byline'] ?? 'Marcel Scheibe' }} – {{ __('ui.founder_ceo') }}</p>
|
||
</div>
|
||
|
||
<hr class="border-t border-dark-muted/30 mt-12 pt-4">
|
||
</div>
|
||
|
||
{{-- Links --}}
|
||
@php
|
||
$footerLinks = $content['links'] ?? [
|
||
['label' => __('ui.faq'), 'url' => '/faq'],
|
||
['label' => __('ui.privacy_policy'), 'url' => '/privacy'],
|
||
['label' => __('ui.terms_of_service'), 'url' => '/terms'],
|
||
['label' => __('ui.cookie_policy'), 'url' => '/cookie-policy'],
|
||
['label' => __('ui.legal_notice'), 'url' => '/impressum'],
|
||
];
|
||
@endphp
|
||
<div class="grid grid-cols-2 md:grid-cols-5 gap-8 text-left max-w-4xl mx-auto">
|
||
@foreach ($footerLinks as $footerLink)
|
||
<div class="spacing-small text-center" wire:key="footer-link-{{ $loop->index }}">
|
||
<a href="{{ $footerLink['url'] }}"
|
||
class="block hover-text-secondary transition-colors">{{ $footerLink['label'] }}</a>
|
||
</div>
|
||
@endforeach
|
||
</div>
|
||
</div>
|
||
|
||
{{-- 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 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="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>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</footer>
|