Den in allen vier PM-Editoren identischen, rein praesentationalen Pre-Submit-Checklisten-Block (~34 Zeilen je Datei) in eine Blade-Component ausgelagert, die $this->presubmitChecks als Prop nimmt. Render-Test ergaenzt. Bewusst konservativ: Nur dieser wire:model-freie, presentational Block wurde extrahiert. Die interaktiven Markup-Panels (Tag-Input, Publish- Schedule, Kontakt-/Firmen-Select) bleiben in den Editoren, da ihre wire:model-/Alpine-Bindungen ohne visuelle QA nicht risikofrei in Components zu ueberfuehren sind und die Tests gerendertes Markup nur begrenzt abdecken. Tests: volle Suite gruen (800 passed, 1 skipped). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
37 lines
1.4 KiB
PHP
37 lines
1.4 KiB
PHP
@props(['checks'])
|
|
|
|
@php
|
|
$okCount = collect($checks)->where('status', 'ok')->count();
|
|
$totalCount = count($checks);
|
|
@endphp
|
|
|
|
<div class="rounded-[4px] border border-[color:var(--color-bg-rule)] bg-[color:var(--color-bg-elev)] p-3 mb-3">
|
|
<div class="flex items-center justify-between mb-1">
|
|
<span class="eyebrow muted" style="font-size:9.5px;letter-spacing:0.16em;">
|
|
{{ __('Pre-Submit-Check') }}
|
|
</span>
|
|
<span class="text-[10.5px] font-mono font-semibold text-[color:var(--color-ok)]">
|
|
{{ $okCount }} / {{ $totalCount }} ok
|
|
</span>
|
|
</div>
|
|
|
|
@foreach ($checks as $check)
|
|
<div class="pr-check-row {{ $check['status'] }}">
|
|
<span class="ic">
|
|
@if ($check['status'] === 'ok')
|
|
<flux:icon name="check" variant="micro" class="size-3" />
|
|
@elseif ($check['status'] === 'warn')
|
|
<flux:icon name="exclamation-triangle" variant="micro" class="size-3" />
|
|
@else
|
|
<flux:icon name="x-mark" variant="micro" class="size-3" />
|
|
@endif
|
|
</span>
|
|
<span class="lbl">
|
|
{{ $check['label'] }}
|
|
@if (! empty($check['sub']))
|
|
<span class="sub">{{ $check['sub'] }}</span>
|
|
@endif
|
|
</span>
|
|
</div>
|
|
@endforeach
|
|
</div>
|