From 092ee0e918a59a5260a1e03f951ec289d1dba6e8 Mon Sep 17 00:00:00 2001 From: Kevin Adametz Date: Wed, 13 May 2026 18:11:03 +0200 Subject: [PATCH] 13-05-2026 Frontend DEV + HUB --- app/Helpers/ThemeHelper.php | 5 + config/domains.php | 33 +- ...KLUNGSKONZEPT-BusinessPortal24-Frontend.md | 232 +++- .../Hub Landing presseportale-2.html | 1136 ++++++++++++++++ .../Login presseportale A3 Tailwind.html | 301 +++++ dev:web | 0 resources/css/web/theme-presseecho.css | 4 +- resources/css/web/theme-presseportale.css | 319 +++++ .../views/components/web/brand-mark.blade.php | 66 + .../web/hub/brand-context-banner.blade.php | 45 + .../components/web/hub/site-footer.blade.php | 81 ++ .../components/web/hub/site-header.blade.php | 60 + .../web/hub/top-utility-bar.blade.php | 55 + .../components/web/site-footer.blade.php | 2 +- .../views/layouts/admin-master.blade.php | 2 +- resources/views/web/brand-mark.blade.php | 0 .../views/web/layouts/web-master.blade.php | 4 +- resources/views/web/presseportale.blade.php | 1143 +++++++++++++++++ routes/ADMIN_ROUTES.md | 2 +- routes/admin.php | 9 +- routes/web.php | 4 + .../Feature/Web/PresseportaleHubHomeTest.php | 88 ++ vite | 0 vite.web.config.js | 3 + 24 files changed, 3560 insertions(+), 34 deletions(-) create mode 100644 dev/frontend/tailwind_v3/Hub Landing presseportale-2.html create mode 100644 dev/frontend/tailwind_v3/Login presseportale A3 Tailwind.html create mode 100644 dev:web create mode 100644 resources/css/web/theme-presseportale.css create mode 100644 resources/views/components/web/brand-mark.blade.php create mode 100644 resources/views/components/web/hub/brand-context-banner.blade.php create mode 100644 resources/views/components/web/hub/site-footer.blade.php create mode 100644 resources/views/components/web/hub/site-header.blade.php create mode 100644 resources/views/components/web/hub/top-utility-bar.blade.php create mode 100644 resources/views/web/brand-mark.blade.php create mode 100644 resources/views/web/presseportale.blade.php create mode 100644 tests/Feature/Web/PresseportaleHubHomeTest.php create mode 100644 vite diff --git a/app/Helpers/ThemeHelper.php b/app/Helpers/ThemeHelper.php index 2a0e583..ea16f01 100644 --- a/app/Helpers/ThemeHelper.php +++ b/app/Helpers/ThemeHelper.php @@ -16,6 +16,10 @@ class ThemeHelper 'positive' => 'img/logos/portal-logo-positive.svg', 'negative' => 'img/logos/portal-logo-negative.svg', ], + 'presseportale' => [ + 'positive' => 'img/logos/portal-logo-positive.svg', + 'negative' => 'img/logos/portal-logo-negative.svg', + ], 'presseecho' => [ 'positive' => 'img/logos/presseecho-logo-positiv.svg', 'negative' => 'img/logos/presseecho-logo-negativ.svg', @@ -115,6 +119,7 @@ class ThemeHelper $assetUrlMap = [ 'portal' => 'https://assets.presseportale.test', + 'presseportale' => 'https://assets.presseportale.test', 'presseecho' => 'https://assets.presseecho.test', 'businessportal24' => 'https://assets.businessportal24.test', ]; diff --git a/config/domains.php b/config/domains.php index 42e6b8c..838ed34 100644 --- a/config/domains.php +++ b/config/domains.php @@ -37,6 +37,31 @@ return [ 'font' => 'Montserrat', ], + 'presseportale' => [ + 'domain_name' => env('APP_PORTAL_NAME', 'presseportale.test'), + 'url' => env('APP_PORTAL_URL', 'https://presseportale.test'), + 'asset_url' => env('APP_PORTAL_ASSET_URL', 'https://assets.presseportale.test'), + 'theme' => 'presseportale', + 'view_prefix' => 'web', + 'assets_dir' => 'build/web', + 'description' => 'Hub-Landing presseportale.com (öffentlicher Publisher-Bereich)', + 'color_scheme' => [ + 'primary' => '#1A2540', + 'secondary' => '#B07A3A', + ], + 'font' => 'Inter Tight', + 'brand' => [ + 'name' => 'presse', + 'accent' => 'portale', + 'tagline_short' => 'Publisher · Hub', + 'tagline_long' => 'Der gemeinsame Publisher-Bereich für presseecho und businessportal24 – Pressemitteilungen schreiben, redaktionell prüfen lassen, auf beiden Reichweiten veröffentlichen.', + 'footer_legal' => '© :year presseportale · Alle Rechte vorbehalten', + 'about_label' => 'Über presseportale', + 'meta_title' => 'presseportale – Publisher-Hub für presseecho und businessportal24', + 'meta_description' => 'Ein Konto, zwei Reichweiten: Pressemitteilungen redaktionell geprüft auf presseecho und businessportal24 gleichzeitig veröffentlichen.', + ], + ], + 'presseecho' => [ 'domain_name' => env('APP_PRESSEECHO_NAME', 'presseecho.test'), 'url' => env('APP_PRESSEECHO_URL', 'https://presseecho.test'), @@ -51,11 +76,11 @@ return [ ], 'font' => 'Montserrat', 'brand' => [ - 'name' => 'presseecho', - 'accent' => null, + 'name' => 'presse', + 'accent' => 'echo', 'tagline_short' => 'Pressemitteilungen · DACH', 'tagline_long' => 'Fachmeldungen aus Wirtschaft und Industrie. Redaktionell geprüft. Strukturiert distribuiert.', - 'footer_legal' => '© :year presseecho.com · Alle Rechte vorbehalten', + 'footer_legal' => '© :year presseecho · Alle Rechte vorbehalten', 'about_label' => 'Über presseecho', 'meta_title' => 'Aktuelle Pressemitteilungen aus Wirtschaft & Industrie – presseecho', 'meta_description' => 'Redaktionell kuratierte Pressemitteilungen aus Wirtschaft und Industrie im DACH-Raum.', @@ -86,7 +111,7 @@ return [ 'accent' => '24', 'tagline_short' => 'Pressemitteilungen · DACH', 'tagline_long' => 'Veröffentlichungs-Portal für redaktionell geprüfte Pressemitteilungen aus Deutschland, Österreich und der Schweiz.', - 'footer_legal' => '© :year businessportal24.com · Alle Rechte vorbehalten', + 'footer_legal' => '© :year businessportal24 · Alle Rechte vorbehalten', 'about_label' => 'Über businessportal24', 'meta_title' => 'Aktuelle Pressemitteilungen aus der deutschen Wirtschaft – businessportal24', 'meta_description' => 'Pressemitteilungen aus Deutschland, Österreich und der Schweiz. Redaktionell geprüft. Strukturiert distribuiert.', diff --git a/dev/frontend/ENTWICKLUNGSKONZEPT-BusinessPortal24-Frontend.md b/dev/frontend/ENTWICKLUNGSKONZEPT-BusinessPortal24-Frontend.md index 4b257c6..ccdb8c7 100644 --- a/dev/frontend/ENTWICKLUNGSKONZEPT-BusinessPortal24-Frontend.md +++ b/dev/frontend/ENTWICKLUNGSKONZEPT-BusinessPortal24-Frontend.md @@ -1,12 +1,12 @@ -# Entwicklungskonzept – BusinessPortal24 & Presseecho Frontend +# Entwicklungskonzept – BusinessPortal24, Presseecho & presseportale-Hub Frontend -> **Stand:** 12. Mai 2026 -> **Domains:** `businessportal24.test` / `businessportal24.com` · `presseecho.test` / `presseecho.com` -> **Theme-Slugs:** `businessportal24` (warm-rotes Editorial) · `presseecho` (grünes Editorial) +> **Stand:** 13. Mai 2026 +> **Domains:** `businessportal24.test` / `.com` · `presseecho.test` / `.de` · `presseportale.test` / `.com` (Hub) +> **Theme-Slugs:** `businessportal24` (warm-rotes Editorial) · `presseecho` (grünes Editorial) · `presseportale` (Hub-Blau · Publisher-Landing) > **Assets-Dir (geteilt):** `public/build/web/` -> **Ziel:** Editoriales DACH-Pressemitteilungs-Portal mit 1:1-Mockup-Umsetzung. Presseecho nutzt die **gleiche Komponenten-Architektur** wie BP24 und unterscheidet sich nur via Theme-Tokens + Brand-Konfiguration. +> **Ziel:** Editoriales DACH-Pressemitteilungs-Ökosystem mit 1:1-Mockup-Umsetzung. Presseecho nutzt die **gleiche Komponenten-Architektur** wie BP24, der Hub `presseportale.com` ist eine **eigenständige Publisher-Landing** mit klar abgegrenztem Charakter (Hub-Blau + Bernstein, kein Editorial-Feed). -Dieses Dokument beschreibt den aktuellen Stand und die wichtigsten Architektur­entscheidungen der BusinessPortal24- und Presseecho-Frontend-Entwicklung. Es ist die zentrale Anlaufstelle für alle, die im Frontend weiterarbeiten oder neue Seiten ergänzen. +Dieses Dokument beschreibt den aktuellen Stand und die wichtigsten Architektur­entscheidungen der BusinessPortal24-, Presseecho- und presseportale-Hub-Frontend-Entwicklung. Es ist die zentrale Anlaufstelle für alle, die im Frontend weiterarbeiten oder neue Seiten ergänzen. --- @@ -14,6 +14,8 @@ Dieses Dokument beschreibt den aktuellen Stand und die wichtigsten Architektur­ Das Portal folgt einer **editorial-zeitungs-orientierten Ästhetik** mit ruhiger Beige-Surface, klarer Hierarchie über Typografie statt Cards und einer einzigen warm-roten Akzentfarbe. +Presseecho übernimmt **dieselbe Architektur**, tauscht aber das Surface auf grünlich-getintetes Editorial-Off-White und ersetzt die warm-rote Akzentfarbe durch ein dunkles **Forest-Green** (Brand `#345636`). Die Editorial-Akzentfarbe für Eyebrows auf dunklem Grund bleibt warm-amber (`accent-warm: #e8a95f`) – das hat sich in der Iteration als beste Lesbarkeit auf den dunklen Forest-Panels bewährt. + | Datei | Zweck | | --- | --- | | `dev/frontend/Pass B _ _ Deutschland _aktiv.png` | Visuelle Referenz Desktop | @@ -65,7 +67,9 @@ Request (Host: presseecho.test) Lokale Domain-Simulation: - `.env`: `DEV_SIMULATE_DOMAIN=true`, `DEV_SIMULATED_DOMAIN=businessportal24.test|presseecho.test` -- Alternativ: `?theme=businessportal24|presseecho` als Query-Parameter +- Alternativ: `?theme=businessportal24|presseecho|presseportale` als Query-Parameter + +> **Hub-Sonderfall (`presseportale.test`):** Diese Domain ist gleichzeitig **Admin-Backend** (Auth/Admin/Customer-Routen, theme = `main`, Build-Dir `build/portal/`) **und** öffentliche **Hub-Landing** (theme = `presseportale`, Build-Dir `build/web/`). In `config/domains.php` existieren beide Einträge (`portal` und `presseportale`) für dieselbe `domain_name`. Der `ThemeServiceProvider` matcht zuerst `portal` (Backend-Standard); für die öffentliche Landing schaltet **`routes/web.php` per `$applyWebDomainConfig('presseportale')` explizit auf das Hub-Theme** um. Auth- und Admin-Routen bleiben unbeeinflusst. ### 3.1 Generischer Daten-Provider @@ -78,19 +82,134 @@ view('web.businessportal24', $webHomeData(Portal::Businessportal24)); Die Trennung der Portale geschieht über `whereIn('portal', [$primaryPortal->value, Portal::Both->value])`. +### 3.1.1 Presseecho-Farbpalette (Stand 13.05.2026, finalisiert) + +Damit das Theme für Presseecho dokumentiert ist, hier der **verbindliche Token-Snapshot** aus `theme-presseecho.css`: + +```css +@theme { + /* Surfaces (grünlich-getintete Editorial-Vorlage) */ + --color-bg: #f2f4ed; + --color-bg-elev: #fafbf7; + --color-bg-rule: #dde2d3; + --color-bg-rule-strong: #1b2417; + --color-bg-card-warm: #ecefe3; + --color-bg-card-warm-border: #c7cfb6; + + /* Dunkle Editorial-Panels (Topbar, CTA, Newsletter, Footer) */ + --color-topbar: #1a3d2e; /* linear-gradient(135deg, #1a3d2e 0%, #122d22 100%) */ + --color-topbar2: #122d22; + + /* Ink (warm-grün, gedämpft) */ + --color-ink: #1b2417; + --color-ink-2: #324132; + --color-ink-3: #6a7766; + --color-ink-4: #98a294; + --color-ink-on-dark: #f0f4eb; + --color-ink-on-dark-2: #b1b9ab; + + /* Brand: dunkles Forest-Green */ + --color-brand: #345636; + --color-brand-deep: #243c25; + --color-brand-soft: #dbe7d3; + + /* Editorial-Akzente */ + --color-accent-warm: #e8a95f; /* warmer Bernstein für Eyebrows auf Dunkel */ + --color-ink-on-dark-muted: #859485; + --color-ink-on-dark-rule: #28332b; + --color-bg-card-warm-hover: #dde3cc; + --color-bg-card-warm-rule: #b7c0a2; + --color-card-warm-cat: #5f6a52; + --color-card-warm-title: #2e3826; + --color-feature-line: #a8c8a8; + --color-feature-dot: #c4dcc4; +} + +/* Gradient-Komponenten-Klassen */ +.bg-feature-grad { background-image: linear-gradient(135deg, #2c4733, #15281c); } +.bg-hero-grad { background-image: linear-gradient(135deg, #2c4733, #1a2a1f); } +``` + +**Iteration des Topbar-Gradients:** + +| Versuch | Werte | Bewertung | +| --- | --- | --- | +| Startwert | `#1b2a1f → #25342a` | zu dunkel/zu neutral | +| Erste Variante | `#1f4d3a → #163a2c` | **zu hell** | +| **Final** | **`#1a3d2e → #122d22`** | **abgenommen** ✅ | + +### 3.1.2 presseportale-Hub-Palette (Stand 13.05.2026) + +Der **Hub** ist bewusst eigenständig positioniert: er ist **kein Editorial-Feed**, sondern eine reine Publisher-Landing („Ein Konto – zwei Reichweiten"). Er bekommt daher einen ganz eigenen Charakter: + +* **Surface:** warmes Buchpapier wie bei BP24/Presseecho (`--color-bg: #f6f4ef`) – signalisiert Familien-Zugehörigkeit. +* **Primary:** Hub-Blau `#1A2540` mit Gradient nach `#243152` (Topbar, CTAs, alle „Hub"-Akzente). +* **Akzent:** gedecktes Bernstein `#B07A3A` – **bewusst gewählt**, weil weder Orange (BP24) noch Grün (Presseecho). Der Hub steht visuell „zwischen" den beiden Brands. +* **Schrift:** Inter Tight (Standardtext) + JetBrains Mono (Mono) + Source Serif 4 (**nur für Marken-Mentions** der Tochter-Portale, damit typografische Konsistenz zur jeweiligen Brand-Landing erhalten bleibt; im Hub-Fließtext nicht verwendet). + +Token-Snapshot aus `resources/css/web/theme-presseportale.css`: + +```css +@theme { + /* Surfaces – gleiche Familie wie BP24/Presseecho */ + --color-bg: #f6f4ef; + --color-bg-elev: #fbfaf6; + --color-bg-rule: #e2ddd0; + --color-bg-card: #ffffff; + --color-bg-card-warm: #efeadc; + + /* Hub-Blau – Primary */ + --color-hub: #1a2540; + --color-hub-2: #243152; + --color-hub-3: #2e3d66; + --color-hub-soft: #e5e9f1; + --color-hub-soft-2: #cfd6e4; + --color-hub-line: #7b8fbf; + --color-topbar: #1a2540; + --color-topbar2: #243152; + + /* Bernstein-Akzent – bewusst NICHT BP24-Orange, NICHT Presseecho-Grün */ + --color-accent: #b07a3a; + --color-accent-deep: #8a5e27; + --color-accent-soft: #f1e6d3; + + /* Ink, Brand-Aliase (für Komponenten, die brand-Tokens nutzen) */ + --color-brand: #1a2540; + --color-brand-deep: #0f1729; + --color-brand-soft: #e5e9f1; + + /* Schrift: Inter Tight + JetBrains Mono für Hub-Inhalte, + Source Serif 4 wird mitgeladen, aber nur für Marken-Mentions per + aktiviert. */ + --font-sans: "Inter Tight", Inter, system-ui, sans-serif; + --font-serif: "Source Serif 4", "Source Serif Pro", Charter, Georgia, serif; + --font-mono: "JetBrains Mono", "SF Mono", ui-monospace, monospace; +} +``` + +Hub-spezifische **Komponenten-Klassen** (alle in `@layer components`): + +* `.bg-hub-grad` → 135° `#1a2540 → #243152` (Topbar, CTA, Architektur-Knoten) +* `.bg-hub-grad-2` → 180° `#1a2540 → #0f1729` (Footer) +* `.bg-accent-grad` → 135° `#b07a3a → #8a5e27` +* `.hero-grid` → subtile 48×48 px Gitterlinien als Hero-Hintergrund +* `.section-eyebrow` → Hub-Blau-Eyebrow mit Linien-Schwanz +* `.ribbon-recommend` → „Empfohlen für Unternehmen"-Banner auf der Pro-Tarif-Karte +* `.faq-chev` + `details > summary` → CSS-only Accordion (kein JS nötig) + ### 3.2 Brand-Konfiguration -In `config/domains.php` liegt pro Domain ein **`brand`-Block**, der Komponenten dynamisch befüllt (Logo-Text, Tagline, Newsletter-Topics, Footer-Legal, Meta-Texte): +In `config/domains.php` liegt pro Domain ein **`brand`-Block**, der Komponenten dynamisch befüllt (Logo-Text, Tagline, Newsletter-Topics, Footer-Legal, Meta-Texte). `name` + `accent` ergeben **zusammen** den vollständigen Markennamen – der `accent`-Teil wird im Header/Footer farbig hervorgehoben: ```php 'presseecho' => [ 'theme' => 'presseecho', 'brand' => [ - 'name' => 'presseecho', - 'accent' => null, // kein Brand-Akzent (z.B. "24") + 'name' => 'presse', // schwarz + 'accent' => 'echo', // grün (text-brand → #345636) 'tagline_short' => 'Pressemitteilungen · DACH', 'tagline_long' => 'Fachmeldungen aus Wirtschaft und Industrie ...', - 'footer_legal' => '© :year presseecho.com · Alle Rechte vorbehalten', + 'footer_legal' => '© :year presseecho · Alle Rechte vorbehalten', 'about_label' => 'Über presseecho', 'meta_title' => '... – presseecho', 'meta_description' => '...', @@ -100,8 +219,18 @@ In `config/domains.php` liegt pro Domain ein **`brand`-Block**, der Komponenten 'businessportal24' => [ 'theme' => 'businessportal24', 'brand' => [ - 'name' => 'businessportal', - 'accent' => '24', // markenrechtlicher Brand-Akzent + 'name' => 'businessportal', // schwarz + 'accent' => '24', // orange (text-brand → #C84A1E) + 'footer_legal' => '© :year businessportal24 · Alle Rechte vorbehalten', + ... + ], +], +'presseportale' => [ // Hub-Variante (web) + 'theme' => 'presseportale', + 'brand' => [ + 'name' => 'presse', // hub-blau + 'accent' => 'portale', // bernstein + 'footer_legal' => '© :year presseportale · Alle Rechte vorbehalten', ... ], ], @@ -109,6 +238,35 @@ In `config/domains.php` liegt pro Domain ein **`brand`-Block**, der Komponenten Komponenten (`site-header`, `site-footer`, `newsletter-strip`) lesen ihre Defaults aus `config('domains.domains.'.config('app.theme').'.brand', [...])`. Übergaben via `:brand="..."` überschreiben sie jederzeit. +### 3.3 Brand-Mark-Konvention (verbindlich, Stand 13.05.2026) + +Die Schreibweise der drei Marken folgt einer einheitlichen Regel: **keine TLD-Endung am Markennamen, Akzentteil farblich hervorgehoben.** Domains (`.de`, `.com`) gehören ausschließlich in technische Felder (URLs, mailto-Adressen, Impressum) – niemals in den Marken-Schriftzug. + +| Marke | Wortmarke | Akzentfarbe (auto) | Akzentfarbe (on-dark) | +| ------------------ | ------------------------------------------ | ---------------------- | --------------------- | +| `presseecho` | **presse**·*echo* | `#345636` (Forest) | `#9BD5B2` | +| `businessportal24` | **businessportal**·*24* | `#C84A1E` (Orange) | `#F4B098` | +| `presseportale` | **presse**·*portale* | `#B07A3A` (Bernstein) | `#B07A3A` | + +**Single Source of Truth:** Die Komponente `` rendert die Markenschreibung zentral inkl. Span-Splitting, Schriftart und Akzent­farbe. Sie wird überall verwendet, wo eine Marke als Fließtext-Mention erscheint: + +* Hub-Komponenten (`hub/top-utility-bar`, `hub/site-header`, `hub/site-footer`, `hub/brand-context-banner`) +* Hub-View `presseportale.blade.php` (Hero-Headline, Architektur-Diagramm, Tarif-Subline, Plattform-Familie, FAQ) +* Cross-Brand-Mentions auf BP24-/Presseecho-Landings, falls ergänzt + +```blade +{{-- Standard: font-serif (Source Serif 4), Auto-Akzent --}} + + +{{-- In Fließtext / kleinen Schrift­größen: font-sans (Inter Tight) --}} + + +{{-- Auf dunklem Hintergrund (Topbar, Hub-Footer): hellere Akzentfarbe --}} + +``` + +Die BP24-/Presseecho-Header und -Footer rendern ihren eigenen Markennamen weiterhin über das `$brandName`+`$brandAccent`-Pattern aus der `brand`-Config (die Config liefert dasselbe Splitting `presse`+`echo`), erscheinen also typografisch identisch. + --- ## 4. Theme-System (Tailwind v4) @@ -257,6 +415,28 @@ Alle Komponenten haben **konsistente Konventionen**: - Bei Listenelementen: `group` + `group-hover:text-brand` für den Titel - Alle Mockup-Inhalte sind als spätere Datenquellen markiert (Inline-Kommentare oder via Issue-Tracker) +### 5.4 Hub-Komponenten (`components/web/hub/`) + +Der Hub `presseportale.com` hat einen **eigenen, deutlich anderen Charakter** als die beiden Brand-Portale (kein Editorial-Feed, sondern Publisher-Landing) und bekommt daher einen eigenen Komponenten-Namespace. Die Sektionen selbst (Hero, Features, How-it-works, Tarife, Plattform-Familie, Social-Proof, FAQ, CTA) sind als **inline-Markup** in `resources/views/web/presseportale.blade.php` umgesetzt, weil sie page-spezifisch sind. + +| Datei | Rolle | +| --- | --- | +| `hub/top-utility-bar.blade.php` | Schmale Hub-Blau-Topbar mit Datum, „Publisher-Hub für …"-Brand-Family-Links (rendert ``), Status/Doku/Kontakt. Props: `date`, `siblingPortals` (jetzt Liste mit `brand`-Key statt fixer Strings). | +| `hub/site-header.blade.php` | Wortmark `presse`·`portale` (über ``) + Untertitel „Publisher · Hub", zentrale Primary-Nav (Tarife, So funktioniert es, …), Anmelden + Konto erstellen CTAs. Routes: `login`, `register`. | +| `hub/brand-context-banner.blade.php` | **Conditional Banner** unter dem Header – greift nur bei `?from=presseecho` oder `?from=businessportal24` und zeigt: „Sie kommen von … – Ihr Konto hier funktioniert für beide Portale". Markenname über Brand-Mark (font-serif), „Zurück zu …"-Link nutzt sans-Variante. | +| `hub/site-footer.blade.php` | 4-Spaltiger Hub-Footer (Konto / Plattform / Rechtliches + Brand-Spalte mit Plattform-Familie-Links über Brand-Mark `variant="on-dark"`), Hub-Gradient `linear-gradient(180deg,#1A2540,#0F1729)`. Brand-Block aus `config/domains.php`. | + +**Hub-Sektionen als inline-Blade** (in `presseportale.blade.php`): + +1. **Hero** mit Architektur-Diagramm rechts (zentraler Hub-Knoten + Brand-Portal-Karten + Output-Boxen, alles SVG-only). +2. **Was Sie hier können** – 3-Karten-Grid (Veröffentlichen / Newsrooms / Reichweite). +3. **So funktioniert es** – 4-Step-Ol mit Differenzierungs-Highlight in Schritt 3 (Bernstein-Akzent für „Unsere Qualitätssicherung"). +4. **Tarife** – 3 Karten (Starter / Standard / Pro mit `.ribbon-recommend`) + breiter Enterprise-Streifen in Hub-Blau. +5. **Hinter presseportale.com** – 2-Spalten-Plattform-Familie mit den **Original-Brand-Gradients** der Tochter-Portale (`#1F4D3A→#163A2C` für Presseecho, `#1A1F26→#232A33` für BP24). +6. **Aktive Newsrooms** – Prose-Auflistung statt Logo-Wall + kompakte Stats-Sidebar. +7. **FAQ** – CSS-only-Accordion (`
` + `.faq-chev`) mit 8 Fragen, eine offen by default. +8. **CTA-Wiederholung** + Footer. + --- ## 6. Backend-Anbindung der Startseite @@ -316,7 +496,17 @@ Drei spiegelbildliche Test-Szenarien: 2. **`feed only shows published presseecho content`** – Portal-Trennung gespiegelt: Presseecho + Both sichtbar, BP24-Only und Drafts nicht. 3. **`shows most read releases in the sidebar`** – Hits-Sortierung. -**Stand:** 6 passed (48 Assertions, beide Test-Dateien zusammen). Gesamt-Suite 215/216 (der eine Fail `ApiDocumentationTest` ist vorbestehend wegen fehlender `docs/api/v1.yml` und nicht UI-bezogen). +### Datei: `tests/Feature/Web/PresseportaleHubHomeTest.php` + +Fünf Test-Szenarien rund um die Hub-Landing: + +1. **`renders the publisher landing shell`** – prüft alle Hauptsektionen sind sichtbar (Publisher-Hub, Was Sie hier können, So funktioniert es, Vier Schritte, Tarife, Starter, Standard, Pro, Enterprise, Hinter presseportale.com, Plattform im Überblick, Häufige Fragen, Loslegen, Alle Systeme betriebsbereit). +2. **`loads the hub theme assets, not portal admin`** – stellt sicher, dass `theme-presseportale` aus dem Manifest geladen wird (nicht `theme-businessportal24` oder `theme-presseecho`). +3. **`hides the brand-context banner without a from parameter`** – Default-Aufruf zeigt keinen „Sie kommen von …"-Banner. +4. **`shows the brand-context banner when arriving from presseecho`** – `?from=presseecho` triggert den Banner inkl. Link „Zurück zu presseecho.de". +5. **`shows the brand-context banner when arriving from businessportal24`** – `?from=businessportal24` triggert den Banner für BP24. + +**Stand:** 11 Web-Tests grün (BP24 3 + Presseecho 3 + Hub 5 = 79 Assertions). Gesamt-Suite: 220/221 (der eine Fail `ApiDocumentationTest` ist vorbestehend wegen fehlender `docs/api/v1.yml` und nicht UI-bezogen). --- @@ -366,12 +556,17 @@ vendor/bin/pint --dirty --format agent | 8 | 12.05.2026 | Empty-State des Feeds liefert Mock-Top + Mock-Liste + Anzeige (analog Hero/Sidebar) | ✅ | | 9 | 12.05.2026 | Live-Ticker-Animationen: Ad-Hoc-Meldungen als Endlos-Laufband (`ticker-marquee-track`, respektiert `prefers-reduced-motion`), rechte Kurszeile blättert via Alpine alle 5,2 s vertikal durch | ✅ | | 10 | 12.05.2026 | Editorial-Akzente aus Hex-Hardcodings auf Theme-Tokens migriert (`accent-warm`, `ink-on-dark-muted`, `ink-on-dark-rule`, `card-warm-*`, `feature-*`) | ✅ | -| 11 | 12.05.2026 | Presseecho-Theme angelegt (`theme-presseecho.css` – grüner Brand, gleiche Token-Namen) und Presseecho-Startseite auf BP24-Komponenten umgestellt (`presseecho.blade.php`) | ✅ | +| 11 | 12.05.2026 | Presseecho-Theme angelegt (`theme-presseecho.css` – gleiche Token-Namen) und Presseecho-Startseite auf BP24-Komponenten umgestellt (`presseecho.blade.php`) | ✅ | +| 11a | 13.05.2026 | Editorial-Fonts-Loader im `web-master.blade.php` für presseecho freigeschaltet (Source Serif 4 + Inter Tight + JetBrains Mono via bunny.net, Montserrat nur noch für Portal/Legacy). | ✅ | +| 11b | 13.05.2026 | **Presseecho-Farbpalette finalisiert** (vom Design abgesegnet): grünlich-getintete Surfaces (`--color-bg: #f2f4ed`, Card-Warm `#ecefe3`/`#c7cfb6`), Brand bleibt **dunkles Forest** `#345636` mit Deep `#243c25` und Soft `#dbe7d3`. Topbar-Gradient nach Iteration auf `linear-gradient(135deg, #1a3d2e 0%, #122d22 100%)` festgelegt – satter Forest-Ton, ohne zu hell zu wirken. Feature- und Hero-Gradient grün getintet (`#2c4733 → #15281c` / `#2c4733 → #1a2a1f`). Editorial-Akzent bleibt warm-amber (`accent-warm: #e8a95f`) für Eyebrows auf dunklem Grund. | ✅ | | 12 | 12.05.2026 | `routes/web.php`: Daten-Provider generalisiert zu `$webHomeData(Portal)` – beide Domains nutzen denselben Code-Pfad | ✅ | | 13 | 12.05.2026 | Brand-Konfiguration in `config/domains.php` pro Domain (`brand.name`, `brand.accent`, `brand.tagline_*`, `brand.newsletter_topics`, `brand.footer_legal`, `brand.about_label`) – `site-header`, `site-footer`, `newsletter-strip` lesen daraus | ✅ | | 14 | 12.05.2026 | `press-release-feed`-Volt-Component portal-agnostisch (Prop `:portal`); Aufruf vom View-Layer aus | ✅ | | 15 | 12.05.2026 | `PresseechoHomeTest` analog zu `Businessportal24HomeTest` (3 Szenarien, RefreshDatabase) | ✅ | -| 16 | 12.05.2026 | **Aktuell offen:** Detailseite, Branchenseite, Veröffentlichen-Landing für beide Domains | 🟡 | +| 16 | 13.05.2026 | **presseportale-Hub-Landing live**: neues Web-Theme `presseportale` (Hub-Blau + Bernstein, `theme-presseportale.css`), eigener Komponenten-Namespace `components/web/hub/` (Top-Bar, Site-Header, Brand-Context-Banner, Site-Footer), Hub-View `web/presseportale.blade.php` mit Hero/Architektur-Diagramm, Features, How-it-works, Tarife (Starter/Standard/Pro+Ribbon, Enterprise-Streifen), Plattform-Familie, Aktive-Newsrooms, FAQ-Accordion, CTA. `routes/web.php` schaltet für `presseportale.test` auf das Hub-Theme um. Root-Route in `routes/admin.php` entfernt (Layout referenziert jetzt `route('dashboard')`). | ✅ | +| 17 | 13.05.2026 | `PresseportaleHubHomeTest` (5 Szenarien inkl. Brand-Context-Banner-Conditional). Vite-Config + ThemeHelper + `web-master`-Fonts (Inter Tight + JetBrains Mono ohne Serif) für `presseportale` ergänzt. | ✅ | +| 18 | 13.05.2026 | **Brand-Mark-Konvention etabliert** (Feintuning Marken-Schreibweise): keine TLD am Marken­schriftzug, Akzent farblich vom Basis-Wort abgesetzt. Single Source of Truth `` (Marken-Tabelle inkl. Standard- und On-Dark-Akzentfarben, Serif/Sans-Switch). `config/domains.php` umgestellt (`presseecho`: `name=presse`/`accent=echo`; `presseportale`: `name=presse`/`accent=portale`; Footer-Legal & Meta-Texte ohne TLD). Hub-Komponenten und Hub-View durchgehend auf Brand-Mark migriert (Top-Utility-Bar, Site-Header, Brand-Context-Banner, Site-Footer, Hero-Headline, Architektur-Diagramm, Tarif-Subline, Plattform-Familie, FAQ). Hub-Theme bekommt Source Serif 4 als `--font-serif` (für Marken-Mentions) – Bunny-Font-Loader erweitert. **+1 neuer Test `uses the brand-mark splitting without TLDs`**; alle 12 Web-Tests grün. | ✅ | +| 19 | 12.05.2026 | **Aktuell offen:** Detailseite, Branchenseite, Veröffentlichen-Landing für BP24 + Presseecho. Hub-Folgeseiten (Konto-Erstellen-Flow als Landing, Tarif-Detail, Doku-Hub) ebenfalls offen. | 🟡 | --- @@ -385,9 +580,10 @@ vendor/bin/pint --dirty --format agent | 4 | **Veröffentlichen-Landing** umsetzen (Variante A) | `tailwind_v3/Veröffentlichen Tailwind.html` + `Ver_ffentlichen _ Variante A _aktiv_.png` | 🔴 offen | | 5 | **Echte Datenquellen** für aktuell statische Komponenten anbinden: Live-Ticker (Ad-Hoc-Meldungen), Events-Week, Newsletter-Topics, Industry-Spotlight-Studie | – | 🔴 offen | | 6 | **Legacy-URL-Mapping** für Kategorien + Pressemitteilungen festlegen + Tests | siehe Umsetzungskonzept §13 | 🔴 offen | -| 7 | **Presseecho-Ableitung** als zweites Web-Theme aus stabiler BP24-Basis | – | 🔴 offen | +| 7 | **Presseecho-Ableitung** als zweites Web-Theme aus stabiler BP24-Basis | – | ✅ **erledigt (13.05.2026)** – Startseite live über `theme-presseecho.css` + Brand-Config, gleiche Komponenten wie BP24 | +| 8 | **Detailseite/Branchenseite ebenfalls für Presseecho** durchziehen, sobald BP24-Templates stehen (sollte ein reiner Theme-Switch werden) | siehe oben | 🔴 offen | -**Reihenfolge-Begründung:** Erst wenn Detailseite + Branchenseite + Veröffentlichen vorhanden sind, sind die wiederverwendbaren Bausteine klar genug abstrahiert. Eine zu frühe Abstraktion auf Basis nur der Startseite würde Re-Work erzeugen. +**Reihenfolge-Begründung:** Erst wenn Detailseite + Branchenseite + Veröffentlichen vorhanden sind, sind die wiederverwendbaren Bausteine klar genug abstrahiert. Eine zu frühe Abstraktion auf Basis nur der Startseite würde Re-Work erzeugen. Presseecho profitiert dann automatisch davon (nur Token-Switch). --- diff --git a/dev/frontend/tailwind_v3/Hub Landing presseportale-2.html b/dev/frontend/tailwind_v3/Hub Landing presseportale-2.html new file mode 100644 index 0000000..06ebb0a --- /dev/null +++ b/dev/frontend/tailwind_v3/Hub Landing presseportale-2.html @@ -0,0 +1,1136 @@ + + + + + +presseportale.com — Publisher-Hub + + + + + + + + + + + + + + + +
+ + + +
+
+ + + Mittwoch, 13. Mai 2026 + + + + + + + + + Publisher-Hub für + presseecho.de + · + businessportal24.com + + + + + + Status + Dokumentation + Kontakt + + +
+
+ + +
+ +
+ + + +
+
+ + + + + +
+ Sie kommen von presseecho.de. + Ihr Konto hier funktioniert für beide Portale — presseecho und businessportal24. +
+ + + + + + Zurück zu presseecho.de + +
+
+ + +
+
+ + +
+
Publisher-Hub
+ +

+ Ein Konto.
+ Zwei Reichweiten.
+ presseecho und businessportal24. +

+ +

+ presseportale.com ist der gemeinsame Publisher-Bereich für unsere beiden Pressefachportale. Pressemitteilungen schreiben, redaktionell prüfen lassen, auf beiden Reichweiten veröffentlichen — und Reichweite, Empfänger und Abrechnung an einem Ort verwalten. +

+ + + + +
+ + + + + + Redaktionelle Prüfung + + + + + + + Transparente Tarife + + + + + + + Monatlich kündbar + +
+
+ + +
+
+
Architektur
+ + +
+ + + + + + + + + +
+
+
Hub
+
presseportale
+
.com
+
+
+ + +
+
+
Brand-Portal
+
presseecho.de
+
Branchen-Presse · Archiv
+
+
+ + +
+
+
Brand-Portal
+
businessportal24
+
Wirtschaft · Live
+
+
+ + +
+
+
Veröffentlichung
+
2× Portale, 1× Klick
+
+
+ + +
+
+
Reichweite
+
zusammengeführt
+
+
+
+ +
+ + +
+
+
8.412
+
Mitteilungen
veröffentlicht 2025
+
+
+
1.247
+
aktive
Newsrooms
+
+
+
~ 4 h
+
Ø Prüfzeit
Werktags
+
+
+
+ + +
+ Live-Architektur +
+
+
+
+ +
+ + +
+
+
+
Was Sie hier können
+

+ Pressearbeit von der Mitteilung bis zur Auswertung — an einem zentralen Ort. +

+
+ + So funktioniert es im Detail → + +
+ +
+ + +
+
+ + + + + +
+
01 · Veröffentlichen
+

+ Pressemitteilungen auf beiden Portalen +

+

+ Eine Mitteilung schreiben, redaktionell prüfen lassen, auf presseecho und businessportal24 gleichzeitig veröffentlichen. Vorschau und Versionsverlauf inklusive. +

+
    +
  • Editor mit Quellen-Linking
  • +
  • Embargo- und Erscheinungsdatum
  • +
  • Anhänge: PDF, Bild, Pressekontakt
  • +
+
+ + +
+
+ + + + + + + +
+
02 · Newsrooms verwalten
+

+ Eigene Unternehmens-Pressestelle +

+

+ Jeder Newsroom mit Logo, Kontaktperson, Themen-Schwerpunkten und vollständiger Mitteilungs-Historie. Mehrere Newsrooms pro Konto möglich, mit getrennten Berechtigungen. +

+
    +
  • Mehrere Redakteure pro Newsroom
  • +
  • Verifizierungs-Badge möglich
  • +
  • RSS-Feed je Newsroom
  • +
+
+ + +
+
+ + + + +
+
03 · Reichweite messen
+

+ Statistiken, Empfänger, Aufrufe +

+

+ Aufrufe je Mitteilung über beide Portale aggregiert. Empfänger-Listen, Themen-Resonanz, Verweildauer, Quellen-Backlinks. CSV-Export für Reporting. +

+
    +
  • Portal-übergreifende Zahlen
  • +
  • Monats- und Jahres-Reports
  • +
  • CSV-Export & API
  • +
+
+
+
+ + +
+
+
So funktioniert es
+

+ Vier Schritte von der Registrierung bis zur veröffentlichten Mitteilung. +

+
+ +
+ +
    + +
  1. +
    + 01 + +
    +
    Registrieren
    +

    + Konto in unter zwei Minuten anlegen. Mit E-Mail oder über Magic-Link. Direkt freigeschaltet für beide Portale. +

    +
  2. + +
  3. +
    + 02 + +
    +
    Erstellen
    +

    + Mitteilung im Editor verfassen — mit Quellenangaben, Anhängen, Pressekontakt. Newsroom und Themen-Tags zuweisen. +

    +
  4. + +
  5. +
    + 03 + + Unsere Qualitätssicherung + + +
    +
    Prüfen lassen
    +

    + Redaktionelle Prüfung auf Quellenqualität, Relevanz und formale Korrektheit. Ø vier Stunden werktags. Feedback im Editor sichtbar. +

    +
  6. + +
  7. +
    + 04 + +
    +
    Veröffentlichen
    +

    + Auf presseecho und businessportal24 gleichzeitig live. Themen-Verknüpfung im Archiv automatisch. Statistik beginnt zu laufen. +

    +
  8. +
+ +
+ + +
+ Redaktionelle Prüfung ist Teil unseres Qualitätsversprechens — keine PR‑Wand, kein automatisierter Durchlauf. Das gilt für alle Tarife, auch den Starter. +
+
+ + +
+
+ +
+
+
Tarife
+

+ Ein Konto, beide Portale. Keine versteckten Aufschläge für Reichweite. +

+

+ Alle Tarife enthalten redaktionelle Prüfung, einen verifizierten Newsroom und die Veröffentlichung auf presseecho.de und businessportal24.com ohne Mehrkosten. +

+
+ + +
+ + +
+
+ +
+ + +
+
Starter
+
Für Einzelne und Erst-Anwender
+
+ 0 € + / Monat +
+
Dauerhaft kostenlos
+ + + Tarif wählen + + +
+ +
    +
  • + + + + 1 Mitteilung pro Monat +
  • +
  • + + + + Beide Portale +
  • +
  • + + + + 1 Newsroom +
  • +
  • + + + + Redaktionelle Prüfung +
  • +
  • + + + + Basis-Statistiken +
  • +
  • + + + + Verifizierungs-Badge +
  • +
+
+ + +
+
Standard
+
Regelmäßige Pressearbeit
+
+ 49 € + / Monat +
+
jährl. abger. · 588 € / Jahr
+ + + Tarif wählen + + +
+ +
    +
  • + + 5 Mitteilungen pro Monat +
  • +
  • + + Beide Portale +
  • +
  • + + 3 Newsrooms · 2 Redakteure +
  • +
  • + + Redaktionelle Prüfung +
  • +
  • + + Erweiterte Statistiken +
  • +
  • + + Verifizierungs-Badge +
  • +
+
+ + +
+
Empfohlen für Unternehmen
+ +
Pro
+
Für aktive Presseteams
+
+ 149 € + / Monat +
+
jährl. abger. · 1.788 € / Jahr
+ + + Tarif wählen + + + +
+ +
    +
  • + + 20 Mitteilungen pro Monat +
  • +
  • + + Beide Portale +
  • +
  • + + 10 Newsrooms · 10 Redakteure +
  • +
  • + + Prioritäts-Prüfung (Ø 2 h) +
  • +
  • + + Verifizierungs-Badge +
  • +
  • + + API & RSS-Feeds +
  • +
+
+ +
+ + +
+ + +
+
Enterprise
+
Verlagsgruppen & Konzerne
+
+ Auf Anfrage +
+
ab 25 Mitteilungen / Monat
+
+ + +
+
Im Tarif enthalten
+
    +
  • + + Unbegrenzte Mitteilungen +
  • +
  • + + Multi-Mandanten · SSO +
  • +
  • + + Dediziertes Account-Mgmt +
  • +
  • + + SLA · 99,9 % Verfügbarkeit +
  • +
  • + + Custom-API-Integration +
  • +
  • + + DPA · ISO 27001 +
  • +
+
+ + +
+ + Vertrieb kontaktieren + + +
+ Rückruf werktags innerhalb von 4 h
+ [email protected] +
+
+
+ + +
+
+ + + + +
+
+ Alle Tarife monatlich kündbar. + 14 Tage testen, ohne Hinterlegung von Zahlungsdaten. Rechnung per SEPA-Lastschrift, Kreditkarte oder Überweisung. MwSt. ausweisbar. +
+ + Vollständiger Tarif-Vergleich → + +
+
+
+ + +
+
+
Hinter presseportale.com
+

+ Zwei eigenständige Pressefachportale. Eine kuratierte Verlags-Familie. +

+

+ presseportale.com ist nicht „irgendein Tool" — es ist die zentrale Plattform für unsere beiden redaktionell geführten Pressefachportale. Jedes Portal hat einen eigenen Charakter, eigene Leserschaft und eigene Themen-Schwerpunkte. +

+
+ +
+ + +
+ +
+
Brand-Portal · 01
+
+ presseecho.de +
+
+ Branchen-Presse · Archiv seit 2012 +
+
+
+

+ Themen-Sammlung und Langzeit-Archiv für Pressemitteilungen aus DACH. Editorial-Charakter, Themen-Tiefe, redaktionell erschlossen — der Ort, an dem eine Mitteilung über Jahre auffindbar bleibt. +

+
+
+
+
100.247
+
Mitteilungen im Archiv
+
+
+
11 Branchen
+
Bildung – Tourismus
+
+
+ + Zur Plattform: presseecho.de + + +
+
+ + +
+
+
Brand-Portal · 02
+
+ businessportal24 +
+
+ Wirtschaft & Märkte · Live-Charakter +
+
+
+

+ Pressemitteilungen aus Wirtschaft, Märkten, Finanzen. Tageszeitlicher Rhythmus, Live-Ticker, Branchen-fokussiert. Der Ort, an dem eine Mitteilung am Erscheinungstag die größte Sichtbarkeit bekommt. +

+
+
+
+
~ 140
+
Mitteilungen pro Tag
+
+
+
8 Märkte
+
DAX–MDAX–TecDAX
+
+
+ + Zur Plattform: businessportal24.com + + +
+
+
+ + +
+ + + + +
+ Pressemitteilungen, die Sie über presseportale.com einreichen, erscheinen auf beiden Portalen — ohne Aufpreis, ohne doppelte Eingabe. Sie haben eine zentrale Mitteilungs-Verwaltung und eine zentrale Reichweiten-Statistik. +
+
+
+ +
+ + +
+
+
Aktive Newsrooms
+
Stand 13. Mai 2026 · 1.247 verifizierte Newsrooms
+
+
+ +
+ + +
+

+ Über presseportale.com veröffentlichen unter anderem + Siemens AG, + BASF SE, + Deutsche Bank, + Allianz, + EnBW, + RWE, + SAP, + Lufthansa, + Bayer, + Stadtwerke München, + Fraunhofer-Gesellschaft, + Hochschulrektorenkonferenz sowie über 1.200 weitere Unternehmen, Verbände und öffentliche Einrichtungen aus Deutschland, Österreich und der Schweiz. Jeder Newsroom ist redaktionell verifiziert; die Veröffentlichungen unterliegen unserem Qualitätsstandard. +

+

+ Verteilung nach Sektoren: Industrie und Energie führen mit zusammen 38 %, gefolgt von Finanzen (17 %), Mobilität (12 %), Bildung (10 %), Gesundheit (9 %), Technologie (8 %) und übrigen Branchen (6 %). +

+
+ + + +
+
+ + +
+
+ + +
+
Häufige Fragen
+

+ Antworten zu Konto, Prüfung, Tarifen und Rechtlichem. +

+

+ Sie finden hier nicht, was Sie suchen? + Schreiben Sie unserem Support — Werktags Antwort innerhalb von 4 Stunden. +

+
+ + +
+
+ +
+ + Was kostet ein Konto? + + +
+ Ein Konto selbst kostet nichts. Sie zahlen für die Pressemitteilungen, die Sie veröffentlichen — entweder pro Stück (Starter-Tarif, 0 € / Monat) oder über einen Monats- bzw. Jahres-Tarif (Standard, Pro, Enterprise). Die redaktionelle Prüfung und die Veröffentlichung auf beiden Portalen sind in allen Tarifen enthalten. +
+
+ +
+ + Wie läuft die redaktionelle Prüfung? + + +
+ Sobald Sie eine Mitteilung einreichen, prüfen unsere Redakteure formale Korrektheit, Quellenqualität, Themenrelevanz und Plausibilität. Werktags im Schnitt nach ca. vier Stunden, Pro-Tarif nach ca. zwei. Bei Rückfragen erhalten Sie Feedback direkt im Editor — kein PR-Filter, sondern verlegerische Qualitätssicherung. +
+
+ +
+ + Auf welchen Portalen erscheint meine Mitteilung? + + +
+ Auf presseecho.de und businessportal24.com — beide. Welche Sektion und welche Branchen-Rubrik die Mitteilung erhält, wird automatisch aus Ihren Themen-Tags abgeleitet und in der Vorschau angezeigt. Sie können bei Bedarf Hinweise hinzufügen. +
+
+ +
+ + Wie lange dauert die Veröffentlichung? + + +
+ Werktags zwischen 8:00 und 18:00 Uhr im Schnitt rund vier Stunden vom Einreichen bis zur Live-Schaltung. Sie können ein Embargo-Datum setzen, dann erscheint die Mitteilung sekundengenau zum gewünschten Zeitpunkt — geprüft und freigegeben ist sie davor. +
+
+ +
+ + Kann ich monatlich kündigen? + + +
+ Ja. Alle Tarife sind monatlich kündbar. Bei Jahres-Abrechnung wird die Restlaufzeit anteilig erstattet. Ihr Konto und Ihre Newsroom-Archive bleiben dauerhaft bestehen — auch nach Kündigung sind veröffentlichte Mitteilungen weiter im Archiv auffindbar. +
+
+ +
+ + Wie steht es um DSGVO und Datenverarbeitung? + + +
+ Alle Daten werden ausschließlich in der EU verarbeitet (Frankfurt & München, ISO 27001 zertifizierte Rechenzentren). Ein DPA / AV-Vertrag ist im Konto-Bereich abrufbar. Detaillierte Informationen zu Speicherdauer, Auftragsverarbeitung und Betroffenenrechten finden Sie in der Datenschutzerklärung. +
+
+ +
+ + Was passiert, wenn ich vom Brand-Portal komme? + + +
+ Wenn Sie über den „Publisher-Bereich"-Button auf presseecho oder businessportal24 hier ankommen, wird Ihnen oben angezeigt, woher Sie kommen — und dass Ihr Konto auf beiden Portalen gilt. Sie können jederzeit zurück auf das ursprüngliche Portal, ohne Anmeldung zu verlieren. +
+
+ +
+ + Gibt es eine API für meine PR-Tools? + + +
+ Ab dem Pro-Tarif. REST-API mit OAuth2, vollständig dokumentiert, mit Sandbox-Modus. Mitteilungen einreichen, Status abfragen, Statistiken auslesen, Newsrooms verwalten. Webhooks für Veröffentlichungs- und Status-Ereignisse. Enterprise-Kunden erhalten zusätzlich Custom-Integrationen. +
+
+
+
+
+ + +
+
+ + + + + + + + + + +
+
Loslegen
+

+ In zwei Minuten registriert. Eine Mitteilung im Starter-Tarif inklusive. +

+

+ Keine Kreditkarte erforderlich. 14 Tage zum Testen. Monatlich kündbar. +

+
+ +
+
+ + + + +
+ + + diff --git a/dev/frontend/tailwind_v3/Login presseportale A3 Tailwind.html b/dev/frontend/tailwind_v3/Login presseportale A3 Tailwind.html new file mode 100644 index 0000000..ceddb0d --- /dev/null +++ b/dev/frontend/tailwind_v3/Login presseportale A3 Tailwind.html @@ -0,0 +1,301 @@ + + + + + +presseportale.com — Anmelden + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ + +
+ + + presseportale.com + + + + Publisher · Hub + + + + Noch kein Konto? Konto erstellen + +
+ + +
+
+ + +
+ Ihr Konto funktioniert auch für presseecho.de + und businessportal24.com. +
+ + +
+ +
Anmeldung im Publisher-Hub
+

+ Willkommen zurück +

+ +
+ + +
+ + +
+ + +
+
+ + Passwort vergessen? +
+
+ + +
+
+ + + + + + + + +
+ + oder + +
+ + + + + +
+ + +
+
+
+
+
+ + + +
+ + + + + diff --git a/dev:web b/dev:web new file mode 100644 index 0000000..e69de29 diff --git a/resources/css/web/theme-presseecho.css b/resources/css/web/theme-presseecho.css index 933a242..a49e571 100644 --- a/resources/css/web/theme-presseecho.css +++ b/resources/css/web/theme-presseecho.css @@ -21,8 +21,8 @@ --color-bg-dark: #15201a; --color-bg-card-warm: #ecefe3; --color-bg-card-warm-border: #c7cfb6; - --color-topbar: #1b2a1f; - --color-topbar2: #25342a; + --color-topbar: #1a3d2e; /* moderat heller als #1b2a1f, aber dunkler als #1f4d3a */ + --color-topbar2: #122d22; /* analog moderat heller als #25342a */ /* Ink */ --color-ink: #1b2417; diff --git a/resources/css/web/theme-presseportale.css b/resources/css/web/theme-presseportale.css new file mode 100644 index 0000000..7854e2f --- /dev/null +++ b/resources/css/web/theme-presseportale.css @@ -0,0 +1,319 @@ +/** + * Theme für den Publisher-Hub presseportale.com (presseportale.test) + * + * Eigener Charakter zwischen den beiden Brand-Portalen: + * - Surface: warmes Buchpapier (gleiche Familie wie BP24/Presseecho) + * - Primary: Hub-Blau (#1A2540) – seriös, plattform-neutral + * - Accent: gedecktes Bernstein (#B07A3A) – bewusst NICHT Orange (BP24) und NICHT Grün (Presseecho) + * - Schrift: Inter Tight + JetBrains Mono, OHNE Source Serif (Hub-Bezug, weniger editorial-redaktionell als die Brand-Portale) + * + * Token-Namen folgen wo möglich der BP24/Presseecho-Konvention (bg, bg-elev, bg-rule, ink-*), + * sodass viele Utility-Klassen identisch greifen. Hub-spezifische Tokens + * (hub, hub-2, hub-soft, accent-soft, hub-line) sind zusätzlich definiert. + */ +@import "./shared-styles.css"; + +@theme { + /* Surfaces — warmes Buchpapier, gleiche Familie wie die Brand-Portale */ + --color-bg: #f6f4ef; + --color-bg-elev: #fbfaf6; + --color-bg-rule: #e2ddd0; + --color-bg-rule-strong: #1a1f1c; + --color-bg-dark: #15201a; + --color-bg-card: #ffffff; + --color-bg-card-warm: #efeadc; + --color-bg-card-warm-border: #d6cfbb; + + /* Hub-Blau — Primary, plattform-neutral */ + --color-hub: #1a2540; + --color-hub-2: #243152; + --color-hub-3: #2e3d66; + --color-hub-soft: #e5e9f1; + --color-hub-soft-2: #cfd6e4; + --color-hub-line: #7b8fbf; + + /* Topbar (Alias für Hub-Gradient, damit shared base-Klassen passen) */ + --color-topbar: #1a2540; + --color-topbar2: #243152; + --color-topbar-deep: #0f1729; + + /* Akzent — gedecktes Bernstein (zwischen Orange und Beige) */ + --color-accent: #b07a3a; + --color-accent-deep: #8a5e27; + --color-accent-soft: #f1e6d3; + --color-accent-warm: #b07a3a; + + /* Ink — Anthrazit-Reihe */ + --color-ink: #1a1f1c; + --color-ink-2: #3a413d; + --color-ink-3: #5a6360; + --color-ink-4: #8a918d; + --color-ink-on-dark: #f6f4ef; + --color-ink-on-dark-2: #b2b9c7; + --color-ink-on-dark-3: #7b8fbf; + --color-ink-on-dark-muted: #7b8fbf; + --color-ink-on-dark-rule: #2a3550; + + /* Brand-Aliase, damit Komponenten, die brand-Tokens verwenden, funktionieren */ + --color-brand: #1a2540; + --color-brand-deep: #0f1729; + --color-brand-soft: #e5e9f1; + --color-live: #c84a1e; + --color-gain: #2e8540; + --color-loss: #c8341e; + --color-ok: #2e8540; + + /* Editorial-Akzente (für card-warm-Sektionen) */ + --color-bg-card-warm-hover: #e6deca; + --color-bg-card-warm-rule: #c8bda3; + --color-card-warm-cat: #5a6360; + --color-card-warm-title: #2a302d; + --color-feature-line: #c0c8db; + --color-feature-dot: #d8dde9; + + /* Fonts — Hub: Inter Tight + JetBrains Mono. + Source Serif 4 wird zusätzlich geladen, damit Markennennungen der + Tochter-Portale (presseecho, businessportal24) typografisch konsistent + erscheinen – im Hub-Standardtext kommt sie aber nicht zum Einsatz. */ + --font-sans: "Inter Tight", Inter, system-ui, -apple-system, + BlinkMacSystemFont, "Segoe UI", sans-serif; + --font-serif: "Source Serif 4", "Source Serif Pro", Charter, + "Iowan Old Style", Georgia, serif; + --font-mono: "JetBrains Mono", "SF Mono", ui-monospace, SFMono-Regular, + Menlo, Consolas, monospace; + + /* Layout */ + --container-layout: 1280px; +} + +/* HSL-Variablen für Legacy-Komponenten (shared-styles) */ +:root { + --font-primary: var(--font-sans); + --font-secondary: var(--font-sans); + + --background: 40 30% 95%; /* #f6f4ef */ + --foreground: 144 8% 11%; + --card: 0 0% 100%; + --card-foreground: 144 8% 11%; + --popover: 0 0% 100%; + --popover-foreground: 144 8% 11%; + + /* Primary: #1A2540 -> hsl(222, 43%, 18%) */ + --primary: 222 43% 18%; + --primary-foreground: 0 0% 100%; + --primary-50: 222 43% 96%; + --primary-100: 222 43% 92%; + --primary-200: 222 43% 85%; + --primary-300: 222 43% 75%; + --primary-400: 222 43% 60%; + --primary-500: 222 43% 45%; + --primary-600: 222 43% 36%; + --primary-700: 222 43% 28%; + --primary-800: 222 43% 22%; + --primary-900: 222 43% 18%; + --primary-950: 222 43% 12%; + + --secondary: 224 30% 30%; + --secondary-foreground: 0 0% 100%; + + --muted: 40 18% 90%; + --muted-foreground: 144 6% 38%; + --accent: 31 51% 46%; + --accent-foreground: 0 0% 100%; + --destructive: 0 84% 60%; + --destructive-foreground: 0 0% 100%; + --border: 38 23% 85%; + --input: 38 23% 85%; + --ring: 222 43% 18%; + --radius: 4px; + + --shadow-card: 0 1px 2px 0 rgb(26 37 64 / 0.06); + --shadow-card-hover: 0 4px 12px -2px rgb(26 37 64 / 0.12); +} + +@layer base { + html, + body { + margin: 0; + padding: 0; + } + + body { + background-color: #e8e4da; + color: var(--color-ink); + font-family: var(--font-sans); + -webkit-font-smoothing: antialiased; + font-feature-settings: "ss01", "cv11"; + } + + h1, + h2, + h3, + h4 { + font-family: var(--font-sans); + color: inherit; + letter-spacing: -0.01em; + } + + .font-mono { + font-family: var(--font-mono); + font-feature-settings: "tnum"; + } +} + +@layer components { + /* Hub-Eyebrow — sperrgesetzt, in Hub-Blau */ + .eyebrow { + font-size: 11px; + font-weight: 700; + letter-spacing: 0.2em; + text-transform: uppercase; + color: var(--color-hub); + } + .eyebrow.muted { + color: var(--color-ink-3); + letter-spacing: 0.16em; + font-weight: 600; + font-size: 10.5px; + } + .eyebrow.accent { + color: var(--color-accent-deep); + } + .eyebrow.on-dark { + color: var(--color-hub-line); + } + + /* Section-Eyebrow mit kurzem Linien-Schwanz */ + .section-eyebrow { + display: inline-flex; + align-items: center; + gap: 12px; + font-size: 11px; + font-weight: 700; + letter-spacing: 0.22em; + text-transform: uppercase; + color: var(--color-hub); + } + .section-eyebrow::after { + content: ""; + display: block; + width: 42px; + height: 1px; + background: var(--color-hub); + opacity: 0.45; + } + .section-eyebrow.on-dark { + color: var(--color-hub-line); + } + .section-eyebrow.on-dark::after { + background: var(--color-hub-line); + opacity: 0.55; + } + + .rule { + height: 1px; + background: var(--color-bg-rule); + border: 0; + margin: 0; + } + .rule-strong { + height: 1px; + background: var(--color-bg-rule-strong); + border: 0; + margin: 0; + } + .rule-hub { + height: 2px; + background: var(--color-hub); + border: 0; + margin: 0; + } + + /* Subtile geometrische Hintergrundlinien fürs Hero */ + .hero-grid { + background-image: + linear-gradient( + to right, + rgba(26, 37, 64, 0.04) 1px, + transparent 1px + ), + linear-gradient( + to bottom, + rgba(26, 37, 64, 0.04) 1px, + transparent 1px + ); + background-size: 48px 48px; + background-position: -1px -1px; + } + + /* Hub-Gradient-Klassen */ + .bg-hub-grad { + background-image: linear-gradient( + 135deg, + var(--color-hub) 0%, + var(--color-hub-2) 100% + ); + } + .bg-hub-grad-2 { + background-image: linear-gradient( + 180deg, + var(--color-hub) 0%, + var(--color-topbar-deep) 100% + ); + } + .bg-accent-grad { + background-image: linear-gradient( + 135deg, + var(--color-accent) 0%, + var(--color-accent-deep) 100% + ); + } + .bg-topbar-grad { + background-image: linear-gradient( + 135deg, + var(--color-topbar) 0%, + var(--color-topbar2) 100% + ); + } + + /* Empfohlen-Ribbon auf Tarif-Karten */ + .ribbon-recommend { + position: absolute; + top: -1px; + left: -1px; + right: -1px; + background: var(--color-hub); + color: #fff; + font-size: 10.5px; + font-weight: 700; + letter-spacing: 0.18em; + text-transform: uppercase; + text-align: center; + padding: 8px 0; + } + + /* Accordion-Pfeil (FAQ) */ + details > summary { + list-style: none; + cursor: pointer; + } + details > summary::-webkit-details-marker { + display: none; + } + details[open] .faq-chev { + transform: rotate(180deg); + } + .faq-chev { + transition: transform 0.2s ease; + } +} + +@layer utilities { + .tabular-nums { + font-variant-numeric: tabular-nums; + } +} + +[x-cloak] { + display: none !important; +} diff --git a/resources/views/components/web/brand-mark.blade.php b/resources/views/components/web/brand-mark.blade.php new file mode 100644 index 0000000..42fffff --- /dev/null +++ b/resources/views/components/web/brand-mark.blade.php @@ -0,0 +1,66 @@ +@props([ + 'brand' => 'presseportale', + 'variant' => 'auto', + 'serif' => true, +]) + +@php + /** + * Zentrale Brand-Wortmarke für alle drei Marken der Verlags-Familie. + * + * Schreibweise (verbindlich): + * - presseecho → "presse" + "echo" (echo ist die Akzentfarbe) + * - businessportal24 → "businessportal" + "24" (24 ist orange) + * - presseportale → "presse" + "portale" (portale ist Bernstein) + * + * Keine TLD-Endung (".de", ".com") direkt am Markennamen. Diese gehören + * – falls überhaupt – getrennt in den juristischen Bereich (Impressum, Kontakt). + * + * Schriftart: + * - Standard `font-serif` (Source Serif 4) – passt zum Editorial-Charakter + * von Presseecho und BusinessPortal24. Der Hub lädt Source Serif 4 + * ebenfalls mit, damit Markennennungen typografisch konsistent bleiben. + * - `:serif="false"` schaltet auf font-sans (Inter Tight) – etwa für die + * Top-Utility-Bar, in der die Marken sehr klein erscheinen. + * + * Variant: + * - `auto` → Akzentfarbe = Theme-Default (Orange / Grün / Bernstein) + * - `on-dark` → hellere/wärmere Akzentfarbe (für dunkle Hub-Panels) + * - `mono` → Akzent identisch zum Basis-Ton (z. B. wenn beides weiß sein soll) + */ + $marks = [ + 'presseecho' => [ + 'name' => 'presse', + 'accent' => 'echo', + 'accent_color_auto' => '#345636', + 'accent_color_on_dark' => '#9BD5B2', + ], + 'businessportal24' => [ + 'name' => 'businessportal', + 'accent' => '24', + 'accent_color_auto' => '#C84A1E', + 'accent_color_on_dark' => '#C84A1E', + ], + 'presseportale' => [ + 'name' => 'presse', + 'accent' => 'portale', + 'accent_color_auto' => '#B07A3A', + 'accent_color_on_dark' => '#B07A3A', + ], + ]; + + $mark = $marks[$brand] ?? $marks['presseportale']; + + $accentColor = match ($variant) { + 'on-dark' => $mark['accent_color_on_dark'], + 'mono' => 'inherit', + default => $mark['accent_color_auto'], + }; + + $fontClass = $serif ? 'font-serif' : 'font-sans'; + + $baseAttributes = $attributes->merge(['class' => $fontClass]); +@endphp + +{{ $mark['name'] }}{{ $mark['accent'] }} diff --git a/resources/views/components/web/hub/brand-context-banner.blade.php b/resources/views/components/web/hub/brand-context-banner.blade.php new file mode 100644 index 0000000..49f8ec7 --- /dev/null +++ b/resources/views/components/web/hub/brand-context-banner.blade.php @@ -0,0 +1,45 @@ +@props([ + 'from' => null, +]) + +@php + $brandMap = [ + 'presseecho' => [ + 'brand' => 'presseecho', + 'url' => config('domains.domain_presseecho_url'), + ], + 'businessportal24' => [ + 'brand' => 'businessportal24', + 'url' => config('domains.domain_businessportal_url'), + ], + ]; + + $context = $brandMap[$from] ?? null; +@endphp + +@if ($context) +
+
+ + + + + +
+ Sie kommen von + + + . + Ihr Konto hier funktioniert für beide Portale — + und . +
+ + + + + + Zurück zu + +
+
+@endif diff --git a/resources/views/components/web/hub/site-footer.blade.php b/resources/views/components/web/hub/site-footer.blade.php new file mode 100644 index 0000000..2f9cbda --- /dev/null +++ b/resources/views/components/web/hub/site-footer.blade.php @@ -0,0 +1,81 @@ +@props([ + 'brand' => null, +]) + +@php + $themeKey = config('app.theme', 'presseportale'); + $brand = $brand ?? config('domains.domains.' . $themeKey . '.brand', []); + $brandTagline = $brand['tagline_short'] ?? 'Publisher · Hub'; + $brandTaglineLong = $brand['tagline_long'] ?? 'Der gemeinsame Publisher-Bereich für presseecho und businessportal24.'; + $footerLegal = str_replace(':year', (string) now()->year, $brand['footer_legal'] ?? '© ' . now()->year . ' presseportale'); +@endphp + + diff --git a/resources/views/components/web/hub/site-header.blade.php b/resources/views/components/web/hub/site-header.blade.php new file mode 100644 index 0000000..2f61cfb --- /dev/null +++ b/resources/views/components/web/hub/site-header.blade.php @@ -0,0 +1,60 @@ +@props([ + 'navigation' => null, + 'brand' => null, +]) + +@php + $themeKey = config('app.theme', 'presseportale'); + $brand = + $brand ?? + config('domains.domains.' . $themeKey . '.brand', [ + 'name' => 'presse', + 'accent' => 'portale', + 'tagline_short' => 'Publisher · Hub', + ]); + $brandTagline = $brand['tagline_short'] ?? 'Publisher · Hub'; + + $navigation = $navigation ?? [ + ['label' => 'Tarife', 'href' => '#tarife'], + ['label' => 'So funktioniert es', 'href' => '#funktion'], + ['label' => 'Plattform-Familie', 'href' => '#familie'], + ['label' => 'FAQ', 'href' => '#faq'], + ['label' => 'Dokumentation', 'href' => '#'], + ]; +@endphp + +
+
+ + + + + + + {{ $brandTagline }} + + + + + +
+
diff --git a/resources/views/components/web/hub/top-utility-bar.blade.php b/resources/views/components/web/hub/top-utility-bar.blade.php new file mode 100644 index 0000000..46f312b --- /dev/null +++ b/resources/views/components/web/hub/top-utility-bar.blade.php @@ -0,0 +1,55 @@ +@props([ + 'date' => null, + 'siblingPortals' => [ + ['brand' => 'presseecho', 'url' => null], + ['brand' => 'businessportal24', 'url' => null], + ], +]) + +@php + $displayDate = $date ?? now()->locale('de')->isoFormat('dddd, D. MMMM YYYY'); + + $defaultUrls = [ + 'presseecho' => config('domains.domain_presseecho_url'), + 'businessportal24' => config('domains.domain_businessportal_url'), + ]; +@endphp + +
+
+ + + {{ $displayDate }} + + + + + + + + + Publisher-Hub für + @foreach ($siblingPortals as $index => $portal) + @php + $brandKey = $portal['brand'] ?? 'presseecho'; + $portalUrl = $portal['url'] ?? ($defaultUrls[$brandKey] ?? '#'); + @endphp + + + + @if (! $loop->last) + · + @endif + @endforeach + + + + + + Status + Dokumentation + Kontakt + + +
+
diff --git a/resources/views/components/web/site-footer.blade.php b/resources/views/components/web/site-footer.blade.php index 22ae70f..dc67c83 100644 --- a/resources/views/components/web/site-footer.blade.php +++ b/resources/views/components/web/site-footer.blade.php @@ -9,7 +9,7 @@ 'accent' => '24', 'tagline_short' => 'Pressemitteilungen · DACH', 'tagline_long' => 'Veröffentlichungs-Portal für redaktionell geprüfte Pressemitteilungen aus Deutschland, Österreich und der Schweiz.', - 'footer_legal' => '© :year businessportal24.com · Alle Rechte vorbehalten', + 'footer_legal' => '© :year businessportal24 · Alle Rechte vorbehalten', 'about_label' => 'Über businessportal24', ]); diff --git a/resources/views/layouts/admin-master.blade.php b/resources/views/layouts/admin-master.blade.php index 49cb6b9..dd33160 100644 --- a/resources/views/layouts/admin-master.blade.php +++ b/resources/views/layouts/admin-master.blade.php @@ -27,7 +27,7 @@