## Summary - add shared governance artifact truth presentation and badge taxonomy - integrate artifact-truth messaging across baseline, evidence, tenant review, review pack, and operation run surfaces - add focused regression coverage and spec artifacts for artifact truth semantics ## Testing - not run in this step Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #188
60 lines
3.8 KiB
PHP
60 lines
3.8 KiB
PHP
<x-filament-panels::page>
|
|
<div class="space-y-6">
|
|
@if ($rows === [])
|
|
<div class="rounded-xl border border-dashed border-gray-300 bg-white p-8 text-center shadow-sm">
|
|
<h2 class="text-lg font-semibold text-gray-950">No evidence snapshots in this scope</h2>
|
|
<p class="mt-2 text-sm text-gray-600">Adjust filters or create a tenant snapshot to populate the workspace overview.</p>
|
|
<div class="mt-4">
|
|
<a href="{{ route('admin.evidence.overview') }}" class="inline-flex items-center rounded-lg bg-gray-900 px-4 py-2 text-sm font-medium text-white">
|
|
Clear filters
|
|
</a>
|
|
</div>
|
|
</div>
|
|
@else
|
|
<div class="overflow-hidden rounded-xl border border-gray-200 bg-white shadow-sm">
|
|
<table class="min-w-full divide-y divide-gray-200 text-sm">
|
|
<thead class="bg-gray-50 text-left text-gray-600">
|
|
<tr>
|
|
<th class="px-4 py-3 font-medium">Tenant</th>
|
|
<th class="px-4 py-3 font-medium">Artifact truth</th>
|
|
<th class="px-4 py-3 font-medium">Freshness</th>
|
|
<th class="px-4 py-3 font-medium">Generated</th>
|
|
<th class="px-4 py-3 font-medium">Not collected yet</th>
|
|
<th class="px-4 py-3 font-medium">Refresh recommended</th>
|
|
<th class="px-4 py-3 font-medium">Next step</th>
|
|
<th class="px-4 py-3 font-medium">Action</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="divide-y divide-gray-100 bg-white text-gray-900">
|
|
@foreach ($rows as $row)
|
|
<tr>
|
|
<td class="px-4 py-3">{{ $row['tenant_name'] }}</td>
|
|
<td class="px-4 py-3">
|
|
<x-filament::badge :color="data_get($row, 'artifact_truth.color', 'gray')" :icon="data_get($row, 'artifact_truth.icon')" size="sm">
|
|
{{ data_get($row, 'artifact_truth.label', 'Unknown') }}
|
|
</x-filament::badge>
|
|
@if (is_string(data_get($row, 'artifact_truth.explanation')) && trim((string) data_get($row, 'artifact_truth.explanation')) !== '')
|
|
<div class="mt-1 text-xs text-gray-500">{{ data_get($row, 'artifact_truth.explanation') }}</div>
|
|
@endif
|
|
</td>
|
|
<td class="px-4 py-3">
|
|
<x-filament::badge :color="data_get($row, 'freshness.color', 'gray')" :icon="data_get($row, 'freshness.icon')" size="sm">
|
|
{{ data_get($row, 'freshness.label', 'Unknown') }}
|
|
</x-filament::badge>
|
|
</td>
|
|
<td class="px-4 py-3">{{ $row['generated_at'] ?? '—' }}</td>
|
|
<td class="px-4 py-3">{{ $row['missing_dimensions'] }}</td>
|
|
<td class="px-4 py-3">{{ $row['stale_dimensions'] }}</td>
|
|
<td class="px-4 py-3">{{ $row['next_step'] ?? 'No action needed' }}</td>
|
|
<td class="px-4 py-3">
|
|
<a href="{{ $row['view_url'] }}" class="text-primary-600 hover:text-primary-500">View tenant evidence</a>
|
|
</td>
|
|
</tr>
|
|
@endforeach
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</x-filament-panels::page>
|