From e8f60e9e1d060d85bf47906cd532f88705a806c5 Mon Sep 17 00:00:00 2001 From: Bob Molitor Date: Fri, 24 Oct 2025 14:49:59 +0200 Subject: [PATCH] add summary to transaction-review and a hove/selected status to the transactions --- .../livewire/transaction-review.blade.php | 80 +++++++++++++++++-- 1 file changed, 75 insertions(+), 5 deletions(-) diff --git a/resources/views/livewire/transaction-review.blade.php b/resources/views/livewire/transaction-review.blade.php index 56d29bd..8864078 100644 --- a/resources/views/livewire/transaction-review.blade.php +++ b/resources/views/livewire/transaction-review.blade.php @@ -191,6 +191,44 @@ new #[Layout('components.layouts.app')] class extends Component { Transaction::STATUS_FALSE_POSITIVE => 'Anomalie begründen, Dokumentation ergänzen und Alarm schließen.', Transaction::STATUS_CLEARED => 'Review-Ergebnis dokumentieren und Kontrollnachweis archivieren.', ]; + $statusSummaryPhrases = [ + Transaction::STATUS_TRUE_POSITIVE => [ + 'Verdachtsindikatoren bestätigen Treffer.', + 'Risikotreiber stehen weiter auf Rot.', + 'Sofortmaßnahmen priorisieren und dokumentieren.', + 'Ermittlungsteam unverzüglich koordinieren.', + 'Audit-Trail aktuell halten und teilen.', + ], + Transaction::STATUS_FALSE_POSITIVE => [ + 'Alarm widerlegt, Dokumentation abschließen.', + 'Risikoschwelle fällt unter interne Limits.', + 'Regelwerk für Fehlalarm analysieren.', + 'Stakeholder über Entwarnung informieren.', + 'Kontrollnachweis im Archiv sichern.', + ], + Transaction::STATUS_CLEARED => [ + 'Keine Auffälligkeiten, Vorgang freigegeben.', + 'Monitoringdaten bestätigen Referenzverhalten.', + 'Freigabe mit Vier-Augen-Prinzip dokumentieren.', + 'Compliance-Team über Abschluss informieren.', + 'Revisionsunterlagen vollständig archivieren.', + ], + ]; + $statusSummary = array_map( + static fn (array $phrases): string => $phrases[0] ?? 'Status gemäß aktuellem Prüfpfad.', + $statusSummaryPhrases + ); + $statusSummaryBanner = [ + Transaction::STATUS_TRUE_POSITIVE => [ + 'classes' => 'border border-rose-400/60 bg-gradient-to-r from-rose-500/20 via-rose-500/10 to-rose-400/20 text-rose-900 shadow-[0_30px_70px_-50px_rgba(244,63,94,0.75)] dark:border-rose-500/50 dark:from-rose-500/20 dark:via-rose-500/10 dark:to-rose-400/20 dark:text-rose-100', + ], + Transaction::STATUS_FALSE_POSITIVE => [ + 'classes' => 'border border-amber-400/60 bg-gradient-to-r from-amber-400/20 via-amber-400/10 to-amber-300/20 text-amber-900 shadow-[0_30px_70px_-50px_rgba(245,158,11,0.65)] dark:border-amber-400/50 dark:from-amber-400/20 dark:via-amber-400/10 dark:to-amber-300/20 dark:text-amber-100', + ], + Transaction::STATUS_CLEARED => [ + 'classes' => 'border border-emerald-400/60 bg-gradient-to-r from-emerald-400/20 via-emerald-400/10 to-emerald-300/20 text-emerald-900 shadow-[0_30px_70px_-50px_rgba(16,185,129,0.65)] dark:border-emerald-400/50 dark:from-emerald-400/20 dark:via-emerald-400/10 dark:to-emerald-300/20 dark:text-emerald-100', + ], + ]; $statusLegend = [ Transaction::STATUS_TRUE_POSITIVE => [ @@ -303,15 +341,22 @@ new #[Layout('components.layouts.app')] class extends Component { @forelse ($transactions as $transaction) @php $selectedState = $transaction->id === $this->selectedTransactionId; + $buttonClasses = [ + 'flex w-full flex-col gap-3 px-4 py-4 text-left transition duration-200 sm:grid sm:grid-cols-[1.6fr_1fr_0.7fr]', + 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-400/70', + ]; + + if ($selectedState) { + $buttonClasses[] = 'border-s-4 border-indigo-500/80 bg-indigo-500/10 shadow-lg shadow-indigo-500/20 ring-2 ring-indigo-400/70 ring-offset-2 ring-offset-white dark:bg-indigo-500/20 dark:ring-offset-zinc-900 scale-[1.01]'; + } else { + $buttonClasses[] = 'border-s-4 border-transparent hover:-translate-y-0.5 hover:border-indigo-400/70 hover:bg-zinc-50/70 hover:shadow-lg hover:shadow-zinc-900/20 dark:hover:bg-zinc-800/60'; + } @endphp