feat(layout): Layout-Einstellungen, Dark-Mode, Logo, Hilfe-Menü

- Settings Key-Value Store (DB + Cache)
- Einstellungen → Layout: Seitenname, Logo, Button-Farbe, Dark/Light-Mode
- Hilfe-Menü (Ebene 0): Handbuch + Changelog im Browser
- Navigation erweitert: Einstellungen-Dropdown + Hilfe-Dropdown
- CHANGELOG v0.4.0

Version: 0.4.0
This commit is contained in:
2026-06-29 14:15:41 +02:00
parent 69ce876138
commit eb57be730b
18 changed files with 613 additions and 24 deletions
+62 -6
View File
@@ -15,11 +15,50 @@
<x-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')">
{{ __('Dashboard') }}
</x-nav-link>
@role('admin')
<x-nav-link :href="route('admin.users.index')" :active="request()->routeIs('admin.*')">
Benutzerverwaltung
</x-nav-link>
{{-- Einstellungen-Dropdown --}}
<x-dropdown align="left" width="48">
<x-slot name="trigger">
<button class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium leading-5 transition duration-150 ease-in-out focus:outline-none
{{ request()->routeIs('admin.*') ? 'border-indigo-400 text-gray-900' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300' }}">
Einstellungen
<svg class="ms-1 fill-current h-4 w-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd" />
</svg>
</button>
</x-slot>
<x-slot name="content">
<x-dropdown-link :href="route('admin.users.index')">
👥 Benutzerverwaltung
</x-dropdown-link>
<x-dropdown-link :href="route('admin.layout.index')">
🎨 Layout
</x-dropdown-link>
</x-slot>
</x-dropdown>
@endrole
{{-- Hilfe-Dropdown --}}
<x-dropdown align="left" width="48">
<x-slot name="trigger">
<button class="inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium leading-5 transition duration-150 ease-in-out focus:outline-none
{{ request()->routeIs('help.*') ? 'border-indigo-400 text-gray-900' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300' }}">
Hilfe
<svg class="ms-1 fill-current h-4 w-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd" />
</svg>
</button>
</x-slot>
<x-slot name="content">
<x-dropdown-link :href="route('help.manual')">
📖 Handbuch
</x-dropdown-link>
<x-dropdown-link :href="route('help.changelog')">
📋 Changelog
</x-dropdown-link>
</x-slot>
</x-dropdown>
</div>
</div>
@@ -75,11 +114,28 @@
<x-responsive-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')">
{{ __('Dashboard') }}
</x-responsive-nav-link>
@role('admin')
<x-responsive-nav-link :href="route('admin.users.index')" :active="request()->routeIs('admin.*')">
Benutzerverwaltung
</x-responsive-nav-link>
<div class="pt-2 pb-1 border-t border-gray-200">
<div class="px-4 py-1 text-xs font-semibold text-gray-400 uppercase tracking-wider">Einstellungen</div>
<x-responsive-nav-link :href="route('admin.users.index')">
&nbsp;&nbsp;👥 Benutzerverwaltung
</x-responsive-nav-link>
<x-responsive-nav-link :href="route('admin.layout.index')">
&nbsp;&nbsp;🎨 Layout
</x-responsive-nav-link>
</div>
@endrole
<div class="pt-2 pb-1 border-t border-gray-200">
<div class="px-4 py-1 text-xs font-semibold text-gray-400 uppercase tracking-wider">Hilfe</div>
<x-responsive-nav-link :href="route('help.manual')">
&nbsp;&nbsp;📖 Handbuch
</x-responsive-nav-link>
<x-responsive-nav-link :href="route('help.changelog')">
&nbsp;&nbsp;📋 Changelog
</x-responsive-nav-link>
</div>
</div>
<!-- Responsive Settings Options -->