/// // Provide a minimal JSX global declaration to satisfy TypeScript in environments // where the React JSX types or the new jsx-runtime types are not available. declare global { namespace JSX { interface IntrinsicElements { [elemName: string]: any; } } } import React, { useState } from "react"; import "./static/style.css"; import Header from "./components/Header"; import Sidebar from "./components/Sidebar"; import StandardAnalysis from "./components/StandardAnalysis"; import ModelComparison from "./components/ModelComparison"; import PerformanceTracking from "./components/PerformanceTracking"; import ExplainabilityPanel from "./components/ExplainabilityPanel"; import { SpectrumData } from "./apiClient"; const h = React.createElement; function App() { const [activeTab, setActiveTab] = useState("standard"); const [selectedModel, setSelectedModel] = useState("figure2"); const [modality, setModality] = useState<"raman" | "ftir">("raman"); const [spectrumData, setSpectrumData] = useState(null); const renderActiveTab = () => { switch (activeTab) { case "standard": return h(StandardAnalysis, { selectedModel, modality, onSpectrumChange: setSpectrumData, }); case "comparison": return h(ModelComparison, { modality }); case "performance": return h(PerformanceTracking, null); case "explainability": return h(ExplainabilityPanel, { spectrumData, selectedModel, modality, onExplainabilityResult: (result: any) => console.log("Explainability result:", result), }); default: return h(StandardAnalysis, { selectedModel, modality, onSpectrumChange: setSpectrumData, }); } }; return h( "div", { className: "app-container" }, h(Header, null), h( "div", { className: "app-layout" }, h(Sidebar, { selectedModel, setSelectedModel, modality, setModality, }), h( "main", { className: "main-content" }, h( "div", { className: "tabs" }, h( "button", { className: `tab ${activeTab === "standard" ? "active" : ""}`, onClick: () => setActiveTab("standard"), }, "Standard Analysis" ), h( "button", { className: `tab ${activeTab === "comparison" ? "active" : ""}`, onClick: () => setActiveTab("comparison"), }, "Model Comparison" ), h( "button", { className: `tab ${activeTab === "explainability" ? "active" : ""}`, onClick: () => setActiveTab("explainability"), }, "AI Explainability" ), h( "button", { className: `tab ${activeTab === "performance" ? "active" : ""}`, onClick: () => setActiveTab("performance"), }, "Performance Tracking" ) ), h("div", { className: "tab-content" }, renderActiveTab()) ) ) ); } export default App;