import { RiBarChartBoxLine, RiExternalLinkLine } from "@remixicon/react"; import Image from "next/image"; import Link from "next/link"; import { CardContent, CardDescription, CardFooter, CardHeader, } from "@/components/ui/card"; import type { DashboardAccount } from "@/lib/dashboard/accounts"; import { formatPeriodForUrl } from "@/lib/utils/period"; import MoneyValues from "../money-values"; import { WidgetEmptyState } from "../widget-empty-state"; type MyAccountsWidgetProps = { accounts: DashboardAccount[]; totalBalance: number; maxVisible?: number; period: string; }; const resolveLogoSrc = (logo: string | null) => { if (!logo) { return null; } const fileName = logo.split("/").filter(Boolean).pop() ?? logo; return `/logos/${fileName}`; }; const buildInitials = (name: string) => { const parts = name.trim().split(/\s+/).filter(Boolean); if (parts.length === 0) return "CC"; if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase(); return `${parts[0][0] ?? ""}${parts[1][0] ?? ""}`.toUpperCase(); }; export function MyAccountsWidget({ accounts, totalBalance, maxVisible = 5, period, }: MyAccountsWidgetProps) { const visibleAccounts = accounts.filter( (account) => !account.excludeFromBalance, ); const displayedAccounts = visibleAccounts.slice(0, maxVisible); const remainingCount = visibleAccounts.length - displayedAccounts.length; return ( <> Saldo Total
{displayedAccounts.length === 0 ? (
} title="Você ainda não adicionou nenhuma conta" description="Cadastre suas contas bancárias para acompanhar os saldos e movimentações." />
) : ( )}
{visibleAccounts.length > displayedAccounts.length ? ( +{remainingCount} contas não exibidas ) : null} ); }