You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1293 lines
38 KiB
1293 lines
38 KiB
// 支付组件 |
|
import React, { useState } from "react"; |
|
import { |
|
View, |
|
Text, |
|
StyleSheet, |
|
ScrollView, |
|
Image, |
|
TouchableOpacity, |
|
SafeAreaView, |
|
} from "react-native"; |
|
import fontSize from "../utils/fontsizeUtils"; |
|
import widthUtils from "../utils/widthUtils"; |
|
import CircleOutlineIcon from "../components/CircleOutlineIcon"; |
|
import CloseIcon from "../components/CloseIcon"; |
|
import CheckIcon from "../components/CheckIcon"; |
|
import BackIcon from "../components/BackIcon"; |
|
|
|
interface RechargeScreenProps { |
|
onClose: () => void; |
|
} |
|
|
|
const RechargeScreen: React.FC<RechargeScreenProps> = ({ onClose }) => { |
|
const [selectedPrice, setSelectedPrice] = useState("500,000"); |
|
const [selectedOperator, setSelectedOperator] = useState<string | null>(null); |
|
const [activeTab, setActiveTab] = useState(0); |
|
const [showBlankPage, setShowBlankPage] = useState(false); |
|
|
|
const handlePriceSelect = (price: string) => { |
|
setSelectedPrice(price); |
|
}; |
|
|
|
const handleOperatorSelect = (operator: string) => { |
|
setSelectedOperator(operator === selectedOperator ? null : operator); |
|
}; |
|
|
|
const handleBackButton = () => { |
|
setShowBlankPage(false); |
|
}; |
|
|
|
const handleButtonClick = () => { |
|
if (selectedOperator) { |
|
setShowBlankPage(true); |
|
} |
|
}; |
|
|
|
return ( |
|
<SafeAreaView style={styles.safeArea}> |
|
<View style={showBlankPage ? styles.mainContainer1 : styles.mainContainer}> |
|
<View style={styles.header}> |
|
<Text style={styles.title}>Recharger</Text> |
|
{!showBlankPage && ( |
|
<TouchableOpacity onPress={onClose} style={styles.closeButton}> |
|
<CloseIcon size={fontSize(15)} /> |
|
</TouchableOpacity> |
|
)} |
|
{showBlankPage && ( |
|
<TouchableOpacity onPress={handleBackButton} style={styles.backButton}> |
|
<Text style={styles.backButtonText}> |
|
<BackIcon size={fontSize(18)}/> |
|
</Text> |
|
</TouchableOpacity> |
|
)} |
|
</View> |
|
|
|
{!showBlankPage ? ( |
|
<> |
|
<ScrollView contentContainerStyle={styles.scrollContent}> |
|
<View style={styles.container2}> |
|
<View style={styles.amountRechargeContainer}> |
|
<Text style={styles.rechargePromptTextStyle}> |
|
Choisissez ou entrez le montant à recharger |
|
</Text> |
|
</View> |
|
</View> |
|
|
|
{/* 金额选择 */} |
|
<View style={styles.priceGroup}> |
|
<View style={styles.row}> |
|
<TouchableOpacity |
|
style={[ |
|
styles.priceBoxBlue, |
|
selectedPrice === "500,000" |
|
? styles.priceBoxSelected |
|
: styles.priceBoxUnselected, |
|
]} |
|
onPress={() => handlePriceSelect("500,000")} |
|
> |
|
<Text |
|
style={[ |
|
styles.priceTextBlue, |
|
selectedPrice === "500,000" |
|
? styles.priceTextSelected |
|
: styles.priceTextUnselected, |
|
]} |
|
> |
|
500,000 |
|
</Text> |
|
<Text |
|
style={[ |
|
styles.currencyTextBlue, |
|
selectedPrice === "500,000" |
|
? styles.currencyTextSelected |
|
: styles.currencyTextUnselected, |
|
]} |
|
> |
|
FCFA |
|
</Text> |
|
</TouchableOpacity> |
|
<TouchableOpacity |
|
style={[ |
|
styles.priceBoxWhite, |
|
selectedPrice === "1000,000" |
|
? styles.priceBoxSelected |
|
: styles.priceBoxUnselected, |
|
]} |
|
onPress={() => handlePriceSelect("1000,000")} |
|
> |
|
<Text |
|
style={[ |
|
styles.priceText, |
|
selectedPrice === "1000,000" |
|
? styles.priceTextSelected |
|
: styles.priceTextUnselected, |
|
]} |
|
> |
|
1000,000 |
|
</Text> |
|
<Text |
|
style={[ |
|
styles.currencyText, |
|
selectedPrice === "1000,000" |
|
? styles.currencyTextSelected |
|
: styles.currencyTextUnselected, |
|
]} |
|
> |
|
FCFA |
|
</Text> |
|
</TouchableOpacity> |
|
<TouchableOpacity |
|
style={[ |
|
styles.priceBoxWhite, |
|
selectedPrice === "2000,000" |
|
? styles.priceBoxSelected |
|
: styles.priceBoxUnselected, |
|
]} |
|
onPress={() => handlePriceSelect("2000,000")} |
|
> |
|
<Text |
|
style={[ |
|
styles.priceText, |
|
selectedPrice === "2000,000" |
|
? styles.priceTextSelected |
|
: styles.priceTextUnselected, |
|
]} |
|
> |
|
2000,000 |
|
</Text> |
|
<Text |
|
style={[ |
|
styles.currencyText, |
|
selectedPrice === "2000,000" |
|
? styles.currencyTextSelected |
|
: styles.currencyTextUnselected, |
|
]} |
|
> |
|
FCFA |
|
</Text> |
|
</TouchableOpacity> |
|
</View> |
|
<View style={styles.row}> |
|
<TouchableOpacity |
|
style={[ |
|
styles.priceBoxWhite, |
|
selectedPrice === "3000,000" |
|
? styles.priceBoxSelected |
|
: styles.priceBoxUnselected, |
|
]} |
|
onPress={() => handlePriceSelect("3000,000")} |
|
> |
|
<Text |
|
style={[ |
|
styles.priceText, |
|
selectedPrice === "3000,000" |
|
? styles.priceTextSelected |
|
: styles.priceTextUnselected, |
|
]} |
|
> |
|
3000,000 |
|
</Text> |
|
<Text |
|
style={[ |
|
styles.currencyText, |
|
selectedPrice === "3000,000" |
|
? styles.currencyTextSelected |
|
: styles.currencyTextUnselected, |
|
]} |
|
> |
|
FCFA |
|
</Text> |
|
</TouchableOpacity> |
|
<TouchableOpacity |
|
style={[ |
|
styles.priceBoxWhite, |
|
selectedPrice === "5000,000" |
|
? styles.priceBoxSelected |
|
: styles.priceBoxUnselected, |
|
]} |
|
onPress={() => handlePriceSelect("5000,000")} |
|
> |
|
<Text |
|
style={[ |
|
styles.priceText, |
|
selectedPrice === "5000,000" |
|
? styles.priceTextSelected |
|
: styles.priceTextUnselected, |
|
]} |
|
> |
|
5000,000 |
|
</Text> |
|
<Text |
|
style={[ |
|
styles.currencyText, |
|
selectedPrice === "5000,000" |
|
? styles.currencyTextSelected |
|
: styles.currencyTextUnselected, |
|
]} |
|
> |
|
FCFA |
|
</Text> |
|
</TouchableOpacity> |
|
</View> |
|
</View> |
|
|
|
{/* 支付方式标题 */} |
|
<View style={styles.section}> |
|
<Text style={styles.subtitle}>Choisissez votre mode de paiement</Text> |
|
</View> |
|
|
|
{/* Tab Bar */} |
|
<View style={styles.tabContainer}> |
|
<TouchableOpacity |
|
style={[styles.tab, activeTab === 0 && styles.activeTab]} |
|
onPress={() => setActiveTab(0)} |
|
> |
|
<Text style={[styles.tabText, activeTab === 0 && styles.activeTabText]}> |
|
Mode de paiement |
|
</Text> |
|
</TouchableOpacity> |
|
<TouchableOpacity |
|
style={[styles.tab, activeTab === 1 && styles.activeTab]} |
|
onPress={() => setActiveTab(1)} |
|
> |
|
<Text style={[styles.tabText, activeTab === 1 && styles.activeTabText]}> |
|
Autre |
|
</Text> |
|
</TouchableOpacity> |
|
</View> |
|
|
|
{/* Tab Content */} |
|
{activeTab === 0 ? ( |
|
<> |
|
<View style={styles.operatorCard}> |
|
<View |
|
style={{ |
|
flexDirection: "row", |
|
alignItems: "center", |
|
justifyContent: "space-between", |
|
}} |
|
> |
|
<View style={{ flexDirection: "row", alignItems: "center" }}> |
|
<Image |
|
source={require("../../assets/img/image_cb840273.png")} |
|
style={styles.operatorImage} |
|
/> |
|
<Text style={styles.orangeText}> |
|
Nous ne supportons que{"\n"}les opérateurs affichés. |
|
</Text> |
|
</View> |
|
<TouchableOpacity onPress={() => handleOperatorSelect("orange")}> |
|
<View style={styles.checkboxContainer}> |
|
<CircleOutlineIcon |
|
size={fontSize(24)} |
|
strokeColor={ |
|
selectedOperator === "orange" ? "#007efa" : undefined |
|
} |
|
fillColor={ |
|
selectedOperator === "orange" ? "#007efa" : undefined |
|
} |
|
/> |
|
{selectedOperator === "orange" && ( |
|
<View style={styles.checkmarkContainer}> |
|
<CheckIcon size={fontSize(12)} color="#FFFFFF" /> |
|
</View> |
|
)} |
|
</View> |
|
</TouchableOpacity> |
|
</View> |
|
<View style={styles.iconRow}> |
|
<Image |
|
source={require("../../assets/img/image_7337a807.png")} |
|
style={styles.operatorIcon} |
|
/> |
|
<Image |
|
source={require("../../assets/img/image_96b927ad.png")} |
|
style={styles.operatorIcon} |
|
/> |
|
<Image |
|
source={require("../../assets/img/image_1fee7e8b.png")} |
|
style={styles.operatorIcon} |
|
/> |
|
</View> |
|
</View> |
|
|
|
<View style={styles.cardContainer}> |
|
<View style={styles.iconRow}> |
|
<Image |
|
source={require("../../assets/img/image_13d56c9.png")} |
|
style={styles.operatorImage} |
|
/> |
|
</View> |
|
|
|
{/* 右侧圆圈图标 */} |
|
<TouchableOpacity onPress={() => handleOperatorSelect("mtn")}> |
|
<View style={styles.checkboxContainer}> |
|
<CircleOutlineIcon |
|
size={fontSize(24)} |
|
strokeColor={selectedOperator === "mtn" ? "#007efa" : undefined} |
|
fillColor={selectedOperator === "mtn" ? "#007efa" : undefined} |
|
/> |
|
{selectedOperator === "mtn" && ( |
|
<View style={styles.checkmarkContainer}> |
|
<CheckIcon size={fontSize(12)} color="#FFFFFF" /> |
|
</View> |
|
)} |
|
</View> |
|
</TouchableOpacity> |
|
</View> |
|
|
|
<View style={styles.balanceInfoContainer}> |
|
<View style={styles.leftInfo}> |
|
<View style={styles.blueBox}> |
|
{/* 圆形图标(左边) */} |
|
<Image |
|
source={require("../../assets/img/余额 icon.png")} |
|
style={styles.operatorImage} |
|
/> |
|
</View> |
|
<Text style={styles.balanceText}> |
|
Vous avez encore un solde{"\n"}de 650,000 FCFA |
|
</Text> |
|
</View> |
|
|
|
{/* 圆形图标(右边) */} |
|
<TouchableOpacity onPress={() => handleOperatorSelect("balance")}> |
|
<View style={styles.checkboxContainer}> |
|
<CircleOutlineIcon |
|
size={fontSize(24)} |
|
strokeColor={ |
|
selectedOperator === "balance" ? "#007efa" : undefined |
|
} |
|
fillColor={selectedOperator === "balance" ? "#007efa" : undefined} |
|
/> |
|
{selectedOperator === "balance" && ( |
|
<View style={styles.checkmarkContainer}> |
|
<CheckIcon size={fontSize(12)} color="#FFFFFF" /> |
|
</View> |
|
)} |
|
</View> |
|
</TouchableOpacity> |
|
</View> |
|
|
|
<View style={styles.currencyContainer}> |
|
<View style={styles.currencyRow}> |
|
<Image |
|
source={require("../../assets/img/image_8786995c.png")} |
|
style={styles.currencyImage} |
|
/> |
|
<TouchableOpacity onPress={() => handleOperatorSelect("currency")}> |
|
<View style={styles.checkboxContainer}> |
|
<CircleOutlineIcon |
|
size={fontSize(24)} |
|
strokeColor={ |
|
selectedOperator === "currency" ? "#007efa" : undefined |
|
} |
|
fillColor={ |
|
selectedOperator === "currency" ? "#007efa" : undefined |
|
} |
|
/> |
|
{selectedOperator === "currency" && ( |
|
<View style={styles.checkmarkContainer}> |
|
<CheckIcon size={fontSize(12)} color="#FFFFFF" /> |
|
</View> |
|
)} |
|
</View> |
|
</TouchableOpacity> |
|
</View> |
|
{selectedOperator === "currency" && ( |
|
<> |
|
<Text style={styles.subtitle}>Choisissez la devise</Text> |
|
<View style={styles.row}> |
|
<TouchableOpacity style={styles.currencyButtonActive}> |
|
<Text style={styles.buttonTextWhite}>USD</Text> |
|
</TouchableOpacity> |
|
<TouchableOpacity style={styles.currencyButtonInactive}> |
|
<Text style={styles.buttonTextDark}>FCFA</Text> |
|
</TouchableOpacity> |
|
</View> |
|
<Text style={styles.totalText}>Total: $121.97</Text> |
|
</> |
|
)} |
|
</View> |
|
|
|
<View style={styles.cardContainer}> |
|
<View style={styles.iconRow}> |
|
<Image |
|
source={require("../../assets/img/image_4e72f054.png")} |
|
style={styles.operatorImage1} |
|
/> |
|
</View> |
|
|
|
{/* 右侧圆圈图标 */} |
|
<TouchableOpacity onPress={() => handleOperatorSelect("mtn")}> |
|
<View style={styles.checkboxContainer}> |
|
<CircleOutlineIcon |
|
size={fontSize(24)} |
|
strokeColor={selectedOperator === "mtn" ? "#007efa" : undefined} |
|
fillColor={selectedOperator === "mtn" ? "#007efa" : undefined} |
|
/> |
|
{selectedOperator === "mtn" && ( |
|
<View style={styles.checkmarkContainer}> |
|
<CheckIcon size={fontSize(12)} color="#FFFFFF" /> |
|
</View> |
|
)} |
|
</View> |
|
</TouchableOpacity> |
|
</View> |
|
</> |
|
) : ( |
|
<View style={styles.outerContainer}> |
|
<View style={styles.flexContainer}> |
|
<View style={styles.imageContainer}> |
|
<Image |
|
source={require('../../assets/img/image_c6aa9539.png')} |
|
style={styles.imageStyle} |
|
resizeMode="cover" |
|
/> |
|
</View> |
|
<View style={styles.verticalAlignEndContent}> |
|
<View style={styles.svgContainer}> |
|
<TouchableOpacity onPress={() => handleOperatorSelect("mtn")}> |
|
<View style={styles.checkboxContainer}> |
|
<CircleOutlineIcon |
|
size={fontSize(24)} |
|
strokeColor={selectedOperator === "mtn" ? "#007efa" : undefined} |
|
fillColor={selectedOperator === "mtn" ? "#007efa" : undefined} |
|
/> |
|
{selectedOperator === "mtn" && ( |
|
<View style={styles.checkmarkContainer}> |
|
<CheckIcon size={fontSize(12)} color="#FFFFFF" /> |
|
</View> |
|
)} |
|
</View> |
|
</TouchableOpacity> |
|
</View> |
|
</View> |
|
</View> |
|
|
|
<View style={styles.flexContainer}> |
|
<View style={styles.imageContainer}> |
|
<Image |
|
source={require('../../assets/img/Global 1.png')} |
|
style={styles.imageStyle} |
|
resizeMode="cover" |
|
/> |
|
</View> |
|
<View style={styles.verticalAlignEndContent}> |
|
<View style={styles.svgContainer}> |
|
<TouchableOpacity onPress={() => handleOperatorSelect("mtn")}> |
|
<View style={styles.checkboxContainer}> |
|
<CircleOutlineIcon |
|
size={fontSize(24)} |
|
strokeColor={selectedOperator === "mtn" ? "#007efa" : undefined} |
|
fillColor={selectedOperator === "mtn" ? "#007efa" : undefined} |
|
/> |
|
{selectedOperator === "mtn" && ( |
|
<View style={styles.checkmarkContainer}> |
|
<CheckIcon size={fontSize(12)} color="#FFFFFF" /> |
|
</View> |
|
)} |
|
</View> |
|
</TouchableOpacity> |
|
</View> |
|
</View> |
|
</View> |
|
</View> |
|
)} |
|
</ScrollView> |
|
|
|
{/* 操作按钮 - 固定在底部 */} |
|
<View style={styles.actionButtonsContainer}> |
|
<View style={styles.actionButtons}> |
|
<TouchableOpacity style={styles.cancelButton} onPress={onClose}> |
|
<Text style={styles.buttonTextDark}>Annuler</Text> |
|
</TouchableOpacity> |
|
<TouchableOpacity style={styles.confirmButton} onPress={handleButtonClick}> |
|
<Text style={styles.buttonTextWhite}>Confirmer</Text> |
|
</TouchableOpacity> |
|
</View> |
|
</View> |
|
</> |
|
) : ( |
|
<View style={styles.outerContainer}> |
|
<View style={styles.paymentSection2}> |
|
{/* Header with back button and title */} |
|
|
|
|
|
{/* Transaction summary */} |
|
<View style={styles.transactionSummaryContainer1}> |
|
<View style={styles.transactionSummaryContainer}> |
|
<View style={styles.flexContainerWithImages}> |
|
<Image |
|
source={require('../../assets/img/image_cb840273.png')} |
|
style={styles.imageContainerStyled} |
|
resizeMode="cover" |
|
/> |
|
<Image |
|
source={require('../../assets/img/image_b05c3ffe.png')} |
|
style={styles.imageContainerWithBorder} |
|
resizeMode="cover" |
|
/> |
|
</View> |
|
<View style={styles.amountContainer}> |
|
<Text style={styles.amountLabel}>Montant</Text> |
|
<View style={styles.amountContainer1}> |
|
<Text style={styles.priceHeading}>500,000</Text> |
|
<Text style={styles.priceLabel}>FCFA</Text> |
|
</View> |
|
</View> |
|
</View> |
|
|
|
{/* Mobile info section */} |
|
<View style={styles.mobileInfoSection}> |
|
<View style={styles.mobileNumberSection}> |
|
<Text style={styles.mobileNumberLabel}>Indicatif pays et numéro de mobile</Text> |
|
<View style={styles.infoCard}> |
|
<View style={styles.flexRowWithIcon}> |
|
<View style={styles.flexRowWithIcon}> |
|
<Image |
|
source={require('../../assets/img/image_de4ca740.png')} |
|
style={styles.maskedImageWithText} |
|
resizeMode="cover" |
|
/> |
|
<Text style={styles.highlightText}>+89</Text> |
|
</View> |
|
<View style={styles.svgContainer2}> |
|
{/* <Svg width={12} height={12} viewBox="0 0 12 12" fill="none"> |
|
<ClipPath id="clip3_296_2233"> |
|
<Rect width={12} height={12} fill="white" x={12.0004} y={0} rotation={90} /> |
|
</ClipPath> |
|
<G clipPath="url(#clip3_296_2233)"> |
|
<Path |
|
d="M11.4464,3.658l-1.01,-1.035l-4.413,4.638l-4.4136,-4.638l-1.0098,1.035l5.4234,5.672z" |
|
fill="black" |
|
/> |
|
</G> |
|
</Svg> */} |
|
</View> |
|
<View style={styles.verticalDivider} /> |
|
</View> |
|
<Text style={styles.statisticText}>22660962235</Text> |
|
</View> |
|
</View> |
|
|
|
{/* Mobile operators */} |
|
<View style={styles.mobileOperatorsContainer}> |
|
<Text style={styles.mobileNumberLabel}>Opérateurs pris en charge</Text> |
|
<View style={styles.operatorSupportContainer}> |
|
<Image |
|
source={require('../../assets/img/image_7337a807.png')} |
|
style={styles.imageContainerWithBorder1} |
|
resizeMode="cover" |
|
/> |
|
<Image |
|
source={require('../../assets/img/image_96b927ad.png')} |
|
style={styles.imageContainerWithBorder1} |
|
resizeMode="cover" |
|
/> |
|
<Image |
|
source={require('../../assets/img/image_1fee7e8b.png')} |
|
style={styles.imageContainerWithBorder1} |
|
resizeMode="cover" |
|
/> |
|
</View> |
|
</View> |
|
|
|
{/* Payment button */} |
|
<View style={styles.blueBoxContainer}> |
|
<View style={styles.paymentNotice1}> |
|
<Text style={styles.paymentNotice}>PAY 500,000 FCFA</Text> |
|
</View> |
|
</View> |
|
</View> |
|
</View> |
|
</View> |
|
</View> |
|
)} |
|
</View> |
|
</SafeAreaView> |
|
); |
|
}; |
|
|
|
const styles = StyleSheet.create({ |
|
safeArea: { |
|
flex: 1, |
|
backgroundColor: "#f0f0f0", |
|
}, |
|
mainContainer: { |
|
flex: 1, |
|
backgroundColor: "#f0f0f0", |
|
borderTopLeftRadius: 10, |
|
borderTopRightRadius: 10, |
|
}, |
|
mainContainer1: { |
|
flex: 1, |
|
backgroundColor: "#fff", |
|
borderTopLeftRadius: 10, |
|
borderTopRightRadius: 10, |
|
}, |
|
header: { |
|
flexDirection: "row", |
|
justifyContent: "center", |
|
alignItems: "center", |
|
padding: 24, |
|
paddingBottom: 0, |
|
position: "relative", |
|
marginTop: 20, |
|
marginBottom: 20, |
|
}, |
|
scrollContent: { |
|
padding: 24, |
|
paddingTop: 0, |
|
}, |
|
container: { |
|
padding: 24, |
|
backgroundColor: "#f0f0f0", |
|
borderTopLeftRadius: 10, |
|
borderTopRightRadius: 10, |
|
}, |
|
title: { |
|
fontSize: 24, |
|
fontWeight: "700", |
|
textTransform: "capitalize", |
|
color: "black", |
|
position: "absolute", |
|
left: 0, |
|
right: 0, |
|
textAlign: "center", |
|
}, |
|
section: { |
|
marginTop: 44, |
|
}, |
|
subtitle: { |
|
fontSize: 16, |
|
fontWeight: "700", |
|
color: "black", |
|
textTransform: "capitalize", |
|
marginBottom: 12, |
|
}, |
|
priceGroup: { |
|
marginTop: 10, |
|
}, |
|
row: { |
|
flexDirection: "row", |
|
justifyContent: "flex-start", |
|
marginTop: 15, |
|
}, |
|
priceBoxBlue: { |
|
width: "30%", |
|
backgroundColor: "#edf2fa", |
|
borderColor: "#002fa7", |
|
borderWidth: 1, |
|
borderRadius: 5, |
|
paddingVertical: 9, |
|
paddingHorizontal: 22, |
|
alignItems: "center", |
|
marginRight: "5%", |
|
}, |
|
priceBoxWhite: { |
|
width: "30%", |
|
backgroundColor: "white", |
|
borderRadius: 5, |
|
paddingVertical: 9, |
|
paddingHorizontal: 22, |
|
alignItems: "center", |
|
marginRight: "5%", |
|
}, |
|
priceTextBlue: { |
|
fontSize: fontSize(16), |
|
fontWeight: "700", |
|
color: "#002fa7", |
|
}, |
|
currencyTextBlue: { |
|
fontSize: fontSize(10), |
|
color: "#002fa7", |
|
marginTop: 1, |
|
}, |
|
priceText: { |
|
fontSize: fontSize(16), |
|
fontWeight: "700", |
|
color: "#333", |
|
}, |
|
currencyText: { |
|
fontSize: fontSize(10), |
|
color: "#7f7e7e", |
|
marginTop: 1, |
|
}, |
|
operatorCard: { |
|
backgroundColor: "white", |
|
padding: 16, |
|
borderRadius: 5, |
|
marginTop: 18, |
|
}, |
|
operatorImage: { |
|
width: 80, |
|
height: 30, |
|
resizeMode: "contain", |
|
}, |
|
operatorImage1: { |
|
width: 228, |
|
height: 30, |
|
resizeMode: "contain", |
|
}, |
|
orangeText: { |
|
color: "#ff5100", |
|
fontSize: fontSize(12), |
|
fontWeight: "500", |
|
marginLeft: 12, |
|
}, |
|
iconRow: { |
|
flexDirection: "row", |
|
gap: 10, |
|
}, |
|
operatorIcon: { |
|
width: 60, |
|
height: 22, |
|
resizeMode: "contain", |
|
}, |
|
currencyContainer: { |
|
backgroundColor: "white", |
|
padding: 10, |
|
borderRadius: 5, |
|
marginTop: 20, |
|
}, |
|
currencyRow: { |
|
flexDirection: "row", |
|
alignItems: "center", |
|
justifyContent: "space-between", |
|
paddingRight:6 |
|
}, |
|
currencyImage: { |
|
width: 80, |
|
height: 30, |
|
resizeMode: "contain", |
|
}, |
|
radioCircle: { |
|
width: 24, |
|
height: 24, |
|
borderRadius: 12, |
|
borderWidth: 2, |
|
borderColor: "#007AFF", |
|
}, |
|
currencyButtonActive: { |
|
backgroundColor: "#002fa7", |
|
borderRadius: 18, |
|
width: widthUtils(36, 100).width, |
|
height: widthUtils(36, 100).height, |
|
justifyContent: "center", |
|
alignItems: "center", |
|
}, |
|
currencyButtonInactive: { |
|
backgroundColor: "#eeeeee", |
|
borderRadius: 18, |
|
width: widthUtils(36, 100).width, |
|
height: widthUtils(36, 100).height, |
|
justifyContent: "center", |
|
alignItems: "center", |
|
marginLeft: 10, |
|
}, |
|
buttonTextWhite: { |
|
color: "white", |
|
fontWeight: "600", |
|
}, |
|
buttonTextDark: { |
|
color: "black", |
|
fontWeight: "500", |
|
}, |
|
totalText: { |
|
marginTop: 16, |
|
fontWeight: "900", |
|
fontSize: fontSize(16), |
|
color: "#ff5100", |
|
}, |
|
actionButtonsContainer: { |
|
padding: 24, |
|
paddingTop: 0, |
|
backgroundColor: "#f0f0f0", |
|
}, |
|
actionButtons: { |
|
flexDirection: "row", |
|
justifyContent: "space-between", |
|
padding: 10, |
|
}, |
|
cancelButton: { |
|
backgroundColor: "white", |
|
borderRadius: 25, |
|
width: widthUtils(50, 160).width, |
|
height: widthUtils(50, 160).height, |
|
justifyContent: "center", |
|
alignItems: "center", |
|
borderColor: "#ccc", |
|
borderWidth: 1, |
|
}, |
|
confirmButton: { |
|
backgroundColor: "#002fa7", |
|
borderRadius: 25, |
|
width: widthUtils(50, 160).width, |
|
height: widthUtils(50, 160).height, |
|
justifyContent: "center", |
|
alignItems: "center", |
|
}, |
|
balanceInfoContainer: { |
|
flexDirection: "row", |
|
backgroundColor: "white", |
|
borderRadius: 5, |
|
paddingHorizontal: 16, |
|
height: 50, |
|
alignItems: "center", |
|
justifyContent: "space-between", |
|
marginTop: 14, |
|
}, |
|
leftInfo: { |
|
flexDirection: "row", |
|
alignItems: "center", |
|
flex: 1, |
|
}, |
|
blueBox: { |
|
flexDirection: "row", |
|
backgroundColor: "#3955f6", |
|
paddingHorizontal: 7, |
|
paddingLeft: 6, |
|
alignItems: "center", |
|
borderRadius: 4, |
|
}, |
|
saleText: { |
|
fontSize: 16, |
|
fontFamily: "Timmana", |
|
color: "white", |
|
marginLeft: 4, |
|
}, |
|
balanceText: { |
|
marginLeft: 17, |
|
fontSize: fontSize(11), |
|
lineHeight: 14, |
|
fontWeight: "500", |
|
color: "#333333", |
|
}, |
|
cardContainer: { |
|
flexDirection: "row", |
|
alignItems: "center", |
|
justifyContent: "space-between", |
|
backgroundColor: "white", |
|
borderRadius: 5, |
|
paddingHorizontal: 16, |
|
height: 50, |
|
marginTop: 15, |
|
}, |
|
|
|
imageSmall: { |
|
width: widthUtils(30, 24).width, |
|
height: widthUtils(30, 24).height, |
|
resizeMode: "contain", |
|
}, |
|
imageLarge: { |
|
width: widthUtils(26, 44).width, |
|
height: widthUtils(26, 44).height, |
|
resizeMode: "contain", |
|
}, |
|
emptyBox: { |
|
backgroundColor: "transparent", |
|
borderWidth: 0, |
|
}, |
|
container1: { |
|
flexDirection: "row", |
|
gap: 10, |
|
alignItems: "center", |
|
marginTop: 10, |
|
}, |
|
button: { |
|
width: widthUtils(36, 190).width, |
|
height: widthUtils(36, 190).height, |
|
borderRadius: 18, |
|
justifyContent: "center", |
|
alignItems: "center", |
|
}, |
|
buttonActive: { |
|
backgroundColor: "#002fa7", |
|
}, |
|
buttonInactive: { |
|
backgroundColor: "#fdfefe", |
|
}, |
|
textActive: { |
|
color: "white", |
|
fontWeight: "600", |
|
fontSize: fontSize(15), |
|
}, |
|
textInactive: { |
|
color: "black", |
|
fontSize: fontSize(15), |
|
}, |
|
priceBoxSelected: { |
|
backgroundColor: "#edf2fa", |
|
borderColor: "#002fa7", |
|
borderWidth: 1, |
|
}, |
|
priceBoxUnselected: { |
|
backgroundColor: "white", |
|
borderColor: "#dddddd", |
|
borderWidth: 1, |
|
}, |
|
priceTextSelected: { |
|
color: "#002fa7", |
|
}, |
|
priceTextUnselected: { |
|
color: "#333", |
|
}, |
|
currencyTextSelected: { |
|
color: "#002fa7", |
|
}, |
|
currencyTextUnselected: { |
|
color: "#7f7e7e", |
|
}, |
|
closeButton: { |
|
padding: 5, |
|
position: "absolute", |
|
right: 24, |
|
zIndex: 1, |
|
}, |
|
checkboxContainer: { |
|
position: "relative", |
|
width: fontSize(24), |
|
height: fontSize(24), |
|
}, |
|
checkmarkContainer: { |
|
position: "absolute", |
|
top: 0, |
|
left: 0, |
|
right: 0, |
|
bottom: 0, |
|
justifyContent: "center", |
|
alignItems: "center", |
|
}, |
|
|
|
container2: { |
|
width: '100%', |
|
marginTop: 20, |
|
}, |
|
amountRechargeContainer: { |
|
display: 'flex', |
|
flexDirection: 'column', |
|
alignItems: 'center', |
|
justifyContent: 'center', |
|
width: '100%', |
|
height: 60, |
|
backgroundColor: 'white', |
|
borderRadius: 5, |
|
}, |
|
rechargePromptTextStyle: { |
|
flex: 0, |
|
padding: 0, |
|
margin: 0, |
|
fontSize: 14, |
|
lineHeight: 14, |
|
color: '#747474', |
|
// Note: PingFang SC font might not be available by default in React Native |
|
// You may need to load custom fonts using expo-font or other methods |
|
}, |
|
tabContainer: { |
|
flexDirection: 'row', |
|
backgroundColor: 'white', |
|
borderRadius: 5, |
|
marginTop: 10, |
|
padding: 5, |
|
}, |
|
tab: { |
|
flex: 1, |
|
paddingVertical: 10, |
|
alignItems: 'center', |
|
borderRadius: 5, |
|
}, |
|
activeTab: { |
|
backgroundColor: '#002fa7', |
|
}, |
|
tabText: { |
|
fontSize: fontSize(14), |
|
color: '#333', |
|
fontWeight: '500', |
|
}, |
|
activeTabText: { |
|
color: 'white', |
|
fontWeight: '600', |
|
}, |
|
emptyTab: { |
|
backgroundColor: 'white', |
|
borderRadius: 5, |
|
padding: 20, |
|
marginTop: 10, |
|
alignItems: 'center', |
|
justifyContent: 'center', |
|
height: 200, |
|
}, |
|
emptyTabText: { |
|
color: '#666', |
|
fontSize: fontSize(14), |
|
}, |
|
outerContainer: { |
|
width: '100%', |
|
}, |
|
flexContainer: { |
|
flexDirection: 'row', |
|
alignItems: 'center', |
|
justifyContent: 'flex-start', |
|
height: 50, |
|
paddingRight: 16, |
|
paddingLeft: 16, |
|
backgroundColor: 'white', |
|
borderRadius: 5, |
|
marginTop: 18, |
|
|
|
}, |
|
imageContainer: { |
|
width: '26.54%', |
|
}, |
|
imageStyle: { |
|
width: 80, |
|
height: 30, |
|
borderWidth: 0, |
|
}, |
|
verticalAlignEndContent: { |
|
flexDirection: 'column', |
|
alignItems: 'flex-end', |
|
width: '73.46%', |
|
}, |
|
svgContainer: { |
|
width: 24, |
|
height: 24, |
|
}, |
|
backButton: { |
|
position: "absolute", |
|
left: 24, |
|
zIndex: 1, |
|
}, |
|
backButtonText: { |
|
fontSize: fontSize(14), |
|
color: "#007AFF", |
|
fontWeight: "500", |
|
}, |
|
blankPage: { |
|
flex: 1, |
|
justifyContent: "center", |
|
alignItems: "center", |
|
backgroundColor: "#f0f0f0", |
|
}, |
|
blankPageText: { |
|
fontSize: fontSize(16), |
|
color: "#666", |
|
}, |
|
paymentSection2: { |
|
paddingTop: 24, |
|
paddingRight: 20, |
|
paddingBottom: 333, |
|
paddingLeft: 20, |
|
backgroundColor: 'white', |
|
borderTopLeftRadius: 10, |
|
borderTopRightRadius: 10, |
|
}, |
|
paymentSectionContainer: { |
|
flexDirection: 'row', |
|
alignItems: 'center', |
|
justifyContent: 'flex-start', |
|
width: '100%', |
|
}, |
|
paymentSection: { |
|
width: '8.48%', |
|
paddingRight: 15, |
|
}, |
|
svgContainer1: { |
|
width: 18, |
|
height: 18, |
|
}, |
|
paymentSection1: { |
|
flexDirection: 'column', |
|
alignItems: 'center', |
|
justifyContent: 'flex-start', |
|
width: '91.52%', |
|
paddingRight: 33, |
|
}, |
|
paymentHeadingStyle: { |
|
padding: 0, |
|
margin: 0, |
|
fontSize: 24, |
|
lineHeight: 22, |
|
color: 'black', |
|
textTransform: 'capitalize', |
|
fontFamily: 'Montserrat-Bold', |
|
}, |
|
transactionSummaryContainer1: { |
|
width: '100%', |
|
}, |
|
transactionSummaryContainer: { |
|
width: '100%', |
|
paddingRight: 15, |
|
paddingLeft: 15, |
|
backgroundColor: 'linear-gradient(90deg, rgba(206, 229, 255, 1) 0%, rgba(238, 244, 255, 1) 100%', |
|
borderRadius: 5, |
|
}, |
|
flexContainerWithImages: { |
|
flexDirection: 'row', |
|
alignItems: 'flex-start', |
|
justifyContent: 'flex-start', |
|
}, |
|
imageContainerStyled: { |
|
width: 99, |
|
height: 36, |
|
borderWidth: 0, |
|
}, |
|
imageContainerWithBorder: { |
|
width: 135, |
|
height: 140, |
|
marginLeft: 141, |
|
borderWidth: 0, |
|
}, |
|
amountContainer: { |
|
width: '100%', |
|
paddingTop: 8, |
|
paddingRight: 11, |
|
paddingBottom: 10, |
|
paddingLeft: 11, |
|
marginTop: -83, |
|
backgroundColor: 'white', |
|
borderWidth: 1, |
|
borderRadius: 5, |
|
}, |
|
amountLabel: { |
|
padding: 0, |
|
margin: 0, |
|
fontSize: 12, |
|
color: '#7f7e7e', |
|
fontFamily: 'PingFangSC-Medium', |
|
}, |
|
amountContainer1: { |
|
flexDirection: 'row', |
|
alignItems: 'flex-start', |
|
justifyContent: 'flex-start', |
|
marginTop: 1, |
|
}, |
|
priceHeading: { |
|
padding: 0, |
|
paddingBottom: 5, |
|
margin: 0, |
|
fontSize: 24, |
|
lineHeight: 22, |
|
color: '#161616', |
|
fontFamily: 'Montserrat-Bold', |
|
}, |
|
priceLabel: { |
|
padding: 0, |
|
paddingTop: 5, |
|
margin: 0, |
|
marginLeft: 3, |
|
fontSize: 12, |
|
color: '#7f7e7e', |
|
fontFamily: 'PingFangSC-Medium', |
|
}, |
|
mobileInfoSection: { |
|
width: '100%', |
|
marginTop: 30, |
|
}, |
|
mobileNumberSection: { |
|
width: '100%', |
|
}, |
|
mobileNumberLabel: { |
|
padding: 0, |
|
margin: 0, |
|
fontSize: 14, |
|
lineHeight: 18, |
|
color: 'black', |
|
fontFamily: 'PingFangSC-Regular', |
|
}, |
|
infoCard: { |
|
flexDirection: 'row', |
|
alignItems: 'center', |
|
justifyContent: 'flex-start', |
|
width: '100%', |
|
height: 50, |
|
paddingRight: 12, |
|
paddingLeft: 12, |
|
marginTop: 12, |
|
borderWidth: 1, |
|
borderColor: '#d8d8d8', |
|
borderRadius: 25, |
|
}, |
|
flexRowWithIcon: { |
|
flexDirection: 'row', |
|
alignItems: 'center', |
|
justifyContent: 'flex-start', |
|
}, |
|
maskedImageWithText: { |
|
width: 20, |
|
height: 12, |
|
borderWidth: 0, |
|
}, |
|
highlightText: { |
|
padding: 0, |
|
margin: 0, |
|
marginLeft: 3, |
|
fontSize: 16, |
|
lineHeight: 22, |
|
color: '#1c284e', |
|
fontFamily: 'PingFangSC-Semibold', |
|
}, |
|
svgContainer2: { |
|
width: 12, |
|
height: 12, |
|
marginLeft: 12, |
|
}, |
|
verticalDivider: { |
|
width: 1, |
|
height: 30, |
|
marginLeft: 8.5, |
|
borderLeftWidth: 1, |
|
borderColor: '#b1b1b1', |
|
}, |
|
statisticText: { |
|
padding: 0, |
|
margin: 0, |
|
marginLeft: 19.5, |
|
fontSize: 16, |
|
lineHeight: 22, |
|
color: '#1c284e', |
|
fontFamily: 'PingFangSC-Semibold', |
|
}, |
|
mobileOperatorsContainer: { |
|
width: '100%', |
|
marginTop: 20, |
|
}, |
|
operatorSupportContainer: { |
|
flexDirection: 'row', |
|
gap: 10, |
|
alignItems: 'center', |
|
justifyContent: 'flex-start', |
|
marginTop: 12, |
|
}, |
|
imageContainerWithBorder1: { |
|
width: 70, |
|
height: 26, |
|
borderWidth: 0, |
|
}, |
|
blueBoxContainer: { |
|
flexDirection: 'column', |
|
alignItems: 'center', |
|
justifyContent: 'flex-start', |
|
width: '100%', |
|
marginTop: 50, |
|
backgroundColor: '#002fa7', |
|
borderRadius: 25, |
|
}, |
|
paymentNotice1: { |
|
flexDirection: 'column', |
|
alignItems: 'center', |
|
justifyContent: 'center', |
|
height: 50, |
|
}, |
|
paymentNotice: { |
|
padding: 0, |
|
margin: 0, |
|
fontSize: 16, |
|
color: 'white', |
|
fontFamily: 'Montserrat-Bold', |
|
}, |
|
}); |
|
|
|
export default RechargeScreen;
|
|
|