@php
$currentRoute = request()->route()->getName();
$panelRuntime = app(\App\Services\Hosting\PanelRuntimeResolver::class)->forSubject($account);
$currentUser = auth()->user();
$navGroups = [
'main' => [
[
'name' => 'Overview',
'route' => route('hosting.panel.index', $account),
'active' => $currentRoute === 'hosting.panel.index',
'capability' => null,
'permission' => 'viewPanel',
'icon' => '',
],
[
'name' => 'File Manager',
'route' => route('hosting.panel.files', $account),
'active' => str_starts_with($currentRoute, 'hosting.panel.files'),
'capability' => 'files',
'permission' => 'manageFiles',
'icon' => '',
],
[
'name' => 'Databases',
'route' => route('hosting.panel.databases', $account),
'active' => str_starts_with($currentRoute, 'hosting.panel.databases'),
'capability' => 'databases',
'permission' => 'manageDatabases',
'icon' => '',
],
[
'name' => 'Domains',
'route' => route('hosting.panel.domains', $account),
'active' => str_starts_with($currentRoute, 'hosting.panel.domains'),
'capability' => 'domains',
'permission' => 'viewDomains',
'domain_icon' => true,
],
],
'software' => [
[
'name' => 'Terminal',
'route' => route('hosting.panel.terminal', $account),
'active' => str_starts_with($currentRoute, 'hosting.panel.terminal'),
'capability' => 'terminal',
'permission' => 'useTerminal',
'icon' => '',
],
[
'name' => 'PHP Settings',
'route' => route('hosting.panel.php', $account),
'active' => str_starts_with($currentRoute, 'hosting.panel.php'),
'capability' => 'php',
'permission' => 'managePhp',
'icon' => '',
],
[
'name' => 'SSL Certificates',
'route' => route('hosting.panel.ssl', $account),
'active' => str_starts_with($currentRoute, 'hosting.panel.ssl'),
'capability' => 'ssl',
'permission' => 'manageSsl',
'icon' => '',
],
[
'name' => 'App Installer',
'route' => route('hosting.panel.apps', $account),
'active' => str_starts_with($currentRoute, 'hosting.panel.apps'),
'capability' => 'apps',
'permission' => 'manageApps',
'icon' => '',
],
],
'advanced' => [
[
'name' => 'Cron Jobs',
'route' => route('hosting.panel.cron', $account),
'active' => str_starts_with($currentRoute, 'hosting.panel.cron'),
'capability' => 'cron',
'permission' => 'manageCron',
'icon' => '',
],
[
'name' => 'Error Logs',
'route' => route('hosting.panel.logs', $account),
'active' => str_starts_with($currentRoute, 'hosting.panel.logs'),
'capability' => 'logs',
'permission' => 'viewLogs',
'icon' => '',
],
],
];
$settingsItem = [
'name' => 'Settings',
'route' => route('hosting.panel.settings', $account),
'active' => str_starts_with($currentRoute, 'hosting.panel.settings'),
'icon' => '',
];
$showSettings = $panelRuntime->supports('settings') && $currentUser?->can('viewSettings', $account);
foreach ($navGroups as $group => $items) {
$navGroups[$group] = array_values(array_filter($items, static function (array $item) use ($panelRuntime, $currentUser, $account): bool {
$capability = $item['capability'] ?? null;
$permission = $item['permission'] ?? null;
return ($capability === null || $panelRuntime->supports($capability))
&& ($permission === null || $currentUser?->can($permission, $account));
}));
}
@endphp
{{-- Logo/Header --}}
{{ $panelRuntime->label() }}
{{ $account->username }}
{{-- Navigation --}}
@if ($showSettings)
@endif
{{-- Account Info Footer --}}
{{ $account->node->hostname ?? $account->node->ip_address ?? 'Server' }}
{{ ucfirst($account->status) }}
@if($account->product)
{{ $account->product->name }}
@endif