// 어드민 목록 테이블 공용 컴포넌트. // columns: [{ key, label, render?: (row) => node, className?: string }] // rows: [row] // actions: (row) => node (optional, 우측 액션 열) // emptyMessage: 빈 상태 문구 function AdminTable({ columns, rows, actions, emptyMessage = '데이터가 없습니다.' }) { const showActions = typeof actions === 'function'; if (!rows || rows.length === 0) { return (
{emptyMessage}
); } return (
{columns.map((col) => ( ))} {showActions && ( )} {rows.map((row, idx) => ( {columns.map((col) => ( ))} {showActions && ( )} ))}
{col.label} Actions
{col.render ? col.render(row) : row[col.key]}
{actions(row)}
); } export default AdminTable;