"use client";
import { RiBankCard2Line } from "@remixicon/react";
import Image from "next/image";
import Link from "next/link";
import { useSearchParams } from "next/navigation";
import type { CartoesReportData } from "@/features/reports/cards-report-queries";
import MoneyValues from "@/shared/components/money-values";
import { Card, CardContent } from "@/shared/components/ui/card";
import { Progress } from "@/shared/components/ui/progress";
import { resolveCardBrandAsset } from "@/shared/lib/cards/brand-assets";
import { resolveLogoSrc } from "@/shared/lib/logo";
import { cn } from "@/shared/utils";
import { formatCurrency } from "@/shared/utils/currency";
import { formatPercentage } from "@/shared/utils/percentage";
type CardsOverviewProps = {
data: CartoesReportData;
};
export function CardsOverview({ data }: CardsOverviewProps) {
const searchParams = useSearchParams();
const periodoParam = searchParams.get("periodo");
const getUsageColor = (percent: number) => {
if (percent < 50) return "bg-success";
if (percent < 80) return "bg-warning";
return "bg-destructive";
};
const buildUrl = (cardId: string) => {
const params = new URLSearchParams();
if (periodoParam) params.set("periodo", periodoParam);
params.set("cartao", cardId);
return `/reports/card-usage?${params.toString()}`;
};
const summaryCards = [
{ title: "Limite", value: data.totalLimit, isMoney: true },
{ title: "Usado", value: data.totalUsage, isMoney: true },
{
title: "Disponível",
value: data.totalLimit - data.totalUsage,
isMoney: true,
},
{ title: "Utilização", value: data.totalUsagePercent, isMoney: false },
];
if (data.cards.length === 0) {
return (
Nenhum cartão encontrado
{card.title}
{card.isMoney ? ({formatPercentage(card.value, { maximumFractionDigits: 0, minimumFractionDigits: 0, })}
)}Meus cartões
{/* Cards list */}{formatCurrency(card.currentUsage)} /{" "} {formatCurrency(card.limit)}