import { RiCheckboxCircleLine, RiLoader4Line, RiMoneyDollarCircleLine, } from "@remixicon/react"; import { formatInvoicePaymentDate, getInvoiceStatusBadgeVariant, type InvoiceDialogState, parseInvoiceDueDate, } from "@/features/dashboard/invoices-helpers"; import type { DashboardInvoice } from "@/features/dashboard/invoices-queries"; import MoneyValues from "@/shared/components/money-values"; import { Badge } from "@/shared/components/ui/badge"; import { Button } from "@/shared/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/shared/components/ui/dialog"; import { INVOICE_PAYMENT_STATUS, INVOICE_STATUS_LABEL, } from "@/shared/lib/invoices"; import { InvoiceLogo } from "./invoice-logo"; type InvoicePaymentDialogProps = { invoice: DashboardInvoice | null; open: boolean; modalState: InvoiceDialogState; isPending: boolean; onClose: () => void; onConfirm: () => void; }; export function InvoicePaymentDialog({ invoice, open, modalState, isPending, onClose, onConfirm, }: InvoicePaymentDialogProps) { const isProcessing = modalState === "processing" || isPending; const paymentInfo = invoice ? formatInvoicePaymentDate(invoice.paidAt) : null; return ( { if (nextOpen || isProcessing) { return; } onClose(); }} > { if (isProcessing) { event.preventDefault(); } }} onPointerDownOutside={(event) => { if (isProcessing) { event.preventDefault(); } }} > {modalState === "success" ? (
Pagamento confirmado! Atualizamos o status da fatura. O lançamento do pagamento aparecerá no extrato em instantes.
) : ( <> Confirmar pagamento Revise os dados antes de confirmar. Vamos registrar a fatura como paga. {invoice ? (

Cartão

{invoice.cardName}

{invoice.paymentStatus !== INVOICE_PAYMENT_STATUS.PAID ? (

{ parseInvoiceDueDate(invoice.period, invoice.dueDay) .label }

) : null} {invoice.paymentStatus === INVOICE_PAYMENT_STATUS.PAID && paymentInfo ? (

{paymentInfo.label}

) : null}
Valor da Invoice
Status
{INVOICE_STATUS_LABEL[invoice.paymentStatus]}
) : null} )}
); }