diff --git a/frontend/src/components/AvailableBalance.tsx b/frontend/src/components/AvailableBalance.tsx index 963a462..c311a66 100644 --- a/frontend/src/components/AvailableBalance.tsx +++ b/frontend/src/components/AvailableBalance.tsx @@ -1,6 +1,6 @@ import { useTranslation } from 'react-i18next' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' -import { PieChart, Pie, Cell, ResponsiveContainer } from 'recharts' +import { PieChart, Pie, Cell, ResponsiveContainer, Tooltip } from 'recharts' import type { BudgetDetail } from '@/lib/api' import { formatCurrency } from '@/lib/format' import { palette, headerGradient, type CategoryType } from '@/lib/palette' @@ -8,9 +8,10 @@ import { cn } from '@/lib/utils' interface Props { budget: BudgetDetail + locale?: string } -export function AvailableBalance({ budget }: Props) { +export function AvailableBalance({ budget, locale = 'en' }: Props) { const { t } = useTranslation() const { totals } = budget @@ -48,11 +49,25 @@ export function AvailableBalance({ budget }: Props) { ))} + { + if (!active || !payload?.length) return null + const item = payload[0] + return ( + + {item.name} + + {formatCurrency(Number(item.value), budget.currency, locale)} + + + ) + }} + /> = 0 ? 'text-success' : 'text-destructive')}> - {formatCurrency(available, budget.currency)} + {formatCurrency(available, budget.currency, locale)} {t('dashboard.available', 'Available')} diff --git a/frontend/src/components/ExpenseBreakdown.tsx b/frontend/src/components/ExpenseBreakdown.tsx index 7ee7fc0..698b7c1 100644 --- a/frontend/src/components/ExpenseBreakdown.tsx +++ b/frontend/src/components/ExpenseBreakdown.tsx @@ -2,13 +2,15 @@ import { useTranslation } from 'react-i18next' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { PieChart, Pie, Cell, ResponsiveContainer, Tooltip } from 'recharts' import type { BudgetDetail } from '@/lib/api' +import { formatCurrency } from '@/lib/format' import { palette, headerGradient, type CategoryType } from '@/lib/palette' interface Props { budget: BudgetDetail + locale?: string } -export function ExpenseBreakdown({ budget }: Props) { +export function ExpenseBreakdown({ budget, locale = 'en' }: Props) { const { t } = useTranslation() const expenses = budget.items .filter((i) => i.category_type === 'variable_expense' && i.actual_amount > 0) @@ -41,7 +43,20 @@ export function ExpenseBreakdown({ budget }: Props) { ))} - + { + if (!active || !payload?.length) return null + const item = payload[0] + return ( + + {item.name} + + {formatCurrency(Number(item.value), budget.currency, locale)} + + + ) + }} + />
{item.name}
+ {formatCurrency(Number(item.value), budget.currency, locale)} +