feat(proxmox): add smart firewall workflow and UI refresh

Introduce starter firewall rule templates, one-click rule creation from log entries, and quick log filter presets to speed up incident response. Add a shared quick actions hub plus refreshed help and overview surfaces to improve discoverability and make key VPS tasks faster.

Made-with: Cursor
This commit is contained in:
2026-03-28 16:24:12 -04:00
parent 3246a86f91
commit b8677f5b7d
5 changed files with 320 additions and 11 deletions

View File

@@ -1613,8 +1613,36 @@
];
}
$tabs[] = ['label' => 'Help', 'view' => 'help', 'route' => route('proxmox.server.help', ['server' => $server->id]), 'advanced' => true];
$quickActions = [
['label' => 'Overview', 'icon' => 'dashboard-line', 'route' => route('proxmox.server.overview', ['server' => $server->id]), 'active' => $view === 'overview'],
['label' => 'Network', 'icon' => 'wifi-line', 'route' => route('proxmox.server.network', ['server' => $server->id]), 'active' => $view === 'network'],
['label' => 'Firewall', 'icon' => 'shield-line', 'route' => route('proxmox.server.firewall', ['server' => $server->id]), 'active' => $view === 'firewall'],
['label' => 'Help', 'icon' => 'question-line', 'route' => route('proxmox.server.help', ['server' => $server->id]), 'active' => $view === 'help'],
];
if ($server->service->product->settings()->where('key', 'backups')->first()?->value > 0) {
$quickActions[] = ['label' => 'Backups', 'icon' => 'save-3-line', 'route' => route('proxmox.server.backups', ['server' => $server->id]), 'active' => $view === 'backups'];
}
if ($server->node?->vnc_enabled) {
$quickActions[] = ['label' => 'Console', 'icon' => 'terminal-box-line', 'route' => route('proxmox.server.xterm', ['server' => $server->id]), 'active' => $view === 'xterm' || $view === 'vnc'];
}
@endphp
<div class="mb-6 mt-3">
<div class="grid grid-cols-2 gap-2 lg:grid-cols-6">
@foreach($quickActions as $action)
<a href="{{ $action['route'] }}"
wire:navigate
class="group flex items-center gap-2 rounded-xl border px-3 py-2.5 text-sm font-semibold transition-all {{ $action['active'] ? 'border-primary/40 bg-primary/10 text-primary shadow-sm' : 'border-neutral/30 bg-background-secondary/50 text-base/75 hover:border-primary/30 hover:text-primary hover:bg-primary/5' }}">
<x-dynamic-component :component="'ri-' . $action['icon']" class="size-4 shrink-0" />
<span class="truncate">{{ $action['label'] }}</span>
</a>
@endforeach
</div>
</div>
<div class="mb-10 mt-3">
<style>
/* Page Transition Styles - Only slide-in for new content */