import { Building, Check, Clock, DollarSign, MessageCircle, X } from 'lucide-react'; import React from 'react'; import { Badge } from './Badge'; import { Button } from './Button'; import { Heading } from './Heading'; import { Icon } from './Icon'; import { Image } from './Image'; import { Text } from './Text'; interface SponsorshipRequestItemProps { sponsorName: string; sponsorLogo?: string; tier: string; formattedAmount: string; netAmount: number; createdAt: Date; message?: string; isProcessing: boolean; isRejecting: boolean; rejectReason: string; onAccept: () => void; onRejectClick: () => void; onRejectConfirm: () => void; onRejectCancel: () => void; onRejectReasonChange: (reason: string) => void; } export function SponsorshipRequestItem({ sponsorName, sponsorLogo, tier, formattedAmount, netAmount, createdAt, message, isProcessing, isRejecting, rejectReason, onAccept, onRejectClick, onRejectConfirm, onRejectCancel, onRejectReasonChange, }: SponsorshipRequestItemProps) { return ( {/* Reject Modal */} {isRejecting && ( Reject sponsorship from {sponsorName}? ) => onRejectReasonChange(e.target.value)} placeholder="Optional: Provide a reason for rejection..." rows={2} p={3} py={2} bg="bg-iron-gray/80" color="text-white" border borderColor="border-charcoal-outline" rounded="lg" fullWidth style={{ resize: 'none' }} className="text-sm placeholder:text-gray-500 focus:ring-2 focus:ring-red-500 mb-3" /> )} {/* Sponsor Logo */} {sponsorLogo ? ( {sponsorName} ) : ( )} {sponsorName} {tier === 'main' ? 'Main Sponsor' : 'Secondary'} {/* Offer Details */} {formattedAmount} Net: ${(netAmount / 100).toFixed(2)} {createdAt.toLocaleDateString('en-US', { month: 'short', day: 'numeric', })} {/* Message */} {message && ( {message} )} {/* Actions */} {!isRejecting && ( )} ); }