Files
fotospiel-app/resources/views/filament/widgets/coolify-platform-health.blade.php

49 lines
2.9 KiB
PHP

<x-filament-widgets::widget>
<x-filament::section heading="Infra Status (Coolify)">
<div class="grid gap-4 md:grid-cols-2">
@forelse($services as $service)
<div class="rounded-2xl border border-slate-200/70 bg-white/80 p-4 shadow-sm dark:border-white/10 dark:bg-slate-900/60">
<div class="flex items-center justify-between">
<div>
<p class="text-sm font-semibold text-slate-600 dark:text-slate-200">{{ $service['label'] }}</p>
<p class="text-xs text-slate-500 dark:text-slate-400">{{ $service['service_id'] }}</p>
</div>
<span @class([
'rounded-full px-3 py-1 text-xs font-semibold',
'bg-emerald-100 text-emerald-800' => $service['status'] === 'running',
'bg-amber-100 text-amber-800' => $service['status'] === 'deploying',
'bg-rose-100 text-rose-800' => $service['status'] === 'unreachable' || $service['status'] === 'error',
'bg-slate-100 text-slate-600' => ! in_array($service['status'], ['running', 'deploying', 'unreachable', 'error']),
])>
{{ ucfirst($service['status']) }}
</span>
</div>
@if(isset($service['error']))
<p class="mt-3 text-xs text-rose-600 dark:text-rose-400">{{ $service['error'] }}</p>
@else
<dl class="mt-3 grid grid-cols-3 gap-2 text-xs">
<div>
<dt class="text-slate-500 dark:text-slate-400">CPU</dt>
<dd class="font-semibold text-slate-900 dark:text-white">{{ $service['cpu'] ?? '—' }}%</dd>
</div>
<div>
<dt class="text-slate-500 dark:text-slate-400">Memory</dt>
<dd class="font-semibold text-slate-900 dark:text-white">{{ $service['memory'] ?? '—' }}%</dd>
</div>
<div>
<dt class="text-slate-500 dark:text-slate-400">Last Deploy</dt>
<dd class="font-semibold text-slate-900 dark:text-white">
{{ $service['last_deploy'] ? \Illuminate\Support\Carbon::parse($service['last_deploy'])->diffForHumans() : '—' }}
</dd>
</div>
</dl>
@endif
</div>
@empty
<p class="text-sm text-slate-500 dark:text-slate-300">No Coolify services configured.</p>
@endforelse
</div>
</x-filament::section>
</x-filament-widgets::widget>