Add workspace landing page

This commit is contained in:
2026-07-20 11:40:45 +08:00
parent 9c4ad986c0
commit da76abf2d0
10 changed files with 260 additions and 28 deletions

View File

@@ -1,29 +1,34 @@
import { Layout } from '@arco-design/web-react'
import { WorkspacePage } from './workspace'
import { ProjectOverview } from './projects/project-overview'
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'
import type { ChannelKey, Project, Theme, WorkbenchView } from './projects/project-types'
const { Content } = Layout
export function ProjectPage({
activeView,
activeProject,
activeChannel,
selectedItem,
theme,
onSelectProject,
onSelectWorkspace,
onSelectChannel,
onSelectItem,
onToggleTheme,
}: {
activeView: WorkbenchView
activeProject: Project
activeChannel: ChannelKey
selectedItem: string
theme: Theme
onSelectProject: (project: Project) => void
onSelectWorkspace: () => void
onSelectChannel: (key: ChannelKey) => void
onSelectItem: (title: string) => void
onToggleTheme: () => void
@@ -33,9 +38,15 @@ export function ProjectPage({
<ProjectTopbar theme={theme} onToggleTheme={onToggleTheme} />
<Layout className="workbench-main" hasSider>
<ProjectRail activeProject={activeProject} onSelectProject={onSelectProject} />
<ProjectRail
activeProject={activeProject}
activeView={activeView}
onSelectWorkspace={onSelectWorkspace}
onSelectProject={onSelectProject}
/>
<ProjectSidebar
activeView={activeView}
activeProject={activeProject}
activeChannel={activeChannel}
onSelectChannel={onSelectChannel}
@@ -43,10 +54,19 @@ export function ProjectPage({
/>
<Content className="stage">
<ProjectOverview onSelectItem={onSelectItem} />
{activeView === 'workspace' ? (
<WorkspacePage onSelectProject={onSelectProject} />
) : (
<ProjectOverview onSelectItem={onSelectItem} />
)}
</Content>
<ProjectInspector activeProject={activeProject} activeChannel={activeChannel} selectedItem={selectedItem} />
<ProjectInspector
activeView={activeView}
activeProject={activeProject}
activeChannel={activeChannel}
selectedItem={activeView === 'workspace' ? '工作台动态' : selectedItem}
/>
</Layout>
<ProjectStatusbar />