b2in/resources/views/livewire/web/components/ui/footer.blade.php
Kevin Adametz 4ef3a4d8f1 Markenseiten Rotpunkt und Febrü aus der Zulieferung vom 31.08.
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>
2026-09-03 08:52:36 +00:00

69 lines
4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

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

{{-- 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>