Editorial-Frontend: oeffentliche Unterseiten, Preise & Linkpflege
Oeffentliche Strecke durchgaengig auf das Editorial-Design umgestellt und
datengetrieben gemacht:
- Newsrooms-Verzeichnis + Newsroom-Detailseiten (Suche, Pagination)
- Preise-Seite neu (Abos via Plan, Einzel-PM via config/billing, Add-ons via
config/credits); Texte ausgelagert nach lang/{de,en}/pricing.php
- Pricing-Teaser-Komponente auf den Startseiten + Preise-Link in Header/Footer
- Statische Seiten im Editorial-Design ueber neue Komponente x-web.static-page:
impressum, datenschutz, agb, cookies, faq (Akkordeon), hilfe, kontakt,
ueber-uns, api (altes Theme/gradient-hero entfernt)
- Header/Footer-Linkpflege: tote #-Anker raus, FAQ/Hilfe/Cookies verlinkt,
"Anmelden" fuehrt in den Hub
- Legacy-URL-Redirects (.html, presskit->newsroom, Regionen)
- Datums-Bugfix in Feed-Komponenten
Tests: NewsroomPage, PreisePage, PricingTeaser, StaticPages, NavigationLinks,
LegacyRedirect. Doku in docs/frontend aktualisiert.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
0618080e02
commit
326ff9b2a0
34 changed files with 2842 additions and 3102 deletions
|
|
@ -1,331 +1,184 @@
|
|||
@extends('web.layouts.web-master')
|
||||
|
||||
@section('title', 'Newsrooms - Business Portal 24')
|
||||
@php
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
@section('content')
|
||||
\Carbon\Carbon::setLocale(app()->getLocale());
|
||||
|
||||
<main class="min-h-screen flex flex-col bg-white dark:bg-zinc-950 transition-colors duration-200">
|
||||
<!-- Burger Menu Component -->
|
||||
<livewire:web.burger-menu />
|
||||
$brandConfig = config('domains.domains.'.config('app.theme').'.brand', []);
|
||||
$brandName = $brandConfig['name'] ?? 'businessportal';
|
||||
$brandAccent = $brandConfig['accent'] ?? '24';
|
||||
|
||||
<!-- Header Component -->
|
||||
<livewire:web.header />
|
||||
$palette = ['#0098A6', '#21A038', '#0018A8', '#1E1E1E', '#E20074', '#003781', '#C84A1E', '#5A6E2F'];
|
||||
$fmt = fn ($value) => number_format((int) $value, 0, ',', '.');
|
||||
@endphp
|
||||
|
||||
<!-- Hero Section -->
|
||||
<section class="relative overflow-hidden text-white py-20 animate-fade-in"
|
||||
style="background: var(--gradient-hero);">
|
||||
<div class="container mx-auto px-4">
|
||||
<div class="max-w-3xl mx-auto text-center">
|
||||
<h1 class="text-4xl md:text-5xl font-bold mb-6 animate-fade-in-up">
|
||||
Newsrooms
|
||||
</h1>
|
||||
<p class="text-xl text-white/90 leading-relaxed animate-fade-in-up animation-delay-200">
|
||||
Ihr professioneller Unternehmens-Newsroom – Alle Pressemitteilungen zentral an einem Ort
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Decorative Pattern -->
|
||||
<div class="absolute top-0 right-0 opacity-10">
|
||||
<svg width="404" height="384" fill="none" viewBox="0 0 404 384">
|
||||
<defs>
|
||||
<pattern id="pattern-hero-newsrooms" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse">
|
||||
<rect x="0" y="0" width="4" height="4" fill="currentColor"/>
|
||||
</pattern>
|
||||
</defs>
|
||||
<rect width="404" height="384" fill="url(#pattern-hero-newsrooms)"/>
|
||||
</svg>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- What is a Newsroom Section -->
|
||||
<section class="py-16 bg-white dark:bg-zinc-950 transition-colors duration-200">
|
||||
<div class="container mx-auto px-4">
|
||||
<div class="max-w-4xl mx-auto">
|
||||
<div class="text-center mb-12">
|
||||
<h2 class="text-3xl font-bold text-zinc-900 dark:text-zinc-100 mb-4">
|
||||
Was ist ein Newsroom?
|
||||
</h2>
|
||||
<p class="text-lg text-zinc-600 dark:text-zinc-400">
|
||||
Ihre digitale Pressezentrale für professionelle Unternehmenskommunikation
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800 p-8 md:p-12 transition-colors duration-200">
|
||||
<p class="text-lg text-zinc-900 dark:text-zinc-100 leading-relaxed mb-6">
|
||||
Ein Newsroom ist Ihre dedizierte Unternehmensseite auf Business Portal, wo alle Ihre Pressemitteilungen gebündelt und professionell präsentiert werden. Journalisten, Partner und Interessenten finden hier alle relevanten Informationen zu Ihrem Unternehmen auf einen Blick.
|
||||
</p>
|
||||
<p class="text-lg text-zinc-900 dark:text-zinc-100 leading-relaxed">
|
||||
Mit Ihrem individuellen Newsroom bauen Sie Vertrauen auf und schaffen eine zentrale Anlaufstelle für alle, die sich über Ihr Unternehmen informieren möchten.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Features Section -->
|
||||
<section class="py-16 bg-zinc-50/50 dark:bg-zinc-900/50 transition-colors duration-200">
|
||||
<div class="container mx-auto px-4">
|
||||
<div class="text-center mb-12">
|
||||
<h2 class="text-3xl font-bold text-zinc-900 dark:text-zinc-100 mb-4">
|
||||
Newsroom Features
|
||||
</h2>
|
||||
<p class="text-zinc-600 dark:text-zinc-400 max-w-2xl mx-auto">
|
||||
Professionelle Features für Ihre Unternehmenskommunikation
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 max-w-6xl mx-auto">
|
||||
<!-- Feature 1 -->
|
||||
<div class="bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800 p-6 hover:shadow-lg transition-all">
|
||||
<div class="w-16 h-16 bg-gradient-to-br from-[var(--color-primary)]/10 to-[var(--color-secondary)]/10 rounded-full flex items-center justify-center mb-4">
|
||||
<svg class="h-8 w-8 text-[var(--color-primary)]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 21a4 4 0 01-4-4V5a2 2 0 012-2h4a2 2 0 012 2v12a4 4 0 01-4 4zm0 0h12a2 2 0 002-2v-4a2 2 0 00-2-2h-2.343M11 7.343l1.657-1.657a2 2 0 012.828 0l2.829 2.829a2 2 0 010 2.828l-8.486 8.485M7 17h.01"></path>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="font-semibold text-zinc-900 dark:text-zinc-100 mb-3">
|
||||
Individuelles Branding
|
||||
</h3>
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400">
|
||||
Gestalten Sie Ihren Newsroom mit Ihrem Logo, Unternehmensfarben und individuellen Inhalten.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Feature 2 -->
|
||||
<div class="bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800 p-6 hover:shadow-lg transition-all">
|
||||
<div class="w-16 h-16 bg-gradient-to-br from-[var(--color-primary)]/10 to-[var(--color-secondary)]/10 rounded-full flex items-center justify-center mb-4">
|
||||
<svg class="h-8 w-8 text-[var(--color-primary)]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"></path>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="font-semibold text-zinc-900 dark:text-zinc-100 mb-3">
|
||||
Zentrale Verwaltung
|
||||
</h3>
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400">
|
||||
Alle Pressemitteilungen chronologisch sortiert und nach Kategorien filterbar an einem Ort.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Feature 3 -->
|
||||
<div class="bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800 p-6 hover:shadow-lg transition-all">
|
||||
<div class="w-16 h-16 bg-gradient-to-br from-[var(--color-primary)]/10 to-[var(--color-secondary)]/10 rounded-full flex items-center justify-center mb-4">
|
||||
<svg class="h-8 w-8 text-[var(--color-primary)]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4"></path>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="font-semibold text-zinc-900 dark:text-zinc-100 mb-3">
|
||||
SEO-Optimiert
|
||||
</h3>
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400">
|
||||
Ihr Newsroom wird von Suchmaschinen indexiert und verbessert Ihre Online-Sichtbarkeit.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Feature 4 -->
|
||||
<div class="bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800 p-6 hover:shadow-lg transition-all">
|
||||
<div class="w-16 h-16 bg-gradient-to-br from-[var(--color-primary)]/10 to-[var(--color-secondary)]/10 rounded-full flex items-center justify-center mb-4">
|
||||
<svg class="h-8 w-8 text-[var(--color-primary)]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"></path>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="font-semibold text-zinc-900 dark:text-zinc-100 mb-3">
|
||||
Analytics & Insights
|
||||
</h3>
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400">
|
||||
Detaillierte Statistiken zu Besuchern, Views und Engagement Ihrer Pressemitteilungen.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Feature 5 -->
|
||||
<div class="bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800 p-6 hover:shadow-lg transition-all">
|
||||
<div class="w-16 h-16 bg-gradient-to-br from-[var(--color-primary)]/10 to-[var(--color-secondary)]/10 rounded-full flex items-center justify-center mb-4">
|
||||
<svg class="h-8 w-8 text-[var(--color-primary)]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="font-semibold text-zinc-900 dark:text-zinc-100 mb-3">
|
||||
Medien-Kontakte
|
||||
</h3>
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400">
|
||||
Hinterlegen Sie Pressekontakte und ermöglichen Sie direkte Anfragen von Journalisten.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Feature 6 -->
|
||||
<div class="bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800 p-6 hover:shadow-lg transition-all">
|
||||
<div class="w-16 h-16 bg-gradient-to-br from-[var(--color-primary)]/10 to-[var(--color-secondary)]/10 rounded-full flex items-center justify-center mb-4">
|
||||
<svg class="h-8 w-8 text-[var(--color-primary)]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"></path>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="font-semibold text-zinc-900 dark:text-zinc-100 mb-3">
|
||||
RSS-Feeds
|
||||
</h3>
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400">
|
||||
Automatische RSS-Feeds ermöglichen einfaches Abonnieren Ihrer Neuigkeiten.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Pricing Tiers Section -->
|
||||
<section class="py-16 bg-white dark:bg-zinc-950 transition-colors duration-200">
|
||||
<div class="container mx-auto px-4">
|
||||
<div class="text-center mb-12">
|
||||
<h2 class="text-3xl font-bold text-zinc-900 dark:text-zinc-100 mb-4">
|
||||
Newsroom Pakete
|
||||
</h2>
|
||||
<p class="text-zinc-600 dark:text-zinc-400 max-w-2xl mx-auto">
|
||||
Wählen Sie das passende Paket für Ihre Anforderungen
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-8 max-w-5xl mx-auto">
|
||||
<!-- Basic Newsroom -->
|
||||
<div class="bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800 p-8 hover:shadow-lg transition-all">
|
||||
<h3 class="text-xl font-bold text-zinc-900 dark:text-zinc-100 mb-2">
|
||||
Basic Newsroom
|
||||
</h3>
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400 mb-4">
|
||||
Inklusive im Free-Tarif
|
||||
</p>
|
||||
<ul class="space-y-3 mb-6">
|
||||
<li class="flex items-start gap-2">
|
||||
<svg class="h-5 w-5 text-[var(--color-primary)] flex-shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
|
||||
</svg>
|
||||
<span class="text-sm text-zinc-600 dark:text-zinc-400">Standard-Design</span>
|
||||
</li>
|
||||
<li class="flex items-start gap-2">
|
||||
<svg class="h-5 w-5 text-[var(--color-primary)] flex-shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
|
||||
</svg>
|
||||
<span class="text-sm text-zinc-600 dark:text-zinc-400">Alle Pressemitteilungen</span>
|
||||
</li>
|
||||
<li class="flex items-start gap-2">
|
||||
<svg class="h-5 w-5 text-[var(--color-primary)] flex-shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
|
||||
</svg>
|
||||
<span class="text-sm text-zinc-600 dark:text-zinc-400">RSS-Feed</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Professional Newsroom -->
|
||||
<div class="bg-white dark:bg-zinc-900 rounded-xl border-2 border-[var(--color-primary)] p-8 hover:shadow-lg transition-all relative">
|
||||
<div class="absolute -top-4 left-1/2 -translate-x-1/2 px-4 py-1 bg-gradient-to-r from-[var(--color-primary)] to-[var(--color-secondary)] text-white text-sm font-medium rounded-full">
|
||||
Beliebt
|
||||
</div>
|
||||
<h3 class="text-xl font-bold text-zinc-900 dark:text-zinc-100 mb-2">
|
||||
Professional Newsroom
|
||||
</h3>
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400 mb-4">
|
||||
Professional-Tarif
|
||||
</p>
|
||||
<ul class="space-y-3 mb-6">
|
||||
<li class="flex items-start gap-2">
|
||||
<svg class="h-5 w-5 text-[var(--color-primary)] flex-shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
|
||||
</svg>
|
||||
<span class="text-sm text-zinc-600 dark:text-zinc-400">Individuelles Branding</span>
|
||||
</li>
|
||||
<li class="flex items-start gap-2">
|
||||
<svg class="h-5 w-5 text-[var(--color-primary)] flex-shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
|
||||
</svg>
|
||||
<span class="text-sm text-zinc-600 dark:text-zinc-400">Custom Domain</span>
|
||||
</li>
|
||||
<li class="flex items-start gap-2">
|
||||
<svg class="h-5 w-5 text-[var(--color-primary)] flex-shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
|
||||
</svg>
|
||||
<span class="text-sm text-zinc-600 dark:text-zinc-400">Erweiterte Analytics</span>
|
||||
</li>
|
||||
<li class="flex items-start gap-2">
|
||||
<svg class="h-5 w-5 text-[var(--color-primary)] flex-shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
|
||||
</svg>
|
||||
<span class="text-sm text-zinc-600 dark:text-zinc-400">Medien-Bibliothek</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Enterprise Newsroom -->
|
||||
<div class="bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800 p-8 hover:shadow-lg transition-all">
|
||||
<h3 class="text-xl font-bold text-zinc-900 dark:text-zinc-100 mb-2">
|
||||
Enterprise Newsroom
|
||||
</h3>
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400 mb-4">
|
||||
Enterprise-Tarif
|
||||
</p>
|
||||
<ul class="space-y-3 mb-6">
|
||||
<li class="flex items-start gap-2">
|
||||
<svg class="h-5 w-5 text-[var(--color-primary)] flex-shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
|
||||
</svg>
|
||||
<span class="text-sm text-zinc-600 dark:text-zinc-400">White Label Lösung</span>
|
||||
</li>
|
||||
<li class="flex items-start gap-2">
|
||||
<svg class="h-5 w-5 text-[var(--color-primary)] flex-shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
|
||||
</svg>
|
||||
<span class="text-sm text-zinc-600 dark:text-zinc-400">API-Zugang</span>
|
||||
</li>
|
||||
<li class="flex items-start gap-2">
|
||||
<svg class="h-5 w-5 text-[var(--color-primary)] flex-shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
|
||||
</svg>
|
||||
<span class="text-sm text-zinc-600 dark:text-zinc-400">Prioritäts-Support</span>
|
||||
</li>
|
||||
<li class="flex items-start gap-2">
|
||||
<svg class="h-5 w-5 text-[var(--color-primary)] flex-shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
|
||||
</svg>
|
||||
<span class="text-sm text-zinc-600 dark:text-zinc-400">Individuelle Features</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CTA Section -->
|
||||
<section class="py-16 text-white" style="background: var(--gradient-hero);">
|
||||
<div class="container mx-auto px-4 text-center">
|
||||
<div class="flex justify-center mb-6">
|
||||
<svg class="h-16 w-16" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"></path>
|
||||
</svg>
|
||||
</div>
|
||||
<h2 class="text-3xl font-bold mb-4">
|
||||
Starten Sie Ihren eigenen Newsroom
|
||||
</h2>
|
||||
<p class="text-xl text-white/90 mb-8 max-w-2xl mx-auto">
|
||||
Erstellen Sie in wenigen Minuten Ihren professionellen Unternehmens-Newsroom
|
||||
</p>
|
||||
<a href="/register" class="inline-flex items-center justify-center px-8 py-4 text-sm font-medium bg-white text-[var(--color-primary)] hover:bg-zinc-100 rounded-lg shadow-md hover:shadow-lg transition-all">
|
||||
Jetzt kostenlos starten
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Footer Component -->
|
||||
<livewire:web.footer />
|
||||
</main>
|
||||
@section('title', 'Newsrooms – '.$brandName.$brandAccent)
|
||||
@section('meta_description', 'Alle aktiven Unternehmens-Newsrooms im Überblick – redaktionell geprüfte Pressemitteilungen je Unternehmen, gebündelt und dauerhaft auffindbar im DACH-Raum.')
|
||||
|
||||
@section('hreflang')
|
||||
<link rel="alternate" hreflang="de" href="{{ url('/de/newsrooms') }}">
|
||||
<link rel="alternate" hreflang="en" href="{{ url('/en/newsrooms') }}">
|
||||
<link rel="alternate" hreflang="x-default" href="{{ url('/de/newsrooms') }}">
|
||||
@endsection
|
||||
|
||||
@push('styles')
|
||||
<style>
|
||||
/* Domain-spezifische Color-Variablen für Inline-Styles */
|
||||
:root {
|
||||
--color-primary: {{ $domainConfig['color_scheme']['primary'] ?? '#cf3628' }};
|
||||
--color-secondary: {{ $domainConfig['color_scheme']['secondary'] ?? '#f0834a' }};
|
||||
}
|
||||
@section('content')
|
||||
<x-web.site-header />
|
||||
|
||||
/* Alpine.js Cloak */
|
||||
[x-cloak] {
|
||||
display: none !important;
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
<main class="bg-bg text-ink">
|
||||
{{-- Breadcrumb --}}
|
||||
<div class="border-b border-bg-rule">
|
||||
<div class="max-w-layout mx-auto px-4 sm:px-6 lg:px-8 py-2.5 flex items-center gap-2 text-[11.5px] text-ink-3">
|
||||
<a href="{{ route('web.home') }}" class="hover:text-ink transition-colors">{{ $brandName }}{{ $brandAccent }}</a>
|
||||
<span class="text-ink-4" aria-hidden="true">›</span>
|
||||
<span class="text-ink font-semibold">Newsrooms</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Masthead --}}
|
||||
<section class="max-w-layout mx-auto px-4 sm:px-6 lg:px-8 pt-8 lg:pt-10">
|
||||
<div class="max-w-[680px]">
|
||||
<div class="eyebrow mb-3">Unternehmens-Newsrooms</div>
|
||||
<h1 class="font-serif text-[36px] sm:text-[46px] lg:text-[50px] font-semibold m-0 mb-4 leading-[1.05] tracking-[-1px] text-ink text-balance">
|
||||
Newsrooms
|
||||
</h1>
|
||||
<p class="font-serif text-[16px] leading-[1.55] m-0 text-ink-2">
|
||||
Alle aktiven Unternehmen mit ihren redaktionell geprüften Pressemitteilungen – gebündelt an einem Ort.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{{-- Stat strip --}}
|
||||
<div class="grid grid-cols-2 lg:grid-cols-3 border-y border-bg-rule mt-8">
|
||||
<div class="px-6 py-5 border-r border-bg-rule">
|
||||
<div class="eyebrow muted text-[10px] mb-2.5">Aktive Newsrooms</div>
|
||||
<div class="font-serif text-[32px] sm:text-[36px] font-semibold leading-none tracking-[-0.6px] text-ink">{{ $fmt($totalNewsrooms) }}</div>
|
||||
<div class="text-[11.5px] text-ink-3 mt-2">mit veröffentlichten Meldungen</div>
|
||||
</div>
|
||||
<div class="px-6 py-5 lg:border-r border-bg-rule">
|
||||
<div class="eyebrow muted text-[10px] mb-2.5">Aktiv (30 Tage)</div>
|
||||
<div class="font-serif text-[32px] sm:text-[36px] font-semibold leading-none tracking-[-0.6px] text-ink">{{ $fmt($activeNewsroomsCount) }}</div>
|
||||
<div class="text-[11.5px] text-ink-3 mt-2">Stand {{ $referenceNow->translatedFormat('j. M Y') }}</div>
|
||||
</div>
|
||||
<div class="px-6 py-5 border-t lg:border-t-0">
|
||||
<div class="eyebrow muted text-[10px] mb-2.5">Meldungen im Archiv</div>
|
||||
<div class="font-serif text-[32px] sm:text-[36px] font-semibold leading-none tracking-[-0.6px] text-ink">{{ $fmt($archiveTotal) }}</div>
|
||||
<div class="text-[11.5px] text-ink-3 mt-2">redaktionell geprüft</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{{-- Suche + Verzeichnis --}}
|
||||
<section class="max-w-layout mx-auto px-4 sm:px-6 lg:px-8 mt-8 mb-16">
|
||||
<form action="{{ route('newsrooms') }}" method="get" class="mb-7 max-w-[520px]">
|
||||
<label class="sr-only" for="newsroom-search">Newsroom suchen</label>
|
||||
<div class="flex items-center gap-3 px-4 py-3 border border-bg-rule-strong bg-bg-elev focus-within:border-brand transition-colors">
|
||||
<svg width="18" height="18" viewBox="0 0 16 16" fill="none" class="flex-shrink-0 text-ink-3" aria-hidden="true">
|
||||
<circle cx="7" cy="7" r="5" stroke="currentColor" stroke-width="1.5" />
|
||||
<path d="M11 11l3 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" />
|
||||
</svg>
|
||||
<input id="newsroom-search" type="search" name="q" value="{{ $term }}"
|
||||
placeholder="Unternehmen suchen…"
|
||||
autocomplete="off"
|
||||
class="flex-1 bg-transparent border-0 p-0 text-[14px] text-ink placeholder:text-ink-3 focus:outline-none focus:ring-0 min-w-0">
|
||||
<button type="submit" class="flex-shrink-0 px-3.5 py-1.5 text-[12.5px] font-semibold bg-brand text-white rounded-[2px] hover:bg-brand-deep transition-colors">
|
||||
Suchen
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<header class="flex items-baseline justify-between mb-1 flex-wrap gap-3">
|
||||
<h2 class="font-serif text-[22px] font-semibold m-0 tracking-[-0.3px] text-ink">
|
||||
{{ $fmt($newsrooms->total()) }}
|
||||
{{ $newsrooms->total() === 1 ? 'Newsroom' : 'Newsrooms' }}
|
||||
@if ($term !== '')
|
||||
<span class="text-ink-3 font-normal">für „{{ $term }}"</span>
|
||||
@endif
|
||||
</h2>
|
||||
@if ($term !== '')
|
||||
<a href="{{ route('newsrooms') }}" class="text-[12.5px] text-brand font-semibold hover:text-brand-deep transition-colors">Filter zurücksetzen</a>
|
||||
@endif
|
||||
</header>
|
||||
<hr class="rule-strong mb-6">
|
||||
|
||||
@if ($newsrooms->isNotEmpty())
|
||||
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-px bg-bg-rule border border-bg-rule">
|
||||
@foreach ($newsrooms as $company)
|
||||
@php
|
||||
$logoUrl = $company->logoUrl();
|
||||
$initial = mb_strtoupper(mb_substr((string) $company->name, 0, 1));
|
||||
$color = $palette[$loop->index % count($palette)];
|
||||
$latest = $company->latest_published_at ? Carbon::parse($company->latest_published_at) : null;
|
||||
$isRecentlyActive = (int) ($company->recent_count ?? 0) > 0;
|
||||
@endphp
|
||||
<a href="{{ route('newsroom', ['slug' => $company->slug]) }}"
|
||||
class="group flex flex-col bg-bg p-5 hover:bg-bg-elev transition-colors">
|
||||
<div class="flex items-start gap-3.5 mb-3.5">
|
||||
@if ($logoUrl)
|
||||
<img src="{{ $logoUrl }}" alt="{{ $company->name }}" class="w-12 h-12 object-contain bg-white border border-bg-rule flex-shrink-0" loading="lazy">
|
||||
@else
|
||||
<div class="w-12 h-12 flex items-center justify-center text-white text-[18px] font-bold font-serif flex-shrink-0" style="background: {{ $color }};">
|
||||
{{ $initial }}
|
||||
</div>
|
||||
@endif
|
||||
<div class="min-w-0 flex-1">
|
||||
<h3 class="font-serif text-[16px] font-semibold leading-[1.25] text-ink group-hover:text-brand transition-colors truncate">{{ $company->name }}</h3>
|
||||
@if ($latest)
|
||||
<div class="text-[11px] text-ink-3 mt-1">Letzte Meldung {{ $latest->translatedFormat('j. M Y') }}</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-auto flex items-center justify-between pt-3 border-t border-bg-rule">
|
||||
<span class="text-[12px] text-ink-2">
|
||||
<span class="font-mono font-semibold text-ink">{{ $fmt($company->releases_count ?? 0) }}</span> Meldungen
|
||||
</span>
|
||||
@if ($isRecentlyActive)
|
||||
<span class="inline-flex items-center gap-1.5 text-[10.5px] font-semibold text-ink-2 px-2 py-0.5 bg-brand/[0.06] border border-brand/20 rounded-[2px]">
|
||||
<span class="w-1.5 h-1.5 rounded-full bg-brand"></span>
|
||||
{{ $fmt($company->recent_count) }} / 30 Tage
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<x-web.pagination :paginator="$newsrooms" />
|
||||
@else
|
||||
<div class="border border-bg-rule bg-bg-elev px-6 py-12 text-center">
|
||||
<h3 class="font-serif text-[20px] font-semibold text-ink m-0 mb-2">Keine Newsrooms gefunden</h3>
|
||||
<p class="text-[13px] text-ink-3 m-0 mb-5 max-w-md mx-auto">
|
||||
@if ($term !== '')
|
||||
Für „{{ $term }}" gibt es derzeit keinen passenden Newsroom. Versuchen Sie einen anderen Suchbegriff.
|
||||
@else
|
||||
Aktuell sind keine aktiven Newsrooms verfügbar.
|
||||
@endif
|
||||
</p>
|
||||
@if ($term !== '')
|
||||
<a href="{{ route('newsrooms') }}" class="inline-flex items-center gap-2 px-4 py-2.5 text-[13px] font-semibold border border-bg-rule-strong bg-white text-ink hover:bg-bg-elev transition-colors">
|
||||
Alle Newsrooms anzeigen
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
</section>
|
||||
|
||||
{{-- Publisher CTA (breit) --}}
|
||||
<section class="max-w-layout mx-auto px-4 sm:px-6 lg:px-8 mb-16">
|
||||
<div class="bg-topbar-grad text-ink-on-dark p-6 sm:p-9">
|
||||
<div class="grid gap-9 lg:grid-cols-[1.4fr_1fr] lg:items-center">
|
||||
<div>
|
||||
<div class="eyebrow on-dark mb-2.5">Eigener Newsroom</div>
|
||||
<h3 class="font-serif text-[24px] sm:text-[28px] font-semibold m-0 mb-2.5 leading-[1.15] text-white tracking-[-0.3px]">Bündeln Sie Ihre Pressemitteilungen im eigenen Newsroom.</h3>
|
||||
<p class="text-[14px] leading-[1.55] m-0 max-w-[540px] text-white/80">Eigene Marken-URL · alle Meldungen zentral · SEO-Vorteil für Ihr Unternehmen · redaktionell geprüft.</p>
|
||||
</div>
|
||||
<div class="flex flex-col gap-2.5">
|
||||
<a href="{{ route('veroeffentlichen') }}" class="w-full inline-flex items-center justify-center px-[18px] py-3.5 text-[14px] font-semibold bg-brand text-white hover:bg-brand-deep transition-colors">Pressemitteilung einreichen →</a>
|
||||
<a href="{{ route('preise') }}" class="w-full inline-flex items-center justify-center px-[18px] py-3 text-[14px] font-semibold text-white border border-white/30 hover:bg-white/10 transition-colors">Tarife & Pakete ansehen</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<x-web.site-footer />
|
||||
@endsection
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue