import React, { useState, useEffect } from "react"; import QRCode from "react-qr-code"; import { formatCurrency } from "../utils/formatters"; import { Input } from "./ui/input"; import { Label } from "./ui/label"; interface ReceivePixDialogProps { isOpen: boolean; onClose: () => void; onConfirm: (value: number) => void; orderId: number; customerName: string; orderValue: number; showQrCode: boolean; qrCodeValue?: string; pixValue?: number; processing?: boolean; } const ReceivePixDialog: React.FC = ({ isOpen, onClose, onConfirm, orderId, customerName, orderValue, showQrCode, qrCodeValue = "", pixValue = 0, processing = false, }) => { const [inputValue, setInputValue] = useState(""); const [isModalAnimating, setIsModalAnimating] = useState(false); const [shouldRenderModal, setShouldRenderModal] = useState(false); useEffect(() => { if (isOpen) { setShouldRenderModal(true); setTimeout(() => setIsModalAnimating(true), 10); if (!showQrCode) { setInputValue(orderValue.toFixed(2)); } } else { setIsModalAnimating(false); const timer = setTimeout(() => setShouldRenderModal(false), 300); return () => clearTimeout(timer); } }, [isOpen, showQrCode, orderValue]); const handleConfirm = () => { const value = parseFloat(inputValue); if (isNaN(value) || value <= 0) { return; } onConfirm(value); }; const handleCopyQrCode = () => { if (qrCodeValue) { navigator.clipboard.writeText(qrCodeValue); } }; if (!shouldRenderModal) return null; return (
{/* Overlay */}
{/* Dialog */}
{/* Header */}

Recebimento via PIX

{showQrCode ? "QR Code gerado" : "Informe o valor"}

{/* Content */}
{!showQrCode ? (
setInputValue(e.target.value)} placeholder="0.00" className="mt-2" />

Valor máximo: {formatCurrency(orderValue)}

) : (
{/* Informações do pedido */}

{orderId}

{customerName}

{formatCurrency(pixValue)}

{/* QR Code */}
{/* Código PIX */}
(e.target as HTMLInputElement).select()} className="font-mono text-xs" />
)}
{/* Actions */}
{!showQrCode ? ( <> ) : ( )}
); }; export default ReceivePixDialog;