"use client"; import { motion } from "framer-motion"; import { PiggyBank } from "lucide-react"; interface Saving { id: number; name: string; current_amount: number; target_amount: number; color?: string; icon?: string; } interface Props { savings: Saving[]; } function formatAmount(n: number): string { if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`; if (n >= 1_000) return `${Math.round(n / 1_000)}K`; return String(n); } export default function SavingsCard({ savings }: Props) { return (
Накопления
{savings.map((s, i) => { const pct = Math.min( 100, Math.round((s.current_amount / s.target_amount) * 100) ); const color = s.color || "#6366f1"; return (
{s.icon && {s.icon}} {s.name}
{pct}%
{formatAmount(s.current_amount)} ₽ цель: {formatAmount(s.target_amount)} ₽
); })} {savings.length === 0 && (
Нет данных о накоплениях
)}
); }