presseportale/resources/views/components/web/industry-spotlight.blade.php
Kevin Adametz dec524989b web: Responsive-/Mobile-Fixes fürs öffentliche Frontend
Behebt strukturelle Mobile-Bugs (320/390px) über presseecho,
businessportal24 und den pressekonto-Hub hinweg:

- Focus-/Kategorie-/Newsroom-Hero: Text im Flow (min-h + flex) statt
  fester Höhe, responsive Typo — Overlay überläuft nicht mehr nach oben.
- Quality-Summary: Grid stackt auf Mobile (behebt Seiten-Overflow).
- Hub: Utility-Bar mit Wrap, Header mit Mobile-Burger, Footer stackt,
  Architektur-Diagramm als gestapelte Mobile-Variante.
- Sticky-Header (Portal): fehlende .header-sticky-CSS ergänzt und Script
  mit Platzhalter, damit der Header beim Scrollen sichtbar bleibt.
- Header-Overflow bei 320px entschärft (Portal + Hub); Hub-Hero-H1
  verkleinert, damit die Wortmarke "businessportal24" umbricht.
- Mobile-Nav um Preise/FAQ/API ergänzt; Industry-Index-Dichte,
  Touch-Targets und Preise-Einzel-PM-Block für kleine Screens verbessert.
- Homepages/Shared: px-8 → px-4 sm:px-6 lg:px-8.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 09:33:49 +00:00

74 lines
3.7 KiB
PHP

@props([
'industry' => null,
'stats' => null,
'releases' => [],
])
@php
$releases = collect($releases);
$stats = collect($stats ?? []);
@endphp
@if ($industry && $releases->isNotEmpty())
<section class="max-w-layout mx-auto px-4 sm:px-6 lg: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">
{{ __('web.spotlight.title') }} <span class="text-brand">· {{ $industry }}</span>
</h2>
</header>
<hr class="rule-strong">
@if ($stats->isNotEmpty())
<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>
@endif
<div class="mt-6">
@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>{{ __('web.shared.minutes_short', ['minutes' => $release['minutes']]) }}</span>
@endif
</div>
</div>
</a>
@endforeach
</div>
</section>
@endif