"use client"; import { Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { getIconComponent } from "@/lib/utils/icons"; import { formatPeriodLabel } from "@/lib/relatorios/utils"; import type { CategoryReportData } from "@/lib/relatorios/types"; import { CategoryCell } from "./category-cell"; import { formatCurrency } from "@/lib/relatorios/utils"; import { Card } from "../ui/card"; import DotIcon from "../dot-icon"; interface CategoryReportTableProps { data: CategoryReportData; } export function CategoryReportTable({ data }: CategoryReportTableProps) { const { categories, periods, totals, grandTotal } = data; return ( Categoria {periods.map((period) => ( {formatPeriodLabel(period)} ))} Total {categories.map((category) => { const Icon = category.icon ? getIconComponent(category.icon) : null; const isReceita = category.type.toLowerCase() === "receita"; const dotColor = isReceita ? "bg-green-600 dark:bg-green-400" : "bg-red-600 dark:bg-red-400"; return (
{Icon && } {category.name}
{periods.map((period, periodIndex) => { const monthData = category.monthlyData.get(period); const isFirstMonth = periodIndex === 0; return ( ); })} {formatCurrency(category.total)}
); })}
Total Geral {periods.map((period) => { const periodTotal = totals.get(period) ?? 0; return ( {formatCurrency(periodTotal)} ); })} {formatCurrency(grandTotal)}
); }