Files
zclaw_openfang/desktop/src/App.tsx
2026-03-12 00:23:42 +08:00

45 lines
1.2 KiB
TypeScript

import { useState, useEffect } from 'react';
import './index.css';
import { Sidebar } from './components/Sidebar';
import { ChatArea } from './components/ChatArea';
import { RightPanel } from './components/RightPanel';
import { SettingsLayout } from './components/Settings/SettingsLayout';
import { useGatewayStore } from './store/gatewayStore';
type View = 'main' | 'settings';
function App() {
const [view, setView] = useState<View>('main');
const { connect, connectionState } = useGatewayStore();
// Auto-connect to Gateway on startup
useEffect(() => {
if (connectionState === 'disconnected') {
connect().catch(() => {
// Silent fail — user can manually connect via Settings
});
}
}, []);
if (view === 'settings') {
return <SettingsLayout onBack={() => setView('main')} />;
}
return (
<div className="h-screen flex overflow-hidden text-gray-800 text-sm">
{/* 左侧边栏 */}
<Sidebar onOpenSettings={() => setView('settings')} />
{/* 中间对话区域 */}
<main className="flex-1 flex flex-col bg-white relative">
<ChatArea />
</main>
{/* 右侧边栏 */}
<RightPanel />
</div>
);
}
export default App;