diff --git a/assets/icons/list_box_outline.svg b/assets/icons/list_box_outline.svg
new file mode 100644
index 0000000..cdb8b11
--- /dev/null
+++ b/assets/icons/list_box_outline.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/mobile_friendly.svg b/assets/icons/mobile_friendly.svg
new file mode 100644
index 0000000..f441442
--- /dev/null
+++ b/assets/icons/mobile_friendly.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/navigation/RootStack.tsx b/src/navigation/RootStack.tsx
index 79acdca..01ab646 100644
--- a/src/navigation/RootStack.tsx
+++ b/src/navigation/RootStack.tsx
@@ -18,6 +18,8 @@ import ExpressPassportScreen from '../screens/expressPassport';
import GuidebookScreen from '../screens/guidebook';
import EazyPassportScreen from '../screens/eazyPassport';
import ApplicationDetailScreen from '../screens/applicationDetail';
+import PassportRequirementsScreen from '../screens/passportRequirements';
+import ApplicationGuideScreen from '../screens/applicationGuide';
const Stack = createNativeStackNavigator();
@@ -107,6 +109,16 @@ function RootStack() {
component={ApplicationDetailScreen}
options={{headerShown: false}}
/>
+
+
);
}
diff --git a/src/navigation/type.ts b/src/navigation/type.ts
index 78a8cac..170ecf1 100644
--- a/src/navigation/type.ts
+++ b/src/navigation/type.ts
@@ -18,4 +18,6 @@ export type RootStackParamList = {
Guidebook: undefined;
EazyPassport: undefined;
ApplicationDetail: {data: PassportAppointmentData};
+ ApplicationGuide: undefined;
+ PassportRequirements: undefined;
};
diff --git a/src/screens/applicationDetail/styles.tsx b/src/screens/applicationDetail/styles.tsx
index 281a8aa..4664845 100644
--- a/src/screens/applicationDetail/styles.tsx
+++ b/src/screens/applicationDetail/styles.tsx
@@ -18,6 +18,7 @@ const styles = StyleSheet.create({
...FontFamily.notoSansRegular,
fontSize: 22,
marginStart: 16,
+ includeFontPadding: false,
},
appBarIcon: {
marginLeft: 16,
diff --git a/src/screens/applicationGuide/index.tsx b/src/screens/applicationGuide/index.tsx
new file mode 100644
index 0000000..aa58a6f
--- /dev/null
+++ b/src/screens/applicationGuide/index.tsx
@@ -0,0 +1,38 @@
+import React from 'react';
+import {StatusBar, Text, View} from 'react-native';
+import styles from './styles';
+import Colors from '../../../assets/styles/Colors';
+import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
+import { RootStackParamList } from '../../navigation/type';
+import { useNavigation } from '@react-navigation/native';
+import { NativeStackNavigationProp } from '@react-navigation/native-stack';
+
+type ApplicationGuideScreenNavigationProp = NativeStackNavigationProp<
+ RootStackParamList,
+ 'ApplicationGuide'
+>;
+
+function ApplicationGuideScreen() {
+ const navigation = useNavigation();
+
+ return (
+
+
+
+ navigation.goBack()}
+ />
+ Panduan Aplikasi
+
+
+ );
+}
+
+export default ApplicationGuideScreen;
diff --git a/src/screens/applicationGuide/styles.tsx b/src/screens/applicationGuide/styles.tsx
new file mode 100644
index 0000000..e7a8ee8
--- /dev/null
+++ b/src/screens/applicationGuide/styles.tsx
@@ -0,0 +1,28 @@
+import {StyleSheet} from 'react-native';
+import Colors from '../../../assets/styles/Colors';
+import FontFamily from '../../../assets/styles/FontFamily';
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ backgroundColor: Colors.neutral100.color,
+ },
+ appBarTitle: {
+ color: Colors.secondary30.color,
+ ...FontFamily.notoSansRegular,
+ fontSize: 22,
+ marginStart: 16,
+ includeFontPadding: false,
+ },
+ appBarIcon: {
+ marginLeft: 16,
+ },
+ appBarContainer: {
+ height: 64,
+ flexDirection: 'row',
+ alignItems: 'center',
+ backgroundColor: Colors.neutral100.color,
+ },
+});
+
+export default styles;
diff --git a/src/screens/closeAccount/styles.tsx b/src/screens/closeAccount/styles.tsx
index 42a6762..06299d5 100644
--- a/src/screens/closeAccount/styles.tsx
+++ b/src/screens/closeAccount/styles.tsx
@@ -12,6 +12,7 @@ const styles = StyleSheet.create({
...FontFamily.notoSansRegular,
fontSize: 22,
marginStart: 16,
+ includeFontPadding: false,
},
appBarIcon: {
marginLeft: 16,
diff --git a/src/screens/eazyPassport/styles.tsx b/src/screens/eazyPassport/styles.tsx
index a1304cc..6a0ce10 100644
--- a/src/screens/eazyPassport/styles.tsx
+++ b/src/screens/eazyPassport/styles.tsx
@@ -16,12 +16,14 @@ const styles = StyleSheet.create({
fontSize: 12,
includeFontPadding: false,
textAlign: 'justify',
+ lineHeight: 24,
},
appBarTitle: {
color: Colors.neutral100.color,
...FontFamily.notoSansRegular,
fontSize: 22,
marginStart: 16,
+ includeFontPadding: false,
},
appBarIcon: {
marginLeft: 16,
diff --git a/src/screens/editProfile/styles.tsx b/src/screens/editProfile/styles.tsx
index 3128b92..b987b96 100644
--- a/src/screens/editProfile/styles.tsx
+++ b/src/screens/editProfile/styles.tsx
@@ -11,6 +11,7 @@ const styles = StyleSheet.create({
color: Colors.neutral100.color,
...FontFamily.notoSansRegular,
fontSize: 22,
+ includeFontPadding: false,
marginStart: 16,
},
appBarIcon: {
diff --git a/src/screens/expressPassport/index.tsx b/src/screens/expressPassport/index.tsx
index e299334..2dca1a6 100644
--- a/src/screens/expressPassport/index.tsx
+++ b/src/screens/expressPassport/index.tsx
@@ -1,160 +1,11 @@
-import React, {useState} from 'react';
-import {Button, Text, View} from 'react-native';
+import React from 'react';
+import {Text, View} from 'react-native';
import styles from './styles';
-import Colors from '../../../assets/styles/Colors';
-import StepIndicator from '../../components/StepIndicator';
-
-const renderContent = (
- step: number,
- subStep: number,
- setStep: (step: number) => void,
- setSubStep: (step: number) => void,
-) => {
- if (step === 1) {
- switch (subStep) {
- case 1:
- return (
-
- Step 1.1
-
- );
- case 2:
- return (
-
- Step 1.2
-
- );
- case 3:
- return (
-
- Step 1.3
- {
- setStep(2);
- setSubStep(1);
- }}
- />
- setSubStep(2)} />
-
- );
- default:
- return null;
- }
- }
-
- if (step === 2) {
- switch (subStep) {
- case 1:
- return (
-
- Step 2.1
- setSubStep(2)} />
- {
- setStep(1);
- setSubStep(3);
- }}
- />
-
- );
- case 2:
- return (
-
- Step 2.2
- setSubStep(3)} />
- setSubStep(1)} />
-
- );
- case 3:
- return (
-
- Step 2.3
- {
- setStep(3);
- setSubStep(1);
- }}
- />
- setSubStep(2)} />
-
- );
- default:
- return null;
- }
- }
-
- switch (step) {
- case 3:
- return (
-
- setStep(4)} />
- setStep(2)} />
-
- );
- case 4:
- return (
-
- setStep(5)} />
- setStep(3)} />
-
- );
- case 5:
- return (
-
- setStep(6)} />
- setStep(4)} />
-
- );
- case 6:
- return (
-
- setStep(7)} />
- setStep(5)} />
-
- );
- case 7:
- return (
-
- setStep(6)} />
-
- );
- default:
- return null;
- }
-};
function ExpressPassportScreen() {
- const [step, setStep] = useState(1);
- const [subStep, setSubStep] = useState(1);
-
- const completedSteps = [...Array(step - 1)].map((_, i) => i + 1);
- const stepTitles: {[key: number]: string} = {
- 1: 'Informasi Pribadi',
- 2: 'Dokumen Pendukung',
- 3: 'Pembayaran',
- 4: 'Konfirmasi Data',
- 5: 'Verifikasi',
- 6: 'Pemrosesan',
- 7: 'Selesai',
- };
-
return (
-
-
- {stepTitles[step]}
-
-
- {renderContent(step, subStep, setStep, setSubStep)}
+
+ Express Passport Screen
);
}
diff --git a/src/screens/guidebook/index.tsx b/src/screens/guidebook/index.tsx
index c86fcb0..6b1e213 100644
--- a/src/screens/guidebook/index.tsx
+++ b/src/screens/guidebook/index.tsx
@@ -1,11 +1,81 @@
import React from 'react';
-import {Text, View} from 'react-native';
+import {Pressable, StatusBar, Text, View} from 'react-native';
import styles from './styles';
+import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
+import Colors from '../../../assets/styles/Colors';
+import {RootStackParamList} from '../../navigation/type';
+import {NativeStackNavigationProp} from '@react-navigation/native-stack';
+import {useNavigation} from '@react-navigation/native';
+import ApplicationGuideIcon from '../../../assets/icons/mobile_friendly.svg';
+import PassportRequirementsIcon from '../../../assets/icons/list_box_outline.svg';
+
+type GuidebookScreenNavigationProp = NativeStackNavigationProp<
+ RootStackParamList,
+ 'Guidebook'
+>;
function GuidebookScreen() {
+ const navigation = useNavigation();
return (
- Guidebook Screen
+
+
+ navigation.goBack()}
+ />
+ Buku Panduan
+
+
+ [
+ styles.guidebookMenuWrapper,
+ {
+ transform: [{scale: pressed ? 0.975 : 1}],
+ },
+ ]}
+ onPress={() => navigation.navigate('ApplicationGuide')}>
+
+
+
+
+ Panduan Aplikasi
+
+
+ Panduan penggunaan aplikasi M-Paspor
+
+
+
+
+
+ [
+ styles.guidebookMenuWrapper,
+ {
+ transform: [{scale: pressed ? 0.975 : 1}],
+ },
+ ]}
+ onPress={() => navigation.navigate('PassportRequirements')}>
+
+
+
+
+ Persyaratan Paspor
+
+
+ Persyaratan seputar pengajuan paspor
+
+
+
+
+
+
);
}
diff --git a/src/screens/guidebook/styles.tsx b/src/screens/guidebook/styles.tsx
index 1f6a290..2408f01 100644
--- a/src/screens/guidebook/styles.tsx
+++ b/src/screens/guidebook/styles.tsx
@@ -1,12 +1,69 @@
import {StyleSheet} from 'react-native';
+import Colors from '../../../assets/styles/Colors';
+import FontFamily from '../../../assets/styles/FontFamily';
const styles = StyleSheet.create({
container: {
flex: 1,
- alignContent: 'center',
+ backgroundColor: Colors.neutral100.color,
+ },
+ appBarTitle: {
+ color: Colors.neutral100.color,
+ ...FontFamily.notoSansRegular,
+ fontSize: 22,
+ marginStart: 16,
+ includeFontPadding: false,
+ },
+ appBarIcon: {
+ marginLeft: 16,
+ },
+ appBarContainer: {
+ height: 64,
+ flexDirection: 'row',
alignItems: 'center',
- backgroundColor: 'white',
- justifyContent: 'center',
+ backgroundColor: Colors.secondary30.color,
+ },
+ topContainer: {
+ backgroundColor: Colors.secondary30.color,
+ height: 85,
+ alignItems: 'center',
+ },
+ contentContainer: {
+ margin: 16,
+ gap: 16,
+ },
+ guidebookMenuContainer: {
+ gap: 16,
+ },
+ guidebookMenuWrapper: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ height: 90,
+ padding: 16,
+ borderWidth: 1,
+ borderRadius: 20,
+ borderColor: Colors.secondary70.color,
+ },
+ guidebookMenuContentWrapper: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: 16,
+ },
+ guidebookMenuTextWrapper: {
+ gap: 6,
+ },
+ guidebookMenuTextTitle: {
+ ...FontFamily.notoSansMedium,
+ fontSize: 14,
+ includeFontPadding: false,
+ color: Colors.primary30.color,
+ },
+ guidebookMenuTextDesc: {
+ ...FontFamily.notoSansRegular,
+ fontSize: 11,
+ includeFontPadding: false,
+ color: Colors.primary40.color,
},
});
diff --git a/src/screens/notification/styles.tsx b/src/screens/notification/styles.tsx
index e1a8f15..c82bea4 100644
--- a/src/screens/notification/styles.tsx
+++ b/src/screens/notification/styles.tsx
@@ -12,6 +12,7 @@ const styles = StyleSheet.create({
...FontFamily.notoSansRegular,
fontSize: 22,
marginStart: 16,
+ includeFontPadding: false,
},
appBarIcon: {
marginLeft: 16,
diff --git a/src/screens/passportRequirements/index.tsx b/src/screens/passportRequirements/index.tsx
new file mode 100644
index 0000000..eabb06b
--- /dev/null
+++ b/src/screens/passportRequirements/index.tsx
@@ -0,0 +1,37 @@
+import React from 'react';
+import {StatusBar, Text, View} from 'react-native';
+import styles from './styles';
+import Colors from '../../../assets/styles/Colors';
+import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
+import {RootStackParamList} from '../../navigation/type';
+import {NativeStackNavigationProp} from '@react-navigation/native-stack';
+import {useNavigation} from '@react-navigation/native';
+
+type PassportRequirementsScreenNavigationProp = NativeStackNavigationProp<
+ RootStackParamList,
+ 'PassportRequirements'
+>;
+
+function PassportRequirementsScreen() {
+ const navigation = useNavigation();
+ return (
+
+
+
+ navigation.goBack()}
+ />
+ Persyaratan Paspor
+
+
+ );
+}
+
+export default PassportRequirementsScreen;
diff --git a/src/screens/passportRequirements/styles.tsx b/src/screens/passportRequirements/styles.tsx
new file mode 100644
index 0000000..e7a8ee8
--- /dev/null
+++ b/src/screens/passportRequirements/styles.tsx
@@ -0,0 +1,28 @@
+import {StyleSheet} from 'react-native';
+import Colors from '../../../assets/styles/Colors';
+import FontFamily from '../../../assets/styles/FontFamily';
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ backgroundColor: Colors.neutral100.color,
+ },
+ appBarTitle: {
+ color: Colors.secondary30.color,
+ ...FontFamily.notoSansRegular,
+ fontSize: 22,
+ marginStart: 16,
+ includeFontPadding: false,
+ },
+ appBarIcon: {
+ marginLeft: 16,
+ },
+ appBarContainer: {
+ height: 64,
+ flexDirection: 'row',
+ alignItems: 'center',
+ backgroundColor: Colors.neutral100.color,
+ },
+});
+
+export default styles;
diff --git a/src/screens/regularPassport/styles.tsx b/src/screens/regularPassport/styles.tsx
index 0bd6019..ddbb0c3 100644
--- a/src/screens/regularPassport/styles.tsx
+++ b/src/screens/regularPassport/styles.tsx
@@ -12,6 +12,7 @@ const styles = StyleSheet.create({
...FontFamily.notoSansRegular,
fontSize: 16,
marginStart: 16,
+ includeFontPadding: false,
},
appBarIcon: {
marginLeft: 16,
diff --git a/src/screens/setPassword/styles.tsx b/src/screens/setPassword/styles.tsx
index bac103c..0cd7e0b 100644
--- a/src/screens/setPassword/styles.tsx
+++ b/src/screens/setPassword/styles.tsx
@@ -12,6 +12,7 @@ const styles = StyleSheet.create({
...FontFamily.notoSansRegular,
fontSize: 22,
marginStart: 16,
+ includeFontPadding: false,
},
appBarIcon: {
marginLeft: 16,