65 lines
3.8 KiB
PHP
65 lines
3.8 KiB
PHP
<!DOCTYPE html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>@yield('title', 'Dashboard') – {{ config('app.name', 'HexaHost Panel') }}</title>
|
||
@vite(['resources/css/app.css', 'resources/js/app.js'])
|
||
</head>
|
||
<body class="hexahost-panel min-h-screen antialiased">
|
||
<div class="flex min-h-screen">
|
||
<aside class="hexahost-sidebar hidden w-64 shrink-0 lg:block">
|
||
<div class="flex h-16 items-center border-b border-white/10 px-6">
|
||
<span class="hexahost-brand text-lg">HexaHost</span>
|
||
</div>
|
||
<nav class="space-y-1 p-4">
|
||
<a href="{{ route('dashboard') }}" class="hexahost-nav-link {{ request()->routeIs('dashboard') ? 'active' : '' }} flex items-center gap-3 px-3 py-2 text-sm font-medium">Dashboard</a>
|
||
<a href="{{ route('vms.index') }}" class="hexahost-nav-link {{ request()->routeIs('vms.*') ? 'active' : '' }} flex items-center gap-3 px-3 py-2 text-sm font-medium">Virtuelle Maschinen</a>
|
||
<a href="{{ route('iso-uploads.index') }}" class="hexahost-nav-link {{ request()->routeIs('iso-uploads.*') ? 'active' : '' }} flex items-center gap-3 px-3 py-2 text-sm font-medium">ISO-Upload</a>
|
||
<a href="{{ route('ip-pools.index') }}" class="hexahost-nav-link {{ request()->routeIs('ip-pools.*') ? 'active' : '' }} flex items-center gap-3 px-3 py-2 text-sm font-medium">IP-Pools</a>
|
||
@if(auth()->user()->isAdmin())
|
||
<a href="{{ route('users.index') }}" class="hexahost-nav-link {{ request()->routeIs('users.*') ? 'active' : '' }} flex items-center gap-3 px-3 py-2 text-sm font-medium">Benutzer</a>
|
||
<a href="{{ route('admin.templates.index') }}" class="hexahost-nav-link {{ request()->routeIs('admin.templates.*') ? 'active' : '' }} flex items-center gap-3 px-3 py-2 text-sm font-medium">VM-Templates</a>
|
||
<a href="{{ route('admin.health') }}" class="hexahost-nav-link {{ request()->routeIs('admin.health') ? 'active' : '' }} flex items-center gap-3 px-3 py-2 text-sm font-medium">System-Health</a>
|
||
@endif
|
||
</nav>
|
||
</aside>
|
||
|
||
<div class="flex flex-1 flex-col">
|
||
<header class="hexahost-header flex h-16 items-center justify-between px-6">
|
||
<h1 class="text-lg font-semibold">@yield('heading', 'Dashboard')</h1>
|
||
<div class="flex items-center gap-4">
|
||
<span class="hidden text-sm opacity-70 sm:inline">{{ auth()->user()->name }}</span>
|
||
<span class="rounded-full border border-white/20 px-2.5 py-0.5 text-xs font-medium" style="color: var(--hx-primary)">{{ auth()->user()->role->label() }}</span>
|
||
<form method="POST" action="{{ route('logout') }}">
|
||
@csrf
|
||
<button type="submit" class="text-sm opacity-70 hover:opacity-100">Abmelden</button>
|
||
</form>
|
||
</div>
|
||
</header>
|
||
|
||
<main class="flex-1 p-6">
|
||
@if(session('success'))
|
||
<div class="hexahost-card mb-4 border border-emerald-500/30 px-4 py-3 text-sm text-emerald-300">{{ session('success') }}</div>
|
||
@endif
|
||
@if(session('warning'))
|
||
<div class="hexahost-card mb-4 border border-amber-500/30 px-4 py-3 text-sm text-amber-300">{{ session('warning') }}</div>
|
||
@endif
|
||
@if($errors->any())
|
||
<div class="hexahost-card mb-4 border border-red-500/30 px-4 py-3 text-sm text-red-300">
|
||
<ul class="list-inside list-disc space-y-1">
|
||
@foreach($errors->all() as $error)
|
||
<li>{{ $error }}</li>
|
||
@endforeach
|
||
</ul>
|
||
</div>
|
||
@endif
|
||
|
||
@yield('content')
|
||
</main>
|
||
</div>
|
||
</div>
|
||
@stack('scripts')
|
||
</body>
|
||
</html>
|