import * as React from "react"; import { cn } from "@/lib/utils"; import { de } from "@/lib/i18n/de"; export interface Column { key: string; header: string; render: (row: T) => React.ReactNode; className?: string; } /** * Schlanke, server-renderbare Tabelle für Admin-Listen. Generisch über den * Zeilentyp, keine Client-Interaktivität — Aktionen werden als `render`-Zellen * (eigene Client-Komponenten) eingehängt. Empty-State (Querschnittsstandard 10). */ export function DataTable({ columns, rows, getRowKey, emptyText = de.admin.keineEintraege, }: { columns: Column[]; rows: T[]; getRowKey: (row: T) => string; emptyText?: string; }) { if (rows.length === 0) { return (

{emptyText}

); } return (
{columns.map((c) => ( ))} {rows.map((row) => ( {columns.map((c) => ( ))} ))}
{c.header}
{c.render(row)}
); }