@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
package/README.md ADDED
@@ -0,0 +1,334 @@
1
+ # Onairos React Native SDK
2
+
3
+ A React Native SDK for integrating Onairos authentication and AI model training into your mobile applications. This package provides a complete solution for social media platform connection, secure authentication, and AI model training.
4
+
5
+ ## Features
6
+
7
+ - Universal onboarding flow with multi-platform support
8
+ - Multi-platform OAuth authentication (Instagram, Pinterest, Reddit, YouTube)
9
+ - Secure credential management with biometric authentication
10
+ - PIN-based security with validation
11
+ - Deep linking support for OAuth callbacks
12
+ - AI model training progress tracking
13
+ - Customizable UI components
14
+ - TypeScript support
15
+
16
+ ## Installation
17
+
18
+ ```bash
19
+ npm install onairos-react-native
20
+ # or
21
+ yarn add onairos-react-native
22
+ ```
23
+
24
+ ### Required Dependencies
25
+
26
+ The package requires the following dependencies:
27
+
28
+ ```bash
29
+ # Core dependencies
30
+ yarn add @gorhom/bottom-sheet react-native-reanimated react-native-gesture-handler react-native-safe-area-context
31
+
32
+ # Authentication dependencies
33
+ yarn add react-native-webview react-native-keychain
34
+
35
+ # UI dependencies
36
+ yarn add react-native-vector-icons
37
+
38
+ # Network and encryption
39
+ yarn add @react-native-community/netinfo react-native-rsa-native react-native-crypto-js
40
+ ```
41
+
42
+ ### iOS Setup
43
+
44
+ 1. Install pods:
45
+ ```bash
46
+ cd ios && pod install
47
+ ```
48
+
49
+ 2. Add the following to your `Info.plist`:
50
+ ```xml
51
+ <key>CFBundleURLTypes</key>
52
+ <array>
53
+ <dict>
54
+ <key>CFBundleURLSchemes</key>
55
+ <array>
56
+ <string>onairosreact</string>
57
+ </array>
58
+ </dict>
59
+ </array>
60
+
61
+ <!-- Add for biometric authentication -->
62
+ <key>NSFaceIDUsageDescription</key>
63
+ <string>We use Face ID to securely access your Onairos account</string>
64
+ ```
65
+
66
+ 3. Configure your OAuth providers in the project settings and register the callback URLs.
67
+
68
+ ### Android Setup
69
+
70
+ 1. Add the following to your `android/app/src/main/AndroidManifest.xml`:
71
+ ```xml
72
+ <activity>
73
+ <!-- ... -->
74
+ <intent-filter>
75
+ <action android:name="android.intent.action.VIEW" />
76
+ <category android:name="android.intent.category.DEFAULT" />
77
+ <category android:name="android.intent.category.BROWSABLE" />
78
+ <data android:scheme="onairosreact" />
79
+ </intent-filter>
80
+ </activity>
81
+ ```
82
+
83
+ 2. Add biometric permissions:
84
+ ```xml
85
+ <uses-permission android:name="android.permission.USE_BIOMETRIC" />
86
+ ```
87
+
88
+ ## Usage
89
+
90
+ ### Basic Button Integration
91
+
92
+ 1. Import the OnairosButton component:
93
+ ```javascript
94
+ import { OnairosButton } from 'onairos-react-native';
95
+ ```
96
+
97
+ 2. Use the component in your app:
98
+ ```javascript
99
+ export default function App() {
100
+ const handleResolved = (apiUrl, accessToken, loginDetails) => {
101
+ console.log('Authentication successful:', { apiUrl, accessToken, loginDetails });
102
+ // Store the tokens and proceed with your app logic
103
+ };
104
+
105
+ return (
106
+ <View style={styles.container}>
107
+ <OnairosButton
108
+ AppName="YourApp"
109
+ requestData={{
110
+ "Social Media": {
111
+ "Profile Information": "Access to your basic profile data",
112
+ "Post History": "Access to your post history for analysis"
113
+ },
114
+ "Content": {
115
+ "Images": "Access to image data for AI training",
116
+ "Text": "Access to text data for AI training"
117
+ }
118
+ }}
119
+ returnLink="your-app://auth-callback"
120
+ onResolved={handleResolved}
121
+ buttonType="pill"
122
+ color="#00BFA5"
123
+ />
124
+ </View>
125
+ );
126
+ }
127
+ ```
128
+
129
+ ### Initialize OAuth Service
130
+
131
+ Add this to your app's entry point to handle deep linking for OAuth:
132
+
133
+ ```javascript
134
+ import { initializeOAuthService } from 'onairos-react-native';
135
+
136
+ // In your app's entry point
137
+ useEffect(() => {
138
+ // Set up OAuth deep linking
139
+ initializeOAuthService();
140
+
141
+ // Clean up when component unmounts
142
+ return () => {
143
+ cleanupOAuthService();
144
+ };
145
+ }, []);
146
+ ```
147
+
148
+ ### Working with Secure Storage
149
+
150
+ ```javascript
151
+ import { storeCredentials, getCredentials, hasCredentials } from 'onairos-react-native';
152
+
153
+ // Check if user has stored credentials
154
+ const checkAuth = async () => {
155
+ const hasExisting = await hasCredentials();
156
+
157
+ if (hasExisting) {
158
+ // Get credentials with biometric authentication
159
+ const credentials = await getCredentials({
160
+ useBiometrics: true,
161
+ biometricPrompt: {
162
+ title: 'Authenticate to continue',
163
+ subtitle: 'Please verify your identity'
164
+ }
165
+ });
166
+
167
+ if (credentials) {
168
+ // User is authenticated
169
+ console.log('User authenticated:', credentials.username);
170
+ }
171
+ } else {
172
+ // Redirect to onboarding flow
173
+ setShowOnboarding(true);
174
+ }
175
+ };
176
+ ```
177
+
178
+ ## API Reference
179
+
180
+ ### Main Components
181
+
182
+ #### `OnairosButton`
183
+
184
+ The main entry point for Onairos authentication.
185
+
186
+ | Prop | Type | Required | Description |
187
+ |------|------|----------|-------------|
188
+ | AppName | string | Yes | Your application name |
189
+ | requestData | object | Yes | Platform-specific OAuth scopes and data requests |
190
+ | returnLink | string | Yes | Deep link URL for OAuth callback |
191
+ | embedd | boolean | No | Whether to use embedded flow (default: false) |
192
+ | color | string | No | Button color (default: #00BFA5) |
193
+ | icon | string | No | Button icon name (default: 'auto_awesome') |
194
+ | onResolved | function | Yes | Callback for successful auth with (apiUrl, accessToken, loginDetails) |
195
+ | login | boolean | No | Enable login mode (default: false) |
196
+ | buttonType | 'circle' \| 'pill' | No | Button style (default: 'circle') |
197
+ | debug | boolean | No | Enable debug mode (default: false) |
198
+ | test | boolean | No | Enable test mode (default: false) |
199
+
200
+ #### `UniversalOnboarding`
201
+
202
+ The universal onboarding flow component.
203
+
204
+ | Prop | Type | Required | Description |
205
+ |------|------|----------|-------------|
206
+ | visible | boolean | Yes | Whether the onboarding is visible |
207
+ | onClose | function | Yes | Callback when onboarding is closed |
208
+ | AppName | string | Yes | Your application name |
209
+ | requestData | object | Yes | Platform-specific OAuth scopes |
210
+ | returnLink | string | Yes | Deep link URL for OAuth callback |
211
+ | onComplete | function | Yes | Callback when onboarding is complete |
212
+ | embedd | boolean | No | Whether to use embedded flow |
213
+ | debug | boolean | No | Enable debug mode |
214
+ | test | boolean | No | Enable test mode |
215
+
216
+ #### `Overlay`
217
+
218
+ Data request overlay component.
219
+
220
+ | Prop | Type | Required | Description |
221
+ |------|------|----------|-------------|
222
+ | visible | boolean | Yes | Whether the overlay is visible |
223
+ | onClose | function | Yes | Callback when overlay is closed |
224
+ | onAccept | function | Yes | Callback when request is accepted |
225
+ | AppName | string | Yes | Your application name |
226
+ | requestData | object | Yes | Data being requested |
227
+ | biometricType | 'FaceID' \| 'TouchID' \| 'BiometricID' | No | Type of biometric auth to use |
228
+
229
+ ### Utility Functions
230
+
231
+ #### Secure Storage
232
+
233
+ - `storeCredentials(credentials, options)`: Store credentials securely
234
+ - `getCredentials(options)`: Retrieve credentials with optional biometric auth
235
+ - `hasCredentials()`: Check if user has stored credentials
236
+ - `deleteCredentials()`: Delete stored credentials
237
+ - `updateCredentials(updates, options)`: Update specific fields in credentials
238
+ - `generateDeviceUsername()`: Generate a device-specific unique username
239
+ - `verifyCredentials(credentials)`: Verify if credentials are valid
240
+
241
+ #### OAuth Service
242
+
243
+ - `connectPlatform(platform)`: Initiate OAuth flow for a specific platform
244
+ - `disconnectPlatform(platform, credentials)`: Disconnect a platform
245
+ - `initializeOAuthService()`: Initialize OAuth service handlers
246
+ - `cleanupOAuthService()`: Clean up OAuth service handlers
247
+ - `storePlatformConnection(platform, connectionData, credentials)`: Store platform connection
248
+
249
+ #### API Communication
250
+
251
+ - `validateCredentials(username, options)`: Validate user credentials with the API
252
+ - `createAccount(credentials, options)`: Create a new user account
253
+ - `authenticate(credentials, options)`: Authenticate with the API using credentials
254
+ - `refreshToken(refreshToken, options)`: Refresh authentication token
255
+ - `getPlatformData(accessToken, platform, options)`: Get user's connected platform data
256
+ - `getUserProfile(accessToken, options)`: Get user profile information
257
+ - `updatePlatformConnections(accessToken, platforms, options)`: Update user platform connections
258
+
259
+ ## Development and Testing
260
+
261
+ ### Setup Development Environment
262
+
263
+ 1. Clone the repository:
264
+ ```bash
265
+ git clone https://github.com/onairos/onairos-react-native.git
266
+ cd onairos-react-native
267
+ ```
268
+
269
+ 2. Install dependencies:
270
+ ```bash
271
+ yarn install
272
+ ```
273
+
274
+ 3. Run the typecheck:
275
+ ```bash
276
+ yarn typecheck
277
+ ```
278
+
279
+ ### Building the Package
280
+
281
+ ```bash
282
+ yarn build
283
+ ```
284
+
285
+ ### Testing with a Local App
286
+
287
+ 1. Link the package locally:
288
+ ```bash
289
+ # In your package directory
290
+ yarn link
291
+
292
+ # In your app directory
293
+ yarn link onairos-react-native
294
+ ```
295
+
296
+ 2. Run your app and test the integration.
297
+
298
+ ## Troubleshooting
299
+
300
+ ### OAuth Callback Issues
301
+
302
+ - Ensure your deep link schemes are properly configured in both iOS and Android
303
+ - Check that the callback URLs match what's registered with your OAuth providers
304
+ - Ensure all required permissions are enabled in your app configurations
305
+
306
+ ### Biometric Authentication Issues
307
+
308
+ - Ensure proper permissions are set in Info.plist and AndroidManifest.xml
309
+ - Test on physical devices as simulators may not support all biometric features
310
+ - For iOS, ensure that Face ID/Touch ID is enabled and set up on the device
311
+
312
+ ### Platform Specific Issues
313
+
314
+ #### iOS
315
+
316
+ - For keychain issues, check that the Keychain Sharing capability is enabled
317
+ - Ensure the bundle identifier is consistent with your OAuth configuration
318
+
319
+ #### Android
320
+
321
+ - For deep linking issues, check the androidManifest.xml configuration
322
+ - Ensure that biometric hardware is available on test devices
323
+
324
+ ## Contributing
325
+
326
+ 1. Fork the repository
327
+ 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
328
+ 3. Commit your changes (`git commit -m 'Add some amazing feature'`)
329
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
330
+ 5. Open a Pull Request
331
+
332
+ ## License
333
+
334
+ MIT
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DataRequestModal = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _MaterialIcons = _interopRequireDefault(require("react-native-vector-icons/MaterialIcons"));
10
+ var _constants = require("../constants");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ const DataRequestModal = ({
13
+ visible,
14
+ onClose,
15
+ onAccept,
16
+ requestData,
17
+ AppName
18
+ }) => {
19
+ const renderPermissions = () => {
20
+ return Object.entries(requestData).map(([platform, permissions]) => {
21
+ const platformConfig = _constants.PLATFORMS[platform];
22
+ if (!platformConfig) return null;
23
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
24
+ key: platform,
25
+ style: styles.platformContainer
26
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
27
+ style: styles.platformHeader
28
+ }, /*#__PURE__*/_react.default.createElement(_MaterialIcons.default, {
29
+ name: platformConfig.icon,
30
+ size: 24,
31
+ color: platformConfig.color
32
+ }), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
33
+ style: styles.platformName
34
+ }, platformConfig.name)), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
35
+ style: styles.permissionsContainer
36
+ }, Object.entries(permissions).map(([key, value]) => /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
37
+ key: key,
38
+ style: styles.permissionText
39
+ }, "\u2022 ", key, ": ", value))));
40
+ });
41
+ };
42
+ return /*#__PURE__*/_react.default.createElement(_reactNative.Modal, {
43
+ visible: visible,
44
+ transparent: true,
45
+ animationType: "slide",
46
+ onRequestClose: onClose
47
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
48
+ style: styles.modalOverlay
49
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
50
+ style: styles.modalContent
51
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
52
+ style: styles.header
53
+ }, /*#__PURE__*/_react.default.createElement(_MaterialIcons.default, {
54
+ name: "auto_awesome",
55
+ size: 24,
56
+ color: _constants.COLORS.primary
57
+ }), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
58
+ style: styles.headerTitle
59
+ }, AppName, " Data Request"), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
60
+ onPress: onClose,
61
+ style: styles.closeButton
62
+ }, /*#__PURE__*/_react.default.createElement(_MaterialIcons.default, {
63
+ name: "close",
64
+ size: 24,
65
+ color: "#000"
66
+ }))), /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
67
+ style: styles.scrollContent
68
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
69
+ style: styles.description
70
+ }, AppName, " is requesting access to the following data:"), renderPermissions()), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
71
+ style: styles.footer
72
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
73
+ style: [styles.button, styles.cancelButton],
74
+ onPress: onClose
75
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
76
+ style: styles.cancelButtonText
77
+ }, "Cancel")), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
78
+ style: [styles.button, styles.acceptButton],
79
+ onPress: onAccept
80
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
81
+ style: styles.acceptButtonText
82
+ }, "Accept"))))));
83
+ };
84
+ exports.DataRequestModal = DataRequestModal;
85
+ const styles = _reactNative.StyleSheet.create({
86
+ modalOverlay: {
87
+ flex: 1,
88
+ backgroundColor: 'rgba(0, 0, 0, 0.5)',
89
+ justifyContent: 'center',
90
+ alignItems: 'center'
91
+ },
92
+ modalContent: {
93
+ backgroundColor: '#fff',
94
+ borderRadius: 16,
95
+ width: '90%',
96
+ maxHeight: '80%',
97
+ overflow: 'hidden'
98
+ },
99
+ header: {
100
+ flexDirection: 'row',
101
+ alignItems: 'center',
102
+ padding: 16,
103
+ backgroundColor: _constants.COLORS.headerBg
104
+ },
105
+ headerTitle: {
106
+ flex: 1,
107
+ fontSize: 18,
108
+ fontWeight: '600',
109
+ marginLeft: 12,
110
+ color: '#000'
111
+ },
112
+ closeButton: {
113
+ padding: 8
114
+ },
115
+ scrollContent: {
116
+ padding: 16
117
+ },
118
+ description: {
119
+ fontSize: 16,
120
+ color: _constants.COLORS.text.secondary,
121
+ marginBottom: 16
122
+ },
123
+ platformContainer: {
124
+ marginBottom: 16,
125
+ borderWidth: 1,
126
+ borderColor: _constants.COLORS.border,
127
+ borderRadius: 8,
128
+ padding: 12
129
+ },
130
+ platformHeader: {
131
+ flexDirection: 'row',
132
+ alignItems: 'center',
133
+ marginBottom: 8
134
+ },
135
+ platformName: {
136
+ fontSize: 16,
137
+ fontWeight: '600',
138
+ marginLeft: 8
139
+ },
140
+ permissionsContainer: {
141
+ marginLeft: 32
142
+ },
143
+ permissionText: {
144
+ fontSize: 14,
145
+ color: _constants.COLORS.text.secondary,
146
+ marginBottom: 4
147
+ },
148
+ footer: {
149
+ flexDirection: 'row',
150
+ padding: 16,
151
+ borderTopWidth: 1,
152
+ borderTopColor: _constants.COLORS.border,
153
+ justifyContent: 'flex-end'
154
+ },
155
+ button: {
156
+ paddingHorizontal: 20,
157
+ paddingVertical: 10,
158
+ borderRadius: 8,
159
+ marginLeft: 12
160
+ },
161
+ cancelButton: {
162
+ backgroundColor: _constants.COLORS.border
163
+ },
164
+ acceptButton: {
165
+ backgroundColor: _constants.COLORS.primary
166
+ },
167
+ cancelButtonText: {
168
+ color: _constants.COLORS.text.secondary,
169
+ fontWeight: '600'
170
+ },
171
+ acceptButtonText: {
172
+ color: '#fff',
173
+ fontWeight: '600'
174
+ }
175
+ });
176
+ //# sourceMappingURL=DataRequestModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_MaterialIcons","_constants","e","__esModule","default","DataRequestModal","visible","onClose","onAccept","requestData","AppName","renderPermissions","Object","entries","map","platform","permissions","platformConfig","PLATFORMS","createElement","View","key","style","styles","platformContainer","platformHeader","name","icon","size","color","Text","platformName","permissionsContainer","value","permissionText","Modal","transparent","animationType","onRequestClose","modalOverlay","modalContent","header","COLORS","primary","headerTitle","TouchableOpacity","onPress","closeButton","ScrollView","scrollContent","description","footer","button","cancelButton","cancelButtonText","acceptButton","acceptButtonText","exports","StyleSheet","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":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAQA,IAAAE,cAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAAiD,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAU1C,MAAMG,gBAAiD,GAAGA,CAAC;EAChEC,OAAO;EACPC,OAAO;EACPC,QAAQ;EACRC,WAAW;EACXC;AACF,CAAC,KAAK;EACJ,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;IAC9B,OAAOC,MAAM,CAACC,OAAO,CAACJ,WAAW,CAAC,CAACK,GAAG,CAAC,CAAC,CAACC,QAAQ,EAAEC,WAAW,CAAC,KAAK;MAClE,MAAMC,cAAc,GAAGC,oBAAS,CAACH,QAAQ,CAAC;MAC1C,IAAI,CAACE,cAAc,EAAE,OAAO,IAAI;MAEhC,oBACErB,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAAqB,IAAI;QAACC,GAAG,EAAEN,QAAS;QAACO,KAAK,EAAEC,MAAM,CAACC;MAAkB,gBACnD5B,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAAqB,IAAI;QAACE,KAAK,EAAEC,MAAM,CAACE;MAAe,gBACjC7B,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACnB,cAAA,CAAAI,OAAI;QAACsB,IAAI,EAAET,cAAc,CAACU,IAAK;QAACC,IAAI,EAAE,EAAG;QAACC,KAAK,EAAEZ,cAAc,CAACY;MAAM,CAAE,CAAC,eAC1EjC,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAA+B,IAAI;QAACR,KAAK,EAAEC,MAAM,CAACQ;MAAa,GAAEd,cAAc,CAACS,IAAW,CACzD,CAAC,eACP9B,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAAqB,IAAI;QAACE,KAAK,EAAEC,MAAM,CAACS;MAAqB,GACtCpB,MAAM,CAACC,OAAO,CAACG,WAAW,CAAC,CAACF,GAAG,CAAC,CAAC,CAACO,GAAG,EAAEY,KAAK,CAAC,kBAC5CrC,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAA+B,IAAI;QAACT,GAAG,EAAEA,GAAI;QAACC,KAAK,EAAEC,MAAM,CAACW;MAAe,GAAC,SAC1C,EAACb,GAAG,EAAC,IAAE,EAACY,KACN,CACP,CACG,CACF,CAAC;IAEX,CAAC,CAAC;EACJ,CAAC;EAED,oBACErC,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAAoC,KAAK;IACJ7B,OAAO,EAAEA,OAAQ;IACjB8B,WAAW;IACXC,aAAa,EAAC,OAAO;IACrBC,cAAc,EAAE/B;EAAQ,gBAExBX,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAAqB,IAAI;IAACE,KAAK,EAAEC,MAAM,CAACgB;EAAa,gBAC/B3C,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAAqB,IAAI;IAACE,KAAK,EAAEC,MAAM,CAACiB;EAAa,gBAC/B5C,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAAqB,IAAI;IAACE,KAAK,EAAEC,MAAM,CAACkB;EAAO,gBACzB7C,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACnB,cAAA,CAAAI,OAAI;IAACsB,IAAI,EAAC,cAAc;IAACE,IAAI,EAAE,EAAG;IAACC,KAAK,EAAEa,iBAAM,CAACC;EAAQ,CAAE,CAAC,eAC7D/C,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAA+B,IAAI;IAACR,KAAK,EAAEC,MAAM,CAACqB;EAAY,GAC7BlC,OAAO,EAAC,eACL,CAAC,eACPd,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAA8C,gBAAgB;IAACC,OAAO,EAAEvC,OAAQ;IAACe,KAAK,EAAEC,MAAM,CAACwB;EAAY,gBAC5DnD,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACnB,cAAA,CAAAI,OAAI;IAACsB,IAAI,EAAC,OAAO;IAACE,IAAI,EAAE,EAAG;IAACC,KAAK,EAAC;EAAM,CAAE,CAC3B,CACd,CAAC,eAEPjC,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAAiD,UAAU;IAAC1B,KAAK,EAAEC,MAAM,CAAC0B;EAAc,gBACtCrD,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAA+B,IAAI;IAACR,KAAK,EAAEC,MAAM,CAAC2B;EAAY,GAC7BxC,OAAO,EAAC,8CACL,CAAC,EACNC,iBAAiB,CAAC,CACT,CAAC,eAEbf,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAAqB,IAAI;IAACE,KAAK,EAAEC,MAAM,CAAC4B;EAAO,gBACzBvD,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAA8C,gBAAgB;IACfvB,KAAK,EAAE,CAACC,MAAM,CAAC6B,MAAM,EAAE7B,MAAM,CAAC8B,YAAY,CAAE;IAC5CP,OAAO,EAAEvC;EAAQ,gBAEjBX,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAA+B,IAAI;IAACR,KAAK,EAAEC,MAAM,CAAC+B;EAAiB,GAAC,QAAY,CAClC,CAAC,eACnB1D,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAA8C,gBAAgB;IACfvB,KAAK,EAAE,CAACC,MAAM,CAAC6B,MAAM,EAAE7B,MAAM,CAACgC,YAAY,CAAE;IAC5CT,OAAO,EAAEtC;EAAS,gBAElBZ,MAAA,CAAAQ,OAAA,CAAAe,aAAA,CAACpB,YAAA,CAAA+B,IAAI;IAACR,KAAK,EAAEC,MAAM,CAACiC;EAAiB,GAAC,QAAY,CAClC,CACd,CACF,CACF,CACD,CAAC;AAEZ,CAAC;AAACC,OAAA,CAAApD,gBAAA,GAAAA,gBAAA;AAEF,MAAMkB,MAAM,GAAGmC,uBAAU,CAACC,MAAM,CAAC;EAC/BpB,YAAY,EAAE;IACZqB,IAAI,EAAE,CAAC;IACPC,eAAe,EAAE,oBAAoB;IACrCC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDvB,YAAY,EAAE;IACZqB,eAAe,EAAE,MAAM;IACvBG,YAAY,EAAE,EAAE;IAChBC,KAAK,EAAE,KAAK;IACZC,SAAS,EAAE,KAAK;IAChBC,QAAQ,EAAE;EACZ,CAAC;EACD1B,MAAM,EAAE;IACN2B,aAAa,EAAE,KAAK;IACpBL,UAAU,EAAE,QAAQ;IACpBM,OAAO,EAAE,EAAE;IACXR,eAAe,EAAEnB,iBAAM,CAAC4B;EAC1B,CAAC;EACD1B,WAAW,EAAE;IACXgB,IAAI,EAAE,CAAC;IACPW,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,KAAK;IACjBC,UAAU,EAAE,EAAE;IACd5C,KAAK,EAAE;EACT,CAAC;EACDkB,WAAW,EAAE;IACXsB,OAAO,EAAE;EACX,CAAC;EACDpB,aAAa,EAAE;IACboB,OAAO,EAAE;EACX,CAAC;EACDnB,WAAW,EAAE;IACXqB,QAAQ,EAAE,EAAE;IACZ1C,KAAK,EAAEa,iBAAM,CAACgC,IAAI,CAACC,SAAS;IAC5BC,YAAY,EAAE;EAChB,CAAC;EACDpD,iBAAiB,EAAE;IACjBoD,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAEpC,iBAAM,CAACqC,MAAM;IAC1Bf,YAAY,EAAE,CAAC;IACfK,OAAO,EAAE;EACX,CAAC;EACD5C,cAAc,EAAE;IACd2C,aAAa,EAAE,KAAK;IACpBL,UAAU,EAAE,QAAQ;IACpBa,YAAY,EAAE;EAChB,CAAC;EACD7C,YAAY,EAAE;IACZwC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,KAAK;IACjBC,UAAU,EAAE;EACd,CAAC;EACDzC,oBAAoB,EAAE;IACpByC,UAAU,EAAE;EACd,CAAC;EACDvC,cAAc,EAAE;IACdqC,QAAQ,EAAE,EAAE;IACZ1C,KAAK,EAAEa,iBAAM,CAACgC,IAAI,CAACC,SAAS;IAC5BC,YAAY,EAAE;EAChB,CAAC;EACDzB,MAAM,EAAE;IACNiB,aAAa,EAAE,KAAK;IACpBC,OAAO,EAAE,EAAE;IACXW,cAAc,EAAE,CAAC;IACjBC,cAAc,EAAEvC,iBAAM,CAACqC,MAAM;IAC7BjB,cAAc,EAAE;EAClB,CAAC;EACDV,MAAM,EAAE;IACN8B,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE,EAAE;IACnBnB,YAAY,EAAE,CAAC;IACfS,UAAU,EAAE;EACd,CAAC;EACDpB,YAAY,EAAE;IACZQ,eAAe,EAAEnB,iBAAM,CAACqC;EAC1B,CAAC;EACDxB,YAAY,EAAE;IACZM,eAAe,EAAEnB,iBAAM,CAACC;EAC1B,CAAC;EACDW,gBAAgB,EAAE;IAChBzB,KAAK,EAAEa,iBAAM,CAACgC,IAAI,CAACC,SAAS;IAC5BH,UAAU,EAAE;EACd,CAAC;EACDhB,gBAAgB,EAAE;IAChB3B,KAAK,EAAE,MAAM;IACb2C,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ 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); }
10
+ const Notification = ({
11
+ message,
12
+ color = 'blue',
13
+ duration = 3000,
14
+ onClose
15
+ }) => {
16
+ const [fadeAnim] = (0, _react.useState)(new _reactNative.Animated.Value(0));
17
+ (0, _react.useEffect)(() => {
18
+ // Fade in
19
+ _reactNative.Animated.timing(fadeAnim, {
20
+ toValue: 1,
21
+ duration: 300,
22
+ useNativeDriver: true
23
+ }).start();
24
+
25
+ // Set timeout to fade out
26
+ const timer = setTimeout(() => {
27
+ _reactNative.Animated.timing(fadeAnim, {
28
+ toValue: 0,
29
+ duration: 300,
30
+ useNativeDriver: true
31
+ }).start(() => {
32
+ if (onClose) onClose();
33
+ });
34
+ }, duration);
35
+ return () => clearTimeout(timer);
36
+ }, []);
37
+
38
+ // Determine background color based on the color prop
39
+ const getBackgroundColor = () => {
40
+ switch (color) {
41
+ case 'red':
42
+ return '#FFEBEE';
43
+ case 'green':
44
+ return '#E8F5E9';
45
+ case 'yellow':
46
+ return '#FFF8E1';
47
+ default:
48
+ return '#E3F2FD';
49
+ }
50
+ };
51
+
52
+ // Determine text color based on the color prop
53
+ const getTextColor = () => {
54
+ switch (color) {
55
+ case 'red':
56
+ return '#D32F2F';
57
+ case 'green':
58
+ return '#388E3C';
59
+ case 'yellow':
60
+ return '#F57F17';
61
+ default:
62
+ return '#1976D2';
63
+ }
64
+ };
65
+ return /*#__PURE__*/_react.default.createElement(_reactNative.Animated.View, {
66
+ style: [styles.container, {
67
+ backgroundColor: getBackgroundColor(),
68
+ opacity: fadeAnim,
69
+ transform: [{
70
+ translateY: fadeAnim.interpolate({
71
+ inputRange: [0, 1],
72
+ outputRange: [-20, 0]
73
+ })
74
+ }]
75
+ }]
76
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
77
+ style: [styles.message, {
78
+ color: getTextColor()
79
+ }]
80
+ }, message));
81
+ };
82
+ const styles = _reactNative.StyleSheet.create({
83
+ container: {
84
+ position: 'absolute',
85
+ top: 40,
86
+ left: 20,
87
+ right: 20,
88
+ padding: 16,
89
+ borderRadius: 8,
90
+ shadowColor: '#000',
91
+ shadowOffset: {
92
+ width: 0,
93
+ height: 2
94
+ },
95
+ shadowOpacity: 0.1,
96
+ shadowRadius: 4,
97
+ elevation: 3,
98
+ zIndex: 1000
99
+ },
100
+ message: {
101
+ fontSize: 16,
102
+ fontWeight: '500'
103
+ }
104
+ });
105
+ var _default = exports.default = Notification;
106
+ //# sourceMappingURL=Notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Notification","message","color","duration","onClose","fadeAnim","useState","Animated","Value","useEffect","timing","toValue","useNativeDriver","start","timer","setTimeout","clearTimeout","getBackgroundColor","getTextColor","createElement","View","style","styles","container","backgroundColor","opacity","transform","translateY","interpolate","inputRange","outputRange","Text","StyleSheet","create","position","top","left","right","padding","borderRadius","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","zIndex","fontSize","fontWeight","_default","exports"],"sourceRoot":"..\\..\\..\\src","sources":["components/Notification.js"],"mappings":"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","ignoreList":[]}