@onairos/react-native 3.1.16 → 3.1.18

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 (207) hide show
  1. package/README.md +404 -0
  2. package/lib/commonjs/assets/images/Checkbox.svg +3 -3
  3. package/lib/commonjs/assets/images/EnochE.svg +19 -19
  4. package/lib/commonjs/assets/images/Personalityprofile.svg +3 -3
  5. package/lib/commonjs/assets/images/Personalitytraits.svg +3 -3
  6. package/lib/commonjs/assets/images/Userpreferences.svg +3 -3
  7. package/lib/commonjs/assets/images/arrow.svg +20 -20
  8. package/lib/commonjs/assets/images/basicproficon.svg +43 -43
  9. package/lib/commonjs/assets/images/basicprofile.svg +3 -3
  10. package/lib/commonjs/assets/images/checkmark.svg +4 -4
  11. package/lib/commonjs/assets/images/contentanalysis.svg +3 -3
  12. package/lib/commonjs/assets/images/contenticon.svg +23 -23
  13. package/lib/commonjs/assets/images/personalityicon.svg +18 -18
  14. package/lib/commonjs/assets/images/x-close.svg +3 -3
  15. package/lib/commonjs/components/ModalSheet.js +8 -2
  16. package/lib/commonjs/components/ModalSheet.js.map +1 -1
  17. package/lib/commonjs/components/OnairosButton.js +290 -0
  18. package/lib/commonjs/components/OnairosButton.js.map +1 -0
  19. package/lib/commonjs/components/OnairosSignInButton.js +32 -8
  20. package/lib/commonjs/components/OnairosSignInButton.js.map +1 -1
  21. package/lib/commonjs/components/UniversalOnboarding.js +4 -4
  22. package/lib/commonjs/components/WelcomeScreen.js +29 -13
  23. package/lib/commonjs/components/WelcomeScreen.js.map +1 -1
  24. package/lib/commonjs/config/api.js +2 -2
  25. package/lib/commonjs/hooks/useConnections.js +6 -6
  26. package/lib/commonjs/hooks/useUserConnections.js +10 -10
  27. package/lib/commonjs/index.js +13 -6
  28. package/lib/commonjs/index.js.map +1 -1
  29. package/lib/commonjs/services/apiClient.js +35 -35
  30. package/lib/commonjs/services/apiKeyService.js +99 -99
  31. package/lib/commonjs/services/authService.js +82 -82
  32. package/lib/commonjs/services/biometricPinService.js +10 -10
  33. package/lib/commonjs/services/connectedAccountsService.js +32 -32
  34. package/lib/commonjs/services/googleAuthService.js +15 -15
  35. package/lib/commonjs/services/imageCompressionService.js +15 -15
  36. package/lib/commonjs/services/jwtStorageService.js +59 -59
  37. package/lib/commonjs/services/mobileTrainingService.js +14 -14
  38. package/lib/commonjs/services/pinEncryptionService.js +10 -10
  39. package/lib/commonjs/services/pinStorageUtils.js +15 -15
  40. package/lib/commonjs/services/platformAuthService.js +47 -47
  41. package/lib/commonjs/services/storageService.js +31 -31
  42. package/lib/commonjs/services/trainingApiHelpers.js +33 -33
  43. package/lib/commonjs/services/userConnectionsService.js +24 -24
  44. package/lib/commonjs/utils/Portal.js +4 -4
  45. package/lib/commonjs/utils/api.js +24 -24
  46. package/lib/commonjs/utils/auth.js +18 -18
  47. package/lib/commonjs/utils/crypto.js +13 -13
  48. package/lib/commonjs/utils/encryption.js +12 -12
  49. package/lib/commonjs/utils/eventUtils.js +52 -52
  50. package/lib/commonjs/utils/programmaticFlow.js +16 -16
  51. package/lib/commonjs/utils/retryHelper.js +27 -27
  52. package/lib/module/assets/images/Checkbox.svg +3 -3
  53. package/lib/module/assets/images/EnochE.svg +19 -19
  54. package/lib/module/assets/images/Personalityprofile.svg +3 -3
  55. package/lib/module/assets/images/Personalitytraits.svg +3 -3
  56. package/lib/module/assets/images/Userpreferences.svg +3 -3
  57. package/lib/module/assets/images/arrow.svg +20 -20
  58. package/lib/module/assets/images/basicproficon.svg +43 -43
  59. package/lib/module/assets/images/basicprofile.svg +3 -3
  60. package/lib/module/assets/images/checkmark.svg +4 -4
  61. package/lib/module/assets/images/contentanalysis.svg +3 -3
  62. package/lib/module/assets/images/contenticon.svg +23 -23
  63. package/lib/module/assets/images/personalityicon.svg +18 -18
  64. package/lib/module/assets/images/x-close.svg +3 -3
  65. package/lib/module/components/ModalSheet.js +7 -2
  66. package/lib/module/components/ModalSheet.js.map +1 -1
  67. package/lib/module/components/OnairosButton.js +282 -0
  68. package/lib/module/components/OnairosButton.js.map +1 -0
  69. package/lib/module/components/OnairosSignInButton.js +32 -8
  70. package/lib/module/components/OnairosSignInButton.js.map +1 -1
  71. package/lib/module/components/UniversalOnboarding.js +4 -4
  72. package/lib/module/components/WelcomeScreen.js +25 -10
  73. package/lib/module/components/WelcomeScreen.js.map +1 -1
  74. package/lib/module/config/api.js +2 -2
  75. package/lib/module/hooks/useConnections.js +6 -6
  76. package/lib/module/hooks/useUserConnections.js +10 -10
  77. package/lib/module/index.js +11 -11
  78. package/lib/module/index.js.map +1 -1
  79. package/lib/module/services/apiClient.js +35 -35
  80. package/lib/module/services/apiKeyService.js +99 -99
  81. package/lib/module/services/authService.js +82 -82
  82. package/lib/module/services/biometricPinService.js +10 -10
  83. package/lib/module/services/connectedAccountsService.js +32 -32
  84. package/lib/module/services/googleAuthService.js +15 -15
  85. package/lib/module/services/imageCompressionService.js +15 -15
  86. package/lib/module/services/jwtStorageService.js +59 -59
  87. package/lib/module/services/mobileTrainingService.js +14 -14
  88. package/lib/module/services/pinEncryptionService.js +10 -10
  89. package/lib/module/services/pinStorageUtils.js +15 -15
  90. package/lib/module/services/platformAuthService.js +47 -47
  91. package/lib/module/services/storageService.js +31 -31
  92. package/lib/module/services/trainingApiHelpers.js +33 -33
  93. package/lib/module/services/userConnectionsService.js +24 -24
  94. package/lib/module/utils/Portal.js +4 -4
  95. package/lib/module/utils/api.js +24 -24
  96. package/lib/module/utils/auth.js +18 -18
  97. package/lib/module/utils/crypto.js +13 -13
  98. package/lib/module/utils/encryption.js +12 -12
  99. package/lib/module/utils/eventUtils.js +52 -52
  100. package/lib/module/utils/programmaticFlow.js +16 -16
  101. package/lib/module/utils/retryHelper.js +27 -27
  102. package/lib/typescript/components/ModalSheet.d.ts.map +1 -1
  103. package/lib/typescript/components/OnairosButton.d.ts +37 -0
  104. package/lib/typescript/components/OnairosButton.d.ts.map +1 -0
  105. package/lib/typescript/components/OnairosSignInButton.d.ts.map +1 -1
  106. package/lib/typescript/components/WelcomeScreen.d.ts.map +1 -1
  107. package/lib/typescript/index.d.ts +3 -1
  108. package/lib/typescript/index.d.ts.map +1 -1
  109. package/package.json +145 -163
  110. package/src/api/index.ts +151 -151
  111. package/src/assets/images/Checkbox.svg +3 -3
  112. package/src/assets/images/EnochE.svg +19 -19
  113. package/src/assets/images/Personalityprofile.svg +3 -3
  114. package/src/assets/images/Personalitytraits.svg +3 -3
  115. package/src/assets/images/Userpreferences.svg +3 -3
  116. package/src/assets/images/arrow.svg +20 -20
  117. package/src/assets/images/basicproficon.svg +43 -43
  118. package/src/assets/images/basicprofile.svg +3 -3
  119. package/src/assets/images/checkmark.svg +4 -4
  120. package/src/assets/images/contentanalysis.svg +3 -3
  121. package/src/assets/images/contenticon.svg +23 -23
  122. package/src/assets/images/personalityicon.svg +18 -18
  123. package/src/assets/images/x-close.svg +3 -3
  124. package/src/components/BodyText.tsx +33 -33
  125. package/src/components/BrandMark.tsx +62 -62
  126. package/src/components/CodeInput.tsx +32 -32
  127. package/src/components/DataRequestScreen.tsx +355 -355
  128. package/src/components/EmailInput.tsx +31 -31
  129. package/src/components/EmailVerificationModal.tsx +363 -363
  130. package/src/components/ExistingUserDataConfirmation.tsx +506 -506
  131. package/src/components/GoogleButton.tsx +55 -55
  132. package/src/components/HeadingGroup.tsx +49 -49
  133. package/src/components/ModalHeader.tsx +125 -125
  134. package/src/components/ModalSheet.tsx +59 -57
  135. package/src/components/Onairos.tsx +422 -422
  136. package/src/components/OnairosButton.tsx +339 -0
  137. package/src/components/OnairosSignInButton.tsx +31 -9
  138. package/src/components/Overlay.tsx +506 -506
  139. package/src/components/PersonaImage.tsx +79 -79
  140. package/src/components/PersonaLoadingScreen.tsx +201 -201
  141. package/src/components/PersonalizationConsentScreen.tsx +410 -410
  142. package/src/components/PinCreationScreen.tsx +492 -492
  143. package/src/components/PinInput.tsx +555 -555
  144. package/src/components/PlatformConnectorsStep.tsx +891 -891
  145. package/src/components/PlatformList.tsx +144 -144
  146. package/src/components/PlatformToggle.tsx +226 -226
  147. package/src/components/PrimaryButton.tsx +213 -213
  148. package/src/components/SignInMatchAnimation.tsx +225 -225
  149. package/src/components/SignInStep.tsx +217 -217
  150. package/src/components/TrainingModal.tsx +1047 -1047
  151. package/src/components/UniversalOnboarding.tsx +2887 -2887
  152. package/src/components/VerificationStep.tsx +198 -198
  153. package/src/components/WelcomeScreen.tsx +490 -473
  154. package/src/components/icons/Basicproficon.tsx +30 -30
  155. package/src/components/icons/Basicprofile.tsx +17 -17
  156. package/src/components/icons/Checkbox.tsx +17 -17
  157. package/src/components/icons/Checkmark.tsx +24 -24
  158. package/src/components/icons/Contentanalysis.tsx +17 -17
  159. package/src/components/icons/Contenticon.tsx +30 -30
  160. package/src/components/icons/EnochE.tsx +39 -39
  161. package/src/components/icons/Personalityicon.tsx +22 -22
  162. package/src/components/icons/Personalityprofile.tsx +17 -17
  163. package/src/components/icons/Personalitytraits.tsx +17 -17
  164. package/src/components/icons/Userpreferences.tsx +17 -17
  165. package/src/components/icons/index.ts +12 -12
  166. package/src/components/onboarding/OAuthWebView.tsx +232 -232
  167. package/src/config/api.ts +25 -25
  168. package/src/context/AuthContext.tsx +393 -393
  169. package/src/hooks/useConnectedAccounts.ts +138 -138
  170. package/src/hooks/useConnections.ts +161 -161
  171. package/src/hooks/useCredentials.ts +174 -174
  172. package/src/hooks/useUserConnections.ts +165 -165
  173. package/src/index.js +14 -0
  174. package/src/index.ts +99 -96
  175. package/src/services/apiClient.ts +336 -336
  176. package/src/services/apiKeyService.ts +919 -919
  177. package/src/services/authService.ts +1008 -1008
  178. package/src/services/biometricPinService.ts +192 -192
  179. package/src/services/connectedAccountsService.ts +289 -289
  180. package/src/services/googleAuthService.ts +279 -279
  181. package/src/services/imageCompressionService.ts +302 -302
  182. package/src/services/jwtStorageService.ts +256 -256
  183. package/src/services/mobileTrainingService.ts +203 -203
  184. package/src/services/pinEncryptionService.ts +75 -75
  185. package/src/services/pinStorageUtils.ts +96 -96
  186. package/src/services/platformAuthService.ts +1346 -1346
  187. package/src/services/storageService.ts +451 -451
  188. package/src/services/trainingApiHelpers.ts +66 -66
  189. package/src/services/userConnectionsService.ts +556 -556
  190. package/src/services/youtubeMigrationService.ts +453 -453
  191. package/src/theme/index.ts +239 -239
  192. package/src/types/ambient.d.ts +28 -28
  193. package/src/types/index.ts +265 -265
  194. package/src/types/node-fix.d.ts +18 -18
  195. package/src/types/node-override.d.ts +23 -23
  196. package/src/types/opacity.d.ts +15 -15
  197. package/src/types/types.d.ts +17 -17
  198. package/src/utils/Portal.tsx +82 -82
  199. package/src/utils/api.js +111 -111
  200. package/src/utils/auth.js +103 -103
  201. package/src/utils/crypto.js +59 -59
  202. package/src/utils/encryption.ts +68 -68
  203. package/src/utils/eventUtils.ts +302 -302
  204. package/src/utils/haptics.ts +58 -58
  205. package/src/utils/imagePreloader.ts +2 -2
  206. package/src/utils/programmaticFlow.ts +112 -112
  207. package/src/utils/retryHelper.ts +274 -274
@@ -1,226 +1,226 @@
1
- import React from 'react';
2
- import {
3
- View,
4
- Text,
5
- TouchableOpacity,
6
- Image,
7
- StyleSheet,
8
- Switch,
9
- Platform,
10
- } from 'react-native';
11
- import { COLORS, SPACING } from '../theme';
12
-
13
- interface PlatformToggleProps {
14
- platform: {
15
- id: string;
16
- name: string;
17
- icon: any; // require() image
18
- description: string;
19
- };
20
- isEnabled: boolean;
21
- onToggle: (platformId: string, enabled: boolean) => void;
22
- compact?: boolean;
23
- isLast?: boolean;
24
- fullWidth?: boolean;
25
- customIconSize?: number;
26
- onLongPress?: () => void;
27
- onPressOut?: () => void;
28
- }
29
-
30
- const PlatformToggle: React.FC<PlatformToggleProps> = ({
31
- platform,
32
- isEnabled,
33
- onToggle,
34
- compact = false,
35
- isLast = false,
36
- fullWidth = false,
37
- customIconSize,
38
- onLongPress,
39
- onPressOut,
40
- }) => {
41
- const handleToggle = () => {
42
- onToggle(platform.id, !isEnabled);
43
- };
44
-
45
- const containerStyle = fullWidth ? styles.fullWidthContainer :
46
- compact ? styles.compactContainer : styles.container;
47
-
48
- return (
49
- <TouchableOpacity
50
- style={[
51
- containerStyle,
52
- !isLast && compact && styles.borderBottom,
53
- ]}
54
- onLongPress={onLongPress}
55
- onPressOut={onPressOut}
56
- activeOpacity={onLongPress ? 0.7 : 1.0}
57
- disabled={!onLongPress}
58
- >
59
- {/* Top row: Icon + Name + Toggle */}
60
- <View style={styles.topRow}>
61
- <View style={styles.leftContent}>
62
- <Image
63
- source={platform.icon}
64
- style={customIconSize ?
65
- {
66
- width: customIconSize,
67
- height: customIconSize,
68
- marginRight: 12 - (customIconSize - 28) // Reduce margin more to align text properly
69
- } :
70
- (fullWidth ? styles.compactIcon : (compact ? styles.compactIcon : styles.icon))
71
- }
72
- resizeMode="contain"
73
- />
74
- <View style={styles.textContent}>
75
- <Text style={fullWidth ? styles.compactPlatformName : (compact ? styles.compactPlatformName : styles.platformName)}>{platform.name}</Text>
76
- </View>
77
- </View>
78
-
79
- <Switch
80
- value={isEnabled}
81
- onValueChange={handleToggle}
82
- trackColor={{
83
- false: '#E5E5E5',
84
- true: '#4CD964' // Green when enabled
85
- }}
86
- thumbColor={Platform.OS === 'ios' ? undefined : (isEnabled ? '#FFFFFF' : '#FFFFFF')}
87
- ios_backgroundColor="#E5E5E5"
88
- style={compact ? styles.compactSwitch : undefined}
89
- />
90
- </View>
91
-
92
- {/* Bottom row: Description in rounded box */}
93
- {fullWidth && (
94
- <View style={styles.descriptionBox}>
95
- <Text style={styles.fullWidthDescription}>{platform.description}</Text>
96
- </View>
97
- )}
98
-
99
- {/* Show description inline for non-fullWidth modes */}
100
- {!fullWidth && (
101
- <Text style={compact ? styles.compactDescription : styles.description}>{platform.description}</Text>
102
- )}
103
- </TouchableOpacity>
104
- );
105
- };
106
-
107
- const styles = StyleSheet.create({
108
- container: {
109
- flexDirection: 'row',
110
- alignItems: 'center',
111
- justifyContent: 'space-between',
112
- paddingVertical: 16,
113
- paddingHorizontal: 16,
114
- backgroundColor: COLORS.surface,
115
- borderRadius: 12,
116
- marginBottom: 12,
117
- borderWidth: 1,
118
- borderColor: '#E5E5E5',
119
- },
120
-
121
- compactContainer: {
122
- flexDirection: 'row',
123
- alignItems: 'center',
124
- justifyContent: 'space-between',
125
- paddingVertical: 16,
126
- paddingHorizontal: 16,
127
- backgroundColor: COLORS.surface,
128
- },
129
-
130
- fullWidthContainer: {
131
- flexDirection: 'column', // Changed to column to stack rows
132
- paddingVertical: 8, // Reduced from 16 to bring platforms closer
133
- paddingHorizontal: 2, // Much closer to edges
134
- backgroundColor: COLORS.surface,
135
- marginBottom: 4, // Reduced from 12 to bring platforms closer
136
- marginHorizontal: 0, // Ensure it spans full width
137
- },
138
-
139
- topRow: {
140
- flexDirection: 'row',
141
- alignItems: 'center',
142
- justifyContent: 'space-between',
143
- marginBottom: 4, // Reduced space between icon row and description box
144
- },
145
-
146
- descriptionBox: {
147
- backgroundColor: '#F5F5F5',
148
- borderRadius: 8,
149
- paddingVertical: 8, // Reduced from 10 to make description box smaller
150
- paddingHorizontal: 4, // Much closer to edges
151
- marginTop: 2, // Reduced from 4 to bring closer to icon row
152
- },
153
-
154
- borderBottom: {
155
- borderBottomWidth: 1,
156
- borderBottomColor: '#E5E5E5',
157
- },
158
-
159
- leftContent: {
160
- flexDirection: 'row',
161
- alignItems: 'center',
162
- flex: 1,
163
- },
164
-
165
- icon: {
166
- width: 32,
167
- height: 32,
168
- marginRight: 12,
169
- },
170
-
171
- compactIcon: {
172
- width: 28,
173
- height: 28,
174
- marginRight: 12,
175
- },
176
-
177
- textContent: {
178
- flex: 1,
179
- },
180
-
181
- platformName: {
182
- fontSize: 16,
183
- fontFamily: 'Inter',
184
- fontWeight: '600',
185
- color: COLORS.grey800,
186
- marginBottom: 2,
187
- },
188
-
189
- compactPlatformName: {
190
- fontSize: 16,
191
- fontFamily: 'Inter',
192
- fontWeight: '600',
193
- color: COLORS.grey800,
194
- marginBottom: 2,
195
- },
196
-
197
- description: {
198
- fontSize: 14,
199
- fontFamily: 'Inter',
200
- fontWeight: '400',
201
- color: COLORS.grey600,
202
- lineHeight: 20,
203
- },
204
-
205
- compactDescription: {
206
- fontSize: 12,
207
- fontFamily: 'Inter',
208
- fontWeight: '400',
209
- color: COLORS.grey600,
210
- lineHeight: 16,
211
- },
212
-
213
- fullWidthDescription: {
214
- fontSize: 13,
215
- fontFamily: 'Inter',
216
- fontWeight: '400',
217
- color: COLORS.grey600,
218
- lineHeight: 18,
219
- },
220
-
221
- compactSwitch: {
222
- transform: [{ scaleX: 0.9 }, { scaleY: 0.9 }],
223
- },
224
- });
225
-
226
- export default PlatformToggle;
1
+ import React from 'react';
2
+ import {
3
+ View,
4
+ Text,
5
+ TouchableOpacity,
6
+ Image,
7
+ StyleSheet,
8
+ Switch,
9
+ Platform,
10
+ } from 'react-native';
11
+ import { COLORS, SPACING } from '../theme';
12
+
13
+ interface PlatformToggleProps {
14
+ platform: {
15
+ id: string;
16
+ name: string;
17
+ icon: any; // require() image
18
+ description: string;
19
+ };
20
+ isEnabled: boolean;
21
+ onToggle: (platformId: string, enabled: boolean) => void;
22
+ compact?: boolean;
23
+ isLast?: boolean;
24
+ fullWidth?: boolean;
25
+ customIconSize?: number;
26
+ onLongPress?: () => void;
27
+ onPressOut?: () => void;
28
+ }
29
+
30
+ const PlatformToggle: React.FC<PlatformToggleProps> = ({
31
+ platform,
32
+ isEnabled,
33
+ onToggle,
34
+ compact = false,
35
+ isLast = false,
36
+ fullWidth = false,
37
+ customIconSize,
38
+ onLongPress,
39
+ onPressOut,
40
+ }) => {
41
+ const handleToggle = () => {
42
+ onToggle(platform.id, !isEnabled);
43
+ };
44
+
45
+ const containerStyle = fullWidth ? styles.fullWidthContainer :
46
+ compact ? styles.compactContainer : styles.container;
47
+
48
+ return (
49
+ <TouchableOpacity
50
+ style={[
51
+ containerStyle,
52
+ !isLast && compact && styles.borderBottom,
53
+ ]}
54
+ onLongPress={onLongPress}
55
+ onPressOut={onPressOut}
56
+ activeOpacity={onLongPress ? 0.7 : 1.0}
57
+ disabled={!onLongPress}
58
+ >
59
+ {/* Top row: Icon + Name + Toggle */}
60
+ <View style={styles.topRow}>
61
+ <View style={styles.leftContent}>
62
+ <Image
63
+ source={platform.icon}
64
+ style={customIconSize ?
65
+ {
66
+ width: customIconSize,
67
+ height: customIconSize,
68
+ marginRight: 12 - (customIconSize - 28) // Reduce margin more to align text properly
69
+ } :
70
+ (fullWidth ? styles.compactIcon : (compact ? styles.compactIcon : styles.icon))
71
+ }
72
+ resizeMode="contain"
73
+ />
74
+ <View style={styles.textContent}>
75
+ <Text style={fullWidth ? styles.compactPlatformName : (compact ? styles.compactPlatformName : styles.platformName)}>{platform.name}</Text>
76
+ </View>
77
+ </View>
78
+
79
+ <Switch
80
+ value={isEnabled}
81
+ onValueChange={handleToggle}
82
+ trackColor={{
83
+ false: '#E5E5E5',
84
+ true: '#4CD964' // Green when enabled
85
+ }}
86
+ thumbColor={Platform.OS === 'ios' ? undefined : (isEnabled ? '#FFFFFF' : '#FFFFFF')}
87
+ ios_backgroundColor="#E5E5E5"
88
+ style={compact ? styles.compactSwitch : undefined}
89
+ />
90
+ </View>
91
+
92
+ {/* Bottom row: Description in rounded box */}
93
+ {fullWidth && (
94
+ <View style={styles.descriptionBox}>
95
+ <Text style={styles.fullWidthDescription}>{platform.description}</Text>
96
+ </View>
97
+ )}
98
+
99
+ {/* Show description inline for non-fullWidth modes */}
100
+ {!fullWidth && (
101
+ <Text style={compact ? styles.compactDescription : styles.description}>{platform.description}</Text>
102
+ )}
103
+ </TouchableOpacity>
104
+ );
105
+ };
106
+
107
+ const styles = StyleSheet.create({
108
+ container: {
109
+ flexDirection: 'row',
110
+ alignItems: 'center',
111
+ justifyContent: 'space-between',
112
+ paddingVertical: 16,
113
+ paddingHorizontal: 16,
114
+ backgroundColor: COLORS.surface,
115
+ borderRadius: 12,
116
+ marginBottom: 12,
117
+ borderWidth: 1,
118
+ borderColor: '#E5E5E5',
119
+ },
120
+
121
+ compactContainer: {
122
+ flexDirection: 'row',
123
+ alignItems: 'center',
124
+ justifyContent: 'space-between',
125
+ paddingVertical: 16,
126
+ paddingHorizontal: 16,
127
+ backgroundColor: COLORS.surface,
128
+ },
129
+
130
+ fullWidthContainer: {
131
+ flexDirection: 'column', // Changed to column to stack rows
132
+ paddingVertical: 8, // Reduced from 16 to bring platforms closer
133
+ paddingHorizontal: 2, // Much closer to edges
134
+ backgroundColor: COLORS.surface,
135
+ marginBottom: 4, // Reduced from 12 to bring platforms closer
136
+ marginHorizontal: 0, // Ensure it spans full width
137
+ },
138
+
139
+ topRow: {
140
+ flexDirection: 'row',
141
+ alignItems: 'center',
142
+ justifyContent: 'space-between',
143
+ marginBottom: 4, // Reduced space between icon row and description box
144
+ },
145
+
146
+ descriptionBox: {
147
+ backgroundColor: '#F5F5F5',
148
+ borderRadius: 8,
149
+ paddingVertical: 8, // Reduced from 10 to make description box smaller
150
+ paddingHorizontal: 4, // Much closer to edges
151
+ marginTop: 2, // Reduced from 4 to bring closer to icon row
152
+ },
153
+
154
+ borderBottom: {
155
+ borderBottomWidth: 1,
156
+ borderBottomColor: '#E5E5E5',
157
+ },
158
+
159
+ leftContent: {
160
+ flexDirection: 'row',
161
+ alignItems: 'center',
162
+ flex: 1,
163
+ },
164
+
165
+ icon: {
166
+ width: 32,
167
+ height: 32,
168
+ marginRight: 12,
169
+ },
170
+
171
+ compactIcon: {
172
+ width: 28,
173
+ height: 28,
174
+ marginRight: 12,
175
+ },
176
+
177
+ textContent: {
178
+ flex: 1,
179
+ },
180
+
181
+ platformName: {
182
+ fontSize: 16,
183
+ fontFamily: 'Inter',
184
+ fontWeight: '600',
185
+ color: COLORS.grey800,
186
+ marginBottom: 2,
187
+ },
188
+
189
+ compactPlatformName: {
190
+ fontSize: 16,
191
+ fontFamily: 'Inter',
192
+ fontWeight: '600',
193
+ color: COLORS.grey800,
194
+ marginBottom: 2,
195
+ },
196
+
197
+ description: {
198
+ fontSize: 14,
199
+ fontFamily: 'Inter',
200
+ fontWeight: '400',
201
+ color: COLORS.grey600,
202
+ lineHeight: 20,
203
+ },
204
+
205
+ compactDescription: {
206
+ fontSize: 12,
207
+ fontFamily: 'Inter',
208
+ fontWeight: '400',
209
+ color: COLORS.grey600,
210
+ lineHeight: 16,
211
+ },
212
+
213
+ fullWidthDescription: {
214
+ fontSize: 13,
215
+ fontFamily: 'Inter',
216
+ fontWeight: '400',
217
+ color: COLORS.grey600,
218
+ lineHeight: 18,
219
+ },
220
+
221
+ compactSwitch: {
222
+ transform: [{ scaleX: 0.9 }, { scaleY: 0.9 }],
223
+ },
224
+ });
225
+
226
+ export default PlatformToggle;