import React, { useState } from 'react';
import { motion } from 'framer-motion';
import {
Wallet,
TrendingDown,
PiggyBank,
AlertTriangle,
Pencil,
Check,
Plus,
ArrowUpRight,
} from 'lucide-react';
import ProgressBar from '../ui/ProgressBar';
import Button from '../ui/Button';
import { formatCurrency } from '../../utils/formatCurrency';
const BudgetOverview = ({
totalBudget = 0,
totalSpent = 0,
remainingBudget = 0,
percentUsed = 0,
isOverBudget = false,
currency = 'IDR',
onUpdateTotalBudget,
onOpenAddExpense,
}) => {
const [isEditingBudget, setIsEditingBudget] = useState(false);
const [budgetInput, setBudgetInput] = useState(totalBudget.toString());
const handleSaveBudget = (e) => {
e.preventDefault();
const val = Number(budgetInput) || 0;
onUpdateTotalBudget(val);
setIsEditingBudget(false);
};
const getRemainingStatus = () => {
if (isOverBudget) {
return { text: 'Over Budget!', color: 'var(--color-danger)', bg: 'var(--color-danger-bg)' };
}
if (percentUsed >= 80) {
return { text: 'Mendekati Batas', color: 'var(--color-warning)', bg: 'var(--color-warning-bg)' };
}
return { text: 'Aman & Terkendali', color: 'var(--color-success)', bg: 'var(--color-success-bg)' };
};
const remainingStatus = getRemainingStatus();
return (
{/* 3 Overview Stat Cards Grid */}
{/* Card 1: Total Budget */}
Target Total Budget
{isEditingBudget ? (
) : (
{formatCurrency(totalBudget, currency)}
)}
Alokasi dana keseluruhan trip
{/* Card 2: Total Spent */}
Total Terpakai
{percentUsed}% Terpakai
{formatCurrency(totalSpent, currency)}
Pengeluaran yang tercatat saat ini
{/* Card 3: Remaining Budget */}
Sisa Budget
{remainingStatus.text}
{formatCurrency(remainingBudget, currency)}
{isOverBudget ? 'Melebihi alokasi anggaran!' : 'Sisa saldo yang dapat dibelanjakan'}
{/* Progress & Alert Bar */}
Persentase Anggaran Terpakai
= 80 ? 'warning' : 'primary'}
/>
{/* Warning Banner if Over Budget */}
{isOverBudget && (
Perhatian: Pengeluaran Anda melebihi target anggaran sebesar{' '}
{formatCurrency(Math.abs(remainingBudget), currency)}. Evaluasi kembali pos belanja Anda.
)}
);
};
export default BudgetOverview;