@oxyhq/services 10.5.0 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/lib/commonjs/index.js.map +1 -1
  2. package/lib/commonjs/ui/components/AccountMenu.js +9 -5
  3. package/lib/commonjs/ui/components/AccountMenu.js.map +1 -1
  4. package/lib/commonjs/ui/components/AnotherDeviceQR.js +51 -56
  5. package/lib/commonjs/ui/components/AnotherDeviceQR.js.map +1 -1
  6. package/lib/commonjs/ui/components/BottomSheetRouter.js +1 -0
  7. package/lib/commonjs/ui/components/BottomSheetRouter.js.map +1 -1
  8. package/lib/commonjs/ui/components/FollowButton.js +18 -5
  9. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  10. package/lib/commonjs/ui/components/OxyProvider.js +23 -7
  11. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  12. package/lib/commonjs/ui/components/SignInModal.js +20 -1
  13. package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
  14. package/lib/commonjs/ui/components/fileManagement/FileViewer.js +19 -9
  15. package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
  16. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +4 -2
  17. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
  18. package/lib/commonjs/ui/context/OxyContext.js +153 -19
  19. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  20. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +6 -17
  21. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  22. package/lib/commonjs/ui/hooks/mutations/mutationFactory.js +5 -5
  23. package/lib/commonjs/ui/hooks/mutations/mutationFactory.js.map +1 -1
  24. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +38 -38
  25. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  26. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js +2 -2
  27. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  28. package/lib/commonjs/ui/hooks/queries/queryKeys.js +3 -3
  29. package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -1
  30. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +1 -1
  31. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
  32. package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js +16 -12
  33. package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  34. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +10 -6
  35. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -1
  36. package/lib/commonjs/ui/hooks/queryClient.js +6 -5
  37. package/lib/commonjs/ui/hooks/queryClient.js.map +1 -1
  38. package/lib/commonjs/ui/hooks/useOxyAuthSession.js +40 -2
  39. package/lib/commonjs/ui/hooks/useOxyAuthSession.js.map +1 -1
  40. package/lib/commonjs/ui/hooks/useProfileEditing.js +21 -0
  41. package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -1
  42. package/lib/commonjs/ui/hooks/useSessionManagement.js +3 -3
  43. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  44. package/lib/commonjs/ui/screens/AccountVerificationScreen.js +100 -108
  45. package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
  46. package/lib/commonjs/ui/screens/AppInfoScreen.js +227 -273
  47. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  48. package/lib/commonjs/ui/screens/AvatarCropScreen.js +10 -4
  49. package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -1
  50. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js +20 -37
  51. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js.map +1 -1
  52. package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js +89 -201
  53. package/lib/commonjs/ui/screens/CreateManagedAccountScreen.js.map +1 -1
  54. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +80 -208
  55. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
  56. package/lib/commonjs/ui/screens/FAQScreen.js +56 -208
  57. package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -1
  58. package/lib/commonjs/ui/screens/FeedbackScreen.js +303 -352
  59. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  60. package/lib/commonjs/ui/screens/FileManagementScreen.js +20 -20
  61. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  62. package/lib/commonjs/ui/screens/HelpSupportScreen.js +77 -89
  63. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
  64. package/lib/commonjs/ui/screens/HistoryViewScreen.js +43 -58
  65. package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
  66. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +67 -90
  67. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  68. package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js +77 -177
  69. package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
  70. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +113 -107
  71. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
  72. package/lib/commonjs/ui/screens/ManageAccountScreen.js +55 -114
  73. package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
  74. package/lib/commonjs/ui/screens/NotificationsScreen.js +67 -85
  75. package/lib/commonjs/ui/screens/NotificationsScreen.js.map +1 -1
  76. package/lib/commonjs/ui/screens/OxyAuthScreen.js +71 -135
  77. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  78. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +15 -9
  79. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  80. package/lib/commonjs/ui/screens/PreferencesScreen.js +65 -83
  81. package/lib/commonjs/ui/screens/PreferencesScreen.js.map +1 -1
  82. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +378 -1023
  83. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  84. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +294 -242
  85. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  86. package/lib/commonjs/ui/screens/ProfileScreen.js +192 -305
  87. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  88. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +57 -97
  89. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
  90. package/lib/commonjs/ui/screens/SearchSettingsScreen.js +41 -41
  91. package/lib/commonjs/ui/screens/SearchSettingsScreen.js.map +1 -1
  92. package/lib/commonjs/ui/screens/UserLinksScreen.js +17 -24
  93. package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -1
  94. package/lib/commonjs/ui/screens/UserListScreen.js +83 -214
  95. package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
  96. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +115 -77
  97. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  98. package/lib/commonjs/ui/screens/trust/TrustAboutScreen.js +70 -57
  99. package/lib/commonjs/ui/screens/trust/TrustAboutScreen.js.map +1 -1
  100. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js +136 -332
  101. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  102. package/lib/commonjs/ui/screens/trust/TrustFAQScreen.js +47 -137
  103. package/lib/commonjs/ui/screens/trust/TrustFAQScreen.js.map +1 -1
  104. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js +182 -115
  105. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  106. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js +138 -214
  107. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  108. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js +54 -92
  109. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  110. package/lib/commonjs/ui/utils/activeAuthuser.js +15 -9
  111. package/lib/commonjs/ui/utils/activeAuthuser.js.map +1 -1
  112. package/lib/commonjs/ui/utils/avatarUtils.js +1 -1
  113. package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
  114. package/lib/module/index.js.map +1 -1
  115. package/lib/module/ui/components/AccountMenu.js +10 -6
  116. package/lib/module/ui/components/AccountMenu.js.map +1 -1
  117. package/lib/module/ui/components/AnotherDeviceQR.js +50 -56
  118. package/lib/module/ui/components/AnotherDeviceQR.js.map +1 -1
  119. package/lib/module/ui/components/BottomSheetRouter.js +2 -1
  120. package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
  121. package/lib/module/ui/components/FollowButton.js +18 -5
  122. package/lib/module/ui/components/FollowButton.js.map +1 -1
  123. package/lib/module/ui/components/OxyProvider.js +23 -7
  124. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  125. package/lib/module/ui/components/SignInModal.js +20 -1
  126. package/lib/module/ui/components/SignInModal.js.map +1 -1
  127. package/lib/module/ui/components/fileManagement/FileViewer.js +19 -9
  128. package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
  129. package/lib/module/ui/components/fileManagement/UploadPreview.js +4 -2
  130. package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
  131. package/lib/module/ui/context/OxyContext.js +154 -20
  132. package/lib/module/ui/context/OxyContext.js.map +1 -1
  133. package/lib/module/ui/context/hooks/useAuthOperations.js +6 -17
  134. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  135. package/lib/module/ui/hooks/mutations/mutationFactory.js +5 -5
  136. package/lib/module/ui/hooks/mutations/mutationFactory.js.map +1 -1
  137. package/lib/module/ui/hooks/mutations/useAccountMutations.js +38 -38
  138. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  139. package/lib/module/ui/hooks/mutations/useServicesMutations.js +2 -2
  140. package/lib/module/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  141. package/lib/module/ui/hooks/queries/queryKeys.js +3 -3
  142. package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -1
  143. package/lib/module/ui/hooks/queries/useAccountQueries.js +1 -1
  144. package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
  145. package/lib/module/ui/hooks/queries/usePaymentQueries.js +16 -12
  146. package/lib/module/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  147. package/lib/module/ui/hooks/queries/useServicesQueries.js +9 -6
  148. package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -1
  149. package/lib/module/ui/hooks/queryClient.js +6 -5
  150. package/lib/module/ui/hooks/queryClient.js.map +1 -1
  151. package/lib/module/ui/hooks/useOxyAuthSession.js +40 -2
  152. package/lib/module/ui/hooks/useOxyAuthSession.js.map +1 -1
  153. package/lib/module/ui/hooks/useProfileEditing.js +21 -0
  154. package/lib/module/ui/hooks/useProfileEditing.js.map +1 -1
  155. package/lib/module/ui/hooks/useSessionManagement.js +4 -3
  156. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  157. package/lib/module/ui/screens/AccountVerificationScreen.js +101 -109
  158. package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
  159. package/lib/module/ui/screens/AppInfoScreen.js +228 -275
  160. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  161. package/lib/module/ui/screens/AvatarCropScreen.js +10 -4
  162. package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -1
  163. package/lib/module/ui/screens/ConnectedAppsScreen.js +19 -39
  164. package/lib/module/ui/screens/ConnectedAppsScreen.js.map +1 -1
  165. package/lib/module/ui/screens/CreateManagedAccountScreen.js +90 -202
  166. package/lib/module/ui/screens/CreateManagedAccountScreen.js.map +1 -1
  167. package/lib/module/ui/screens/EditProfileFieldScreen.js +77 -205
  168. package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
  169. package/lib/module/ui/screens/FAQScreen.js +55 -207
  170. package/lib/module/ui/screens/FAQScreen.js.map +1 -1
  171. package/lib/module/ui/screens/FeedbackScreen.js +301 -350
  172. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  173. package/lib/module/ui/screens/FileManagementScreen.js +20 -20
  174. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  175. package/lib/module/ui/screens/HelpSupportScreen.js +78 -90
  176. package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
  177. package/lib/module/ui/screens/HistoryViewScreen.js +44 -59
  178. package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
  179. package/lib/module/ui/screens/LanguageSelectorScreen.js +68 -91
  180. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  181. package/lib/module/ui/screens/LearnMoreUsernamesScreen.js +75 -177
  182. package/lib/module/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
  183. package/lib/module/ui/screens/LegalDocumentsScreen.js +116 -108
  184. package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
  185. package/lib/module/ui/screens/ManageAccountScreen.js +52 -112
  186. package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
  187. package/lib/module/ui/screens/NotificationsScreen.js +68 -86
  188. package/lib/module/ui/screens/NotificationsScreen.js.map +1 -1
  189. package/lib/module/ui/screens/OxyAuthScreen.js +69 -134
  190. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  191. package/lib/module/ui/screens/PaymentGatewayScreen.js +16 -10
  192. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  193. package/lib/module/ui/screens/PreferencesScreen.js +66 -84
  194. package/lib/module/ui/screens/PreferencesScreen.js.map +1 -1
  195. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +366 -1012
  196. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  197. package/lib/module/ui/screens/PrivacySettingsScreen.js +295 -243
  198. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  199. package/lib/module/ui/screens/ProfileScreen.js +189 -302
  200. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  201. package/lib/module/ui/screens/SavesCollectionsScreen.js +58 -98
  202. package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
  203. package/lib/module/ui/screens/SearchSettingsScreen.js +42 -42
  204. package/lib/module/ui/screens/SearchSettingsScreen.js.map +1 -1
  205. package/lib/module/ui/screens/UserLinksScreen.js +18 -25
  206. package/lib/module/ui/screens/UserLinksScreen.js.map +1 -1
  207. package/lib/module/ui/screens/UserListScreen.js +81 -212
  208. package/lib/module/ui/screens/UserListScreen.js.map +1 -1
  209. package/lib/module/ui/screens/WelcomeNewUserScreen.js +114 -76
  210. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  211. package/lib/module/ui/screens/trust/TrustAboutScreen.js +69 -57
  212. package/lib/module/ui/screens/trust/TrustAboutScreen.js.map +1 -1
  213. package/lib/module/ui/screens/trust/TrustCenterScreen.js +135 -332
  214. package/lib/module/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  215. package/lib/module/ui/screens/trust/TrustFAQScreen.js +48 -138
  216. package/lib/module/ui/screens/trust/TrustFAQScreen.js.map +1 -1
  217. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js +184 -117
  218. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  219. package/lib/module/ui/screens/trust/TrustRewardsScreen.js +132 -208
  220. package/lib/module/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  221. package/lib/module/ui/screens/trust/TrustRulesScreen.js +58 -94
  222. package/lib/module/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  223. package/lib/module/ui/utils/activeAuthuser.js +15 -9
  224. package/lib/module/ui/utils/activeAuthuser.js.map +1 -1
  225. package/lib/module/ui/utils/avatarUtils.js +1 -1
  226. package/lib/module/ui/utils/avatarUtils.js.map +1 -1
  227. package/lib/typescript/commonjs/index.d.ts +1 -0
  228. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  229. package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts +2 -0
  230. package/lib/typescript/commonjs/ui/components/AccountMenu.d.ts.map +1 -1
  231. package/lib/typescript/commonjs/ui/components/AnotherDeviceQR.d.ts +12 -2
  232. package/lib/typescript/commonjs/ui/components/AnotherDeviceQR.d.ts.map +1 -1
  233. package/lib/typescript/commonjs/ui/components/BottomSheetRouter.d.ts.map +1 -1
  234. package/lib/typescript/commonjs/ui/components/FollowButton.d.ts.map +1 -1
  235. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts +3 -2
  236. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
  237. package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -1
  238. package/lib/typescript/commonjs/ui/components/TouchableRipple/TouchableRipple.native.d.ts +1 -1
  239. package/lib/typescript/commonjs/ui/components/TouchableRipple/TouchableRipple.native.d.ts.map +1 -1
  240. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +34 -0
  241. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  242. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  243. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +3 -0
  244. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  245. package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts +3 -3
  246. package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  247. package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  248. package/lib/typescript/commonjs/ui/hooks/queryClient.d.ts.map +1 -1
  249. package/lib/typescript/commonjs/ui/hooks/useOxyAuthSession.d.ts +22 -0
  250. package/lib/typescript/commonjs/ui/hooks/useOxyAuthSession.d.ts.map +1 -1
  251. package/lib/typescript/commonjs/ui/hooks/useProfileEditing.d.ts +3 -0
  252. package/lib/typescript/commonjs/ui/hooks/useProfileEditing.d.ts.map +1 -1
  253. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts +2 -1
  254. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
  255. package/lib/typescript/commonjs/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
  256. package/lib/typescript/commonjs/ui/screens/AppInfoScreen.d.ts.map +1 -1
  257. package/lib/typescript/commonjs/ui/screens/AvatarCropScreen.d.ts.map +1 -1
  258. package/lib/typescript/commonjs/ui/screens/ConnectedAppsScreen.d.ts.map +1 -1
  259. package/lib/typescript/commonjs/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -1
  260. package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  261. package/lib/typescript/commonjs/ui/screens/FAQScreen.d.ts.map +1 -1
  262. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +1 -1
  263. package/lib/typescript/commonjs/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  264. package/lib/typescript/commonjs/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  265. package/lib/typescript/commonjs/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  266. package/lib/typescript/commonjs/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -1
  267. package/lib/typescript/commonjs/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
  268. package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  269. package/lib/typescript/commonjs/ui/screens/NotificationsScreen.d.ts.map +1 -1
  270. package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  271. package/lib/typescript/commonjs/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  272. package/lib/typescript/commonjs/ui/screens/PreferencesScreen.d.ts.map +1 -1
  273. package/lib/typescript/commonjs/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  274. package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  275. package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
  276. package/lib/typescript/commonjs/ui/screens/SavesCollectionsScreen.d.ts.map +1 -1
  277. package/lib/typescript/commonjs/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  278. package/lib/typescript/commonjs/ui/screens/UserLinksScreen.d.ts.map +1 -1
  279. package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts.map +1 -1
  280. package/lib/typescript/commonjs/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  281. package/lib/typescript/commonjs/ui/screens/trust/TrustAboutScreen.d.ts.map +1 -1
  282. package/lib/typescript/commonjs/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  283. package/lib/typescript/commonjs/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -1
  284. package/lib/typescript/commonjs/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  285. package/lib/typescript/commonjs/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  286. package/lib/typescript/commonjs/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  287. package/lib/typescript/commonjs/ui/utils/activeAuthuser.d.ts.map +1 -1
  288. package/lib/typescript/module/index.d.ts +1 -0
  289. package/lib/typescript/module/index.d.ts.map +1 -1
  290. package/lib/typescript/module/ui/components/AccountMenu.d.ts +2 -0
  291. package/lib/typescript/module/ui/components/AccountMenu.d.ts.map +1 -1
  292. package/lib/typescript/module/ui/components/AnotherDeviceQR.d.ts +12 -2
  293. package/lib/typescript/module/ui/components/AnotherDeviceQR.d.ts.map +1 -1
  294. package/lib/typescript/module/ui/components/BottomSheetRouter.d.ts.map +1 -1
  295. package/lib/typescript/module/ui/components/FollowButton.d.ts.map +1 -1
  296. package/lib/typescript/module/ui/components/OxyProvider.d.ts +3 -2
  297. package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
  298. package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -1
  299. package/lib/typescript/module/ui/components/TouchableRipple/TouchableRipple.native.d.ts +1 -1
  300. package/lib/typescript/module/ui/components/TouchableRipple/TouchableRipple.native.d.ts.map +1 -1
  301. package/lib/typescript/module/ui/context/OxyContext.d.ts +34 -0
  302. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  303. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  304. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +3 -0
  305. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  306. package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts +3 -3
  307. package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  308. package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  309. package/lib/typescript/module/ui/hooks/queryClient.d.ts.map +1 -1
  310. package/lib/typescript/module/ui/hooks/useOxyAuthSession.d.ts +22 -0
  311. package/lib/typescript/module/ui/hooks/useOxyAuthSession.d.ts.map +1 -1
  312. package/lib/typescript/module/ui/hooks/useProfileEditing.d.ts +3 -0
  313. package/lib/typescript/module/ui/hooks/useProfileEditing.d.ts.map +1 -1
  314. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts +2 -1
  315. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
  316. package/lib/typescript/module/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
  317. package/lib/typescript/module/ui/screens/AppInfoScreen.d.ts.map +1 -1
  318. package/lib/typescript/module/ui/screens/AvatarCropScreen.d.ts.map +1 -1
  319. package/lib/typescript/module/ui/screens/ConnectedAppsScreen.d.ts.map +1 -1
  320. package/lib/typescript/module/ui/screens/CreateManagedAccountScreen.d.ts.map +1 -1
  321. package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  322. package/lib/typescript/module/ui/screens/FAQScreen.d.ts.map +1 -1
  323. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +1 -1
  324. package/lib/typescript/module/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  325. package/lib/typescript/module/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  326. package/lib/typescript/module/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  327. package/lib/typescript/module/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -1
  328. package/lib/typescript/module/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
  329. package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  330. package/lib/typescript/module/ui/screens/NotificationsScreen.d.ts.map +1 -1
  331. package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  332. package/lib/typescript/module/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  333. package/lib/typescript/module/ui/screens/PreferencesScreen.d.ts.map +1 -1
  334. package/lib/typescript/module/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  335. package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  336. package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
  337. package/lib/typescript/module/ui/screens/SavesCollectionsScreen.d.ts.map +1 -1
  338. package/lib/typescript/module/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  339. package/lib/typescript/module/ui/screens/UserLinksScreen.d.ts.map +1 -1
  340. package/lib/typescript/module/ui/screens/UserListScreen.d.ts.map +1 -1
  341. package/lib/typescript/module/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  342. package/lib/typescript/module/ui/screens/trust/TrustAboutScreen.d.ts.map +1 -1
  343. package/lib/typescript/module/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  344. package/lib/typescript/module/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -1
  345. package/lib/typescript/module/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  346. package/lib/typescript/module/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  347. package/lib/typescript/module/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  348. package/lib/typescript/module/ui/utils/activeAuthuser.d.ts.map +1 -1
  349. package/lib/typescript/types/expo-haptics.d.ts +42 -0
  350. package/package.json +24 -31
  351. package/src/index.ts +1 -0
  352. package/src/types/expo-haptics.d.ts +42 -0
  353. package/src/ui/components/AccountMenu.tsx +11 -5
  354. package/src/ui/components/AnotherDeviceQR.tsx +53 -45
  355. package/src/ui/components/BottomSheetRouter.tsx +2 -1
  356. package/src/ui/components/FollowButton.tsx +24 -5
  357. package/src/ui/components/OxyProvider.tsx +22 -8
  358. package/src/ui/components/SignInModal.tsx +21 -2
  359. package/src/ui/components/TouchableRipple/TouchableRipple.native.tsx +1 -1
  360. package/src/ui/components/fileManagement/FileViewer.tsx +9 -9
  361. package/src/ui/components/fileManagement/UploadPreview.tsx +2 -2
  362. package/src/ui/context/OxyContext.tsx +178 -21
  363. package/src/ui/context/hooks/useAuthOperations.ts +6 -17
  364. package/src/ui/hooks/mutations/mutationFactory.ts +5 -5
  365. package/src/ui/hooks/mutations/useAccountMutations.ts +38 -38
  366. package/src/ui/hooks/mutations/useServicesMutations.ts +2 -2
  367. package/src/ui/hooks/queries/queryKeys.ts +6 -3
  368. package/src/ui/hooks/queries/useAccountQueries.ts +1 -1
  369. package/src/ui/hooks/queries/usePaymentQueries.ts +12 -12
  370. package/src/ui/hooks/queries/useServicesQueries.ts +9 -6
  371. package/src/ui/hooks/queryClient.ts +5 -5
  372. package/src/ui/hooks/useOxyAuthSession.ts +76 -2
  373. package/src/ui/hooks/useProfileEditing.ts +24 -0
  374. package/src/ui/hooks/useSessionManagement.ts +9 -6
  375. package/src/ui/screens/AccountVerificationScreen.tsx +101 -113
  376. package/src/ui/screens/AppInfoScreen.tsx +200 -238
  377. package/src/ui/screens/AvatarCropScreen.tsx +17 -4
  378. package/src/ui/screens/ConnectedAppsScreen.tsx +16 -34
  379. package/src/ui/screens/CreateManagedAccountScreen.tsx +94 -170
  380. package/src/ui/screens/EditProfileFieldScreen.tsx +77 -190
  381. package/src/ui/screens/FAQScreen.tsx +77 -208
  382. package/src/ui/screens/FeedbackScreen.tsx +330 -239
  383. package/src/ui/screens/FileManagementScreen.tsx +20 -20
  384. package/src/ui/screens/HelpSupportScreen.tsx +67 -82
  385. package/src/ui/screens/HistoryViewScreen.tsx +32 -38
  386. package/src/ui/screens/LanguageSelectorScreen.tsx +79 -93
  387. package/src/ui/screens/LearnMoreUsernamesScreen.tsx +81 -164
  388. package/src/ui/screens/LegalDocumentsScreen.tsx +184 -123
  389. package/src/ui/screens/ManageAccountScreen.tsx +48 -114
  390. package/src/ui/screens/NotificationsScreen.tsx +107 -106
  391. package/src/ui/screens/OxyAuthScreen.tsx +76 -109
  392. package/src/ui/screens/PaymentGatewayScreen.tsx +16 -7
  393. package/src/ui/screens/PreferencesScreen.tsx +96 -116
  394. package/src/ui/screens/PremiumSubscriptionScreen.tsx +419 -872
  395. package/src/ui/screens/PrivacySettingsScreen.tsx +203 -185
  396. package/src/ui/screens/ProfileScreen.tsx +158 -200
  397. package/src/ui/screens/SavesCollectionsScreen.tsx +78 -125
  398. package/src/ui/screens/SearchSettingsScreen.tsx +52 -41
  399. package/src/ui/screens/UserLinksScreen.tsx +18 -25
  400. package/src/ui/screens/UserListScreen.tsx +95 -188
  401. package/src/ui/screens/WelcomeNewUserScreen.tsx +109 -36
  402. package/src/ui/screens/trust/TrustAboutScreen.tsx +52 -41
  403. package/src/ui/screens/trust/TrustCenterScreen.tsx +184 -222
  404. package/src/ui/screens/trust/TrustFAQScreen.tsx +64 -124
  405. package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +190 -67
  406. package/src/ui/screens/trust/TrustRewardsScreen.tsx +147 -182
  407. package/src/ui/screens/trust/TrustRulesScreen.tsx +77 -50
  408. package/src/ui/utils/activeAuthuser.ts +15 -9
  409. package/src/ui/utils/avatarUtils.ts +1 -1
  410. package/lib/commonjs/ui/components/feedback/FormInput.js +0 -72
  411. package/lib/commonjs/ui/components/feedback/FormInput.js.map +0 -1
  412. package/lib/commonjs/ui/components/feedback/feedbackStyles.js +0 -261
  413. package/lib/commonjs/ui/components/feedback/feedbackStyles.js.map +0 -1
  414. package/lib/module/ui/components/feedback/FormInput.js +0 -67
  415. package/lib/module/ui/components/feedback/FormInput.js.map +0 -1
  416. package/lib/module/ui/components/feedback/feedbackStyles.js +0 -256
  417. package/lib/module/ui/components/feedback/feedbackStyles.js.map +0 -1
  418. package/lib/typescript/commonjs/ui/components/feedback/FormInput.d.ts +0 -20
  419. package/lib/typescript/commonjs/ui/components/feedback/FormInput.d.ts.map +0 -1
  420. package/lib/typescript/commonjs/ui/components/feedback/feedbackStyles.d.ts +0 -279
  421. package/lib/typescript/commonjs/ui/components/feedback/feedbackStyles.d.ts.map +0 -1
  422. package/lib/typescript/module/ui/components/feedback/FormInput.d.ts +0 -20
  423. package/lib/typescript/module/ui/components/feedback/FormInput.d.ts.map +0 -1
  424. package/lib/typescript/module/ui/components/feedback/feedbackStyles.d.ts +0 -279
  425. package/lib/typescript/module/ui/components/feedback/feedbackStyles.d.ts.map +0 -1
  426. package/src/ui/components/feedback/FormInput.tsx +0 -84
  427. 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>