import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; import WaitingForPaymentIcon from '../../assets/icons/waiting_for_payment.svg'; import {StyleSheet, Text, View} from 'react-native'; import FontFamily from '../../assets/styles/FontFamily'; import Colors from '../../assets/styles/Colors'; type PassportAppointmentCardProps = { applicantName: string; applicantCount: number; appointmentDate: string; appointmentTime: string; serviceUnit: string; status: string; }; const renderStatusContent = (status: string) => { let backgroundColor; let IconComponent; switch (status) { case 'Permohonan Kadaluarsa': backgroundColor = Colors.indicatorRed.color; IconComponent = () => ( ); break; case 'Sudah Terbayar': backgroundColor = Colors.indicatorGreen.color; IconComponent = () => ( ); break; default: backgroundColor = Colors.indicatorOrange.color; IconComponent = () => ; break; } return ( <> {status === 'Sudah Terbayar' && ( Lihat Persyaratan )} {status} ); }; const PassportAppointmentCard: React.FC = ({ applicantName, applicantCount, appointmentDate, appointmentTime, serviceUnit, status, }) => { return ( {applicantName} {applicantCount} Pemohon {appointmentDate} {appointmentTime} {serviceUnit} {status === 'Menunggu Pembayaran' && ( Selesaikan pembayaran sebelum 16 April 2025 23:30 )} {renderStatusContent(status)} ); }; export default PassportAppointmentCard; const styles = StyleSheet.create({ cardContainer: { borderRadius: 20, padding: 16, backgroundColor: Colors.neutral100.color, borderWidth: 1, borderColor: Colors.secondary50.color, }, topCardContainer: { flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', marginVertical: 6, }, topCardContentTextWrapper: { gap: 4, flex: 1, }, applicantNameText: { fontSize: 14, ...FontFamily.notoSansBold, textTransform: 'uppercase', color: Colors.secondary30.color, }, applicantCountText: { fontSize: 12, ...FontFamily.notoSansRegular, color: Colors.primary30.color, }, midCardContainer: { gap: 8, marginVertical: 8, }, midCardContentWrapper: { flexDirection: 'row', gap: 6, }, midCardContentTextStyle: { fontSize: 12, ...FontFamily.notoSansRegular, color: Colors.primary30.color, }, appointmentAlertWrapper: { marginTop: 5, marginBottom: 13, }, appointmentAlertText: { ...FontFamily.notoSansRegular, fontSize: 10, color: Colors.indicatorRed.color, }, appointmentStatusContainer: { alignItems: 'flex-end', justifyContent: 'flex-end', flexDirection: 'row', gap: 10, }, appointmentStatusWrapper: { gap: 6, alignItems: 'center', backgroundColor: Colors.indicatorOrange.color, padding: 8, flexDirection: 'row', borderRadius: 8, }, appointmentStatusText: { fontSize: 12, ...FontFamily.notoSansMedium, color: Colors.neutral100.color, includeFontPadding: false, }, seeRequirementsWrapper: { backgroundColor: Colors.primary30.color, borderRadius: 100, paddingHorizontal: 16, padding: 8, flexDirection: 'row', }, });