Spaces:
Sleeping
Sleeping
File size: 2,831 Bytes
654bfe6 | 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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | import React, { useState } from 'react';
import { Header } from './components/Header';
import { PredictionPanel } from './components/PredictionPanel';
import { TrainingPanel } from './components/TrainingPanel';
import { OrganProfilesPanel } from './components/OrganProfilesPanel';
import { ApiDocsPanel } from './components/ApiDocsPanel';
import { RepositoryCardPanel } from './components/RepositoryCardPanel';
import { AiAdvisorModal } from './components/AiAdvisorModal';
export default function App() {
const [activeTab, setActiveTab] = useState<'predict' | 'train' | 'organs' | 'api' | 'repo'>('predict');
const [useTissueConditioning, setUseTissueConditioning] = useState<boolean>(true);
const [isAiModalOpen, setIsAiModalOpen] = useState<boolean>(false);
const [aiModalData, setAiModalData] = useState<any>(null);
const handleOpenAiReportWithData = (data: any) => {
setAiModalData(data);
setIsAiModalOpen(true);
};
return (
<div className="min-h-screen bg-slate-950 text-slate-100 font-sans selection:bg-indigo-500 selection:text-white flex flex-col">
{/* App Header & Navigation */}
<Header
activeTab={activeTab}
setActiveTab={setActiveTab}
useTissueConditioning={useTissueConditioning}
setUseTissueConditioning={setUseTissueConditioning}
onOpenAiReport={() => setIsAiModalOpen(true)}
/>
{/* Main Container */}
<main className="flex-1 max-w-7xl w-full mx-auto px-4 sm:px-6 lg:px-8 py-6">
{activeTab === 'predict' && (
<PredictionPanel
useTissueConditioning={useTissueConditioning}
onOpenAiReportWithData={handleOpenAiReportWithData}
/>
)}
{activeTab === 'train' && (
<TrainingPanel
useTissueConditioning={useTissueConditioning}
setUseTissueConditioning={setUseTissueConditioning}
/>
)}
{activeTab === 'organs' && (
<OrganProfilesPanel />
)}
{activeTab === 'api' && (
<ApiDocsPanel />
)}
{activeTab === 'repo' && (
<RepositoryCardPanel />
)}
</main>
{/* Footer */}
<footer className="bg-slate-900 border-t border-slate-800 py-4 text-center text-xs text-slate-500">
<div className="max-w-7xl mx-auto px-4 flex flex-wrap items-center justify-between gap-2">
<span>EpiADR-Net © 2026 Tissue-Conditioned Zero-Shot AI Platform</span>
<span className="font-mono text-[11px]">SIDER 4.1 & GTEx V8 Transcriptomics Integrated</span>
</div>
</footer>
{/* AI Preclinical Safety Modal */}
<AiAdvisorModal
isOpen={isAiModalOpen}
onClose={() => setIsAiModalOpen(false)}
initialData={aiModalData}
/>
</div>
);
}
|