TenantAtlas/resources/views/filament/widgets/dashboard/needs-attention.blade.php
ahmido 02e75e1cda feat: harden baseline compare summary trust surfaces (#196)
## Summary
- add a shared baseline compare summary assessment and assessor for compact trust propagation
- harden dashboard, landing, and banner baseline compare surfaces against false all-clear claims
- add focused Pest coverage for dashboard, landing, banner, reason translation, and canonical detail parity

## Validation
- vendor/bin/sail bin pint --dirty --format agent
- vendor/bin/sail artisan test --compact tests/Feature/Baselines/BaselineCompareSummaryAssessmentTest.php tests/Feature/Baselines/BaselineCompareExplanationFallbackTest.php tests/Feature/Filament/BaselineCompareNowWidgetTest.php tests/Feature/Filament/NeedsAttentionWidgetTest.php tests/Feature/Filament/BaselineCompareExplanationSurfaceTest.php tests/Feature/Filament/BaselineCompareLandingWhyNoFindingsTest.php tests/Feature/Filament/BaselineCompareCoverageBannerTest.php tests/Feature/Filament/BaselineCompareSummaryConsistencyTest.php tests/Feature/Filament/OperationRunBaselineTruthSurfaceTest.php tests/Feature/ReasonTranslation/ReasonTranslationExplanationTest.php

## Notes
- Livewire compliance: Filament v5 / Livewire v4 stack unchanged
- Provider registration: unchanged, Laravel 12 providers remain in bootstrap/providers.php
- Global search: no searchable resource behavior changed
- Destructive actions: none introduced by this change
- Assets: no new assets registered; existing deploy process remains unchanged

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #196
2026-03-27 00:19:53 +00:00

61 lines
2.8 KiB
PHP

<div
@if ($pollingInterval)
wire:poll.{{ $pollingInterval }}
@endif
>
<x-filament::section heading="Needs Attention">
@if (count($items) === 0)
<div class="flex flex-col gap-3">
<div class="text-sm text-gray-600 dark:text-gray-300">
Current dashboard signals look trustworthy.
</div>
<div class="flex flex-col gap-3">
@foreach ($healthyChecks as $check)
<div class="flex items-start gap-3 rounded-lg bg-gray-50 p-4 dark:bg-white/5">
<x-filament::icon
icon="heroicon-m-check-circle"
class="mt-0.5 h-5 w-5 text-success-600 dark:text-success-400"
/>
<div class="flex-1">
<div class="text-sm font-medium text-gray-950 dark:text-white">{{ $check['title'] }}</div>
<div class="mt-0.5 text-sm text-gray-600 dark:text-gray-300">{{ $check['body'] }}</div>
</div>
</div>
@endforeach
</div>
</div>
@else
<div class="flex flex-col gap-3">
@foreach ($items as $item)
<div class="rounded-lg bg-gray-50 p-4 dark:bg-white/5">
<div class="flex items-start justify-between gap-3">
<div class="min-w-0 flex-1">
<div class="text-sm font-semibold text-gray-950 dark:text-white">{{ $item['title'] }}</div>
<div class="mt-1 text-sm text-gray-600 dark:text-gray-300">{{ $item['body'] }}</div>
@if (filled($item['supportingMessage'] ?? null))
<div class="mt-1 text-sm text-gray-600 dark:text-gray-300">
{{ $item['supportingMessage'] }}
</div>
@endif
@if (filled($item['nextStep'] ?? null))
<div class="mt-2 text-xs font-medium uppercase tracking-wide text-gray-500 dark:text-gray-400">
{{ $item['nextStep'] }}
</div>
@endif
</div>
<x-filament::badge :color="$item['badgeColor']" size="sm">
{{ $item['badge'] }}
</x-filament::badge>
</div>
</div>
@endforeach
</div>
@endif
</x-filament::section>
</div>