From 34b2d3e8b43af132111e878288f1c4b4aa7777dd Mon Sep 17 00:00:00 2001 From: klopez4212 Date: Fri, 26 Jun 2026 02:16:56 +0100 Subject: [PATCH] Polish side panel motion and composer alignment (#1294) Signed-off-by: Wes Co-authored-by: Wes Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co> --- desktop/src/app/AppShell.tsx | 2 +- desktop/src/app/AppTopChrome.tsx | 21 +++++++++++++++++ .../channels/ui/AgentSessionThreadPanel.tsx | 4 ++-- .../ui/ChannelManagementAuxiliaryPanel.tsx | 1 + .../channels/ui/ChannelManagementSheet.tsx | 7 +++++- .../src/features/channels/ui/ChannelPane.tsx | 2 +- .../channels/ui/RightAuxiliaryPane.tsx | 7 +++++- .../messages/ui/MessageComposerToolbar.tsx | 2 +- .../messages/ui/MessageThreadPanel.tsx | 12 +++++----- .../messages/ui/TypingIndicatorRow.tsx | 14 +++++------ .../features/profile/ui/UserProfilePanel.tsx | 4 ++-- desktop/src/shared/styles/globals.css | 23 +++++++++++++++++++ .../src/shared/ui/OverlayPanelBackdrop.tsx | 4 ++++ 13 files changed, 81 insertions(+), 22 deletions(-) diff --git a/desktop/src/app/AppShell.tsx b/desktop/src/app/AppShell.tsx index 8e6d638ac9..79fb0899d9 100644 --- a/desktop/src/app/AppShell.tsx +++ b/desktop/src/app/AppShell.tsx @@ -801,7 +801,7 @@ export function AppShell() { className="isolate min-h-0 min-w-0 overflow-hidden bg-sidebar" style={chromeCssVarDefaults} > -
+
diff --git a/desktop/src/app/AppTopChrome.tsx b/desktop/src/app/AppTopChrome.tsx index 974fa73a89..3b725e8728 100644 --- a/desktop/src/app/AppTopChrome.tsx +++ b/desktop/src/app/AppTopChrome.tsx @@ -1,3 +1,4 @@ +import * as React from "react"; import { ChevronLeft, ChevronRight, @@ -22,6 +23,10 @@ type AppTopChromeProps = { const TOP_CHROME_ICON_BUTTON_CLASS = "h-7 w-7 rounded-[4px] text-sidebar-foreground/65 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground [&_svg]:size-4"; +function preventTopChromeWheel(event: WheelEvent) { + event.preventDefault(); +} + function TopChromeSidebarTrigger() { const sidebar = useOptionalSidebar(); @@ -50,6 +55,7 @@ export function AppTopChrome({ onGoBack, onGoForward, }: AppTopChromeProps) { + const topChromeRef = React.useRef(null); const isFullscreen = useIsFullscreen(); // On macOS the traffic-light buttons overlay the chrome (see // `trafficLightPosition` in `tauri.conf.json`), so the nav row clears their @@ -60,14 +66,29 @@ export function AppTopChrome({ const navRowAlignmentClass = isMacPlatform() && !isFullscreen ? "translate-y-[3px]" : null; + React.useEffect(() => { + const topChrome = topChromeRef.current; + if (!topChrome) { + return; + } + + const options = { capture: true, passive: false }; + topChrome.addEventListener("wheel", preventTopChromeWheel, options); + return () => { + topChrome.removeEventListener("wheel", preventTopChromeWheel, options); + }; + }, []); + return (
diff --git a/desktop/src/features/channels/ui/AgentSessionThreadPanel.tsx b/desktop/src/features/channels/ui/AgentSessionThreadPanel.tsx index ab9712811f..9e202f7a26 100644 --- a/desktop/src/features/channels/ui/AgentSessionThreadPanel.tsx +++ b/desktop/src/features/channels/ui/AgentSessionThreadPanel.tsx @@ -20,7 +20,7 @@ import { Button } from "@/shared/ui/button"; import type { UserProfileLookup } from "@/features/profile/lib/identity"; import { OverlayPanelBackdrop, - PANEL_BASE_CLASS, + PANEL_ENTER_BASE_CLASS, PANEL_OVERLAY_CLASS, PANEL_SINGLE_COLUMN_HEADER_LAYER_CLASS, } from "@/shared/ui/OverlayPanelBackdrop"; @@ -179,7 +179,7 @@ export function AgentSessionThreadPanel({ {isFloatingOverlay && }