File size: 1,320 Bytes
e85fa50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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;