import React, { useState } from 'react';
import { DollarSign, TrendingUp, TrendingDown, Calendar, Download, Filter, CreditCard, CheckCircle, Clock, XCircle } from 'lucide-react';
interface Transaction {
id: string;
type: 'income' | 'expense';
category: string;
description: string;
amount: number;
date: string;
status: 'paid' | 'pending' | 'overdue';
client?: string;
event?: string;
}
const MOCK_TRANSACTIONS: Transaction[] = [
{
id: '1',
type: 'income',
category: 'Formatura',
description: 'Pagamento Formatura Medicina UFPR',
amount: 8500.00,
date: '2025-12-01',
status: 'paid',
client: 'Ana Paula Silva',
event: 'Formatura Medicina UFPR'
},
{
id: '2',
type: 'income',
category: 'Casamento',
description: 'Sinal Casamento Maria & João',
amount: 3000.00,
date: '2025-12-05',
status: 'paid',
client: 'Maria Santos',
event: 'Casamento Maria & João'
},
{
id: '3',
type: 'expense',
category: 'Equipamento',
description: 'Manutenção Câmera Canon',
amount: 450.00,
date: '2025-12-03',
status: 'paid'
},
{
id: '4',
type: 'income',
category: 'Formatura',
description: 'Pagamento Formatura Direito PUC',
amount: 7200.00,
date: '2025-12-10',
status: 'pending',
client: 'Carlos Eduardo',
event: 'Formatura Direito PUC'
},
{
id: '5',
type: 'expense',
category: 'Transporte',
description: 'Combustível - Eventos Dezembro',
amount: 320.00,
date: '2025-12-08',
status: 'paid'
},
{
id: '6',
type: 'income',
category: 'Evento Corporativo',
description: 'Tech Summit 2026',
amount: 5500.00,
date: '2025-12-15',
status: 'pending',
client: 'TechCorp Ltda',
event: 'Tech Summit'
},
{
id: '7',
type: 'expense',
category: 'Software',
description: 'Assinatura Adobe Creative Cloud',
amount: 180.00,
date: '2025-12-01',
status: 'paid'
},
{
id: '8',
type: 'income',
category: 'Formatura',
description: 'Saldo Final Formatura Engenharia',
amount: 4500.00,
date: '2025-11-20',
status: 'overdue',
client: 'Roberto Mendes',
event: 'Formatura Engenharia UTFPR'
}
];
export const FinancePage: React.FC = () => {
const [filterType, setFilterType] = useState<'all' | 'income' | 'expense'>('all');
const [filterStatus, setFilterStatus] = useState<'all' | 'paid' | 'pending' | 'overdue'>('all');
const filteredTransactions = MOCK_TRANSACTIONS.filter(transaction => {
const matchesType = filterType === 'all' || transaction.type === filterType;
const matchesStatus = filterStatus === 'all' || transaction.status === filterStatus;
return matchesType && matchesStatus;
});
const totalIncome = MOCK_TRANSACTIONS
.filter(t => t.type === 'income' && t.status === 'paid')
.reduce((sum, t) => sum + t.amount, 0);
const totalExpense = MOCK_TRANSACTIONS
.filter(t => t.type === 'expense' && t.status === 'paid')
.reduce((sum, t) => sum + t.amount, 0);
const pendingIncome = MOCK_TRANSACTIONS
.filter(t => t.type === 'income' && (t.status === 'pending' || t.status === 'overdue'))
.reduce((sum, t) => sum + t.amount, 0);
const balance = totalIncome - totalExpense;
const getStatusIcon = (status: Transaction['status']) => {
switch (status) {
case 'paid':
return
Acompanhe receitas, despesas e fluxo de caixa
Receitas
{formatCurrency(totalIncome)}
Pagamentos recebidos
Despesas
{formatCurrency(totalExpense)}
Gastos do período
Saldo
= 0 ? 'text-brand-gold' : 'text-red-600'}`}> {formatCurrency(balance)}
Receitas - Despesas
A Receber
{formatCurrency(pendingIncome)}
Pagamentos pendentes
Nenhuma transação encontrada
{transaction.type === 'income' ? '+' : '-'} {formatCurrency(transaction.amount)}