import React, { useState } from 'react'; import { HeroGeometric } from './components/HeroGeometric'; import ProblemSolution from './components/ProblemSolution'; import KeyCapabilities from './components/KeyCapabilities'; import Process from './components/Process'; import TechStack from './components/TechStack'; import Footer from './components/Footer'; import { BackgroundPaths } from './components/BackgroundPaths'; import { Logo } from './components/Logo'; import { ChatInterface } from './components/ChatInterface'; import { AuthPage } from './components/AuthPage'; import { AuthProvider, useAuth } from './lib/AuthContext'; import { User, LogOut, Loader2 } from 'lucide-react'; // Inner app component that uses auth context const AppContent: React.FC = () => { const [view, setView] = useState<'landing' | 'chat' | 'auth'>('landing'); const { user, isAuthenticated, loading, signOut, isConfigured, needsOnboarding } = useAuth(); const [showUserMenu, setShowUserMenu] = useState(false); // Close user menu when clicking outside React.useEffect(() => { const handleClickOutside = (event: MouseEvent) => { const target = event.target as HTMLElement; if (showUserMenu && !target.closest('.user-menu-container')) { setShowUserMenu(false); } }; document.addEventListener('mousedown', handleClickOutside); return () => document.removeEventListener('mousedown', handleClickOutside); }, [showUserMenu]); // If user is authenticated but needs onboarding, show auth page React.useEffect(() => { if (isAuthenticated && needsOnboarding && view !== 'auth') { console.log('User needs onboarding, showing form...'); setView('auth'); } }, [isAuthenticated, needsOnboarding, view]); // Handle launch console - redirect to auth if not logged in const handleLaunchConsole = () => { if (isAuthenticated) { setView('chat'); } else { // Redirect to auth page first setView('auth'); } }; // Show loading state only briefly if (loading) { return (