Files
coolify/resources/views/components/security/settings-layout.blade.php
T
Andras Bacsai 2291c3fa1c feat(ui): unify team, security, and notification settings layouts
Extract shared settings-layout components and a dedicated team
danger-zone page. Enable modal editing for security resources,
polish OAuth/API-token controls, and align notification and
service configuration UI with the new navigation patterns.
2026-08-05 16:24:31 +02:00

57 lines
2.4 KiB
PHP

@php
$securityMenuItems = collect([
[
'label' => 'Private Keys',
'route' => 'security.private-key.index',
'active' => request()->routeIs('security.private-key.*'),
'icon' => 'keys',
],
auth()->user()?->can('viewAny', App\Models\CloudProviderToken::class) ? [
'label' => 'Cloud Tokens',
'route' => 'security.cloud-tokens',
'active' => request()->routeIs('security.cloud-tokens*'),
'icon' => 'cloud',
] : null,
auth()->user()?->can('viewAny', App\Models\CloudInitScript::class) ? [
'label' => 'Cloud-Init Scripts',
'route' => 'security.cloud-init-scripts',
'active' => request()->routeIs('security.cloud-init-scripts*'),
'icon' => 'file-content',
] : null,
[
'label' => 'API Tokens',
'route' => 'security.api-tokens',
'active' => request()->routeIs('security.api-tokens'),
'icon' => 'code',
],
])->filter();
@endphp
<section class="application-settings-workspace mt-4 w-full max-w-[1180px] lg:mt-0">
<div class="grid min-w-0 gap-8 xl:grid-cols-[210px_minmax(0,1fr)] xl:gap-10">
<aside class="application-settings-navigation min-w-0 xl:self-start">
<nav aria-label="Keys and tokens"
class="grid grid-cols-2 gap-0.5 border-y border-neutral-200 py-3 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-1 xl:border-y-0 xl:py-0 dark:border-white/[0.06]">
<div class="nav-section hidden xl:block">Keys & Tokens</div>
@foreach ($securityMenuItems as $menuItem)
<a wire:key="security-settings-{{ str($menuItem['label'])->slug() }}"
@class(['menu-item', 'menu-item-active' => $menuItem['active']])
{{ wireNavigate() }} href="{{ route($menuItem['route']) }}">
<x-reicon :name="$menuItem['icon']" class="menu-item-icon" />
<span class="menu-item-label">{{ $menuItem['label'] }}</span>
</a>
@endforeach
</nav>
</aside>
<div class="min-w-0">
@isset($actions)
<div class="mb-3 flex min-h-8 flex-wrap items-center justify-end gap-2">
{{ $actions }}
</div>
@endisset
{{ $slot }}
</div>
</div>
</section>