import React from 'react'; import { Printer, X, CheckCircle2, ShieldCheck, Copy } from 'lucide-react'; import { toast } from 'react-hot-toast'; import Button from './ui/Button'; export interface TransactionReceiptData { trackId?: string | number; refNumber?: string | number; amountRials?: number | string; amountTomans?: number | string; statusText?: string; orderNumber?: string; orderId?: string; cardNumber?: string; paidAt?: string; createdAt?: string; fee?: number | string; mobile?: string; description?: string; psp?: string; ip?: string; } interface TransactionReceiptModalProps { isOpen: boolean; onClose: () => void; data: TransactionReceiptData | null; } export default function TransactionReceiptModal({ isOpen, onClose, data, }: TransactionReceiptModalProps) { if (!isOpen || !data) return null; const handlePrint = () => { window.print(); }; const handleCopy = (text: string, label: string) => { if (!text) return; navigator.clipboard.writeText(text); toast.success(`${label} کپی شد`); }; const rials = data.amountRials !== undefined ? Number(data.amountRials) : (Number(data.amountTomans || 0) * 10); const tomans = data.amountTomans !== undefined ? Number(data.amountTomans) : Math.floor(Number(data.amountRials || 0) / 10); return (
{/* Modal Header */}

رسید تراکنش {data.trackId || ''}

{/* The Zigzag Receipt Slip (Matching Zibal screenshot exactly) */}
{/* Top Jagged Border (CSS Jagged effect) */}
{Array.from({ length: 24 }).map((_, i) => (
))}
{/* Amount Display */}
{rials.toLocaleString('fa-IR')}{' '} ریال

({tomans.toLocaleString('fa-IR')} تومان)

{/* Data List (Aligned exactly like Zibal slip) */}
{/* Track ID */}
شماره تراکنش
{/* Reference Number */}
شناسه مرجع
{/* Paid At */}
{data.paidAt || data.createdAt || '-'} تاریخ پرداخت
{/* Status */}
{data.statusText || 'پرداخت موفق'} وضعیت
{/* Order ID */}
{data.orderNumber || data.orderId || '-'} شناسه سفارش
{/* Card Number */}
{data.cardNumber || '-'} شماره کارت
{/* Creation Date */}
{data.createdAt || data.paidAt || '-'} تاریخ ایجاد
{/* Mobile */}
{data.mobile || '-'} شماره موبایل
{/* Description */}
{data.description || 'پرداخت آنلاین - پت شاپ کنینا'} توضیحات
{/* PSP */}
{data.psp || 'زیبال / به‌پرداخت ملت'} PSP
{/* Real IP */}
IP
{/* Bottom Jagged Border */}
{Array.from({ length: 24 }).map((_, i) => (
))}
{/* Actions / Print Footer */}
); }