5.4 (Teil 6): page-header in payments/invoices/legal/coupons/reports/newsletter

Component minimal-additiv erweitert (Defaults unveraendert):
- size=sm (28px) fuer legal-requests/show
- description-width=720px fuer breite Fliesstexte

Umgestellt (letzter grosser Batch):
- payments/index, payments/plans (720px, Aktionen)
- invoices/index, coupons/index (720px, Badge via :meta, keine Aktionen)
- legal-requests/index (Standard), legal-requests/show (sm, Status-Badge)
- reports/slow-requests (Logdatei-Zaehler-Badge als Aktion)
- newsletter/sync (Sync-Status via :meta, Dry-Run/Test-Sync-Buttons)

CSS-Hash unveraendert -> keine neuen Klassen. 74 Tests gruen.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-01 10:36:33 +00:00
parent 27a77bfc50
commit feda8be4d3
9 changed files with 97 additions and 136 deletions

View file

@ -127,25 +127,19 @@ new #[Layout('components.layouts.app'), Title('Tarife & Pakete')] class extends
<div class="space-y-8">
{{-- ============== PAGE HEADER ============== --}}
<header class="page-header">
<div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-wrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span>
<span class="eyebrow muted">{{ __('Administration · Finanzen') }}</span>
</div>
<h1 class="text-[30px] font-bold tracking-[-0.6px] leading-[1.15] m-0 text-[color:var(--color-ink)]">
{{ __('Tarife & Pakete') }}
</h1>
<p class="text-[13px] leading-[1.55] mt-2 m-0 max-w-[720px] text-[color:var(--color-ink-2)]">
{{ __('Preise, Kontingente und Limits der Tarife pflegen. Änderungen erscheinen sofort auf der Buchungs-Seite und werden direkt nach Stripe synchronisiert.') }}
</p>
</div>
<div class="flex items-center gap-2">
<x-portal.page-header
:badge="__('Admin Backend')"
:eyebrow="__('Administration · Finanzen')"
:title="__('Tarife & Pakete')"
:description="__('Preise, Kontingente und Limits der Tarife pflegen. Änderungen erscheinen sofort auf der Buchungs-Seite und werden direkt nach Stripe synchronisiert.')"
description-width="720px"
>
<x-slot:actions>
<flux:button size="sm" variant="filled" icon="credit-card" :href="route('admin.payments.index')" wire:navigate>
{{ __('Zahlungen') }}
</flux:button>
</div>
</header>
</x-slot:actions>
</x-portal.page-header>
@if ($savedMessage)
<div class="px-4 py-3 rounded-[5px] border text-[12.5px] flex items-start gap-3