app / src /components /ResultsDisplay.tsx
itsLu's picture
Upload 88 files
2586888 verified
import { Heart, TrendingUp } from "lucide-react";
import { Card } from "@/components/ui/card";
import { cn } from "@/lib/utils";
interface AnalysisResult {
ejectionFraction: number;
heartFunction: "normal" | "mildly dysfunction" | "heart failure";
}
interface ResultsDisplayProps {
results: AnalysisResult;
}
const getStatusClass = (status: string) => {
switch (status) {
case "normal":
return "status-normal";
case "mildly dysfunction":
return "status-mild";
case "heart failure":
return "status-failure";
default:
return "";
}
};
const getStatusLabel = (status: string) => {
switch (status) {
case "normal":
return "Normal Function";
case "mildly dysfunction":
return "Mild Dysfunction";
case "heart failure":
return "Heart Failure";
default:
return status;
}
};
export const ResultsDisplay = ({ results }: ResultsDisplayProps) => {
return (
<div className="space-y-6 animate-fade-in">
{/* Heart Function Status */}
<Card className="glass-card p-6">
<div className="flex items-center gap-4">
<div className="flex h-14 w-14 items-center justify-center rounded-xl bg-primary/10">
<Heart className="h-7 w-7 text-primary" />
</div>
<div className="flex-1">
<p className="text-sm text-muted-foreground">Heart Function Assessment</p>
<h3 className="font-display text-2xl font-bold">Cardiac Status</h3>
</div>
<div
className={cn(
"rounded-full border px-6 py-2 text-sm font-semibold",
getStatusClass(results.heartFunction)
)}
>
{getStatusLabel(results.heartFunction)}
</div>
</div>
</Card>
{/* Ejection Fraction */}
<Card className="glass-card p-6 ring-2 ring-primary/20">
<div className="flex items-center gap-4">
<div className="flex h-14 w-14 items-center justify-center rounded-xl bg-primary/10">
<TrendingUp className="h-7 w-7 text-primary" />
</div>
<div className="flex-1">
<p className="text-sm text-muted-foreground">Ejection Fraction</p>
<p className="font-display text-3xl font-bold">
{results.ejectionFraction.toFixed(1)}
<span className="ml-1 text-lg font-normal text-muted-foreground">%</span>
</p>
</div>
</div>
</Card>
</div>
);
};