From ef4455f68d4aee570724f1f2e548a977af4dc5f7 Mon Sep 17 00:00:00 2001 From: Anso Date: Sun, 19 Apr 2026 15:11:16 -0400 Subject: [PATCH] refactor(ui): rework top bar nav as cockpit switch row (#697) Replace the sliding accent pill and blurred underline with material-at- rest tabs that speak the cyan identity language used elsewhere in the chrome. Each tab is a full-height button with a tracked-mono uppercase label, and the active tab carries a crisp 2px cyan rail flush with the bar's bottom edge. Drops the primitive, the springs import, and the unused navTabValue memo/prop from EditorLayout. --- frontend/src/components/EditorLayout.tsx | 4 -- frontend/src/components/TopBar.tsx | 62 +++++++++++------------- 2 files changed, 27 insertions(+), 39 deletions(-) diff --git a/frontend/src/components/EditorLayout.tsx b/frontend/src/components/EditorLayout.tsx index 7a5266d1..ad05d93f 100644 --- a/frontend/src/components/EditorLayout.tsx +++ b/frontend/src/components/EditorLayout.tsx @@ -378,9 +378,6 @@ export default function EditorLayout() { return items; }, [isAdmin, isPaid, license?.variant, can]); - // Only highlight a tab if activeView matches a nav item - const navTabValue = navItems.some(i => i.value === activeView) ? activeView : undefined; - // Reset editor state (extracted from Home button onClick) const resetEditorState = () => { setSelectedFile(null); @@ -2484,7 +2481,6 @@ export default function EditorLayout() { void; mobileNavOpen: boolean; onMobileNavOpenChange: (open: boolean) => void; @@ -27,7 +24,6 @@ interface TopBarProps { export function TopBar({ activeView, navItems, - navTabValue, onNavigate, mobileNavOpen, onMobileNavOpenChange, @@ -46,37 +42,33 @@ export function TopBar({
{/* CENTER ZONE: Navigation (hidden on mobile) */} -