import { useState, useEffect } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import './index.css'; import { Sidebar, MainViewType } from './components/Sidebar'; import { ChatArea } from './components/ChatArea'; import { RightPanel } from './components/RightPanel'; import { SettingsLayout } from './components/Settings/SettingsLayout'; import { HandTaskPanel } from './components/HandTaskPanel'; import { SchedulerPanel } from './components/SchedulerPanel'; import { TeamCollaborationView } from './components/TeamCollaborationView'; import { useGatewayStore } from './store/gatewayStore'; import { useTeamStore } from './store/teamStore'; import { getStoredGatewayToken } from './lib/gateway-client'; import { pageVariants, defaultTransition, fadeInVariants } from './lib/animations'; import { Bot, Users } from 'lucide-react'; import { EmptyState } from './components/ui'; type View = 'main' | 'settings'; function App() { const [view, setView] = useState('main'); const [mainContentView, setMainContentView] = useState('chat'); const [selectedHandId, setSelectedHandId] = useState(undefined); const [selectedTeamId, setSelectedTeamId] = useState(undefined); const { connect, connectionState } = useGatewayStore(); const { activeTeam, setActiveTeam, teams } = useTeamStore(); useEffect(() => { document.title = 'ZCLAW'; }, []); useEffect(() => { if (connectionState === 'disconnected') { const gatewayToken = getStoredGatewayToken(); connect(undefined, gatewayToken).catch(() => {}); } }, [connect, connectionState]); // 当切换到非 hands 视图时清除选中的 Hand const handleMainViewChange = (view: MainViewType) => { setMainContentView(view); if (view !== 'hands') { // 可选:清除选中的 Hand // setSelectedHandId(undefined); } }; const handleSelectTeam = (teamId: string) => { const team = teams.find(t => t.id === teamId); if (team) { setActiveTeam(team); setSelectedTeamId(teamId); } }; if (view === 'settings') { return setView('main')} />; } return (
{/* 左侧边栏 */} setView('settings')} onMainViewChange={handleMainViewChange} selectedHandId={selectedHandId} onSelectHand={setSelectedHandId} selectedTeamId={selectedTeamId} onSelectTeam={handleSelectTeam} /> {/* 中间区域 */} {mainContentView === 'hands' && selectedHandId ? ( setSelectedHandId(undefined)} /> ) : mainContentView === 'hands' ? ( } title="Select a Hand" description="Choose an autonomous capability package from the list on the left to view its task list and execution results." /> ) : mainContentView === 'workflow' ? ( ) : mainContentView === 'team' ? ( activeTeam ? ( ) : ( } title="Select or Create a Team" description="Choose a team from the list on the left, or click + to create a new multi-Agent collaboration team." /> ) ) : ( )} {/* 右侧边栏 */}
); } export default App;