import type { ColumnDef } from '@tanstack/react-table'; import { Key, Pencil, Trash2 } from 'lucide-react'; import { GenderBadge } from '@/components/gender-badge'; import { RowActions } from '@/components/row-actions'; export type Lecturer = { id: number; username: string; email: string; profile: { full_name: string; phone_number: string; gender: string } | null; lecturer: { lecturer_number: string; department: { name: string } | null; } | null; }; type CreateColumnsParams = { handleEdit: (lecturer: Lecturer) => void; handleDeleteClick: (lecturer: Lecturer) => void; handleResetPassword: (lecturer: Lecturer) => void; }; export function createLecturerColumns( params: CreateColumnsParams, ): ColumnDef[] { const { handleEdit, handleDeleteClick, handleResetPassword } = params; return [ { id: 'identity', header: () => NIDN, cell: ({ row }) => (
{row.original.lecturer?.lecturer_number ?? '-'} {row.original.profile?.full_name ?? '-'}
), }, { id: 'account', header: () => Akun, cell: ({ row }) => (
{row.original.username} {row.original.email}
), }, { accessorKey: 'lecturer.department.name', header: () => Jurusan, cell: ({ row }) => row.original.lecturer?.department?.name ?? '-', }, { accessorKey: 'profile.phone_number', header: () => Nomor Telepon, cell: ({ row }) => row.original.profile?.phone_number ?? '-', }, { accessorKey: 'profile.gender', header: () => Jenis Kelamin, cell: ({ row }) => ( ), }, { id: 'actions', header: () => Aksi, meta: { className: 'w-[100px] text-center', headerClassName: 'w-[100px] text-center', }, cell: ({ row }) => { const lecturer = row.original; return ( , onClick: () => handleEdit(lecturer), }, { label: 'Reset Kata Sandi', icon: , onClick: () => handleResetPassword(lecturer), }, { label: 'Hapus', icon: ( ), onClick: () => handleDeleteClick(lecturer), }, ]} /> ); }, }, ]; }