@oxyhq/services 11.0.0 → 11.1.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 (434) hide show
  1. package/lib/commonjs/index.js +7 -0
  2. package/lib/commonjs/index.js.map +1 -1
  3. package/lib/commonjs/ui/components/AccountMenu.js +9 -5
  4. package/lib/commonjs/ui/components/AccountMenu.js.map +1 -1
  5. package/lib/commonjs/ui/components/AnotherDeviceQR.js +51 -56
  6. package/lib/commonjs/ui/components/AnotherDeviceQR.js.map +1 -1
  7. package/lib/commonjs/ui/components/BottomSheetRouter.js +1 -0
  8. package/lib/commonjs/ui/components/BottomSheetRouter.js.map +1 -1
  9. package/lib/commonjs/ui/components/FollowButton.js +18 -5
  10. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  11. package/lib/commonjs/ui/components/OxyLogo.js +1 -1
  12. package/lib/commonjs/ui/components/OxyLogo.js.map +1 -1
  13. package/lib/commonjs/ui/components/OxyProvider.js +23 -7
  14. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  15. package/lib/commonjs/ui/components/SignInModal.js +20 -1
  16. package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
  17. package/lib/commonjs/ui/components/fileManagement/FileViewer.js +19 -9
  18. package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
  19. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +4 -2
  20. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
  21. package/lib/commonjs/ui/context/OxyContext.js +153 -19
  22. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  23. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +6 -17
  24. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  25. package/lib/commonjs/ui/hooks/mutations/mutationFactory.js +5 -5
  26. package/lib/commonjs/ui/hooks/mutations/mutationFactory.js.map +1 -1
  27. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +38 -38
  28. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  29. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js +2 -2
  30. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  31. package/lib/commonjs/ui/hooks/queries/queryKeys.js +3 -3
  32. package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -1
  33. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +1 -1
  34. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
  35. package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js +16 -12
  36. package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  37. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +10 -6
  38. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -1
  39. package/lib/commonjs/ui/hooks/queryClient.js +6 -5
  40. package/lib/commonjs/ui/hooks/queryClient.js.map +1 -1
  41. package/lib/commonjs/ui/hooks/useOxyAuthSession.js +40 -2
  42. package/lib/commonjs/ui/hooks/useOxyAuthSession.js.map +1 -1
  43. package/lib/commonjs/ui/hooks/useProfileEditing.js +21 -0
  44. package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -1
  45. package/lib/commonjs/ui/hooks/useSessionManagement.js +3 -3
  46. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  47. package/lib/commonjs/ui/screens/AccountVerificationScreen.js +100 -108
  48. package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
  49. package/lib/commonjs/ui/screens/AppInfoScreen.js +227 -273
  50. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  51. package/lib/commonjs/ui/screens/AvatarCropScreen.js +10 -4
  52. package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -1
  53. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js +20 -37
  54. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js.map +1 -1
  55. package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js +89 -201
  56. package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js.map +1 -1
  57. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +80 -208
  58. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
  59. package/lib/commonjs/ui/screens/FAQScreen.js +56 -208
  60. package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -1
  61. package/lib/commonjs/ui/screens/FeedbackScreen.js +303 -352
  62. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  63. package/lib/commonjs/ui/screens/FileManagementScreen.js +20 -20
  64. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  65. package/lib/commonjs/ui/screens/HelpSupportScreen.js +77 -89
  66. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
  67. package/lib/commonjs/ui/screens/HistoryViewScreen.js +43 -58
  68. package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
  69. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +67 -90
  70. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  71. package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js +77 -177
  72. package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
  73. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +113 -107
  74. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
  75. package/lib/commonjs/ui/screens/ManageAccountScreen.js +55 -114
  76. package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
  77. package/lib/commonjs/ui/screens/NotificationsScreen.js +67 -85
  78. package/lib/commonjs/ui/screens/NotificationsScreen.js.map +1 -1
  79. package/lib/commonjs/ui/screens/OxyAuthScreen.js +71 -135
  80. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  81. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +15 -9
  82. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  83. package/lib/commonjs/ui/screens/PreferencesScreen.js +65 -83
  84. package/lib/commonjs/ui/screens/PreferencesScreen.js.map +1 -1
  85. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +378 -1023
  86. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  87. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +294 -242
  88. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  89. package/lib/commonjs/ui/screens/ProfileScreen.js +194 -333
  90. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  91. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +57 -97
  92. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
  93. package/lib/commonjs/ui/screens/SearchSettingsScreen.js +41 -41
  94. package/lib/commonjs/ui/screens/SearchSettingsScreen.js.map +1 -1
  95. package/lib/commonjs/ui/screens/UserLinksScreen.js +17 -24
  96. package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -1
  97. package/lib/commonjs/ui/screens/UserListScreen.js +83 -214
  98. package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
  99. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +115 -77
  100. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  101. package/lib/commonjs/ui/screens/trust/TrustAboutScreen.js +70 -57
  102. package/lib/commonjs/ui/screens/trust/TrustAboutScreen.js.map +1 -1
  103. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js +136 -332
  104. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  105. package/lib/commonjs/ui/screens/trust/TrustFAQScreen.js +47 -137
  106. package/lib/commonjs/ui/screens/trust/TrustFAQScreen.js.map +1 -1
  107. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js +182 -115
  108. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  109. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js +138 -214
  110. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  111. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js +54 -92
  112. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  113. package/lib/commonjs/ui/utils/activeAuthuser.js +15 -9
  114. package/lib/commonjs/ui/utils/activeAuthuser.js.map +1 -1
  115. package/lib/commonjs/ui/utils/avatarUtils.js +1 -1
  116. package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
  117. package/lib/module/index.js +2 -0
  118. package/lib/module/index.js.map +1 -1
  119. package/lib/module/ui/components/AccountMenu.js +10 -6
  120. package/lib/module/ui/components/AccountMenu.js.map +1 -1
  121. package/lib/module/ui/components/AnotherDeviceQR.js +50 -56
  122. package/lib/module/ui/components/AnotherDeviceQR.js.map +1 -1
  123. package/lib/module/ui/components/BottomSheetRouter.js +2 -1
  124. package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
  125. package/lib/module/ui/components/FollowButton.js +18 -5
  126. package/lib/module/ui/components/FollowButton.js.map +1 -1
  127. package/lib/module/ui/components/OxyLogo.js +1 -1
  128. package/lib/module/ui/components/OxyLogo.js.map +1 -1
  129. package/lib/module/ui/components/OxyProvider.js +23 -7
  130. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  131. package/lib/module/ui/components/SignInModal.js +20 -1
  132. package/lib/module/ui/components/SignInModal.js.map +1 -1
  133. package/lib/module/ui/components/fileManagement/FileViewer.js +19 -9
  134. package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
  135. package/lib/module/ui/components/fileManagement/UploadPreview.js +4 -2
  136. package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
  137. package/lib/module/ui/context/OxyContext.js +154 -20
  138. package/lib/module/ui/context/OxyContext.js.map +1 -1
  139. package/lib/module/ui/context/hooks/useAuthOperations.js +6 -17
  140. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  141. package/lib/module/ui/hooks/mutations/mutationFactory.js +5 -5
  142. package/lib/module/ui/hooks/mutations/mutationFactory.js.map +1 -1
  143. package/lib/module/ui/hooks/mutations/useAccountMutations.js +38 -38
  144. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  145. package/lib/module/ui/hooks/mutations/useServicesMutations.js +2 -2
  146. package/lib/module/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  147. package/lib/module/ui/hooks/queries/queryKeys.js +3 -3
  148. package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -1
  149. package/lib/module/ui/hooks/queries/useAccountQueries.js +1 -1
  150. package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
  151. package/lib/module/ui/hooks/queries/usePaymentQueries.js +16 -12
  152. package/lib/module/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  153. package/lib/module/ui/hooks/queries/useServicesQueries.js +9 -6
  154. package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -1
  155. package/lib/module/ui/hooks/queryClient.js +6 -5
  156. package/lib/module/ui/hooks/queryClient.js.map +1 -1
  157. package/lib/module/ui/hooks/useOxyAuthSession.js +40 -2
  158. package/lib/module/ui/hooks/useOxyAuthSession.js.map +1 -1
  159. package/lib/module/ui/hooks/useProfileEditing.js +21 -0
  160. package/lib/module/ui/hooks/useProfileEditing.js.map +1 -1
  161. package/lib/module/ui/hooks/useSessionManagement.js +4 -3
  162. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  163. package/lib/module/ui/screens/AccountVerificationScreen.js +101 -109
  164. package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
  165. package/lib/module/ui/screens/AppInfoScreen.js +228 -275
  166. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  167. package/lib/module/ui/screens/AvatarCropScreen.js +10 -4
  168. package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -1
  169. package/lib/module/ui/screens/ConnectedAppsScreen.js +19 -39
  170. package/lib/module/ui/screens/ConnectedAppsScreen.js.map +1 -1
  171. package/lib/module/ui/screens/CreateManagedAccountScreen.js +90 -202
  172. package/lib/module/ui/screens/CreateManagedAccountScreen.js.map +1 -1
  173. package/lib/module/ui/screens/EditProfileFieldScreen.js +77 -205
  174. package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
  175. package/lib/module/ui/screens/FAQScreen.js +55 -207
  176. package/lib/module/ui/screens/FAQScreen.js.map +1 -1
  177. package/lib/module/ui/screens/FeedbackScreen.js +301 -350
  178. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  179. package/lib/module/ui/screens/FileManagementScreen.js +20 -20
  180. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  181. package/lib/module/ui/screens/HelpSupportScreen.js +78 -90
  182. package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
  183. package/lib/module/ui/screens/HistoryViewScreen.js +44 -59
  184. package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
  185. package/lib/module/ui/screens/LanguageSelectorScreen.js +68 -91
  186. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  187. package/lib/module/ui/screens/LearnMoreUsernamesScreen.js +75 -177
  188. package/lib/module/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
  189. package/lib/module/ui/screens/LegalDocumentsScreen.js +116 -108
  190. package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
  191. package/lib/module/ui/screens/ManageAccountScreen.js +52 -112
  192. package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
  193. package/lib/module/ui/screens/NotificationsScreen.js +68 -86
  194. package/lib/module/ui/screens/NotificationsScreen.js.map +1 -1
  195. package/lib/module/ui/screens/OxyAuthScreen.js +69 -134
  196. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  197. package/lib/module/ui/screens/PaymentGatewayScreen.js +16 -10
  198. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  199. package/lib/module/ui/screens/PreferencesScreen.js +66 -84
  200. package/lib/module/ui/screens/PreferencesScreen.js.map +1 -1
  201. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +366 -1012
  202. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  203. package/lib/module/ui/screens/PrivacySettingsScreen.js +295 -243
  204. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  205. package/lib/module/ui/screens/ProfileScreen.js +192 -331
  206. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  207. package/lib/module/ui/screens/SavesCollectionsScreen.js +58 -98
  208. package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
  209. package/lib/module/ui/screens/SearchSettingsScreen.js +42 -42
  210. package/lib/module/ui/screens/SearchSettingsScreen.js.map +1 -1
  211. package/lib/module/ui/screens/UserLinksScreen.js +18 -25
  212. package/lib/module/ui/screens/UserLinksScreen.js.map +1 -1
  213. package/lib/module/ui/screens/UserListScreen.js +81 -212
  214. package/lib/module/ui/screens/UserListScreen.js.map +1 -1
  215. package/lib/module/ui/screens/WelcomeNewUserScreen.js +114 -76
  216. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  217. package/lib/module/ui/screens/trust/TrustAboutScreen.js +69 -57
  218. package/lib/module/ui/screens/trust/TrustAboutScreen.js.map +1 -1
  219. package/lib/module/ui/screens/trust/TrustCenterScreen.js +135 -332
  220. package/lib/module/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  221. package/lib/module/ui/screens/trust/TrustFAQScreen.js +48 -138
  222. package/lib/module/ui/screens/trust/TrustFAQScreen.js.map +1 -1
  223. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js +184 -117
  224. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  225. package/lib/module/ui/screens/trust/TrustRewardsScreen.js +132 -208
  226. package/lib/module/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  227. package/lib/module/ui/screens/trust/TrustRulesScreen.js +58 -94
  228. package/lib/module/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  229. package/lib/module/ui/utils/activeAuthuser.js +15 -9
  230. package/lib/module/ui/utils/activeAuthuser.js.map +1 -1
  231. package/lib/module/ui/utils/avatarUtils.js +1 -1
  232. package/lib/module/ui/utils/avatarUtils.js.map +1 -1
  233. package/lib/typescript/commonjs/index.d.ts +2 -0
  234. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  235. package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts +2 -0
  236. package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts.map +1 -1
  237. package/lib/typescript/commonjs/ui/components/AnotherDeviceQR.d.ts +12 -2
  238. package/lib/typescript/commonjs/ui/components/AnotherDeviceQR.d.ts.map +1 -1
  239. package/lib/typescript/commonjs/ui/components/BottomSheetRouter.d.ts.map +1 -1
  240. package/lib/typescript/commonjs/ui/components/FollowButton.d.ts.map +1 -1
  241. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts +3 -2
  242. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
  243. package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -1
  244. package/lib/typescript/commonjs/ui/components/TouchableRipple/TouchableRipple.native.d.ts +1 -1
  245. package/lib/typescript/commonjs/ui/components/TouchableRipple/TouchableRipple.native.d.ts.map +1 -1
  246. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +34 -0
  247. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  248. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  249. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +6 -0
  250. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  251. package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts +3 -3
  252. package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  253. package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  254. package/lib/typescript/commonjs/ui/hooks/queryClient.d.ts.map +1 -1
  255. package/lib/typescript/commonjs/ui/hooks/useOxyAuthSession.d.ts +22 -0
  256. package/lib/typescript/commonjs/ui/hooks/useOxyAuthSession.d.ts.map +1 -1
  257. package/lib/typescript/commonjs/ui/hooks/useProfileEditing.d.ts +3 -0
  258. package/lib/typescript/commonjs/ui/hooks/useProfileEditing.d.ts.map +1 -1
  259. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts +2 -1
  260. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
  261. package/lib/typescript/commonjs/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
  262. package/lib/typescript/commonjs/ui/screens/AppInfoScreen.d.ts.map +1 -1
  263. package/lib/typescript/commonjs/ui/screens/AvatarCropScreen.d.ts.map +1 -1
  264. package/lib/typescript/commonjs/ui/screens/ConnectedAppsScreen.d.ts.map +1 -1
  265. package/lib/typescript/commonjs/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -1
  266. package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  267. package/lib/typescript/commonjs/ui/screens/FAQScreen.d.ts.map +1 -1
  268. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +1 -1
  269. package/lib/typescript/commonjs/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  270. package/lib/typescript/commonjs/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  271. package/lib/typescript/commonjs/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  272. package/lib/typescript/commonjs/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -1
  273. package/lib/typescript/commonjs/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
  274. package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  275. package/lib/typescript/commonjs/ui/screens/NotificationsScreen.d.ts.map +1 -1
  276. package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  277. package/lib/typescript/commonjs/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  278. package/lib/typescript/commonjs/ui/screens/PreferencesScreen.d.ts.map +1 -1
  279. package/lib/typescript/commonjs/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  280. package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  281. package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
  282. package/lib/typescript/commonjs/ui/screens/SavesCollectionsScreen.d.ts.map +1 -1
  283. package/lib/typescript/commonjs/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  284. package/lib/typescript/commonjs/ui/screens/UserLinksScreen.d.ts.map +1 -1
  285. package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts.map +1 -1
  286. package/lib/typescript/commonjs/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  287. package/lib/typescript/commonjs/ui/screens/trust/TrustAboutScreen.d.ts.map +1 -1
  288. package/lib/typescript/commonjs/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  289. package/lib/typescript/commonjs/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -1
  290. package/lib/typescript/commonjs/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  291. package/lib/typescript/commonjs/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  292. package/lib/typescript/commonjs/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  293. package/lib/typescript/commonjs/ui/utils/activeAuthuser.d.ts.map +1 -1
  294. package/lib/typescript/module/index.d.ts +2 -0
  295. package/lib/typescript/module/index.d.ts.map +1 -1
  296. package/lib/typescript/module/ui/components/AccountMenu.d.ts +2 -0
  297. package/lib/typescript/module/ui/components/AccountMenu.d.ts.map +1 -1
  298. package/lib/typescript/module/ui/components/AnotherDeviceQR.d.ts +12 -2
  299. package/lib/typescript/module/ui/components/AnotherDeviceQR.d.ts.map +1 -1
  300. package/lib/typescript/module/ui/components/BottomSheetRouter.d.ts.map +1 -1
  301. package/lib/typescript/module/ui/components/FollowButton.d.ts.map +1 -1
  302. package/lib/typescript/module/ui/components/OxyProvider.d.ts +3 -2
  303. package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
  304. package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -1
  305. package/lib/typescript/module/ui/components/TouchableRipple/TouchableRipple.native.d.ts +1 -1
  306. package/lib/typescript/module/ui/components/TouchableRipple/TouchableRipple.native.d.ts.map +1 -1
  307. package/lib/typescript/module/ui/context/OxyContext.d.ts +34 -0
  308. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  309. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  310. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +6 -0
  311. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  312. package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts +3 -3
  313. package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  314. package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  315. package/lib/typescript/module/ui/hooks/queryClient.d.ts.map +1 -1
  316. package/lib/typescript/module/ui/hooks/useOxyAuthSession.d.ts +22 -0
  317. package/lib/typescript/module/ui/hooks/useOxyAuthSession.d.ts.map +1 -1
  318. package/lib/typescript/module/ui/hooks/useProfileEditing.d.ts +3 -0
  319. package/lib/typescript/module/ui/hooks/useProfileEditing.d.ts.map +1 -1
  320. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts +2 -1
  321. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
  322. package/lib/typescript/module/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
  323. package/lib/typescript/module/ui/screens/AppInfoScreen.d.ts.map +1 -1
  324. package/lib/typescript/module/ui/screens/AvatarCropScreen.d.ts.map +1 -1
  325. package/lib/typescript/module/ui/screens/ConnectedAppsScreen.d.ts.map +1 -1
  326. package/lib/typescript/module/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -1
  327. package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  328. package/lib/typescript/module/ui/screens/FAQScreen.d.ts.map +1 -1
  329. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +1 -1
  330. package/lib/typescript/module/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  331. package/lib/typescript/module/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  332. package/lib/typescript/module/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  333. package/lib/typescript/module/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -1
  334. package/lib/typescript/module/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
  335. package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  336. package/lib/typescript/module/ui/screens/NotificationsScreen.d.ts.map +1 -1
  337. package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  338. package/lib/typescript/module/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  339. package/lib/typescript/module/ui/screens/PreferencesScreen.d.ts.map +1 -1
  340. package/lib/typescript/module/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  341. package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  342. package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
  343. package/lib/typescript/module/ui/screens/SavesCollectionsScreen.d.ts.map +1 -1
  344. package/lib/typescript/module/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  345. package/lib/typescript/module/ui/screens/UserLinksScreen.d.ts.map +1 -1
  346. package/lib/typescript/module/ui/screens/UserListScreen.d.ts.map +1 -1
  347. package/lib/typescript/module/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  348. package/lib/typescript/module/ui/screens/trust/TrustAboutScreen.d.ts.map +1 -1
  349. package/lib/typescript/module/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  350. package/lib/typescript/module/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -1
  351. package/lib/typescript/module/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  352. package/lib/typescript/module/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  353. package/lib/typescript/module/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  354. package/lib/typescript/module/ui/utils/activeAuthuser.d.ts.map +1 -1
  355. package/lib/typescript/types/expo-haptics.d.ts +42 -0
  356. package/package.json +8 -3
  357. package/src/index.ts +2 -0
  358. package/src/types/expo-haptics.d.ts +42 -0
  359. package/src/ui/components/AccountMenu.tsx +11 -5
  360. package/src/ui/components/AnotherDeviceQR.tsx +53 -45
  361. package/src/ui/components/BottomSheetRouter.tsx +2 -1
  362. package/src/ui/components/FollowButton.tsx +24 -5
  363. package/src/ui/components/OxyLogo.tsx +1 -1
  364. package/src/ui/components/OxyProvider.tsx +22 -8
  365. package/src/ui/components/SignInModal.tsx +21 -2
  366. package/src/ui/components/TouchableRipple/TouchableRipple.native.tsx +1 -1
  367. package/src/ui/components/fileManagement/FileViewer.tsx +9 -9
  368. package/src/ui/components/fileManagement/UploadPreview.tsx +2 -2
  369. package/src/ui/context/OxyContext.tsx +178 -21
  370. package/src/ui/context/hooks/useAuthOperations.ts +6 -17
  371. package/src/ui/hooks/mutations/mutationFactory.ts +5 -5
  372. package/src/ui/hooks/mutations/useAccountMutations.ts +38 -38
  373. package/src/ui/hooks/mutations/useServicesMutations.ts +2 -2
  374. package/src/ui/hooks/queries/queryKeys.ts +6 -3
  375. package/src/ui/hooks/queries/useAccountQueries.ts +1 -1
  376. package/src/ui/hooks/queries/usePaymentQueries.ts +12 -12
  377. package/src/ui/hooks/queries/useServicesQueries.ts +9 -6
  378. package/src/ui/hooks/queryClient.ts +5 -5
  379. package/src/ui/hooks/useOxyAuthSession.ts +76 -2
  380. package/src/ui/hooks/useProfileEditing.ts +24 -0
  381. package/src/ui/hooks/useSessionManagement.ts +9 -6
  382. package/src/ui/screens/AccountVerificationScreen.tsx +101 -113
  383. package/src/ui/screens/AppInfoScreen.tsx +200 -238
  384. package/src/ui/screens/AvatarCropScreen.tsx +17 -4
  385. package/src/ui/screens/ConnectedAppsScreen.tsx +16 -34
  386. package/src/ui/screens/CreateManagedAccountScreen.tsx +94 -170
  387. package/src/ui/screens/EditProfileFieldScreen.tsx +77 -190
  388. package/src/ui/screens/FAQScreen.tsx +77 -208
  389. package/src/ui/screens/FeedbackScreen.tsx +330 -239
  390. package/src/ui/screens/FileManagementScreen.tsx +20 -20
  391. package/src/ui/screens/HelpSupportScreen.tsx +67 -82
  392. package/src/ui/screens/HistoryViewScreen.tsx +32 -38
  393. package/src/ui/screens/LanguageSelectorScreen.tsx +79 -93
  394. package/src/ui/screens/LearnMoreUsernamesScreen.tsx +81 -164
  395. package/src/ui/screens/LegalDocumentsScreen.tsx +184 -123
  396. package/src/ui/screens/ManageAccountScreen.tsx +48 -114
  397. package/src/ui/screens/NotificationsScreen.tsx +107 -106
  398. package/src/ui/screens/OxyAuthScreen.tsx +76 -109
  399. package/src/ui/screens/PaymentGatewayScreen.tsx +16 -7
  400. package/src/ui/screens/PreferencesScreen.tsx +96 -116
  401. package/src/ui/screens/PremiumSubscriptionScreen.tsx +419 -872
  402. package/src/ui/screens/PrivacySettingsScreen.tsx +203 -185
  403. package/src/ui/screens/ProfileScreen.tsx +162 -246
  404. package/src/ui/screens/SavesCollectionsScreen.tsx +78 -125
  405. package/src/ui/screens/SearchSettingsScreen.tsx +52 -41
  406. package/src/ui/screens/UserLinksScreen.tsx +18 -25
  407. package/src/ui/screens/UserListScreen.tsx +95 -188
  408. package/src/ui/screens/WelcomeNewUserScreen.tsx +109 -36
  409. package/src/ui/screens/trust/TrustAboutScreen.tsx +52 -41
  410. package/src/ui/screens/trust/TrustCenterScreen.tsx +184 -222
  411. package/src/ui/screens/trust/TrustFAQScreen.tsx +64 -124
  412. package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +190 -67
  413. package/src/ui/screens/trust/TrustRewardsScreen.tsx +147 -182
  414. package/src/ui/screens/trust/TrustRulesScreen.tsx +77 -50
  415. package/src/ui/utils/activeAuthuser.ts +15 -9
  416. package/src/ui/utils/avatarUtils.ts +1 -1
  417. package/lib/commonjs/ui/components/feedback/FormInput.js +0 -72
  418. package/lib/commonjs/ui/components/feedback/FormInput.js.map +0 -1
  419. package/lib/commonjs/ui/components/feedback/feedbackStyles.js +0 -261
  420. package/lib/commonjs/ui/components/feedback/feedbackStyles.js.map +0 -1
  421. package/lib/module/ui/components/feedback/FormInput.js +0 -67
  422. package/lib/module/ui/components/feedback/FormInput.js.map +0 -1
  423. package/lib/module/ui/components/feedback/feedbackStyles.js +0 -256
  424. package/lib/module/ui/components/feedback/feedbackStyles.js.map +0 -1
  425. package/lib/typescript/commonjs/ui/components/feedback/FormInput.d.ts +0 -20
  426. package/lib/typescript/commonjs/ui/components/feedback/FormInput.d.ts.map +0 -1
  427. package/lib/typescript/commonjs/ui/components/feedback/feedbackStyles.d.ts +0 -279
  428. package/lib/typescript/commonjs/ui/components/feedback/feedbackStyles.d.ts.map +0 -1
  429. package/lib/typescript/module/ui/components/feedback/FormInput.d.ts +0 -20
  430. package/lib/typescript/module/ui/components/feedback/FormInput.d.ts.map +0 -1
  431. package/lib/typescript/module/ui/components/feedback/feedbackStyles.d.ts +0 -279
  432. package/lib/typescript/module/ui/components/feedback/feedbackStyles.d.ts.map +0 -1
  433. package/src/ui/components/feedback/FormInput.tsx +0 -84
  434. package/src/ui/components/feedback/feedbackStyles.ts +0 -246
@@ -1,5 +1,5 @@
1
1
  import React, { useCallback, useMemo } from 'react';
2
- import { View, StyleSheet, ScrollView } from 'react-native';
2
+ import { View, ScrollView } from 'react-native';
3
3
  import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
4
4
  import { Switch } from '@oxyhq/bloom/switch';
5
5
  import { useTheme } from '@oxyhq/bloom/theme';
@@ -12,9 +12,6 @@ import { useOxy } from '../context/OxyContext';
12
12
  import { useCurrentUser } from '../hooks/queries/useAccountQueries';
13
13
  import { useUpdateNotificationPreferences } from '../hooks/mutations/useAccountMutations';
14
14
  import { useSettingToggles } from '../hooks/useSettingToggle';
15
- import { useColorScheme } from '../hooks/useColorScheme';
16
- import { Colors } from '../constants/theme';
17
- import { normalizeColorScheme, normalizeTheme } from '@oxyhq/core';
18
15
 
19
16
  interface NotificationToggleValues {
20
17
  pushEnabled: boolean;
@@ -38,14 +35,9 @@ const DEFAULT_VALUES: NotificationToggleValues = {
38
35
  * from the current user's `notificationPreferences` field, defaulting to the
39
36
  * platform defaults when the field has never been set.
40
37
  */
41
- const NotificationsScreen: React.FC<BaseScreenProps> = ({ onClose, theme, goBack }) => {
38
+ const NotificationsScreen: React.FC<BaseScreenProps> = ({ onClose, goBack }) => {
42
39
  const bloomTheme = useTheme();
43
40
  const { t } = useI18n();
44
- const colorScheme = useColorScheme();
45
- const palette = useMemo(
46
- () => Colors[normalizeColorScheme(colorScheme, normalizeTheme(theme))],
47
- [colorScheme, theme],
48
- );
49
41
  const { isAuthenticated } = useOxy();
50
42
  const { data: user } = useCurrentUser({ enabled: isAuthenticated });
51
43
  const updateMutation = useUpdateNotificationPreferences();
@@ -77,113 +69,122 @@ const NotificationsScreen: React.FC<BaseScreenProps> = ({ onClose, theme, goBack
77
69
  const isSaving = savingKeys.size > 0;
78
70
 
79
71
  return (
80
- <View style={[styles.container, { backgroundColor: bloomTheme.colors.background }]}>
72
+ <View className="flex-1 bg-bg">
81
73
  <Header
82
74
  title={t('notifications.title') || 'Notifications'}
83
75
  onBack={goBack || onClose}
84
76
  variant="minimal"
85
77
  elevation="subtle"
86
78
  />
87
- <ScrollView style={styles.scroll} contentContainerStyle={styles.scrollContent}>
88
- <SettingsListGroup
89
- title={t('notifications.sections.channels') || 'Channels'}
90
- >
91
- <SettingsListItem
92
- icon={<SettingsIcon name="bell" color={palette.iconPersonalInfo} />}
93
- title={t('notifications.items.push.title') || 'Push notifications'}
94
- description={
95
- t('notifications.items.push.subtitle')
96
- || 'Real-time alerts on your devices'
97
- }
98
- rightElement={
99
- <Switch
100
- value={values.pushEnabled}
101
- onValueChange={() => toggle('pushEnabled')}
102
- disabled={isSaving}
103
- />
104
- }
105
- showChevron={false}
106
- />
107
- <SettingsListItem
108
- icon={<SettingsIcon name="email" color={palette.iconData} />}
109
- title={t('notifications.items.emailDigest.title') || 'Email digest'}
110
- description={
111
- t('notifications.items.emailDigest.subtitle')
112
- || 'Periodic summary of your account activity'
113
- }
114
- rightElement={
115
- <Switch
116
- value={values.emailDigest}
117
- onValueChange={() => toggle('emailDigest')}
118
- disabled={isSaving}
119
- />
120
- }
121
- showChevron={false}
122
- />
123
- </SettingsListGroup>
79
+ <ScrollView className="flex-1">
80
+ <View className="px-screen-margin pb-space-24">
81
+ <SettingsListGroup
82
+ title={t('notifications.sections.channels') || 'Channels'}
83
+ >
84
+ <SettingsListItem
85
+ icon={
86
+ <SettingsIcon
87
+ name="bell"
88
+ color={bloomTheme.colors.primary}
89
+ />
90
+ }
91
+ title={t('notifications.items.push.title') || 'Push notifications'}
92
+ description={
93
+ t('notifications.items.push.subtitle')
94
+ || 'Real-time alerts on your devices'
95
+ }
96
+ rightElement={
97
+ <Switch
98
+ value={values.pushEnabled}
99
+ onValueChange={() => toggle('pushEnabled')}
100
+ disabled={isSaving}
101
+ />
102
+ }
103
+ showChevron={false}
104
+ />
105
+ <SettingsListItem
106
+ icon={
107
+ <SettingsIcon
108
+ name="email"
109
+ color={bloomTheme.colors.info}
110
+ />
111
+ }
112
+ title={t('notifications.items.emailDigest.title') || 'Email digest'}
113
+ description={
114
+ t('notifications.items.emailDigest.subtitle')
115
+ || 'Periodic summary of your account activity'
116
+ }
117
+ rightElement={
118
+ <Switch
119
+ value={values.emailDigest}
120
+ onValueChange={() => toggle('emailDigest')}
121
+ disabled={isSaving}
122
+ />
123
+ }
124
+ showChevron={false}
125
+ />
126
+ </SettingsListGroup>
124
127
 
125
- <SettingsListGroup
126
- title={t('notifications.sections.alerts') || 'Alerts'}
127
- >
128
- <SettingsListItem
129
- icon={<SettingsIcon name="shield-check" color={palette.iconSecurity} />}
130
- title={
131
- t('notifications.items.securityAlerts.title') || 'Security alerts'
132
- }
133
- description={
134
- t('notifications.items.securityAlerts.subtitle')
135
- || 'Sign-ins, recovery codes, and key changes'
136
- }
137
- rightElement={
138
- <Switch
139
- value={values.securityAlerts}
140
- onValueChange={() => toggle('securityAlerts')}
141
- disabled={isSaving}
142
- />
143
- }
144
- showChevron={false}
145
- />
146
- </SettingsListGroup>
128
+ <SettingsListGroup
129
+ title={t('notifications.sections.alerts') || 'Alerts'}
130
+ >
131
+ <SettingsListItem
132
+ icon={
133
+ <SettingsIcon
134
+ name="shield-check"
135
+ color={bloomTheme.colors.success}
136
+ />
137
+ }
138
+ title={
139
+ t('notifications.items.securityAlerts.title') || 'Security alerts'
140
+ }
141
+ description={
142
+ t('notifications.items.securityAlerts.subtitle')
143
+ || 'Sign-ins, recovery codes, and key changes'
144
+ }
145
+ rightElement={
146
+ <Switch
147
+ value={values.securityAlerts}
148
+ onValueChange={() => toggle('securityAlerts')}
149
+ disabled={isSaving}
150
+ />
151
+ }
152
+ showChevron={false}
153
+ />
154
+ </SettingsListGroup>
147
155
 
148
- <SettingsListGroup
149
- title={t('notifications.sections.marketing') || 'Marketing'}
150
- >
151
- <SettingsListItem
152
- icon={<SettingsIcon name="megaphone" color={palette.iconSharing} />}
153
- title={
154
- t('notifications.items.marketingEmails.title')
155
- || 'Marketing emails'
156
- }
157
- description={
158
- t('notifications.items.marketingEmails.subtitle')
159
- || 'Product news and occasional offers'
160
- }
161
- rightElement={
162
- <Switch
163
- value={values.marketingEmails}
164
- onValueChange={() => toggle('marketingEmails')}
165
- disabled={isSaving}
166
- />
167
- }
168
- showChevron={false}
169
- />
170
- </SettingsListGroup>
156
+ <SettingsListGroup
157
+ title={t('notifications.sections.marketing') || 'Marketing'}
158
+ >
159
+ <SettingsListItem
160
+ icon={
161
+ <SettingsIcon
162
+ name="megaphone"
163
+ color={bloomTheme.colors.secondary}
164
+ />
165
+ }
166
+ title={
167
+ t('notifications.items.marketingEmails.title')
168
+ || 'Marketing emails'
169
+ }
170
+ description={
171
+ t('notifications.items.marketingEmails.subtitle')
172
+ || 'Product news and occasional offers'
173
+ }
174
+ rightElement={
175
+ <Switch
176
+ value={values.marketingEmails}
177
+ onValueChange={() => toggle('marketingEmails')}
178
+ disabled={isSaving}
179
+ />
180
+ }
181
+ showChevron={false}
182
+ />
183
+ </SettingsListGroup>
184
+ </View>
171
185
  </ScrollView>
172
186
  </View>
173
187
  );
174
188
  };
175
189
 
176
- const styles = StyleSheet.create({
177
- container: {
178
- flex: 1,
179
- },
180
- scroll: {
181
- flex: 1,
182
- },
183
- scrollContent: {
184
- paddingHorizontal: 16,
185
- paddingBottom: 24,
186
- },
187
- });
188
-
189
190
  export default React.memo(NotificationsScreen);
@@ -16,21 +16,25 @@
16
16
  */
17
17
 
18
18
  import type React from 'react';
19
- import { View, Text, TouchableOpacity, StyleSheet, Linking } from 'react-native';
19
+ import { View, Linking } from 'react-native';
20
20
  import type { BaseScreenProps } from '../types/navigation';
21
21
  import { useTheme } from '@oxyhq/bloom/theme';
22
22
  import { Button } from '@oxyhq/bloom/button';
23
23
  import { Loading } from '@oxyhq/bloom/loading';
24
+ import { H4, Text } from '@oxyhq/bloom/typography';
25
+ import { IconCircle } from '@oxyhq/bloom/icon-circle';
26
+ import * as Icons from '@oxyhq/bloom/icons';
24
27
  import { useOxy } from '../context/OxyContext';
25
28
  import OxyLogo from '../components/OxyLogo';
26
29
  import AnotherDeviceQR from '../components/AnotherDeviceQR';
30
+ import LoadingState from '../components/LoadingState';
27
31
  import { useOxyAuthSession, OXY_ACCOUNTS_WEB_URL } from '../hooks/useOxyAuthSession';
28
32
 
29
33
  const OxyAuthScreen: React.FC<BaseScreenProps> = ({ goBack, onAuthenticated }) => {
30
34
  const bloomTheme = useTheme();
31
35
  const { oxyServices, switchSession, clientId } = useOxy();
32
36
 
33
- const { qrData, isLoading, error, isWaiting, openAuthApproval, retry } = useOxyAuthSession(
37
+ const { qrData, qrPayload, isLoading, error, isWaiting, openAuthApproval, openSameDeviceApproval, retry } = useOxyAuthSession(
34
38
  oxyServices,
35
39
  clientId,
36
40
  switchSession,
@@ -39,20 +43,33 @@ const OxyAuthScreen: React.FC<BaseScreenProps> = ({ goBack, onAuthenticated }) =
39
43
 
40
44
  if (isLoading) {
41
45
  return (
42
- <View style={[styles.container, { backgroundColor: bloomTheme.colors.background }]}>
43
- <Loading size="large" />
44
- <Text style={styles.loadingText} className="text-muted-foreground">
45
- Preparing sign in...
46
- </Text>
46
+ <View className="flex-1 items-center justify-center bg-bg">
47
+ <LoadingState
48
+ size="large"
49
+ color={bloomTheme.colors.primary}
50
+ message="Preparing sign in..."
51
+ />
47
52
  </View>
48
53
  );
49
54
  }
50
55
 
51
56
  if (error) {
52
57
  return (
53
- <View style={[styles.container, { backgroundColor: bloomTheme.colors.background }]}>
54
- <Text style={styles.errorText} className="text-destructive">{error}</Text>
55
- <Button variant="primary" onPress={retry} style={styles.primaryButton}>
58
+ <View className="flex-1 items-center justify-center bg-bg px-screen-margin gap-space-16">
59
+ <IconCircle icon={Icons.Warning_Stroke2_Corner0_Rounded} />
60
+ <Text className="font-sans text-body text-text-secondary text-center">{error}</Text>
61
+ <Button
62
+ variant="primary"
63
+ fullWidth
64
+ className="w-full"
65
+ onPress={retry}
66
+ icon={
67
+ <Icons.ArrowRotateClockwise_Stroke2_Corner0_Rounded
68
+ size="sm"
69
+ style={{ color: bloomTheme.colors.primaryForeground }}
70
+ />
71
+ }
72
+ >
56
73
  Try Again
57
74
  </Button>
58
75
  </View>
@@ -60,12 +77,14 @@ const OxyAuthScreen: React.FC<BaseScreenProps> = ({ goBack, onAuthenticated }) =
60
77
  }
61
78
 
62
79
  return (
63
- <View style={[styles.container, { backgroundColor: bloomTheme.colors.background }]}>
80
+ <View className="flex-1 items-center justify-center bg-bg px-screen-margin">
64
81
  {/* Branded header */}
65
- <View style={styles.header}>
66
- <OxyLogo variant="icon" size={48} />
67
- <Text style={styles.title} className="text-foreground">Sign in to Oxy</Text>
68
- <Text style={styles.subtitle} className="text-muted-foreground">
82
+ <View className="items-center mb-space-24 gap-space-12">
83
+ <OxyLogo variant="icon" size={56} />
84
+ <H4 className="text-headerBold font-headerBold text-text text-center">
85
+ Sign in to Oxy
86
+ </H4>
87
+ <Text className="font-sans text-body text-text-secondary text-center">
69
88
  Continue with your Oxy identity to sign in securely
70
89
  </Text>
71
90
  </View>
@@ -73,124 +92,72 @@ const OxyAuthScreen: React.FC<BaseScreenProps> = ({ goBack, onAuthenticated }) =
73
92
  {/* Primary action — Continue with Oxy */}
74
93
  <Button
75
94
  variant="primary"
95
+ size="large"
96
+ fullWidth
97
+ className="w-full"
76
98
  onPress={openAuthApproval}
77
- icon={<OxyLogo variant="icon" size={20} fillColor={bloomTheme.colors.primaryForeground} style={styles.buttonIcon} />}
78
- style={styles.primaryButton}
99
+ icon={
100
+ <OxyLogo variant="icon" size={20} fillColor={bloomTheme.colors.primaryForeground} />
101
+ }
79
102
  >
80
103
  Continue with Oxy
81
104
  </Button>
82
105
 
106
+ {/* Same-device "Sign in with Oxy" handoff — deep-links into the native Oxy
107
+ app to approve. Shown only when the handoff backend returned a payload. */}
108
+ {qrPayload && (
109
+ <Button
110
+ variant="secondary"
111
+ size="large"
112
+ fullWidth
113
+ className="w-full mt-space-12"
114
+ onPress={openSameDeviceApproval}
115
+ icon={
116
+ <OxyLogo variant="icon" size={20} fillColor={bloomTheme.colors.text} />
117
+ }
118
+ >
119
+ Sign in with the Oxy app
120
+ </Button>
121
+ )}
122
+
83
123
  {/* Waiting status */}
84
124
  {isWaiting && (
85
- <View style={styles.statusContainer}>
86
- <Loading size="small" style={styles.statusSpinner} />
87
- <Text style={styles.statusText} className="text-muted-foreground">
125
+ <View className="flex-row items-center mt-space-16 gap-space-8">
126
+ <Loading size="small" />
127
+ <Text className="font-sans text-body text-text-secondary">
88
128
  Waiting for authorization...
89
129
  </Text>
90
130
  </View>
91
131
  )}
92
132
 
93
133
  {/* Collapsed "sign in on another device" QR disclosure */}
94
- <View style={styles.qrSection}>
95
- <AnotherDeviceQR qrData={qrData} />
134
+ <View className="w-full mt-space-24">
135
+ <AnotherDeviceQR qrData={qrData} qrPayload={qrPayload} />
96
136
  </View>
97
137
 
98
138
  {/* Footer — create an account */}
99
- <View style={styles.footer}>
100
- <Text style={styles.footerText} className="text-muted-foreground">
101
- Don't have an Oxy account?{' '}
139
+ <View className="flex-row flex-wrap justify-center items-center mt-space-24">
140
+ <Text className="font-sans text-body text-text-secondary">
141
+ Don't have an Oxy account?
102
142
  </Text>
103
- <TouchableOpacity onPress={() => Linking.openURL(OXY_ACCOUNTS_WEB_URL)} accessibilityRole="link">
104
- <Text style={styles.footerLink} className="text-primary">
105
- Create one
106
- </Text>
107
- </TouchableOpacity>
143
+ <Button
144
+ variant="text"
145
+ size="small"
146
+ onPress={() => Linking.openURL(OXY_ACCOUNTS_WEB_URL)}
147
+ accessibilityLabel="Create an Oxy account"
148
+ >
149
+ Create one
150
+ </Button>
108
151
  </View>
109
152
 
110
153
  {/* Cancel */}
111
154
  {goBack && (
112
- <TouchableOpacity style={styles.cancelButton} onPress={goBack} accessibilityRole="button">
113
- <Text style={styles.cancelText} className="text-muted-foreground">Cancel</Text>
114
- </TouchableOpacity>
155
+ <Button variant="text" onPress={goBack} className="mt-space-8" accessibilityLabel="Cancel">
156
+ Cancel
157
+ </Button>
115
158
  )}
116
159
  </View>
117
160
  );
118
161
  };
119
162
 
120
- const styles = StyleSheet.create({
121
- container: {
122
- flex: 1,
123
- padding: 24,
124
- alignItems: 'center',
125
- justifyContent: 'center',
126
- },
127
- header: {
128
- alignItems: 'center',
129
- marginBottom: 28,
130
- },
131
- title: {
132
- fontSize: 24,
133
- fontWeight: 'bold',
134
- marginTop: 16,
135
- textAlign: 'center',
136
- },
137
- subtitle: {
138
- fontSize: 14,
139
- marginTop: 8,
140
- textAlign: 'center',
141
- },
142
- primaryButton: {
143
- width: '100%',
144
- borderRadius: 12,
145
- },
146
- buttonIcon: {
147
- marginRight: 10,
148
- },
149
- statusContainer: {
150
- flexDirection: 'row',
151
- alignItems: 'center',
152
- marginTop: 20,
153
- },
154
- statusSpinner: {
155
- flex: undefined,
156
- },
157
- statusText: {
158
- marginLeft: 8,
159
- fontSize: 14,
160
- },
161
- qrSection: {
162
- width: '100%',
163
- marginTop: 24,
164
- },
165
- footer: {
166
- flexDirection: 'row',
167
- flexWrap: 'wrap',
168
- justifyContent: 'center',
169
- marginTop: 28,
170
- },
171
- footerText: {
172
- fontSize: 14,
173
- },
174
- footerLink: {
175
- fontSize: 14,
176
- fontWeight: '600',
177
- },
178
- cancelButton: {
179
- marginTop: 16,
180
- padding: 12,
181
- },
182
- cancelText: {
183
- fontSize: 14,
184
- },
185
- loadingText: {
186
- marginTop: 16,
187
- fontSize: 14,
188
- },
189
- errorText: {
190
- fontSize: 14,
191
- textAlign: 'center',
192
- marginBottom: 16,
193
- },
194
- });
195
-
196
163
  export default OxyAuthScreen;
@@ -2,7 +2,6 @@ import type React from 'react';
2
2
  import { useState, useRef, useMemo, useCallback } from 'react';
3
3
  import {
4
4
  View,
5
- Text,
6
5
  ScrollView,
7
6
  Animated,
8
7
  Platform,
@@ -12,6 +11,8 @@ import type { BaseScreenProps } from '../types/navigation';
12
11
  import { useThemeColors } from '../styles/theme';
13
12
  import { normalizeTheme } from '@oxyhq/core';
14
13
  import { Button } from '@oxyhq/bloom/button';
14
+ import { useTheme } from '@oxyhq/bloom/theme';
15
+ import { H4 } from '@oxyhq/bloom/typography';
15
16
  import { Ionicons } from '@expo/vector-icons';
16
17
  import { useI18n } from '../hooks/useI18n';
17
18
  import QRCode from 'react-native-qrcode-svg';
@@ -22,7 +23,6 @@ import PaymentDetailsStep from '../components/payment/PaymentDetailsStep';
22
23
  import PaymentReviewStep from '../components/payment/PaymentReviewStep';
23
24
  import PaymentSuccessStep from '../components/payment/PaymentSuccessStep';
24
25
  import { PAYMENT_METHODS } from '../components/payment/constants';
25
- import { createPaymentStyles } from '../components/payment/paymentStyles';
26
26
  import type { PaymentItem, PaymentGatewayResult, CardDetails } from '../components/payment/types';
27
27
 
28
28
  export type { PaymentItem, PaymentGatewayResult };
@@ -77,9 +77,11 @@ const PaymentGatewayScreen: React.FC<PaymentGatewayScreenProps> = (props) => {
77
77
  const progressAnim = useRef(new Animated.Value(0.2)).current;
78
78
 
79
79
  const normalizedTheme = normalizeTheme(theme);
80
+ // `colors` (PaymentColors) is the contract the wizard step components consume.
80
81
  const colors = useThemeColors(normalizedTheme);
82
+ // Bloom theme drives screen-shell icon roles (no hardcoded hex).
83
+ const bloomTheme = useTheme();
81
84
  const { t } = useI18n();
82
- const styles = useMemo(() => createPaymentStyles(colors), [colors]);
83
85
 
84
86
  // Determine if the payment is for a recurring item (subscription)
85
87
  const isRecurring = paymentItems.length > 0 && paymentItems[0].type === 'subscription';
@@ -181,8 +183,11 @@ const PaymentGatewayScreen: React.FC<PaymentGatewayScreenProps> = (props) => {
181
183
  // Validate amount
182
184
  if (!amount || Number.isNaN(Number(amount)) || Number(amount) <= 0) {
183
185
  return (
184
- <View style={styles.errorContainer}>
185
- <Text style={styles.errorText}>{t('payment.errors.invalidAmount')}</Text>
186
+ <View className="flex-1 bg-bg items-center justify-center px-screen-margin gap-space-24">
187
+ <Ionicons name="alert-circle-outline" size={48} color={bloomTheme.colors.error} />
188
+ <H4 className="text-text text-center">
189
+ {t('payment.errors.invalidAmount')}
190
+ </H4>
186
191
  <Button
187
192
  variant="primary"
188
193
  onPress={handleClose}
@@ -277,8 +282,12 @@ const PaymentGatewayScreen: React.FC<PaymentGatewayScreenProps> = (props) => {
277
282
  };
278
283
 
279
284
  return (
280
- <View style={[styles.container, { backgroundColor: colors.background }]}>
281
- <ScrollView style={styles.content} showsVerticalScrollIndicator={false}>
285
+ <View className="flex-1 bg-bg">
286
+ <ScrollView
287
+ className="flex-1"
288
+ contentContainerClassName="p-space-16"
289
+ showsVerticalScrollIndicator={false}
290
+ >
282
291
  {renderCurrentStep()}
283
292
  </ScrollView>
284
293
  </View>