"use client"; import { RiDeleteBin5Line, RiPencilLine } from "@remixicon/react"; import { CategoryIconBadge } from "@/components/categorias/category-icon-badge"; import MoneyValues from "@/components/money-values"; import { Card, CardContent, CardFooter } from "@/components/ui/card"; import { Progress } from "@/components/ui/progress"; import { cn } from "@/lib/utils/ui"; import type { Budget } from "./types"; interface BudgetCardProps { budget: Budget; colorIndex: number; periodLabel: string; onEdit: (budget: Budget) => void; onRemove: (budget: Budget) => void; } const buildUsagePercent = (spent: number, limit: number) => { if (limit <= 0) { return spent > 0 ? 100 : 0; } const percent = (spent / limit) * 100; return Math.min(Math.max(percent, 0), 100); }; const formatCategoryName = (budget: Budget) => budget.category?.name ?? "Categoria removida"; export function BudgetCard({ budget, colorIndex, periodLabel, onEdit, onRemove, }: BudgetCardProps) { const { amount: limit, spent } = budget; const exceeded = spent > limit && limit >= 0; const difference = Math.abs(spent - limit); const usagePercent = buildUsagePercent(spent, limit); return (

{formatCategoryName(budget)}

Orçamento de {periodLabel}

Gasto até agora
Limite
{exceeded ? (
Excedeu em
) : (
Restam {" "} disponíveis.
)}
); }