diff --git a/frontend-web/src/components/page-sidebar-dark.tsx b/frontend-web/src/components/page-sidebar-dark.tsx index 2670f137..4d409edf 100644 --- a/frontend-web/src/components/page-sidebar-dark.tsx +++ b/frontend-web/src/components/page-sidebar-dark.tsx @@ -1,5 +1,6 @@ import { useEffect, useRef, useState } from "react"; import { useNavigate, useLocation } from "react-router-dom"; +import { PanelLeftOpen, PanelLeftClose } from "lucide-react"; import { getStoredAuth } from "@/core/auth"; import { isWujieEnv } from "@/core/embed/wujie"; @@ -12,7 +13,13 @@ import { import { useSidebarMenuItems } from "@/core/page-layout/use-sidebar-menu"; import './page-sdebar.css' -export function PageSidebarDark() { +type PageSidebarDarkProps = { + /** 是否收起(true 时只渲染左下角浮动入口,sidebar 主体隐藏) */ + collapsed: boolean; + onToggleCollapsed: () => void; +}; + +export function PageSidebarDark({ collapsed, onToggleCollapsed }: PageSidebarDarkProps) { const isAdmin = getStoredAuth()?.system_role === "admin"; const visibleMenuItems = useSidebarMenuItems(!!isAdmin); const inWujieEnv = isWujieEnv(); @@ -189,6 +196,22 @@ export function PageSidebarDark() { ); + // 收起时主侧栏不占宽度,保留左下角入口以便随时恢复。 + if (collapsed) { + return ( + + ); + } + return ( ); diff --git a/frontend-web/src/pages/PageRoutes.tsx b/frontend-web/src/pages/PageRoutes.tsx index 54b98a5c..f76e80ad 100644 --- a/frontend-web/src/pages/PageRoutes.tsx +++ b/frontend-web/src/pages/PageRoutes.tsx @@ -31,8 +31,6 @@ function PageLayout() { const location = useLocation(); const { theme } = useTheme(); const isDark = theme === "dark"; - // 深色导航侧栏不提供收起入口,始终保持展开,避免切换主题后沿用浅色模式的收起状态。 - const sidebarCollapsed = isDark ? false : collapsed; // 浅色非嵌入:侧边栏为新版「二级导航图标卡片」窄栏(96px);wujie 嵌入仍走旧版手风琴(64/256px)。 const inWujie = useMemo(() => isWujieEnv(), []); const lightNarrowSidebar = !isDark && !inWujie; @@ -76,14 +74,17 @@ function PageLayout() { return (
- {pageSidebarAllowed &&
} + {pageSidebarAllowed &&
}
{pageSidebarAllowed && ( isDark ? ( - + setCollapsed((prev) => !prev)} + /> ) : ( setCollapsed((prev) => !prev)} /> ) @@ -93,8 +94,8 @@ function PageLayout() { !pageSidebarAllowed ? "" : isDark - // 深色 sidebar 固定展开 118px(10 + 98 + 10 gap)。 - ? "pl-[118px]" + // 深色 sidebar:展开 118px(10 + 98 + 10 gap),收起时主内容不留左内边距。 + ? (collapsed ? "pl-0" : "pl-[118px]") : lightNarrowSidebar // 浅色新版窄栏:展开三级列时 96→236px,主内容左内边距随之过渡 ? `transition-[padding] duration-300 ${lightExpanded ? "pl-[236px]" : "pl-[96px]"}` @@ -108,7 +109,7 @@ function PageLayout() { path="workspace/*" element={ (
diff --git a/frontend-web/src/roundtable-planning/styles/roundtable-planning.css b/frontend-web/src/roundtable-planning/styles/roundtable-planning.css index bf583d12..1584742a 100644 --- a/frontend-web/src/roundtable-planning/styles/roundtable-planning.css +++ b/frontend-web/src/roundtable-planning/styles/roundtable-planning.css @@ -343,6 +343,17 @@ color: var(--muted-foreground) !important; } +/* ---- Step1 右侧「澄清记录」:覆盖 hover:bg-slate-50/80,避免深色下泛灰白 ---- */ +:is(.dark .roundtable-planning, .roundtable-planning--dark) + .roundtable-clarification-entry:hover { + background-color: rgb(22 119 255 / 18%) !important; +} + +:is(.dark .roundtable-planning, .roundtable-planning--dark) + .roundtable-clarification-entry:hover h4 { + color: #e8edf5 !important; +} + /* ---- focus ring:brand-200 → 主色淡环 ---- */ :is(.dark .roundtable-planning, .roundtable-planning--dark) :is( diff --git a/frontend-web/src/strategy-components/Header.tsx b/frontend-web/src/strategy-components/Header.tsx index 3ebee2a5..3ca08ddc 100644 --- a/frontend-web/src/strategy-components/Header.tsx +++ b/frontend-web/src/strategy-components/Header.tsx @@ -59,7 +59,8 @@ const Header = ({ collapsed }: HeaderProps) => { const positionName = myPosition?.name?.trim() || ""; const displayName = liveAccount.displayName; - const showTopNav = isDark && !collapsed && !isWujieEnv(); + // 深色侧栏收起只影响左侧导航,不应让顶栏回退到浅色的图标布局。 + const showTopNav = isDark && !isWujieEnv(); // 浅色(红/蓝)顶栏:一级导航正常横排进顶栏,不做深色那种围绕基座的特殊处理。 // 与 collapsed 解耦(折叠只影响侧边栏,一级导航始终可见);wujie 嵌入下隐藏, // 此时一级导航回落到侧边栏(见 page-sidebar.tsx)。