import { Head } from '@inertiajs/react'; import type { Expense } from '@/types'; import { Card, CardContent } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Trash2, X, Plus } from 'lucide-react'; import { DataTable } from '@/components/data-table'; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogTitle, } from "@/components/ui/alert-dialog" import { Dialog, DialogContent } from "@/components/ui/dialog" import { useExpenseIndex } from './hooks/use-expense-index'; import { getColumns } from './partials/columns'; import { ExpenseFormModal } from './partials/expense-form-modal'; export default function ExpenseIndex({ expenses }: { expenses: Expense[] }) { const { isFormOpen, selectedExpense, isDeleteDialogOpen, isBulkDeleteDialogOpen, expenseToDelete, rowsToDelete, rowSelection, selectedProof, setRowSelection, setRowsToDelete, setIsDeleteDialogOpen, setIsBulkDeleteDialogOpen, setSelectedProof, onAdd, onEdit, onDelete, confirmDelete, confirmBulkDelete, closeForm, onPreviewImage, } = useExpenseIndex(); const columns = getColumns({ onEdit, onDelete, onPreviewImage }); return (

Pengeluaran

setSelectedProof(null)}>
Proof
{ setRowsToDelete(rows); setIsBulkDeleteDialogOpen(true); }, icon: Trash2, variant: 'destructive' }, ]} /> {/* Single Delete Confirmation */} Hapus pengeluaran? Tindakan ini tidak dapat dibatalkan. Pengeluaran {expenseToDelete?.name} akan dihapus secara permanen. Batal Hapus {/* Bulk Delete Confirmation */} Hapus {rowsToDelete.length} pengeluaran? Tindakan ini tidak dapat dibatalkan. {rowsToDelete.length} item yang terpilih akan dihapus secara permanen. Batal Hapus
); } ExpenseIndex.layout = { breadcrumbs: [ { title: 'Keuangan', }, ], };