presseportale/resources/views/components/web/hub/top-utility-bar.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

59 lines
2.9 KiB
PHP

@props([
'date' => null,
'siblingPortals' => [
['brand' => 'presseecho', 'url' => null],
['brand' => 'businessportal24', 'url' => null],
],
])
@php
$displayDate = $date ?? now()->locale('de')->isoFormat('dddd, D. MMMM YYYY');
$shortDate = now()->locale('de')->isoFormat('dd, D. MMM');
$defaultUrls = [
'presseecho' => config('domains.domain_presseecho_url'),
'businessportal24' => config('domains.domain_businessportal_url'),
];
@endphp
<div class="bg-hub-grad text-ink-on-dark-2 border-b border-black/40">
<div class="max-w-layout mx-auto px-4 sm:px-6 lg:px-8 flex flex-wrap items-center gap-x-3 gap-y-1.5 text-[11.5px] tracking-wide py-2 sm:py-0 sm:items-stretch">
<span class="flex items-center sm:pr-4 sm:py-2.5 sm:border-r sm:border-white/10 whitespace-nowrap">
<span class="hidden sm:inline">{{ $displayDate }}</span>
<span class="sm:hidden">{{ $shortDate }}</span>
</span>
<span class="flex items-center gap-2 sm:gap-2.5 sm:px-4 sm:py-2.5 min-w-0 text-white/70">
<svg width="13" height="13" viewBox="0 0 16 16" fill="none" class="opacity-65 shrink-0 hidden sm:block">
<rect x="2" y="2" width="5.5" height="5.5" stroke="currentColor" stroke-width="1.2" />
<rect x="8.5" y="2" width="5.5" height="5.5" stroke="currentColor" stroke-width="1.2" />
<rect x="2" y="8.5" width="12" height="5.5" stroke="currentColor" stroke-width="1.2" />
</svg>
<span class="hidden md:inline shrink-0">Publisher-Hub für</span>
<span class="flex items-center gap-1.5 sm:gap-2 min-w-0 flex-wrap">
@foreach ($siblingPortals as $index => $portal)
@php
$brandKey = $portal['brand'] ?? 'presseecho';
$portalUrl = $portal['url'] ?? ($defaultUrls[$brandKey] ?? '#');
@endphp
<a href="{{ $portalUrl }}" class="text-white font-semibold hover:underline">
<x-web.brand-mark :brand="$brandKey" variant="on-dark" :serif="false" />
</a>
@if (! $loop->last)
<span class="text-white/30">·</span>
@endif
@endforeach
</span>
</span>
<span class="flex-1 hidden sm:block"></span>
<span class="flex items-center gap-3 sm:gap-4 sm:py-2.5 whitespace-nowrap text-white/65 ml-auto sm:ml-0">
<a href="{{ route('faq', ['edition' => 'de']) }}" class="hover:text-white transition-colors">FAQ</a>
<a href="{{ route('hilfe', ['edition' => 'de']) }}" class="hover:text-white transition-colors">Hilfe</a>
<button type="button" x-data @click="$dispatch('open-contact-modal')" class="hover:text-white cursor-pointer">Kontakt</button>
</span>
</div>
</div>