@extends('layouts.dashboard') @section('title', 'Übersicht · '.$guild->name.' · TacForce Pro') @php // Status badge recipes (mockup 04 + light-mode variants). $statusBadge = function (?string $status) { return match ($status) { 'open' => ['Offen', 'border-blue-500/30 bg-blue-500/10 text-blue-600 dark:text-blue-400'], 'in_progress' => ['In Bearbeitung', 'border-amber-500/25 bg-amber-500/10 text-amber-600 dark:text-amber-400'], 'closed' => ['Geschlossen', 'border-zinc-300 dark:border-zinc-700 bg-zinc-100 dark:bg-zinc-800 text-zinc-500 dark:text-zinc-400'], default => ['Unbekannt', 'border-zinc-300 dark:border-zinc-700 bg-zinc-100 dark:bg-zinc-800 text-zinc-500 dark:text-zinc-400'], }; }; // Which module icon + accent to show in the activity feed per audit-log type. $activityStyle = function (string $type) { return match (true) { str_contains($type, 'ticket_created') => ['plus', 'text-zinc-500 dark:text-zinc-400'], str_contains($type, 'ticket_closed') => ['x', 'text-zinc-400 dark:text-zinc-500'], str_contains($type, 'accepted') => ['check', 'text-emerald-600 dark:text-emerald-400'], str_contains($type, 'rejected') => ['x', 'text-red-600 dark:text-red-400'], str_contains($type, 'member_join') => ['user-plus', 'text-zinc-500 dark:text-zinc-400'], str_contains($type, 'member_leave') => ['users', 'text-zinc-400 dark:text-zinc-500'], str_contains($type, 'message_delete') => ['trash', 'text-zinc-500 dark:text-zinc-400'], str_contains($type, 'warn') => ['alert', 'text-amber-600 dark:text-amber-400'], default => ['list', 'text-zinc-500 dark:text-zinc-400'], }; }; $moduleMeta = [ 'tickets' => ['Tickets', 'ticket'], 'applications' => ['Bewerbungen', 'file-text'], 'welcome' => ['Welcome', 'message'], 'logs' => ['Logs', 'list'], ]; $soonMeta = [ 'guard' => ['Guard', 'shield'], 'level' => ['Level', 'star'], 'partner' => ['Partner', 'link'], ]; $activeCount = collect($moduleMeta)->keys()->filter(fn ($k) => data_get($modules, $k, false))->count(); @endphp @section('content') {{-- HEADING --}}
Willkommen zurück — hier ist der Status deines Servers.
Offene Tickets
{{ number_format($openTickets, 0, ',', '.') }}
@if ($ticketsToday > 0)
Bewerbungen
{{ number_format($applications, 0, ',', '.') }}
{{ $openApplications }} offen
Mitglieder
{{ $memberCount !== null ? number_format($memberCount, 0, ',', '.') : '—' }}
@if ($memberCount !== null) Live vom Discord-Server @else Bald – wird beim Scan synchronisiert @endif
Noch keine Tickets vorhanden.
| Ticket | Kategorie | Ersteller | Status | Zeit |
|---|---|---|---|---|
| #TF-{{ $ticket->number }} | {{ $ticket->category->name ?? '—' }} | {{ strtoupper(mb_substr($ticket->creator_discord_id, -2)) }} {{ $ticket->creator_discord_id }} | {{ $badgeLabel }} | {{ $ticket->created_at?->diffForHumans() }} |
Gesamt {{ $chart['total'] }} · Ø {{ $chart['avg'] }} pro Tag
Noch keine Aktivität.
{{ $entry->message }}
{{ $entry->created_at?->diffForHumans() }}