Files
agent/apps/senlinai-acro-react/src/app/App.tsx

47 lines
1.6 KiB
TypeScript
Raw Normal View History

2026-07-20 10:50:42 +08:00
import { useState } from 'react'
import { ConfigProvider } from '@arco-design/web-react'
import '@arco-design/web-react/dist/css/arco.css'
import '../App.css'
import { LoginPage } from '../pages/login'
import { ProjectPage } from '../pages/project'
2026-07-20 10:53:26 +08:00
import { projects } from '../pages/projects/project-data'
2026-07-20 11:40:45 +08:00
import type { ChannelKey, Screen, Theme, WorkbenchView } from '../pages/projects/project-types'
2026-07-20 10:50:42 +08:00
function App() {
const [screen, setScreen] = useState<Screen>('login')
const [theme, setTheme] = useState<Theme>('light')
2026-07-20 11:40:45 +08:00
const [activeView, setActiveView] = useState<WorkbenchView>('workspace')
2026-07-20 10:50:42 +08:00
const [activeProject, setActiveProject] = useState(projects[0])
const [activeChannel, setActiveChannel] = useState<ChannelKey>('overview')
2026-07-20 12:45:13 +08:00
const [, setSelectedItem] = useState('Inbox 待处理36')
2026-07-20 10:50:42 +08:00
const dark = theme === 'dark'
return (
<ConfigProvider>
<main className={dark ? 'app theme-dark' : 'app'}>
{screen === 'login' ? (
<LoginPage onLogin={() => setScreen('workbench')} />
) : (
<ProjectPage
2026-07-20 11:40:45 +08:00
activeView={activeView}
2026-07-20 10:50:42 +08:00
activeProject={activeProject}
activeChannel={activeChannel}
theme={theme}
2026-07-20 11:40:45 +08:00
onSelectWorkspace={() => setActiveView('workspace')}
onSelectProject={(project) => {
setActiveProject(project)
setActiveView('project')
}}
2026-07-20 10:50:42 +08:00
onSelectChannel={setActiveChannel}
onSelectItem={setSelectedItem}
onToggleTheme={() => setTheme(dark ? 'light' : 'dark')}
/>
)}
</main>
</ConfigProvider>
)
}
export default App