Files
Endoleap/src/app/dashboard/layout.tsx
T

25 lines
1.1 KiB
TypeScript

/**
* 工作台共享布局,装配当前画布Context、侧栏及子路由,并加载React Flow默认样式。
* 布局本身只放侧栏与children;根叶页面为空,画布子路由通过children提供主编辑区。
*/
import "@xyflow/react/dist/style.css";
import { Suspense, type ReactNode } from "react";
import { ActiveBoardProvider } from "@/components/workspace/active-board";
import DashboardSidebar from "./dashboard";
import styles from "@/components/workspace/workspace.module.css";
/** 当前board信息由ActiveBoardProvider跨侧栏/画布共享;Suspense只包侧栏,fallback保留其布局宽度。
* 该边界响应侧栏渲染期间的 suspend,不自动等待侧栏在 effect 中发起的普通请求。 */
export default function DashboardLayout({ children }: { children: ReactNode }) {
return (
<ActiveBoardProvider>
<div className={styles.shell}>
<Suspense fallback={<aside className={styles.sidebar} aria-label="正在加载侧边栏" aria-busy="true" />}>
<DashboardSidebar />
</Suspense>
{children}
</div>
</ActiveBoardProvider>
);
}