import { useState, useCallback } from 'react'; import { Outlet } from 'react-router-dom'; import { TopNav } from '@/components/TopNav'; import { SideNav } from '@/components/SideNav'; import { useRiskStore } from '@/stores'; import { TESTIDS } from '@/utils/testids'; interface AppShellProps { onLogout?: () => void; } // 仅负责布局骨架(顶栏 / 侧栏 / 内容区),不涉及路由匹配与鉴权。 export function AppShell({ onLogout }: AppShellProps) { const alerts = useRiskStore((s) => s.alerts); const [drawerOpen, setDrawerOpen] = useState(false); const openDrawer = useCallback(() => setDrawerOpen(true), []); const closeDrawer = useCallback(() => setDrawerOpen(false), []); return (
{/* lg 及以上:持久侧栏导轨 */} {/* lg 以下:离屏抽屉 + 遮罩 */} {drawerOpen && (
); }