97 lines
5.1 KiB
PHP
97 lines
5.1 KiB
PHP
@php
|
|
$preview = $getState() ?? [];
|
|
$foundationItems = collect($preview)->filter(function ($item) {
|
|
return is_array($item) && array_key_exists('decision', $item) && array_key_exists('sourceId', $item);
|
|
});
|
|
$policyItems = collect($preview)->reject(function ($item) {
|
|
return is_array($item) && array_key_exists('decision', $item) && array_key_exists('sourceId', $item);
|
|
});
|
|
@endphp
|
|
|
|
@if (empty($preview))
|
|
<p class="text-sm text-gray-600">No preview available.</p>
|
|
@else
|
|
<div class="space-y-4">
|
|
@if ($foundationItems->isNotEmpty())
|
|
<div class="space-y-2">
|
|
<div class="text-xs font-semibold uppercase tracking-wide text-gray-500">Foundations</div>
|
|
@foreach ($foundationItems as $item)
|
|
@php
|
|
$decision = $item['decision'] ?? 'mapped_existing';
|
|
$decisionColor = match ($decision) {
|
|
'created' => 'text-green-700 bg-green-100 border-green-200',
|
|
'created_copy' => 'text-amber-900 bg-amber-100 border-amber-200',
|
|
'mapped_existing' => 'text-blue-700 bg-blue-100 border-blue-200',
|
|
'failed' => 'text-red-700 bg-red-100 border-red-200',
|
|
'skipped' => 'text-amber-900 bg-amber-50 border-amber-200',
|
|
default => 'text-gray-700 bg-gray-100 border-gray-200',
|
|
};
|
|
@endphp
|
|
<div class="rounded border border-gray-200 bg-white p-3 shadow-sm">
|
|
<div class="flex items-center justify-between text-sm text-gray-800">
|
|
<span class="font-semibold">{{ $item['sourceName'] ?? $item['sourceId'] ?? 'Foundation' }}</span>
|
|
<span class="rounded border px-2 py-0.5 text-xs font-semibold uppercase tracking-wide {{ $decisionColor }}">
|
|
{{ $decision }}
|
|
</span>
|
|
</div>
|
|
<div class="mt-1 text-xs text-gray-600">
|
|
{{ $item['type'] ?? 'foundation' }}
|
|
</div>
|
|
@if (! empty($item['targetName']))
|
|
<div class="mt-1 text-xs text-gray-600">
|
|
Target: {{ $item['targetName'] }}
|
|
</div>
|
|
@endif
|
|
@if (! empty($item['reason']))
|
|
<div class="mt-2 rounded border border-amber-300 bg-amber-50 px-2 py-1 text-xs text-amber-800">
|
|
{{ $item['reason'] }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
@endforeach
|
|
</div>
|
|
@endif
|
|
|
|
@if ($policyItems->isNotEmpty())
|
|
<div class="space-y-2">
|
|
<div class="text-xs font-semibold uppercase tracking-wide text-gray-500">Policies</div>
|
|
@foreach ($policyItems as $item)
|
|
@php
|
|
$restoreMode = $item['restore_mode'] ?? null;
|
|
@endphp
|
|
<div class="rounded border border-gray-200 bg-white p-3 shadow-sm">
|
|
<div class="flex items-center justify-between text-sm text-gray-800">
|
|
<span class="font-semibold">{{ $item['policy_identifier'] ?? 'Policy' }}</span>
|
|
<div class="flex items-center gap-2">
|
|
@if ($restoreMode === 'preview-only')
|
|
<span class="rounded border border-amber-200 bg-amber-50 px-2 py-0.5 text-xs font-semibold uppercase tracking-wide text-amber-900">
|
|
preview-only
|
|
</span>
|
|
@endif
|
|
<span class="rounded bg-gray-100 px-2 py-0.5 text-xs uppercase tracking-wide text-gray-700">
|
|
{{ $item['action'] ?? 'action' }}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="mt-1 text-xs text-gray-600">
|
|
{{ $item['policy_type'] ?? 'type' }} • {{ $item['platform'] ?? 'platform' }}
|
|
</div>
|
|
|
|
@if (! empty($item['validation_warning']))
|
|
<div class="mt-2 rounded border border-amber-300 bg-amber-50 px-2 py-1 text-xs text-amber-800">
|
|
{{ $item['validation_warning'] }}
|
|
</div>
|
|
@endif
|
|
|
|
@if (! empty($item['compliance_action_warning']))
|
|
<div class="mt-2 rounded border border-amber-300 bg-amber-50 px-2 py-1 text-xs text-amber-800">
|
|
{{ $item['compliance_action_warning'] }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
@endforeach
|
|
</div>
|
|
@endif
|
|
</div>
|
|
@endif
|