2026-07-20 10:50:42 +08:00
|
|
|
import { Layout } from '@arco-design/web-react'
|
|
|
|
|
import { OverviewPage } from './overview'
|
2026-07-20 10:53:26 +08:00
|
|
|
import { ProjectInspector } from './projects/project-inspector'
|
|
|
|
|
import { ProjectRail } from './projects/project-rail'
|
|
|
|
|
import { ProjectSidebar } from './projects/project-sidebar'
|
|
|
|
|
import { ProjectStatusbar } from './projects/project-statusbar'
|
|
|
|
|
import { ProjectTopbar } from './projects/project-topbar'
|
|
|
|
|
import type { ChannelKey, Project, Theme } from './projects/project-types'
|
2026-07-20 10:50:42 +08:00
|
|
|
|
|
|
|
|
const { Content } = Layout
|
|
|
|
|
|
|
|
|
|
export function ProjectPage({
|
|
|
|
|
activeProject,
|
|
|
|
|
activeChannel,
|
|
|
|
|
selectedItem,
|
|
|
|
|
theme,
|
|
|
|
|
onSelectProject,
|
|
|
|
|
onSelectChannel,
|
|
|
|
|
onSelectItem,
|
|
|
|
|
onToggleTheme,
|
|
|
|
|
}: {
|
|
|
|
|
activeProject: Project
|
|
|
|
|
activeChannel: ChannelKey
|
|
|
|
|
selectedItem: string
|
|
|
|
|
theme: Theme
|
|
|
|
|
onSelectProject: (project: Project) => void
|
|
|
|
|
onSelectChannel: (key: ChannelKey) => void
|
|
|
|
|
onSelectItem: (title: string) => void
|
|
|
|
|
onToggleTheme: () => void
|
|
|
|
|
}) {
|
|
|
|
|
return (
|
|
|
|
|
<Layout className="workbench-shell">
|
|
|
|
|
<ProjectTopbar theme={theme} onToggleTheme={onToggleTheme} />
|
|
|
|
|
|
2026-07-20 11:03:27 +08:00
|
|
|
<Layout className="workbench-main" hasSider>
|
2026-07-20 10:50:42 +08:00
|
|
|
<ProjectRail activeProject={activeProject} onSelectProject={onSelectProject} />
|
|
|
|
|
|
|
|
|
|
<ProjectSidebar
|
|
|
|
|
activeProject={activeProject}
|
|
|
|
|
activeChannel={activeChannel}
|
|
|
|
|
onSelectChannel={onSelectChannel}
|
|
|
|
|
onSelectItem={onSelectItem}
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
|
|
<Content className="stage">
|
|
|
|
|
<OverviewPage onSelectItem={onSelectItem} />
|
|
|
|
|
</Content>
|
|
|
|
|
|
|
|
|
|
<ProjectInspector activeProject={activeProject} activeChannel={activeChannel} selectedItem={selectedItem} />
|
|
|
|
|
</Layout>
|
|
|
|
|
|
|
|
|
|
<ProjectStatusbar />
|
|
|
|
|
</Layout>
|
|
|
|
|
)
|
|
|
|
|
}
|