From 930f78efbdad36426e9ec7084ef65f0491f265aa Mon Sep 17 00:00:00 2001 From: boban Date: Sun, 5 Jul 2026 18:06:32 +0200 Subject: [PATCH] polish(ui): in-system design refinements from the design review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Surgical consistency/polish tightening within the existing "Tactical Terminal" system — no re-theme, no new tokens/fonts/colors, every change uses an existing @theme utility. From a design review (subagent-cataloged, false-positives rejected). - nav-item: badge tooltip is now a contextual `badge-title` prop instead of a hardcoded "update available" — the Threats count badge showed the wrong tooltip. Sidebar passes a real "N login attempts (24h)" title for Threats and "Update available" for Versions. - empty-state messages (sessions/users/webauthn-keys/login-protection) bumped from the faintest ink-4 to ink-3 — when a list is empty that line is the focal point, not meta. - modal actions: fail2ban-config / hardening-action / system-update submit buttons go from the softer `accent` to solid `primary` so the real action reads as primary (cancel stays secondary; the done-state close is unchanged). - servers list: CPU/RAM mini-bar labels ink-4 -> ink-3 to match their values. - edit-credential: top-level error now uses the standard bordered offline error box (border-offline/25 bg-offline/10 + alert icon), matching firewall-rule. - file-editor: title + path get a native `title=` tooltip so a truncated long path is legible. - add-ssh-key label rhythm (mb-1.5 -> mb-1); login-protection textarea vertical padding (py-2 -> py-2.5, the textarea norm); webauthn-keys add button w-full sm:w-auto so it isn't a mobile orphan; app.css font comment de-staled (fonts are self-hosted). Deliberately NOT changed (would harm the design, not help): mail from_name kept sans vs from_address mono (name = prose, address = technical token — the convention); the Memory metric tone kept dynamic/threshold-based (health signal) rather than forced cyan. Verified: vite build compiles all utilities, 617 tests green, de/en lang parity, DOM render check of the badge + button variants. Co-Authored-By: Claude Fable 5 --- lang/de/shell.php | 1 + lang/en/shell.php | 1 + resources/css/app.css | 2 +- resources/views/components/nav-item.blade.php | 4 ++-- resources/views/components/sidebar.blade.php | 4 ++-- resources/views/livewire/modals/add-ssh-key.blade.php | 4 ++-- resources/views/livewire/modals/edit-credential.blade.php | 7 ++++--- resources/views/livewire/modals/fail2ban-config.blade.php | 2 +- resources/views/livewire/modals/file-editor.blade.php | 4 ++-- resources/views/livewire/modals/hardening-action.blade.php | 2 +- resources/views/livewire/modals/system-update.blade.php | 2 +- resources/views/livewire/servers/index.blade.php | 4 ++-- .../views/livewire/settings/login-protection.blade.php | 4 ++-- resources/views/livewire/settings/sessions.blade.php | 2 +- resources/views/livewire/settings/users.blade.php | 2 +- resources/views/livewire/settings/webauthn-keys.blade.php | 4 ++-- 16 files changed, 26 insertions(+), 23 deletions(-) diff --git a/lang/de/shell.php b/lang/de/shell.php index f66c429..3f8d6f7 100644 --- a/lang/de/shell.php +++ b/lang/de/shell.php @@ -26,6 +26,7 @@ return [ 'nav_versions' => 'Version', 'nav_help' => 'Hilfe', 'update_available' => 'Update verfügbar', + 'threats_badge' => ':count Login-Versuche (24h)', // Sidebar — user / 2FA badge 'twofa_on' => '2FA aktiv', diff --git a/lang/en/shell.php b/lang/en/shell.php index 0a68808..056edf5 100644 --- a/lang/en/shell.php +++ b/lang/en/shell.php @@ -26,6 +26,7 @@ return [ 'nav_versions' => 'Version', 'nav_help' => 'Help', 'update_available' => 'Update available', + 'threats_badge' => ':count login attempts (24h)', // Sidebar — user / 2FA badge 'twofa_on' => '2FA on', diff --git a/resources/css/app.css b/resources/css/app.css index 7e1c642..2692eaf 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -85,7 +85,7 @@ --color-line-soft: rgba(255, 255, 255, 0.055); --color-line-strong: rgba(255, 255, 255, 0.17); - /* fonts — TODO(§12): self-host the .woff2; falls back until then */ + /* fonts — self-hosted .woff2 via the @font-face blocks above (R14); system stack is the fallback */ --font-display: 'Chakra Petch', ui-sans-serif, system-ui, sans-serif; --font-sans: 'Space Grotesk', ui-sans-serif, system-ui, sans-serif; --font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', monospace; diff --git a/resources/views/components/nav-item.blade.php b/resources/views/components/nav-item.blade.php index d548575..d681835 100644 --- a/resources/views/components/nav-item.blade.php +++ b/resources/views/components/nav-item.blade.php @@ -1,4 +1,4 @@ -@props(['icon', 'href' => '#', 'active' => false, 'badge' => null]) +@props(['icon', 'href' => '#', 'active' => false, 'badge' => null, 'badgeTitle' => null]) class([ 'group flex min-h-11 items-center gap-3 rounded-md border px-3 py-2 text-sm transition-colors', 'border-accent/25 bg-accent/10 text-ink shadow-[inset_2px_0_0_var(--color-accent)]' => $active, @@ -9,6 +9,6 @@ {{ $slot }} @if ($badge !== null && $badge !== '') {{ $badge }} + @if ($badgeTitle) title="{{ $badgeTitle }}" @endif>{{ $badge }} @endif diff --git a/resources/views/components/sidebar.blade.php b/resources/views/components/sidebar.blade.php index 42256a2..b96328f 100644 --- a/resources/views/components/sidebar.blade.php +++ b/resources/views/components/sidebar.blade.php @@ -51,9 +51,9 @@ {{ __('shell.nav_settings') }} {{ __('shell.nav_system') }} @can('manage-panel') - {{ __('shell.nav_threats') }} + {{ __('shell.nav_threats') }} @endcan - {{ __('shell.nav_versions') }} + {{ __('shell.nav_versions') }} @if (config('clusev.release_controls')) {{ __('release.nav') }} diff --git a/resources/views/livewire/modals/add-ssh-key.blade.php b/resources/views/livewire/modals/add-ssh-key.blade.php index 0ceab7d..f08fbb2 100644 --- a/resources/views/livewire/modals/add-ssh-key.blade.php +++ b/resources/views/livewire/modals/add-ssh-key.blade.php @@ -10,13 +10,13 @@
- +
-
+
diff --git a/resources/views/livewire/modals/fail2ban-config.blade.php b/resources/views/livewire/modals/fail2ban-config.blade.php index 4339e43..b21d8df 100644 --- a/resources/views/livewire/modals/fail2ban-config.blade.php +++ b/resources/views/livewire/modals/fail2ban-config.blade.php @@ -46,7 +46,7 @@
{{ $loaded ? __('common.cancel') : __('common.close') }} @if ($loaded) - + {{ __('common.save') }} diff --git a/resources/views/livewire/modals/file-editor.blade.php b/resources/views/livewire/modals/file-editor.blade.php index 3cc3c1b..6fad464 100644 --- a/resources/views/livewire/modals/file-editor.blade.php +++ b/resources/views/livewire/modals/file-editor.blade.php @@ -4,8 +4,8 @@
-

{{ $name }}

-

{{ $path }}

+

{{ $name }}

+

{{ $path }}

diff --git a/resources/views/livewire/modals/hardening-action.blade.php b/resources/views/livewire/modals/hardening-action.blade.php index 3ec8397..615beae 100644 --- a/resources/views/livewire/modals/hardening-action.blade.php +++ b/resources/views/livewire/modals/hardening-action.blade.php @@ -38,7 +38,7 @@ @else {{ __('common.cancel') }} @unless ($error) - + {{ __('common.apply') }} diff --git a/resources/views/livewire/modals/system-update.blade.php b/resources/views/livewire/modals/system-update.blade.php index 0acf182..4e07ded 100644 --- a/resources/views/livewire/modals/system-update.blade.php +++ b/resources/views/livewire/modals/system-update.blade.php @@ -78,7 +78,7 @@ @else {{ __('common.cancel') }} @if (! $error && $supported) - + {{ __('modals.system_update.submit') }} diff --git a/resources/views/livewire/servers/index.blade.php b/resources/views/livewire/servers/index.blade.php index de164bc..8ff979d 100644 --- a/resources/views/livewire/servers/index.blade.php +++ b/resources/views/livewire/servers/index.blade.php @@ -71,7 +71,7 @@ @empty -

{{ __('sessions.none') }}

+

{{ __('sessions.none') }}

@endforelse
diff --git a/resources/views/livewire/settings/users.blade.php b/resources/views/livewire/settings/users.blade.php index 6ad7a06..1ace7dd 100644 --- a/resources/views/livewire/settings/users.blade.php +++ b/resources/views/livewire/settings/users.blade.php @@ -58,7 +58,7 @@
@empty -

{{ __('accounts.none') }}

+

{{ __('accounts.none') }}

@endforelse diff --git a/resources/views/livewire/settings/webauthn-keys.blade.php b/resources/views/livewire/settings/webauthn-keys.blade.php index 4990581..35eba2f 100644 --- a/resources/views/livewire/settings/webauthn-keys.blade.php +++ b/resources/views/livewire/settings/webauthn-keys.blade.php @@ -24,14 +24,14 @@ @empty -

{{ __('auth.webauthn_none') }}

+

{{ __('auth.webauthn_none') }}

@endforelse
- + {{ __('auth.webauthn_add') }}