@oxyhq/services 5.12.11 → 5.13.1

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 (208) hide show
  1. package/lib/commonjs/core/OxyServices.js +86 -8
  2. package/lib/commonjs/core/OxyServices.js.map +1 -1
  3. package/lib/commonjs/i18n/index.js +37 -1
  4. package/lib/commonjs/i18n/index.js.map +1 -1
  5. package/lib/commonjs/i18n/locales/ar-SA.json +128 -0
  6. package/lib/commonjs/i18n/locales/ca-ES.json +128 -0
  7. package/lib/commonjs/i18n/locales/de-DE.json +128 -0
  8. package/lib/commonjs/i18n/locales/en-US.json +85 -12
  9. package/lib/commonjs/i18n/locales/es-ES.json +58 -6
  10. package/lib/commonjs/i18n/locales/fr-FR.json +128 -0
  11. package/lib/commonjs/i18n/locales/it-IT.json +128 -0
  12. package/lib/commonjs/i18n/locales/ja-JP.json +127 -0
  13. package/lib/commonjs/i18n/locales/ko-KR.json +128 -0
  14. package/lib/commonjs/i18n/locales/pt-PT.json +128 -0
  15. package/lib/commonjs/i18n/locales/zh-CN.json +128 -0
  16. package/lib/commonjs/ui/components/FontLoader.js +22 -42
  17. package/lib/commonjs/ui/components/FontLoader.js.map +1 -1
  18. package/lib/commonjs/ui/components/OxyProvider.js +5 -8
  19. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  20. package/lib/commonjs/ui/components/StepBasedScreen.js +64 -44
  21. package/lib/commonjs/ui/components/StepBasedScreen.js.map +1 -1
  22. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js +14 -35
  23. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js.map +1 -1
  24. package/lib/commonjs/ui/components/internal/PinInput.js +2 -2
  25. package/lib/commonjs/ui/components/internal/PinInput.js.map +1 -1
  26. package/lib/commonjs/ui/context/OxyContext.js +434 -321
  27. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  28. package/lib/commonjs/ui/screens/FileManagementScreen.js +56 -5
  29. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  30. package/lib/commonjs/ui/screens/SignInScreen.js +43 -39
  31. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  32. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +139 -125
  33. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  34. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js +2 -4
  35. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  36. package/lib/commonjs/ui/screens/steps/RecoverRequestStep.js +45 -25
  37. package/lib/commonjs/ui/screens/steps/RecoverRequestStep.js.map +1 -1
  38. package/lib/commonjs/ui/screens/steps/RecoverResetPasswordStep.js +88 -53
  39. package/lib/commonjs/ui/screens/steps/RecoverResetPasswordStep.js.map +1 -1
  40. package/lib/commonjs/ui/screens/steps/RecoverSuccessStep.js +79 -58
  41. package/lib/commonjs/ui/screens/steps/RecoverSuccessStep.js.map +1 -1
  42. package/lib/commonjs/ui/screens/steps/RecoverVerifyStep.js +61 -52
  43. package/lib/commonjs/ui/screens/steps/RecoverVerifyStep.js.map +1 -1
  44. package/lib/commonjs/ui/screens/steps/SignInPasswordStep.js +220 -31
  45. package/lib/commonjs/ui/screens/steps/SignInPasswordStep.js.map +1 -1
  46. package/lib/commonjs/ui/screens/steps/SignInTotpStep.js +77 -50
  47. package/lib/commonjs/ui/screens/steps/SignInTotpStep.js.map +1 -1
  48. package/lib/commonjs/ui/screens/steps/SignInUsernameStep.js +527 -66
  49. package/lib/commonjs/ui/screens/steps/SignInUsernameStep.js.map +1 -1
  50. package/lib/commonjs/ui/screens/steps/SignUpIdentityStep.js +55 -30
  51. package/lib/commonjs/ui/screens/steps/SignUpIdentityStep.js.map +1 -1
  52. package/lib/commonjs/ui/screens/steps/SignUpSecurityStep.js +64 -46
  53. package/lib/commonjs/ui/screens/steps/SignUpSecurityStep.js.map +1 -1
  54. package/lib/commonjs/ui/screens/steps/SignUpSummaryStep.js +84 -146
  55. package/lib/commonjs/ui/screens/steps/SignUpSummaryStep.js.map +1 -1
  56. package/lib/commonjs/ui/screens/steps/SignUpWelcomeStep.js +113 -34
  57. package/lib/commonjs/ui/screens/steps/SignUpWelcomeStep.js.map +1 -1
  58. package/lib/commonjs/ui/stores/authStore.js +16 -20
  59. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  60. package/lib/commonjs/ui/styles/authStyles.js +2 -1
  61. package/lib/commonjs/ui/styles/authStyles.js.map +1 -1
  62. package/lib/commonjs/ui/styles/index.js +11 -0
  63. package/lib/commonjs/ui/styles/index.js.map +1 -1
  64. package/lib/commonjs/ui/styles/spacing.js +51 -0
  65. package/lib/commonjs/ui/styles/spacing.js.map +1 -0
  66. package/lib/commonjs/utils/validationUtils.js +1 -1
  67. package/lib/module/core/OxyServices.js +86 -8
  68. package/lib/module/core/OxyServices.js.map +1 -1
  69. package/lib/module/i18n/index.js +37 -1
  70. package/lib/module/i18n/index.js.map +1 -1
  71. package/lib/module/i18n/locales/ar-SA.json +128 -0
  72. package/lib/module/i18n/locales/ca-ES.json +128 -0
  73. package/lib/module/i18n/locales/de-DE.json +128 -0
  74. package/lib/module/i18n/locales/en-US.json +85 -12
  75. package/lib/module/i18n/locales/es-ES.json +58 -6
  76. package/lib/module/i18n/locales/fr-FR.json +128 -0
  77. package/lib/module/i18n/locales/it-IT.json +128 -0
  78. package/lib/module/i18n/locales/ja-JP.json +127 -0
  79. package/lib/module/i18n/locales/ko-KR.json +128 -0
  80. package/lib/module/i18n/locales/pt-PT.json +128 -0
  81. package/lib/module/i18n/locales/zh-CN.json +128 -0
  82. package/lib/module/ui/components/FontLoader.js +23 -43
  83. package/lib/module/ui/components/FontLoader.js.map +1 -1
  84. package/lib/module/ui/components/OxyProvider.js +6 -8
  85. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  86. package/lib/module/ui/components/StepBasedScreen.js +65 -45
  87. package/lib/module/ui/components/StepBasedScreen.js.map +1 -1
  88. package/lib/module/ui/components/internal/GroupedPillButtons.js +14 -35
  89. package/lib/module/ui/components/internal/GroupedPillButtons.js.map +1 -1
  90. package/lib/module/ui/components/internal/PinInput.js +2 -2
  91. package/lib/module/ui/components/internal/PinInput.js.map +1 -1
  92. package/lib/module/ui/context/OxyContext.js +434 -321
  93. package/lib/module/ui/context/OxyContext.js.map +1 -1
  94. package/lib/module/ui/screens/FileManagementScreen.js +56 -5
  95. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  96. package/lib/module/ui/screens/SignInScreen.js +44 -40
  97. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  98. package/lib/module/ui/screens/WelcomeNewUserScreen.js +138 -126
  99. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  100. package/lib/module/ui/screens/internal/SignInUsernameStep.js +2 -4
  101. package/lib/module/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  102. package/lib/module/ui/screens/steps/RecoverRequestStep.js +45 -25
  103. package/lib/module/ui/screens/steps/RecoverRequestStep.js.map +1 -1
  104. package/lib/module/ui/screens/steps/RecoverResetPasswordStep.js +89 -54
  105. package/lib/module/ui/screens/steps/RecoverResetPasswordStep.js.map +1 -1
  106. package/lib/module/ui/screens/steps/RecoverSuccessStep.js +80 -59
  107. package/lib/module/ui/screens/steps/RecoverSuccessStep.js.map +1 -1
  108. package/lib/module/ui/screens/steps/RecoverVerifyStep.js +62 -53
  109. package/lib/module/ui/screens/steps/RecoverVerifyStep.js.map +1 -1
  110. package/lib/module/ui/screens/steps/SignInPasswordStep.js +221 -32
  111. package/lib/module/ui/screens/steps/SignInPasswordStep.js.map +1 -1
  112. package/lib/module/ui/screens/steps/SignInTotpStep.js +78 -51
  113. package/lib/module/ui/screens/steps/SignInTotpStep.js.map +1 -1
  114. package/lib/module/ui/screens/steps/SignInUsernameStep.js +530 -68
  115. package/lib/module/ui/screens/steps/SignInUsernameStep.js.map +1 -1
  116. package/lib/module/ui/screens/steps/SignUpIdentityStep.js +55 -30
  117. package/lib/module/ui/screens/steps/SignUpIdentityStep.js.map +1 -1
  118. package/lib/module/ui/screens/steps/SignUpSecurityStep.js +65 -47
  119. package/lib/module/ui/screens/steps/SignUpSecurityStep.js.map +1 -1
  120. package/lib/module/ui/screens/steps/SignUpSummaryStep.js +84 -146
  121. package/lib/module/ui/screens/steps/SignUpSummaryStep.js.map +1 -1
  122. package/lib/module/ui/screens/steps/SignUpWelcomeStep.js +114 -35
  123. package/lib/module/ui/screens/steps/SignUpWelcomeStep.js.map +1 -1
  124. package/lib/module/ui/stores/authStore.js +16 -20
  125. package/lib/module/ui/stores/authStore.js.map +1 -1
  126. package/lib/module/ui/styles/authStyles.js +2 -1
  127. package/lib/module/ui/styles/authStyles.js.map +1 -1
  128. package/lib/module/ui/styles/index.js +1 -0
  129. package/lib/module/ui/styles/index.js.map +1 -1
  130. package/lib/module/ui/styles/spacing.js +48 -0
  131. package/lib/module/ui/styles/spacing.js.map +1 -0
  132. package/lib/module/utils/validationUtils.js +1 -1
  133. package/lib/typescript/core/OxyServices.d.ts +38 -2
  134. package/lib/typescript/core/OxyServices.d.ts.map +1 -1
  135. package/lib/typescript/i18n/index.d.ts.map +1 -1
  136. package/lib/typescript/ui/components/FontLoader.d.ts +3 -3
  137. package/lib/typescript/ui/components/FontLoader.d.ts.map +1 -1
  138. package/lib/typescript/ui/components/OxyProvider.d.ts +2 -2
  139. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  140. package/lib/typescript/ui/components/StepBasedScreen.d.ts.map +1 -1
  141. package/lib/typescript/ui/components/internal/GroupedPillButtons.d.ts.map +1 -1
  142. package/lib/typescript/ui/context/OxyContext.d.ts +1 -0
  143. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  144. package/lib/typescript/ui/screens/FileManagementScreen.d.ts +10 -0
  145. package/lib/typescript/ui/screens/FileManagementScreen.d.ts.map +1 -1
  146. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
  147. package/lib/typescript/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  148. package/lib/typescript/ui/screens/steps/RecoverRequestStep.d.ts.map +1 -1
  149. package/lib/typescript/ui/screens/steps/RecoverResetPasswordStep.d.ts.map +1 -1
  150. package/lib/typescript/ui/screens/steps/RecoverSuccessStep.d.ts.map +1 -1
  151. package/lib/typescript/ui/screens/steps/RecoverVerifyStep.d.ts.map +1 -1
  152. package/lib/typescript/ui/screens/steps/SignInPasswordStep.d.ts +2 -0
  153. package/lib/typescript/ui/screens/steps/SignInPasswordStep.d.ts.map +1 -1
  154. package/lib/typescript/ui/screens/steps/SignInTotpStep.d.ts.map +1 -1
  155. package/lib/typescript/ui/screens/steps/SignInUsernameStep.d.ts.map +1 -1
  156. package/lib/typescript/ui/screens/steps/SignUpIdentityStep.d.ts.map +1 -1
  157. package/lib/typescript/ui/screens/steps/SignUpSecurityStep.d.ts.map +1 -1
  158. package/lib/typescript/ui/screens/steps/SignUpSummaryStep.d.ts.map +1 -1
  159. package/lib/typescript/ui/screens/steps/SignUpWelcomeStep.d.ts.map +1 -1
  160. package/lib/typescript/ui/stores/authStore.d.ts +7 -3
  161. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
  162. package/lib/typescript/ui/styles/authStyles.d.ts +1 -0
  163. package/lib/typescript/ui/styles/authStyles.d.ts.map +1 -1
  164. package/lib/typescript/ui/styles/index.d.ts +1 -0
  165. package/lib/typescript/ui/styles/index.d.ts.map +1 -1
  166. package/lib/typescript/ui/styles/spacing.d.ts +43 -0
  167. package/lib/typescript/ui/styles/spacing.d.ts.map +1 -0
  168. package/lib/typescript/utils/validationUtils.d.ts +1 -1
  169. package/package.json +1 -1
  170. package/src/core/OxyServices.ts +96 -10
  171. package/src/i18n/index.ts +36 -0
  172. package/src/i18n/locales/ar-SA.json +128 -0
  173. package/src/i18n/locales/ca-ES.json +128 -0
  174. package/src/i18n/locales/de-DE.json +128 -0
  175. package/src/i18n/locales/en-US.json +85 -12
  176. package/src/i18n/locales/es-ES.json +58 -6
  177. package/src/i18n/locales/fr-FR.json +128 -0
  178. package/src/i18n/locales/it-IT.json +128 -0
  179. package/src/i18n/locales/ja-JP.json +127 -0
  180. package/src/i18n/locales/ko-KR.json +128 -0
  181. package/src/i18n/locales/pt-PT.json +128 -0
  182. package/src/i18n/locales/zh-CN.json +128 -0
  183. package/src/ui/components/FontLoader.tsx +17 -37
  184. package/src/ui/components/OxyProvider.tsx +14 -13
  185. package/src/ui/components/StepBasedScreen.tsx +66 -43
  186. package/src/ui/components/internal/GroupedPillButtons.tsx +15 -31
  187. package/src/ui/components/internal/PinInput.tsx +2 -2
  188. package/src/ui/context/OxyContext.tsx +404 -285
  189. package/src/ui/screens/FileManagementScreen.tsx +81 -4
  190. package/src/ui/screens/SignInScreen.tsx +59 -36
  191. package/src/ui/screens/WelcomeNewUserScreen.tsx +102 -91
  192. package/src/ui/screens/internal/SignInUsernameStep.tsx +1 -1
  193. package/src/ui/screens/steps/RecoverRequestStep.tsx +34 -24
  194. package/src/ui/screens/steps/RecoverResetPasswordStep.tsx +65 -36
  195. package/src/ui/screens/steps/RecoverSuccessStep.tsx +71 -47
  196. package/src/ui/screens/steps/RecoverVerifyStep.tsx +60 -50
  197. package/src/ui/screens/steps/SignInPasswordStep.tsx +191 -29
  198. package/src/ui/screens/steps/SignInTotpStep.tsx +68 -34
  199. package/src/ui/screens/steps/SignInUsernameStep.tsx +586 -57
  200. package/src/ui/screens/steps/SignUpIdentityStep.tsx +49 -35
  201. package/src/ui/screens/steps/SignUpSecurityStep.tsx +56 -39
  202. package/src/ui/screens/steps/SignUpSummaryStep.tsx +99 -89
  203. package/src/ui/screens/steps/SignUpWelcomeStep.tsx +88 -20
  204. package/src/ui/stores/authStore.ts +15 -19
  205. package/src/ui/styles/authStyles.ts +2 -1
  206. package/src/ui/styles/index.ts +1 -0
  207. package/src/ui/styles/spacing.ts +46 -0
  208. package/src/utils/validationUtils.ts +1 -1
@@ -13,11 +13,7 @@ import Animated, {
13
13
  useSharedValue,
14
14
  useAnimatedStyle,
15
15
  withTiming,
16
- withSequence,
17
- withDelay,
18
- withSpring,
19
16
  runOnJS,
20
- interpolate,
21
17
  type SharedValue,
22
18
  } from 'react-native-reanimated';
23
19
  import { useThemeColors, createAuthStyles } from '../styles';
@@ -51,6 +47,38 @@ interface StepBasedScreenState {
51
47
  isTransitioning: boolean;
52
48
  }
53
49
 
50
+ // Individual animated progress dot
51
+ const AnimatedProgressDot: React.FC<{
52
+ isActive: boolean;
53
+ colors: any;
54
+ styles: any;
55
+ }> = ({ isActive, colors, styles }) => {
56
+ const width = useSharedValue(isActive ? 12 : 6);
57
+ const backgroundColor = useSharedValue(isActive ? colors.primary : colors.border);
58
+
59
+ useEffect(() => {
60
+ width.value = withTiming(isActive ? 12 : 6, { duration: 300 });
61
+ backgroundColor.value = withTiming(
62
+ isActive ? colors.primary : colors.border,
63
+ { duration: 300 }
64
+ );
65
+ }, [isActive, colors.primary, colors.border, width, backgroundColor]);
66
+
67
+ const animatedStyle = useAnimatedStyle(() => ({
68
+ width: width.value,
69
+ backgroundColor: backgroundColor.value,
70
+ }));
71
+
72
+ return (
73
+ <Animated.View
74
+ style={[
75
+ styles.progressDot,
76
+ animatedStyle,
77
+ ]}
78
+ />
79
+ );
80
+ };
81
+
54
82
  // Progress indicator component
55
83
  const ProgressIndicator: React.FC<{
56
84
  currentStep: number;
@@ -60,14 +88,11 @@ const ProgressIndicator: React.FC<{
60
88
  }> = ({ currentStep, totalSteps, colors, styles }) => (
61
89
  <View style={styles.progressContainer}>
62
90
  {Array.from({ length: totalSteps }, (_, index) => (
63
- <View
91
+ <AnimatedProgressDot
64
92
  key={index}
65
- style={[
66
- styles.progressDot,
67
- currentStep === index
68
- ? { backgroundColor: colors.primary, width: 24 }
69
- : { backgroundColor: colors.border }
70
- ]}
93
+ isActive={currentStep === index}
94
+ colors={colors}
95
+ styles={styles}
71
96
  />
72
97
  ))}
73
98
  </View>
@@ -183,6 +208,20 @@ const StepBasedScreen: React.FC<StepBasedScreenProps> = ({
183
208
  fontWeight: '600' as const,
184
209
  textDecorationLine: 'underline' as const,
185
210
  },
211
+ progressContainer: {
212
+ flexDirection: 'row' as const,
213
+ width: '100%',
214
+ justifyContent: 'center' as const,
215
+ marginTop: 24, // Space for bottom sheet handle (~20px) + small buffer
216
+ marginBottom: 24, // Equal spacing below dots
217
+ },
218
+ progressDot: {
219
+ height: 6,
220
+ width: 6,
221
+ borderRadius: 3,
222
+ marginHorizontal: 3,
223
+ backgroundColor: colors.border,
224
+ },
186
225
  }), [colors, theme]);
187
226
 
188
227
  // State management
@@ -231,13 +270,6 @@ const StepBasedScreen: React.FC<StepBasedScreenProps> = ({
231
270
 
232
271
  setState(prev => ({ ...prev, isTransitioning: true }));
233
272
 
234
- // Scale down current content
235
- scaleAnim.value = withSequence(
236
- withTiming(0.95, { duration: 150 }),
237
- withTiming(0.95, { duration: 50 })
238
- );
239
-
240
- // Define a JS function for runOnJS to avoid inline closures
241
273
  const applyStepChange = (targetStep: number, totalSteps: number) => {
242
274
  setState(prev => ({
243
275
  ...prev,
@@ -245,33 +277,24 @@ const StepBasedScreen: React.FC<StepBasedScreenProps> = ({
245
277
  isTransitioning: false,
246
278
  }));
247
279
  onStepChangeRef.current?.(targetStep, totalSteps);
280
+
281
+ // Prepare next step animation
282
+ fadeAnim.value = 0;
283
+ scaleAnim.value = 0.98;
284
+ slideAnim.value = 0;
285
+
286
+ fadeAnim.value = withTiming(1, { duration: 220 });
287
+ scaleAnim.value = withTiming(1, { duration: 220 });
248
288
  };
249
289
 
250
- fadeAnim.value = withSequence(
251
- withTiming(0, { duration: 200 }),
252
- withTiming(0, { duration: 50 }, (finished) => {
253
- if (finished) {
254
- // Call back to JS thread correctly
255
- runOnJS(applyStepChange)(nextStep, steps.length);
256
-
257
- // Reset animations with proper timing
258
- slideAnim.value = withDelay(16, withTiming(-50, { duration: 0 }));
259
- scaleAnim.value = withDelay(16, withTiming(0.95, { duration: 0 }));
260
-
261
- // Animate in new content
262
- fadeAnim.value = withDelay(16, withTiming(1, { duration: 300 }));
263
- slideAnim.value = withDelay(16, withSpring(0, {
264
- damping: 15,
265
- stiffness: 200,
266
- }));
267
- scaleAnim.value = withDelay(16, withSpring(1, {
268
- damping: 15,
269
- stiffness: 200,
270
- }));
271
- }
272
- })
273
- );
274
- }, [enableAnimations, steps.length]);
290
+ // Animate current step out
291
+ scaleAnim.value = withTiming(0.98, { duration: 180 });
292
+ fadeAnim.value = withTiming(0, { duration: 180 }, (finished) => {
293
+ if (finished) {
294
+ runOnJS(applyStepChange)(nextStep, steps.length);
295
+ }
296
+ });
297
+ }, [enableAnimations, steps.length, fadeAnim, scaleAnim, slideAnim]);
275
298
 
276
299
  // Navigation functions
277
300
  const nextStep = useCallback(() => {
@@ -33,17 +33,6 @@ const GroupedPillButtons: React.FC<GroupedPillButtonsProps> = ({
33
33
  minWidth: 70,
34
34
  borderWidth: 1,
35
35
  flexShrink: 0,
36
- ...Platform.select({
37
- web: {
38
- boxShadow: '0 2px 4px rgba(0,0,0,0.1)',
39
- },
40
- default: {
41
- shadowOffset: { width: 0, height: 2 },
42
- shadowOpacity: 0.1,
43
- shadowRadius: 4,
44
- elevation: 2,
45
- }
46
- }),
47
36
  };
48
37
 
49
38
  // Determine border radius based on position
@@ -85,28 +74,21 @@ const GroupedPillButtons: React.FC<GroupedPillButtonsProps> = ({
85
74
  // Determine colors based on variant
86
75
  let backgroundColor = 'transparent';
87
76
  let borderColor = colors.border;
88
- let shadowColor = colors.border;
89
- let textColor = colors.text;
77
+ const isDisabled = button.disabled || button.loading;
90
78
 
91
79
  switch (button.variant) {
92
80
  case 'primary':
93
- backgroundColor = colors.primary;
94
- borderColor = colors.primary;
95
- shadowColor = colors.primary;
96
- textColor = '#FFFFFF';
81
+ backgroundColor = isDisabled ? '#CCCCCC' : colors.primary;
82
+ borderColor = isDisabled ? '#CCCCCC' : colors.primary;
97
83
  break;
98
84
  case 'secondary':
99
- backgroundColor = colors.secondary || colors.primary;
100
- borderColor = colors.secondary || colors.primary;
101
- shadowColor = colors.secondary || colors.primary;
102
- textColor = '#FFFFFF';
85
+ backgroundColor = isDisabled ? '#CCCCCC' : (colors.secondary || colors.primary);
86
+ borderColor = isDisabled ? '#CCCCCC' : (colors.secondary || colors.primary);
103
87
  break;
104
88
  case 'transparent':
105
89
  default:
106
90
  backgroundColor = 'transparent';
107
- borderColor = colors.border;
108
- shadowColor = colors.border;
109
- textColor = colors.text;
91
+ borderColor = isDisabled ? '#CCCCCC' : colors.border;
110
92
  break;
111
93
  }
112
94
 
@@ -115,7 +97,7 @@ const GroupedPillButtons: React.FC<GroupedPillButtonsProps> = ({
115
97
  ...borderRadius,
116
98
  backgroundColor,
117
99
  borderColor,
118
- shadowColor,
100
+ opacity: isDisabled ? 0.6 : 1,
119
101
  };
120
102
  };
121
103
 
@@ -127,15 +109,17 @@ const GroupedPillButtons: React.FC<GroupedPillButtonsProps> = ({
127
109
  flexShrink: 1,
128
110
  };
129
111
 
112
+ const isDisabled = button.disabled || button.loading;
130
113
  let textColor = colors.text;
114
+
131
115
  switch (button.variant) {
132
116
  case 'primary':
133
117
  case 'secondary':
134
- textColor = '#FFFFFF';
118
+ textColor = isDisabled ? '#999999' : '#FFFFFF';
135
119
  break;
136
120
  case 'transparent':
137
121
  default:
138
- textColor = colors.text;
122
+ textColor = isDisabled ? '#999999' : colors.text;
139
123
  break;
140
124
  }
141
125
 
@@ -147,13 +131,15 @@ const GroupedPillButtons: React.FC<GroupedPillButtonsProps> = ({
147
131
  };
148
132
 
149
133
  const getIconColor = (button: ButtonConfig, colors: any) => {
134
+ const isDisabled = button.disabled || button.loading;
135
+
150
136
  switch (button.variant) {
151
137
  case 'primary':
152
138
  case 'secondary':
153
- return '#FFFFFF';
139
+ return isDisabled ? '#999999' : '#FFFFFF';
154
140
  case 'transparent':
155
141
  default:
156
- return colors.text;
142
+ return isDisabled ? '#999999' : colors.text;
157
143
  }
158
144
  };
159
145
 
@@ -252,8 +238,6 @@ const styles = StyleSheet.create({
252
238
  container: {
253
239
  flexDirection: 'row',
254
240
  justifyContent: 'flex-end',
255
- marginTop: 16,
256
- marginBottom: 8,
257
241
  width: '100%',
258
242
  },
259
243
  });
@@ -90,8 +90,8 @@ const styles = StyleSheet.create({
90
90
  flexDirection: 'row',
91
91
  justifyContent: 'center',
92
92
  gap: 12,
93
- marginBottom: 24,
94
- marginTop: 8,
93
+ marginBottom: 0,
94
+ marginTop: 0,
95
95
  },
96
96
  pinInput: {
97
97
  width: 44,