From 329e363b2f9c7f1d33fe60f3d38dbe97ef14cb81 Mon Sep 17 00:00:00 2001 From: Jason Staack Date: Sat, 21 Mar 2026 12:55:02 -0500 Subject: [PATCH] =?UTF-8?q?fix(ui):=20declutter=20device=20page=20header?= =?UTF-8?q?=20=E2=80=94=20compact=20tool=20buttons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - WinBox/RemoteWinBox/SSH: replace big accent CTAs with compact bordered tool buttons (text-[10px], h-3 icons, border-default) - SimpleModeToggle: shrink from pill-button group to inline segmented control (text-[10px], accent-soft active state) - Edit/Delete already icon-only ghost from previous commit - All tool buttons now visually consistent — small, bordered, receding - Result: header reads as a compact control strip, not a CTA row Co-Authored-By: Claude Opus 4.6 (1M context) --- .../components/fleet/RemoteWinBoxButton.tsx | 18 +++++----- frontend/src/components/fleet/SSHTerminal.tsx | 7 ++-- .../src/components/fleet/WinBoxButton.tsx | 34 +++++++++---------- .../simple-config/SimpleModeToggle.tsx | 30 ++++++++-------- 4 files changed, 44 insertions(+), 45 deletions(-) diff --git a/frontend/src/components/fleet/RemoteWinBoxButton.tsx b/frontend/src/components/fleet/RemoteWinBoxButton.tsx index 43d3de5..bfa8390 100644 --- a/frontend/src/components/fleet/RemoteWinBoxButton.tsx +++ b/frontend/src/components/fleet/RemoteWinBoxButton.tsx @@ -162,26 +162,26 @@ export function RemoteWinBoxButton({ tenantId, deviceId }: RemoteWinBoxButtonPro if (state === 'idle' || state === 'failed' || state === 'terminated') { return (
-
+
{state === 'failed' && error && ( diff --git a/frontend/src/components/fleet/SSHTerminal.tsx b/frontend/src/components/fleet/SSHTerminal.tsx index 97e582f..19b3260 100644 --- a/frontend/src/components/fleet/SSHTerminal.tsx +++ b/frontend/src/components/fleet/SSHTerminal.tsx @@ -162,10 +162,11 @@ export function SSHTerminal({ tenantId, deviceId, deviceName }: SSHTerminalProps return ( ) } diff --git a/frontend/src/components/fleet/WinBoxButton.tsx b/frontend/src/components/fleet/WinBoxButton.tsx index 7d9f304..6ef9ee6 100644 --- a/frontend/src/components/fleet/WinBoxButton.tsx +++ b/frontend/src/components/fleet/WinBoxButton.tsx @@ -78,14 +78,15 @@ export function WinBoxButton({ tenantId, deviceId }: WinBoxButtonProps) { openMutation.mutate() }} disabled={openMutation.isPending} - className="inline-flex items-center gap-2 px-4 py-2 rounded-md bg-accent text-white hover:bg-accent/90 disabled:opacity-50" + className="inline-flex items-center gap-1 px-2 py-1 rounded-[var(--radius-control)] text-[10px] text-text-secondary border border-border-default hover:border-accent transition-[border-color,color] duration-[50ms] disabled:opacity-50" + title="Open WinBox tunnel" > {openMutation.isPending ? ( - + ) : ( - + )} - {openMutation.isPending ? 'Connecting...' : 'Open WinBox'} + {openMutation.isPending ? 'Connecting' : 'WinBox'} {error &&

{error}

}
@@ -94,18 +95,17 @@ export function WinBoxButton({ tenantId, deviceId }: WinBoxButtonProps) { if (state === 'ready' && tunnelInfo) { return ( -
-

WinBox tunnel ready

-

- Connect to: {tunnelInfo.host}:{tunnelInfo.port} +

+

+ Tunnel ready: {tunnelInfo.host}:{tunnelInfo.port}

-
+
-

- Tunnel closes after 5 min of inactivity -

+

Closes after 5 min idle

) } diff --git a/frontend/src/components/simple-config/SimpleModeToggle.tsx b/frontend/src/components/simple-config/SimpleModeToggle.tsx index a372c8e..ce89354 100644 --- a/frontend/src/components/simple-config/SimpleModeToggle.tsx +++ b/frontend/src/components/simple-config/SimpleModeToggle.tsx @@ -14,31 +14,31 @@ interface SimpleModeToggleProps { export function SimpleModeToggle({ mode, onModeChange }: SimpleModeToggleProps) { return ( -
- - +
) }