Interior-Feinschliff: Hero-Slideshow, Lektorat, Rechtstexte, Aufräumen und Korrekturen 08.10.

Startseite und Heroes
- Hero-Slideshow (11 Motive inkl. Febrü) mit Infokarte, Laufzeit-Linie, größeren Klickflächen,
  Goldrahmen und mobiler Karte unter dem Bild; Zeile über der Überschrift, neue Vertrauenspunkte
- Hero-Stil auf Marken, Über uns und Kontakt übertragen, Breadcrumb entfernt
- Gründer-Leiste, Vision-Box auf Ocker, Showroom-Display in Box mit „Größer ansehen“/Vollbild
- Akzentfarbe #a8741f, größere Serif-Überschriften in der Interior-Welt
- Marken: Bildpause mit Zitat; Vereine aktualisiert und verlinkt

Inhalte
- Lektorat aller angezeigten Texte, /about-Korrekturen, Rechtstexte (DDG, TDDDG, Hosting Hetzner)
- Ablauf Maßanfertigung überall einheitlich, Magazin-Beitrag neu, alte Beiträge offline,
  deutsches Datum/Lesezeit, FAQ Projektausstattung, Otterpohl
- Referenzen-Seite per CMS-Schalter ausblendbar

CMS und Technik
- Tote Sektionen, Felder, Seiten und Komponenten entfernt und archiviert (dev/2026-08-28/archiv-*)
- Entwurf /entwurf, Farb-Schalter und /welcome entfernt; Test-Routen nur noch lokal
- Seitenbaum-Beschreibungen geprüft, fehlende CMS-Felder ergänzt, Markenliste aus „Kernmarken“
- Admin-Bildvorschauen repariert, verwendete Bilder in die Mediathek übernommen
- Seeder für das Deployment siehe dev/2026-08-28/entwicklungsplan.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-10-08 14:00:15 +00:00
parent 4b07bbdcae
commit fcb10be120
406 changed files with 22549 additions and 3798 deletions

View file

@ -1241,7 +1241,7 @@ php artisan migrate --force # legt u. a. cms_brands an (AP2)
# Überschreibt nichts – bereits gepflegte Marken bleiben unberührt.
php artisan db:seed --class=CmsBrandSeeder --force
# 1. Neue Texte ins CMS. Überschreibt GENAU die 19 in AP1 geänderten Sektionen,
# 1. Neue Texte ins CMS. Überschreibt GENAU die in AP1 geänderten Sektionen (seit 06.10. 15, die vier Netzwerk-Sektionen sind entfernt),
# alles andere bleibt unangetastet.
php artisan db:seed --class=InteriorRelaunchCmsSeeder --force
@ -2283,7 +2283,19 @@ php artisan db:seed --class=BrandImageSeeder --force # Titelbilde
php artisan db:seed --class=DemoBrandGalleryCleanupSeeder --force # Demobilder raus – nach BrandImageSeeder
php artisan db:seed --class=WhatsappNumberSeeder --force # WhatsApp-Business-Nummer 0521-98620100
php artisan db:seed --class=AudienceSwitchProjectTextSeeder --force # Projekttext „… Projektentwicklungen. Koordiniert …“
php artisan db:seed --class=HomeHeroTextSeeder --force # Hero „Räume aus einer Hand.“, zweiter Button weg
php artisan db:seed --class=HomeHeroTextSeeder --force # Hero „Räume aus einer Hand.“, zweiter Button weg; 07.10.: Zeile „B2in Interior“, Untertitel „Wir vereinen …“, erste Slide „B2in Interior“
php artisan db:seed --class=UnusedCmsContentCleanupSeeder --force # tote CMS-Sektionen (inkl. Entwurfs-Hero home.hero_slider) + ungenutzte Felder (u. a. Markenliste in home.core_brands) löschen (sichert vorher nach storage/app/private/cms-archiv/)
php artisan db:seed --class=AboutPageTextSeeder --force # /about: „auch dafür geradesteht“ und Textkorrekturen (06.10.)
php artisan db:seed --class=ProofreadingCorrectionsSeeder --force # Lektorat aller angezeigten Texte (06.10.)
php artisan db:seed --class=LegalTextUpdateSeeder --force # Rechtstexte: DDG/MStV/TDDDG, GA4, Leistungsbeschreibung (06.10.)
php artisan db:seed --class=ReferencesPageSwitchSeeder --force # Referenzen ausblenden (Seite + Menüpunkt), nur wenn noch nicht geschaltet
php artisan db:seed --class=HomeHeroSlidesSeeder --force # Slideshow im Hero der Startseite (9 Bilder), nur wenn noch keine Slides gepflegt
php artisan db:seed --class=PageHeroEyebrowSeeder --force # Zeile über der Hero-Überschrift auf Marken, Über uns, Kontakt (07.10.); „Über B2in:“ aus der h1 auf /about
php artisan db:seed --class=HeroTrustItemsSeeder --force # Vertrauenspunkte im Hero: Startseite neu, Marken ergänzt (07.10.)
php artisan db:seed --class=HomeVisionTitleSeeder --force # „Gebaut auf Expertise und Vertrauen“: Hervorhebung in Ocker (07.10.)
php artisan db:seed --class=ContentCorrections20261008Seeder --force # Korrekturen 08.10.: Febrü-Slides, Vereine, Ablauf Maßanfertigung, Magazin, FAQ, Otterpohl
php artisan db:seed --class=CmsSectionFieldsSeeder --force # zuletzt: fehlende Felder aus der Lang-Datei in CMS-Einträgen ergänzen (überschreibt nichts)
php artisan db:seed --class=AssetMediaImportSeeder --force # ganz zuletzt: verwendete Bilder aus public/img/assets in die Mediathek (braucht php artisan storage:link)
```
Danach:
@ -2295,7 +2307,188 @@ npm ci && npm run build:web && npm run build:portal
```
- Alle Seeder sind idempotent, ein zweiter Lauf schadet nicht.
- In der `.env` muss nichts ergänzt werden: Hinweisleiste aus und Palette „Modern“ ohne Schalter sind
die Standardwerte. Den Entwurf `/entwurf` live abschalten: `B2IN_HOME_DRAFT=false`.
- In der `.env` muss nichts ergänzt werden: Die Hinweisleiste ist standardmäßig aus. `B2IN_PALETTE_SWITCH`,
`B2IN_PALETTE` und `B2IN_HOME_DRAFT` werden nicht mehr gelesen (Nachtrag 24) und können aus der `.env` raus.
- Nicht nötig: `BrandLogoSeeder` und `BrandOriginSeeder` – Logo und Fertigungsort von Otterpohl setzt
bereits der `OtterpohlBrandSeeder`.
---
## Nachtrag 22 · Tote Inhalte entfernt, Lektorat aller angezeigten Texte (06.10.2026)
- **Aufgeräumt:** 48 Sektionen, die keine erreichbare Seite mehr zeigt (Netzwerk, Partner, Ecosystem,
Interior, alte Immobilien-Seite, Startseiten-Blöcke vor dem Relaunch, Führungsteam), aus Lang-Dateien,
`cms_section_map`, CMS-Datenbank (`UnusedCmsContentCleanupSeeder`, sichert vorher nach
`storage/app/private/cms-archiv/`) und Seedern. Dazu 15 alte Views, die Dev-Archivseiten
`/dev/{immobilien,interior,partner}-v1`, 19 Livewire-Sektionen, `NetzwerkPageCmsSeeder`,
`config/content.php` und ungenutzte Felder (`stats`, `social_media`, `load_more`, `share_article`) samt
auskommentiertem Markup. `partner_cta` liegt jetzt in der Gruppe `about`, die Gruppe `netzwerk` gibt es
nicht mehr. Lang-Sektionen und Section-Map decken sich jetzt 1:1 (Test).
- **Archiv:** `dev/2026-08-28/archiv-2026-10-06/` (README dort).
- **Lektorat:** `ProofreadingCorrectionsSeeder` (40 Stellen in CMS, Marken, Magazin, Rechtstexten),
dieselben Korrekturen in Lang-Dateien und Marken-Seedern, rund 50 Stellen in `immobilien-azizi.json`.
Offene inhaltliche Punkte: `dev/2026-08-28/lektorat-rueckfragen-06-10-2026.md`.
- **/about:** Kennzahlen im Abschluss entfernt (wurden nie angezeigt), Alternativtext der Bildpause
beschreibt jetzt das Bild.
Deployment: siehe Seeder-Liste oben (`UnusedCmsContentCleanupSeeder`, `AboutPageTextSeeder`,
`ProofreadingCorrectionsSeeder`). Tests: 1072 grün (mit `B2IN_HOME_DRAFT=true`).
**Nachgang 06.10. (Kevin):** Kachel „Datenstand“ samt `confidence_labels`/`data_confidence` und die
internen Prüfnotizen auf /immobilien entfernt; „unsere Tischlerei“ → „die Tischlerei Otterpohl“
(Herkunfts-Sektion, über `ProofreadingCorrectionsSeeder`); Rechtstexte aktualisiert
(`LegalTextUpdateSeeder` + `resources/lang/de/b2in_legal.php`, Banner-Texte des Cookie-Pakets per
`resources/lang/vendor/cookie-consent/de/`). Immobilien-Daten bleiben wie sie sind.
**Referenzen-Schalter (06.10.):** Im CMS-Modul „Referenzen“ gibt es oben den Schalter „Seite ‚Referenzen‘
auf der Website anzeigen“ (Einstellung `settings` → `pages.referenzen_enabled`, Helper
`references_page_enabled()`). Aus: Menüpunkt weg, /referenzen liefert 404, der Button unter dem
Showroom-Feed entfällt, sofern er auf /referenzen zeigt. Die Referenzen selbst bleiben gepflegt.
`ReferencesPageSwitchSeeder` schaltet beim Deployment aus (nur ohne bestehenden Eintrag).
---
## Nachtrag 23 · Slideshow im Hero der Startseite (07.10.2026)
Die Slideshow aus dem Entwurf (`/entwurf`) läuft jetzt im Hero der aktiven Startseite („Modern“). Das
Layout bleibt: Text links, rechts statt des festen Bildes die Slideshow, Infokarte unten links, kleine
Marken-Pille oben links, Punkte unter dem Bild.
- **Bilder:** `dev/2026-08-28/images/slideshow/` (9 JPEGs, 1,7–5,7 MB) → `public/img/assets/b2in/slideshow/*.webp`
(1920 px, Qualität 82, ohne Metadaten, 86–265 KB). Reihenfolge wie geliefert: Rotpunkt Fenix House,
CABINET Ankleide, Rotpunkt Küche, CABINET Schlafzimmer, Rotpunkt Küche, CABINET Flur, Rotpunkt Küche,
CABINET Dachschräge, Rotpunkt Bad.
- **Pflege im CMS:** Seiten → Startseite → Hero, Liste `slides` (je `image`, `label`, `alt`, `active`), Reihenfolge
der Liste = Reihenfolge der Slideshow, `interval` in Sekunden (3–30, Standard 7). Ohne aktive Slides
steht wieder das einzelne Bild `image`.
- **Verhalten:** Überblendung 1,4 s, Pause bei Hover/Fokus, Pfeiltasten, bei „reduzierter Bewegung“ kein
Autowechsel; erstes Bild sofort, die übrigen lazy. Festes Seitenverhältnis 4:3, damit nichts unten
abgeschnitten wird.
- **Code:** `Hero` (Livewire) mit `activeSlides()`, Blade `sections/hero.blade.php`, Lang de/en
`hero.slides`/`hero.interval`, `HomeHeroSlidesSeeder` für bestehende Installationen. Tests:
`HomeHeroSlideshowTest`. `npm run build:b2in` (neue Utility-Klassen).
**Nachbesserung 07.10. (nach „Farbwelt und Stil.png“):** Die Slideshow ist jetzt das Hauptelement des
Rahmens: zweispaltig (Text 5/12, Bild 7/12), das Bild reicht oben, unten und rechts bis auf 16 px an den
Rand, auf großen Bildschirmen mindestens 560 px hoch (mobil 4:3 unter dem Text). Die Punkte stehen mittig
unter dem ganzen Block. Die Infokarte über dem Bild bleibt und wechselt mit: Marke (`label`) und Motiv
(neues Feld `caption`), ohne Angaben die festen `card_title`/`card_text`. Die Marken-Pille oben links
entfällt. `HomeHeroSlidesSeeder` ergänzt fehlende `caption` bei bereits eingetragenen Slides.
**Nachbesserung 07.10. (2):** Rahmenschatten `rgba(0, 0, 0, 0.1) 0px 10px 20px 5px`. Die Infokarte
saß oben im Bild, weil die Glass-Flow-Regel `[class*="card"]` ihr `position: relative` gab – jetzt
`absolute!`. Der Kartentext überblendet nicht mehr gleichzeitig: der alte blendet in 0,3 s aus, der neue
danach in 0,5 s ein.
---
## Nachtrag 24 · Alte Entwürfe entfernt (07.10.2026)
Mit der Slideshow im Hero und der festen Palette „Modern“ sind die Abstimmungsstände erledigt. Entfernt,
Kopien unter `dev/2026-08-28/archiv-2026-10-07-entwurf/`:
- **Entwurf `/entwurf`** (Nachtrag 19): Route, View `home-draft`, Farbwelt „Greige“, Gold-Logos,
Hero mit Goldkante und Flanken (`hero-flank-*`), CSS `.hero-draft`, CMS-Sektion `home.hero_slider`
(Seitenbaum, Section-Map, Lang de/en; auf dem Server löscht sie der `UnusedCmsContentCleanupSeeder`).
- **Farb-Schalter und Palette „Bisher“ (Creme)** (Nachtrag 18): Komponente `palette-switch`, Skript im
`<head>`, Klasse `palette-modern` am `<html>`, `b2in_palette()`, Config `app.palette_switch`,
`app.palette`, `app.home_draft`. Die hellen Flächen hängen jetzt fest an `.world-interior`.
- **HeroSlider** bleibt, weil b2a, Stileigentum und Style2own ihn einbinden – zurück auf den Stand vor
dem Entwurf. Ohne gepflegte Sektion zeigt er nichts statt eines Fehlers (deren Inhalte lagen in
`config/content.php`, siehe Archiv vom 06.10.).
Tests laufen jetzt ohne `B2IN_HOME_DRAFT=true`.
**Nachbesserung 07.10. (3):** Kartentexte überlagerten sich – Alpine ließ die fest gesetzten Klassen
stehen; der Zustand hängt jetzt an `data-active`. Über der Überschrift steht „B2IN INTERIOR“ mit
Ockerlinie (neues Feld `eyebrow`), Untertitel „Wir vereinen CABINET, Rotpunkt Küchen, Febrü und ein
Netzwerk regionaler Experten …“, das erste Bild trägt in der Karte „B2in Interior“. Auf dem Server
setzt das der `HomeHeroTextSeeder`.
**Nachbesserung 07.10. (4):** Gründer-Leiste auf der Startseite auf `bg-accent` (Verlauf Accent/Accent-dark
50 %). Der Hero-Stil der Startseite gilt jetzt auch für Marken, Über uns und Kontakt: Klasse `hero-frame`
(Goldverlauf, Hintergrund `linear-gradient(to bottom right, hsl(40, 5.65%, 95.65%), hsl(40, 15.95%, 93.9%))`,
nur in der Interior-Welt), weißer 1-px-Rand an den Bildern (`border-white!` – die globale Regel
`* { border-color }` in shared-styles.css schlägt sonst die Utility), Zeile über der Überschrift als
Komponente `x-web.hero-eyebrow` (Felder `eyebrow`; Kontakt: `hero.eyebrow`), im CMS ergänzt durch
`PageHeroEyebrowSeeder`.
**Nachbesserung 07.10. (5):** Breadcrumb im Seitenkopf entfernt, Heroes oben/unten mit weniger
Abstand (lg 48 px). Vertrauenspunkte als Komponente `x-web.hero-trust` (Feld `stats`): Startseite
„Deutsche Manufakturen“, „Planung bis Montage“, „Zwei Showrooms in Bielefeld“; Marken „Maßarbeit vom
Handwerk“, „Werk und Ausstellung erlebbar“, „Küche, Einbau, Arbeitsplatz“ (`HeroTrustItemsSeeder`).
**Nachbesserung 07.10. (6):** Gründer-Leiste auch unter dem Hero von /marken, auf /about und /marken
wie auf der Startseite mit `bg-accent`.
**Nachtrag 25 · Aufräumen (07.10.2026):** Sicherungskopien (`sections_bak/`, `setup-wizard_bak`), doppelte
`AboutHero`-Klasse, ungenutzte Layouts und Starter-Vorlagen, Bildkopien, macOS-Metadaten, Bild
„Integriertes Modell“ und die Dubai-Karte nach `dev/2026-08-28/archiv-2026-10-07-aufraeumen/`. Dazu `/welcome` (Demo-Seite) und 118 ungenutzte
Bilder der ruhenden Domains b2a, Stileigentum und Style2own; die Domains selbst bleiben, `/theme-demo` bleibt.
**Nachtrag 26 · Test-Routen nur lokal (07.10.2026):** `routes/test.php` (E-Mail-Vorschauen mit echten Namen
und Adressen, Login-Tests) lädt nur noch bei `APP_ENV=local`. Live liefern `/test/emails/…`, `/test-login`,
`/login-simple`, `/debug-login` und `/simple-test` im Portal 404. Auf dem Server `php artisan route:cache` neu bauen,
falls Routen gecacht sind.
**Nachbesserung 07.10. (7):** /marken: Bildpause `marken.image_break` (Section `id="bild"` wie auf /about)
zwischen Markenblöcken und „Aus der Region gefertigt“, Bild = letztes Slideshow-Bild (Rotpunkt Bad), Zitat
Marcel Scheibe „Hinter jeder unserer Marken stehe ich persönlich. Ich kenne die Werke und die Menschen, die dort arbeiten.“
Kein Seeder nötig – ohne CMS-Eintrag gilt die Lang-Datei; im Seitenbaum unter Marken → Bildpause pflegbar.
**Nachbesserung 07.10. (8):** Startseite „Gebaut auf Expertise und Vertrauen“: Fläche `bg-secondary`
(Verlauf Ocker → Ocker dunkel), Inhalt in weißer Box mit Schatten, Porträt klein (4/12, 4:5) – Parameter
`boxed` an `vision-section`, die anderen Themes bleiben offen. Bildunterschrift mit `absolute!` (Glass-Flow-Regel).
**Nachbesserung 07.10. (9):** „Expertise und Vertrauen“ in Ocker (`HomeVisionTitleSeeder`; in der weißen Box
gilt wieder Ocker statt der Tanne-Regel für Ockerflächen). „Aktuelles aus unserem Showroom“ in weißer Box;
„Größer ansehen“ öffnet das Display als Overlay über die volle Fensterhöhe (9:16), dort „Vollbild“ per
Fullscreen-API, wo der Browser es kann (nicht auf dem iPhone). Das große Display lädt erst beim Öffnen.
**Nachbesserung 07.10. (10):** Hero-Slideshow: feine Laufzeit-Linie unten im Bild (füllt sich bis zum
Wechsel, hält bei Hover/Fokus an; Zähler über requestAnimationFrame statt setInterval). Punkte mit
unsichtbarer Klickfläche (py-4) um den Balken, ohne Glass-Flow-Button-Schatten.
**Nachtrag 27 · CMS-Durchsicht (07.10.2026):** Section-Map, Seitenbaum, Datenbank und Lang-Datei decken sich
(41 Sektionen; Rechtstexte und Kontaktdaten laufen über eigene Helfer). Sections ohne DB-Eintrag (Termin-Widget,
Marken-Bildpause, Handwerk-Abschluss) lassen sich im Seitenbaum mit „+“ anlegen. Korrigiert: Markenliste
`brands` in „Kernmarken“ war im CMS ohne Wirkung (Kacheln aus der Markenverwaltung) – entfernt, Fallback liest
die Lang-Datei direkt. „Zur Marke“ in „Aus der Region gefertigt“ fehlte im CMS-Eintrag – `CmsSectionFieldsSeeder`
ergänzt fehlende Felder generell. Beschreibungen im Seitenbaum aktualisiert (eyebrow, stats, Bildpause, Vision).
Marken, Magazin, Projekte und Referenzen: alle Felder im Admin bearbeitbar. Alle 135 Bildpfade vorhanden.
**Nachtrag 28 · Admin-Bildvorschauen (07.10.2026):** `media_url()` verwies für Bilder außerhalb der Mediathek
auf das nicht existierende `assets/images/` (404 in Marken, Magazin, Projekten, Referenzen) – jetzt
`img/assets/` wie `theme_image_url()`. Ungenutzte `cms_media_url()` entfernt. Alle 80 Bilder der
Admin-Ansichten lokal geprüft.
**Nachtrag 29 · Bilder in der Mediathek (07.10.2026):** `AssetMediaImportSeeder` übernimmt die 82 Bilder, die
Marken, Magazin und CMS aus `public/img/assets/` verwenden, in die Mediathek (Sammlungen Marken, Magazin,
Website, mit Vorschaubild). Name = bisheriger Pfad, daher bleiben alle Verweise gültig. Die Website liefert weiter aus
`public/img/assets/` (WebP-Fassungen), der Admin zeigt die Mediathek-Kopie. Auf dem Server muss `storage:link` bestehen (sonst liefern Mediathek-Bilder 404).
**Nachtrag 30 · Beschreibungen im Seitenbaum (07.10.2026):** alle Beschreibungen gegen die Seiten geprüft und
korrigiert – u. a. Hinweisleiste (über B2IN_ANNOUNCEMENT_BAR aus, Feld „enabled“), Abschluss „Termin anfragen“
(nur Startseite und /referenzen), Fußbereich (Claim, byline, Links – kein Social Media), Showroom-Display
(display_id, „Größer ansehen“), Hero (Ersatzkarte/-bild), Geschichte (Zeitleiste), „AGB“ → Nutzungsbedingungen.
## Nachtrag 31 · Korrekturen vom 08.10.2026 (`Korrekturen-2026-10-08.md`)
- **Slideshow:** Febrü „Active 2.0 Büro“ an Position 4, „Elements Soul Großraum“ an Position 9 (WebP 1920 px).
- **Regional verbunden:** Arminia, TC Bad Salzuflen, TC Hiddenhausen (Logo war schon da, hieß „TC Hövelhof“),
TC Blau Weiss Halle – einheitliche Kurztexte, Kachel verlinkt auf die Vereinsseite, wo eine URL gepflegt ist
(neues Feld `url`, neuer Tab). TC Bad Waldliesborn-Horn raus, alte Logos im Archiv `archiv-2026-10-08/`.
- **Ablauf Maßanfertigung überall gleich:** Foto / Grundriss + grobe Maße → Beratung → Planung & Angebot →
Angebotsannahme → Anzahlung → professionelles Aufmaß → Feinplanung / Fertigungsfreigabe → Bestellung / Fertigung.
Angepasst: CABINET (Ablauf, „Aufmaß vor Ort“), Herkunft (Ablauf am Beispiel CABINET), Marken-Netzwerk
(„Planung & Aufmaß“), Über uns (Zitat), FAQ (Beratung, Kosten).
- **Magazin:** Maßanfertigungs-Beitrag neu (Text von Marcel); Beitragsseite kann jetzt Absätze (Leerzeile im Text);
Abschluss „Weitere Einblicke rund um Einrichtung, Planung und Projekte …“; „Supply-Chain“ und „Local for Local“
offline; Datum und Lesezeit deutsch („26. August 2026 · 5 Min. Lesezeit“).
- **FAQ Projektausstattung** nach heutiger Positionierung (ein Vertragspartner, Koordination, Netzwerk) ohne
Garantie-/Eskalationssprache. **Otterpohl:** „Das erhöht die Planungssicherheit deutlich.“
- Gemeinsamer Ersetzungs-Baustein `Database\Seeders\Concerns\ReplacesCmsTexts` (auch vom Lektorats-Seeder genutzt).
**Nachbesserung 08.10.:** Hero mobil – die Infokarte steht unter dem Bild (Bild 4:3 oben, Karte als weißer
Streifen darunter), ab lg schwebt sie wie bisher unten links. Karte weiß statt `bg-card`, damit die
Glass-Flow-Regel `[class*="card"]` nicht greift; `absolute!` entfällt.