import React, { useState, useEffect } from 'react'; import { ThemeProvider } from './contexts/ThemeContext'; import { AppConfigProvider } from './contexts/AppConfigContext'; import HomePage from './pages/HomePage'; import ChatPage from './pages/ChatPage'; import AuthPage from './pages/AuthPage'; import CanvasPage from './pages/CanvasPage'; import UserGuide from './components/UserGuide'; import './styles/components.css'; function App() { const [currentView, setCurrentView] = useState('home'); const [isAuthenticated, setIsAuthenticated] = useState(false); const [user, setUser] = useState(null); const [authToken, setAuthToken] = useState(null); // Check for existing authentication on app start useEffect(() => { const token = localStorage.getItem('authToken'); const userData = localStorage.getItem('user'); if (token && userData) { try { const parsedUser = JSON.parse(userData); setAuthToken(token); setUser(parsedUser); setIsAuthenticated(true); setCurrentView('chat'); } catch (error) { // Clear invalid data localStorage.removeItem('authToken'); localStorage.removeItem('user'); } } }, []); const navigateToAuth = () => { setCurrentView('auth'); }; const navigateToCanvas = (canvasView) => { if (['insights', 'workspace', 'deliverables'].includes(canvasView)) { localStorage.setItem('canvas-view-v2', canvasView); } setCurrentView('canvas'); }; const navigateToChat = () => { setCurrentView('chat'); }; const navigateToHome = () => { setCurrentView('home'); }; const handleAuthSuccess = (userData, token) => { setUser(userData); setAuthToken(token); setIsAuthenticated(true); setCurrentView('chat'); }; const handleSignOut = () => { localStorage.removeItem('authToken'); localStorage.removeItem('user'); setUser(null); setAuthToken(null); setIsAuthenticated(false); setCurrentView('home'); }; return (
{currentView === 'home' && ( )} {currentView === 'auth' && ( )} {currentView === 'canvas' && isAuthenticated && ( )} {currentView === 'chat' && isAuthenticated && ( )} {/* Global help center — listens for the 'open-user-guide' event */}
); } export default App;