import { AlertTriangleIcon, BanIcon, CircleCheckIcon, LucideIcon, XIcon, } from "lucide-react"; import { toast } from "sonner"; import { Button } from "@/components/ui/button"; import type { Status } from "@/generated/client"; const getColorClass = (code: Status) => { const colorMap: Record = { PD: "text-gray-400", QD: "text-gray-400", CP: "text-yellow-400", CE: "text-yellow-500", CS: "text-green-500", RU: "text-blue-400", TLE: "text-blue-500", MLE: "text-purple-500", RE: "text-orange-500", AC: "text-green-500", WA: "text-red-500", SE: "text-red-500", }; return colorMap[code] || "text-gray-500"; }; const statusMap = new Map([ ["SE", { icon: BanIcon, message: "System Error" }], ["CS", { icon: CircleCheckIcon, message: "Compilation Success" }], ["CE", { icon: AlertTriangleIcon, message: "Compilation Error" }], ["TLE", { icon: AlertTriangleIcon, message: "Time Limit Exceeded" }], ["MLE", { icon: AlertTriangleIcon, message: "Memory Limit Exceeded" }], ["RE", { icon: AlertTriangleIcon, message: "Runtime Error" }], ["AC", { icon: CircleCheckIcon, message: "Accepted" }], ["WA", { icon: AlertTriangleIcon, message: "Wrong Answer" }], ]); const StatusToast = ({ t, Icon, message, colorClass, }: { t: string | number; Icon: LucideIcon; message: string; colorClass: string; }) => (
); interface ShowStatusToastProps { status: Status; } export function showStatusToast({ status, }: ShowStatusToastProps) { const { icon: Icon, message } = statusMap.get(status) || { icon: XIcon, message: "Unknown Error", }; const colorClass = getColorClass(status); toast.custom((t) => ( ), { duration: Infinity, } ); }