"use client"; import Link from "next/link"; import { useTranslations } from "next-intl"; import { DataTable } from "@/components/admin/data-table"; import { Badge } from "@/components/ui/badge"; import type { DataTableColumn, PaginatedResult } from "@/types"; export interface CfhRow { id: number; issue: string; roomId: number; when: string; sender: string; senderId: number; reported: string; reportedId: number; mod: string; state: number; stateLabel: string; } export function CfhTable({ data }: { data: PaginatedResult }) { const t = useTranslations("pages.admin.cfh"); const columns: DataTableColumn[] = [ { key: "id", label: t("colId"), sortable: true }, { key: "issue", label: t("colIssue"), sortable: true, render: (_value, row) => (
{row.issue || t("noDescription")}

{t("roomMeta", { room: row.roomId, when: row.when })}

), }, { key: "sender", label: t("colSender"), sortable: true, render: (_value, row) => row.senderId ? ( {row.sender} ) : ( "—" ), }, { key: "reported", label: t("colReported"), sortable: true, render: (_value, row) => row.reportedId ? ( {row.reported} ) : ( "—" ), }, { key: "mod", label: t("colMod"), sortable: true }, { key: "state", label: t("colStatus"), sortable: true, filterKey: "filter_state", filterOptions: [ { label: t("stateOpen"), value: "0" }, { label: t("statePicked"), value: "1" }, { label: t("stateClosed"), value: "2" }, ], render: (_value, row) => { const variant = row.state === 0 ? "destructive" : row.state === 1 ? "default" : "secondary"; return ( {row.stateLabel} ); }, }, ]; return ( ); }