## Summary - introduce a shared enterprise-detail composition layer for Filament detail pages - migrate BackupSet, BaselineSnapshot, EntraGroup, and OperationRun detail screens to the shared summary-first layout - add regression and unit coverage for section hierarchy, related context, degraded states, and duplicate fact/badge presentation ## Scope - adds shared support classes under `app/Support/Ui/EnterpriseDetail` - adds shared enterprise detail Blade partials under `resources/views/filament/infolists/entries/enterprise-detail` - updates touched Filament resources/pages to use the shared detail shell - includes Spec 133 artifacts under `specs/133-detail-page-template` ## Notes - branch: `133-detail-page-template` - base: `dev` - commit: `fd294c7` Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #162
34 lines
1.4 KiB
PHP
34 lines
1.4 KiB
PHP
@php
|
|
$section = $section ?? [];
|
|
$section = is_array($section) ? $section : [];
|
|
|
|
$view = is_string($section['view'] ?? null) && trim($section['view']) !== '' ? trim($section['view']) : null;
|
|
$entries = is_array($section['entries'] ?? null) ? $section['entries'] : [];
|
|
$emptyState = is_array($section['emptyState'] ?? null) ? $section['emptyState'] : null;
|
|
@endphp
|
|
|
|
<x-filament::section
|
|
:heading="$section['title'] ?? 'Technical detail'"
|
|
:description="$section['description'] ?? 'Technical metadata stays available here without taking over the main reading path.'"
|
|
:collapsible="(bool) ($section['collapsible'] ?? true)"
|
|
:collapsed="(bool) ($section['collapsed'] ?? true)"
|
|
>
|
|
@if ($entries !== [])
|
|
@include('filament.infolists.entries.enterprise-detail.section-items', ['items' => $entries])
|
|
@endif
|
|
|
|
@if ($view !== null)
|
|
@if ($entries !== [])
|
|
<div class="mt-4">
|
|
@include($view, is_array($section['viewData'] ?? null) ? $section['viewData'] : [])
|
|
</div>
|
|
@else
|
|
@include($view, is_array($section['viewData'] ?? null) ? $section['viewData'] : [])
|
|
@endif
|
|
@elseif ($emptyState !== null)
|
|
<div @class(['mt-4' => $entries !== []])>
|
|
@include('filament.infolists.entries.enterprise-detail.empty-state', ['state' => $emptyState])
|
|
</div>
|
|
@endif
|
|
</x-filament::section>
|