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',
},
});