@use('App\Models\LicenseLog') @php /* | Requires in scope: $license, $logs (latest 30, from the controller). | | One tone map for the whole vocabulary in LicenseLog, so an event can never | render with an unmapped colour. Green = it worked, blue = on its way, | violet = a licence coming to life, amber = deliberate interruptions, | red = failures. */ $tones = [ LicenseLog::VERIFICATION => ['emerald', 'check-circle'], LicenseLog::SYNC_SUCCESS => ['emerald', 'check-circle'], LicenseLog::RENEWAL => ['emerald', 'refresh'], LicenseLog::ACTIVATION => ['violet', 'zap'], LicenseLog::SYNC_SENT => ['blue', 'send'], LicenseLog::HEARTBEAT => ['slate', 'activity'], LicenseLog::SYNC_RETRY => ['amber', 'refresh'], LicenseLog::DOMAIN_CHANGE => ['amber', 'globe'], LicenseLog::SUSPENSION => ['amber', 'pause'], LicenseLog::DEACTIVATION => ['slate', 'pause'], LicenseLog::FAILED_VERIFICATION => ['red', 'x-circle'], LicenseLog::FAILED_ACTIVATION => ['red', 'x-circle'], LicenseLog::REVOCATION => ['red', 'ban'], LicenseLog::SYNC_FAILED => ['red', 'x-circle'], ]; $dot = [ 'emerald' => 'bg-emerald-50 text-emerald-600 ring-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-400 dark:ring-emerald-500/30', 'violet' => 'bg-violet-50 text-violet-600 ring-violet-500/25 dark:bg-violet-500/10 dark:text-violet-400 dark:ring-violet-500/30', 'blue' => 'bg-blue-50 text-blue-600 ring-blue-500/25 dark:bg-blue-500/10 dark:text-blue-400 dark:ring-blue-500/30', 'amber' => 'bg-amber-50 text-amber-600 ring-amber-500/25 dark:bg-amber-500/10 dark:text-amber-400 dark:ring-amber-500/30', 'red' => 'bg-red-50 text-red-600 ring-red-500/25 dark:bg-red-500/10 dark:text-red-400 dark:ring-red-500/30', 'slate' => 'bg-slate-100 text-slate-500 ring-slate-500/15 dark:bg-white/[0.05] dark:text-slate-400 dark:ring-white/10', ]; // The full log filters by domain, so "view all" lands on this // installation's history rather than on everything ever recorded. $allLogsUrl = $license->domain ? route('logs.index', ['q' => $license->domain->domain]) : route('logs.index'); @endphp

Audit Log

{{ $logs->count() }} most recent {{ Str::plural('event', $logs->count()) }}

View all logs
@if ($logs->isEmpty()) @else
    @foreach ($logs as $log) @php [$tone, $icon] = $tones[$log->event] ?? ['slate', 'activity']; @endphp
  1. {{-- The connecting line, drawn per row so it stops after the last event instead of running off the card. --}} @unless ($loop->last) @endunless

    {{ ucfirst(str_replace('_', ' ', $log->event)) }} @if ($log->message) {{ $log->message }} @endif

    @if ($log->domain || $log->ip_address)

    {{ $log->domain }}{{ $log->domain && $log->ip_address ? ' ยท ' : '' }}{{ $log->ip_address }}

    @endif
  2. @endforeach
@endif