import { usePermission } from '@/hooks/use-permission'; import type { ColumnDef } from '@tanstack/react-table'; import { Pencil, Trash2, ImagePlus } from 'lucide-react'; import { DataTableColumnHeader } from '@/components/data-table-column-header'; import { Button } from '@/components/ui/button'; import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'; import { formatDate, formatCurrency } from '@/lib/formatters'; import type { Expense } from '@/types'; interface ColumnProps { onEdit: (expense: Expense) => void; onDelete: (expense: Expense) => void; onPreviewImage: (url: string) => void; } export const getColumns = ({ onEdit, onDelete, onPreviewImage }: ColumnProps): ColumnDef[] => [ { accessorKey: "proof_url", header: "Bukti", cell: ({ row }) => { const url = row.original.proof_url; return url ? ( ) : (
); }, meta: { title: "Bukti" }, }, { accessorKey: "user.name", header: ({ column }) => ( ), cell: ({ row }) => row.original.user?.name, meta: { title: "Pegawai" }, }, { accessorKey: "name", header: ({ column }) => ( ), meta: { title: "Nama" }, }, { accessorKey: "amount", header: ({ column }) => ( ), cell: ({ row }) => formatCurrency(row.original.amount), meta: { title: "Nominal" }, }, { accessorKey: "created_at", header: ({ column }) => ( ), cell: ({ row }) => formatDate(row.original.created_at), meta: { title: "Tanggal" }, }, { id: "actions", header: "Aksi", cell: ({ row }) => { const expense = row.original; const { hasPermission } = usePermission(); return (
{hasPermission('Edit:Expense') && (

Ubah

)} {hasPermission('Delete:Expense') && (

Hapus

)}
); }, meta: { title: "Aksi" }, }, ];