54 lines
2.5 KiB
PHP
54 lines
2.5 KiB
PHP
<div class="flex flex-col flex-1" style="min-height: calc(100vh - 30rem);">
|
|
<style>
|
|
@keyframes cardEntrance {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(12px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
.server-card-enter {
|
|
animation: cardEntrance 0.4s ease-out both;
|
|
}
|
|
</style>
|
|
|
|
<div class="pb-6 space-y-4">
|
|
<span class="text-2xl font-bold">Servers</span>
|
|
@if(count($servers) > 1)
|
|
<div class="relative w-full" x-data="{ search: '' }">
|
|
<div class="absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none z-[1]">
|
|
<svg class="w-4 h-4 opacity-50" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/>
|
|
</svg>
|
|
</div>
|
|
<input type="text"
|
|
x-model="search"
|
|
@input="
|
|
document.querySelectorAll('[data-server-card]').forEach(card => {
|
|
const name = (card.dataset.serverName || '').toLowerCase();
|
|
const ip = (card.dataset.serverIp || '').toLowerCase();
|
|
const q = search.toLowerCase().trim();
|
|
card.style.display = (!q || name.includes(q) || ip.includes(q)) ? '' : 'none';
|
|
});
|
|
"
|
|
placeholder="Filter servers..."
|
|
class="block w-full text-sm text-base bg-background-secondary/50 border border-neutral rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-primary/30 focus:border-primary transition-all duration-300 ease-in-out py-2.5 pr-2.5" style="padding-left: 2.5rem;" />
|
|
</div>
|
|
@endif
|
|
</div>
|
|
|
|
<div class="flex flex-col gap-4 flex-1">
|
|
@foreach($servers as $index => $server)
|
|
<div class="server-card-enter"
|
|
style="animation-delay: {{ min($index * 80, 800) }}ms"
|
|
data-server-card
|
|
data-server-name="{{ $server->hostname ?? $server->service->product->name ?? '' }}"
|
|
data-server-ip="{{ $server->primaryIpv4->ip ?? '' }}">
|
|
<livewire:proxmox.server :server="$server" wire:key="proxmox-server-{{ $server->id }}" lazy />
|
|
</div>
|
|
@endforeach
|
|
</div>
|
|
</div> |