Responsive-Härtung: Seiten-Header, Kontextleiste, Stat-Cards

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-06-12 14:08:08 +00:00
parent bda755fcf8
commit 036a53499f
55 changed files with 128 additions and 57 deletions

View file

@ -5,6 +5,32 @@
--- ---
## 2026-06-12 · Responsive-Härtung (Block 3, Punkt 1) ✅
- **Was**: Systemische Responsive-Fehler behoben (Screenshots in
`dev/frontend/responsive/`): (1) Das starre Inline-Grid
`style="grid-template-columns:1fr auto"` der Seiten-Header (48 Seiten)
konnte nie umbrechen — die Aktions-Spalte quetschte die Titel-Spalte
(Buchstaben-Umbrüche im Firmennamen, Buttons liefen aus der Box).
Ersetzt durch die neue CSS-Klasse `.page-header` (hub-components.css):
unterhalb lg stapeln Titel und Aktionen, Aktions-Zeilen bekommen
flex-wrap. (2) Firmenkontext-Leiste im App-Layout stapelt jetzt erst
ab lg nebeneinander (vorher sm → Überlappung von „Firmenkontext"/
„Aktive Firma" zwischen 6401024px). (3) Stat-Cards: Label/Meta-Zeile
mit flex-wrap (keine Kollision mehr auf schmalen Karten), `.stat-num`
mit `overflow-wrap:anywhere` + 26px unter 480px (Text-Werte wie
„Businessportal24" sprengen die Karte nicht mehr). (4) KPI-Grids, die
schon ab sm auf 4 Spalten gingen (Customer-Dashboard, User-Show,
PM-Index), erst ab xl vierspaltig.
- **Dateien**: `resources/css/shared/hub-components.css` (.page-header,
.stat-num), `resources/views/components/portal/stat-card.blade.php`,
`resources/views/components/layouts/app.blade.php`, 48 Seiten-Views
(Header-Klasse per sed), 3 KPI-Grids.
- **Build/Test**: `npm run build` ok (beide Bundles), Suite 532 passed /
4 skipped.
- **Offene Fragen**: Weitere Stellen aus Kevins Klick-Durchgang folgen
(Liste Block 3).
## 2026-06-12 · Admin-Zahlungsmodul (P8-Rest) · Zahlungen + Tarif-Verwaltung ✅ ## 2026-06-12 · Admin-Zahlungsmodul (P8-Rest) · Zahlungen + Tarif-Verwaltung ✅
- **Was**: Den Phase-8-Platzhalter `/admin/payments` durch das echte - **Was**: Den Phase-8-Platzhalter `/admin/payments` durch das echte

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

View file

@ -0,0 +1,7 @@
1. Pressemitteilungen anlegen ohne Firma hier würde ich das Create Formular nicht aufrufen lassen, wenn keine Firma existiert, sondern es muss eine Meldung erscheinen, dass ohne eine Firma keine Pressemitteilung angelegt werden kann.. Hintergrund öffnet man. Eine neue Pressemitteilung kann man keine Firma angeben und kann auch nicht speichern man muss wieder zurückspringen eine Firma anlegen und dann kann man erst entsprechend ein Presse Beitrag erstellen.
2. https://pressekonto.test/admin/me/profile die Darstellung ist noch nicht wirklich sauber hier kann noch etwas mehr Struktur rein. Grundsätzlich würde ich ab sofort Rechnungsadresse als Pflicht machen, wenn ein Paket gebucht wird und diese Rechnungsdaten gleich mit übergeben. Profil Einstellungen. Hier gibt es auch schon so etwas wie Anrede Vorname Telefon Risse etc. dieses doppelt sich mit der Rechnungsadresse zumindest in Teilen, denn die Rechnungsadresse ist technisch eigentlich gar nicht richtig vollständig hier viel zum Beispiel Firmenname Vorname Nachname Anrede.
3. Validierung der Rechnungsadresse gebe ich etwas ein und drücke ich auf. Absenden bekomme ich die Fehlermeldung zweimal einmal direkt unter dem Feld und einmal unten.
4. Umsatzsteuer ID. Ich würde hier gerne schon mal eine Validierung der Umsatzsteuer ID haben, ob diese gültig ist oder macht das an dieser Stelle gar keinen Sinn, weil Strip das komplett übernimmt? Ich glaube es wär aber gut, wenn Firmen aus EU Land hier schon eine Steuernummer hinterlegen können und diese zumindest schon einmal während der Eingabe validiert wird, ob diese richtig ist. Diese kann dann ja Stripe übergeben werden.

View file

@ -54,6 +54,33 @@
border-bottom-color: rgba(255, 255, 255, 0.1); border-bottom-color: rgba(255, 255, 255, 0.1);
} }
/* ============================================================
* Page-Header (Titel links, Aktionen rechts)
*
* Ersetzt das frühere Inline-Style `grid-template-columns:1fr auto`:
* Das starre Zwei-Spalten-Grid konnte auf schmalen Screens nicht
* umbrechen die Aktions-Spalte (auto = Inhaltsbreite) quetschte
* die Titel-Spalte zusammen (Buchstaben-Umbrüche im Titel, Buttons
* liefen aus der Box). Unterhalb von lg stapeln die Bereiche.
* ============================================================ */
.page-header {
display: grid;
align-items: end;
gap: 20px;
}
@media (min-width: 1024px) {
.page-header {
grid-template-columns: 1fr auto;
gap: 32px;
}
}
/* Aktions-Zeilen (Buttons rechts) dürfen auf schmalen Screens
umbrechen, statt aus dem Header zu laufen. */
.page-header > .flex {
flex-wrap: wrap;
}
/* ============================================================ /* ============================================================
* Stat-Cards (KPI-Karten mit farbigem Strip links) * Stat-Cards (KPI-Karten mit farbigem Strip links)
* ============================================================ */ * ============================================================ */
@ -117,8 +144,15 @@
font-weight: 600; font-weight: 600;
color: var(--color-ink); color: var(--color-ink);
letter-spacing: -0.5px; letter-spacing: -0.5px;
line-height: 1; line-height: 1.05;
margin-top: 14px; margin-top: 14px;
/* Text-Werte (z. B. Portal-Name) dürfen die Karte nie sprengen. */
overflow-wrap: anywhere;
}
@media (max-width: 480px) {
.stat-num {
font-size: 26px;
}
} }
.stat-card.is-ok .stat-num { .stat-card.is-ok .stat-num {
color: var(--color-ok); color: var(--color-ok);

View file

@ -2,7 +2,7 @@
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -9,9 +9,11 @@
{{-- Hub-Stil-Banner: Hub-Soft-Hintergrund, Hub-Blau-Badge, {{-- Hub-Stil-Banner: Hub-Soft-Hintergrund, Hub-Blau-Badge,
dezente Buchpapier-Rule. Ersetzt das Zinc-Starter-Kit-Card. --}} dezente Buchpapier-Rule. Ersetzt das Zinc-Starter-Kit-Card. --}}
<div class="mb-6 rounded-md border border-hub-soft-2 bg-hub-soft/50 px-4 py-3"> <div class="mb-6 rounded-md border border-hub-soft-2 bg-hub-soft/50 px-4 py-3">
<div class="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"> {{-- Erst ab lg nebeneinander: zwischen sm und lg reichte die
Breite nicht für Badges + Switcher, Inhalte überlappten. --}}
<div class="flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-2.5"> <div class="flex flex-wrap items-center gap-2.5">
<span class="inline-flex items-center gap-1.5 px-2 py-0.5 rounded-full bg-hub-soft text-hub text-[10.5px] font-bold tracking-[0.10em] uppercase"> <span class="inline-flex items-center gap-1.5 px-2 py-0.5 rounded-full bg-hub-soft text-hub text-[10.5px] font-bold tracking-[0.10em] uppercase">
<span class="w-1.5 h-1.5 rounded-full bg-hub"></span> <span class="w-1.5 h-1.5 rounded-full bg-hub"></span>
{{ __('User Backend') }} {{ __('User Backend') }}
@ -25,7 +27,7 @@
</h2> </h2>
</div> </div>
<div class="w-full sm:w-auto"> <div class="w-full lg:w-auto">
<livewire:customer.company-switcher /> <livewire:customer.company-switcher />
</div> </div>
</div> </div>

View file

@ -21,8 +21,10 @@
<article {{ $attributes->class(['stat-card', "is-{$variant}"]) }}> <article {{ $attributes->class(['stat-card', "is-{$variant}"]) }}>
<span class="stat-strip"></span> <span class="stat-strip"></span>
<div class="flex items-baseline justify-between gap-3"> {{-- flex-wrap: auf schmalen Karten rutscht das Meta unter das Label,
<div class="stat-label">{{ $label }}</div> statt mit ihm zu kollidieren --}}
<div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-0.5">
<div class="stat-label min-w-0">{{ $label }}</div>
@isset($meta) @isset($meta)
<span class="stat-meta">{{ $meta }}</span> <span class="stat-meta">{{ $meta }}</span>

View file

@ -108,7 +108,7 @@ new #[Layout('components.layouts.app'), Title('Kategorie anlegen')] class extend
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -174,7 +174,7 @@ new #[Layout('components.layouts.app'), Title('Kategorie bearbeiten')] class ext
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -143,7 +143,7 @@ new #[Layout('components.layouts.app'), Title('Kategorien')] class extends Compo
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -119,7 +119,7 @@ new #[Layout('components.layouts.app'), Title('Neue Firma')] class extends Compo
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -197,7 +197,7 @@ new #[Layout('components.layouts.app'), Title('Firma bearbeiten')] class extends
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -298,7 +298,7 @@ new #[Layout('components.layouts.app'), Title('Firmen')] class extends Component
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -214,7 +214,7 @@ new #[Layout('components.layouts.app'), Title('Firma anzeigen')] class extends C
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
@php($logoUrl = $company->logoUrl()) @php($logoUrl = $company->logoUrl())
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -145,7 +145,7 @@ new #[Layout('components.layouts.app'), Title('Kontakt anlegen')] class extends
<form wire:submit="save" class="space-y-8"> <form wire:submit="save" class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -181,7 +181,7 @@ new #[Layout('components.layouts.app'), Title('Kontakt bearbeiten')] class exten
<div class="space-y-8"> <div class="space-y-8">
<form wire:submit="save" class="space-y-8"> <form wire:submit="save" class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -393,7 +393,7 @@ new #[Layout('components.layouts.app'), Title('Kontakte')] class extends Compone
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -14,7 +14,7 @@ new #[Layout('components.layouts.app'), Title('Gutscheine')] class extends Compo
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -77,7 +77,7 @@ new #[Layout('components.layouts.app'), Title('Footer-Code anlegen')] class exte
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -108,7 +108,7 @@ new #[Layout('components.layouts.app'), Title('Footer-Code bearbeiten')] class e
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -78,7 +78,7 @@ new #[Layout('components.layouts.app'), Title('Footer-Codes')] class extends Com
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -122,7 +122,7 @@ new #[Layout('components.layouts.app'), Title('Legacy Rechnungen')] class extend
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -88,7 +88,7 @@ new #[Layout('components.layouts.app'), Title('Newsletter Sync')] class extends
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -102,7 +102,7 @@ new #[Layout('components.layouts.app'), Title('Zahlungen')] class extends Compon
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -114,7 +114,7 @@ new #[Layout('components.layouts.app'), Title('Tarife & Pakete')] class extends
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -52,7 +52,7 @@ new #[Layout('components.layouts.app'), Title('Neue Voreinstellung')] class exte
<form wire:submit="save" class="space-y-8"> <form wire:submit="save" class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -73,7 +73,7 @@ new #[Layout('components.layouts.app'), Title('Voreinstellung bearbeiten')] clas
<form wire:submit="save" class="space-y-8"> <form wire:submit="save" class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -78,7 +78,7 @@ new #[Layout('components.layouts.app'), Title('Voreinstellungen')] class extends
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -498,7 +498,7 @@ new #[Layout('components.layouts.app'), Title('Neue Pressemitteilung')] class ex
<div class="space-y-8 pr-editor-shell" x-data="{ tagInput: '' }"> <div class="space-y-8 pr-editor-shell" x-data="{ tagInput: '' }">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -704,7 +704,7 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilung bearbeiten')] cl
{{-- Flash-Banner ersetzt durch <flux:toast /> im Layout. --}} {{-- Flash-Banner ersetzt durch <flux:toast /> im Layout. --}}
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -392,7 +392,7 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilungen')] class exten
{{-- Flash-Banner ersetzt durch <flux:toast /> im Layout. --}} {{-- Flash-Banner ersetzt durch <flux:toast /> im Layout. --}}
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>
@ -414,7 +414,7 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilungen')] class exten
</header> </header>
{{-- ============== KPI-Reihe ============== --}} {{-- ============== KPI-Reihe ============== --}}
<section class="grid gap-4 grid-cols-2 sm:grid-cols-4"> <section class="grid gap-4 grid-cols-2 xl:grid-cols-4">
<x-portal.stat-card variant="primary" :label="__('Gesamt')" :value="number_format($stats['total'])"> <x-portal.stat-card variant="primary" :label="__('Gesamt')" :value="number_format($stats['total'])">
<x-slot:meta>{{ now()->format('Y') }}</x-slot:meta> <x-slot:meta>{{ now()->format('Y') }}</x-slot:meta>
<x-slot:trend>{{ __('über beide Portale') }}</x-slot:trend> <x-slot:trend>{{ __('über beide Portale') }}</x-slot:trend>

View file

@ -132,7 +132,7 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilung')] class extends
{{-- Flash-Banner ersetzt durch <flux:toast /> im Layout. --}} {{-- Flash-Banner ersetzt durch <flux:toast /> im Layout. --}}
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -53,7 +53,7 @@ new #[Layout('components.layouts.app'), Title('Performance Reports')] class exte
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -77,7 +77,7 @@ new #[Layout('components.layouts.app'), Title('Neue Rolle')] class extends Compo
<form wire:submit="save" class="space-y-8"> <form wire:submit="save" class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -99,7 +99,7 @@ new #[Layout('components.layouts.app'), Title('Rolle bearbeiten')] class extends
<form wire:submit="save" class="space-y-8"> <form wire:submit="save" class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -20,7 +20,7 @@ new #[Layout('components.layouts.app'), Title('Rollen & Rechte')] class extends
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -315,7 +315,7 @@ new #[Layout('components.layouts.app'), Title('Benutzer')] class extends Compone
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -231,7 +231,7 @@ new #[Layout('components.layouts.app'), Title('Benutzer anlegen')] class extends
<form wire:submit="save" class="space-y-8"> <form wire:submit="save" class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -717,7 +717,7 @@ new #[Layout('components.layouts.app'), Title('Benutzer bearbeiten')] class exte
<form wire:submit="save" class="space-y-8"> <form wire:submit="save" class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>

View file

@ -73,7 +73,7 @@ new #[Layout('components.layouts.app'), Title('Benutzer anzeigen')] class extend
</article> </article>
@else @else
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>
@ -102,7 +102,7 @@ new #[Layout('components.layouts.app'), Title('Benutzer anzeigen')] class extend
</header> </header>
{{-- ============== KPI-Reihe ============== --}} {{-- ============== KPI-Reihe ============== --}}
<section class="grid grid-cols-1 gap-4 sm:grid-cols-4"> <section class="grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4">
<x-portal.stat-card variant="muted" :label="__('Portal')" :value="$user->portal?->label() ?? '-'"> <x-portal.stat-card variant="muted" :label="__('Portal')" :value="$user->portal?->label() ?? '-'">
<x-slot:meta>{{ __('Zuordnung') }}</x-slot:meta> <x-slot:meta>{{ __('Zuordnung') }}</x-slot:meta>
</x-portal.stat-card> </x-portal.stat-card>

View file

@ -105,7 +105,7 @@ new #[Layout('components.layouts.app'), Title('Buchungen & Add-ons')] class exte
@endif @endif
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('User Backend') }}</span> <span class="badge hub dot">{{ __('User Backend') }}</span>

View file

@ -202,7 +202,7 @@ new #[Layout('components.layouts.app'), Title('Mein Dashboard')] class extends C
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('User Backend') }}</span> <span class="badge hub dot">{{ __('User Backend') }}</span>
@ -237,7 +237,7 @@ new #[Layout('components.layouts.app'), Title('Mein Dashboard')] class extends C
</header> </header>
{{-- ============== STAT-CARDS KPI-Reihe ============== --}} {{-- ============== STAT-CARDS KPI-Reihe ============== --}}
<section class="grid grid-cols-2 gap-4 sm:grid-cols-4"> <section class="grid grid-cols-2 gap-4 xl:grid-cols-4">
<x-portal.stat-card variant="primary" :label="__('Gesamt')" :value="$stats['total']"> <x-portal.stat-card variant="primary" :label="__('Gesamt')" :value="$stats['total']">
<x-slot:meta>{{ now()->format('Y') }}</x-slot:meta> <x-slot:meta>{{ now()->format('Y') }}</x-slot:meta>
<x-slot:trend> <x-slot:trend>

View file

@ -60,7 +60,7 @@ new #[Layout('components.layouts.app'), Title('Rechnungen')] class extends Compo
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('User Backend') }}</span> <span class="badge hub dot">{{ __('User Backend') }}</span>

View file

@ -121,7 +121,7 @@ new #[Layout('components.layouts.app'), Title('Neue Firma anlegen')] class exten
<div class="space-y-6"> <div class="space-y-6">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('User Backend') }}</span> <span class="badge hub dot">{{ __('User Backend') }}</span>

View file

@ -416,7 +416,7 @@ new #[Layout('components.layouts.app'), Title('Meine Firmen')] class extends Com
<div class="space-y-6"> <div class="space-y-6">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('User Backend') }}</span> <span class="badge hub dot">{{ __('User Backend') }}</span>

View file

@ -290,7 +290,7 @@ new #[Layout('components.layouts.app'), Title('Firma')] class extends Component
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('User Backend') }}</span> <span class="badge hub dot">{{ __('User Backend') }}</span>

View file

@ -689,7 +689,7 @@ new #[Layout('components.layouts.app'), Title('Neue Pressemitteilung')] class ex
<div class="space-y-8 pr-editor-shell" x-data="{ tagInput: '' }"> <div class="space-y-8 pr-editor-shell" x-data="{ tagInput: '' }">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('User Backend') }}</span> <span class="badge hub dot">{{ __('User Backend') }}</span>

View file

@ -674,7 +674,7 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilung bearbeiten')] cl
<div class="space-y-8 pr-editor-shell" x-data="{ tagInput: '' }"> <div class="space-y-8 pr-editor-shell" x-data="{ tagInput: '' }">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('User Backend') }}</span> <span class="badge hub dot">{{ __('User Backend') }}</span>

View file

@ -175,7 +175,7 @@ new #[Layout('components.layouts.app'), Title('Meine Pressemitteilungen')] class
{{-- Flash-Banner ersetzt durch <flux:toast /> im Layout. --}} {{-- Flash-Banner ersetzt durch <flux:toast /> im Layout. --}}
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('User Backend') }}</span> <span class="badge hub dot">{{ __('User Backend') }}</span>

View file

@ -152,7 +152,7 @@ new #[Layout('components.layouts.app'), Title('Pressemitteilung')] class extends
{{-- Flash-Banner ersetzt durch <flux:toast /> im Layout. --}} {{-- Flash-Banner ersetzt durch <flux:toast /> im Layout. --}}
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('User Backend') }}</span> <span class="badge hub dot">{{ __('User Backend') }}</span>

View file

@ -189,7 +189,7 @@ new #[Layout('components.layouts.app'), Title('Mein Profil')] class extends Comp
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('User Backend') }}</span> <span class="badge hub dot">{{ __('User Backend') }}</span>

View file

@ -140,7 +140,7 @@ new #[Layout('components.layouts.app'), Title('Konto-Sicherheit')] class extends
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('User Backend') }}</span> <span class="badge hub dot">{{ __('User Backend') }}</span>

View file

@ -87,7 +87,7 @@ new #[Layout('components.layouts.app'), Title('API-Tokens')] class extends Compo
<div class="space-y-8"> <div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}} {{-- ============== PAGE HEADER ============== --}}
<header class="grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap"> <div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('User Backend') }}</span> <span class="badge hub dot">{{ __('User Backend') }}</span>

View file

@ -1,5 +1,5 @@
{{-- Hub-style settings page header (used by all /settings/* pages) --}} {{-- Hub-style settings page header (used by all /settings/* pages) --}}
<header class="mb-8 grid items-end gap-8" style="grid-template-columns:1fr auto;"> <header class="page-header mb-8">
<div class="min-w-0"> <div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap"> <div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span> <span class="badge hub dot">{{ __('Admin Backend') }}</span>