Startseite ruhiger, Otterpohl mit Montage, Marken-Bilder und Farbwelt-Entwurf

- Hinweisleiste per B2IN_ANNOUNCEMENT_BAR ausgeblendet (Standard aus)
- Hero: „Räume aus einer Hand.“ als neue Überschrift, zweiter Button entfernt
- Projekttext mit zentralem deutschen Vertragspartner (Punkt statt Gedankenstrich)
- Otterpohl als vierte Kernmarke: Text v2, Abschnitt „Montage“, Titelbild getauscht
- Markenabschnitte: Absätze mit „- “ als Liste mit fetter Einleitung
- Titelbilder und Galerien für CABINET, Rotpunkt, Febrü und Otterpohl (WebP)
- Feedback 17.09. in den Markentexten, Demobilder entfernt, WhatsApp-Nummer
- Palette „Modern“ fest ohne Schalter, Entwurf /entwurf mit Hero-Slideshow
- Seeder-Liste fürs Deployment im Entwicklungsplan

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-10-01 10:34:21 +00:00
parent 3211569fee
commit 4b07bbdcae
124 changed files with 3618 additions and 496 deletions

View file

@ -1,5 +1,14 @@
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
@php
// Farbpalette der Interior-Welt (Nachtrag 18): ohne Schalter setzt der Server die Klasse aus
// config('app.palette'); mit Schalter entscheidet das Skript im <head> anhand des localStorage.
$paletteFixed = config('app.theme', 'b2in') === 'b2in'
&& b2in_world() === 'interior'
&& ! config('app.palette_switch')
&& b2in_palette() === ''
&& config('app.palette') === 'modern';
@endphp
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}"{!! $paletteFixed ? ' class="palette-modern"' : '' !!}>
<head>
<meta charset="utf-8">
@ -51,8 +60,40 @@
@php
$theme = config('app.theme', 'b2in');
// Farb-Schalter nur auf den Interior-Seiten von b2in, solange die Palette abgestimmt wird.
$showPaletteSwitch = $theme === 'b2in' && b2in_world() === 'interior' && config('app.palette_switch');
// Entwurf /entwurf (Nachtrag 19): feste Palette „greige“ am Body, kein Browser-Schalter.
$paletteDraft = b2in_palette() === 'greige';
// Global per B2IN_ANNOUNCEMENT_BAR, einzeln per @section('announcement_bar', 'off').
$hideAnnouncementBar = ! config('app.announcement_bar') || trim($__env->yieldContent('announcement_bar', 'on')) === 'off';
@endphp
@if ($showPaletteSwitch && ! $paletteDraft)
{{-- Läuft vor dem Stylesheet: setzt die gemerkte Palette, bevor die Seite gezeichnet wird.
?palette=modern|classic in der URL überschreibt und merkt sich die Wahl; ohne
gemerkte Wahl gilt config('app.palette'). --}}
<script>
(function () {
var fromUrl = new URLSearchParams(window.location.search).get('palette');
var palette = null;
try {
if (fromUrl === 'modern' || fromUrl === 'classic') {
localStorage.setItem('b2in-palette', fromUrl);
}
palette = localStorage.getItem('b2in-palette');
} catch (e) {
palette = fromUrl;
}
if (palette === null) {
palette = @js(config('app.palette'));
}
if (palette === 'modern') {
document.documentElement.classList.add('palette-modern');
}
})();
</script>
@endif
@vite([
\App\Helpers\ThemeHelper::getThemeCssPath(),
'resources/js/app.js'
@ -113,13 +154,15 @@
@stack('styles')
</head>
<body class="antialiased bg-background text-foreground world-{{ b2in_world() }}">
<body class="antialiased bg-background text-foreground world-{{ b2in_world() }}{{ $paletteDraft ? ' palette-greige' : '' }}">
{{-- GTM noscript (nur bei GTM-Nutzung) --}}
<x-cookie-consent::gtm-noscript />
<!-- Announcement Bar -->
<livewire:web.components.ui.announcement-bar />
{{-- Ankündigungsleiste – global per B2IN_ANNOUNCEMENT_BAR, je Seite mit @section('announcement_bar', 'off') abschaltbar --}}
@unless ($hideAnnouncementBar)
<livewire:web.components.ui.announcement-bar />
@endunless
{{-- TopBar (Backup: Sprachwechsel & Social Icons – folgt später) --}}
{{-- <livewire:web.components.ui.top-bar /> --}}
@ -129,6 +172,10 @@
{{-- Terminanfrage: schwebend unten rechts, auf allen Seiten --}}
<livewire:web.components.ui.appointment-widget />
@if ($showPaletteSwitch)
<x-palette-switch :draft="$paletteDraft" />
@endif
{{-- Cookie Consent Manager (vor Livewire-Scripts) --}}
<x-cookie-consent::manager />