"use client"; import { LockKeyhole, RedoDot, Shield, Timer, TriangleAlert } from "lucide-react"; import Link from "next/link"; import { Penalty, PenaltyType, Report, User } from "@repo/db"; import { ColumnDef } from "@tanstack/react-table"; import { formatDistance } from "date-fns"; import { de } from "date-fns/locale"; import { cn } from "@repo/shared-components"; import { HobbyKnifeIcon } from "@radix-ui/react-icons"; export const penaltyColumns: ColumnDef[] = [ { accessorKey: "type", header: "Typ", cell: ({ row }) => { switch (row.getValue("type") as PenaltyType) { case "KICK": return (
Kick {row.original.suspended && "(ausgesetzt)"}
); case "TIME_BAN": { const length = formatDistance( new Date(row.original.timestamp), new Date(row.original.until || Date.now()), { locale: de }, ); const isExpired = new Date(row.original.until || Date.now()) < new Date(); return (
Zeit Sperre ({length}) {row.original.suspended && "(ausgesetzt)"}{" "} {isExpired && !row.original.suspended && "(abgelaufen)"}
); } case "PERMISSIONS_REVOCED": return (
Rechte entzogen {row.original.suspended && "(ausgesetzt)"}
); case "BAN": return (
Bann {row.original.suspended && "(ausgesetzt)"}
); } }, }, { accessorKey: "CreatedUser", header: "Bestraft durch", cell: ({ row }) => { const user = row.original.CreatedUser; if (!user) return "Unbekannt"; return `${user.firstname} ${user.lastname} (${user.publicId})`; }, }, { accessorKey: "timestamp", header: "Time", cell: ({ row }) => new Date(row.getValue("timestamp")).toLocaleString(), }, { accessorKey: "actions", header: "Actions", cell: ({ row }) => { const report = row.original.Report; return (
{report && ( )}
); }, }, ];