import { useEffect, useState, useCallback } from 'react'; import { ArrowLeftRight } from 'lucide-react'; import api, { type Transaction } from '../api'; import TransactionList from '../components/TransactionList'; import { Tabs, TabsList, TabsTrigger, TabsContent } from '@/components/ui/tabs'; type SourceTab = 'CASH' | 'TRANSFER'; export default function Transfers() { const [transactions, setTransactions] = useState([]); const [search, setSearch] = useState(''); const [sourceTab, setSourceTab] = useState('CASH'); const [loading, setLoading] = useState(true); const fetchTransactions = useCallback(async () => { setLoading(true); try { const params: Record = { source: sourceTab, limit: '200' }; if (search) params.search = search; const { data } = await api.get('/transactions/', { params }); setTransactions(data); } finally { setLoading(false); } }, [search, sourceTab]); useEffect(() => { const timer = setTimeout(fetchTransactions, 300); return () => clearTimeout(timer); }, [fetchTransactions]); return (

Cash & Transfers

Track non-credit-card expenses

setSourceTab(v as SourceTab)}> Cash Transfers } emptyMessage={`No ${sourceTab.toLowerCase()} transactions yet`} />
); }