diff --git a/src/components/delete-popup.tsx b/src/components/delete-popup.tsx new file mode 100644 index 0000000..10b36a3 --- /dev/null +++ b/src/components/delete-popup.tsx @@ -0,0 +1,47 @@ +'use client' + +import { Trash2 } from 'lucide-react' +import { AsyncButton } from './async-button' +import { Button } from './ui/button' +import { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogTitle, + DialogTrigger, +} from './ui/dialog' + +export function DeletePopup({ onDelete }: { onDelete: () => Promise }) { + return ( + + + + + + Delete this expense? + + Do you really want to delete this expense? This action is + irreversible. + + + + Yes + + + + + + + + ) +} diff --git a/src/components/expense-form.tsx b/src/components/expense-form.tsx index d8b63a8..fdde745 100644 --- a/src/components/expense-form.tsx +++ b/src/components/expense-form.tsx @@ -1,5 +1,4 @@ 'use client' -import { AsyncButton } from '@/components/async-button' import { CategorySelector } from '@/components/category-selector' import { ExpenseDocumentsInput } from '@/components/expense-documents-input' import { SubmitButton } from '@/components/submit-button' @@ -39,12 +38,13 @@ import { RuntimeFeatureFlags } from '@/lib/featureFlags' import { ExpenseFormValues, expenseFormSchema } from '@/lib/schemas' import { cn } from '@/lib/utils' import { zodResolver } from '@hookform/resolvers/zod' -import { Save, Trash2 } from 'lucide-react' +import { Save } from 'lucide-react' import Link from 'next/link' import { useSearchParams } from 'next/navigation' import { useState } from 'react' import { useForm } from 'react-hook-form' import { match } from 'ts-pattern' +import { DeletePopup } from './delete-popup' import { extractCategoryFromTitle } from './expense-form-actions' export type Props = { @@ -598,15 +598,7 @@ export function ExpenseForm({ {isCreate ? <>Create : <>Save} {!isCreate && onDelete && ( - - - Delete - + )}