Files
agent/apps/senlinai-acro-react/src/pages/project.tsx

86 lines
2.4 KiB
TypeScript
Raw Normal View History

2026-07-20 10:50:42 +08:00
import { Layout } from '@arco-design/web-react'
2026-07-20 11:40:45 +08:00
import { WorkspacePage } from './workspace'
2026-07-20 12:26:21 +08:00
import { ProjectChannelPage } from './projects/project-channel-page'
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'
2026-07-20 11:40:45 +08:00
import type { ChannelKey, Project, Theme, WorkbenchView } from './projects/project-types'
2026-07-20 10:50:42 +08:00
const { Content } = Layout
export function ProjectPage({
2026-07-20 11:40:45 +08:00
activeView,
2026-07-20 10:50:42 +08:00
activeProject,
activeChannel,
selectedItem,
theme,
onSelectProject,
2026-07-20 11:40:45 +08:00
onSelectWorkspace,
2026-07-20 10:50:42 +08:00
onSelectChannel,
onSelectItem,
onToggleTheme,
}: {
2026-07-20 11:40:45 +08:00
activeView: WorkbenchView
2026-07-20 10:50:42 +08:00
activeProject: Project
activeChannel: ChannelKey
selectedItem: string
theme: Theme
onSelectProject: (project: Project) => void
2026-07-20 11:40:45 +08:00
onSelectWorkspace: () => void
2026-07-20 10:50:42 +08:00
onSelectChannel: (key: ChannelKey) => void
onSelectItem: (title: string) => void
onToggleTheme: () => void
}) {
2026-07-20 11:49:01 +08:00
const isWorkspace = activeView === 'workspace'
2026-07-20 10:50:42 +08:00
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 11:40:45 +08:00
<ProjectRail
activeProject={activeProject}
activeView={activeView}
onSelectWorkspace={onSelectWorkspace}
onSelectProject={onSelectProject}
/>
2026-07-20 10:50:42 +08:00
2026-07-20 11:49:01 +08:00
{!isWorkspace && (
<ProjectSidebar
activeView={activeView}
activeProject={activeProject}
activeChannel={activeChannel}
onSelectChannel={onSelectChannel}
onSelectItem={onSelectItem}
/>
)}
2026-07-20 10:50:42 +08:00
<Content className="stage">
2026-07-20 11:49:01 +08:00
{isWorkspace ? (
2026-07-20 11:40:45 +08:00
<WorkspacePage onSelectProject={onSelectProject} />
) : (
2026-07-20 12:26:21 +08:00
<ProjectChannelPage
activeChannel={activeChannel}
activeProject={activeProject}
onSelectItem={onSelectItem}
/>
2026-07-20 11:40:45 +08:00
)}
2026-07-20 10:50:42 +08:00
</Content>
2026-07-20 11:49:01 +08:00
{!isWorkspace && (
<ProjectInspector
activeView={activeView}
activeProject={activeProject}
activeChannel={activeChannel}
selectedItem={selectedItem}
/>
)}
2026-07-20 10:50:42 +08:00
</Layout>
<ProjectStatusbar />
</Layout>
)
}