import { RiCheckboxCircleFill, RiExternalLinkLine } from "@remixicon/react"; import Link from "next/link"; import MoneyValues from "@/components/shared/money-values"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Button } from "@/components/ui/button"; import { HoverCard, HoverCardContent, HoverCardTrigger, } from "@/components/ui/hover-card"; import type { DashboardInvoice } from "@/lib/dashboard/invoices"; import { buildInvoiceDetailsHref, buildInvoiceInitials, formatInvoicePaymentDate, getInvoiceShareLabel, parseInvoiceDueDate, } from "@/lib/dashboard/invoices-helpers"; import { INVOICE_PAYMENT_STATUS } from "@/lib/faturas"; import { getAvatarSrc } from "@/lib/pagadores/utils"; import { isDateOnlyPast } from "@/lib/utils/date"; import { InvoiceLogo } from "./invoice-logo"; type InvoiceListItemProps = { invoice: DashboardInvoice; onPay: (invoiceId: string) => void; }; export function InvoiceListItem({ invoice, onPay }: InvoiceListItemProps) { const dueInfo = parseInvoiceDueDate(invoice.period, invoice.dueDay); const isPaid = invoice.paymentStatus === INVOICE_PAYMENT_STATUS.PAID; const isOverdue = !isPaid && dueInfo.date !== null && isDateOnlyPast(dueInfo.date); const paymentInfo = formatInvoicePaymentDate(invoice.paidAt); const breakdown = invoice.pagadorBreakdown ?? []; const hasBreakdown = breakdown.length > 0; const detailHref = buildInvoiceDetailsHref(invoice.cardId, invoice.period); const linkNode = ( {invoice.cardName} ); return (
  • {hasBreakdown ? ( {linkNode}

    Distribuição por pagador

      {breakdown.map((share, index) => (
    • {buildInvoiceInitials(share.pagadorName)}

      {share.pagadorName}

      {getInvoiceShareLabel( share.amount, Math.abs(invoice.totalAmount), )}

    • ))}
    ) : ( linkNode )}
    {!isPaid ? {dueInfo.label} : null} {isPaid && paymentInfo ? ( {paymentInfo.label} ) : null}
  • ); }