'use client'; import { useState, useEffect } from 'react'; import { api } from '@/lib/api'; import { FormModal } from '@/components/ui/form-modal'; import { Button } from '@/components/ui/button'; import { useToast } from '@/components/ui/toast'; interface TransferModalProps { open: boolean; onClose: () => void; onSuccess: () => void; } export function TransferModal({ open, onClose, onSuccess }: TransferModalProps) { const { toast } = useToast(); const [accounts, setAccounts] = useState([]); const [form, setForm] = useState({ fromAccountId: '', toAccountId: '', amount: 0, description: '' }); const [submitting, setSubmitting] = useState(false); const ic = 'mt-1 block w-full rounded-lg border border-surface-200 dark:border-surface-600 bg-white dark:bg-surface-800 px-3.5 py-2.5 text-sm text-surface-900 dark:text-surface-100 placeholder:text-surface-400 dark:placeholder:text-surface-500 focus:border-primary-500 dark:focus:border-primary-400 focus:outline-none focus:ring-2 focus:ring-primary-500/20 transition-all duration-200'; useEffect(() => { if (open) { setForm({ fromAccountId: '', toAccountId: '', amount: 0, description: '' }); api.get('/accounts').then((r) => setAccounts(r.data.data)).catch(() => {}); } }, [open]); const fromAccount = accounts.find((a: any) => a.id === form.fromAccountId); async function handleSubmit(e: React.FormEvent) { e.preventDefault(); setSubmitting(true); try { await api.post('/accounts/transfer', { ...form, description: form.description || undefined }); toast('Transfer completed', 'success'); onSuccess(); onClose(); } catch (err: any) { toast(err.response?.data?.error || 'Failed', 'error'); } finally { setSubmitting(false); } } return (
setForm({ ...form, amount: parseFloat(e.target.value) || 0 })} className={ic} />
setForm({ ...form, description: e.target.value })} className={ic} placeholder="e.g. Weekly GCash to bank transfer" />
); }