import React from 'react'; import { IonIcon } from '@ionic/react'; import { chevronForwardOutline, checkmarkCircleOutline, timeOutline, closeCircleOutline, } from 'ionicons/icons'; export interface OrderSummary { id: string; recipientName: string; serviceType: string; merchantName?: string; amount: number; amountLabel?: string; status: string; createdAt: string; avatarUrl?: string | null; } interface OrderSummaryCardProps { order: OrderSummary; onClick: (id: string) => void; } const OrderSummaryCard: React.FC = ({ order, onClick, }) => { const getStatusDisplay = (status: string) => { switch (status) { case 'paid': return { text: 'Paid', color: '#3b82f6', bg: 'rgba(59,130,246,0.1)', icon: checkmarkCircleOutline, }; case 'ready_for_redemption': return { text: 'Ready', color: '#16a34a', bg: 'rgba(22,163,74,0.1)', icon: checkmarkCircleOutline, }; case 'redeemed': return { text: 'Redeemed', color: '#16a34a', bg: 'rgba(22,163,74,0.1)', icon: checkmarkCircleOutline, }; case 'delivered': return { text: 'Delivered', color: '#16a34a', bg: 'rgba(22,163,74,0.1)', icon: checkmarkCircleOutline, }; case 'pending_payment': return { text: 'Pending', color: '#f59e0b', bg: 'rgba(245,158,11,0.1)', icon: timeOutline, }; case 'failed': case 'cancelled': return { text: 'Failed', color: '#ef4444', bg: 'rgba(239,68,68,0.1)', icon: closeCircleOutline, }; default: return { text: status, color: '#6b7280', bg: '#f3f4f6', icon: timeOutline, }; } }; const statusDisplay = getStatusDisplay(order.status); return (
onClick(order.id)} style={{ display: 'flex', alignItems: 'center', backgroundColor: '#ffffff', borderRadius: '24px', padding: '16px', margin: '0 20px 12px', gap: '14px', cursor: 'pointer', }} >
{order.avatarUrl ? ( {order.recipientName} ) : ( {order.recipientName.charAt(0)} )}
{order.serviceType} for {order.recipientName}
{order.merchantName || 'Service provider'}
{new Date(order.createdAt).toLocaleDateString()}
{order.amountLabel ?? `${order.amount.toFixed(2)}`}
{statusDisplay.text}
); }; export default OrderSummaryCard;