@onairos/react-native 1.0.0
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.
- package/README.md +334 -0
- package/lib/commonjs/components/DataRequestModal.js +176 -0
- package/lib/commonjs/components/DataRequestModal.js.map +1 -0
- package/lib/commonjs/components/Notification.js +106 -0
- package/lib/commonjs/components/Notification.js.map +1 -0
- package/lib/commonjs/components/OnairosButton.js +575 -0
- package/lib/commonjs/components/OnairosButton.js.map +1 -0
- package/lib/commonjs/components/Overlay.js +818 -0
- package/lib/commonjs/components/Overlay.js.map +1 -0
- package/lib/commonjs/components/UniversalOnboarding.js +173 -0
- package/lib/commonjs/components/UniversalOnboarding.js.map +1 -0
- package/lib/commonjs/components/onboarding/OAuthWebView.js +137 -0
- package/lib/commonjs/components/onboarding/OAuthWebView.js.map +1 -0
- package/lib/commonjs/components/onboarding/OnboardingHeader.js +74 -0
- package/lib/commonjs/components/onboarding/OnboardingHeader.js.map +1 -0
- package/lib/commonjs/components/onboarding/PinInput.js +283 -0
- package/lib/commonjs/components/onboarding/PinInput.js.map +1 -0
- package/lib/commonjs/components/onboarding/PlatformConnector.js +244 -0
- package/lib/commonjs/components/onboarding/PlatformConnector.js.map +1 -0
- package/lib/commonjs/components/screens/ConnectorScreen.js +145 -0
- package/lib/commonjs/components/screens/ConnectorScreen.js.map +1 -0
- package/lib/commonjs/components/screens/LoadingScreen.js +91 -0
- package/lib/commonjs/components/screens/LoadingScreen.js.map +1 -0
- package/lib/commonjs/components/screens/PinCreationScreen.js +61 -0
- package/lib/commonjs/components/screens/PinCreationScreen.js.map +1 -0
- package/lib/commonjs/constants/index.js +78 -0
- package/lib/commonjs/constants/index.js.map +1 -0
- package/lib/commonjs/hooks/useConnections.js +89 -0
- package/lib/commonjs/hooks/useConnections.js.map +1 -0
- package/lib/commonjs/hooks/useCredentials.js +85 -0
- package/lib/commonjs/hooks/useCredentials.js.map +1 -0
- package/lib/commonjs/index.js +282 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/services/oauthService.js +362 -0
- package/lib/commonjs/services/oauthService.js.map +1 -0
- package/lib/commonjs/types/declarations.d.js +2 -0
- package/lib/commonjs/types/declarations.d.js.map +1 -0
- package/lib/commonjs/types/index.js +2 -0
- package/lib/commonjs/types/index.js.map +1 -0
- package/lib/commonjs/utils/api.js +129 -0
- package/lib/commonjs/utils/api.js.map +1 -0
- package/lib/commonjs/utils/auth.js +111 -0
- package/lib/commonjs/utils/auth.js.map +1 -0
- package/lib/commonjs/utils/crypto.js +62 -0
- package/lib/commonjs/utils/crypto.js.map +1 -0
- package/lib/commonjs/utils/debugHelper.js +64 -0
- package/lib/commonjs/utils/debugHelper.js.map +1 -0
- package/lib/commonjs/utils/onairosApi.js +270 -0
- package/lib/commonjs/utils/onairosApi.js.map +1 -0
- package/lib/commonjs/utils/secureStorage.js +210 -0
- package/lib/commonjs/utils/secureStorage.js.map +1 -0
- package/lib/module/components/DataRequestModal.js +168 -0
- package/lib/module/components/DataRequestModal.js.map +1 -0
- package/lib/module/components/Notification.js +99 -0
- package/lib/module/components/Notification.js.map +1 -0
- package/lib/module/components/OnairosButton.js +550 -0
- package/lib/module/components/OnairosButton.js.map +1 -0
- package/lib/module/components/Overlay.js +825 -0
- package/lib/module/components/Overlay.js.map +1 -0
- package/lib/module/components/UniversalOnboarding.js +164 -0
- package/lib/module/components/UniversalOnboarding.js.map +1 -0
- package/lib/module/components/onboarding/OAuthWebView.js +128 -0
- package/lib/module/components/onboarding/OAuthWebView.js.map +1 -0
- package/lib/module/components/onboarding/OnboardingHeader.js +66 -0
- package/lib/module/components/onboarding/OnboardingHeader.js.map +1 -0
- package/lib/module/components/onboarding/PinInput.js +274 -0
- package/lib/module/components/onboarding/PinInput.js.map +1 -0
- package/lib/module/components/onboarding/PlatformConnector.js +235 -0
- package/lib/module/components/onboarding/PlatformConnector.js.map +1 -0
- package/lib/module/components/screens/ConnectorScreen.js +137 -0
- package/lib/module/components/screens/ConnectorScreen.js.map +1 -0
- package/lib/module/components/screens/LoadingScreen.js +83 -0
- package/lib/module/components/screens/LoadingScreen.js.map +1 -0
- package/lib/module/components/screens/PinCreationScreen.js +53 -0
- package/lib/module/components/screens/PinCreationScreen.js.map +1 -0
- package/lib/module/constants/index.js +72 -0
- package/lib/module/constants/index.js.map +1 -0
- package/lib/module/hooks/useConnections.js +81 -0
- package/lib/module/hooks/useConnections.js.map +1 -0
- package/lib/module/hooks/useCredentials.js +77 -0
- package/lib/module/hooks/useCredentials.js.map +1 -0
- package/lib/module/index.js +34 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/services/oauthService.js +352 -0
- package/lib/module/services/oauthService.js.map +1 -0
- package/lib/module/types/declarations.d.js +2 -0
- package/lib/module/types/declarations.d.js.map +1 -0
- package/lib/module/types/index.js +2 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/module/utils/api.js +117 -0
- package/lib/module/utils/api.js.map +1 -0
- package/lib/module/utils/auth.js +99 -0
- package/lib/module/utils/auth.js.map +1 -0
- package/lib/module/utils/crypto.js +54 -0
- package/lib/module/utils/crypto.js.map +1 -0
- package/lib/module/utils/debugHelper.js +54 -0
- package/lib/module/utils/debugHelper.js.map +1 -0
- package/lib/module/utils/onairosApi.js +256 -0
- package/lib/module/utils/onairosApi.js.map +1 -0
- package/lib/module/utils/secureStorage.js +196 -0
- package/lib/module/utils/secureStorage.js.map +1 -0
- package/package.json +115 -0
- package/src/components/DataRequestModal.tsx +187 -0
- package/src/components/Notification.js +101 -0
- package/src/components/OnairosButton.js +604 -0
- package/src/components/OnairosButton.tsx +182 -0
- package/src/components/Overlay.js +854 -0
- package/src/components/Overlay.tsx +272 -0
- package/src/components/UniversalOnboarding.tsx +184 -0
- package/src/components/onboarding/OAuthWebView.tsx +134 -0
- package/src/components/onboarding/OnboardingHeader.tsx +70 -0
- package/src/components/onboarding/PinInput.tsx +356 -0
- package/src/components/onboarding/PlatformConnector.tsx +297 -0
- package/src/components/screens/ConnectorScreen.tsx +152 -0
- package/src/components/screens/LoadingScreen.tsx +100 -0
- package/src/components/screens/PinCreationScreen.tsx +67 -0
- package/src/constants/index.ts +78 -0
- package/src/hooks/useConnections.ts +90 -0
- package/src/hooks/useCredentials.ts +83 -0
- package/src/index.js +14 -0
- package/src/index.ts +82 -0
- package/src/services/oauthService.ts +360 -0
- package/src/types/declarations.d.ts +26 -0
- package/src/types/index.ts +82 -0
- package/src/utils/api.js +112 -0
- package/src/utils/auth.js +104 -0
- package/src/utils/crypto.js +60 -0
- package/src/utils/debugHelper.ts +53 -0
- package/src/utils/onairosApi.ts +303 -0
- package/src/utils/secureStorage.ts +230 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","View","Text","StyleSheet","TouchableOpacity","ScrollView","Platform","Dimensions","BottomSheet","Icon","COLORS","height","get","Overlay","visible","onClose","onAccept","AppName","requestData","biometricType","OS","bottomSheetRef","snapPoints","_bottomSheetRef$curre","current","expand","_bottomSheetRef$curre2","close","getBiometricIcon","renderDataCategories","Object","entries","map","category","items","createElement","key","style","styles","categoryContainer","categoryTitle","item","description","itemContainer","name","size","color","primary","itemContent","itemTitle","itemDescription","ref","index","enablePanDownToClose","backdropComponent","animatedIndex","backdrop","opacity","interpolate","inputRange","outputRange","container","header","headerTitle","onPress","closeButton","content","appInfoContainer","appName","requestText","securityNotice","securityText","footer","cancelButton","cancelButtonText","acceptButton","acceptButtonText","buttonIcon","create","flex","backgroundColor","absoluteFillObject","flexDirection","alignItems","padding","headerBg","borderTopLeftRadius","borderTopRightRadius","fontSize","fontWeight","marginLeft","marginBottom","paddingLeft","borderRadius","borderTopWidth","borderTopColor","justifyContent","paddingVertical","borderWidth","borderColor","marginRight"],"sourceRoot":"..\\..\\..\\src","sources":["components/Overlay.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
2
|
+
import { View, Text, StyleSheet, TouchableOpacity, Dimensions } from 'react-native';
|
|
3
|
+
import BottomSheet from '@gorhom/bottom-sheet';
|
|
4
|
+
import Icon from 'react-native-vector-icons/MaterialIcons';
|
|
5
|
+
import { PlatformList } from './PlatformList';
|
|
6
|
+
import { PinInput } from './PinInput';
|
|
7
|
+
import { TrainingModal } from './TrainingModal';
|
|
8
|
+
import { useConnections } from '../hooks/useConnections';
|
|
9
|
+
import { COLORS } from '../constants';
|
|
10
|
+
const {
|
|
11
|
+
height
|
|
12
|
+
} = Dimensions.get('window');
|
|
13
|
+
export const UniversalOnboarding = ({
|
|
14
|
+
visible,
|
|
15
|
+
onClose,
|
|
16
|
+
AppName,
|
|
17
|
+
requestData,
|
|
18
|
+
returnLink,
|
|
19
|
+
onComplete,
|
|
20
|
+
embedd,
|
|
21
|
+
debug,
|
|
22
|
+
test
|
|
23
|
+
}) => {
|
|
24
|
+
const bottomSheetRef = useRef(null);
|
|
25
|
+
const [step, setStep] = useState('connect');
|
|
26
|
+
const [connections, setConnections] = useState({});
|
|
27
|
+
const [pin, setPin] = useState('');
|
|
28
|
+
const [training, setTraining] = useState({
|
|
29
|
+
progress: 0,
|
|
30
|
+
eta: ''
|
|
31
|
+
});
|
|
32
|
+
const {
|
|
33
|
+
connectPlatform,
|
|
34
|
+
disconnectPlatform,
|
|
35
|
+
getConnectionStatus,
|
|
36
|
+
isConnecting
|
|
37
|
+
} = useConnections();
|
|
38
|
+
const snapPoints = useMemo(() => ['90%'], []);
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (visible) {
|
|
41
|
+
var _bottomSheetRef$curre;
|
|
42
|
+
(_bottomSheetRef$curre = bottomSheetRef.current) === null || _bottomSheetRef$curre === void 0 || _bottomSheetRef$curre.expand();
|
|
43
|
+
loadInitialStatus();
|
|
44
|
+
} else {
|
|
45
|
+
var _bottomSheetRef$curre2;
|
|
46
|
+
(_bottomSheetRef$curre2 = bottomSheetRef.current) === null || _bottomSheetRef$curre2 === void 0 || _bottomSheetRef$curre2.close();
|
|
47
|
+
}
|
|
48
|
+
}, [visible]);
|
|
49
|
+
const loadInitialStatus = useCallback(async () => {
|
|
50
|
+
const status = await getConnectionStatus();
|
|
51
|
+
setConnections(status);
|
|
52
|
+
}, [getConnectionStatus]);
|
|
53
|
+
const handlePlatformToggle = useCallback(async (platform, connect) => {
|
|
54
|
+
try {
|
|
55
|
+
if (connect) {
|
|
56
|
+
await connectPlatform(platform);
|
|
57
|
+
} else {
|
|
58
|
+
await disconnectPlatform(platform);
|
|
59
|
+
}
|
|
60
|
+
await loadInitialStatus();
|
|
61
|
+
} catch (error) {
|
|
62
|
+
console.error(`Error toggling ${platform}:`, error);
|
|
63
|
+
}
|
|
64
|
+
}, [connectPlatform, disconnectPlatform, loadInitialStatus]);
|
|
65
|
+
const handlePinSubmit = useCallback(async userPin => {
|
|
66
|
+
setPin(userPin);
|
|
67
|
+
setStep('training');
|
|
68
|
+
// Simulate training progress
|
|
69
|
+
let progress = 0;
|
|
70
|
+
const interval = setInterval(() => {
|
|
71
|
+
progress += 0.1;
|
|
72
|
+
setTraining({
|
|
73
|
+
progress,
|
|
74
|
+
eta: `${Math.round((1 - progress) * 100)} seconds remaining`
|
|
75
|
+
});
|
|
76
|
+
if (progress >= 1) {
|
|
77
|
+
clearInterval(interval);
|
|
78
|
+
onComplete('https://api2.onairos.uk', 'dummy-token', {
|
|
79
|
+
pin: userPin,
|
|
80
|
+
connections
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}, 1000);
|
|
84
|
+
}, [connections, onComplete]);
|
|
85
|
+
const canProceedToPin = useMemo(() => {
|
|
86
|
+
const connectedPlatforms = Object.values(connections).filter(Boolean).length;
|
|
87
|
+
return connectedPlatforms >= 2;
|
|
88
|
+
}, [connections]);
|
|
89
|
+
const renderHeader = () => /*#__PURE__*/React.createElement(View, {
|
|
90
|
+
style: styles.header
|
|
91
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
92
|
+
name: "auto_awesome",
|
|
93
|
+
size: 24,
|
|
94
|
+
color: COLORS.primary
|
|
95
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
96
|
+
style: styles.headerTitle
|
|
97
|
+
}, "Connect with Onairos"), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
98
|
+
onPress: onClose,
|
|
99
|
+
style: styles.closeButton
|
|
100
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
101
|
+
name: "close",
|
|
102
|
+
size: 24,
|
|
103
|
+
color: "#000"
|
|
104
|
+
})));
|
|
105
|
+
const renderContent = () => {
|
|
106
|
+
switch (step) {
|
|
107
|
+
case 'connect':
|
|
108
|
+
return /*#__PURE__*/React.createElement(PlatformList, {
|
|
109
|
+
connections: connections,
|
|
110
|
+
onToggle: handlePlatformToggle,
|
|
111
|
+
isLoading: isConnecting,
|
|
112
|
+
canProceed: canProceedToPin,
|
|
113
|
+
onProceed: () => setStep('pin')
|
|
114
|
+
});
|
|
115
|
+
case 'pin':
|
|
116
|
+
return /*#__PURE__*/React.createElement(PinInput, {
|
|
117
|
+
onSubmit: handlePinSubmit,
|
|
118
|
+
minLength: 8,
|
|
119
|
+
requireSpecialChar: true,
|
|
120
|
+
requireNumber: true
|
|
121
|
+
});
|
|
122
|
+
case 'training':
|
|
123
|
+
return /*#__PURE__*/React.createElement(TrainingModal, {
|
|
124
|
+
progress: training.progress,
|
|
125
|
+
eta: training.eta,
|
|
126
|
+
onCancel: onClose
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
return /*#__PURE__*/React.createElement(BottomSheet, {
|
|
131
|
+
ref: bottomSheetRef,
|
|
132
|
+
snapPoints: snapPoints,
|
|
133
|
+
enablePanDownToClose: true,
|
|
134
|
+
onClose: onClose,
|
|
135
|
+
index: visible ? 0 : -1
|
|
136
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
137
|
+
style: styles.container
|
|
138
|
+
}, renderHeader(), renderContent()));
|
|
139
|
+
};
|
|
140
|
+
const styles = StyleSheet.create({
|
|
141
|
+
container: {
|
|
142
|
+
flex: 1,
|
|
143
|
+
backgroundColor: '#fff'
|
|
144
|
+
},
|
|
145
|
+
header: {
|
|
146
|
+
flexDirection: 'row',
|
|
147
|
+
alignItems: 'center',
|
|
148
|
+
padding: 16,
|
|
149
|
+
backgroundColor: COLORS.headerBg,
|
|
150
|
+
borderTopLeftRadius: 16,
|
|
151
|
+
borderTopRightRadius: 16
|
|
152
|
+
},
|
|
153
|
+
headerTitle: {
|
|
154
|
+
flex: 1,
|
|
155
|
+
fontSize: 18,
|
|
156
|
+
fontWeight: '600',
|
|
157
|
+
marginLeft: 12,
|
|
158
|
+
color: '#000'
|
|
159
|
+
},
|
|
160
|
+
closeButton: {
|
|
161
|
+
padding: 8
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
//# sourceMappingURL=UniversalOnboarding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","View","Text","StyleSheet","TouchableOpacity","Dimensions","BottomSheet","Icon","PlatformList","PinInput","TrainingModal","useConnections","COLORS","height","get","UniversalOnboarding","visible","onClose","AppName","requestData","returnLink","onComplete","embedd","debug","test","bottomSheetRef","step","setStep","connections","setConnections","pin","setPin","training","setTraining","progress","eta","connectPlatform","disconnectPlatform","getConnectionStatus","isConnecting","snapPoints","_bottomSheetRef$curre","current","expand","loadInitialStatus","_bottomSheetRef$curre2","close","status","handlePlatformToggle","platform","connect","error","console","handlePinSubmit","userPin","interval","setInterval","Math","round","clearInterval","canProceedToPin","connectedPlatforms","Object","values","filter","Boolean","length","renderHeader","createElement","style","styles","header","name","size","color","primary","headerTitle","onPress","closeButton","renderContent","onToggle","isLoading","canProceed","onProceed","onSubmit","minLength","requireSpecialChar","requireNumber","onCancel","ref","enablePanDownToClose","index","container","create","flex","backgroundColor","flexDirection","alignItems","padding","headerBg","borderTopLeftRadius","borderTopRightRadius","fontSize","fontWeight","marginLeft"],"sourceRoot":"..\\..\\..\\src","sources":["components/UniversalOnboarding.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import React, { useCallback, useState } from 'react';
|
|
2
|
+
import { View, StyleSheet, ActivityIndicator, SafeAreaView, TouchableOpacity } from 'react-native';
|
|
3
|
+
import { WebView } from 'react-native-webview';
|
|
4
|
+
import Icon from 'react-native-vector-icons/MaterialIcons';
|
|
5
|
+
import { COLORS } from '../../constants';
|
|
6
|
+
export const OAuthWebView = ({
|
|
7
|
+
url,
|
|
8
|
+
platform,
|
|
9
|
+
onComplete,
|
|
10
|
+
onClose
|
|
11
|
+
}) => {
|
|
12
|
+
const [loading, setLoading] = useState(true);
|
|
13
|
+
const handleNavigationStateChange = useCallback(navState => {
|
|
14
|
+
// Check if the URL includes our redirect URI
|
|
15
|
+
if (navState.url.startsWith('onairosreact://auth/')) {
|
|
16
|
+
// OAuth flow is complete - callback will be handled by the deep link handler
|
|
17
|
+
onComplete();
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
}, [onComplete]);
|
|
21
|
+
const handleLoadEnd = useCallback(() => {
|
|
22
|
+
setLoading(false);
|
|
23
|
+
}, []);
|
|
24
|
+
return /*#__PURE__*/React.createElement(SafeAreaView, {
|
|
25
|
+
style: styles.container
|
|
26
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
27
|
+
style: styles.header
|
|
28
|
+
}, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
29
|
+
onPress: onClose,
|
|
30
|
+
style: styles.closeButton
|
|
31
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
32
|
+
name: "close",
|
|
33
|
+
size: 24,
|
|
34
|
+
color: "#000"
|
|
35
|
+
})), /*#__PURE__*/React.createElement(View, {
|
|
36
|
+
style: styles.titleContainer
|
|
37
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
38
|
+
name: getPlatformIcon(platform),
|
|
39
|
+
size: 20,
|
|
40
|
+
color: getPlatformColor(platform)
|
|
41
|
+
}))), /*#__PURE__*/React.createElement(WebView, {
|
|
42
|
+
source: {
|
|
43
|
+
uri: url
|
|
44
|
+
},
|
|
45
|
+
onNavigationStateChange: handleNavigationStateChange,
|
|
46
|
+
onLoadEnd: handleLoadEnd,
|
|
47
|
+
startInLoadingState: true,
|
|
48
|
+
renderLoading: () => null // We'll handle our own loading UI
|
|
49
|
+
,
|
|
50
|
+
style: styles.webView
|
|
51
|
+
}), loading && /*#__PURE__*/React.createElement(View, {
|
|
52
|
+
style: styles.loadingContainer
|
|
53
|
+
}, /*#__PURE__*/React.createElement(ActivityIndicator, {
|
|
54
|
+
size: "large",
|
|
55
|
+
color: COLORS.primary
|
|
56
|
+
})));
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Get platform-specific icon
|
|
61
|
+
*/
|
|
62
|
+
const getPlatformIcon = platform => {
|
|
63
|
+
switch (platform) {
|
|
64
|
+
case 'instagram':
|
|
65
|
+
return 'photo-camera';
|
|
66
|
+
case 'youtube':
|
|
67
|
+
return 'smart-display';
|
|
68
|
+
case 'pinterest':
|
|
69
|
+
return 'push-pin';
|
|
70
|
+
case 'reddit':
|
|
71
|
+
return 'forum';
|
|
72
|
+
default:
|
|
73
|
+
return 'link';
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Get platform-specific color
|
|
79
|
+
*/
|
|
80
|
+
const getPlatformColor = platform => {
|
|
81
|
+
switch (platform) {
|
|
82
|
+
case 'instagram':
|
|
83
|
+
return '#E1306C';
|
|
84
|
+
case 'youtube':
|
|
85
|
+
return '#FF0000';
|
|
86
|
+
case 'pinterest':
|
|
87
|
+
return '#E60023';
|
|
88
|
+
case 'reddit':
|
|
89
|
+
return '#FF4500';
|
|
90
|
+
default:
|
|
91
|
+
return COLORS.primary;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const styles = StyleSheet.create({
|
|
95
|
+
container: {
|
|
96
|
+
flex: 1,
|
|
97
|
+
backgroundColor: '#fff'
|
|
98
|
+
},
|
|
99
|
+
header: {
|
|
100
|
+
flexDirection: 'row',
|
|
101
|
+
alignItems: 'center',
|
|
102
|
+
height: 56,
|
|
103
|
+
backgroundColor: '#f8f8f8',
|
|
104
|
+
borderBottomWidth: 1,
|
|
105
|
+
borderBottomColor: '#e0e0e0',
|
|
106
|
+
paddingHorizontal: 16
|
|
107
|
+
},
|
|
108
|
+
titleContainer: {
|
|
109
|
+
flex: 1,
|
|
110
|
+
alignItems: 'center'
|
|
111
|
+
},
|
|
112
|
+
closeButton: {
|
|
113
|
+
padding: 8,
|
|
114
|
+
position: 'absolute',
|
|
115
|
+
left: 16,
|
|
116
|
+
zIndex: 10
|
|
117
|
+
},
|
|
118
|
+
webView: {
|
|
119
|
+
flex: 1
|
|
120
|
+
},
|
|
121
|
+
loadingContainer: {
|
|
122
|
+
...StyleSheet.absoluteFillObject,
|
|
123
|
+
backgroundColor: 'rgba(255, 255, 255, 0.8)',
|
|
124
|
+
alignItems: 'center',
|
|
125
|
+
justifyContent: 'center'
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
//# sourceMappingURL=OAuthWebView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","useState","View","StyleSheet","ActivityIndicator","SafeAreaView","TouchableOpacity","WebView","Icon","COLORS","OAuthWebView","url","platform","onComplete","onClose","loading","setLoading","handleNavigationStateChange","navState","startsWith","handleLoadEnd","createElement","style","styles","container","header","onPress","closeButton","name","size","color","titleContainer","getPlatformIcon","getPlatformColor","source","uri","onNavigationStateChange","onLoadEnd","startInLoadingState","renderLoading","webView","loadingContainer","primary","create","flex","backgroundColor","flexDirection","alignItems","height","borderBottomWidth","borderBottomColor","paddingHorizontal","padding","position","left","zIndex","absoluteFillObject","justifyContent"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/onboarding/OAuthWebView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { View, Text, StyleSheet, TouchableOpacity } from 'react-native';
|
|
3
|
+
import Icon from 'react-native-vector-icons/MaterialIcons';
|
|
4
|
+
import { COLORS } from '../../constants';
|
|
5
|
+
export const OnboardingHeader = ({
|
|
6
|
+
title,
|
|
7
|
+
subtitle,
|
|
8
|
+
showBackButton = false,
|
|
9
|
+
onBack,
|
|
10
|
+
onClose
|
|
11
|
+
}) => {
|
|
12
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
13
|
+
style: styles.header
|
|
14
|
+
}, showBackButton && /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
15
|
+
style: styles.backButton,
|
|
16
|
+
onPress: onBack
|
|
17
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
18
|
+
name: "arrow-back",
|
|
19
|
+
size: 24,
|
|
20
|
+
color: "#000"
|
|
21
|
+
})), /*#__PURE__*/React.createElement(View, {
|
|
22
|
+
style: styles.titleContainer
|
|
23
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
24
|
+
style: styles.title
|
|
25
|
+
}, title), subtitle && /*#__PURE__*/React.createElement(Text, {
|
|
26
|
+
style: styles.subtitle
|
|
27
|
+
}, subtitle)), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
28
|
+
style: styles.closeButton,
|
|
29
|
+
onPress: onClose
|
|
30
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
31
|
+
name: "close",
|
|
32
|
+
size: 24,
|
|
33
|
+
color: "#000"
|
|
34
|
+
})));
|
|
35
|
+
};
|
|
36
|
+
const styles = StyleSheet.create({
|
|
37
|
+
header: {
|
|
38
|
+
flexDirection: 'row',
|
|
39
|
+
alignItems: 'center',
|
|
40
|
+
padding: 16,
|
|
41
|
+
backgroundColor: COLORS.headerBg,
|
|
42
|
+
borderTopLeftRadius: 16,
|
|
43
|
+
borderTopRightRadius: 16
|
|
44
|
+
},
|
|
45
|
+
backButton: {
|
|
46
|
+
padding: 8,
|
|
47
|
+
marginRight: 8
|
|
48
|
+
},
|
|
49
|
+
titleContainer: {
|
|
50
|
+
flex: 1
|
|
51
|
+
},
|
|
52
|
+
title: {
|
|
53
|
+
fontSize: 18,
|
|
54
|
+
fontWeight: '600',
|
|
55
|
+
color: '#000'
|
|
56
|
+
},
|
|
57
|
+
subtitle: {
|
|
58
|
+
fontSize: 14,
|
|
59
|
+
color: '#666',
|
|
60
|
+
marginTop: 4
|
|
61
|
+
},
|
|
62
|
+
closeButton: {
|
|
63
|
+
padding: 8
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=OnboardingHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","Text","StyleSheet","TouchableOpacity","Icon","COLORS","OnboardingHeader","title","subtitle","showBackButton","onBack","onClose","createElement","style","styles","header","backButton","onPress","name","size","color","titleContainer","closeButton","create","flexDirection","alignItems","padding","backgroundColor","headerBg","borderTopLeftRadius","borderTopRightRadius","marginRight","flex","fontSize","fontWeight","marginTop"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/onboarding/OnboardingHeader.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,EAAEC,UAAU,EAAEC,gBAAgB,QAAQ,cAAc;AACvE,OAAOC,IAAI,MAAM,yCAAyC;AAC1D,SAASC,MAAM,QAAQ,iBAAiB;AAUxC,OAAO,MAAMC,gBAAiD,GAAGA,CAAC;EAChEC,KAAK;EACLC,QAAQ;EACRC,cAAc,GAAG,KAAK;EACtBC,MAAM;EACNC;AACF,CAAC,KAAK;EACJ,oBACEZ,KAAA,CAAAa,aAAA,CAACZ,IAAI;IAACa,KAAK,EAAEC,MAAM,CAACC;EAAO,GACxBN,cAAc,iBACbV,KAAA,CAAAa,aAAA,CAACT,gBAAgB;IAACU,KAAK,EAAEC,MAAM,CAACE,UAAW;IAACC,OAAO,EAAEP;EAAO,gBAC1DX,KAAA,CAAAa,aAAA,CAACR,IAAI;IAACc,IAAI,EAAC,YAAY;IAACC,IAAI,EAAE,EAAG;IAACC,KAAK,EAAC;EAAM,CAAE,CAChC,CACnB,eAEDrB,KAAA,CAAAa,aAAA,CAACZ,IAAI;IAACa,KAAK,EAAEC,MAAM,CAACO;EAAe,gBACjCtB,KAAA,CAAAa,aAAA,CAACX,IAAI;IAACY,KAAK,EAAEC,MAAM,CAACP;EAAM,GAAEA,KAAY,CAAC,EACxCC,QAAQ,iBAAIT,KAAA,CAAAa,aAAA,CAACX,IAAI;IAACY,KAAK,EAAEC,MAAM,CAACN;EAAS,GAAEA,QAAe,CACvD,CAAC,eAEPT,KAAA,CAAAa,aAAA,CAACT,gBAAgB;IAACU,KAAK,EAAEC,MAAM,CAACQ,WAAY;IAACL,OAAO,EAAEN;EAAQ,gBAC5DZ,KAAA,CAAAa,aAAA,CAACR,IAAI;IAACc,IAAI,EAAC,OAAO;IAACC,IAAI,EAAE,EAAG;IAACC,KAAK,EAAC;EAAM,CAAE,CAC3B,CACd,CAAC;AAEX,CAAC;AAED,MAAMN,MAAM,GAAGZ,UAAU,CAACqB,MAAM,CAAC;EAC/BR,MAAM,EAAE;IACNS,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,OAAO,EAAE,EAAE;IACXC,eAAe,EAAEtB,MAAM,CAACuB,QAAQ;IAChCC,mBAAmB,EAAE,EAAE;IACvBC,oBAAoB,EAAE;EACxB,CAAC;EACDd,UAAU,EAAE;IACVU,OAAO,EAAE,CAAC;IACVK,WAAW,EAAE;EACf,CAAC;EACDV,cAAc,EAAE;IACdW,IAAI,EAAE;EACR,CAAC;EACDzB,KAAK,EAAE;IACL0B,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,KAAK;IACjBd,KAAK,EAAE;EACT,CAAC;EACDZ,QAAQ,EAAE;IACRyB,QAAQ,EAAE,EAAE;IACZb,KAAK,EAAE,MAAM;IACbe,SAAS,EAAE;EACb,CAAC;EACDb,WAAW,EAAE;IACXI,OAAO,EAAE;EACX;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import React, { useState, useCallback, useEffect } from 'react';
|
|
2
|
+
import { View, Text, StyleSheet, TextInput, TouchableOpacity, Keyboard, KeyboardAvoidingView, Platform } from 'react-native';
|
|
3
|
+
import Icon from 'react-native-vector-icons/MaterialIcons';
|
|
4
|
+
import { COLORS } from '../../constants';
|
|
5
|
+
export const PinInput = ({
|
|
6
|
+
onSubmit,
|
|
7
|
+
minLength = 6,
|
|
8
|
+
requireSpecialChar = true,
|
|
9
|
+
requireNumber = true
|
|
10
|
+
}) => {
|
|
11
|
+
const [pin, setPin] = useState('');
|
|
12
|
+
const [confirmPin, setConfirmPin] = useState('');
|
|
13
|
+
const [showPin, setShowPin] = useState(false);
|
|
14
|
+
const [errors, setErrors] = useState([]);
|
|
15
|
+
const [step, setStep] = useState('create');
|
|
16
|
+
|
|
17
|
+
// Validate pin whenever it changes
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (step === 'create') {
|
|
20
|
+
validatePin(pin);
|
|
21
|
+
}
|
|
22
|
+
}, [pin, step]);
|
|
23
|
+
|
|
24
|
+
// Validate PIN strength and requirements
|
|
25
|
+
const validatePin = useCallback(value => {
|
|
26
|
+
const newErrors = [];
|
|
27
|
+
if (value.length < minLength) {
|
|
28
|
+
newErrors.push(`PIN must be at least ${minLength} characters`);
|
|
29
|
+
}
|
|
30
|
+
if (requireNumber && !/\d/.test(value)) {
|
|
31
|
+
newErrors.push('PIN must include at least one number');
|
|
32
|
+
}
|
|
33
|
+
if (requireSpecialChar && !/[!@#$%^&*(),.?":{}|<>]/.test(value)) {
|
|
34
|
+
newErrors.push('PIN must include at least one special character');
|
|
35
|
+
}
|
|
36
|
+
setErrors(newErrors);
|
|
37
|
+
return newErrors.length === 0;
|
|
38
|
+
}, [minLength, requireNumber, requireSpecialChar]);
|
|
39
|
+
|
|
40
|
+
// Handle PIN submission
|
|
41
|
+
const handleSubmit = useCallback(() => {
|
|
42
|
+
if (step === 'create') {
|
|
43
|
+
if (validatePin(pin)) {
|
|
44
|
+
setStep('confirm');
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
// Confirm PIN
|
|
48
|
+
if (pin === confirmPin) {
|
|
49
|
+
Keyboard.dismiss();
|
|
50
|
+
onSubmit(pin);
|
|
51
|
+
} else {
|
|
52
|
+
setErrors(['PINs do not match']);
|
|
53
|
+
setConfirmPin('');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}, [pin, confirmPin, step, validatePin, onSubmit]);
|
|
57
|
+
|
|
58
|
+
// Go back to PIN creation step
|
|
59
|
+
const handleBack = useCallback(() => {
|
|
60
|
+
setStep('create');
|
|
61
|
+
setConfirmPin('');
|
|
62
|
+
setErrors([]);
|
|
63
|
+
}, []);
|
|
64
|
+
|
|
65
|
+
// Toggle PIN visibility
|
|
66
|
+
const togglePinVisibility = useCallback(() => {
|
|
67
|
+
setShowPin(!showPin);
|
|
68
|
+
}, [showPin]);
|
|
69
|
+
return /*#__PURE__*/React.createElement(KeyboardAvoidingView, {
|
|
70
|
+
behavior: Platform.OS === 'ios' ? 'padding' : 'height',
|
|
71
|
+
style: styles.container
|
|
72
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
73
|
+
style: styles.content
|
|
74
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
75
|
+
style: styles.title
|
|
76
|
+
}, step === 'create' ? 'Create a PIN' : 'Confirm your PIN'), /*#__PURE__*/React.createElement(Text, {
|
|
77
|
+
style: styles.subtitle
|
|
78
|
+
}, step === 'create' ? 'This PIN will protect your Onairos account' : 'Please re-enter your PIN to confirm'), /*#__PURE__*/React.createElement(View, {
|
|
79
|
+
style: styles.inputContainer
|
|
80
|
+
}, /*#__PURE__*/React.createElement(TextInput, {
|
|
81
|
+
style: styles.input,
|
|
82
|
+
value: step === 'create' ? pin : confirmPin,
|
|
83
|
+
onChangeText: step === 'create' ? setPin : setConfirmPin,
|
|
84
|
+
secureTextEntry: !showPin,
|
|
85
|
+
keyboardType: "default",
|
|
86
|
+
autoCapitalize: "none",
|
|
87
|
+
autoCorrect: false,
|
|
88
|
+
placeholder: step === 'create' ? 'Enter PIN' : 'Confirm PIN',
|
|
89
|
+
placeholderTextColor: "#999",
|
|
90
|
+
returnKeyType: "done",
|
|
91
|
+
onSubmitEditing: handleSubmit
|
|
92
|
+
}), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
93
|
+
style: styles.visibilityToggle,
|
|
94
|
+
onPress: togglePinVisibility
|
|
95
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
96
|
+
name: showPin ? 'visibility-off' : 'visibility',
|
|
97
|
+
size: 24,
|
|
98
|
+
color: "#999"
|
|
99
|
+
}))), errors.length > 0 && /*#__PURE__*/React.createElement(View, {
|
|
100
|
+
style: styles.errorContainer
|
|
101
|
+
}, errors.map((error, index) => /*#__PURE__*/React.createElement(View, {
|
|
102
|
+
key: index,
|
|
103
|
+
style: styles.errorItem
|
|
104
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
105
|
+
name: "error-outline",
|
|
106
|
+
size: 16,
|
|
107
|
+
color: "#f44336"
|
|
108
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
109
|
+
style: styles.errorText
|
|
110
|
+
}, error)))), step === 'create' && /*#__PURE__*/React.createElement(View, {
|
|
111
|
+
style: styles.requirementsContainer
|
|
112
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
113
|
+
style: styles.requirementsTitle
|
|
114
|
+
}, "PIN Requirements:"), /*#__PURE__*/React.createElement(View, {
|
|
115
|
+
style: styles.requirement
|
|
116
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
117
|
+
name: pin.length >= minLength ? 'check-circle' : 'radio-button-unchecked',
|
|
118
|
+
size: 16,
|
|
119
|
+
color: pin.length >= minLength ? '#4caf50' : '#999'
|
|
120
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
121
|
+
style: [styles.requirementText, {
|
|
122
|
+
color: pin.length >= minLength ? '#4caf50' : '#999'
|
|
123
|
+
}]
|
|
124
|
+
}, "At least ", minLength, " characters")), requireNumber && /*#__PURE__*/React.createElement(View, {
|
|
125
|
+
style: styles.requirement
|
|
126
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
127
|
+
name: /\d/.test(pin) ? 'check-circle' : 'radio-button-unchecked',
|
|
128
|
+
size: 16,
|
|
129
|
+
color: /\d/.test(pin) ? '#4caf50' : '#999'
|
|
130
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
131
|
+
style: [styles.requirementText, {
|
|
132
|
+
color: /\d/.test(pin) ? '#4caf50' : '#999'
|
|
133
|
+
}]
|
|
134
|
+
}, "Include at least one number")), requireSpecialChar && /*#__PURE__*/React.createElement(View, {
|
|
135
|
+
style: styles.requirement
|
|
136
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
137
|
+
name: /[!@#$%^&*(),.?":{}|<>]/.test(pin) ? 'check-circle' : 'radio-button-unchecked',
|
|
138
|
+
size: 16,
|
|
139
|
+
color: /[!@#$%^&*(),.?":{}|<>]/.test(pin) ? '#4caf50' : '#999'
|
|
140
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
141
|
+
style: [styles.requirementText, {
|
|
142
|
+
color: /[!@#$%^&*(),.?":{}|<>]/.test(pin) ? '#4caf50' : '#999'
|
|
143
|
+
}]
|
|
144
|
+
}, "Include at least one special character"))), /*#__PURE__*/React.createElement(View, {
|
|
145
|
+
style: styles.buttonContainer
|
|
146
|
+
}, step === 'confirm' && /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
147
|
+
style: [styles.button, styles.backButton],
|
|
148
|
+
onPress: handleBack
|
|
149
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
150
|
+
name: "arrow-back",
|
|
151
|
+
size: 20,
|
|
152
|
+
color: COLORS.primary
|
|
153
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
154
|
+
style: [styles.buttonText, styles.backButtonText]
|
|
155
|
+
}, "Back")), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
156
|
+
style: [styles.button, styles.nextButton, step === 'create' && errors.length > 0 || step === 'confirm' && !confirmPin ? styles.disabledButton : null],
|
|
157
|
+
onPress: handleSubmit,
|
|
158
|
+
disabled: step === 'create' && errors.length > 0 || step === 'confirm' && !confirmPin
|
|
159
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
160
|
+
style: [styles.buttonText, styles.nextButtonText]
|
|
161
|
+
}, step === 'create' ? 'Next' : 'Submit'), /*#__PURE__*/React.createElement(Icon, {
|
|
162
|
+
name: "arrow-forward",
|
|
163
|
+
size: 20,
|
|
164
|
+
color: "#fff"
|
|
165
|
+
})))));
|
|
166
|
+
};
|
|
167
|
+
const styles = StyleSheet.create({
|
|
168
|
+
container: {
|
|
169
|
+
flex: 1
|
|
170
|
+
},
|
|
171
|
+
content: {
|
|
172
|
+
padding: 24
|
|
173
|
+
},
|
|
174
|
+
title: {
|
|
175
|
+
fontSize: 24,
|
|
176
|
+
fontWeight: 'bold',
|
|
177
|
+
marginBottom: 8,
|
|
178
|
+
color: '#000'
|
|
179
|
+
},
|
|
180
|
+
subtitle: {
|
|
181
|
+
fontSize: 16,
|
|
182
|
+
color: '#666',
|
|
183
|
+
marginBottom: 24
|
|
184
|
+
},
|
|
185
|
+
inputContainer: {
|
|
186
|
+
flexDirection: 'row',
|
|
187
|
+
alignItems: 'center',
|
|
188
|
+
borderWidth: 1,
|
|
189
|
+
borderColor: '#ddd',
|
|
190
|
+
borderRadius: 8,
|
|
191
|
+
backgroundColor: '#f9f9f9',
|
|
192
|
+
marginBottom: 16
|
|
193
|
+
},
|
|
194
|
+
input: {
|
|
195
|
+
flex: 1,
|
|
196
|
+
paddingHorizontal: 16,
|
|
197
|
+
paddingVertical: 12,
|
|
198
|
+
fontSize: 16,
|
|
199
|
+
color: '#000'
|
|
200
|
+
},
|
|
201
|
+
visibilityToggle: {
|
|
202
|
+
padding: 12
|
|
203
|
+
},
|
|
204
|
+
errorContainer: {
|
|
205
|
+
marginBottom: 16
|
|
206
|
+
},
|
|
207
|
+
errorItem: {
|
|
208
|
+
flexDirection: 'row',
|
|
209
|
+
alignItems: 'center',
|
|
210
|
+
marginBottom: 4
|
|
211
|
+
},
|
|
212
|
+
errorText: {
|
|
213
|
+
color: '#f44336',
|
|
214
|
+
marginLeft: 6
|
|
215
|
+
},
|
|
216
|
+
requirementsContainer: {
|
|
217
|
+
backgroundColor: '#f5f5f5',
|
|
218
|
+
padding: 16,
|
|
219
|
+
borderRadius: 8,
|
|
220
|
+
marginBottom: 24
|
|
221
|
+
},
|
|
222
|
+
requirementsTitle: {
|
|
223
|
+
fontSize: 14,
|
|
224
|
+
fontWeight: '600',
|
|
225
|
+
marginBottom: 8,
|
|
226
|
+
color: '#000'
|
|
227
|
+
},
|
|
228
|
+
requirement: {
|
|
229
|
+
flexDirection: 'row',
|
|
230
|
+
alignItems: 'center',
|
|
231
|
+
marginBottom: 8
|
|
232
|
+
},
|
|
233
|
+
requirementText: {
|
|
234
|
+
marginLeft: 8,
|
|
235
|
+
fontSize: 14
|
|
236
|
+
},
|
|
237
|
+
buttonContainer: {
|
|
238
|
+
flexDirection: 'row',
|
|
239
|
+
justifyContent: 'space-between'
|
|
240
|
+
},
|
|
241
|
+
button: {
|
|
242
|
+
flexDirection: 'row',
|
|
243
|
+
alignItems: 'center',
|
|
244
|
+
paddingVertical: 12,
|
|
245
|
+
paddingHorizontal: 20,
|
|
246
|
+
borderRadius: 25
|
|
247
|
+
},
|
|
248
|
+
backButton: {
|
|
249
|
+
backgroundColor: 'transparent',
|
|
250
|
+
borderWidth: 1,
|
|
251
|
+
borderColor: COLORS.primary
|
|
252
|
+
},
|
|
253
|
+
nextButton: {
|
|
254
|
+
backgroundColor: COLORS.primary,
|
|
255
|
+
minWidth: 120,
|
|
256
|
+
justifyContent: 'center'
|
|
257
|
+
},
|
|
258
|
+
disabledButton: {
|
|
259
|
+
backgroundColor: '#ccc'
|
|
260
|
+
},
|
|
261
|
+
buttonText: {
|
|
262
|
+
fontSize: 16,
|
|
263
|
+
fontWeight: '600'
|
|
264
|
+
},
|
|
265
|
+
backButtonText: {
|
|
266
|
+
color: COLORS.primary,
|
|
267
|
+
marginLeft: 8
|
|
268
|
+
},
|
|
269
|
+
nextButtonText: {
|
|
270
|
+
color: '#fff',
|
|
271
|
+
marginRight: 8
|
|
272
|
+
}
|
|
273
|
+
});
|
|
274
|
+
//# sourceMappingURL=PinInput.js.map
|