Files
2026-07-24 15:01:48 +01:00

73 lines
4.4 KiB
PHP

<x-layouts.app :title="__('Dashboard')">
<div class="flex h-full w-full flex-1 flex-col gap-6">
<div>
<h1 class="text-2xl font-semibold text-zinc-950 dark:text-zinc-100">Dashboard</h1>
<p class="mt-1 text-sm text-zinc-600 dark:text-zinc-400">Platform health and recent activity.</p>
</div>
<div class="grid gap-4 sm:grid-cols-2 xl:grid-cols-4">
@foreach([
['Users', $userCount, 'users'],
['Roles', $roleCount, 'shield-check'],
['Media', $mediaCount, 'photo'],
['Audit events', $auditCount, 'clipboard-document-list'],
] as [$label, $count, $icon])
<div class="rounded-xl border border-zinc-200/90 bg-white/90 p-5 shadow-sm backdrop-blur dark:border-zinc-700/90 dark:bg-zinc-900/90">
<flux:icon :name="$icon" class="size-5 text-zinc-500" />
<div class="mt-4 text-3xl font-semibold text-zinc-950 dark:text-zinc-100">{{ $count }}</div>
<div class="text-sm text-zinc-500">{{ $label }}</div>
</div>
@endforeach
</div>
<div class="grid flex-1 items-start gap-6 xl:grid-cols-2">
<section class="overflow-hidden rounded-xl border border-zinc-200/90 bg-white/90 shadow-sm backdrop-blur dark:border-zinc-700/90 dark:bg-zinc-900/90">
<div class="border-b border-zinc-200 px-5 py-4 font-semibold text-zinc-950 dark:border-zinc-700 dark:text-zinc-100">
Modules
</div>
<div class="divide-y divide-zinc-200 dark:divide-zinc-800">
@forelse($modules as $module)
<div class="flex items-center justify-between px-5 py-3">
<div>
<div class="font-medium text-zinc-950 dark:text-zinc-100">{{ $module['name'] }}</div>
<div class="text-xs text-zinc-500">v{{ $module['version'] }}</div>
</div>
<span class="rounded-full px-2.5 py-1 text-xs {{ $module['enabled'] ? 'bg-emerald-100 text-emerald-800 dark:bg-emerald-950 dark:text-emerald-200' : 'bg-zinc-100 text-zinc-600 dark:bg-zinc-800 dark:text-zinc-300' }}">
{{ $module['enabled'] ? 'Enabled' : 'Disabled' }}
</span>
</div>
@empty
<div class="px-5 py-8 text-center text-sm text-zinc-500">No modules found.</div>
@endforelse
</div>
@if($modules->hasPages())
<div class="border-t border-zinc-200 px-5 py-4 dark:border-zinc-700">
{{ $modules->onEachSide(1)->links() }}
</div>
@endif
</section>
<section class="overflow-hidden rounded-xl border border-zinc-200/90 bg-white/90 shadow-sm backdrop-blur dark:border-zinc-700/90 dark:bg-zinc-900/90">
<div class="border-b border-zinc-200 px-5 py-4 font-semibold text-zinc-950 dark:border-zinc-700 dark:text-zinc-100">
Recent audit activity
</div>
<div class="divide-y divide-zinc-200 dark:divide-zinc-800">
@forelse($recentAudit as $log)
<div class="px-5 py-3">
<div class="font-medium text-zinc-950 dark:text-zinc-100">{{ $log->event }}</div>
<div class="text-xs text-zinc-500">{{ optional($log->created_at)->diffForHumans() }}</div>
</div>
@empty
<div class="px-5 py-8 text-center text-sm text-zinc-500">No audit events yet.</div>
@endforelse
</div>
@if($recentAudit->hasPages())
<div class="border-t border-zinc-200 px-5 py-4 dark:border-zinc-700">
{{ $recentAudit->onEachSide(1)->links() }}
</div>
@endif
</section>
</div>
</div>
</x-layouts.app>