Spaces:
Running
Running
File size: 1,478 Bytes
cb2d036 ff324d9 cb2d036 ff324d9 cb2d036 ff324d9 cb2d036 ff324d9 cb2d036 ff324d9 cb2d036 ff324d9 cb2d036 ff324d9 cb2d036 ff324d9 cb2d036 ff324d9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
import { useState, useCallback } from "react";
import LoadingScreen from "./components/LoadingScreen";
import ImageUpload from "./components/ImageUpload";
import ImageAnalysisView from "./components/ImageAnalysisView";
import type { AppState } from "./types";
export default function App() {
const [appState, setAppState] = useState<AppState>("upload");
const [uploadedImages, setUploadedImages] = useState<File[]>([]);
const handleImagesUploaded = useCallback((files: File[]) => {
setUploadedImages(files);
setAppState("loading");
}, []);
const handleLoadingComplete = useCallback(() => {
setAppState("analyzing");
}, []);
const handleBackToUpload = useCallback(() => {
setUploadedImages([]);
setAppState("upload");
}, []);
return (
<div className="App relative h-screen overflow-hidden">
<div className="absolute inset-0 bg-gradient-to-br from-gray-900 via-blue-900/20 to-purple-900/20" />
{appState !== "analyzing" && <div className="absolute inset-0 bg-gray-900/80 backdrop-blur-sm" />}
{appState === "upload" && (
<ImageUpload
onImagesUploaded={handleImagesUploaded}
isAnalyzing={false}
/>
)}
{appState === "loading" && <LoadingScreen onComplete={handleLoadingComplete} />}
{appState === "analyzing" && (
<ImageAnalysisView
images={uploadedImages}
onBackToUpload={handleBackToUpload}
/>
)}
</div>
);
}
|