@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.
Files changed (130) hide show
  1. package/README.md +334 -0
  2. package/lib/commonjs/components/DataRequestModal.js +176 -0
  3. package/lib/commonjs/components/DataRequestModal.js.map +1 -0
  4. package/lib/commonjs/components/Notification.js +106 -0
  5. package/lib/commonjs/components/Notification.js.map +1 -0
  6. package/lib/commonjs/components/OnairosButton.js +575 -0
  7. package/lib/commonjs/components/OnairosButton.js.map +1 -0
  8. package/lib/commonjs/components/Overlay.js +818 -0
  9. package/lib/commonjs/components/Overlay.js.map +1 -0
  10. package/lib/commonjs/components/UniversalOnboarding.js +173 -0
  11. package/lib/commonjs/components/UniversalOnboarding.js.map +1 -0
  12. package/lib/commonjs/components/onboarding/OAuthWebView.js +137 -0
  13. package/lib/commonjs/components/onboarding/OAuthWebView.js.map +1 -0
  14. package/lib/commonjs/components/onboarding/OnboardingHeader.js +74 -0
  15. package/lib/commonjs/components/onboarding/OnboardingHeader.js.map +1 -0
  16. package/lib/commonjs/components/onboarding/PinInput.js +283 -0
  17. package/lib/commonjs/components/onboarding/PinInput.js.map +1 -0
  18. package/lib/commonjs/components/onboarding/PlatformConnector.js +244 -0
  19. package/lib/commonjs/components/onboarding/PlatformConnector.js.map +1 -0
  20. package/lib/commonjs/components/screens/ConnectorScreen.js +145 -0
  21. package/lib/commonjs/components/screens/ConnectorScreen.js.map +1 -0
  22. package/lib/commonjs/components/screens/LoadingScreen.js +91 -0
  23. package/lib/commonjs/components/screens/LoadingScreen.js.map +1 -0
  24. package/lib/commonjs/components/screens/PinCreationScreen.js +61 -0
  25. package/lib/commonjs/components/screens/PinCreationScreen.js.map +1 -0
  26. package/lib/commonjs/constants/index.js +78 -0
  27. package/lib/commonjs/constants/index.js.map +1 -0
  28. package/lib/commonjs/hooks/useConnections.js +89 -0
  29. package/lib/commonjs/hooks/useConnections.js.map +1 -0
  30. package/lib/commonjs/hooks/useCredentials.js +85 -0
  31. package/lib/commonjs/hooks/useCredentials.js.map +1 -0
  32. package/lib/commonjs/index.js +282 -0
  33. package/lib/commonjs/index.js.map +1 -0
  34. package/lib/commonjs/services/oauthService.js +362 -0
  35. package/lib/commonjs/services/oauthService.js.map +1 -0
  36. package/lib/commonjs/types/declarations.d.js +2 -0
  37. package/lib/commonjs/types/declarations.d.js.map +1 -0
  38. package/lib/commonjs/types/index.js +2 -0
  39. package/lib/commonjs/types/index.js.map +1 -0
  40. package/lib/commonjs/utils/api.js +129 -0
  41. package/lib/commonjs/utils/api.js.map +1 -0
  42. package/lib/commonjs/utils/auth.js +111 -0
  43. package/lib/commonjs/utils/auth.js.map +1 -0
  44. package/lib/commonjs/utils/crypto.js +62 -0
  45. package/lib/commonjs/utils/crypto.js.map +1 -0
  46. package/lib/commonjs/utils/debugHelper.js +64 -0
  47. package/lib/commonjs/utils/debugHelper.js.map +1 -0
  48. package/lib/commonjs/utils/onairosApi.js +270 -0
  49. package/lib/commonjs/utils/onairosApi.js.map +1 -0
  50. package/lib/commonjs/utils/secureStorage.js +210 -0
  51. package/lib/commonjs/utils/secureStorage.js.map +1 -0
  52. package/lib/module/components/DataRequestModal.js +168 -0
  53. package/lib/module/components/DataRequestModal.js.map +1 -0
  54. package/lib/module/components/Notification.js +99 -0
  55. package/lib/module/components/Notification.js.map +1 -0
  56. package/lib/module/components/OnairosButton.js +550 -0
  57. package/lib/module/components/OnairosButton.js.map +1 -0
  58. package/lib/module/components/Overlay.js +825 -0
  59. package/lib/module/components/Overlay.js.map +1 -0
  60. package/lib/module/components/UniversalOnboarding.js +164 -0
  61. package/lib/module/components/UniversalOnboarding.js.map +1 -0
  62. package/lib/module/components/onboarding/OAuthWebView.js +128 -0
  63. package/lib/module/components/onboarding/OAuthWebView.js.map +1 -0
  64. package/lib/module/components/onboarding/OnboardingHeader.js +66 -0
  65. package/lib/module/components/onboarding/OnboardingHeader.js.map +1 -0
  66. package/lib/module/components/onboarding/PinInput.js +274 -0
  67. package/lib/module/components/onboarding/PinInput.js.map +1 -0
  68. package/lib/module/components/onboarding/PlatformConnector.js +235 -0
  69. package/lib/module/components/onboarding/PlatformConnector.js.map +1 -0
  70. package/lib/module/components/screens/ConnectorScreen.js +137 -0
  71. package/lib/module/components/screens/ConnectorScreen.js.map +1 -0
  72. package/lib/module/components/screens/LoadingScreen.js +83 -0
  73. package/lib/module/components/screens/LoadingScreen.js.map +1 -0
  74. package/lib/module/components/screens/PinCreationScreen.js +53 -0
  75. package/lib/module/components/screens/PinCreationScreen.js.map +1 -0
  76. package/lib/module/constants/index.js +72 -0
  77. package/lib/module/constants/index.js.map +1 -0
  78. package/lib/module/hooks/useConnections.js +81 -0
  79. package/lib/module/hooks/useConnections.js.map +1 -0
  80. package/lib/module/hooks/useCredentials.js +77 -0
  81. package/lib/module/hooks/useCredentials.js.map +1 -0
  82. package/lib/module/index.js +34 -0
  83. package/lib/module/index.js.map +1 -0
  84. package/lib/module/services/oauthService.js +352 -0
  85. package/lib/module/services/oauthService.js.map +1 -0
  86. package/lib/module/types/declarations.d.js +2 -0
  87. package/lib/module/types/declarations.d.js.map +1 -0
  88. package/lib/module/types/index.js +2 -0
  89. package/lib/module/types/index.js.map +1 -0
  90. package/lib/module/utils/api.js +117 -0
  91. package/lib/module/utils/api.js.map +1 -0
  92. package/lib/module/utils/auth.js +99 -0
  93. package/lib/module/utils/auth.js.map +1 -0
  94. package/lib/module/utils/crypto.js +54 -0
  95. package/lib/module/utils/crypto.js.map +1 -0
  96. package/lib/module/utils/debugHelper.js +54 -0
  97. package/lib/module/utils/debugHelper.js.map +1 -0
  98. package/lib/module/utils/onairosApi.js +256 -0
  99. package/lib/module/utils/onairosApi.js.map +1 -0
  100. package/lib/module/utils/secureStorage.js +196 -0
  101. package/lib/module/utils/secureStorage.js.map +1 -0
  102. package/package.json +115 -0
  103. package/src/components/DataRequestModal.tsx +187 -0
  104. package/src/components/Notification.js +101 -0
  105. package/src/components/OnairosButton.js +604 -0
  106. package/src/components/OnairosButton.tsx +182 -0
  107. package/src/components/Overlay.js +854 -0
  108. package/src/components/Overlay.tsx +272 -0
  109. package/src/components/UniversalOnboarding.tsx +184 -0
  110. package/src/components/onboarding/OAuthWebView.tsx +134 -0
  111. package/src/components/onboarding/OnboardingHeader.tsx +70 -0
  112. package/src/components/onboarding/PinInput.tsx +356 -0
  113. package/src/components/onboarding/PlatformConnector.tsx +297 -0
  114. package/src/components/screens/ConnectorScreen.tsx +152 -0
  115. package/src/components/screens/LoadingScreen.tsx +100 -0
  116. package/src/components/screens/PinCreationScreen.tsx +67 -0
  117. package/src/constants/index.ts +78 -0
  118. package/src/hooks/useConnections.ts +90 -0
  119. package/src/hooks/useCredentials.ts +83 -0
  120. package/src/index.js +14 -0
  121. package/src/index.ts +82 -0
  122. package/src/services/oauthService.ts +360 -0
  123. package/src/types/declarations.d.ts +26 -0
  124. package/src/types/index.ts +82 -0
  125. package/src/utils/api.js +112 -0
  126. package/src/utils/auth.js +104 -0
  127. package/src/utils/crypto.js +60 -0
  128. package/src/utils/debugHelper.ts +53 -0
  129. package/src/utils/onairosApi.ts +303 -0
  130. package/src/utils/secureStorage.ts +230 -0
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.verifyCredentials = exports.updateCredentials = exports.storeCredentials = exports.hasCredentials = exports.getCredentials = exports.generateDeviceUsername = exports.deleteCredentials = void 0;
7
+ var Keychain = _interopRequireWildcard(require("react-native-keychain"));
8
+ var _reactNative = require("react-native");
9
+ var _crypto = require("./crypto");
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ const CREDENTIALS_KEY = 'onairos_credentials';
12
+
13
+ /**
14
+ * Store credentials securely in the device keychain with optional biometric protection
15
+ */
16
+ const storeCredentials = async (credentials, options = {}) => {
17
+ try {
18
+ const {
19
+ useBiometrics = true,
20
+ biometricPrompt
21
+ } = options;
22
+
23
+ // Create a JSON string of the credentials
24
+ const credentialsString = JSON.stringify(credentials);
25
+
26
+ // Configure security options based on platform
27
+ const securityOptions = {
28
+ service: CREDENTIALS_KEY,
29
+ accessible: Keychain.ACCESSIBLE.WHEN_UNLOCKED_THIS_DEVICE_ONLY
30
+ };
31
+
32
+ // Add biometric protection if requested
33
+ if (useBiometrics) {
34
+ // iOS specific options
35
+ if (_reactNative.Platform.OS === 'ios') {
36
+ securityOptions.accessControl = Keychain.ACCESS_CONTROL.BIOMETRY_ANY_OR_DEVICE_PASSCODE;
37
+ }
38
+
39
+ // Android specific options
40
+ if (_reactNative.Platform.OS === 'android') {
41
+ securityOptions.accessControl = Keychain.ACCESS_CONTROL.BIOMETRY_ANY;
42
+ if (biometricPrompt) {
43
+ securityOptions.authenticationType = Keychain.AUTHENTICATION_TYPE.BIOMETRIC;
44
+ securityOptions.authenticationPrompt = {
45
+ title: biometricPrompt.title || 'Biometric Authentication',
46
+ subtitle: biometricPrompt.subtitle,
47
+ description: 'Please authenticate to access your Onairos credentials',
48
+ cancel: 'Cancel'
49
+ };
50
+ }
51
+ }
52
+ }
53
+
54
+ // Store in the secure keychain
55
+ await Keychain.setGenericPassword(credentials.username, credentialsString, securityOptions);
56
+ return true;
57
+ } catch (error) {
58
+ console.error('Error storing credentials:', error);
59
+ return false;
60
+ }
61
+ };
62
+
63
+ /**
64
+ * Retrieve credentials from secure storage, potentially requiring biometric authentication
65
+ */
66
+ exports.storeCredentials = storeCredentials;
67
+ const getCredentials = async (options = {}) => {
68
+ try {
69
+ const {
70
+ useBiometrics = true,
71
+ biometricPrompt
72
+ } = options;
73
+
74
+ // Configure security options
75
+ const securityOptions = {
76
+ service: CREDENTIALS_KEY
77
+ };
78
+
79
+ // Add biometric prompt if required
80
+ if (useBiometrics && biometricPrompt) {
81
+ securityOptions.authenticationPrompt = {
82
+ title: biometricPrompt.title || 'Biometric Authentication',
83
+ subtitle: biometricPrompt.subtitle,
84
+ description: 'Please authenticate to access your Onairos credentials',
85
+ cancel: 'Cancel'
86
+ };
87
+ }
88
+
89
+ // Retrieve from keychain
90
+ const result = await Keychain.getGenericPassword(securityOptions);
91
+ if (!result) {
92
+ return null;
93
+ }
94
+
95
+ // Parse the stored JSON
96
+ const credentials = JSON.parse(result.password);
97
+ return credentials;
98
+ } catch (error) {
99
+ console.error('Error retrieving credentials:', error);
100
+ return null;
101
+ }
102
+ };
103
+
104
+ /**
105
+ * Check if the user has stored credentials
106
+ */
107
+ exports.getCredentials = getCredentials;
108
+ const hasCredentials = async () => {
109
+ try {
110
+ const result = await Keychain.getGenericPassword({
111
+ service: CREDENTIALS_KEY
112
+ });
113
+ return !!result;
114
+ } catch (error) {
115
+ console.error('Error checking for credentials:', error);
116
+ return false;
117
+ }
118
+ };
119
+
120
+ /**
121
+ * Delete stored credentials
122
+ */
123
+ exports.hasCredentials = hasCredentials;
124
+ const deleteCredentials = async () => {
125
+ try {
126
+ await Keychain.resetGenericPassword({
127
+ service: CREDENTIALS_KEY
128
+ });
129
+ return true;
130
+ } catch (error) {
131
+ console.error('Error deleting credentials:', error);
132
+ return false;
133
+ }
134
+ };
135
+
136
+ /**
137
+ * Update specific fields in the stored credentials
138
+ */
139
+ exports.deleteCredentials = deleteCredentials;
140
+ const updateCredentials = async (updates, options = {}) => {
141
+ try {
142
+ // Get current credentials
143
+ const currentCredentials = await getCredentials(options);
144
+ if (!currentCredentials) {
145
+ return false;
146
+ }
147
+
148
+ // Merge updates with current credentials
149
+ const updatedCredentials = {
150
+ ...currentCredentials,
151
+ ...updates
152
+ };
153
+
154
+ // Store updated credentials
155
+ return await storeCredentials(updatedCredentials, options);
156
+ } catch (error) {
157
+ console.error('Error updating credentials:', error);
158
+ return false;
159
+ }
160
+ };
161
+
162
+ /**
163
+ * Generate a device-specific unique username
164
+ */
165
+ exports.updateCredentials = updateCredentials;
166
+ const generateDeviceUsername = async () => {
167
+ try {
168
+ // Get a device-specific identifier that we can use
169
+ // This is a simplified example - in production you might want to use
170
+ // a more robust device identifier method
171
+ const deviceInfo = `${_reactNative.Platform.OS}-${_reactNative.Platform.Version}-${Date.now()}`;
172
+
173
+ // Hash it to create a unique identifier
174
+ const username = `onairos_${(0, _crypto.sha256)(deviceInfo).substring(0, 10)}`;
175
+ return username;
176
+ } catch (error) {
177
+ console.error('Error generating device username:', error);
178
+ // Fallback to a timestamp-based username if there's an error
179
+ return `onairos_${Date.now().toString(36)}`;
180
+ }
181
+ };
182
+
183
+ /**
184
+ * Verify if credentials are valid (not expired, etc.)
185
+ */
186
+ exports.generateDeviceUsername = generateDeviceUsername;
187
+ const verifyCredentials = async credentials => {
188
+ try {
189
+ // Basic verification - check if credentials exist and aren't too old
190
+ if (!credentials || !credentials.accessToken || !credentials.username) {
191
+ return false;
192
+ }
193
+
194
+ // Check for expiration (example: credentials expire after 30 days)
195
+ const thirtyDaysMs = 30 * 24 * 60 * 60 * 1000;
196
+ const isExpired = Date.now() - credentials.createdAt > thirtyDaysMs;
197
+ if (isExpired) {
198
+ return false;
199
+ }
200
+
201
+ // Add any additional verification logic here
202
+
203
+ return true;
204
+ } catch (error) {
205
+ console.error('Error verifying credentials:', error);
206
+ return false;
207
+ }
208
+ };
209
+ exports.verifyCredentials = verifyCredentials;
210
+ //# sourceMappingURL=secureStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Keychain","_interopRequireWildcard","require","_reactNative","_crypto","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CREDENTIALS_KEY","storeCredentials","credentials","options","useBiometrics","biometricPrompt","credentialsString","JSON","stringify","securityOptions","service","accessible","ACCESSIBLE","WHEN_UNLOCKED_THIS_DEVICE_ONLY","Platform","OS","accessControl","ACCESS_CONTROL","BIOMETRY_ANY_OR_DEVICE_PASSCODE","BIOMETRY_ANY","authenticationType","AUTHENTICATION_TYPE","BIOMETRIC","authenticationPrompt","title","subtitle","description","cancel","setGenericPassword","username","error","console","exports","getCredentials","result","getGenericPassword","parse","password","hasCredentials","deleteCredentials","resetGenericPassword","updateCredentials","updates","currentCredentials","updatedCredentials","generateDeviceUsername","deviceInfo","Version","Date","now","sha256","substring","toString","verifyCredentials","accessToken","thirtyDaysMs","isExpired","createdAt"],"sourceRoot":"..\\..\\..\\src","sources":["utils/secureStorage.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,168 @@
1
+ import React from 'react';
2
+ import { View, Text, StyleSheet, TouchableOpacity, ScrollView, Modal } from 'react-native';
3
+ import Icon from 'react-native-vector-icons/MaterialIcons';
4
+ import { COLORS, PLATFORMS } from '../constants';
5
+ export const DataRequestModal = ({
6
+ visible,
7
+ onClose,
8
+ onAccept,
9
+ requestData,
10
+ AppName
11
+ }) => {
12
+ const renderPermissions = () => {
13
+ return Object.entries(requestData).map(([platform, permissions]) => {
14
+ const platformConfig = PLATFORMS[platform];
15
+ if (!platformConfig) return null;
16
+ return /*#__PURE__*/React.createElement(View, {
17
+ key: platform,
18
+ style: styles.platformContainer
19
+ }, /*#__PURE__*/React.createElement(View, {
20
+ style: styles.platformHeader
21
+ }, /*#__PURE__*/React.createElement(Icon, {
22
+ name: platformConfig.icon,
23
+ size: 24,
24
+ color: platformConfig.color
25
+ }), /*#__PURE__*/React.createElement(Text, {
26
+ style: styles.platformName
27
+ }, platformConfig.name)), /*#__PURE__*/React.createElement(View, {
28
+ style: styles.permissionsContainer
29
+ }, Object.entries(permissions).map(([key, value]) => /*#__PURE__*/React.createElement(Text, {
30
+ key: key,
31
+ style: styles.permissionText
32
+ }, "\u2022 ", key, ": ", value))));
33
+ });
34
+ };
35
+ return /*#__PURE__*/React.createElement(Modal, {
36
+ visible: visible,
37
+ transparent: true,
38
+ animationType: "slide",
39
+ onRequestClose: onClose
40
+ }, /*#__PURE__*/React.createElement(View, {
41
+ style: styles.modalOverlay
42
+ }, /*#__PURE__*/React.createElement(View, {
43
+ style: styles.modalContent
44
+ }, /*#__PURE__*/React.createElement(View, {
45
+ style: styles.header
46
+ }, /*#__PURE__*/React.createElement(Icon, {
47
+ name: "auto_awesome",
48
+ size: 24,
49
+ color: COLORS.primary
50
+ }), /*#__PURE__*/React.createElement(Text, {
51
+ style: styles.headerTitle
52
+ }, AppName, " Data Request"), /*#__PURE__*/React.createElement(TouchableOpacity, {
53
+ onPress: onClose,
54
+ style: styles.closeButton
55
+ }, /*#__PURE__*/React.createElement(Icon, {
56
+ name: "close",
57
+ size: 24,
58
+ color: "#000"
59
+ }))), /*#__PURE__*/React.createElement(ScrollView, {
60
+ style: styles.scrollContent
61
+ }, /*#__PURE__*/React.createElement(Text, {
62
+ style: styles.description
63
+ }, AppName, " is requesting access to the following data:"), renderPermissions()), /*#__PURE__*/React.createElement(View, {
64
+ style: styles.footer
65
+ }, /*#__PURE__*/React.createElement(TouchableOpacity, {
66
+ style: [styles.button, styles.cancelButton],
67
+ onPress: onClose
68
+ }, /*#__PURE__*/React.createElement(Text, {
69
+ style: styles.cancelButtonText
70
+ }, "Cancel")), /*#__PURE__*/React.createElement(TouchableOpacity, {
71
+ style: [styles.button, styles.acceptButton],
72
+ onPress: onAccept
73
+ }, /*#__PURE__*/React.createElement(Text, {
74
+ style: styles.acceptButtonText
75
+ }, "Accept"))))));
76
+ };
77
+ const styles = StyleSheet.create({
78
+ modalOverlay: {
79
+ flex: 1,
80
+ backgroundColor: 'rgba(0, 0, 0, 0.5)',
81
+ justifyContent: 'center',
82
+ alignItems: 'center'
83
+ },
84
+ modalContent: {
85
+ backgroundColor: '#fff',
86
+ borderRadius: 16,
87
+ width: '90%',
88
+ maxHeight: '80%',
89
+ overflow: 'hidden'
90
+ },
91
+ header: {
92
+ flexDirection: 'row',
93
+ alignItems: 'center',
94
+ padding: 16,
95
+ backgroundColor: COLORS.headerBg
96
+ },
97
+ headerTitle: {
98
+ flex: 1,
99
+ fontSize: 18,
100
+ fontWeight: '600',
101
+ marginLeft: 12,
102
+ color: '#000'
103
+ },
104
+ closeButton: {
105
+ padding: 8
106
+ },
107
+ scrollContent: {
108
+ padding: 16
109
+ },
110
+ description: {
111
+ fontSize: 16,
112
+ color: COLORS.text.secondary,
113
+ marginBottom: 16
114
+ },
115
+ platformContainer: {
116
+ marginBottom: 16,
117
+ borderWidth: 1,
118
+ borderColor: COLORS.border,
119
+ borderRadius: 8,
120
+ padding: 12
121
+ },
122
+ platformHeader: {
123
+ flexDirection: 'row',
124
+ alignItems: 'center',
125
+ marginBottom: 8
126
+ },
127
+ platformName: {
128
+ fontSize: 16,
129
+ fontWeight: '600',
130
+ marginLeft: 8
131
+ },
132
+ permissionsContainer: {
133
+ marginLeft: 32
134
+ },
135
+ permissionText: {
136
+ fontSize: 14,
137
+ color: COLORS.text.secondary,
138
+ marginBottom: 4
139
+ },
140
+ footer: {
141
+ flexDirection: 'row',
142
+ padding: 16,
143
+ borderTopWidth: 1,
144
+ borderTopColor: COLORS.border,
145
+ justifyContent: 'flex-end'
146
+ },
147
+ button: {
148
+ paddingHorizontal: 20,
149
+ paddingVertical: 10,
150
+ borderRadius: 8,
151
+ marginLeft: 12
152
+ },
153
+ cancelButton: {
154
+ backgroundColor: COLORS.border
155
+ },
156
+ acceptButton: {
157
+ backgroundColor: COLORS.primary
158
+ },
159
+ cancelButtonText: {
160
+ color: COLORS.text.secondary,
161
+ fontWeight: '600'
162
+ },
163
+ acceptButtonText: {
164
+ color: '#fff',
165
+ fontWeight: '600'
166
+ }
167
+ });
168
+ //# sourceMappingURL=DataRequestModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","Text","StyleSheet","TouchableOpacity","ScrollView","Modal","Icon","COLORS","PLATFORMS","DataRequestModal","visible","onClose","onAccept","requestData","AppName","renderPermissions","Object","entries","map","platform","permissions","platformConfig","createElement","key","style","styles","platformContainer","platformHeader","name","icon","size","color","platformName","permissionsContainer","value","permissionText","transparent","animationType","onRequestClose","modalOverlay","modalContent","header","primary","headerTitle","onPress","closeButton","scrollContent","description","footer","button","cancelButton","cancelButtonText","acceptButton","acceptButtonText","create","flex","backgroundColor","justifyContent","alignItems","borderRadius","width","maxHeight","overflow","flexDirection","padding","headerBg","fontSize","fontWeight","marginLeft","text","secondary","marginBottom","borderWidth","borderColor","border","borderTopWidth","borderTopColor","paddingHorizontal","paddingVertical"],"sourceRoot":"..\\..\\..\\src","sources":["components/DataRequestModal.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,99 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { View, Text, StyleSheet, Animated } from 'react-native';
3
+ const Notification = ({
4
+ message,
5
+ color = 'blue',
6
+ duration = 3000,
7
+ onClose
8
+ }) => {
9
+ const [fadeAnim] = useState(new Animated.Value(0));
10
+ useEffect(() => {
11
+ // Fade in
12
+ Animated.timing(fadeAnim, {
13
+ toValue: 1,
14
+ duration: 300,
15
+ useNativeDriver: true
16
+ }).start();
17
+
18
+ // Set timeout to fade out
19
+ const timer = setTimeout(() => {
20
+ Animated.timing(fadeAnim, {
21
+ toValue: 0,
22
+ duration: 300,
23
+ useNativeDriver: true
24
+ }).start(() => {
25
+ if (onClose) onClose();
26
+ });
27
+ }, duration);
28
+ return () => clearTimeout(timer);
29
+ }, []);
30
+
31
+ // Determine background color based on the color prop
32
+ const getBackgroundColor = () => {
33
+ switch (color) {
34
+ case 'red':
35
+ return '#FFEBEE';
36
+ case 'green':
37
+ return '#E8F5E9';
38
+ case 'yellow':
39
+ return '#FFF8E1';
40
+ default:
41
+ return '#E3F2FD';
42
+ }
43
+ };
44
+
45
+ // Determine text color based on the color prop
46
+ const getTextColor = () => {
47
+ switch (color) {
48
+ case 'red':
49
+ return '#D32F2F';
50
+ case 'green':
51
+ return '#388E3C';
52
+ case 'yellow':
53
+ return '#F57F17';
54
+ default:
55
+ return '#1976D2';
56
+ }
57
+ };
58
+ return /*#__PURE__*/React.createElement(Animated.View, {
59
+ style: [styles.container, {
60
+ backgroundColor: getBackgroundColor(),
61
+ opacity: fadeAnim,
62
+ transform: [{
63
+ translateY: fadeAnim.interpolate({
64
+ inputRange: [0, 1],
65
+ outputRange: [-20, 0]
66
+ })
67
+ }]
68
+ }]
69
+ }, /*#__PURE__*/React.createElement(Text, {
70
+ style: [styles.message, {
71
+ color: getTextColor()
72
+ }]
73
+ }, message));
74
+ };
75
+ const styles = StyleSheet.create({
76
+ container: {
77
+ position: 'absolute',
78
+ top: 40,
79
+ left: 20,
80
+ right: 20,
81
+ padding: 16,
82
+ borderRadius: 8,
83
+ shadowColor: '#000',
84
+ shadowOffset: {
85
+ width: 0,
86
+ height: 2
87
+ },
88
+ shadowOpacity: 0.1,
89
+ shadowRadius: 4,
90
+ elevation: 3,
91
+ zIndex: 1000
92
+ },
93
+ message: {
94
+ fontSize: 16,
95
+ fontWeight: '500'
96
+ }
97
+ });
98
+ export default Notification;
99
+ //# sourceMappingURL=Notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useState","View","Text","StyleSheet","Animated","Notification","message","color","duration","onClose","fadeAnim","Value","timing","toValue","useNativeDriver","start","timer","setTimeout","clearTimeout","getBackgroundColor","getTextColor","createElement","style","styles","container","backgroundColor","opacity","transform","translateY","interpolate","inputRange","outputRange","create","position","top","left","right","padding","borderRadius","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","zIndex","fontSize","fontWeight"],"sourceRoot":"..\\..\\..\\src","sources":["components/Notification.js"],"mappings":"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","ignoreList":[]}