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>
  );
}