testarcbuilder / App.tsx
wuhp's picture
Update App.tsx
88a044e verified
import React, { useState, Suspense } from 'react';
import { ReactFlowProvider } from 'reactflow';
import { Sparkles } from 'lucide-react';
import LandingPage from './components/LandingPage';
// Lazy load the heavy builder component to improve initial load performance
const Builder = React.lazy(() => import('./components/Builder'));
// Loading screen fallback for Suspense
const LoadingScreen = () => (
<div className="fixed inset-0 bg-slate-950 flex items-center justify-center text-white z-50">
<div className="flex flex-col items-center gap-4">
<Sparkles className="animate-spin text-blue-500" size={32} />
<p className="text-slate-400 text-sm animate-pulse font-medium">Loading Builder Environment...</p>
</div>
</div>
);
const App = () => {
const [showLanding, setShowLanding] = useState(true);
if (showLanding) {
return <LandingPage onEnterApp={() => setShowLanding(false)} />;
}
return (
<ReactFlowProvider>
<Suspense fallback={<LoadingScreen />}>
<Builder onBackToHome={() => setShowLanding(true)} />
</Suspense>
</ReactFlowProvider>
);
};
export default App;