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:
parent
505852f29e
commit
587d1fd312
5 changed files with 30 additions and 30 deletions
24
resources/views/components/portal/alert.blade.php
Normal file
24
resources/views/components/portal/alert.blade.php
Normal 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
|
||||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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 ============== --}}
|
||||
|
|
|
|||
|
|
@ -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 ============== --}}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue