import React, { useState, useEffect } from 'react'; import { X } from 'lucide-react'; import Navbar from './components/Navbar'; import ProductGuide from './components/ProductGuide'; // Importing Tab components import LandingTab from './components/LandingTab'; import SimulationPage from './components/SimulationPage'; import ChatPage from './components/ChatPage'; import PersonaBuilderTab from './components/PersonaBuilderTab'; import ContentCraftTab from './components/ContentCraftTab'; import BrowserAutomationTab from './components/BrowserAutomationTab'; import QaTestingTab from './components/QaTestingTab'; import DataExtractionTab from './components/DataExtractionTab'; import UiVerificationTab from './components/UiVerificationTab'; import DeploymentTab from './components/DeploymentTab'; function App() { const [currentTab, setCurrentTab] = useState(1); // Default to Tab 1 (LandingTab) for a better welcoming flow const [showGuide, setShowGuide] = useState(false); const [user, setUser] = useState(null); const [simulationResult, setSimulationResult] = useState(null); useEffect(() => { const fetchUser = async () => { try { const response = await fetch('/api/user'); if (response.ok) { const data = await response.json(); setUser(data); } } catch (error) { console.error("Failed to fetch user:", error); } }; fetchUser(); const handleStorage = () => fetchUser(); window.addEventListener('storage', handleStorage); return () => window.removeEventListener('storage', handleStorage); }, []); const loginWithHF = () => { window.open('/login', '_blank'); }; const handleLogout = async () => { await fetch('/api/logout'); setUser(null); }; if (showGuide) { return (
); } // Helper function to render current tab component const renderTabContent = () => { switch (currentTab) { case 1: return ; case 2: return ( setCurrentTab(1)} onOpenChat={() => setCurrentTab(3)} onOpenGuide={() => setShowGuide(true)} user={user} onLogin={loginWithHF} onLogout={handleLogout} simulationResult={simulationResult} setSimulationResult={setSimulationResult} /> ); case 3: return ( setCurrentTab(2)} simulationResult={simulationResult} setSimulationResult={setSimulationResult} /> ); case 4: return ; case 5: return ; case 6: return ; case 7: return ; case 8: return ; case 9: return ; case 10: return ; default: return ; } }; return (
{renderTabContent()}
); } export default App;