5.5: <x-portal.alert> + 6 Flash-Bloecke umgestellt

Erste 5.5-Component: buendelt den kopierten session()-Flash-Alert (Icon +
Farbschema) mit variant=success|error; Nachricht als Slot. Erzeugt
identisches Markup.

Umgestellt: categories/create (success), categories/edit (success+error),
footer-codes/index (success+error), presets/index (success).

Bewusst NICHT umgestellt: companies/show (abweichendes, icon-loses Design
mit zusaetzlicher info-Variante und anderen Farbtokens) — bleibt bespoke.

Render-Smoke geprueft, alle Views kompilieren, 23 Tests gruen.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-02 08:39:44 +00:00
parent 505852f29e
commit 587d1fd312
5 changed files with 30 additions and 30 deletions

View file

@ -0,0 +1,24 @@
@props([
/** Farb-/Icon-Variante: success (grün, check) | error (rot, Warnzeichen) */
'variant' => 'success',
])
@php
$variant = in_array($variant, ['success', 'error'], true) ? $variant : 'success';
@endphp
{{--
Portal-Flash-Meldung. Ersetzt den mehrfach kopierten session()-Alert-Block.
Nachricht als Slot: <x-portal.alert variant="success">{{ session('success') }}</x-portal.alert>
--}}
@if ($variant === 'error')
<div class="px-4 py-3 rounded-[5px] border text-[12.5px] flex items-start gap-3 bg-[color:var(--color-err-soft)] border-[color:var(--color-err)]/30 text-[color:var(--color-ink-2)]">
<flux:icon.exclamation-triangle class="size-[16px] flex-shrink-0 mt-0.5 text-[color:var(--color-err)]" />
<div class="flex-1">{{ $slot }}</div>
</div>
@else
<div class="px-4 py-3 rounded-[5px] border text-[12.5px] flex items-center gap-2 bg-[color:var(--color-ok-soft)] border-[color:var(--color-ok)]/30 text-[color:var(--color-gain-deep)]">
<flux:icon.check-circle class="size-[16px] flex-shrink-0" />
{{ $slot }}
</div>
@endif

View file

@ -122,11 +122,7 @@ new #[Layout('components.layouts.app'), Title('Kategorie anlegen')] class extend
</x-portal.page-header>
@if (session('success'))
<div class="px-4 py-3 rounded-[5px] border text-[12.5px] flex items-center gap-2
bg-[color:var(--color-ok-soft)] border-[color:var(--color-ok)]/30 text-[color:var(--color-gain-deep)]">
<flux:icon.check-circle class="size-[16px] flex-shrink-0" />
{{ session('success') }}
</div>
<x-portal.alert variant="success">{{ session('success') }}</x-portal.alert>
@endif
<form wire:submit="save" class="space-y-6">

View file

@ -194,18 +194,10 @@ new #[Layout('components.layouts.app'), Title('Kategorie bearbeiten')] class ext
</x-portal.page-header>
@if (session('success'))
<div class="px-4 py-3 rounded-[5px] border text-[12.5px] flex items-center gap-2
bg-[color:var(--color-ok-soft)] border-[color:var(--color-ok)]/30 text-[color:var(--color-gain-deep)]">
<flux:icon.check-circle class="size-[16px] flex-shrink-0" />
{{ session('success') }}
</div>
<x-portal.alert variant="success">{{ session('success') }}</x-portal.alert>
@endif
@if (session('error'))
<div class="px-4 py-3 rounded-[5px] border text-[12.5px] flex items-start gap-3
bg-[color:var(--color-err-soft)] border-[color:var(--color-err)]/30 text-[color:var(--color-ink-2)]">
<flux:icon.exclamation-triangle class="size-[16px] flex-shrink-0 mt-0.5 text-[color:var(--color-err)]" />
<div class="flex-1">{{ session('error') }}</div>
</div>
<x-portal.alert variant="error">{{ session('error') }}</x-portal.alert>
@endif
<form wire:submit="save" class="space-y-6">

View file

@ -92,18 +92,10 @@ new #[Layout('components.layouts.app'), Title('Footer-Codes')] class extends Com
</x-portal.page-header>
@if (session('success'))
<div class="px-4 py-3 rounded-[5px] border text-[12.5px] flex items-center gap-2
bg-[color:var(--color-ok-soft)] border-[color:var(--color-ok)]/30 text-[color:var(--color-gain-deep)]">
<flux:icon.check-circle class="size-[16px] flex-shrink-0" />
{{ session('success') }}
</div>
<x-portal.alert variant="success">{{ session('success') }}</x-portal.alert>
@endif
@if (session('error'))
<div class="px-4 py-3 rounded-[5px] border text-[12.5px] flex items-start gap-3
bg-[color:var(--color-err-soft)] border-[color:var(--color-err)]/30 text-[color:var(--color-ink-2)]">
<flux:icon.exclamation-triangle class="size-[16px] flex-shrink-0 mt-0.5 text-[color:var(--color-err)]" />
<div class="flex-1">{{ session('error') }}</div>
</div>
<x-portal.alert variant="error">{{ session('error') }}</x-portal.alert>
@endif
{{-- ============== KPI-Reihe ============== --}}

View file

@ -92,11 +92,7 @@ new #[Layout('components.layouts.app'), Title('Voreinstellungen')] class extends
</x-portal.page-header>
@if (session('success'))
<div class="px-4 py-3 rounded-[5px] border text-[12.5px] flex items-center gap-2
bg-[color:var(--color-ok-soft)] border-[color:var(--color-ok)]/30 text-[color:var(--color-gain-deep)]">
<flux:icon.check-circle class="size-[16px] flex-shrink-0" />
{{ session('success') }}
</div>
<x-portal.alert variant="success">{{ session('success') }}</x-portal.alert>
@endif
{{-- ============== FILTER-PANEL ============== --}}