import { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { TESTIDS } from '@/utils/testids'; import { useSessionStore, ROLES, type Role } from '@/stores/sessionStore'; import { ROLE_LABELS, roleDefaultPath } from '@/utils/roleViews'; interface TopNavProps { onLogout?: () => void; // 移动端汉堡按钮:切换侧栏抽屉。 onToggleMenu?: () => void; // 抽屉是否展开(用于汉堡按钮的 aria-expanded)。 isMenuOpen?: boolean; } function Clock() { const [time, setTime] = useState(new Date()); useEffect(() => { const id = setInterval(() => setTime(new Date()), 1000); return () => clearInterval(id); }, []); return {time.toLocaleTimeString('zh-CN', { hour: '2-digit', minute: '2-digit' })}; } // 视角切换器:纯前端视图预设(D2)。刻意标注「视角」而非「权限」——不是访问控制。 // 切换时持久化角色并跳转到该视角的默认落地页。 function PerspectiveSwitcher() { const role = useSessionStore((s) => s.role); const setRole = useSessionStore((s) => s.setRole); const navigate = useNavigate(); const handleChange = (next: Role) => { setRole(next); navigate(roleDefaultPath(next)); }; return ( ); } export function TopNav({ onLogout, onToggleMenu, isMenuOpen = false }: TopNavProps) { return ( ); }