import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { z } from "zod"; import { Button } from "@/components/ui/button"; import { ResponsiveDialog, ResponsiveDialogContent, ResponsiveDialogFooter, ResponsiveDialogHeader, ResponsiveDialogTitle, } from "@/components/ui/responsive-dialog"; import { useDepositWallet } from "@/lib/queries"; import type { Wallet } from "@/lib/api"; const depositSchema = z.object({ amount: z.number().positive("El monto debe ser mayor a 0"), description: z.string().max(255).optional(), }); type DepositFormValues = z.infer; interface DepositDialogProps { wallet: Wallet; open: boolean; onOpenChange: (open: boolean) => void; } export function DepositDialog({ wallet, open, onOpenChange, }: DepositDialogProps) { const deposit = useDepositWallet(); const { register, handleSubmit, formState: { errors, isSubmitting }, reset, } = useForm({ resolver: zodResolver(depositSchema), defaultValues: { amount: 0, description: "" }, }); function handleClose(open: boolean) { onOpenChange(open); if (!open) reset(); } async function onSubmit(data: DepositFormValues) { await deposit.mutateAsync({ id: wallet.id, data: { amount: data.amount, description: data.description || undefined, }, }); handleClose(false); } return ( Depositar en {wallet.name}
{errors.amount && ( {errors.amount.message} )}
{errors.description && ( {errors.description.message} )}
); }