@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,17 +1,24 @@
1
1
  "use strict";
2
2
 
3
3
  import { useEffect, useState } from 'react';
4
- import { View, Text, StyleSheet, ActivityIndicator, ScrollView, TouchableOpacity } from 'react-native';
4
+ import { View, StyleSheet, ActivityIndicator, ScrollView } from 'react-native';
5
5
  import { useTheme } from '@oxyhq/bloom/theme';
6
+ import { Button } from '@oxyhq/bloom/button';
7
+ import { H2, Text } from '@oxyhq/bloom/typography';
8
+ import { SettingsListGroup, SettingsListItem } from '@oxyhq/bloom/settings-list';
6
9
  import Avatar from "../components/Avatar.js";
7
10
  import FollowButton from "../components/FollowButton.js";
8
11
  import { useFollow } from "../hooks/useFollow.js";
9
12
  import { Ionicons } from '@expo/vector-icons';
10
13
  import { useI18n } from "../hooks/useI18n.js";
11
14
  import { useOxy } from "../context/OxyContext.js";
12
- import { getAccountDisplayName, logger } from '@oxyhq/core';
15
+ import { getAccountDisplayName, logger, normalizeProfileLinks } from '@oxyhq/core';
13
16
  import { extractErrorMessage } from "../utils/errorHandlers.js";
14
17
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
+ const AVATAR_SIZE = 96;
19
+ const BANNER_HEIGHT = 160;
20
+ const AVATAR_OVERLAP = -56;
21
+ const INFO_ICON_SIZE = 18;
15
22
  const ProfileScreen = ({
16
23
  userId,
17
24
  username,
@@ -39,7 +46,6 @@ const ProfileScreen = ({
39
46
  isLoadingCounts
40
47
  } = useFollow(userId);
41
48
  const bloomTheme = useTheme();
42
- const styles = createStyles();
43
49
  const {
44
50
  t,
45
51
  locale
@@ -93,34 +99,8 @@ const ProfileScreen = ({
93
99
  setProfile(profileRes);
94
100
  setReputationTotal(typeof reputationRes.total === 'number' ? reputationRes.total : null);
95
101
 
96
- // Extract links from profile data
97
- if (profileRes.linksMetadata && Array.isArray(profileRes.linksMetadata)) {
98
- const linksWithIds = profileRes.linksMetadata.map((link, index) => ({
99
- ...link,
100
- id: link.id || `existing-${index}`
101
- }));
102
- setLinks(linksWithIds);
103
- } else if (Array.isArray(profileRes.links)) {
104
- const simpleLinks = profileRes.links.map(l => typeof l === 'string' ? l : typeof l === 'object' && 'link' in l ? l.link : '').filter(Boolean);
105
- const linksWithMetadata = simpleLinks.map((url, index) => ({
106
- url,
107
- title: url.replace(/^https?:\/\//, '').replace(/\/$/, ''),
108
- description: `Link to ${url}`,
109
- image: undefined,
110
- id: `existing-${index}`
111
- }));
112
- setLinks(linksWithMetadata);
113
- } else if (profileRes.website) {
114
- setLinks([{
115
- url: profileRes.website,
116
- title: profileRes.website.replace(/^https?:\/\//, '').replace(/\/$/, ''),
117
- description: `Link to ${profileRes.website}`,
118
- image: undefined,
119
- id: 'existing-0'
120
- }]);
121
- } else {
122
- setLinks([]);
123
- }
102
+ // Normalize profile links via the shared @oxyhq/core helper.
103
+ setLinks(normalizeProfileLinks(profileRes.linksMetadata, profileRes.links));
124
104
 
125
105
  // Follower/following counts are managed by the `useFollow` hook.
126
106
 
@@ -157,10 +137,8 @@ const ProfileScreen = ({
157
137
  }, [userId]);
158
138
  if (isLoading) {
159
139
  return /*#__PURE__*/_jsx(View, {
160
- style: [styles.container, {
161
- justifyContent: 'center',
162
- backgroundColor: bloomTheme.colors.background
163
- }],
140
+ style: styles.centerContainer,
141
+ className: "bg-bg",
164
142
  children: /*#__PURE__*/_jsx(ActivityIndicator, {
165
143
  size: "large",
166
144
  color: bloomTheme.colors.primary
@@ -169,82 +147,77 @@ const ProfileScreen = ({
169
147
  }
170
148
  if (error) {
171
149
  return /*#__PURE__*/_jsxs(View, {
172
- style: [styles.container, {
173
- backgroundColor: bloomTheme.colors.background
174
- }],
150
+ style: styles.container,
151
+ className: "bg-bg",
175
152
  children: [/*#__PURE__*/_jsxs(View, {
176
- style: [styles.errorHeader, {
177
- borderBottomColor: bloomTheme.colors.border
178
- }],
179
- children: [goBack && /*#__PURE__*/_jsx(TouchableOpacity, {
153
+ style: styles.errorHeader,
154
+ className: "px-screen-margin py-space-12 border-b border-border",
155
+ children: [goBack && /*#__PURE__*/_jsx(Button, {
156
+ variant: "icon",
157
+ size: "icon",
180
158
  onPress: goBack,
181
- style: styles.backButton,
182
- children: /*#__PURE__*/_jsx(Ionicons, {
159
+ accessibilityLabel: t('common.back') || 'Back',
160
+ icon: /*#__PURE__*/_jsx(Ionicons, {
183
161
  name: "arrow-back",
184
- size: 24,
162
+ size: 22,
185
163
  color: bloomTheme.colors.text
186
164
  })
187
- }), /*#__PURE__*/_jsx(Text, {
165
+ }), /*#__PURE__*/_jsx(H2, {
188
166
  style: styles.errorTitle,
189
- className: "text-foreground",
190
- children: "Profile Error"
167
+ className: "text-text",
168
+ children: t('profile.errorTitle') || 'Profile Error'
191
169
  })]
192
170
  }), /*#__PURE__*/_jsxs(View, {
193
171
  style: styles.errorContent,
172
+ className: "px-space-32 gap-space-12",
194
173
  children: [/*#__PURE__*/_jsx(Ionicons, {
195
174
  name: "alert-circle",
196
175
  size: 48,
197
- color: bloomTheme.colors.error,
198
- style: styles.errorIcon
176
+ color: bloomTheme.colors.error
199
177
  }), /*#__PURE__*/_jsx(Text, {
200
178
  style: styles.errorText,
201
- className: "text-destructive",
179
+ className: "text-text",
202
180
  children: error
203
181
  }), /*#__PURE__*/_jsx(Text, {
204
182
  style: styles.errorSubtext,
205
- className: "text-muted-foreground",
206
- children: "This could happen if the user doesn't exist or the profile service is unavailable."
183
+ className: "text-text-secondary",
184
+ children: t('profile.errorSubtext') || "This could happen if the user doesn't exist or the profile service is unavailable."
207
185
  })]
208
186
  })]
209
187
  });
210
188
  }
189
+ const displayName = profile ? getAccountDisplayName(profile, locale) : username || '';
211
190
  return /*#__PURE__*/_jsx(View, {
212
- style: [styles.container, {
213
- backgroundColor: bloomTheme.colors.background
214
- }],
191
+ style: styles.container,
192
+ className: "bg-bg",
215
193
  children: /*#__PURE__*/_jsxs(ScrollView, {
216
- style: {
217
- flex: 1
218
- },
194
+ style: styles.flex,
219
195
  contentContainerStyle: styles.scrollContainer,
220
196
  children: [/*#__PURE__*/_jsx(View, {
221
197
  style: styles.bannerContainer,
222
- className: "bg-primary/20",
198
+ className: "bg-fill-brand/20",
223
199
  children: /*#__PURE__*/_jsx(View, {
224
- style: styles.bannerImage,
225
- className: "bg-primary"
200
+ style: styles.flex,
201
+ className: "bg-fill-brand"
226
202
  })
227
203
  }), /*#__PURE__*/_jsxs(View, {
228
204
  style: styles.avatarRow,
205
+ className: "px-screen-margin",
229
206
  children: [/*#__PURE__*/_jsx(View, {
230
207
  style: styles.avatarWrapper,
231
- className: "border-background bg-background",
208
+ className: "border-bg bg-bg rounded-radius-max",
232
209
  children: /*#__PURE__*/_jsx(Avatar, {
233
210
  uri: profile?.avatar ? oxyServices.getFileDownloadUrl(profile.avatar, 'thumb') : undefined,
234
- name: profile ? getAccountDisplayName(profile, locale) : username,
235
- size: 96
211
+ name: displayName || username,
212
+ size: AVATAR_SIZE
236
213
  })
237
214
  }), /*#__PURE__*/_jsx(View, {
238
215
  style: styles.actionButtonWrapper,
239
- children: isOwnProfile ? /*#__PURE__*/_jsx(TouchableOpacity, {
240
- style: styles.actionButton,
241
- className: "bg-background border-primary",
216
+ children: isOwnProfile ? /*#__PURE__*/_jsx(Button, {
217
+ variant: "secondary",
218
+ size: "small",
242
219
  onPress: () => navigate?.('ManageAccount'),
243
- children: /*#__PURE__*/_jsx(Text, {
244
- style: styles.actionButtonText,
245
- className: "text-primary",
246
- children: t('editProfile.title') || 'Edit Profile'
247
- })
220
+ children: t('editProfile.title') || 'Edit Profile'
248
221
  }) : /*#__PURE__*/_jsx(FollowButton, {
249
222
  userId: userId,
250
223
  onFollowChange: isFollowing => {
@@ -259,264 +232,192 @@ const ProfileScreen = ({
259
232
  })]
260
233
  }), /*#__PURE__*/_jsxs(View, {
261
234
  style: styles.header,
262
- children: [/*#__PURE__*/_jsx(Text, {
235
+ className: "px-screen-margin",
236
+ children: [/*#__PURE__*/_jsx(H2, {
263
237
  style: styles.displayName,
264
- className: "text-foreground",
265
- children: profile ? getAccountDisplayName(profile, locale) : username || ''
238
+ className: "text-text",
239
+ children: displayName
266
240
  }), profile?.username && /*#__PURE__*/_jsxs(Text, {
267
241
  style: styles.subText,
268
- className: "text-muted-foreground",
242
+ className: "text-text-secondary",
269
243
  children: ["@", profile.username]
270
244
  }), /*#__PURE__*/_jsx(Text, {
271
245
  style: styles.bio,
272
- className: "text-foreground",
246
+ className: "text-text",
273
247
  children: profile?.bio || t('profile.noBio') || 'This user has no bio yet.'
248
+ })]
249
+ }), /*#__PURE__*/_jsxs(SettingsListGroup, {
250
+ children: [profile?.createdAt && /*#__PURE__*/_jsx(SettingsListItem, {
251
+ icon: /*#__PURE__*/_jsx(Ionicons, {
252
+ name: "calendar-outline",
253
+ size: INFO_ICON_SIZE,
254
+ color: bloomTheme.colors.textSecondary
255
+ }),
256
+ title: t('profile.joinedOn', {
257
+ date: new Date(profile.createdAt).toLocaleDateString()
258
+ }) || `Joined ${new Date(profile.createdAt).toLocaleDateString()}`,
259
+ showChevron: false
260
+ }), profile?.location && /*#__PURE__*/_jsx(SettingsListItem, {
261
+ icon: /*#__PURE__*/_jsx(Ionicons, {
262
+ name: "location-outline",
263
+ size: INFO_ICON_SIZE,
264
+ color: bloomTheme.colors.textSecondary
265
+ }),
266
+ title: profile.location,
267
+ showChevron: false
268
+ }), profile?.website && /*#__PURE__*/_jsx(SettingsListItem, {
269
+ icon: /*#__PURE__*/_jsx(Ionicons, {
270
+ name: "globe-outline",
271
+ size: INFO_ICON_SIZE,
272
+ color: bloomTheme.colors.textSecondary
273
+ }),
274
+ title: profile.website,
275
+ showChevron: false
276
+ }), profile && 'company' in profile && typeof profile.company === 'string' && profile.company && /*#__PURE__*/_jsx(SettingsListItem, {
277
+ icon: /*#__PURE__*/_jsx(Ionicons, {
278
+ name: "business-outline",
279
+ size: INFO_ICON_SIZE,
280
+ color: bloomTheme.colors.textSecondary
281
+ }),
282
+ title: profile.company,
283
+ showChevron: false
284
+ }), profile && 'jobTitle' in profile && typeof profile.jobTitle === 'string' && profile.jobTitle && /*#__PURE__*/_jsx(SettingsListItem, {
285
+ icon: /*#__PURE__*/_jsx(Ionicons, {
286
+ name: "briefcase-outline",
287
+ size: INFO_ICON_SIZE,
288
+ color: bloomTheme.colors.textSecondary
289
+ }),
290
+ title: profile.jobTitle,
291
+ showChevron: false
292
+ }), profile && 'education' in profile && typeof profile.education === 'string' && profile.education && /*#__PURE__*/_jsx(SettingsListItem, {
293
+ icon: /*#__PURE__*/_jsx(Ionicons, {
294
+ name: "school-outline",
295
+ size: INFO_ICON_SIZE,
296
+ color: bloomTheme.colors.textSecondary
297
+ }),
298
+ title: profile.education,
299
+ showChevron: false
300
+ }), profile && 'birthday' in profile && typeof profile.birthday === 'string' && profile.birthday && /*#__PURE__*/_jsx(SettingsListItem, {
301
+ icon: /*#__PURE__*/_jsx(Ionicons, {
302
+ name: "gift-outline",
303
+ size: INFO_ICON_SIZE,
304
+ color: bloomTheme.colors.textSecondary
305
+ }),
306
+ title: t('profile.bornOn', {
307
+ date: new Date(profile.birthday).toLocaleDateString()
308
+ }) || `Born ${new Date(profile.birthday).toLocaleDateString()}`,
309
+ showChevron: false
310
+ }), links.length > 0 && /*#__PURE__*/_jsx(SettingsListItem, {
311
+ icon: /*#__PURE__*/_jsx(Ionicons, {
312
+ name: "link-outline",
313
+ size: INFO_ICON_SIZE,
314
+ color: bloomTheme.colors.textSecondary
315
+ }),
316
+ title: links[0].url,
317
+ value: links.length > 1 ? t('profile.more', {
318
+ count: links.length - 1
319
+ }) || `+ ${links.length - 1} more` : undefined,
320
+ onPress: () => navigate?.('UserLinks', {
321
+ userId,
322
+ links
323
+ })
324
+ })]
325
+ }), /*#__PURE__*/_jsxs(View, {
326
+ style: styles.statsRow,
327
+ className: "px-screen-margin",
328
+ children: [/*#__PURE__*/_jsxs(View, {
329
+ style: styles.statItem,
330
+ children: [/*#__PURE__*/_jsx(Text, {
331
+ style: styles.statAmount,
332
+ className: "text-text-inverse",
333
+ children: reputationTotal !== null && reputationTotal !== undefined ? reputationTotal : '--'
334
+ }), /*#__PURE__*/_jsx(Text, {
335
+ style: styles.statLabel,
336
+ className: "text-text-secondary",
337
+ children: t('profile.reputation') || 'Reputation'
338
+ })]
274
339
  }), /*#__PURE__*/_jsxs(View, {
275
- style: styles.infoGrid,
276
- children: [profile?.createdAt && /*#__PURE__*/_jsxs(View, {
277
- style: styles.infoGridItem,
278
- children: [/*#__PURE__*/_jsx(Ionicons, {
279
- name: "calendar-outline",
280
- size: 16,
281
- color: bloomTheme.colors.textSecondary,
282
- style: {
283
- marginRight: 6
284
- }
285
- }), /*#__PURE__*/_jsx(Text, {
286
- style: styles.infoGridText,
287
- className: "text-muted-foreground",
288
- children: t('profile.joinedOn', {
289
- date: new Date(profile.createdAt).toLocaleDateString()
290
- }) || `Joined ${new Date(profile.createdAt).toLocaleDateString()}`
291
- })]
292
- }), profile?.location && /*#__PURE__*/_jsxs(View, {
293
- style: styles.infoGridItem,
294
- children: [/*#__PURE__*/_jsx(Ionicons, {
295
- name: "location-outline",
296
- size: 16,
297
- color: bloomTheme.colors.textSecondary,
298
- style: {
299
- marginRight: 6
300
- }
301
- }), /*#__PURE__*/_jsx(Text, {
302
- style: styles.infoGridText,
303
- className: "text-muted-foreground",
304
- numberOfLines: 1,
305
- children: profile.location
306
- })]
307
- }), profile?.website && /*#__PURE__*/_jsxs(View, {
308
- style: styles.infoGridItem,
309
- children: [/*#__PURE__*/_jsx(Ionicons, {
310
- name: "globe-outline",
311
- size: 16,
312
- color: bloomTheme.colors.textSecondary,
313
- style: {
314
- marginRight: 6
315
- }
316
- }), /*#__PURE__*/_jsx(Text, {
317
- style: styles.infoGridText,
318
- className: "text-muted-foreground",
319
- numberOfLines: 1,
320
- children: profile.website
321
- })]
322
- }), profile && 'company' in profile && typeof profile.company === 'string' && profile.company && /*#__PURE__*/_jsxs(View, {
323
- style: styles.infoGridItem,
324
- children: [/*#__PURE__*/_jsx(Ionicons, {
325
- name: "business-outline",
326
- size: 16,
327
- color: bloomTheme.colors.textSecondary,
328
- style: {
329
- marginRight: 6
330
- }
331
- }), /*#__PURE__*/_jsx(Text, {
332
- style: styles.infoGridText,
333
- className: "text-muted-foreground",
334
- numberOfLines: 1,
335
- children: profile.company
336
- })]
337
- }), profile && 'jobTitle' in profile && typeof profile.jobTitle === 'string' && profile.jobTitle && /*#__PURE__*/_jsxs(View, {
338
- style: styles.infoGridItem,
339
- children: [/*#__PURE__*/_jsx(Ionicons, {
340
- name: "briefcase-outline",
341
- size: 16,
342
- color: bloomTheme.colors.textSecondary,
343
- style: {
344
- marginRight: 6
345
- }
346
- }), /*#__PURE__*/_jsx(Text, {
347
- style: styles.infoGridText,
348
- className: "text-muted-foreground",
349
- numberOfLines: 1,
350
- children: profile.jobTitle
351
- })]
352
- }), profile && 'education' in profile && typeof profile.education === 'string' && profile.education && /*#__PURE__*/_jsxs(View, {
353
- style: styles.infoGridItem,
354
- children: [/*#__PURE__*/_jsx(Ionicons, {
355
- name: "school-outline",
356
- size: 16,
357
- color: bloomTheme.colors.textSecondary,
358
- style: {
359
- marginRight: 6
360
- }
361
- }), /*#__PURE__*/_jsx(Text, {
362
- style: styles.infoGridText,
363
- className: "text-muted-foreground",
364
- numberOfLines: 1,
365
- children: profile.education
366
- })]
367
- }), profile && 'birthday' in profile && typeof profile.birthday === 'string' && profile.birthday && /*#__PURE__*/_jsxs(View, {
368
- style: styles.infoGridItem,
369
- children: [/*#__PURE__*/_jsx(Ionicons, {
370
- name: "gift-outline",
371
- size: 16,
372
- color: bloomTheme.colors.textSecondary,
373
- style: {
374
- marginRight: 6
375
- }
376
- }), /*#__PURE__*/_jsx(Text, {
377
- style: styles.infoGridText,
378
- className: "text-muted-foreground",
379
- children: t('profile.bornOn', {
380
- date: new Date(profile.birthday).toLocaleDateString()
381
- }) || `Born ${new Date(profile.birthday).toLocaleDateString()}`
382
- })]
383
- }), links.length > 0 && /*#__PURE__*/_jsxs(TouchableOpacity, {
384
- style: styles.infoGridItem,
385
- onPress: () => navigate?.('UserLinks', {
386
- userId,
387
- links
388
- }),
389
- children: [/*#__PURE__*/_jsx(Ionicons, {
390
- name: "link-outline",
391
- size: 16,
392
- color: bloomTheme.colors.textSecondary,
393
- style: {
394
- marginRight: 6
395
- }
396
- }), /*#__PURE__*/_jsx(Text, {
397
- style: styles.infoGridText,
398
- className: "text-muted-foreground",
399
- numberOfLines: 1,
400
- children: links[0].url
401
- }), links.length > 1 && /*#__PURE__*/_jsx(Text, {
402
- style: styles.linksMore,
403
- className: "text-muted-foreground",
404
- children: t('profile.more', {
405
- count: links.length - 1
406
- }) || `+ ${links.length - 1} more`
407
- })]
340
+ style: styles.statItem,
341
+ children: [isLoadingCounts ? /*#__PURE__*/_jsx(ActivityIndicator, {
342
+ size: "small",
343
+ color: bloomTheme.colors.text
344
+ }) : /*#__PURE__*/_jsx(Text, {
345
+ style: styles.statAmount,
346
+ className: "text-text",
347
+ children: followerCount !== null ? followerCount : '--'
348
+ }), /*#__PURE__*/_jsx(Text, {
349
+ style: styles.statLabel,
350
+ className: "text-text-secondary",
351
+ children: t('profile.followers') || 'Followers'
408
352
  })]
409
- }), /*#__PURE__*/_jsx(View, {
410
- style: styles.divider,
411
- className: "bg-border"
412
353
  }), /*#__PURE__*/_jsxs(View, {
413
- style: styles.statsRow,
414
- children: [/*#__PURE__*/_jsxs(View, {
415
- style: styles.statItem,
416
- children: [/*#__PURE__*/_jsx(Text, {
417
- style: styles.statAmount,
418
- className: "text-primary",
419
- children: reputationTotal !== null && reputationTotal !== undefined ? reputationTotal : '--'
420
- }), /*#__PURE__*/_jsx(Text, {
421
- style: styles.statLabel,
422
- className: "text-muted-foreground",
423
- children: t('profile.reputation') || 'Reputation'
424
- })]
425
- }), /*#__PURE__*/_jsxs(View, {
426
- style: styles.statItem,
427
- children: [isLoadingCounts ? /*#__PURE__*/_jsx(ActivityIndicator, {
428
- size: "small",
429
- color: bloomTheme.colors.text
430
- }) : /*#__PURE__*/_jsx(Text, {
431
- style: styles.statAmount,
432
- className: "text-foreground",
433
- children: followerCount !== null ? followerCount : '--'
434
- }), /*#__PURE__*/_jsx(Text, {
435
- style: styles.statLabel,
436
- className: "text-muted-foreground",
437
- children: t('profile.followers') || 'Followers'
438
- })]
439
- }), /*#__PURE__*/_jsxs(View, {
440
- style: styles.statItem,
441
- children: [isLoadingCounts ? /*#__PURE__*/_jsx(ActivityIndicator, {
442
- size: "small",
443
- color: bloomTheme.colors.text
444
- }) : /*#__PURE__*/_jsx(Text, {
445
- style: styles.statAmount,
446
- className: "text-foreground",
447
- children: followingCount !== null ? followingCount : '--'
448
- }), /*#__PURE__*/_jsx(Text, {
449
- style: styles.statLabel,
450
- className: "text-muted-foreground",
451
- children: t('profile.following') || 'Following'
452
- })]
354
+ style: styles.statItem,
355
+ children: [isLoadingCounts ? /*#__PURE__*/_jsx(ActivityIndicator, {
356
+ size: "small",
357
+ color: bloomTheme.colors.text
358
+ }) : /*#__PURE__*/_jsx(Text, {
359
+ style: styles.statAmount,
360
+ className: "text-text",
361
+ children: followingCount !== null ? followingCount : '--'
362
+ }), /*#__PURE__*/_jsx(Text, {
363
+ style: styles.statLabel,
364
+ className: "text-text-secondary",
365
+ children: t('profile.following') || 'Following'
453
366
  })]
454
367
  })]
455
368
  })]
456
369
  })
457
370
  });
458
371
  };
459
- const createStyles = () => StyleSheet.create({
372
+
373
+ // Layout-only styles: flex, dimensions, and the measured banner/avatar overlap
374
+ // that no token class can express. Colors, spacing, radius, and typography roles
375
+ // live on Bloom components + NativeWind token classes.
376
+ const styles = StyleSheet.create({
460
377
  container: {
461
378
  flex: 1
462
379
  },
380
+ flex: {
381
+ flex: 1
382
+ },
383
+ centerContainer: {
384
+ flex: 1,
385
+ justifyContent: 'center',
386
+ alignItems: 'center'
387
+ },
463
388
  scrollContainer: {
464
389
  alignItems: 'stretch',
465
390
  paddingBottom: 40
466
391
  },
467
392
  bannerContainer: {
468
- height: 160,
393
+ height: BANNER_HEIGHT,
469
394
  position: 'relative',
470
395
  overflow: 'hidden'
471
396
  },
472
- bannerImage: {
473
- flex: 1
474
- },
475
397
  avatarRow: {
476
398
  flexDirection: 'row',
477
399
  alignItems: 'flex-end',
478
- marginTop: -56,
479
- paddingHorizontal: 20,
400
+ marginTop: AVATAR_OVERLAP,
480
401
  justifyContent: 'space-between',
481
402
  zIndex: 2
482
403
  },
483
404
  avatarWrapper: {
484
405
  borderWidth: 5,
485
- borderRadius: 64,
486
406
  overflow: 'hidden'
487
407
  },
488
408
  actionButtonWrapper: {
489
409
  flex: 1,
490
410
  alignItems: 'flex-end',
491
- justifyContent: 'flex-end'
492
- },
493
- actionButton: {
494
- borderWidth: 1,
495
- borderRadius: 24,
496
- paddingVertical: 7,
497
- paddingHorizontal: 22,
498
- marginBottom: 8,
499
- elevation: 2,
500
- shadowOffset: {
501
- width: 0,
502
- height: 1
503
- },
504
- shadowOpacity: 0.08,
505
- shadowRadius: 2
506
- },
507
- actionButtonText: {
508
- fontWeight: 'bold',
509
- fontSize: 16
411
+ justifyContent: 'flex-end',
412
+ paddingBottom: 8
510
413
  },
511
414
  header: {
512
415
  alignItems: 'flex-start',
513
416
  width: '100%',
514
- paddingHorizontal: 20
417
+ marginTop: 10
515
418
  },
516
419
  displayName: {
517
420
  fontSize: 24,
518
- fontWeight: 'bold',
519
- marginTop: 10,
520
421
  marginBottom: 2,
521
422
  letterSpacing: 0.1
522
423
  },
@@ -527,40 +428,13 @@ const createStyles = () => StyleSheet.create({
527
428
  bio: {
528
429
  fontSize: 16,
529
430
  marginTop: 10,
530
- marginBottom: 10,
531
431
  lineHeight: 22
532
432
  },
533
- infoGrid: {
534
- flexDirection: 'row',
535
- alignItems: 'center',
536
- marginBottom: 10,
537
- flexWrap: 'wrap'
538
- },
539
- infoGridItem: {
540
- flexDirection: 'row',
541
- alignItems: 'center',
542
- marginRight: 24,
543
- marginBottom: 4
544
- },
545
- infoGridText: {
546
- fontSize: 15
547
- },
548
- divider: {
549
- height: 1,
550
- width: '100%',
551
- marginVertical: 14
552
- },
553
- linksMore: {
554
- fontSize: 15,
555
- marginLeft: 4
556
- },
557
433
  statsRow: {
558
434
  width: '100%',
559
- flex: 1,
560
435
  flexDirection: 'row',
561
436
  alignItems: 'center',
562
- marginTop: 6,
563
- marginBottom: 2,
437
+ marginTop: 14,
564
438
  justifyContent: 'space-between'
565
439
  },
566
440
  statItem: {
@@ -580,41 +454,28 @@ const createStyles = () => StyleSheet.create({
580
454
  textAlign: 'center',
581
455
  letterSpacing: 0.2
582
456
  },
583
- // Error handling styles
457
+ // Error state layout
584
458
  errorHeader: {
585
459
  flexDirection: 'row',
586
460
  alignItems: 'center',
587
- paddingHorizontal: 16,
588
- paddingVertical: 12,
589
- borderBottomWidth: 1
590
- },
591
- backButton: {
592
- padding: 8,
593
- marginRight: 16
461
+ gap: 16
594
462
  },
595
463
  errorTitle: {
596
- fontSize: 20,
597
- fontWeight: 'bold'
464
+ fontSize: 20
598
465
  },
599
466
  errorContent: {
600
467
  flex: 1,
601
468
  justifyContent: 'center',
602
- alignItems: 'center',
603
- paddingHorizontal: 32
604
- },
605
- errorIcon: {
606
- marginBottom: 16
469
+ alignItems: 'center'
607
470
  },
608
471
  errorText: {
609
472
  fontSize: 18,
610
473
  fontWeight: '600',
611
- textAlign: 'center',
612
- marginBottom: 8
474
+ textAlign: 'center'
613
475
  },
614
476
  errorSubtext: {
615
477
  fontSize: 14,
616
- textAlign: 'center',
617
- opacity: 0.7
478
+ textAlign: 'center'
618
479
  }
619
480
  });
620
481
  export default ProfileScreen;