import type { ColumnDef } from '@tanstack/react-table'; import { Paperclip, Pencil, Trash2 } from 'lucide-react'; import { RowActions } from '@/components/row-actions'; import { Badge } from '@/components/ui/badge'; import type { Material } from '@/types/material'; export type { Material } from '@/types/material'; type CreateColumnsParams = { handleEdit: (material: Material) => void; handleDeleteClick: (material: Material) => void; }; export function createMaterialColumns( params: CreateColumnsParams, ): ColumnDef[] { const { handleEdit, handleDeleteClick } = params; return [ { accessorKey: 'meeting_number', header: () => Pertemuan, meta: { className: 'w-[100px] text-center', headerClassName: 'w-[100px] text-center', }, cell: ({ row }) => { const meetingNumber = row.getValue('meeting_number') as number | null; return (
{meetingNumber ? ( {meetingNumber} ) : ( - )}
); }, }, { accessorKey: 'title', header: () => Judul, cell: ({ row }) => ( {row.getValue('title') as string} ), }, { accessorKey: 'course_class.course.name', header: () => Kelas, cell: ({ row }) => { const courseClass = row.original.course_class; if (!courseClass) { return '-'; } return `${courseClass.course?.code ?? ''} ${courseClass.course?.name ?? ''}`; }, }, { accessorKey: 'file_name', header: () => File, cell: ({ row }) => { const material = row.original; if (!material.file_url) { return -; } return ( {material.file_name} ); }, }, { id: 'actions', header: () => Aksi, meta: { className: 'w-[100px] text-center', headerClassName: 'w-[100px] text-center', }, cell: ({ row }) => { const material = row.original; return ( , onClick: () => handleEdit(material), }, { label: 'Hapus', icon: ( ), onClick: () => handleDeleteClick(material), }, ]} /> ); }, }, ]; }