react-native-timacare 3.3.53 → 3.3.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,6 +13,7 @@ import {
13
13
  SafeAreaView,
14
14
  ScrollView,
15
15
  StatusBar,
16
+ StyleSheet,
16
17
  TouchableOpacity,
17
18
  View,
18
19
  ViewStyle,
@@ -124,6 +125,9 @@ const $action: ViewStyle = {
124
125
  alignItems: 'center',
125
126
  };
126
127
 
128
+ // Gradient cam thương hiệu, dùng lặp lại ở nhiều nút trong màn hình
129
+ const GRADIENT_ORANGE = ['#FF8E4F', '#EF592E'];
130
+
127
131
  let _unsubscribe;
128
132
  // Dữ liệu tham chiếu tĩnh (ngân hàng, nghề nghiệp, tỉnh...) chỉ cần prefetch 1 lần/phiên
129
133
  let _didPrefetchRefData = false;
@@ -532,7 +536,7 @@ export const Home = observer(function Home() {
532
536
  <View
533
537
  style={[commonStyles.fill, { zIndex: 1, backgroundColor: '#FFFFFF' }]}
534
538
  >
535
- <LinearGradient colors={['#FF8E4F', '#EF592E']}>
539
+ <LinearGradient colors={GRADIENT_ORANGE}>
536
540
  <View style={{ marginTop: insets.top + 16 }}>
537
541
  <View
538
542
  style={{
@@ -650,16 +654,7 @@ export const Home = observer(function Home() {
650
654
  {/* // type 4 digital topup */}
651
655
  {item?.typeLoan === 4 ? (
652
656
  <View>
653
- <View
654
- style={{
655
- backgroundColor: '#FFFFFF',
656
- paddingHorizontal: 16,
657
- marginBottom: 16,
658
- borderRadius: 8,
659
- borderWidth: 0.5,
660
- borderColor: '#E0E0E0',
661
- }}
662
- >
657
+ <View style={styles.card}>
663
658
  <View
664
659
  style={{
665
660
  flexDirection: 'row',
@@ -680,11 +675,7 @@ export const Home = observer(function Home() {
680
675
  </View>
681
676
  </View>
682
677
  <View
683
- style={{
684
- height: 1,
685
- backgroundColor: '#E0E0E0',
686
- marginVertical: 16,
687
- }}
678
+ style={styles.divider}
688
679
  />
689
680
  <View
690
681
  style={{
@@ -705,11 +696,7 @@ export const Home = observer(function Home() {
705
696
  </MText>
706
697
  </View>
707
698
  <View
708
- style={{
709
- height: 0.5,
710
- backgroundColor: '#E0E0E0',
711
- marginVertical: 16,
712
- }}
699
+ style={styles.dividerThin}
713
700
  />
714
701
  <View style={{ flexDirection: 'row' }}>
715
702
  {item?.loanStatus === null ||
@@ -731,15 +718,7 @@ export const Home = observer(function Home() {
731
718
  >
732
719
  <AddInfo />
733
720
  <MText
734
- style={[
735
- commonStyles.textNormal,
736
- {
737
- fontSize: 12,
738
- fontWeight: '300',
739
- marginTop: 8,
740
- textAlign: 'center',
741
- },
742
- ]}
721
+ style={[commonStyles.textNormal, styles.actionLabelCenter]}
743
722
  >
744
723
  Hoàn thiện{'\n'}cung cấp thông tin
745
724
  </MText>
@@ -776,15 +755,7 @@ export const Home = observer(function Home() {
776
755
  >
777
756
  <AddInfo />
778
757
  <MText
779
- style={[
780
- commonStyles.textNormal,
781
- {
782
- fontSize: 12,
783
- fontWeight: '300',
784
- marginTop: 8,
785
- textAlign: 'center',
786
- },
787
- ]}
758
+ style={[commonStyles.textNormal, styles.actionLabelCenter]}
788
759
  >
789
760
  Hoàn thiện{'\n'}cung cấp thông tin
790
761
  </MText>
@@ -793,15 +764,7 @@ export const Home = observer(function Home() {
793
764
  <View style={{ alignItems: 'center' }}>
794
765
  <AddInfoDisable />
795
766
  <MText
796
- style={[
797
- commonStyles.textNormal,
798
- {
799
- fontSize: 12,
800
- fontWeight: '300',
801
- marginTop: 8,
802
- textAlign: 'center',
803
- },
804
- ]}
767
+ style={[commonStyles.textNormal, styles.actionLabelCenter]}
805
768
  >
806
769
  Hoàn thiện{'\n'}cung cấp thông tin
807
770
  </MText>
@@ -812,10 +775,7 @@ export const Home = observer(function Home() {
812
775
 
813
776
  {item?.isSignContract && (
814
777
  <MButton
815
- style={{
816
- alignItems: 'center',
817
- marginLeft: 20,
818
- }}
778
+ style={styles.actionButtonSpaced}
819
779
  onPress={() => {
820
780
  checkTerm(item, () => {
821
781
  if (item?.urlSignContract) {
@@ -838,13 +798,7 @@ export const Home = observer(function Home() {
838
798
  >
839
799
  <IconSign2 />
840
800
  <MText
841
- style={[
842
- commonStyles.textNormal,
843
- {
844
- fontSize: 12,
845
- marginTop: 8,
846
- },
847
- ]}
801
+ style={[commonStyles.textNormal, styles.label12]}
848
802
  >
849
803
  Ký hợp đồng
850
804
  </MText>
@@ -852,10 +806,7 @@ export const Home = observer(function Home() {
852
806
  )}
853
807
  {item?.isSignContractTima && (
854
808
  <MButton
855
- style={{
856
- alignItems: 'center',
857
- marginLeft: 20,
858
- }}
809
+ style={styles.actionButtonSpaced}
859
810
  onPress={() => {
860
811
  checkTerm(item, () => {
861
812
  navigation.dispatch(
@@ -871,14 +822,7 @@ export const Home = observer(function Home() {
871
822
  >
872
823
  <ContractTimeIcon />
873
824
  <MText
874
- style={[
875
- commonStyles.textNormal,
876
- {
877
- fontSize: 12,
878
- marginTop: 8,
879
- textAlign: 'center',
880
- },
881
- ]}
825
+ style={[commonStyles.textNormal, styles.label12Center]}
882
826
  >
883
827
  Hợp đồng{'\n'}dịch vụ
884
828
  </MText>
@@ -886,10 +830,7 @@ export const Home = observer(function Home() {
886
830
  )}
887
831
  {item?.paymentEvidenceUrl && (
888
832
  <MButton
889
- style={{
890
- alignItems: 'center',
891
- marginLeft: 20,
892
- }}
833
+ style={styles.actionButtonSpaced}
893
834
  onPress={() => {
894
835
  checkTerm(item, () => {
895
836
  navigation.dispatch(
@@ -905,14 +846,7 @@ export const Home = observer(function Home() {
905
846
  >
906
847
  <IconEviden />
907
848
  <MText
908
- style={[
909
- commonStyles.textNormal,
910
- {
911
- fontSize: 12,
912
- marginTop: 8,
913
- textAlign: 'center',
914
- },
915
- ]}
849
+ style={[commonStyles.textNormal, styles.label12Center]}
916
850
  >
917
851
  Mục đích {'\n'}sử dụng
918
852
  </MText>
@@ -920,10 +854,7 @@ export const Home = observer(function Home() {
920
854
  )}
921
855
  {item?.showPaymentPlan && (
922
856
  <MButton
923
- style={{
924
- alignItems: 'center',
925
- marginLeft: 20,
926
- }}
857
+ style={styles.actionButtonSpaced}
927
858
  onPress={() => {
928
859
  checkTerm(item, () => {
929
860
  navigation.dispatch(
@@ -939,13 +870,7 @@ export const Home = observer(function Home() {
939
870
  >
940
871
  <IconSchedule />
941
872
  <MText
942
- style={[
943
- commonStyles.textNormal,
944
- {
945
- fontSize: 12,
946
- marginTop: 8,
947
- },
948
- ]}
873
+ style={[commonStyles.textNormal, styles.label12]}
949
874
  >
950
875
  Lịch dự kiến
951
876
  </MText>
@@ -957,15 +882,7 @@ export const Home = observer(function Home() {
957
882
  item?.messageErrorCIMB &&
958
883
  item?.isCimbApproveFull === null ? (
959
884
  <View
960
- style={{
961
- backgroundColor: '#FBEFE7',
962
- marginHorizontal: -16,
963
- paddingVertical: 8,
964
- marginTop: 16,
965
- borderBottomRightRadius: 8,
966
- borderBottomLeftRadius: 8,
967
- paddingHorizontal: 16,
968
- }}
885
+ style={styles.infoBanner}
969
886
  >
970
887
  <View
971
888
  style={{
@@ -997,7 +914,7 @@ export const Home = observer(function Home() {
997
914
  }}
998
915
  >
999
916
  <LinearGradient
1000
- colors={['#FF8E4F', '#EF592E']}
917
+ colors={GRADIENT_ORANGE}
1001
918
  style={{
1002
919
  paddingHorizontal: 10,
1003
920
  height: 30,
@@ -1023,17 +940,7 @@ export const Home = observer(function Home() {
1023
940
  </View>
1024
941
  ) : (
1025
942
  <View
1026
- style={{
1027
- flexDirection: 'row',
1028
- alignItems: 'center',
1029
- backgroundColor: '#FBEFE7',
1030
- marginHorizontal: -16,
1031
- paddingVertical: 8,
1032
- marginTop: 16,
1033
- borderBottomRightRadius: 8,
1034
- borderBottomLeftRadius: 8,
1035
- paddingHorizontal: 16,
1036
- }}
943
+ style={styles.infoBannerRow}
1037
944
  >
1038
945
  <Info />
1039
946
  <MText
@@ -1060,16 +967,7 @@ export const Home = observer(function Home() {
1060
967
  <Observer>
1061
968
  {() => (
1062
969
  <View>
1063
- <View
1064
- style={{
1065
- backgroundColor: '#FFFFFF',
1066
- paddingHorizontal: 16,
1067
- marginBottom: 16,
1068
- borderRadius: 8,
1069
- borderWidth: 0.5,
1070
- borderColor: '#E0E0E0',
1071
- }}
1072
- >
970
+ <View style={styles.card}>
1073
971
  <View
1074
972
  style={{
1075
973
  flexDirection: 'row',
@@ -1092,11 +990,7 @@ export const Home = observer(function Home() {
1092
990
  </View>
1093
991
  </View>
1094
992
  <View
1095
- style={{
1096
- height: 1,
1097
- backgroundColor: '#E0E0E0',
1098
- marginVertical: 16,
1099
- }}
993
+ style={styles.divider}
1100
994
  />
1101
995
  <View
1102
996
  style={{
@@ -1140,7 +1034,7 @@ export const Home = observer(function Home() {
1140
1034
  flexDirection: 'row',
1141
1035
  alignItems: 'center',
1142
1036
  }}
1143
- colors={['#FF8E4F', '#EF592E']}
1037
+ colors={GRADIENT_ORANGE}
1144
1038
  >
1145
1039
  <UpdateIcon />
1146
1040
  <MText
@@ -1156,11 +1050,7 @@ export const Home = observer(function Home() {
1156
1050
  ) : (
1157
1051
  <View>
1158
1052
  <View
1159
- style={{
1160
- height: 0.5,
1161
- backgroundColor: '#E0E0E0',
1162
- marginVertical: 16,
1163
- }}
1053
+ style={styles.dividerThin}
1164
1054
  />
1165
1055
  <View style={{ flexDirection: 'row' }}>
1166
1056
  {item?.loanStatus === null ||
@@ -1184,15 +1074,7 @@ export const Home = observer(function Home() {
1184
1074
  >
1185
1075
  <AddInfo />
1186
1076
  <MText
1187
- style={[
1188
- commonStyles.textNormal,
1189
- {
1190
- fontSize: 12,
1191
- fontWeight: '300',
1192
- marginTop: 8,
1193
- textAlign: 'center',
1194
- },
1195
- ]}
1077
+ style={[commonStyles.textNormal, styles.actionLabelCenter]}
1196
1078
  >
1197
1079
  Hoàn thiện{'\n'}cung cấp thông tin
1198
1080
  </MText>
@@ -1231,15 +1113,7 @@ export const Home = observer(function Home() {
1231
1113
  >
1232
1114
  <AddInfo />
1233
1115
  <MText
1234
- style={[
1235
- commonStyles.textNormal,
1236
- {
1237
- fontSize: 12,
1238
- fontWeight: '300',
1239
- marginTop: 8,
1240
- textAlign: 'center',
1241
- },
1242
- ]}
1116
+ style={[commonStyles.textNormal, styles.actionLabelCenter]}
1243
1117
  >
1244
1118
  Hoàn thiện{'\n'}cung cấp thông
1245
1119
  tin
@@ -1253,15 +1127,7 @@ export const Home = observer(function Home() {
1253
1127
  >
1254
1128
  <AddInfoDisable />
1255
1129
  <MText
1256
- style={[
1257
- commonStyles.textNormal,
1258
- {
1259
- fontSize: 12,
1260
- fontWeight: '300',
1261
- marginTop: 8,
1262
- textAlign: 'center',
1263
- },
1264
- ]}
1130
+ style={[commonStyles.textNormal, styles.actionLabelCenter]}
1265
1131
  >
1266
1132
  Hoàn thiện{'\n'}cung cấp thông
1267
1133
  tin
@@ -1273,10 +1139,7 @@ export const Home = observer(function Home() {
1273
1139
 
1274
1140
  {item?.isSignContract && (
1275
1141
  <MButton
1276
- style={{
1277
- alignItems: 'center',
1278
- marginLeft: 20,
1279
- }}
1142
+ style={styles.actionButtonSpaced}
1280
1143
  onPress={() => {
1281
1144
  checkTerm(item, () => {
1282
1145
  if (item?.urlSignContract) {
@@ -1299,14 +1162,7 @@ export const Home = observer(function Home() {
1299
1162
  >
1300
1163
  <IconSign2 />
1301
1164
  <MText
1302
- style={[
1303
- commonStyles.textNormal,
1304
- {
1305
- fontSize: 12,
1306
- fontWeight: '300',
1307
- marginTop: 8,
1308
- },
1309
- ]}
1165
+ style={[commonStyles.textNormal, styles.actionLabel]}
1310
1166
  >
1311
1167
  Ký hợp đồng
1312
1168
  </MText>
@@ -1314,10 +1170,7 @@ export const Home = observer(function Home() {
1314
1170
  )}
1315
1171
  {item?.isSignContractTima && (
1316
1172
  <MButton
1317
- style={{
1318
- alignItems: 'center',
1319
- marginLeft: 20,
1320
- }}
1173
+ style={styles.actionButtonSpaced}
1321
1174
  onPress={() => {
1322
1175
  checkTerm(item, () => {
1323
1176
  navigation.dispatch(
@@ -1333,15 +1186,7 @@ export const Home = observer(function Home() {
1333
1186
  >
1334
1187
  <ContractTimeIcon />
1335
1188
  <MText
1336
- style={[
1337
- commonStyles.textNormal,
1338
- {
1339
- fontSize: 12,
1340
- fontWeight: '300',
1341
- marginTop: 8,
1342
- textAlign: 'center',
1343
- },
1344
- ]}
1189
+ style={[commonStyles.textNormal, styles.actionLabelCenter]}
1345
1190
  >
1346
1191
  Hợp đồng{'\n'}dịch vụ
1347
1192
  </MText>
@@ -1349,10 +1194,7 @@ export const Home = observer(function Home() {
1349
1194
  )}
1350
1195
  {item?.paymentEvidenceUrl && (
1351
1196
  <MButton
1352
- style={{
1353
- alignItems: 'center',
1354
- marginLeft: 20,
1355
- }}
1197
+ style={styles.actionButtonSpaced}
1356
1198
  onPress={() => {
1357
1199
  checkTerm(item, () => {
1358
1200
  navigation.dispatch(
@@ -1368,15 +1210,7 @@ export const Home = observer(function Home() {
1368
1210
  >
1369
1211
  <IconEviden />
1370
1212
  <MText
1371
- style={[
1372
- commonStyles.textNormal,
1373
- {
1374
- fontSize: 12,
1375
- fontWeight: '300',
1376
- marginTop: 8,
1377
- textAlign: 'center',
1378
- },
1379
- ]}
1213
+ style={[commonStyles.textNormal, styles.actionLabelCenter]}
1380
1214
  >
1381
1215
  Mục đích {'\n'}sử dụng
1382
1216
  </MText>
@@ -1384,10 +1218,7 @@ export const Home = observer(function Home() {
1384
1218
  )}
1385
1219
  {item?.showPaymentPlan && (
1386
1220
  <MButton
1387
- style={{
1388
- alignItems: 'center',
1389
- marginLeft: 20,
1390
- }}
1221
+ style={styles.actionButtonSpaced}
1391
1222
  onPress={() => {
1392
1223
  navigation.dispatch(
1393
1224
  StackActions.push(
@@ -1401,14 +1232,7 @@ export const Home = observer(function Home() {
1401
1232
  >
1402
1233
  <IconSchedule />
1403
1234
  <MText
1404
- style={[
1405
- commonStyles.textNormal,
1406
- {
1407
- fontSize: 12,
1408
- fontWeight: '300',
1409
- marginTop: 8,
1410
- },
1411
- ]}
1235
+ style={[commonStyles.textNormal, styles.actionLabel]}
1412
1236
  >
1413
1237
  Lịch dự kiến
1414
1238
  </MText>
@@ -1420,15 +1244,7 @@ export const Home = observer(function Home() {
1420
1244
  item?.messageErrorCIMB &&
1421
1245
  item?.isCimbApproveFull === null ? (
1422
1246
  <View
1423
- style={{
1424
- backgroundColor: '#FBEFE7',
1425
- marginHorizontal: -16,
1426
- paddingVertical: 8,
1427
- marginTop: 16,
1428
- borderBottomRightRadius: 8,
1429
- borderBottomLeftRadius: 8,
1430
- paddingHorizontal: 16,
1431
- }}
1247
+ style={styles.infoBanner}
1432
1248
  >
1433
1249
  <View
1434
1250
  style={{
@@ -1466,7 +1282,7 @@ export const Home = observer(function Home() {
1466
1282
  }}
1467
1283
  >
1468
1284
  <LinearGradient
1469
- colors={['#FF8E4F', '#EF592E']}
1285
+ colors={GRADIENT_ORANGE}
1470
1286
  style={{
1471
1287
  paddingHorizontal: 10,
1472
1288
  height: 30,
@@ -1492,17 +1308,7 @@ export const Home = observer(function Home() {
1492
1308
  </View>
1493
1309
  ) : (
1494
1310
  <View
1495
- style={{
1496
- flexDirection: 'row',
1497
- alignItems: 'center',
1498
- backgroundColor: '#FBEFE7',
1499
- marginHorizontal: -16,
1500
- paddingVertical: 8,
1501
- marginTop: 16,
1502
- borderBottomRightRadius: 8,
1503
- borderBottomLeftRadius: 8,
1504
- paddingHorizontal: 16,
1505
- }}
1311
+ style={styles.infoBannerRow}
1506
1312
  >
1507
1313
  <Info />
1508
1314
  <MText
@@ -1533,16 +1339,7 @@ export const Home = observer(function Home() {
1533
1339
  <View>
1534
1340
  {item?.loanStatus !== null &&
1535
1341
  item?.loanStatus !== '' ? (
1536
- <View
1537
- style={{
1538
- backgroundColor: '#FFFFFF',
1539
- paddingHorizontal: 16,
1540
- marginBottom: 16,
1541
- borderRadius: 8,
1542
- borderWidth: 0.5,
1543
- borderColor: '#E0E0E0',
1544
- }}
1545
- >
1342
+ <View style={styles.card}>
1546
1343
  <View
1547
1344
  style={{
1548
1345
  flexDirection: 'row',
@@ -1564,11 +1361,7 @@ export const Home = observer(function Home() {
1564
1361
  </View>
1565
1362
  </View>
1566
1363
  <View
1567
- style={{
1568
- height: 1,
1569
- backgroundColor: '#E0E0E0',
1570
- marginVertical: 16,
1571
- }}
1364
+ style={styles.divider}
1572
1365
  />
1573
1366
  <View
1574
1367
  style={{
@@ -1589,11 +1382,7 @@ export const Home = observer(function Home() {
1589
1382
  </MText>
1590
1383
  </View>
1591
1384
  <View
1592
- style={{
1593
- height: 0.5,
1594
- backgroundColor: '#E0E0E0',
1595
- marginVertical: 16,
1596
- }}
1385
+ style={styles.dividerThin}
1597
1386
  />
1598
1387
  <View style={{ flexDirection: 'row' }}>
1599
1388
  {item?.isUpdateLoan ||
@@ -1626,15 +1415,7 @@ export const Home = observer(function Home() {
1626
1415
  >
1627
1416
  <AddInfo />
1628
1417
  <MText
1629
- style={[
1630
- commonStyles.textNormal,
1631
- {
1632
- fontSize: 12,
1633
- fontWeight: '300',
1634
- marginTop: 8,
1635
- textAlign: 'center',
1636
- },
1637
- ]}
1418
+ style={[commonStyles.textNormal, styles.actionLabelCenter]}
1638
1419
  >
1639
1420
  Hoàn thiện{'\n'}cung cấp thông tin
1640
1421
  </MText>
@@ -1643,15 +1424,7 @@ export const Home = observer(function Home() {
1643
1424
  <View style={{ alignItems: 'center' }}>
1644
1425
  <AddInfoDisable />
1645
1426
  <MText
1646
- style={[
1647
- commonStyles.textNormal,
1648
- {
1649
- fontSize: 12,
1650
- fontWeight: '300',
1651
- marginTop: 8,
1652
- textAlign: 'center',
1653
- },
1654
- ]}
1427
+ style={[commonStyles.textNormal, styles.actionLabelCenter]}
1655
1428
  >
1656
1429
  Hoàn thiện{'\n'}cung cấp thông tin
1657
1430
  </MText>
@@ -1659,10 +1432,7 @@ export const Home = observer(function Home() {
1659
1432
  )}
1660
1433
  {item?.isSignContract && (
1661
1434
  <TouchableOpacity
1662
- style={{
1663
- alignItems: 'center',
1664
- marginLeft: 20,
1665
- }}
1435
+ style={styles.actionButtonSpaced}
1666
1436
  onPress={() => {
1667
1437
  checkTerm(item, () => {
1668
1438
  if (item?.urlSignContract) {
@@ -1685,14 +1455,7 @@ export const Home = observer(function Home() {
1685
1455
  >
1686
1456
  <IconSign2 />
1687
1457
  <MText
1688
- style={[
1689
- commonStyles.textNormal,
1690
- {
1691
- fontSize: 12,
1692
- fontWeight: '300',
1693
- marginTop: 8,
1694
- },
1695
- ]}
1458
+ style={[commonStyles.textNormal, styles.actionLabel]}
1696
1459
  >
1697
1460
  Ký hợp đồng
1698
1461
  </MText>
@@ -1700,10 +1463,7 @@ export const Home = observer(function Home() {
1700
1463
  )}
1701
1464
  {item?.isSignContractTima && (
1702
1465
  <TouchableOpacity
1703
- style={{
1704
- alignItems: 'center',
1705
- marginLeft: 20,
1706
- }}
1466
+ style={styles.actionButtonSpaced}
1707
1467
  onPress={() => {
1708
1468
  checkTerm(item, () => {
1709
1469
  navigation.dispatch(
@@ -1719,15 +1479,7 @@ export const Home = observer(function Home() {
1719
1479
  >
1720
1480
  <ContractTimeIcon />
1721
1481
  <MText
1722
- style={[
1723
- commonStyles.textNormal,
1724
- {
1725
- fontSize: 12,
1726
- fontWeight: '300',
1727
- marginTop: 8,
1728
- textAlign: 'center',
1729
- },
1730
- ]}
1482
+ style={[commonStyles.textNormal, styles.actionLabelCenter]}
1731
1483
  >
1732
1484
  Hợp đồng{'\n'}dịch vụ
1733
1485
  </MText>
@@ -1735,10 +1487,7 @@ export const Home = observer(function Home() {
1735
1487
  )}
1736
1488
  {item?.paymentEvidenceUrl && (
1737
1489
  <TouchableOpacity
1738
- style={{
1739
- alignItems: 'center',
1740
- marginLeft: 20,
1741
- }}
1490
+ style={styles.actionButtonSpaced}
1742
1491
  onPress={() => {
1743
1492
  checkTerm(item, () => {
1744
1493
  navigation.dispatch(
@@ -1754,15 +1503,7 @@ export const Home = observer(function Home() {
1754
1503
  >
1755
1504
  <IconEviden />
1756
1505
  <MText
1757
- style={[
1758
- commonStyles.textNormal,
1759
- {
1760
- fontSize: 12,
1761
- fontWeight: '300',
1762
- marginTop: 8,
1763
- textAlign: 'center',
1764
- },
1765
- ]}
1506
+ style={[commonStyles.textNormal, styles.actionLabelCenter]}
1766
1507
  >
1767
1508
  Mục đích {'\n'}sử dụng
1768
1509
  </MText>
@@ -1770,10 +1511,7 @@ export const Home = observer(function Home() {
1770
1511
  )}
1771
1512
  {item?.showPaymentPlan && (
1772
1513
  <TouchableOpacity
1773
- style={{
1774
- alignItems: 'center',
1775
- marginLeft: 20,
1776
- }}
1514
+ style={styles.actionButtonSpaced}
1777
1515
  onPress={() => {
1778
1516
  navigation.dispatch(
1779
1517
  StackActions.push(
@@ -1787,14 +1525,7 @@ export const Home = observer(function Home() {
1787
1525
  >
1788
1526
  <IconSchedule />
1789
1527
  <MText
1790
- style={[
1791
- commonStyles.textNormal,
1792
- {
1793
- fontSize: 12,
1794
- fontWeight: '300',
1795
- marginTop: 8,
1796
- },
1797
- ]}
1528
+ style={[commonStyles.textNormal, styles.actionLabel]}
1798
1529
  >
1799
1530
  Lịch dự kiến
1800
1531
  </MText>
@@ -1803,17 +1534,7 @@ export const Home = observer(function Home() {
1803
1534
  </View>
1804
1535
 
1805
1536
  <View
1806
- style={{
1807
- flexDirection: 'row',
1808
- alignItems: 'center',
1809
- backgroundColor: '#FBEFE7',
1810
- marginHorizontal: -16,
1811
- paddingVertical: 8,
1812
- marginTop: 16,
1813
- borderBottomRightRadius: 8,
1814
- borderBottomLeftRadius: 8,
1815
- paddingHorizontal: 16,
1816
- }}
1537
+ style={styles.infoBannerRow}
1817
1538
  >
1818
1539
  <Info />
1819
1540
  <MText
@@ -1938,18 +1659,9 @@ export const Home = observer(function Home() {
1938
1659
  ) : (
1939
1660
  <Observer>
1940
1661
  {() => (
1941
- <View
1942
- style={{
1943
- backgroundColor: '#FFFFFF',
1944
- paddingHorizontal: 16,
1945
- borderRadius: 8,
1946
- borderWidth: 0.5,
1947
- borderColor: '#E0E0E0',
1948
- marginBottom: 16,
1949
- }}
1950
- >
1662
+ <View style={styles.card}>
1951
1663
  <LinearGradient
1952
- colors={['#FF8E4F', '#EF592E']}
1664
+ colors={GRADIENT_ORANGE}
1953
1665
  style={{
1954
1666
  borderTopLeftRadius: 8,
1955
1667
  borderTopRightRadius: 8,
@@ -1979,7 +1691,7 @@ export const Home = observer(function Home() {
1979
1691
  color: 'white',
1980
1692
  }}
1981
1693
  >
1982
- Số tiền đăng ký vay
1694
+ HD-{item?.id}
1983
1695
  </MText>
1984
1696
  </View>
1985
1697
  <MText
@@ -1989,7 +1701,7 @@ export const Home = observer(function Home() {
1989
1701
  fontWeight: 'bold',
1990
1702
  }}
1991
1703
  >
1992
- {formatMoney(item?.loanAmount)} đ
1704
+ {formatMoney(item?.loanAmount)}đ
1993
1705
  </MText>
1994
1706
  </View>
1995
1707
  </LinearGradient>
@@ -2021,11 +1733,7 @@ export const Home = observer(function Home() {
2021
1733
  </MText>
2022
1734
  </View>
2023
1735
  <View
2024
- style={{
2025
- height: 0.5,
2026
- backgroundColor: '#E0E0E0',
2027
- marginVertical: 16,
2028
- }}
1736
+ style={styles.dividerThin}
2029
1737
  />
2030
1738
  <View
2031
1739
  style={{
@@ -2052,13 +1760,7 @@ export const Home = observer(function Home() {
2052
1760
  >
2053
1761
  <AddInfo />
2054
1762
  <MText
2055
- style={[
2056
- commonStyles.textNormal,
2057
- {
2058
- fontSize: 12,
2059
- marginTop: 8,
2060
- },
2061
- ]}
1763
+ style={[commonStyles.textNormal, styles.label12]}
2062
1764
  >
2063
1765
  EKYC
2064
1766
  </MText>
@@ -2083,13 +1785,7 @@ export const Home = observer(function Home() {
2083
1785
  >
2084
1786
  <TopupSvg />
2085
1787
  <MText
2086
- style={[
2087
- commonStyles.textNormal,
2088
- {
2089
- fontSize: 12,
2090
- marginTop: 8,
2091
- },
2092
- ]}
1788
+ style={[commonStyles.textNormal, styles.label12]}
2093
1789
  >
2094
1790
  Cập nhật{'\n'}thông tin
2095
1791
  </MText>
@@ -2118,13 +1814,7 @@ export const Home = observer(function Home() {
2118
1814
  >
2119
1815
  <IconVideo />
2120
1816
  <MText
2121
- style={[
2122
- commonStyles.textNormal,
2123
- {
2124
- fontSize: 12,
2125
- marginTop: 8,
2126
- },
2127
- ]}
1817
+ style={[commonStyles.textNormal, styles.label12]}
2128
1818
  >
2129
1819
  Quay video
2130
1820
  </MText>
@@ -2146,13 +1836,7 @@ export const Home = observer(function Home() {
2146
1836
  >
2147
1837
  <IconSign2 />
2148
1838
  <MText
2149
- style={[
2150
- commonStyles.textNormal,
2151
- {
2152
- fontSize: 12,
2153
- marginTop: 8,
2154
- },
2155
- ]}
1839
+ style={[commonStyles.textNormal, styles.label12]}
2156
1840
  >
2157
1841
  Ký HĐ
2158
1842
  </MText>
@@ -2174,14 +1858,7 @@ export const Home = observer(function Home() {
2174
1858
  >
2175
1859
  <IconSign2 />
2176
1860
  <MText
2177
- style={[
2178
- commonStyles.textNormal,
2179
- {
2180
- fontSize: 12,
2181
- marginTop: 8,
2182
- textAlign: 'center',
2183
- },
2184
- ]}
1861
+ style={[commonStyles.textNormal, styles.label12Center]}
2185
1862
  >
2186
1863
  Ký HĐ
2187
1864
  </MText>
@@ -2205,14 +1882,7 @@ export const Home = observer(function Home() {
2205
1882
  >
2206
1883
  <IconSchedule />
2207
1884
  <MText
2208
- style={[
2209
- commonStyles.textNormal,
2210
- {
2211
- fontSize: 12,
2212
- marginTop: 8,
2213
- textAlign: 'center',
2214
- },
2215
- ]}
1885
+ style={[commonStyles.textNormal, styles.label12Center]}
2216
1886
  >
2217
1887
  Lịch thanh toán{'\n'}dự kiến
2218
1888
  </MText>
@@ -2220,17 +1890,7 @@ export const Home = observer(function Home() {
2220
1890
  )}
2221
1891
  </View>
2222
1892
  <View
2223
- style={{
2224
- flexDirection: 'row',
2225
- alignItems: 'center',
2226
- backgroundColor: '#FBEFE7',
2227
- marginHorizontal: -16,
2228
- paddingVertical: 8,
2229
- marginTop: 16,
2230
- borderBottomRightRadius: 8,
2231
- borderBottomLeftRadius: 8,
2232
- paddingHorizontal: 16,
2233
- }}
1893
+ style={styles.infoBannerRow}
2234
1894
  >
2235
1895
  <Info />
2236
1896
  <MText
@@ -3024,7 +2684,7 @@ export const Home = observer(function Home() {
3024
2684
  >
3025
2685
  <LinearGradient
3026
2686
  colors={
3027
- checkTCCIMB ? ['#FF8E4F', '#EF592E'] : ['#E0E0E0', '#E0E0E0']
2687
+ checkTCCIMB ? GRADIENT_ORANGE : ['#E0E0E0', '#E0E0E0']
3028
2688
  }
3029
2689
  style={{
3030
2690
  height: 40,
@@ -3098,3 +2758,73 @@ export const Home = observer(function Home() {
3098
2758
  </View>
3099
2759
  );
3100
2760
  });
2761
+
2762
+ const styles = StyleSheet.create({
2763
+ // Khung thẻ đơn vay (nền trắng, viền xám bo góc) - dùng lại ở nhiều loại đơn
2764
+ card: {
2765
+ backgroundColor: '#FFFFFF',
2766
+ paddingHorizontal: 16,
2767
+ marginBottom: 16,
2768
+ borderRadius: 8,
2769
+ borderWidth: 0.5,
2770
+ borderColor: '#E0E0E0',
2771
+ },
2772
+ // Nhãn các nút hành động ở thẻ CIMB (Hoàn thiện, Hợp đồng dịch vụ, ...)
2773
+ actionLabelCenter: {
2774
+ fontSize: 12,
2775
+ fontWeight: '300',
2776
+ marginTop: 8,
2777
+ textAlign: 'center',
2778
+ },
2779
+ actionLabel: {
2780
+ fontSize: 12,
2781
+ fontWeight: '300',
2782
+ marginTop: 8,
2783
+ },
2784
+ label12: {
2785
+ fontSize: 12,
2786
+ marginTop: 8,
2787
+ },
2788
+ label12Center: {
2789
+ fontSize: 12,
2790
+ marginTop: 8,
2791
+ textAlign: 'center',
2792
+ },
2793
+ // Đường kẻ ngăn cách ngang trong thẻ đơn vay
2794
+ divider: {
2795
+ height: 1,
2796
+ backgroundColor: '#E0E0E0',
2797
+ marginVertical: 16,
2798
+ },
2799
+ dividerThin: {
2800
+ height: 0.5,
2801
+ backgroundColor: '#E0E0E0',
2802
+ marginVertical: 16,
2803
+ },
2804
+ // Nút hành động (icon + nhãn) cách nút trước 20px
2805
+ actionButtonSpaced: {
2806
+ alignItems: 'center',
2807
+ marginLeft: 20,
2808
+ },
2809
+ // Dải thông báo/gợi ý màu cam nhạt ở đáy thẻ CIMB
2810
+ infoBanner: {
2811
+ backgroundColor: '#FBEFE7',
2812
+ marginHorizontal: -16,
2813
+ paddingVertical: 8,
2814
+ marginTop: 16,
2815
+ borderBottomRightRadius: 8,
2816
+ borderBottomLeftRadius: 8,
2817
+ paddingHorizontal: 16,
2818
+ },
2819
+ infoBannerRow: {
2820
+ flexDirection: 'row',
2821
+ alignItems: 'center',
2822
+ backgroundColor: '#FBEFE7',
2823
+ marginHorizontal: -16,
2824
+ paddingVertical: 8,
2825
+ marginTop: 16,
2826
+ borderBottomRightRadius: 8,
2827
+ borderBottomLeftRadius: 8,
2828
+ paddingHorizontal: 16,
2829
+ },
2830
+ });