Skip to content

Commit 3eb94e2

Browse files
jherforthclaude
andcommitted
Fix top-bar menu stacking; soften pane separators
- Project and LLM dropdowns move to z-50: the chat header (z-20) was painting its 'New session' label and + button over open menus, which read as a transparent dropdown. - The border token becomes a low-alpha blue-grey in both themes, the sidebar's doubled right border is removed, and pane resize handles are invisible until hovered instead of 4px solid bars — seams recede while floating surfaces keep their definition. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 7433ef1 commit 3eb94e2

4 files changed

Lines changed: 19 additions & 12 deletions

File tree

packages/web-ui/src/App.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,7 @@ export default function App() {
647647
{/* Code Editor — has its own toggle, independent of the file-tree sidebar */}
648648
{!editorCollapsed && (
649649
<>
650-
<PanelResizeHandle className="w-1 bg-monastery-dark-border hover:bg-monastery-lantern transition-colors cursor-col-resize" />
650+
<PanelResizeHandle className="w-1 bg-transparent hover:bg-monastery-lantern/50 transition-colors cursor-col-resize" />
651651
<Panel
652652
defaultSize={previewCollapsed ? 100 - paneLayout.chat : paneLayout.editor}
653653
minSize={20}
@@ -689,7 +689,7 @@ export default function App() {
689689
{/* Preview Pane — slides in/out */}
690690
{!previewCollapsed && (
691691
<>
692-
<PanelResizeHandle className="w-1 bg-monastery-dark-border hover:bg-monastery-lantern transition-colors cursor-col-resize" />
692+
<PanelResizeHandle className="w-1 bg-transparent hover:bg-monastery-lantern/50 transition-colors cursor-col-resize" />
693693
<Panel
694694
defaultSize={paneLayout.preview}
695695
minSize={15}

packages/web-ui/src/components/Sidebar.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,9 @@ export function Sidebar({
225225
}, [showCreateMenu]);
226226

227227
return (
228-
<aside className="w-64 bg-monastery-dark-bg border-r border-monastery-dark-border flex flex-col shrink-0">
228+
// No border-r on the aside — the sidebar wrapper in App.tsx already draws the pane
229+
// seam, and the two together rendered a doubled line.
230+
<aside className="w-64 bg-monastery-dark-bg flex flex-col shrink-0">
229231
{/* The sidebar is the file tree — sessions live in the chat header, agent roles in the
230232
composer, and connections in Settings. */}
231233
<div className="flex-1 overflow-y-auto py-2">

packages/web-ui/src/components/TopBar.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -177,14 +177,15 @@ export function TopBar({ availableProjects = [], endpoints = [], onRefreshProjec
177177
<ChevronDown size={12} className="text-monastery-text-muted" />
178178
</button>
179179

180-
{/* Project Dropdown */}
180+
{/* Project Dropdown — z-50 so pane chrome (e.g. the chat header) can never
181+
paint over an open top-bar menu */}
181182
{projectDropdownOpen && (
182183
<>
183184
<div
184-
className="fixed inset-0 z-10"
185+
className="fixed inset-0 z-40"
185186
onClick={() => setProjectDropdownOpen(false)}
186187
/>
187-
<div className="absolute top-full left-0 mt-1 w-64 bg-monastery-dark-surface border border-monastery-dark-border rounded-lg shadow-xl z-20 py-1 max-h-72 overflow-y-auto">
188+
<div className="absolute top-full left-0 mt-1 w-64 bg-monastery-dark-surface border border-monastery-dark-border rounded-lg shadow-xl z-50 py-1 max-h-72 overflow-y-auto">
188189
{availableProjects.length === 0 && (
189190
<div className="px-3 py-2 text-xs text-monastery-text-muted">No projects yet — create one below.</div>
190191
)}
@@ -269,8 +270,8 @@ export function TopBar({ availableProjects = [], endpoints = [], onRefreshProjec
269270

270271
{llmDropdownOpen && endpoints.length > 1 && (
271272
<>
272-
<div className="fixed inset-0 z-10" onClick={() => setLlmDropdownOpen(false)} />
273-
<div className="absolute top-full right-0 mt-1 w-64 bg-monastery-dark-surface border border-monastery-dark-border rounded-lg shadow-xl z-20 py-1">
273+
<div className="fixed inset-0 z-40" onClick={() => setLlmDropdownOpen(false)} />
274+
<div className="absolute top-full right-0 mt-1 w-64 bg-monastery-dark-surface border border-monastery-dark-border rounded-lg shadow-xl z-50 py-1">
274275
{endpoints.map((ep) => (
275276
<button
276277
key={ep.id}

packages/web-ui/src/index.css

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
--color-lantern: #F4A460;
1212
--color-amber: #FFBF00;
1313

14-
/* Dark mode base — deep navy blue */
14+
/* Dark mode base — deep navy blue. The border is a low-alpha blue-grey rather than a
15+
solid color: it reads as definition on raised surfaces (menus, cards) but recedes on
16+
flat chrome, so pane seams stop looking like ruled lines. */
1517
--bg-primary: #0A1628;
1618
--bg-secondary: #0F1D32;
1719
--bg-tertiary: #162744;
18-
--border-color: #1A2D4A;
20+
--border-color: rgba(148, 166, 196, 0.14);
1921
--text-primary: #E6EDF3;
2022
--text-secondary: #8B949E;
2123
--text-muted: #6E7681;
@@ -35,7 +37,7 @@
3537
--bg-primary: #F0F4FA;
3638
--bg-secondary: #FFFFFF;
3739
--bg-tertiary: #F5F8FC;
38-
--border-color: #D0D8E4;
40+
--border-color: rgba(20, 40, 70, 0.12);
3941
--text-primary: #0A1628;
4042
--text-secondary: #3A4A5C;
4143
--text-muted: #6B7B8D;
@@ -82,7 +84,9 @@ code, pre, .monaco-editor {
8284
}
8385

8486
::-webkit-scrollbar-thumb {
85-
background: var(--border-color);
87+
/* Slightly stronger than --border-color so the thumb stays findable now that the
88+
border token is low-alpha. */
89+
background: rgba(148, 166, 196, 0.28);
8690
border-radius: 4px;
8791
}
8892

0 commit comments

Comments
 (0)