import { format } from 'date-fns'; import { BookOpen, CalendarDays, FileIcon, FileX, Pencil, Trash2, User, } from 'lucide-react'; import { AttachmentPreviewDialog } from '@/components/attachment-preview-dialog'; import { RowActions } from '@/components/row-actions'; import { Attachment, AttachmentActions, AttachmentContent, AttachmentDescription, AttachmentMedia, AttachmentTitle, } from '@/components/ui/attachment'; import { Badge } from '@/components/ui/badge'; import type { Material } from '@/types/material'; type CreateCardParams = { handleEdit: (material: Material) => void; handleDeleteClick: (material: Material) => void; canUpdate: boolean; canDelete: boolean; }; export function createMaterialCard(params: CreateCardParams) { const { handleEdit, handleDeleteClick, canUpdate, canDelete } = params; return function MaterialCard(material: Material) { const courseClass = material.course_class; const lecturerName = courseClass?.lecturer?.user?.profile?.full_name ?? null; return (

{material.title}

{courseClass ? `${courseClass.course?.code ?? ''} ยท ${courseClass.course?.name ?? ''}` : '-'}

{lecturerName && (

{lecturerName}

)}
, show: canUpdate, onClick: () => handleEdit(material), }, { label: 'Hapus', icon: ( ), show: canDelete, onClick: () => handleDeleteClick(material), }, ]} />
{material.description && (

{material.description}

)} {material.file_url && material.file_name ? ( {material.file_name} Lampiran materi ) : (
Tidak ada file dilampirkan
)}
{material.meeting_number ? ( Pertemuan {material.meeting_number} ) : ( )}
{format(new Date(material.created_at), 'd MMM yyyy')}
); }; }