Spaces:
Sleeping
Sleeping
import React from 'react'; | |
import Header from './Header'; | |
import Navigation from './Navigation'; | |
import Sidebar from './Sidebar'; | |
interface LayoutProps { | |
children: React.ReactNode; | |
title?: string; | |
showBackButton?: boolean; | |
rightAction?: React.ReactNode; | |
} | |
const Layout: React.FC<LayoutProps> = ({ | |
children, | |
title, | |
showBackButton = false, | |
rightAction | |
}) => { | |
return ( | |
<div className="flex min-h-screen bg-gray-100"> | |
{/* 桌面侧边栏 - 仅在中等及更大屏幕显示 */} | |
<div className="hidden md:block w-64 border-r border-gray-200 bg-white"> | |
<Sidebar /> | |
</div> | |
{/* 主内容区 */} | |
<div className="flex flex-col flex-1 w-full"> | |
<Header | |
title={title} | |
showBackButton={showBackButton} | |
rightAction={rightAction} | |
/> | |
<main className="flex-1 p-4 md:p-6 pb-20 md:pb-6 overflow-auto"> | |
{/* 包装器,提供合适的最大宽度 */} | |
<div className="max-w-7xl mx-auto"> | |
{children} | |
</div> | |
</main> | |
{/* 移动导航 - 仅在小屏幕显示 */} | |
<div className="md:hidden"> | |
<Navigation /> | |
</div> | |
</div> | |
</div> | |
); | |
}; | |
export default Layout; |