MedASR-Bench / src /components /model /FlagNotes.tsx
ngoan
MedASR Bench: full platform + Hugging Face Docker Space packaging
d70f132
Raw
History Blame Contribute Delete
2.36 kB
import clsx from "clsx";
import type { ComponentType } from "react";
import { AlertTriangle, Lock, ShieldCheck, Snowflake } from "lucide-react";
import type { ModelFlags } from "@/lib/types";
export interface FlagNotesProps {
flags?: ModelFlags;
className?: string;
}
interface Note {
key: keyof ModelFlags;
Icon: ComponentType<{ size?: number | string; className?: string }>;
iconClass: string;
labelClass: string;
label: string;
text: string;
}
const NOTES: Note[] = [
{
key: "contamination",
Icon: AlertTriangle,
iconClass: "text-warn",
labelClass: "text-warn",
label: "Contamination",
text: "this model’s family seeded the ViMedCSS labels (Gemini 2.5 Pro, then human-verified at κ 0.65), so its scores carry a permanent contamination flag.",
},
{
key: "referenceOnly",
Icon: Lock,
iconClass: "text-muted",
labelClass: "text-text",
label: "Reference-only",
text: "CC-BY-NC-ND — cannot be fine-tuned or deployed commercially; shown as a yardstick.",
},
{
key: "frozen",
Icon: Snowflake,
iconClass: "text-muted",
labelClass: "text-text",
label: "Frozen",
text: "the maintaining organization has stopped updates; results are pinned to the last public checkpoint.",
},
{
key: "zone1",
Icon: ShieldCheck,
iconClass: "text-accent",
labelClass: "text-text",
label: "Zone 1",
text: "self-hostable on a single 24 GB GPU with a license clean for deployment.",
},
];
/** Plain-language explanations for each active flag (pairs with FlagBadges icons). */
export default function FlagNotes({ flags, className }: FlagNotesProps) {
if (!flags) return null;
const active = NOTES.filter((n) => flags[n.key]);
if (active.length === 0) return null;
return (
<ul className={clsx("flex flex-col gap-2", className)}>
{active.map(({ key, Icon, iconClass, labelClass, label, text }) => (
<li
key={key}
className="flex items-start gap-2.5 text-[13px] leading-relaxed text-muted"
>
<span aria-hidden className={clsx("mt-[3px] shrink-0", iconClass)}>
<Icon size={14} />
</span>
<span>
<span className={clsx("font-medium", labelClass)}>{label}</span>{" "}
— {text}
</span>
</li>
))}
</ul>
);
}