import { useState } from "react"; import { FlaskConical, Orbit, ShieldCheck } from "lucide-react"; import { createProjectAndRun, RankedCandidate } from "./api"; import { ProjectForm } from "./components/ProjectForm"; import { PipelineSteps } from "./components/PipelineSteps"; import { CandidateTable } from "./components/CandidateTable"; import { CandidateDetail } from "./components/CandidateDetail"; import "./styles.css"; export default function App() { const [status, setStatus] = useState("idle"); const [error, setError] = useState(null); const [candidates, setCandidates] = useState([]); const selectedCandidate = candidates[0] ?? null; async function run(payload: Record) { setStatus("running"); setError(null); try { const result = await createProjectAndRun(payload); setStatus(result.status); setError(result.error); setCandidates(result.ranked_candidates ?? []); } catch (err) { setStatus("failed"); setError(err instanceof Error ? err.message : "Pipeline failed"); } } return (
Fast Follow Structure Generator

AI-assisted molecular optimization workbench for fast-follow discovery.

RDKit pipeline Research use only
{selectedCandidate && }
); }