feat: exam actions and data safety fixes

This commit is contained in:
SpecialX
2025-12-30 17:48:22 +08:00
parent e7c902e8e1
commit f7ff018490
27 changed files with 896 additions and 194 deletions

View File

@@ -2,7 +2,7 @@
import { ColumnDef } from "@tanstack/react-table"
import { Checkbox } from "@/shared/components/ui/checkbox"
import { Badge } from "@/shared/components/ui/badge"
import { Badge, type BadgeProps } from "@/shared/components/ui/badge"
import { cn, formatDate } from "@/shared/lib/utils"
import { Exam } from "../types"
import { ExamActions } from "./exam-actions"
@@ -36,8 +36,8 @@ export const examColumns: ColumnDef<Exam>[] = [
<span className="font-medium">{row.original.title}</span>
{row.original.tags && row.original.tags.length > 0 && (
<div className="flex flex-wrap gap-1">
{row.original.tags.slice(0, 2).map((t) => (
<Badge key={t} variant="outline" className="text-xs">
{row.original.tags.slice(0, 2).map((t, idx) => (
<Badge key={`${t}-${idx}`} variant="outline" className="text-xs">
{t}
</Badge>
))}
@@ -65,9 +65,14 @@ export const examColumns: ColumnDef<Exam>[] = [
header: "Status",
cell: ({ row }) => {
const status = row.original.status
const variant = status === "published" ? "secondary" : status === "archived" ? "destructive" : "outline"
const variant: BadgeProps["variant"] =
status === "published"
? "secondary"
: status === "archived"
? "destructive"
: "outline"
return (
<Badge variant={variant as any} className="capitalize">
<Badge variant={variant} className="capitalize">
{status}
</Badge>
)
@@ -134,4 +139,3 @@ export const examColumns: ColumnDef<Exam>[] = [
cell: ({ row }) => <ExamActions exam={row.original} />,
},
]