73 lines
4.4 KiB
PHP
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>
|