"use client"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { cn } from "@/lib/utils"; import { Locale } from "@/config/i18n"; import { useTranslations } from "next-intl"; import { enUS, zhCN } from "date-fns/locale"; import { useProblem } from "@/hooks/use-problem"; import { Clock4Icon, CpuIcon } from "lucide-react"; import { useDockviewStore } from "@/stores/dockview"; import { getStatusColorClass, statusMap } from "@/lib/status"; import type { SubmissionWithTestcaseResult } from "@/types/prisma"; import { EditorLanguageIcons } from "@/config/editor-language-icons"; import { formatDistanceToNow, isBefore, subDays, format } from "date-fns"; interface SubmissionsTableProps { locale: Locale; submissions: SubmissionWithTestcaseResult[]; } const getLocale = (locale: Locale) => { switch (locale) { case "zh": return zhCN; case "en": default: return enUS; } } export default function SubmissionsTable({ locale, submissions }: SubmissionsTableProps) { const s = useTranslations("StatusMessage"); const t = useTranslations("SubmissionsTable"); const { editorLanguageConfigs } = useProblem(); const { api, setSubmission } = useDockviewStore(); const sortedSubmissions = [...submissions].sort( (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime() ); const handleRowClick = (submission: SubmissionWithTestcaseResult) => { if (!api) return; setSubmission(submission); const panel = api.getPanel("Details"); if (panel) { panel.api.setActive(); } else { api.addPanel({ id: "Details", component: "Details", tabComponent: "Details", title: s(`${submission.status}`), position: { referencePanel: "Submissions", direction: "within", }, }); } }; return (