presseportale/resources/views/components/web/industry-spotlight.blade.php
Kevin Adametz 253141c6dc Frontend: Editorial-Relaunch der öffentlichen Strecke + Ausgaben-Routing
Öffentliche Seiten auf gemeinsames Editorial-Design (x-web.site-header/-footer,
Design-Tokens) und Ausgaben-Präfix /{edition}/ (de|en) umgestellt.

- Routing: neue Middleware SetEdition (Locale + URL::defaults), /{edition}-Gruppe
  in routes/web.php, Root-Redirect auf /de, 301 für Legacy-.html-URLs,
  Baseline-Default in AppServiceProvider.
- Neue URL-Schemata: /{edition}/press-release/{slug}, /{edition}/category/{slug}.
- Ausgabe = Sprache: DE/EN-Umschalter (Region/CH/AT entfernt); EditorialClock
  und Livewire-Komponenten sprachdynamisch.
- Detail-, Kategorie- und Veröffentlichen-Seite mit echten Daten neu aufgebaut.
- Suche aktiviert: Volt-Komponente livewire/web/search (Titel/Text/Keywords +
  Firma + Rubrik, Filter, Sortierung, Pagination, URL-Parameter q/category/sort).
- Rubriken-Navigation statt Übersichtsseite: Helper CategoryNavigation;
  web/kategorien.blade.php + Route entfernt (Legacy-301).
- Tests: Edition-Routing, Kategorie-Seite/-Navigation, Detail, Veröffentlichen,
  Suche, EditorialClock. Doku in "Echte öffentliche Unterseiten.md" aktualisiert.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-16 16:39:28 +00:00

119 lines
6.8 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@props([
'industry' => null,
'stats' => null,
'releases' => [],
'study' => null,
])
@php
$industry ??= 'Energie & Klima';
$stats ??= [
['label' => 'Meldungen heute', 'value' => '47', 'sub' => '+18 ggü. Wochenschnitt'],
['label' => 'Investitions­volumen', 'value' => '€8,4 Mrd.', 'sub' => 'Q4 2025 angekündigt'],
['label' => 'Aktive Unternehmen', 'value' => '23', 'sub' => 'in dieser Branche heute'],
];
$releases = collect($releases);
if ($releases->isEmpty()) {
$releases = collect([
['time' => '14:12', 'date' => '12. Mai', 'category' => 'Energie', 'title' => 'RWE startet 1,8 GW Offshore-Windpark vor Helgoland — größtes Projekt in der Nordsee 2025', 'company' => 'RWE AG', 'city' => 'Essen', 'minutes' => 4, 'href' => '#'],
['time' => '12:28', 'date' => '12. Mai', 'category' => 'Energie', 'title' => 'EnBW unterzeichnet Wasserstoff-Lieferabkommen mit Air Liquide', 'company' => 'EnBW Energie', 'city' => 'Karlsruhe', 'minutes' => 3, 'href' => '#'],
['time' => '10:55', 'date' => '12. Mai', 'category' => 'Klima', 'title' => 'Stadtwerke München erreichen 100 % Ökostrom-Ziel für Privatkunden', 'company' => 'SWM', 'city' => 'München', 'minutes' => 2, 'href' => '#'],
]);
}
$study ??= [
'kicker' => 'STUDIE · ENERGIE',
'title' => 'Energiewende-Monitor 2025: Investitionen, Engpässe, Potenziale im DACH-Raum',
'source' => 'Fraunhofer-Institut für Solare Energiesysteme',
'meta' => 'PDF · 84 Seiten · Veröffentlicht 11. Nov 2025',
'href' => '#',
];
@endphp
<section class="max-w-layout mx-auto px-8 mt-16">
<header class="flex items-baseline justify-between mb-4 flex-wrap gap-3">
<h2 class="font-serif text-[28px] font-semibold m-0 tracking-[-0.3px] text-ink">
Heute im Fokus <span class="text-brand">· {{ $industry }}</span>
</h2>
<div class="eyebrow muted">Aktualisiert {{ now()->format('H:i') }} Uhr · {{ $stats[0]['value'] ?? '47' }} Meldungen</div>
</header>
<hr class="rule-strong">
<div class="grid grid-cols-1 md:grid-cols-3 border-b border-bg-rule">
@foreach ($stats as $idx => $stat)
<div class="px-6 py-5 {{ $idx < count($stats) - 1 ? 'md:border-r border-bg-rule' : '' }}">
<div class="eyebrow muted mb-2">{{ $stat['label'] }}</div>
<div class="font-serif text-[32px] font-semibold leading-none tracking-[-0.5px] text-ink">{{ $stat['value'] }}</div>
<div class="text-[11.5px] text-ink-3 mt-1.5">{{ $stat['sub'] }}</div>
</div>
@endforeach
</div>
<div class="grid gap-9 mt-6 grid-cols-1 lg:grid-cols-[1.7fr_1fr]">
<div>
@foreach ($releases as $release)
<a href="{{ $release['href'] }}" @class([
'grid items-start border-b border-bg-rule py-4',
'cursor-pointer transition-colors group hover:bg-bg-elev',
'pl-1.5 pr-2 sm:pl-2',
'max-md:grid-cols-[auto_minmax(0,1fr)] max-md:gap-x-3',
'md:grid-cols-[3.75rem_6.25rem_minmax(0,1fr)] md:gap-x-4',
])>
<div class="flex min-w-0 shrink-0 flex-col gap-0.5 tabular-nums pt-0.5">
<span class="font-mono text-[11px] leading-none text-ink-3 sm:text-[12px]">{{ $release['time'] }}</span>
@if (($release['date'] ?? '') !== '')
<span class="text-[9px] leading-tight text-ink-4 sm:text-[10px]">{{ $release['date'] }}</span>
@endif
<span class="bp-cat self-start whitespace-nowrap leading-snug max-md:mt-1 max-md:text-[9px] max-md:tracking-[0.1em] md:hidden">{{ $release['category'] }}</span>
</div>
<span class="bp-cat hidden self-start whitespace-nowrap leading-snug md:inline">{{ $release['category'] }}</span>
<div class="min-w-0">
<div class="font-serif text-[16px] font-medium leading-[1.3] tracking-[-0.1px] text-ink transition-colors group-hover:text-brand">
{{ $release['title'] }}
</div>
<div class="text-[11.5px] text-ink-3 mt-1 flex items-center gap-1.5 flex-wrap">
<svg width="10" height="10" viewBox="0 0 11 11" class="text-ok" aria-hidden="true">
<circle cx="5.5" cy="5.5" r="5" fill="currentColor" />
<path d="M3 5.5l1.8 1.8L8 4" stroke="white" stroke-width="1.4" fill="none" stroke-linecap="round" />
</svg>
<span>{{ $release['company'] }}</span>
@if ($release['city'] ?? null)
<span aria-hidden="true">·</span>
<span>{{ $release['city'] }}</span>
@endif
@if ($release['minutes'] ?? null)
<span aria-hidden="true">·</span>
<span>{{ $release['minutes'] }} Min.</span>
@endif
</div>
</div>
</a>
@endforeach
</div>
<aside>
<div class="bg-bg-card-warm p-6 border-t-[3px] border-brand">
<div class="eyebrow mb-2.5">{{ $study['kicker'] }}</div>
<h3 class="font-serif text-[20px] font-semibold m-0 mb-3 tracking-[-0.2px] leading-[1.25] text-ink">
{{ $study['title'] }}
</h3>
<div class="text-[12px] text-ink-3 mb-3.5">
{{ $study['source'] }}<br>
<span class="font-mono text-[11px]">{{ $study['meta'] }}</span>
</div>
<a href="{{ $study['href'] }}"
class="w-full inline-flex items-center justify-center gap-2 px-[18px] py-2.5 text-[13px] font-semibold bg-transparent text-ink border border-ink rounded-[2px] cursor-pointer hover:bg-ink hover:text-bg transition-colors">
Studie herunterladen
</a>
<div class="mt-2.5 text-[10.5px] leading-[1.45] flex items-center gap-1.5 text-ink-3">
<svg width="11" height="11" viewBox="0 0 12 12" fill="none" class="flex-shrink-0 text-ink-4" aria-hidden="true">
<rect x="1.5" y="3" width="9" height="6.5" stroke="currentColor" stroke-width="1" />
<path d="M1.5 3l4.5 3.5L10.5 3" stroke="currentColor" stroke-width="1" fill="none" />
</svg>
<span>Kostenlos · Anmeldung per E-Mail erforderlich</span>
</div>
</div>
</aside>
</div>
</section>