From e7cd5287f1ee0aa42a5a2fb034e74cd028ea85cd Mon Sep 17 00:00:00 2001 From: Henry Li Date: Sat, 7 Feb 2026 11:10:24 +0800 Subject: [PATCH] feat: enhance workspace navigation menu with conditional rendering and mounted state --- .../workspace/workspace-nav-menu.tsx | 180 ++++++++++-------- 1 file changed, 101 insertions(+), 79 deletions(-) diff --git a/frontend/src/components/workspace/workspace-nav-menu.tsx b/frontend/src/components/workspace/workspace-nav-menu.tsx index 9ba9507..8b99be0 100644 --- a/frontend/src/components/workspace/workspace-nav-menu.tsx +++ b/frontend/src/components/workspace/workspace-nav-menu.tsx @@ -9,7 +9,7 @@ import { Settings2Icon, SettingsIcon, } from "lucide-react"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import { DropdownMenu, @@ -30,13 +30,39 @@ import { useI18n } from "@/core/i18n/hooks"; import { GithubIcon } from "./github-icon"; import { SettingsDialog } from "./settings"; +function NavMenuButtonContent({ + isSidebarOpen, + t, +}: { + isSidebarOpen: boolean; + t: ReturnType["t"]; +}) { + return isSidebarOpen ? ( +
+ + {t.workspace.settingsAndMore} + +
+ ) : ( +
+ +
+ ); +} + export function WorkspaceNavMenu() { const [settingsOpen, setSettingsOpen] = useState(false); const [settingsDefaultSection, setSettingsDefaultSection] = useState< "appearance" | "memory" | "tools" | "skills" | "notification" | "about" >("appearance"); + const [mounted, setMounted] = useState(false); const { open: isSidebarOpen } = useSidebar(); const { t } = useI18n(); + + useEffect(() => { + setMounted(true); + }, []); + return ( <> - - - + + + + + + - {isSidebarOpen ? ( -
- - {t.workspace.settingsAndMore} - -
- ) : ( -
- -
- )} -
-
- - + + { + setSettingsDefaultSection("appearance"); + setSettingsOpen(true); + }} + > + + {t.common.settings} + + + + + + {t.workspace.officialWebsite} + + + + + + {t.workspace.visitGithub} + + + + + + + {t.workspace.reportIssue} + + + + + + {t.workspace.contactUs} + + + + { - setSettingsDefaultSection("appearance"); + setSettingsDefaultSection("about"); setSettingsOpen(true); }} > - - {t.common.settings} + + {t.workspace.about} - - - - - {t.workspace.officialWebsite} - - - - - - {t.workspace.visitGithub} - - - - - - - {t.workspace.reportIssue} - - - - - - {t.workspace.contactUs} - - - - - { - setSettingsDefaultSection("about"); - setSettingsOpen(true); - }} - > - - {t.workspace.about} - - -
+ + + ) : ( + + + + )}