@oxy.so/services 11.2.0-oxy-one.3 → 11.2.0-oxy-one.4

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 (1025) hide show
  1. package/lib/commonjs/assets/assets/icons/OxyServices.tsx +42 -40
  2. package/lib/commonjs/assets/assets/illustrations/HighFive.tsx +58 -31
  3. package/lib/commonjs/assets/icons/OxyServices.js.map +1 -1
  4. package/lib/commonjs/assets/illustrations/HighFive.js.map +1 -1
  5. package/lib/commonjs/index.js.map +1 -1
  6. package/lib/commonjs/notifications/deviceNotifications.js +8 -4
  7. package/lib/commonjs/notifications/deviceNotifications.js.map +1 -1
  8. package/lib/commonjs/ui/analytics/productAnalytics.js.map +1 -1
  9. package/lib/commonjs/ui/boot/runProviderColdBoot.js.map +1 -1
  10. package/lib/commonjs/ui/components/BenefitList.js.map +1 -1
  11. package/lib/commonjs/ui/components/BloomLocaleBridge.js.map +1 -1
  12. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  13. package/lib/commonjs/ui/components/FollowTargetButton.js +1 -1
  14. package/lib/commonjs/ui/components/FollowTargetButton.js.map +1 -1
  15. package/lib/commonjs/ui/components/LanguageBridge.js.map +1 -1
  16. package/lib/commonjs/ui/components/OxyAuthChooser.js.map +1 -1
  17. package/lib/commonjs/ui/components/OxyAuthPrompt.js.map +1 -1
  18. package/lib/commonjs/ui/components/OxyConsentScreen.js.map +1 -1
  19. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  20. package/lib/commonjs/ui/components/OxySignInButton.js +1 -1
  21. package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
  22. package/lib/commonjs/ui/components/OxySignInRequestSurface.js.map +1 -1
  23. package/lib/commonjs/ui/components/PeableButton.js.map +1 -1
  24. package/lib/commonjs/ui/components/ProfileButton.js.map +1 -1
  25. package/lib/commonjs/ui/components/ProfileSummaryCard.js +1 -1
  26. package/lib/commonjs/ui/components/ProfileSummaryCard.js.map +1 -1
  27. package/lib/commonjs/ui/components/RequireOxyAuth.js.map +1 -1
  28. package/lib/commonjs/ui/components/SettingsIcon.js.map +1 -1
  29. package/lib/commonjs/ui/components/SurfaceHeaderAction.js.map +1 -1
  30. package/lib/commonjs/ui/components/SurfaceScreen.js.map +1 -1
  31. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  32. package/lib/commonjs/ui/components/authChooser/TroubleDisclosure.js.map +1 -1
  33. package/lib/commonjs/ui/components/authChooser/requestSurfaces.js.map +1 -1
  34. package/lib/commonjs/ui/components/authChooser/types.js.map +1 -1
  35. package/lib/commonjs/ui/components/feedback/constants.js.map +1 -1
  36. package/lib/commonjs/ui/components/feedback/useFeedbackForm.js.map +1 -1
  37. package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
  38. package/lib/commonjs/ui/components/fileManagement/FileViewer.js +1 -1
  39. package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
  40. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
  41. package/lib/commonjs/ui/components/followButtonAccessibility.js.map +1 -1
  42. package/lib/commonjs/ui/components/followRules.js.map +1 -1
  43. package/lib/commonjs/ui/components/icon/FAIRWalletIcon.js.map +1 -1
  44. package/lib/commonjs/ui/components/logo/LogoText.js.map +1 -1
  45. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js.map +1 -1
  46. package/lib/commonjs/ui/components/oauthNavigation.js.map +1 -1
  47. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js.map +1 -1
  48. package/lib/commonjs/ui/components/payment/PaymentMethodStep.js.map +1 -1
  49. package/lib/commonjs/ui/components/payment/PaymentReviewStep.js.map +1 -1
  50. package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js.map +1 -1
  51. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js +1 -1
  52. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js.map +1 -1
  53. package/lib/commonjs/ui/components/payment/constants.js.map +1 -1
  54. package/lib/commonjs/ui/components/payment/paymentStyles.js.map +1 -1
  55. package/lib/commonjs/ui/components/photogrid/JustifiedPhotoGrid.js.map +1 -1
  56. package/lib/commonjs/ui/components/signIn/InlineCommonsQr.js.map +1 -1
  57. package/lib/commonjs/ui/components/signIn/OxyAccountPicker.js.map +1 -1
  58. package/lib/commonjs/ui/components/signIn/OxyAuthScreen.js.map +1 -1
  59. package/lib/commonjs/ui/components/signIn/OxyAuthenticatorPanel.js.map +1 -1
  60. package/lib/commonjs/ui/components/signIn/OxyDeleteAccountPanel.js.map +1 -1
  61. package/lib/commonjs/ui/components/signIn/OxyLinkCommonsPanel.js.map +1 -1
  62. package/lib/commonjs/ui/components/signIn/OxyPasswordPanel.js.map +1 -1
  63. package/lib/commonjs/ui/components/signIn/OxySignInPanel.js.map +1 -1
  64. package/lib/commonjs/ui/components/signIn/OxySignUpPanel.js.map +1 -1
  65. package/lib/commonjs/ui/components/signIn/ReauthStep.js.map +1 -1
  66. package/lib/commonjs/ui/components/signIn/accountFlowParts.js.map +1 -1
  67. package/lib/commonjs/ui/components/signIn/artwork.js.map +1 -1
  68. package/lib/commonjs/ui/components/signIn/signInFlowStore.js.map +1 -1
  69. package/lib/commonjs/ui/components/styles/overlay.js.map +1 -1
  70. package/lib/commonjs/ui/components/styles/shadow.js.map +1 -1
  71. package/lib/commonjs/ui/components/surfaces/ActionSheetSurface.js.map +1 -1
  72. package/lib/commonjs/ui/components/utils/hasTouchHandler.js.map +1 -1
  73. package/lib/commonjs/ui/components/utils/roundLayoutSize.js.map +1 -1
  74. package/lib/commonjs/ui/components/utils/splitStyles.js.map +1 -1
  75. package/lib/commonjs/ui/constants/spacing.js.map +1 -1
  76. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  77. package/lib/commonjs/ui/context/commitSessionFlow.js.map +1 -1
  78. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  79. package/lib/commonjs/ui/context/isolatedOAuthSession.js.map +1 -1
  80. package/lib/commonjs/ui/context/useOxyAccountGraph.js.map +1 -1
  81. package/lib/commonjs/ui/hooks/accountDialogSnapshot.js.map +1 -1
  82. package/lib/commonjs/ui/hooks/accountQueryPersistence.js.map +1 -1
  83. package/lib/commonjs/ui/hooks/mutations/mutationFactory.js.map +1 -1
  84. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  85. package/lib/commonjs/ui/hooks/persistedQueryCache.js.map +1 -1
  86. package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -1
  87. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
  88. package/lib/commonjs/ui/hooks/queries/useFileQueries.js.map +1 -1
  89. package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  90. package/lib/commonjs/ui/hooks/queries/usePersonalPlans.js.map +1 -1
  91. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  92. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -1
  93. package/lib/commonjs/ui/hooks/queries/userCache.js +38 -38
  94. package/lib/commonjs/ui/hooks/queries/userCache.js.map +1 -1
  95. package/lib/commonjs/ui/hooks/queryClient.js.map +1 -1
  96. package/lib/commonjs/ui/hooks/useAssets.js.map +1 -1
  97. package/lib/commonjs/ui/hooks/useAsyncAction.js.map +1 -1
  98. package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
  99. package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +1 -1
  100. package/lib/commonjs/ui/hooks/useDeviceSwitcher.js.map +1 -1
  101. package/lib/commonjs/ui/hooks/useFileFiltering.js.map +1 -1
  102. package/lib/commonjs/ui/hooks/useFollow.js.map +1 -1
  103. package/lib/commonjs/ui/hooks/useI18n.js.map +1 -1
  104. package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -1
  105. package/lib/commonjs/ui/hooks/useReduceMotion.js.map +1 -1
  106. package/lib/commonjs/ui/hooks/useResolvedFileUrls.js.map +1 -1
  107. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  108. package/lib/commonjs/ui/hooks/useSettingToggle.js.map +1 -1
  109. package/lib/commonjs/ui/hooks/useStorage.js.map +1 -1
  110. package/lib/commonjs/ui/hooks/useSurfaceFrameWidth.js.map +1 -1
  111. package/lib/commonjs/ui/icons/Ionicons.js.map +1 -1
  112. package/lib/commonjs/ui/icons/MaterialCommunityIcons.js.map +1 -1
  113. package/lib/commonjs/ui/icons/decorativeIconSet.js.map +1 -1
  114. package/lib/commonjs/ui/isFrontend.js.map +1 -1
  115. package/lib/commonjs/ui/navigation/bottomSheetManager.js.map +1 -1
  116. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  117. package/lib/commonjs/ui/navigation/surfaces.js.map +1 -1
  118. package/lib/commonjs/ui/oauth/applicationSessionLane.js.map +1 -1
  119. package/lib/commonjs/ui/oauth/browserAuthTransport.js.map +1 -1
  120. package/lib/commonjs/ui/oauth/browserBridge.js.map +1 -1
  121. package/lib/commonjs/ui/oauth/completeOAuthCode.js.map +1 -1
  122. package/lib/commonjs/ui/oauth/nativeAuthTransport.js.map +1 -1
  123. package/lib/commonjs/ui/oauth/oauthHandshake.js.map +1 -1
  124. package/lib/commonjs/ui/oauth/oauthPopup.js.map +1 -1
  125. package/lib/commonjs/ui/oauth/oauthPopupMessages.js.map +1 -1
  126. package/lib/commonjs/ui/runtime/createOxyRuntime.js.map +1 -1
  127. package/lib/commonjs/ui/screens/AccountMembersScreen.js.map +1 -1
  128. package/lib/commonjs/ui/screens/AccountSecurityPanelScreen.js.map +1 -1
  129. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  130. package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
  131. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  132. package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -1
  133. package/lib/commonjs/ui/screens/ChangeAvatarScreen.js.map +1 -1
  134. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js.map +1 -1
  135. package/lib/commonjs/ui/screens/CreateAccountScreen.js.map +1 -1
  136. package/lib/commonjs/ui/screens/DomainsScreen.js.map +1 -1
  137. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +1 -1
  138. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
  139. package/lib/commonjs/ui/screens/EditProfileScreen.js.map +1 -1
  140. package/lib/commonjs/ui/screens/FileManagementScreen.js +2 -5
  141. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  142. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
  143. package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
  144. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  145. package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
  146. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
  147. package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
  148. package/lib/commonjs/ui/screens/NotificationsScreen.js.map +1 -1
  149. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  150. package/lib/commonjs/ui/screens/PreferencesScreen.js.map +1 -1
  151. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +3 -3
  152. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  153. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  154. package/lib/commonjs/ui/screens/SearchSettingsScreen.js.map +1 -1
  155. package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -1
  156. package/lib/commonjs/ui/screens/UserListScreen.js +1 -1
  157. package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
  158. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  159. package/lib/commonjs/ui/screens/fileManagement/FileLibraryError.js.map +1 -1
  160. package/lib/commonjs/ui/screens/fileManagement/FileListSection.js.map +1 -1
  161. package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js +7 -7
  162. package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
  163. package/lib/commonjs/ui/screens/fileManagement/UploadBar.js.map +1 -1
  164. package/lib/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.js.map +1 -1
  165. package/lib/commonjs/ui/screens/fileManagement/photoGridLayout.js.map +1 -1
  166. package/lib/commonjs/ui/screens/fileManagement/shared.js.map +1 -1
  167. package/lib/commonjs/ui/screens/linkFormat.js.map +1 -1
  168. package/lib/commonjs/ui/screens/trust/TrustAboutScreen.js.map +1 -1
  169. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  170. package/lib/commonjs/ui/screens/trust/TrustFAQScreen.js.map +1 -1
  171. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  172. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  173. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  174. package/lib/commonjs/ui/server.js.map +1 -1
  175. package/lib/commonjs/ui/session/authStore.js.map +1 -1
  176. package/lib/commonjs/ui/session/backgroundSession.js.map +1 -1
  177. package/lib/commonjs/ui/session/createSessionClient.js.map +1 -1
  178. package/lib/commonjs/ui/session/deviceCredentialTracker.js.map +1 -1
  179. package/lib/commonjs/ui/session/identityBinding.js.map +1 -1
  180. package/lib/commonjs/ui/session/sharedDeviceCredentialStore.js.map +1 -1
  181. package/lib/commonjs/ui/session/tokenLossRecovery.js.map +1 -1
  182. package/lib/commonjs/ui/session/tokenTransport.js.map +1 -1
  183. package/lib/commonjs/ui/stores/assetStore.js.map +1 -1
  184. package/lib/commonjs/ui/stores/followStore.js.map +1 -1
  185. package/lib/commonjs/ui/utils/accountDeletionHandoff.js.map +1 -1
  186. package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
  187. package/lib/commonjs/ui/utils/clipboard.native.js +23 -6
  188. package/lib/commonjs/ui/utils/clipboard.native.js.map +1 -1
  189. package/lib/commonjs/ui/utils/commonsStoreLinks.js.map +1 -1
  190. package/lib/commonjs/ui/utils/errorHandlers.js.map +1 -1
  191. package/lib/commonjs/ui/utils/fileManagement.js +24 -24
  192. package/lib/commonjs/ui/utils/fileManagement.js.map +1 -1
  193. package/lib/commonjs/ui/utils/iconNames.js.map +1 -1
  194. package/lib/commonjs/ui/utils/sessionHelpers.js.map +1 -1
  195. package/lib/commonjs/ui/utils/userUtils.js.map +1 -1
  196. package/lib/commonjs/utils/hookUtils.js +2 -4
  197. package/lib/commonjs/utils/hookUtils.js.map +1 -1
  198. package/lib/module/assets/assets/icons/OxyServices.tsx +42 -40
  199. package/lib/module/assets/assets/illustrations/HighFive.tsx +58 -31
  200. package/lib/module/assets/icons/OxyServices.js.map +1 -1
  201. package/lib/module/assets/illustrations/HighFive.js.map +1 -1
  202. package/lib/module/index.js.map +1 -1
  203. package/lib/module/notifications/deviceNotifications.js +8 -4
  204. package/lib/module/notifications/deviceNotifications.js.map +1 -1
  205. package/lib/module/ui/analytics/productAnalytics.js.map +1 -1
  206. package/lib/module/ui/boot/runProviderColdBoot.js.map +1 -1
  207. package/lib/module/ui/client.js.map +1 -1
  208. package/lib/module/ui/components/BenefitList.js.map +1 -1
  209. package/lib/module/ui/components/BloomLocaleBridge.js.map +1 -1
  210. package/lib/module/ui/components/FollowButton.js.map +1 -1
  211. package/lib/module/ui/components/FollowTargetButton.js +1 -1
  212. package/lib/module/ui/components/FollowTargetButton.js.map +1 -1
  213. package/lib/module/ui/components/LanguageBridge.js.map +1 -1
  214. package/lib/module/ui/components/OxyAuthChooser.js.map +1 -1
  215. package/lib/module/ui/components/OxyAuthPrompt.js.map +1 -1
  216. package/lib/module/ui/components/OxyConsentScreen.js.map +1 -1
  217. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  218. package/lib/module/ui/components/OxySignInButton.js +1 -1
  219. package/lib/module/ui/components/OxySignInButton.js.map +1 -1
  220. package/lib/module/ui/components/OxySignInRequestSurface.js.map +1 -1
  221. package/lib/module/ui/components/PeableButton.js.map +1 -1
  222. package/lib/module/ui/components/ProfileButton.js.map +1 -1
  223. package/lib/module/ui/components/ProfileSummaryCard.js +1 -1
  224. package/lib/module/ui/components/ProfileSummaryCard.js.map +1 -1
  225. package/lib/module/ui/components/RequireOxyAuth.js.map +1 -1
  226. package/lib/module/ui/components/SettingsIcon.js.map +1 -1
  227. package/lib/module/ui/components/SurfaceHeaderAction.js.map +1 -1
  228. package/lib/module/ui/components/SurfaceScreen.js.map +1 -1
  229. package/lib/module/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  230. package/lib/module/ui/components/authChooser/TroubleDisclosure.js.map +1 -1
  231. package/lib/module/ui/components/authChooser/requestSurfaces.js.map +1 -1
  232. package/lib/module/ui/components/authChooser/types.js.map +1 -1
  233. package/lib/module/ui/components/feedback/constants.js.map +1 -1
  234. package/lib/module/ui/components/feedback/useFeedbackForm.js.map +1 -1
  235. package/lib/module/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
  236. package/lib/module/ui/components/fileManagement/FileViewer.js +1 -1
  237. package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
  238. package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
  239. package/lib/module/ui/components/followButtonAccessibility.js.map +1 -1
  240. package/lib/module/ui/components/followRules.js.map +1 -1
  241. package/lib/module/ui/components/icon/FAIRWalletIcon.js.map +1 -1
  242. package/lib/module/ui/components/logo/LogoText.js.map +1 -1
  243. package/lib/module/ui/components/modals/DeleteAccountModal.js.map +1 -1
  244. package/lib/module/ui/components/oauthNavigation.js.map +1 -1
  245. package/lib/module/ui/components/payment/PaymentDetailsStep.js.map +1 -1
  246. package/lib/module/ui/components/payment/PaymentMethodStep.js.map +1 -1
  247. package/lib/module/ui/components/payment/PaymentReviewStep.js.map +1 -1
  248. package/lib/module/ui/components/payment/PaymentSuccessStep.js.map +1 -1
  249. package/lib/module/ui/components/payment/PaymentSummaryStep.js +1 -1
  250. package/lib/module/ui/components/payment/PaymentSummaryStep.js.map +1 -1
  251. package/lib/module/ui/components/payment/constants.js.map +1 -1
  252. package/lib/module/ui/components/payment/paymentStyles.js.map +1 -1
  253. package/lib/module/ui/components/photogrid/JustifiedPhotoGrid.js.map +1 -1
  254. package/lib/module/ui/components/signIn/InlineCommonsQr.js.map +1 -1
  255. package/lib/module/ui/components/signIn/OxyAccountPicker.js.map +1 -1
  256. package/lib/module/ui/components/signIn/OxyAuthScreen.js.map +1 -1
  257. package/lib/module/ui/components/signIn/OxyAuthenticatorPanel.js.map +1 -1
  258. package/lib/module/ui/components/signIn/OxyDeleteAccountPanel.js.map +1 -1
  259. package/lib/module/ui/components/signIn/OxyLinkCommonsPanel.js.map +1 -1
  260. package/lib/module/ui/components/signIn/OxyPasswordPanel.js.map +1 -1
  261. package/lib/module/ui/components/signIn/OxySignInPanel.js.map +1 -1
  262. package/lib/module/ui/components/signIn/OxySignUpPanel.js.map +1 -1
  263. package/lib/module/ui/components/signIn/ReauthStep.js.map +1 -1
  264. package/lib/module/ui/components/signIn/accountFlowParts.js.map +1 -1
  265. package/lib/module/ui/components/signIn/artwork.js.map +1 -1
  266. package/lib/module/ui/components/signIn/signInFlowStore.js.map +1 -1
  267. package/lib/module/ui/components/styles/overlay.js.map +1 -1
  268. package/lib/module/ui/components/styles/shadow.js.map +1 -1
  269. package/lib/module/ui/components/surfaces/ActionSheetSurface.js.map +1 -1
  270. package/lib/module/ui/components/utils/hasTouchHandler.js.map +1 -1
  271. package/lib/module/ui/components/utils/roundLayoutSize.js.map +1 -1
  272. package/lib/module/ui/components/utils/splitStyles.js.map +1 -1
  273. package/lib/module/ui/constants/spacing.js.map +1 -1
  274. package/lib/module/ui/context/OxyContext.js.map +1 -1
  275. package/lib/module/ui/context/commitSessionFlow.js.map +1 -1
  276. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  277. package/lib/module/ui/context/isolatedOAuthSession.js.map +1 -1
  278. package/lib/module/ui/context/useOxyAccountGraph.js.map +1 -1
  279. package/lib/module/ui/hooks/accountDialogSnapshot.js.map +1 -1
  280. package/lib/module/ui/hooks/accountQueryPersistence.js.map +1 -1
  281. package/lib/module/ui/hooks/mutations/mutationFactory.js.map +1 -1
  282. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  283. package/lib/module/ui/hooks/persistedQueryCache.js.map +1 -1
  284. package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -1
  285. package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
  286. package/lib/module/ui/hooks/queries/useFileQueries.js.map +1 -1
  287. package/lib/module/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  288. package/lib/module/ui/hooks/queries/usePersonalPlans.js.map +1 -1
  289. package/lib/module/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  290. package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -1
  291. package/lib/module/ui/hooks/queries/userCache.js +38 -38
  292. package/lib/module/ui/hooks/queries/userCache.js.map +1 -1
  293. package/lib/module/ui/hooks/queryClient.js.map +1 -1
  294. package/lib/module/ui/hooks/useAssets.js.map +1 -1
  295. package/lib/module/ui/hooks/useAsyncAction.js.map +1 -1
  296. package/lib/module/ui/hooks/useAuth.js.map +1 -1
  297. package/lib/module/ui/hooks/useAvatarPicker.js.map +1 -1
  298. package/lib/module/ui/hooks/useDeviceSwitcher.js.map +1 -1
  299. package/lib/module/ui/hooks/useFileFiltering.js.map +1 -1
  300. package/lib/module/ui/hooks/useFollow.js.map +1 -1
  301. package/lib/module/ui/hooks/useI18n.js.map +1 -1
  302. package/lib/module/ui/hooks/useProfileEditing.js.map +1 -1
  303. package/lib/module/ui/hooks/useReduceMotion.js.map +1 -1
  304. package/lib/module/ui/hooks/useResolvedFileUrls.js.map +1 -1
  305. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  306. package/lib/module/ui/hooks/useSettingToggle.js.map +1 -1
  307. package/lib/module/ui/hooks/useStorage.js.map +1 -1
  308. package/lib/module/ui/hooks/useSurfaceFrameWidth.js.map +1 -1
  309. package/lib/module/ui/icons/Ionicons.js.map +1 -1
  310. package/lib/module/ui/icons/MaterialCommunityIcons.js.map +1 -1
  311. package/lib/module/ui/icons/decorativeIconSet.js.map +1 -1
  312. package/lib/module/ui/index.js.map +1 -1
  313. package/lib/module/ui/isFrontend.js.map +1 -1
  314. package/lib/module/ui/navigation/bottomSheetManager.js.map +1 -1
  315. package/lib/module/ui/navigation/routes.js.map +1 -1
  316. package/lib/module/ui/navigation/surfaces.js.map +1 -1
  317. package/lib/module/ui/oauth/applicationSessionLane.js.map +1 -1
  318. package/lib/module/ui/oauth/browserAuthTransport.js.map +1 -1
  319. package/lib/module/ui/oauth/browserBridge.js.map +1 -1
  320. package/lib/module/ui/oauth/completeOAuthCode.js.map +1 -1
  321. package/lib/module/ui/oauth/nativeAuthTransport.js.map +1 -1
  322. package/lib/module/ui/oauth/oauthHandshake.js.map +1 -1
  323. package/lib/module/ui/oauth/oauthPopup.js.map +1 -1
  324. package/lib/module/ui/oauth/oauthPopupMessages.js.map +1 -1
  325. package/lib/module/ui/runtime/createOxyRuntime.js.map +1 -1
  326. package/lib/module/ui/screens/AccountMembersScreen.js.map +1 -1
  327. package/lib/module/ui/screens/AccountSecurityPanelScreen.js.map +1 -1
  328. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  329. package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
  330. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  331. package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -1
  332. package/lib/module/ui/screens/ChangeAvatarScreen.js.map +1 -1
  333. package/lib/module/ui/screens/ConnectedAppsScreen.js.map +1 -1
  334. package/lib/module/ui/screens/CreateAccountScreen.js.map +1 -1
  335. package/lib/module/ui/screens/DomainsScreen.js.map +1 -1
  336. package/lib/module/ui/screens/EditProfileFieldScreen.js +1 -1
  337. package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
  338. package/lib/module/ui/screens/EditProfileScreen.js.map +1 -1
  339. package/lib/module/ui/screens/FileManagementScreen.js +2 -5
  340. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  341. package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
  342. package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
  343. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  344. package/lib/module/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
  345. package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
  346. package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
  347. package/lib/module/ui/screens/NotificationsScreen.js.map +1 -1
  348. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  349. package/lib/module/ui/screens/PreferencesScreen.js.map +1 -1
  350. package/lib/module/ui/screens/PrivacySettingsScreen.js +3 -3
  351. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  352. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  353. package/lib/module/ui/screens/SearchSettingsScreen.js.map +1 -1
  354. package/lib/module/ui/screens/UserLinksScreen.js.map +1 -1
  355. package/lib/module/ui/screens/UserListScreen.js +1 -1
  356. package/lib/module/ui/screens/UserListScreen.js.map +1 -1
  357. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  358. package/lib/module/ui/screens/fileManagement/FileLibraryError.js.map +1 -1
  359. package/lib/module/ui/screens/fileManagement/FileListSection.js.map +1 -1
  360. package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js +7 -7
  361. package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
  362. package/lib/module/ui/screens/fileManagement/UploadBar.js.map +1 -1
  363. package/lib/module/ui/screens/fileManagement/hooks/useFileUploadState.js.map +1 -1
  364. package/lib/module/ui/screens/fileManagement/photoGridLayout.js.map +1 -1
  365. package/lib/module/ui/screens/fileManagement/shared.js.map +1 -1
  366. package/lib/module/ui/screens/linkFormat.js.map +1 -1
  367. package/lib/module/ui/screens/trust/TrustAboutScreen.js.map +1 -1
  368. package/lib/module/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  369. package/lib/module/ui/screens/trust/TrustFAQScreen.js.map +1 -1
  370. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  371. package/lib/module/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  372. package/lib/module/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  373. package/lib/module/ui/server.js.map +1 -1
  374. package/lib/module/ui/session/authStore.js.map +1 -1
  375. package/lib/module/ui/session/backgroundSession.js.map +1 -1
  376. package/lib/module/ui/session/createSessionClient.js.map +1 -1
  377. package/lib/module/ui/session/deviceCredentialTracker.js.map +1 -1
  378. package/lib/module/ui/session/identityBinding.js.map +1 -1
  379. package/lib/module/ui/session/sharedDeviceCredentialStore.js.map +1 -1
  380. package/lib/module/ui/session/tokenLossRecovery.js.map +1 -1
  381. package/lib/module/ui/session/tokenTransport.js.map +1 -1
  382. package/lib/module/ui/stores/assetStore.js.map +1 -1
  383. package/lib/module/ui/stores/followStore.js.map +1 -1
  384. package/lib/module/ui/utils/accountDeletionHandoff.js.map +1 -1
  385. package/lib/module/ui/utils/avatarUtils.js.map +1 -1
  386. package/lib/module/ui/utils/clipboard.native.js +23 -6
  387. package/lib/module/ui/utils/clipboard.native.js.map +1 -1
  388. package/lib/module/ui/utils/commonsStoreLinks.js.map +1 -1
  389. package/lib/module/ui/utils/errorHandlers.js.map +1 -1
  390. package/lib/module/ui/utils/fileManagement.js +25 -25
  391. package/lib/module/ui/utils/fileManagement.js.map +1 -1
  392. package/lib/module/ui/utils/iconNames.js.map +1 -1
  393. package/lib/module/ui/utils/sessionHelpers.js.map +1 -1
  394. package/lib/module/ui/utils/userUtils.js.map +1 -1
  395. package/lib/module/utils/hookUtils.js +2 -4
  396. package/lib/module/utils/hookUtils.js.map +1 -1
  397. package/lib/typescript/commonjs/assets/icons/OxyServices.d.ts.map +1 -1
  398. package/lib/typescript/commonjs/assets/illustrations/HighFive.d.ts.map +1 -1
  399. package/lib/typescript/commonjs/index.d.ts +4 -4
  400. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  401. package/lib/typescript/commonjs/notifications/deviceNotifications.d.ts +8 -4
  402. package/lib/typescript/commonjs/notifications/deviceNotifications.d.ts.map +1 -1
  403. package/lib/typescript/commonjs/ui/analytics/productAnalytics.d.ts.map +1 -1
  404. package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts.map +1 -1
  405. package/lib/typescript/commonjs/ui/client.d.ts.map +1 -1
  406. package/lib/typescript/commonjs/ui/components/BenefitList.d.ts.map +1 -1
  407. package/lib/typescript/commonjs/ui/components/FollowButton.d.ts.map +1 -1
  408. package/lib/typescript/commonjs/ui/components/FollowTargetButton.d.ts +1 -1
  409. package/lib/typescript/commonjs/ui/components/FollowTargetButton.d.ts.map +1 -1
  410. package/lib/typescript/commonjs/ui/components/LanguageBridge.d.ts +1 -1
  411. package/lib/typescript/commonjs/ui/components/LanguageBridge.d.ts.map +1 -1
  412. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts.map +1 -1
  413. package/lib/typescript/commonjs/ui/components/OxyAuthPrompt.d.ts.map +1 -1
  414. package/lib/typescript/commonjs/ui/components/OxyConsentScreen.d.ts.map +1 -1
  415. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
  416. package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
  417. package/lib/typescript/commonjs/ui/components/OxySignInRequestSurface.d.ts.map +1 -1
  418. package/lib/typescript/commonjs/ui/components/PeableButton.d.ts.map +1 -1
  419. package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts.map +1 -1
  420. package/lib/typescript/commonjs/ui/components/ProfileSummaryCard.d.ts.map +1 -1
  421. package/lib/typescript/commonjs/ui/components/RequireOxyAuth.d.ts.map +1 -1
  422. package/lib/typescript/commonjs/ui/components/SettingsIcon.d.ts.map +1 -1
  423. package/lib/typescript/commonjs/ui/components/SurfaceHeaderAction.d.ts.map +1 -1
  424. package/lib/typescript/commonjs/ui/components/SurfaceScreen.d.ts +1 -1
  425. package/lib/typescript/commonjs/ui/components/SurfaceScreen.d.ts.map +1 -1
  426. package/lib/typescript/commonjs/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
  427. package/lib/typescript/commonjs/ui/components/authChooser/TroubleDisclosure.d.ts.map +1 -1
  428. package/lib/typescript/commonjs/ui/components/authChooser/requestSurfaces.d.ts.map +1 -1
  429. package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts.map +1 -1
  430. package/lib/typescript/commonjs/ui/components/feedback/constants.d.ts.map +1 -1
  431. package/lib/typescript/commonjs/ui/components/feedback/types.d.ts.map +1 -1
  432. package/lib/typescript/commonjs/ui/components/feedback/useFeedbackForm.d.ts.map +1 -1
  433. package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
  434. package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
  435. package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
  436. package/lib/typescript/commonjs/ui/components/followButtonAccessibility.d.ts.map +1 -1
  437. package/lib/typescript/commonjs/ui/components/followRules.d.ts.map +1 -1
  438. package/lib/typescript/commonjs/ui/components/icon/FAIRWalletIcon.d.ts.map +1 -1
  439. package/lib/typescript/commonjs/ui/components/logo/LogoText.d.ts.map +1 -1
  440. package/lib/typescript/commonjs/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
  441. package/lib/typescript/commonjs/ui/components/oauthNavigation.d.ts.map +1 -1
  442. package/lib/typescript/commonjs/ui/components/payment/PaymentDetailsStep.d.ts.map +1 -1
  443. package/lib/typescript/commonjs/ui/components/payment/PaymentMethodStep.d.ts.map +1 -1
  444. package/lib/typescript/commonjs/ui/components/payment/PaymentReviewStep.d.ts.map +1 -1
  445. package/lib/typescript/commonjs/ui/components/payment/PaymentSuccessStep.d.ts.map +1 -1
  446. package/lib/typescript/commonjs/ui/components/payment/PaymentSummaryStep.d.ts.map +1 -1
  447. package/lib/typescript/commonjs/ui/components/payment/constants.d.ts.map +1 -1
  448. package/lib/typescript/commonjs/ui/components/payment/paymentStyles.d.ts.map +1 -1
  449. package/lib/typescript/commonjs/ui/components/payment/types.d.ts +6 -6
  450. package/lib/typescript/commonjs/ui/components/payment/types.d.ts.map +1 -1
  451. package/lib/typescript/commonjs/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +1 -1
  452. package/lib/typescript/commonjs/ui/components/signIn/InlineCommonsQr.d.ts.map +1 -1
  453. package/lib/typescript/commonjs/ui/components/signIn/OxyAccountPicker.d.ts.map +1 -1
  454. package/lib/typescript/commonjs/ui/components/signIn/OxyAuthScreen.d.ts.map +1 -1
  455. package/lib/typescript/commonjs/ui/components/signIn/OxyAuthenticatorPanel.d.ts.map +1 -1
  456. package/lib/typescript/commonjs/ui/components/signIn/OxyDeleteAccountPanel.d.ts.map +1 -1
  457. package/lib/typescript/commonjs/ui/components/signIn/OxyLinkCommonsPanel.d.ts.map +1 -1
  458. package/lib/typescript/commonjs/ui/components/signIn/OxyPasswordPanel.d.ts.map +1 -1
  459. package/lib/typescript/commonjs/ui/components/signIn/OxySignInPanel.d.ts.map +1 -1
  460. package/lib/typescript/commonjs/ui/components/signIn/OxySignUpPanel.d.ts.map +1 -1
  461. package/lib/typescript/commonjs/ui/components/signIn/ReauthStep.d.ts.map +1 -1
  462. package/lib/typescript/commonjs/ui/components/signIn/accountFlowParts.d.ts.map +1 -1
  463. package/lib/typescript/commonjs/ui/components/signIn/artwork.d.ts.map +1 -1
  464. package/lib/typescript/commonjs/ui/components/signIn/signInFlowStore.d.ts.map +1 -1
  465. package/lib/typescript/commonjs/ui/components/styles/overlay.d.ts.map +1 -1
  466. package/lib/typescript/commonjs/ui/components/surfaces/ActionSheetSurface.d.ts.map +1 -1
  467. package/lib/typescript/commonjs/ui/components/utils/hasTouchHandler.d.ts.map +1 -1
  468. package/lib/typescript/commonjs/ui/components/utils/roundLayoutSize.d.ts.map +1 -1
  469. package/lib/typescript/commonjs/ui/components/utils/splitStyles.d.ts.map +1 -1
  470. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  471. package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts.map +1 -1
  472. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  473. package/lib/typescript/commonjs/ui/context/isolatedOAuthSession.d.ts.map +1 -1
  474. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
  475. package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts.map +1 -1
  476. package/lib/typescript/commonjs/ui/hooks/accountDialogSnapshot.d.ts.map +1 -1
  477. package/lib/typescript/commonjs/ui/hooks/accountQueryPersistence.d.ts.map +1 -1
  478. package/lib/typescript/commonjs/ui/hooks/mutations/mutationFactory.d.ts.map +1 -1
  479. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  480. package/lib/typescript/commonjs/ui/hooks/persistedQueryCache.d.ts.map +1 -1
  481. package/lib/typescript/commonjs/ui/hooks/queries/paymentTypes.d.ts +2 -2
  482. package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  483. package/lib/typescript/commonjs/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
  484. package/lib/typescript/commonjs/ui/hooks/queries/useFileQueries.d.ts.map +1 -1
  485. package/lib/typescript/commonjs/ui/hooks/queries/usePaymentQueries.d.ts.map +1 -1
  486. package/lib/typescript/commonjs/ui/hooks/queries/usePersonalPlans.d.ts.map +1 -1
  487. package/lib/typescript/commonjs/ui/hooks/queries/useSecurityQueries.d.ts.map +1 -1
  488. package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  489. package/lib/typescript/commonjs/ui/hooks/queries/userCache.d.ts +5 -5
  490. package/lib/typescript/commonjs/ui/hooks/queries/userCache.d.ts.map +1 -1
  491. package/lib/typescript/commonjs/ui/hooks/queryClient.d.ts.map +1 -1
  492. package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts.map +1 -1
  493. package/lib/typescript/commonjs/ui/hooks/useAsyncAction.d.ts.map +1 -1
  494. package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
  495. package/lib/typescript/commonjs/ui/hooks/useAvatarPicker.d.ts.map +1 -1
  496. package/lib/typescript/commonjs/ui/hooks/useDeviceSwitcher.d.ts.map +1 -1
  497. package/lib/typescript/commonjs/ui/hooks/useFollow.d.ts.map +1 -1
  498. package/lib/typescript/commonjs/ui/hooks/useI18n.d.ts.map +1 -1
  499. package/lib/typescript/commonjs/ui/hooks/useProfileEditing.d.ts.map +1 -1
  500. package/lib/typescript/commonjs/ui/hooks/useResolvedFileUrls.d.ts.map +1 -1
  501. package/lib/typescript/commonjs/ui/hooks/useSessionManagement.d.ts.map +1 -1
  502. package/lib/typescript/commonjs/ui/hooks/useSettingToggle.d.ts.map +1 -1
  503. package/lib/typescript/commonjs/ui/hooks/useStorage.d.ts +1 -1
  504. package/lib/typescript/commonjs/ui/hooks/useStorage.d.ts.map +1 -1
  505. package/lib/typescript/commonjs/ui/hooks/useSurfaceFrameWidth.d.ts.map +1 -1
  506. package/lib/typescript/commonjs/ui/icons/Ionicons.d.ts.map +1 -1
  507. package/lib/typescript/commonjs/ui/icons/MaterialCommunityIcons.d.ts.map +1 -1
  508. package/lib/typescript/commonjs/ui/icons/decorativeIconSet.d.ts.map +1 -1
  509. package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
  510. package/lib/typescript/commonjs/ui/isFrontend.d.ts.map +1 -1
  511. package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
  512. package/lib/typescript/commonjs/ui/navigation/surfaces.d.ts.map +1 -1
  513. package/lib/typescript/commonjs/ui/oauth/applicationSessionLane.d.ts.map +1 -1
  514. package/lib/typescript/commonjs/ui/oauth/browserAuthTransport.d.ts.map +1 -1
  515. package/lib/typescript/commonjs/ui/oauth/browserBridge.d.ts.map +1 -1
  516. package/lib/typescript/commonjs/ui/oauth/completeOAuthCode.d.ts.map +1 -1
  517. package/lib/typescript/commonjs/ui/oauth/nativeAuthTransport.d.ts.map +1 -1
  518. package/lib/typescript/commonjs/ui/oauth/oauthHandshake.d.ts.map +1 -1
  519. package/lib/typescript/commonjs/ui/oauth/oauthPopup.d.ts.map +1 -1
  520. package/lib/typescript/commonjs/ui/oauth/oauthPopupMessages.d.ts.map +1 -1
  521. package/lib/typescript/commonjs/ui/oauth/types.d.ts.map +1 -1
  522. package/lib/typescript/commonjs/ui/runtime/createOxyRuntime.d.ts.map +1 -1
  523. package/lib/typescript/commonjs/ui/screens/AccountMembersScreen.d.ts.map +1 -1
  524. package/lib/typescript/commonjs/ui/screens/AccountSecurityPanelScreen.d.ts.map +1 -1
  525. package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  526. package/lib/typescript/commonjs/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
  527. package/lib/typescript/commonjs/ui/screens/AppInfoScreen.d.ts.map +1 -1
  528. package/lib/typescript/commonjs/ui/screens/AvatarCropScreen.d.ts.map +1 -1
  529. package/lib/typescript/commonjs/ui/screens/ChangeAvatarScreen.d.ts.map +1 -1
  530. package/lib/typescript/commonjs/ui/screens/ConnectedAppsScreen.d.ts.map +1 -1
  531. package/lib/typescript/commonjs/ui/screens/CreateAccountScreen.d.ts.map +1 -1
  532. package/lib/typescript/commonjs/ui/screens/DomainsScreen.d.ts.map +1 -1
  533. package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  534. package/lib/typescript/commonjs/ui/screens/EditProfileScreen.d.ts.map +1 -1
  535. package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
  536. package/lib/typescript/commonjs/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  537. package/lib/typescript/commonjs/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  538. package/lib/typescript/commonjs/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  539. package/lib/typescript/commonjs/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -1
  540. package/lib/typescript/commonjs/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
  541. package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  542. package/lib/typescript/commonjs/ui/screens/NotificationsScreen.d.ts.map +1 -1
  543. package/lib/typescript/commonjs/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  544. package/lib/typescript/commonjs/ui/screens/PreferencesScreen.d.ts.map +1 -1
  545. package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  546. package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
  547. package/lib/typescript/commonjs/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  548. package/lib/typescript/commonjs/ui/screens/UserLinksScreen.d.ts.map +1 -1
  549. package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts.map +1 -1
  550. package/lib/typescript/commonjs/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  551. package/lib/typescript/commonjs/ui/screens/fileManagement/FileLibraryError.d.ts.map +1 -1
  552. package/lib/typescript/commonjs/ui/screens/fileManagement/FileListSection.d.ts.map +1 -1
  553. package/lib/typescript/commonjs/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
  554. package/lib/typescript/commonjs/ui/screens/fileManagement/UploadBar.d.ts.map +1 -1
  555. package/lib/typescript/commonjs/ui/screens/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
  556. package/lib/typescript/commonjs/ui/screens/fileManagement/photoGridLayout.d.ts.map +1 -1
  557. package/lib/typescript/commonjs/ui/screens/fileManagement/shared.d.ts.map +1 -1
  558. package/lib/typescript/commonjs/ui/screens/linkFormat.d.ts.map +1 -1
  559. package/lib/typescript/commonjs/ui/screens/trust/TrustAboutScreen.d.ts.map +1 -1
  560. package/lib/typescript/commonjs/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  561. package/lib/typescript/commonjs/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -1
  562. package/lib/typescript/commonjs/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  563. package/lib/typescript/commonjs/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  564. package/lib/typescript/commonjs/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  565. package/lib/typescript/commonjs/ui/server.d.ts.map +1 -1
  566. package/lib/typescript/commonjs/ui/session/authStore.d.ts.map +1 -1
  567. package/lib/typescript/commonjs/ui/session/backgroundSession.d.ts.map +1 -1
  568. package/lib/typescript/commonjs/ui/session/createSessionClient.d.ts.map +1 -1
  569. package/lib/typescript/commonjs/ui/session/deviceCredentialTracker.d.ts.map +1 -1
  570. package/lib/typescript/commonjs/ui/session/identityBinding.d.ts.map +1 -1
  571. package/lib/typescript/commonjs/ui/session/sharedDeviceCredentialStore.d.ts.map +1 -1
  572. package/lib/typescript/commonjs/ui/session/tokenLossRecovery.d.ts.map +1 -1
  573. package/lib/typescript/commonjs/ui/session/tokenTransport.d.ts.map +1 -1
  574. package/lib/typescript/commonjs/ui/stores/assetStore.d.ts.map +1 -1
  575. package/lib/typescript/commonjs/ui/stores/followStore.d.ts.map +1 -1
  576. package/lib/typescript/commonjs/ui/types/fileManagement.d.ts.map +1 -1
  577. package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
  578. package/lib/typescript/commonjs/ui/types/surfaceScreen.d.ts.map +1 -1
  579. package/lib/typescript/commonjs/ui/utils/accountDeletionHandoff.d.ts.map +1 -1
  580. package/lib/typescript/commonjs/ui/utils/avatarUtils.d.ts.map +1 -1
  581. package/lib/typescript/commonjs/ui/utils/clipboard.native.d.ts +16 -5
  582. package/lib/typescript/commonjs/ui/utils/clipboard.native.d.ts.map +1 -1
  583. package/lib/typescript/commonjs/ui/utils/commonsStoreLinks.d.ts.map +1 -1
  584. package/lib/typescript/commonjs/ui/utils/errorHandlers.d.ts +1 -1
  585. package/lib/typescript/commonjs/ui/utils/errorHandlers.d.ts.map +1 -1
  586. package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts +4 -4
  587. package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts.map +1 -1
  588. package/lib/typescript/commonjs/ui/utils/sessionHelpers.d.ts +1 -1
  589. package/lib/typescript/commonjs/ui/utils/sessionHelpers.d.ts.map +1 -1
  590. package/lib/typescript/commonjs/ui/utils/userUtils.d.ts.map +1 -1
  591. package/lib/typescript/commonjs/utils/hookUtils.d.ts.map +1 -1
  592. package/lib/typescript/module/assets/icons/OxyServices.d.ts.map +1 -1
  593. package/lib/typescript/module/assets/illustrations/HighFive.d.ts.map +1 -1
  594. package/lib/typescript/module/index.d.ts +4 -4
  595. package/lib/typescript/module/index.d.ts.map +1 -1
  596. package/lib/typescript/module/notifications/deviceNotifications.d.ts +8 -4
  597. package/lib/typescript/module/notifications/deviceNotifications.d.ts.map +1 -1
  598. package/lib/typescript/module/ui/analytics/productAnalytics.d.ts.map +1 -1
  599. package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts.map +1 -1
  600. package/lib/typescript/module/ui/client.d.ts.map +1 -1
  601. package/lib/typescript/module/ui/components/BenefitList.d.ts.map +1 -1
  602. package/lib/typescript/module/ui/components/FollowButton.d.ts.map +1 -1
  603. package/lib/typescript/module/ui/components/FollowTargetButton.d.ts +1 -1
  604. package/lib/typescript/module/ui/components/FollowTargetButton.d.ts.map +1 -1
  605. package/lib/typescript/module/ui/components/LanguageBridge.d.ts +1 -1
  606. package/lib/typescript/module/ui/components/LanguageBridge.d.ts.map +1 -1
  607. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts.map +1 -1
  608. package/lib/typescript/module/ui/components/OxyAuthPrompt.d.ts.map +1 -1
  609. package/lib/typescript/module/ui/components/OxyConsentScreen.d.ts.map +1 -1
  610. package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
  611. package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
  612. package/lib/typescript/module/ui/components/OxySignInRequestSurface.d.ts.map +1 -1
  613. package/lib/typescript/module/ui/components/PeableButton.d.ts.map +1 -1
  614. package/lib/typescript/module/ui/components/ProfileButton.d.ts.map +1 -1
  615. package/lib/typescript/module/ui/components/ProfileSummaryCard.d.ts.map +1 -1
  616. package/lib/typescript/module/ui/components/RequireOxyAuth.d.ts.map +1 -1
  617. package/lib/typescript/module/ui/components/SettingsIcon.d.ts.map +1 -1
  618. package/lib/typescript/module/ui/components/SurfaceHeaderAction.d.ts.map +1 -1
  619. package/lib/typescript/module/ui/components/SurfaceScreen.d.ts +1 -1
  620. package/lib/typescript/module/ui/components/SurfaceScreen.d.ts.map +1 -1
  621. package/lib/typescript/module/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
  622. package/lib/typescript/module/ui/components/authChooser/TroubleDisclosure.d.ts.map +1 -1
  623. package/lib/typescript/module/ui/components/authChooser/requestSurfaces.d.ts.map +1 -1
  624. package/lib/typescript/module/ui/components/authChooser/types.d.ts.map +1 -1
  625. package/lib/typescript/module/ui/components/feedback/constants.d.ts.map +1 -1
  626. package/lib/typescript/module/ui/components/feedback/types.d.ts.map +1 -1
  627. package/lib/typescript/module/ui/components/feedback/useFeedbackForm.d.ts.map +1 -1
  628. package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
  629. package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
  630. package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
  631. package/lib/typescript/module/ui/components/followButtonAccessibility.d.ts.map +1 -1
  632. package/lib/typescript/module/ui/components/followRules.d.ts.map +1 -1
  633. package/lib/typescript/module/ui/components/icon/FAIRWalletIcon.d.ts.map +1 -1
  634. package/lib/typescript/module/ui/components/logo/LogoText.d.ts.map +1 -1
  635. package/lib/typescript/module/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
  636. package/lib/typescript/module/ui/components/oauthNavigation.d.ts.map +1 -1
  637. package/lib/typescript/module/ui/components/payment/PaymentDetailsStep.d.ts.map +1 -1
  638. package/lib/typescript/module/ui/components/payment/PaymentMethodStep.d.ts.map +1 -1
  639. package/lib/typescript/module/ui/components/payment/PaymentReviewStep.d.ts.map +1 -1
  640. package/lib/typescript/module/ui/components/payment/PaymentSuccessStep.d.ts.map +1 -1
  641. package/lib/typescript/module/ui/components/payment/PaymentSummaryStep.d.ts.map +1 -1
  642. package/lib/typescript/module/ui/components/payment/constants.d.ts.map +1 -1
  643. package/lib/typescript/module/ui/components/payment/paymentStyles.d.ts.map +1 -1
  644. package/lib/typescript/module/ui/components/payment/types.d.ts +6 -6
  645. package/lib/typescript/module/ui/components/payment/types.d.ts.map +1 -1
  646. package/lib/typescript/module/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +1 -1
  647. package/lib/typescript/module/ui/components/signIn/InlineCommonsQr.d.ts.map +1 -1
  648. package/lib/typescript/module/ui/components/signIn/OxyAccountPicker.d.ts.map +1 -1
  649. package/lib/typescript/module/ui/components/signIn/OxyAuthScreen.d.ts.map +1 -1
  650. package/lib/typescript/module/ui/components/signIn/OxyAuthenticatorPanel.d.ts.map +1 -1
  651. package/lib/typescript/module/ui/components/signIn/OxyDeleteAccountPanel.d.ts.map +1 -1
  652. package/lib/typescript/module/ui/components/signIn/OxyLinkCommonsPanel.d.ts.map +1 -1
  653. package/lib/typescript/module/ui/components/signIn/OxyPasswordPanel.d.ts.map +1 -1
  654. package/lib/typescript/module/ui/components/signIn/OxySignInPanel.d.ts.map +1 -1
  655. package/lib/typescript/module/ui/components/signIn/OxySignUpPanel.d.ts.map +1 -1
  656. package/lib/typescript/module/ui/components/signIn/ReauthStep.d.ts.map +1 -1
  657. package/lib/typescript/module/ui/components/signIn/accountFlowParts.d.ts.map +1 -1
  658. package/lib/typescript/module/ui/components/signIn/artwork.d.ts.map +1 -1
  659. package/lib/typescript/module/ui/components/signIn/signInFlowStore.d.ts.map +1 -1
  660. package/lib/typescript/module/ui/components/styles/overlay.d.ts.map +1 -1
  661. package/lib/typescript/module/ui/components/surfaces/ActionSheetSurface.d.ts.map +1 -1
  662. package/lib/typescript/module/ui/components/utils/hasTouchHandler.d.ts.map +1 -1
  663. package/lib/typescript/module/ui/components/utils/roundLayoutSize.d.ts.map +1 -1
  664. package/lib/typescript/module/ui/components/utils/splitStyles.d.ts.map +1 -1
  665. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  666. package/lib/typescript/module/ui/context/commitSessionFlow.d.ts.map +1 -1
  667. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  668. package/lib/typescript/module/ui/context/isolatedOAuthSession.d.ts.map +1 -1
  669. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
  670. package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts.map +1 -1
  671. package/lib/typescript/module/ui/hooks/accountDialogSnapshot.d.ts.map +1 -1
  672. package/lib/typescript/module/ui/hooks/accountQueryPersistence.d.ts.map +1 -1
  673. package/lib/typescript/module/ui/hooks/mutations/mutationFactory.d.ts.map +1 -1
  674. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  675. package/lib/typescript/module/ui/hooks/persistedQueryCache.d.ts.map +1 -1
  676. package/lib/typescript/module/ui/hooks/queries/paymentTypes.d.ts +2 -2
  677. package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  678. package/lib/typescript/module/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
  679. package/lib/typescript/module/ui/hooks/queries/useFileQueries.d.ts.map +1 -1
  680. package/lib/typescript/module/ui/hooks/queries/usePaymentQueries.d.ts.map +1 -1
  681. package/lib/typescript/module/ui/hooks/queries/usePersonalPlans.d.ts.map +1 -1
  682. package/lib/typescript/module/ui/hooks/queries/useSecurityQueries.d.ts.map +1 -1
  683. package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  684. package/lib/typescript/module/ui/hooks/queries/userCache.d.ts +5 -5
  685. package/lib/typescript/module/ui/hooks/queries/userCache.d.ts.map +1 -1
  686. package/lib/typescript/module/ui/hooks/queryClient.d.ts.map +1 -1
  687. package/lib/typescript/module/ui/hooks/useAssets.d.ts.map +1 -1
  688. package/lib/typescript/module/ui/hooks/useAsyncAction.d.ts.map +1 -1
  689. package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
  690. package/lib/typescript/module/ui/hooks/useAvatarPicker.d.ts.map +1 -1
  691. package/lib/typescript/module/ui/hooks/useDeviceSwitcher.d.ts.map +1 -1
  692. package/lib/typescript/module/ui/hooks/useFollow.d.ts.map +1 -1
  693. package/lib/typescript/module/ui/hooks/useI18n.d.ts.map +1 -1
  694. package/lib/typescript/module/ui/hooks/useProfileEditing.d.ts.map +1 -1
  695. package/lib/typescript/module/ui/hooks/useResolvedFileUrls.d.ts.map +1 -1
  696. package/lib/typescript/module/ui/hooks/useSessionManagement.d.ts.map +1 -1
  697. package/lib/typescript/module/ui/hooks/useSettingToggle.d.ts.map +1 -1
  698. package/lib/typescript/module/ui/hooks/useStorage.d.ts +1 -1
  699. package/lib/typescript/module/ui/hooks/useStorage.d.ts.map +1 -1
  700. package/lib/typescript/module/ui/hooks/useSurfaceFrameWidth.d.ts.map +1 -1
  701. package/lib/typescript/module/ui/icons/Ionicons.d.ts.map +1 -1
  702. package/lib/typescript/module/ui/icons/MaterialCommunityIcons.d.ts.map +1 -1
  703. package/lib/typescript/module/ui/icons/decorativeIconSet.d.ts.map +1 -1
  704. package/lib/typescript/module/ui/index.d.ts.map +1 -1
  705. package/lib/typescript/module/ui/isFrontend.d.ts.map +1 -1
  706. package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
  707. package/lib/typescript/module/ui/navigation/surfaces.d.ts.map +1 -1
  708. package/lib/typescript/module/ui/oauth/applicationSessionLane.d.ts.map +1 -1
  709. package/lib/typescript/module/ui/oauth/browserAuthTransport.d.ts.map +1 -1
  710. package/lib/typescript/module/ui/oauth/browserBridge.d.ts.map +1 -1
  711. package/lib/typescript/module/ui/oauth/completeOAuthCode.d.ts.map +1 -1
  712. package/lib/typescript/module/ui/oauth/nativeAuthTransport.d.ts.map +1 -1
  713. package/lib/typescript/module/ui/oauth/oauthHandshake.d.ts.map +1 -1
  714. package/lib/typescript/module/ui/oauth/oauthPopup.d.ts.map +1 -1
  715. package/lib/typescript/module/ui/oauth/oauthPopupMessages.d.ts.map +1 -1
  716. package/lib/typescript/module/ui/oauth/types.d.ts.map +1 -1
  717. package/lib/typescript/module/ui/runtime/createOxyRuntime.d.ts.map +1 -1
  718. package/lib/typescript/module/ui/screens/AccountMembersScreen.d.ts.map +1 -1
  719. package/lib/typescript/module/ui/screens/AccountSecurityPanelScreen.d.ts.map +1 -1
  720. package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  721. package/lib/typescript/module/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
  722. package/lib/typescript/module/ui/screens/AppInfoScreen.d.ts.map +1 -1
  723. package/lib/typescript/module/ui/screens/AvatarCropScreen.d.ts.map +1 -1
  724. package/lib/typescript/module/ui/screens/ChangeAvatarScreen.d.ts.map +1 -1
  725. package/lib/typescript/module/ui/screens/ConnectedAppsScreen.d.ts.map +1 -1
  726. package/lib/typescript/module/ui/screens/CreateAccountScreen.d.ts.map +1 -1
  727. package/lib/typescript/module/ui/screens/DomainsScreen.d.ts.map +1 -1
  728. package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  729. package/lib/typescript/module/ui/screens/EditProfileScreen.d.ts.map +1 -1
  730. package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
  731. package/lib/typescript/module/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  732. package/lib/typescript/module/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  733. package/lib/typescript/module/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  734. package/lib/typescript/module/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -1
  735. package/lib/typescript/module/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
  736. package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  737. package/lib/typescript/module/ui/screens/NotificationsScreen.d.ts.map +1 -1
  738. package/lib/typescript/module/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  739. package/lib/typescript/module/ui/screens/PreferencesScreen.d.ts.map +1 -1
  740. package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  741. package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
  742. package/lib/typescript/module/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  743. package/lib/typescript/module/ui/screens/UserLinksScreen.d.ts.map +1 -1
  744. package/lib/typescript/module/ui/screens/UserListScreen.d.ts.map +1 -1
  745. package/lib/typescript/module/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  746. package/lib/typescript/module/ui/screens/fileManagement/FileLibraryError.d.ts.map +1 -1
  747. package/lib/typescript/module/ui/screens/fileManagement/FileListSection.d.ts.map +1 -1
  748. package/lib/typescript/module/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
  749. package/lib/typescript/module/ui/screens/fileManagement/UploadBar.d.ts.map +1 -1
  750. package/lib/typescript/module/ui/screens/fileManagement/hooks/useFileUploadState.d.ts.map +1 -1
  751. package/lib/typescript/module/ui/screens/fileManagement/photoGridLayout.d.ts.map +1 -1
  752. package/lib/typescript/module/ui/screens/fileManagement/shared.d.ts.map +1 -1
  753. package/lib/typescript/module/ui/screens/linkFormat.d.ts.map +1 -1
  754. package/lib/typescript/module/ui/screens/trust/TrustAboutScreen.d.ts.map +1 -1
  755. package/lib/typescript/module/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  756. package/lib/typescript/module/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -1
  757. package/lib/typescript/module/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  758. package/lib/typescript/module/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  759. package/lib/typescript/module/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  760. package/lib/typescript/module/ui/server.d.ts.map +1 -1
  761. package/lib/typescript/module/ui/session/authStore.d.ts.map +1 -1
  762. package/lib/typescript/module/ui/session/backgroundSession.d.ts.map +1 -1
  763. package/lib/typescript/module/ui/session/createSessionClient.d.ts.map +1 -1
  764. package/lib/typescript/module/ui/session/deviceCredentialTracker.d.ts.map +1 -1
  765. package/lib/typescript/module/ui/session/identityBinding.d.ts.map +1 -1
  766. package/lib/typescript/module/ui/session/sharedDeviceCredentialStore.d.ts.map +1 -1
  767. package/lib/typescript/module/ui/session/tokenLossRecovery.d.ts.map +1 -1
  768. package/lib/typescript/module/ui/session/tokenTransport.d.ts.map +1 -1
  769. package/lib/typescript/module/ui/stores/assetStore.d.ts.map +1 -1
  770. package/lib/typescript/module/ui/stores/followStore.d.ts.map +1 -1
  771. package/lib/typescript/module/ui/types/fileManagement.d.ts.map +1 -1
  772. package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
  773. package/lib/typescript/module/ui/types/surfaceScreen.d.ts.map +1 -1
  774. package/lib/typescript/module/ui/utils/accountDeletionHandoff.d.ts.map +1 -1
  775. package/lib/typescript/module/ui/utils/avatarUtils.d.ts.map +1 -1
  776. package/lib/typescript/module/ui/utils/clipboard.native.d.ts +16 -5
  777. package/lib/typescript/module/ui/utils/clipboard.native.d.ts.map +1 -1
  778. package/lib/typescript/module/ui/utils/commonsStoreLinks.d.ts.map +1 -1
  779. package/lib/typescript/module/ui/utils/errorHandlers.d.ts +1 -1
  780. package/lib/typescript/module/ui/utils/errorHandlers.d.ts.map +1 -1
  781. package/lib/typescript/module/ui/utils/fileManagement.d.ts +4 -4
  782. package/lib/typescript/module/ui/utils/fileManagement.d.ts.map +1 -1
  783. package/lib/typescript/module/ui/utils/sessionHelpers.d.ts +1 -1
  784. package/lib/typescript/module/ui/utils/sessionHelpers.d.ts.map +1 -1
  785. package/lib/typescript/module/ui/utils/userUtils.d.ts.map +1 -1
  786. package/lib/typescript/module/utils/hookUtils.d.ts.map +1 -1
  787. package/lib/typescript/types/expo-crypto.d.ts +2 -4
  788. package/lib/typescript/types/expo-document-picker.d.ts +27 -28
  789. package/lib/typescript/types/expo-image-picker.d.ts +27 -27
  790. package/lib/typescript/types/expo-secure-store.d.ts +11 -4
  791. package/lib/typescript/types/express.d.ts +22 -7
  792. package/package.json +4 -5
  793. package/src/assets/icons/OxyServices.tsx +42 -40
  794. package/src/assets/illustrations/HighFive.tsx +58 -31
  795. package/src/index.ts +99 -86
  796. package/src/notifications/deviceNotifications.ts +9 -7
  797. package/src/types/expo-crypto.d.ts +2 -4
  798. package/src/types/expo-document-picker.d.ts +27 -28
  799. package/src/types/expo-image-picker.d.ts +27 -27
  800. package/src/types/expo-secure-store.d.ts +11 -4
  801. package/src/types/express.d.ts +22 -7
  802. package/src/ui/analytics/productAnalytics.tsx +5 -5
  803. package/src/ui/boot/__tests__/coldBootNoIdpRedirect.test.ts +91 -29
  804. package/src/ui/boot/runProviderColdBoot.ts +12 -3
  805. package/src/ui/client.ts +31 -31
  806. package/src/ui/components/BenefitList.tsx +78 -77
  807. package/src/ui/components/BloomLocaleBridge.tsx +3 -3
  808. package/src/ui/components/FollowButton.tsx +88 -84
  809. package/src/ui/components/FollowTargetButton.tsx +15 -6
  810. package/src/ui/components/LanguageBridge.tsx +24 -19
  811. package/src/ui/components/OxyAuthChooser.tsx +17 -3
  812. package/src/ui/components/OxyAuthPrompt.tsx +79 -98
  813. package/src/ui/components/OxyConsentScreen.tsx +51 -12
  814. package/src/ui/components/OxyProvider.tsx +189 -182
  815. package/src/ui/components/OxySignInButton.tsx +415 -405
  816. package/src/ui/components/OxySignInRequestSurface.tsx +7 -1
  817. package/src/ui/components/PeableButton.tsx +57 -49
  818. package/src/ui/components/ProfileButton.tsx +158 -109
  819. package/src/ui/components/ProfileSummaryCard.tsx +64 -64
  820. package/src/ui/components/RequireOxyAuth.tsx +15 -3
  821. package/src/ui/components/SettingsIcon.tsx +24 -19
  822. package/src/ui/components/SurfaceHeaderAction.tsx +6 -1
  823. package/src/ui/components/SurfaceScreen.tsx +21 -16
  824. package/src/ui/components/__tests__/BloomLocaleBridge.test.tsx +1 -1
  825. package/src/ui/components/__tests__/LanguageBridge.test.tsx +15 -5
  826. package/src/ui/components/__tests__/OxyConsentScreen.test.tsx +21 -11
  827. package/src/ui/components/__tests__/followButtonAccessibility.test.tsx +42 -15
  828. package/src/ui/components/__tests__/followTargetButton.test.ts +23 -20
  829. package/src/ui/components/authChooser/AccountsMenuView.tsx +70 -56
  830. package/src/ui/components/authChooser/TroubleDisclosure.tsx +6 -1
  831. package/src/ui/components/authChooser/requestSurfaces.tsx +3 -1
  832. package/src/ui/components/authChooser/types.ts +6 -1
  833. package/src/ui/components/feedback/constants.ts +36 -12
  834. package/src/ui/components/feedback/types.ts +30 -30
  835. package/src/ui/components/feedback/useFeedbackForm.ts +38 -35
  836. package/src/ui/components/fileManagement/FileDetailsModal.tsx +86 -92
  837. package/src/ui/components/fileManagement/FileViewer.tsx +362 -338
  838. package/src/ui/components/fileManagement/UploadPreview.tsx +134 -127
  839. package/src/ui/components/followButtonAccessibility.ts +6 -2
  840. package/src/ui/components/followRules.ts +6 -2
  841. package/src/ui/components/icon/FAIRWalletIcon.tsx +47 -35
  842. package/src/ui/components/logo/LogoText.tsx +6 -1
  843. package/src/ui/components/modals/DeleteAccountModal.tsx +89 -83
  844. package/src/ui/components/oauthNavigation.ts +54 -56
  845. package/src/ui/components/payment/PaymentDetailsStep.tsx +269 -201
  846. package/src/ui/components/payment/PaymentMethodStep.tsx +88 -68
  847. package/src/ui/components/payment/PaymentReviewStep.tsx +119 -102
  848. package/src/ui/components/payment/PaymentSuccessStep.tsx +48 -48
  849. package/src/ui/components/payment/PaymentSummaryStep.tsx +167 -124
  850. package/src/ui/components/payment/constants.ts +38 -23
  851. package/src/ui/components/payment/paymentStyles.ts +252 -251
  852. package/src/ui/components/payment/types.ts +24 -24
  853. package/src/ui/components/photogrid/JustifiedPhotoGrid.tsx +207 -183
  854. package/src/ui/components/photogrid/__tests__/chunkPhotos.test.ts +32 -33
  855. package/src/ui/components/signIn/InlineCommonsQr.tsx +14 -6
  856. package/src/ui/components/signIn/OxyAccountPicker.tsx +19 -4
  857. package/src/ui/components/signIn/OxyAuthScreen.tsx +21 -11
  858. package/src/ui/components/signIn/OxyAuthenticatorPanel.tsx +47 -13
  859. package/src/ui/components/signIn/OxyDeleteAccountPanel.tsx +14 -4
  860. package/src/ui/components/signIn/OxyLinkCommonsPanel.tsx +69 -15
  861. package/src/ui/components/signIn/OxyPasswordPanel.tsx +19 -4
  862. package/src/ui/components/signIn/OxySignInPanel.tsx +74 -21
  863. package/src/ui/components/signIn/OxySignUpPanel.tsx +60 -12
  864. package/src/ui/components/signIn/ReauthStep.tsx +26 -5
  865. package/src/ui/components/signIn/accountFlowParts.tsx +45 -16
  866. package/src/ui/components/signIn/artwork.ts +3 -1
  867. package/src/ui/components/signIn/signInFlowStore.ts +5 -1
  868. package/src/ui/components/styles/overlay.tsx +10 -11
  869. package/src/ui/components/styles/shadow.tsx +59 -59
  870. package/src/ui/components/surfaces/ActionSheetSurface.tsx +51 -61
  871. package/src/ui/components/utils/hasTouchHandler.tsx +3 -13
  872. package/src/ui/components/utils/roundLayoutSize.ts +1 -2
  873. package/src/ui/components/utils/splitStyles.ts +2 -5
  874. package/src/ui/constants/spacing.ts +8 -9
  875. package/src/ui/context/OxyContext.tsx +324 -140
  876. package/src/ui/context/__tests__/commitSessionFlow.test.ts +8 -3
  877. package/src/ui/context/__tests__/isolatedOAuthSession.test.ts +11 -3
  878. package/src/ui/context/commitSessionFlow.ts +15 -3
  879. package/src/ui/context/hooks/useAuthOperations.ts +54 -16
  880. package/src/ui/context/isolatedOAuthSession.ts +4 -1
  881. package/src/ui/context/oxyContextTypes.ts +26 -9
  882. package/src/ui/context/useOxyAccountGraph.ts +26 -4
  883. package/src/ui/hooks/accountDialogSnapshot.ts +3 -1
  884. package/src/ui/hooks/accountQueryPersistence.ts +16 -5
  885. package/src/ui/hooks/mutations/mutationFactory.ts +11 -6
  886. package/src/ui/hooks/mutations/useAccountMutations.ts +77 -54
  887. package/src/ui/hooks/mutations/useServicesMutations.ts +10 -11
  888. package/src/ui/hooks/persistedQueryCache.ts +10 -2
  889. package/src/ui/hooks/queries/__tests__/userCache.test.ts +72 -17
  890. package/src/ui/hooks/queries/__tests__/userCacheClear.test.ts +18 -23
  891. package/src/ui/hooks/queries/paymentTypes.ts +2 -2
  892. package/src/ui/hooks/queries/queryKeys.ts +5 -5
  893. package/src/ui/hooks/queries/useAccountQueries.ts +12 -17
  894. package/src/ui/hooks/queries/useFileQueries.ts +88 -92
  895. package/src/ui/hooks/queries/usePaymentQueries.ts +13 -26
  896. package/src/ui/hooks/queries/usePersonalPlans.ts +14 -6
  897. package/src/ui/hooks/queries/useSecurityQueries.ts +16 -29
  898. package/src/ui/hooks/queries/useServicesQueries.ts +17 -23
  899. package/src/ui/hooks/queries/userCache.ts +249 -270
  900. package/src/ui/hooks/queryClient.ts +9 -5
  901. package/src/ui/hooks/useAssets.ts +166 -160
  902. package/src/ui/hooks/useAsyncAction.ts +92 -91
  903. package/src/ui/hooks/useAuth.ts +45 -42
  904. package/src/ui/hooks/useAvatarPicker.ts +2 -5
  905. package/src/ui/hooks/useDeviceManagement.ts +0 -2
  906. package/src/ui/hooks/useDeviceSwitcher.ts +73 -68
  907. package/src/ui/hooks/useFileFiltering.ts +2 -2
  908. package/src/ui/hooks/useFollow.ts +139 -67
  909. package/src/ui/hooks/useFollowTarget.ts +11 -11
  910. package/src/ui/hooks/useI18n.ts +7 -2
  911. package/src/ui/hooks/useProfileEditing.ts +167 -155
  912. package/src/ui/hooks/useQueryClient.ts +2 -3
  913. package/src/ui/hooks/useReduceMotion.ts +21 -21
  914. package/src/ui/hooks/useResolvedFileUrls.ts +5 -1
  915. package/src/ui/hooks/useSessionManagement.ts +3 -1
  916. package/src/ui/hooks/useSettingToggle.ts +122 -114
  917. package/src/ui/hooks/useStorage.ts +1 -4
  918. package/src/ui/hooks/useSurfaceFrameWidth.ts +3 -1
  919. package/src/ui/icons/Ionicons.ts +1 -5
  920. package/src/ui/icons/MaterialCommunityIcons.ts +1 -5
  921. package/src/ui/icons/__tests__/decorativeIconSet.test.tsx +3 -1
  922. package/src/ui/icons/decorativeIconSet.ts +13 -2
  923. package/src/ui/index.ts +4 -4
  924. package/src/ui/isFrontend.ts +3 -2
  925. package/src/ui/navigation/__tests__/getSurfaceConfig.test.ts +83 -83
  926. package/src/ui/navigation/__tests__/surfaceNavStack.test.ts +8 -2
  927. package/src/ui/navigation/bottomSheetManager.ts +1 -1
  928. package/src/ui/navigation/routes.ts +90 -88
  929. package/src/ui/navigation/surfaces.ts +7 -6
  930. package/src/ui/oauth/__tests__/browserAuthTransport.test.ts +18 -11
  931. package/src/ui/oauth/__tests__/browserBridge.test.ts +108 -21
  932. package/src/ui/oauth/__tests__/completeOAuthCode.test.ts +9 -6
  933. package/src/ui/oauth/__tests__/explicitOAuthConsent.test.ts +222 -241
  934. package/src/ui/oauth/__tests__/nativeAuthTransport.test.ts +118 -35
  935. package/src/ui/oauth/__tests__/oauthBearerCommit.http.test.ts +60 -18
  936. package/src/ui/oauth/__tests__/oauthPopup.test.ts +2 -7
  937. package/src/ui/oauth/__tests__/oauthPopupMessages.test.ts +9 -7
  938. package/src/ui/oauth/__tests__/sharedCompletionPath.test.ts +4 -5
  939. package/src/ui/oauth/applicationSessionLane.ts +12 -3
  940. package/src/ui/oauth/browserAuthTransport.ts +15 -7
  941. package/src/ui/oauth/browserBridge.ts +22 -5
  942. package/src/ui/oauth/completeOAuthCode.ts +9 -6
  943. package/src/ui/oauth/nativeAuthTransport.ts +73 -20
  944. package/src/ui/oauth/oauthHandshake.ts +6 -1
  945. package/src/ui/oauth/oauthPopup.ts +6 -4
  946. package/src/ui/oauth/oauthPopupMessages.ts +3 -4
  947. package/src/ui/oauth/types.ts +1 -3
  948. package/src/ui/runtime/createOxyRuntime.ts +21 -4
  949. package/src/ui/screens/AccountMembersScreen.tsx +274 -204
  950. package/src/ui/screens/AccountSecurityPanelScreen.tsx +3 -1
  951. package/src/ui/screens/AccountSettingsScreen.tsx +133 -113
  952. package/src/ui/screens/AccountVerificationScreen.tsx +176 -161
  953. package/src/ui/screens/AppInfoScreen.tsx +360 -304
  954. package/src/ui/screens/AvatarCropScreen.tsx +977 -988
  955. package/src/ui/screens/ChangeAvatarScreen.tsx +257 -253
  956. package/src/ui/screens/ConnectedAppsScreen.tsx +117 -130
  957. package/src/ui/screens/CreateAccountScreen.tsx +173 -129
  958. package/src/ui/screens/DomainsScreen.tsx +157 -140
  959. package/src/ui/screens/EditProfileFieldScreen.tsx +693 -663
  960. package/src/ui/screens/EditProfileScreen.tsx +106 -100
  961. package/src/ui/screens/FileManagementScreen.tsx +1505 -1162
  962. package/src/ui/screens/HelpSupportScreen.tsx +88 -75
  963. package/src/ui/screens/HistoryViewScreen.tsx +143 -102
  964. package/src/ui/screens/LanguageSelectorScreen.tsx +206 -199
  965. package/src/ui/screens/LearnMoreUsernamesScreen.tsx +92 -110
  966. package/src/ui/screens/LegalDocumentsScreen.tsx +134 -193
  967. package/src/ui/screens/ManageAccountScreen.tsx +649 -871
  968. package/src/ui/screens/NotificationsScreen.tsx +111 -143
  969. package/src/ui/screens/PaymentGatewayScreen.tsx +229 -244
  970. package/src/ui/screens/PreferencesScreen.tsx +153 -196
  971. package/src/ui/screens/PrivacySettingsScreen.tsx +509 -351
  972. package/src/ui/screens/ProfileScreen.tsx +416 -319
  973. package/src/ui/screens/SearchSettingsScreen.tsx +100 -98
  974. package/src/ui/screens/UserLinksScreen.tsx +48 -43
  975. package/src/ui/screens/UserListScreen.tsx +53 -30
  976. package/src/ui/screens/WelcomeNewUserScreen.tsx +430 -334
  977. package/src/ui/screens/__tests__/linkFormat.test.ts +58 -62
  978. package/src/ui/screens/__tests__/photoGridLayout.test.ts +43 -47
  979. package/src/ui/screens/fileManagement/FileLibraryError.tsx +33 -27
  980. package/src/ui/screens/fileManagement/FileListSection.tsx +96 -87
  981. package/src/ui/screens/fileManagement/PhotoPickerSection.tsx +508 -475
  982. package/src/ui/screens/fileManagement/UploadBar.tsx +26 -16
  983. package/src/ui/screens/fileManagement/hooks/useFileUploadState.ts +514 -490
  984. package/src/ui/screens/fileManagement/photoGridLayout.ts +13 -13
  985. package/src/ui/screens/fileManagement/shared.ts +40 -38
  986. package/src/ui/screens/linkFormat.ts +14 -14
  987. package/src/ui/screens/trust/TrustAboutScreen.tsx +53 -51
  988. package/src/ui/screens/trust/TrustCenterScreen.tsx +156 -214
  989. package/src/ui/screens/trust/TrustFAQScreen.tsx +60 -67
  990. package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +183 -183
  991. package/src/ui/screens/trust/TrustRewardsScreen.tsx +495 -494
  992. package/src/ui/screens/trust/TrustRulesScreen.tsx +84 -85
  993. package/src/ui/server.ts +12 -15
  994. package/src/ui/session/__tests__/authStore.test.ts +6 -1
  995. package/src/ui/session/__tests__/createSessionClient.test.ts +22 -8
  996. package/src/ui/session/__tests__/sharedDeviceCredentialStore.test.ts +24 -6
  997. package/src/ui/session/__tests__/tokenLossRecovery.test.ts +3 -1
  998. package/src/ui/session/__tests__/tokenTransport.test.ts +9 -2
  999. package/src/ui/session/authStore.ts +7 -1
  1000. package/src/ui/session/backgroundSession.ts +4 -3
  1001. package/src/ui/session/createSessionClient.ts +17 -5
  1002. package/src/ui/session/deviceCredentialTracker.ts +12 -6
  1003. package/src/ui/session/identityBinding.ts +6 -1
  1004. package/src/ui/session/sharedDeviceCredentialStore.ts +15 -4
  1005. package/src/ui/session/tokenLossRecovery.ts +24 -10
  1006. package/src/ui/session/tokenTransport.ts +5 -1
  1007. package/src/ui/stores/__tests__/followStore.test.ts +20 -7
  1008. package/src/ui/stores/assetStore.ts +209 -207
  1009. package/src/ui/stores/followStore.ts +80 -39
  1010. package/src/ui/stores/followTargetStore.ts +1 -1
  1011. package/src/ui/types/fileManagement.ts +48 -49
  1012. package/src/ui/types/navigation.ts +168 -168
  1013. package/src/ui/types/surfaceScreen.ts +4 -1
  1014. package/src/ui/utils/__tests__/deviceSessionTitle.test.ts +4 -2
  1015. package/src/ui/utils/accountDeletionHandoff.ts +14 -3
  1016. package/src/ui/utils/avatarUtils.ts +7 -6
  1017. package/src/ui/utils/clipboard.native.ts +23 -6
  1018. package/src/ui/utils/commonsStoreLinks.ts +2 -1
  1019. package/src/ui/utils/errorHandlers.ts +7 -12
  1020. package/src/ui/utils/fileManagement.ts +92 -103
  1021. package/src/ui/utils/iconNames.ts +60 -60
  1022. package/src/ui/utils/sessionHelpers.ts +1 -6
  1023. package/src/ui/utils/storageHelpers.ts +0 -1
  1024. package/src/ui/utils/userUtils.ts +2 -6
  1025. package/src/utils/hookUtils.ts +77 -65
@@ -18,8 +18,8 @@ import { getNormalizedUserHandle, logger, normalizeProfileLinks } from '@oxy.so/
18
18
  import { extractErrorMessage } from '../utils/errorHandlers';
19
19
 
20
20
  interface ProfileScreenProps extends BaseScreenProps {
21
- userId: string;
22
- username?: string;
21
+ userId: string;
22
+ username?: string;
23
23
  }
24
24
 
25
25
  const AVATAR_SIZE = 96;
@@ -27,344 +27,441 @@ const BANNER_HEIGHT = 160;
27
27
  const AVATAR_OVERLAP = -56;
28
28
  const INFO_ICON_SIZE = 18;
29
29
 
30
- const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme, goBack, navigate }) => {
31
- // Use useOxy() hook for OxyContext values. "Me" for own-profile detection
32
- // and the own-profile fallback is the ACTIVE account (the account switched
33
- // into), so previewing my profile while switched into an org/project/bot
34
- // resolves "this is mine" against that account, not the session owner.
35
- const { oxyServices, user: currentUser } = useOxy();
30
+ const ProfileScreen: React.FC<ProfileScreenProps> = ({
31
+ userId,
32
+ username,
33
+ theme,
34
+ goBack,
35
+ navigate,
36
+ }) => {
37
+ // Use useOxy() hook for OxyContext values. "Me" for own-profile detection
38
+ // and the own-profile fallback is the ACTIVE account (the account switched
39
+ // into), so previewing my profile while switched into an org/project/bot
40
+ // resolves "this is mine" against that account, not the session owner.
41
+ const { oxyServices, user: currentUser } = useOxy();
36
42
 
37
- // Use the follow hook for real follower data
38
- const {
39
- followerCount,
40
- followingCount,
41
- isLoadingCounts,
42
- } = useFollow(userId);
43
+ // Use the follow hook for real follower data
44
+ const { followerCount, followingCount, isLoadingCounts } = useFollow(userId);
43
45
 
44
- const bloomTheme = useTheme();
45
- const { t } = useI18n();
46
+ const bloomTheme = useTheme();
47
+ const { t } = useI18n();
46
48
 
47
- // Check if current user is viewing their own profile
48
- // Normalize IDs by trimming whitespace to handle format mismatches
49
- const normalizeId = (id: string | undefined | null): string => {
50
- if (!id) return '';
51
- return String(id).trim();
52
- };
49
+ // Check if current user is viewing their own profile
50
+ // Normalize IDs by trimming whitespace to handle format mismatches
51
+ const normalizeId = (id: string | undefined | null): string => {
52
+ if (!id) return '';
53
+ return String(id).trim();
54
+ };
53
55
 
54
- const currentUserId = normalizeId(currentUser?.id);
55
- const targetUserId = normalizeId(userId);
56
- const isOwnProfile = !!(currentUserId && targetUserId && currentUserId === targetUserId);
56
+ const currentUserId = normalizeId(currentUser?.id);
57
+ const targetUserId = normalizeId(userId);
58
+ const isOwnProfile = !!(currentUserId && targetUserId && currentUserId === targetUserId);
57
59
 
58
- // Profile + reputation + stats in ONE React Query (no data-fetch effect). The
59
- // reputation/stats reads swallow their own failures; only `getUserById` can
60
- // reject the query, and for MY OWN profile a failed fetch falls back to the
61
- // active-account snapshot instead of erroring. The key includes both ids so a
62
- // switch/own-profile change refetches.
63
- const profileQuery = useQuery({
64
- queryKey: ['profileScreen', targetUserId, currentUserId],
65
- enabled: !!userId,
66
- retry: false,
67
- queryFn: async () => {
68
- // Follower/following counts come from the `useFollow` hook.
69
- const [profileRes, reputationRes] = await Promise.all([
70
- oxyServices.users.get(userId).catch((err: unknown) => {
71
- if (isOwnProfile) return currentUser;
72
- logger.error(
73
- 'Profile loading error',
74
- err instanceof Error ? err : new Error(String(err)),
75
- { component: 'ProfileScreen' },
76
- );
77
- throw err;
78
- }),
79
- (isOwnProfile
80
- ? oxyServices.reputation.balance()
81
- : oxyServices.reputation.balance(userId))
82
- .then((balance): { total: number | undefined } => ({ total: balance.total }))
83
- .catch((): { total: number | undefined } => ({ total: undefined })),
84
- ]);
85
- if (!profileRes) {
86
- throw new Error('Profile data is not available');
87
- }
88
- return {
89
- profile: profileRes,
90
- reputationTotal: typeof reputationRes.total === 'number' ? reputationRes.total : null,
91
- links: normalizeProfileLinks(profileRes.linksMetadata, profileRes.links),
92
- };
93
- },
94
- });
95
-
96
- const profile = profileQuery.data?.profile ?? null;
97
- const reputationTotal = profileQuery.data?.reputationTotal ?? null;
98
- const links = profileQuery.data?.links ?? [];
99
- const isLoading = !!userId && profileQuery.isLoading;
100
-
101
- // Friendly, status-aware error copy derived from the query error (no effect).
102
- const error = useMemo<string | null>(() => {
103
- if (!userId) return 'No user ID provided';
104
- if (!profileQuery.isError) return null;
105
- const err = profileQuery.error;
106
- const errorWithStatus =
107
- err && typeof err === 'object' && 'status' in err
108
- ? (err as { status?: number; message?: string })
109
- : null;
110
- const errorMessageText = extractErrorMessage(err, '');
111
- if (
112
- errorWithStatus?.status === 404 ||
113
- errorMessageText.includes('not found') ||
114
- errorMessageText.includes('Resource not found')
115
- ) {
116
- return isOwnProfile
117
- ? 'Unable to load your profile from the server. This may be due to a temporary service issue.'
118
- : 'This user profile could not be found or may have been removed.';
119
- }
120
- if (errorWithStatus?.status === 403) {
121
- return 'You do not have permission to view this profile.';
122
- }
123
- if (errorWithStatus?.status === 500) {
124
- return 'Server error occurred while loading the profile. Please try again later.';
125
- }
126
- return errorMessageText || 'Failed to load profile';
127
- }, [userId, profileQuery.isError, profileQuery.error, isOwnProfile]);
60
+ // Profile + reputation + stats in ONE React Query (no data-fetch effect). The
61
+ // reputation/stats reads swallow their own failures; only `getUserById` can
62
+ // reject the query, and for MY OWN profile a failed fetch falls back to the
63
+ // active-account snapshot instead of erroring. The key includes both ids so a
64
+ // switch/own-profile change refetches.
65
+ const profileQuery = useQuery({
66
+ queryKey: ['profileScreen', targetUserId, currentUserId],
67
+ enabled: !!userId,
68
+ retry: false,
69
+ queryFn: async () => {
70
+ // Follower/following counts come from the `useFollow` hook.
71
+ const [profileRes, reputationRes] = await Promise.all([
72
+ oxyServices.users.get(userId).catch((err: unknown) => {
73
+ if (isOwnProfile) return currentUser;
74
+ logger.error(
75
+ 'Profile loading error',
76
+ err instanceof Error ? err : new Error(String(err)),
77
+ { component: 'ProfileScreen' },
78
+ );
79
+ throw err;
80
+ }),
81
+ (isOwnProfile ? oxyServices.reputation.balance() : oxyServices.reputation.balance(userId))
82
+ .then((balance): { total: number | undefined } => ({ total: balance.total }))
83
+ .catch((): { total: number | undefined } => ({ total: undefined })),
84
+ ]);
85
+ if (!profileRes) {
86
+ throw new Error('Profile data is not available');
87
+ }
88
+ return {
89
+ profile: profileRes,
90
+ reputationTotal: typeof reputationRes.total === 'number' ? reputationRes.total : null,
91
+ links: normalizeProfileLinks(profileRes.linksMetadata, profileRes.links),
92
+ };
93
+ },
94
+ });
128
95
 
129
- // Display name: the loaded profile's, else the passed handle. Also the nav-bar
130
- // title (a stable "Profile" fallback before it resolves), so the banner +
131
- // overlapping avatar scroll as content UNDER the shared gradient nav bar.
132
- // `onImage` tone keeps the title + close legible over the colored banner.
133
- // Ends in a string, deliberately: `getNormalizedUserHandle` answers `null` for a
134
- // user it cannot normalise, and letting that null travel makes this `string | null`
135
- // — which does not satisfy `Avatar.name` and does not typecheck. Empty is the honest
136
- // bottom of the chain and every reader below already treats it as falsy
137
- // (`displayName || t('profile.title')`), so nothing renders a literal "null".
138
- const displayName = profile
139
- ? (profile.name?.displayName ?? getNormalizedUserHandle(profile) ?? '')
140
- : username || '';
141
- useSurfaceHeader({
142
- title: displayName || t('profile.title'),
143
- largeTitle: false,
144
- tone: 'onImage',
145
- });
96
+ const profile = profileQuery.data?.profile ?? null;
97
+ const reputationTotal = profileQuery.data?.reputationTotal ?? null;
98
+ const links = profileQuery.data?.links ?? [];
99
+ const isLoading = !!userId && profileQuery.isLoading;
146
100
 
147
- if (isLoading) {
148
- return (
149
- <View className="items-center py-space-40">
150
- <ActivityIndicator size="large" color={bloomTheme.colors.primary} />
151
- </View>
152
- );
101
+ // Friendly, status-aware error copy derived from the query error (no effect).
102
+ const error = useMemo<string | null>(() => {
103
+ if (!userId) return 'No user ID provided';
104
+ if (!profileQuery.isError) return null;
105
+ const err = profileQuery.error;
106
+ const errorWithStatus =
107
+ err && typeof err === 'object' && 'status' in err
108
+ ? (err as { status?: number; message?: string })
109
+ : null;
110
+ const errorMessageText = extractErrorMessage(err, '');
111
+ if (
112
+ errorWithStatus?.status === 404 ||
113
+ errorMessageText.includes('not found') ||
114
+ errorMessageText.includes('Resource not found')
115
+ ) {
116
+ return isOwnProfile
117
+ ? 'Unable to load your profile from the server. This may be due to a temporary service issue.'
118
+ : 'This user profile could not be found or may have been removed.';
153
119
  }
154
-
155
- if (error) {
156
- // The shared nav header owns back/close; the error body is just the alert.
157
- return (
158
- <View style={styles.errorContent} className="px-space-32 gap-space-12 py-space-40">
159
- <Ionicons name="alert-circle" size={48} color={bloomTheme.colors.error} />
160
- <H2 style={styles.errorTitle} className="text-text text-center">
161
- {t('profile.errorTitle') || 'Profile Error'}
162
- </H2>
163
- <Text style={styles.errorText} className="text-text">{error}</Text>
164
- <Text style={styles.errorSubtext} className="text-text-secondary">
165
- {t('profile.errorSubtext') || "This could happen if the user doesn't exist or the profile service is unavailable."}
166
- </Text>
167
- </View>
168
- );
120
+ if (errorWithStatus?.status === 403) {
121
+ return 'You do not have permission to view this profile.';
122
+ }
123
+ if (errorWithStatus?.status === 500) {
124
+ return 'Server error occurred while loading the profile. Please try again later.';
169
125
  }
126
+ return errorMessageText || 'Failed to load profile';
127
+ }, [userId, profileQuery.isError, profileQuery.error, isOwnProfile]);
170
128
 
171
- // The singular `location` field was removed from the User contract; derive
172
- // the primary place from the `locations` list instead. `locations` is only
173
- // reachable through the User index signature (typed `unknown`), so narrow it
174
- // defensively before rendering the chip.
175
- const primaryLocation = ((): string | undefined => {
176
- const locations = profile?.locations;
177
- const first: unknown = Array.isArray(locations) ? locations[0] : undefined;
178
- if (first && typeof first === 'object' && 'name' in first && typeof first.name === 'string') {
179
- return first.name || undefined;
180
- }
181
- return undefined;
182
- })();
129
+ // Display name: the loaded profile's, else the passed handle. Also the nav-bar
130
+ // title (a stable "Profile" fallback before it resolves), so the banner +
131
+ // overlapping avatar scroll as content UNDER the shared gradient nav bar.
132
+ // `onImage` tone keeps the title + close legible over the colored banner.
133
+ // Ends in a string, deliberately: `getNormalizedUserHandle` answers `null` for a
134
+ // user it cannot normalise, and letting that null travel makes this `string | null`
135
+ // — which does not satisfy `Avatar.name` and does not typecheck. Empty is the honest
136
+ // bottom of the chain and every reader below already treats it as falsy
137
+ // (`displayName || t('profile.title')`), so nothing renders a literal "null".
138
+ const displayName = profile
139
+ ? (profile.name?.displayName ?? getNormalizedUserHandle(profile) ?? '')
140
+ : username || '';
141
+ useSurfaceHeader({
142
+ title: displayName || t('profile.title'),
143
+ largeTitle: false,
144
+ tone: 'onImage',
145
+ });
183
146
 
147
+ if (isLoading) {
184
148
  return (
185
- <View style={styles.scrollContainer}>
186
- {/* Banner Image */}
187
- <View style={styles.bannerContainer} className="bg-fill-brand/20">
188
- <View style={styles.flex} className="bg-fill-brand" />
189
- </View>
190
- {/* Avatar overlapping banner */}
191
- <View style={styles.avatarRow} className="px-screen-margin">
192
- <View style={styles.avatarWrapper} className="border-bg bg-bg rounded-radius-max">
193
- <Avatar
194
- // `getFileDownloadUrl` answers `null` for a reference it cannot
195
- // resolve, and `Avatar.source` takes `undefined` for "no picture" —
196
- // the two spellings of absent do not meet, so the coalesce is the
197
- // whole fix. Without it this file does not typecheck, which blocks
198
- // `bun run build` and therefore every publish of this package.
199
- source={
200
- profile?.avatar
201
- ? (oxyServices.assets.publicUrl(profile.avatar, 'thumb') ?? undefined)
202
- : undefined
203
- }
204
- name={displayName}
205
- size={AVATAR_SIZE}
206
- />
207
- </View>
208
- {/* Conditional Action Button */}
209
- <View style={styles.actionButtonWrapper}>
210
- {isOwnProfile ? (
211
- <Button
212
- appearance="subtle" tone="neutral"
213
- size="sm"
214
- onPress={() => navigate?.('ManageAccount')}
215
- >
216
- {t('editProfile.title') || 'Edit Profile'}
217
- </Button>
218
- ) : (
219
- <FollowButton
220
- userId={userId}
221
- onFollowChange={(isFollowing) => {
222
- // The follow button will automatically update counts via Zustand
223
- if (__DEV__) {
224
- logger.debug(`Follow status changed: ${isFollowing}`, { component: 'ProfileScreen' });
225
- }
226
- }}
227
- />
228
- )}
229
- </View>
230
- </View>
231
- {/* Profile Info */}
232
- <View style={styles.header} className="px-screen-margin">
233
- <H2 style={styles.displayName} className="text-text">
234
- {displayName}
235
- </H2>
236
- {profile?.username && (
237
- <Text style={styles.subText} className="text-text-secondary">@{profile.username}</Text>
238
- )}
239
- {/* Bio */}
240
- <Text style={styles.bio} className="text-text">{profile?.bio || (t('profile.noBio') || 'This user has no bio yet.')}</Text>
241
- </View>
149
+ <View className="items-center py-space-40">
150
+ <ActivityIndicator size="large" color={bloomTheme.colors.primary} />
151
+ </View>
152
+ );
153
+ }
242
154
 
243
- {/* Info Grid as a settings list group */}
244
- <View className="px-screen-margin">
245
- <SettingsListGroup>
246
- {profile?.createdAt && (
247
- <SettingsListItem
248
- icon={<Ionicons name="calendar-outline" size={INFO_ICON_SIZE} color={bloomTheme.colors.textSecondary} />}
249
- title={t('profile.joinedOn', { date: new Date(profile.createdAt).toLocaleDateString() }) || `Joined ${new Date(profile.createdAt).toLocaleDateString()}`}
250
- showChevron={false}
251
- />
252
- )}
253
- {primaryLocation && (
254
- <SettingsListItem
255
- icon={<Ionicons name="location-outline" size={INFO_ICON_SIZE} color={bloomTheme.colors.textSecondary} />}
256
- title={primaryLocation}
257
- showChevron={false}
258
- />
259
- )}
260
- {profile?.website && (
261
- <SettingsListItem
262
- icon={<Ionicons name="globe-outline" size={INFO_ICON_SIZE} color={bloomTheme.colors.textSecondary} />}
263
- title={profile.website}
264
- showChevron={false}
265
- />
266
- )}
267
- {profile && 'company' in profile && typeof profile.company === 'string' && profile.company && (
268
- <SettingsListItem
269
- icon={<Ionicons name="business-outline" size={INFO_ICON_SIZE} color={bloomTheme.colors.textSecondary} />}
270
- title={profile.company}
271
- showChevron={false}
272
- />
273
- )}
274
- {profile && 'jobTitle' in profile && typeof profile.jobTitle === 'string' && profile.jobTitle && (
275
- <SettingsListItem
276
- icon={<Ionicons name="briefcase-outline" size={INFO_ICON_SIZE} color={bloomTheme.colors.textSecondary} />}
277
- title={profile.jobTitle}
278
- showChevron={false}
279
- />
280
- )}
281
- {profile && 'education' in profile && typeof profile.education === 'string' && profile.education && (
282
- <SettingsListItem
283
- icon={<Ionicons name="school-outline" size={INFO_ICON_SIZE} color={bloomTheme.colors.textSecondary} />}
284
- title={profile.education}
285
- showChevron={false}
286
- />
287
- )}
288
- {profile && 'birthday' in profile && typeof profile.birthday === 'string' && profile.birthday && (
289
- <SettingsListItem
290
- icon={<Ionicons name="gift-outline" size={INFO_ICON_SIZE} color={bloomTheme.colors.textSecondary} />}
291
- title={t('profile.bornOn', { date: new Date(profile.birthday).toLocaleDateString() }) || `Born ${new Date(profile.birthday).toLocaleDateString()}`}
292
- showChevron={false}
293
- />
294
- )}
295
- {links.length > 0 && (
296
- <SettingsListItem
297
- icon={<Ionicons name="link-outline" size={INFO_ICON_SIZE} color={bloomTheme.colors.textSecondary} />}
298
- title={links[0].url}
299
- value={links.length > 1 ? (t('profile.more', { count: links.length - 1 }) || `+ ${links.length - 1} more`) : undefined}
300
- onPress={() => navigate?.('UserLinks', { userId, links })}
301
- />
302
- )}
303
- </SettingsListGroup>
304
- </View>
155
+ if (error) {
156
+ // The shared nav header owns back/close; the error body is just the alert.
157
+ return (
158
+ <View style={styles.errorContent} className="px-space-32 gap-space-12 py-space-40">
159
+ <Ionicons name="alert-circle" size={48} color={bloomTheme.colors.error} />
160
+ <H2 style={styles.errorTitle} className="text-text text-center">
161
+ {t('profile.errorTitle') || 'Profile Error'}
162
+ </H2>
163
+ <Text style={styles.errorText} className="text-text">
164
+ {error}
165
+ </Text>
166
+ <Text style={styles.errorSubtext} className="text-text-secondary">
167
+ {t('profile.errorSubtext') ||
168
+ "This could happen if the user doesn't exist or the profile service is unavailable."}
169
+ </Text>
170
+ </View>
171
+ );
172
+ }
173
+
174
+ // The singular `location` field was removed from the User contract; derive
175
+ // the primary place from the `locations` list instead. `locations` is only
176
+ // reachable through the User index signature (typed `unknown`), so narrow it
177
+ // defensively before rendering the chip.
178
+ const primaryLocation = ((): string | undefined => {
179
+ const locations = profile?.locations;
180
+ const first: unknown = Array.isArray(locations) ? locations[0] : undefined;
181
+ if (first && typeof first === 'object' && 'name' in first && typeof first.name === 'string') {
182
+ return first.name || undefined;
183
+ }
184
+ return undefined;
185
+ })();
305
186
 
306
- {/* All Stats in one row */}
307
- <View style={styles.statsRow} className="px-screen-margin">
308
- <View style={styles.statItem}>
309
- <Text style={styles.statAmount} className="text-text">{reputationTotal !== null && reputationTotal !== undefined ? reputationTotal : '--'}</Text>
310
- <Text style={styles.statLabel} className="text-text-secondary">{t('profile.reputation') || 'Reputation'}</Text>
311
- </View>
312
- <View style={styles.statItem}>
313
- {isLoadingCounts ? (
314
- <ActivityIndicator size="small" color={bloomTheme.colors.text} />
315
- ) : (
316
- <Text style={styles.statAmount} className="text-text">{followerCount !== null ? followerCount : '--'}</Text>
317
- )}
318
- <Text style={styles.statLabel} className="text-text-secondary">{t('profile.followers') || 'Followers'}</Text>
319
- </View>
320
- <View style={styles.statItem}>
321
- {isLoadingCounts ? (
322
- <ActivityIndicator size="small" color={bloomTheme.colors.text} />
323
- ) : (
324
- <Text style={styles.statAmount} className="text-text">{followingCount !== null ? followingCount : '--'}</Text>
325
- )}
326
- <Text style={styles.statLabel} className="text-text-secondary">{t('profile.following') || 'Following'}</Text>
327
- </View>
328
- </View>
187
+ return (
188
+ <View style={styles.scrollContainer}>
189
+ {/* Banner Image */}
190
+ <View style={styles.bannerContainer} className="bg-fill-brand/20">
191
+ <View style={styles.flex} className="bg-fill-brand" />
192
+ </View>
193
+ {/* Avatar overlapping banner */}
194
+ <View style={styles.avatarRow} className="px-screen-margin">
195
+ <View style={styles.avatarWrapper} className="border-bg bg-bg rounded-radius-max">
196
+ <Avatar
197
+ // `getFileDownloadUrl` answers `null` for a reference it cannot
198
+ // resolve, and `Avatar.source` takes `undefined` for "no picture" —
199
+ // the two spellings of absent do not meet, so the coalesce is the
200
+ // whole fix. Without it this file does not typecheck, which blocks
201
+ // `bun run build` and therefore every publish of this package.
202
+ source={
203
+ profile?.avatar
204
+ ? (oxyServices.assets.publicUrl(profile.avatar, 'thumb') ?? undefined)
205
+ : undefined
206
+ }
207
+ name={displayName}
208
+ size={AVATAR_SIZE}
209
+ />
329
210
  </View>
330
- );
211
+ {/* Conditional Action Button */}
212
+ <View style={styles.actionButtonWrapper}>
213
+ {isOwnProfile ? (
214
+ <Button
215
+ appearance="subtle"
216
+ tone="neutral"
217
+ size="sm"
218
+ onPress={() => navigate?.('ManageAccount')}
219
+ >
220
+ {t('editProfile.title') || 'Edit Profile'}
221
+ </Button>
222
+ ) : (
223
+ <FollowButton
224
+ userId={userId}
225
+ onFollowChange={(isFollowing) => {
226
+ // The follow button will automatically update counts via Zustand
227
+ if (__DEV__) {
228
+ logger.debug(`Follow status changed: ${isFollowing}`, {
229
+ component: 'ProfileScreen',
230
+ });
231
+ }
232
+ }}
233
+ />
234
+ )}
235
+ </View>
236
+ </View>
237
+ {/* Profile Info */}
238
+ <View style={styles.header} className="px-screen-margin">
239
+ <H2 style={styles.displayName} className="text-text">
240
+ {displayName}
241
+ </H2>
242
+ {profile?.username && (
243
+ <Text style={styles.subText} className="text-text-secondary">
244
+ @{profile.username}
245
+ </Text>
246
+ )}
247
+ {/* Bio */}
248
+ <Text style={styles.bio} className="text-text">
249
+ {profile?.bio || t('profile.noBio') || 'This user has no bio yet.'}
250
+ </Text>
251
+ </View>
252
+
253
+ {/* Info Grid as a settings list group */}
254
+ <View className="px-screen-margin">
255
+ <SettingsListGroup>
256
+ {profile?.createdAt && (
257
+ <SettingsListItem
258
+ icon={
259
+ <Ionicons
260
+ name="calendar-outline"
261
+ size={INFO_ICON_SIZE}
262
+ color={bloomTheme.colors.textSecondary}
263
+ />
264
+ }
265
+ title={
266
+ t('profile.joinedOn', { date: new Date(profile.createdAt).toLocaleDateString() }) ||
267
+ `Joined ${new Date(profile.createdAt).toLocaleDateString()}`
268
+ }
269
+ showChevron={false}
270
+ />
271
+ )}
272
+ {primaryLocation && (
273
+ <SettingsListItem
274
+ icon={
275
+ <Ionicons
276
+ name="location-outline"
277
+ size={INFO_ICON_SIZE}
278
+ color={bloomTheme.colors.textSecondary}
279
+ />
280
+ }
281
+ title={primaryLocation}
282
+ showChevron={false}
283
+ />
284
+ )}
285
+ {profile?.website && (
286
+ <SettingsListItem
287
+ icon={
288
+ <Ionicons
289
+ name="globe-outline"
290
+ size={INFO_ICON_SIZE}
291
+ color={bloomTheme.colors.textSecondary}
292
+ />
293
+ }
294
+ title={profile.website}
295
+ showChevron={false}
296
+ />
297
+ )}
298
+ {profile &&
299
+ 'company' in profile &&
300
+ typeof profile.company === 'string' &&
301
+ profile.company && (
302
+ <SettingsListItem
303
+ icon={
304
+ <Ionicons
305
+ name="business-outline"
306
+ size={INFO_ICON_SIZE}
307
+ color={bloomTheme.colors.textSecondary}
308
+ />
309
+ }
310
+ title={profile.company}
311
+ showChevron={false}
312
+ />
313
+ )}
314
+ {profile &&
315
+ 'jobTitle' in profile &&
316
+ typeof profile.jobTitle === 'string' &&
317
+ profile.jobTitle && (
318
+ <SettingsListItem
319
+ icon={
320
+ <Ionicons
321
+ name="briefcase-outline"
322
+ size={INFO_ICON_SIZE}
323
+ color={bloomTheme.colors.textSecondary}
324
+ />
325
+ }
326
+ title={profile.jobTitle}
327
+ showChevron={false}
328
+ />
329
+ )}
330
+ {profile &&
331
+ 'education' in profile &&
332
+ typeof profile.education === 'string' &&
333
+ profile.education && (
334
+ <SettingsListItem
335
+ icon={
336
+ <Ionicons
337
+ name="school-outline"
338
+ size={INFO_ICON_SIZE}
339
+ color={bloomTheme.colors.textSecondary}
340
+ />
341
+ }
342
+ title={profile.education}
343
+ showChevron={false}
344
+ />
345
+ )}
346
+ {profile &&
347
+ 'birthday' in profile &&
348
+ typeof profile.birthday === 'string' &&
349
+ profile.birthday && (
350
+ <SettingsListItem
351
+ icon={
352
+ <Ionicons
353
+ name="gift-outline"
354
+ size={INFO_ICON_SIZE}
355
+ color={bloomTheme.colors.textSecondary}
356
+ />
357
+ }
358
+ title={
359
+ t('profile.bornOn', { date: new Date(profile.birthday).toLocaleDateString() }) ||
360
+ `Born ${new Date(profile.birthday).toLocaleDateString()}`
361
+ }
362
+ showChevron={false}
363
+ />
364
+ )}
365
+ {links.length > 0 && (
366
+ <SettingsListItem
367
+ icon={
368
+ <Ionicons
369
+ name="link-outline"
370
+ size={INFO_ICON_SIZE}
371
+ color={bloomTheme.colors.textSecondary}
372
+ />
373
+ }
374
+ title={links[0].url}
375
+ value={
376
+ links.length > 1
377
+ ? t('profile.more', { count: links.length - 1 }) || `+ ${links.length - 1} more`
378
+ : undefined
379
+ }
380
+ onPress={() => navigate?.('UserLinks', { userId, links })}
381
+ />
382
+ )}
383
+ </SettingsListGroup>
384
+ </View>
385
+
386
+ {/* All Stats in one row */}
387
+ <View style={styles.statsRow} className="px-screen-margin">
388
+ <View style={styles.statItem}>
389
+ <Text style={styles.statAmount} className="text-text">
390
+ {reputationTotal !== null && reputationTotal !== undefined ? reputationTotal : '--'}
391
+ </Text>
392
+ <Text style={styles.statLabel} className="text-text-secondary">
393
+ {t('profile.reputation') || 'Reputation'}
394
+ </Text>
395
+ </View>
396
+ <View style={styles.statItem}>
397
+ {isLoadingCounts ? (
398
+ <ActivityIndicator size="small" color={bloomTheme.colors.text} />
399
+ ) : (
400
+ <Text style={styles.statAmount} className="text-text">
401
+ {followerCount !== null ? followerCount : '--'}
402
+ </Text>
403
+ )}
404
+ <Text style={styles.statLabel} className="text-text-secondary">
405
+ {t('profile.followers') || 'Followers'}
406
+ </Text>
407
+ </View>
408
+ <View style={styles.statItem}>
409
+ {isLoadingCounts ? (
410
+ <ActivityIndicator size="small" color={bloomTheme.colors.text} />
411
+ ) : (
412
+ <Text style={styles.statAmount} className="text-text">
413
+ {followingCount !== null ? followingCount : '--'}
414
+ </Text>
415
+ )}
416
+ <Text style={styles.statLabel} className="text-text-secondary">
417
+ {t('profile.following') || 'Following'}
418
+ </Text>
419
+ </View>
420
+ </View>
421
+ </View>
422
+ );
331
423
  };
332
424
 
333
425
  // Layout-only styles: flex, dimensions, and the measured banner/avatar overlap
334
426
  // that no token class can express. Colors, spacing, radius, and typography roles
335
427
  // live on Bloom components + NativeWind token classes.
336
428
  const styles = StyleSheet.create({
337
- flex: { flex: 1 },
338
- scrollContainer: { alignItems: 'stretch', paddingBottom: 40 },
339
- bannerContainer: { height: BANNER_HEIGHT, position: 'relative', overflow: 'hidden' },
340
- avatarRow: {
341
- flexDirection: 'row',
342
- alignItems: 'flex-end',
343
- marginTop: AVATAR_OVERLAP,
344
- justifyContent: 'space-between',
345
- zIndex: 2,
346
- },
347
- avatarWrapper: { borderWidth: 5, overflow: 'hidden' },
348
- actionButtonWrapper: { flex: 1, alignItems: 'flex-end', justifyContent: 'flex-end', paddingBottom: 8 },
349
- header: { alignItems: 'flex-start', width: '100%', marginTop: 10 },
350
- displayName: { fontSize: 24, marginBottom: 2, letterSpacing: 0.1 },
351
- subText: { fontSize: 16, marginBottom: 2 },
352
- bio: { fontSize: 16, marginTop: 10, lineHeight: 22 },
353
- statsRow: {
354
- width: '100%',
355
- flexDirection: 'row',
356
- alignItems: 'center',
357
- marginTop: 14,
358
- justifyContent: 'space-between',
359
- },
360
- statItem: { flex: 1, alignItems: 'center', minWidth: 50, marginBottom: 12 },
361
- statLabel: { fontSize: 14, marginBottom: 2, textAlign: 'center' },
362
- statAmount: { fontSize: 24, fontWeight: 'bold', textAlign: 'center', letterSpacing: 0.2 },
363
- // Error state layout
364
- errorTitle: { fontSize: 20 },
365
- errorContent: { justifyContent: 'center', alignItems: 'center' },
366
- errorText: { fontSize: 18, fontWeight: '600', textAlign: 'center' },
367
- errorSubtext: { fontSize: 14, textAlign: 'center' },
429
+ flex: { flex: 1 },
430
+ scrollContainer: { alignItems: 'stretch', paddingBottom: 40 },
431
+ bannerContainer: { height: BANNER_HEIGHT, position: 'relative', overflow: 'hidden' },
432
+ avatarRow: {
433
+ flexDirection: 'row',
434
+ alignItems: 'flex-end',
435
+ marginTop: AVATAR_OVERLAP,
436
+ justifyContent: 'space-between',
437
+ zIndex: 2,
438
+ },
439
+ avatarWrapper: { borderWidth: 5, overflow: 'hidden' },
440
+ actionButtonWrapper: {
441
+ flex: 1,
442
+ alignItems: 'flex-end',
443
+ justifyContent: 'flex-end',
444
+ paddingBottom: 8,
445
+ },
446
+ header: { alignItems: 'flex-start', width: '100%', marginTop: 10 },
447
+ displayName: { fontSize: 24, marginBottom: 2, letterSpacing: 0.1 },
448
+ subText: { fontSize: 16, marginBottom: 2 },
449
+ bio: { fontSize: 16, marginTop: 10, lineHeight: 22 },
450
+ statsRow: {
451
+ width: '100%',
452
+ flexDirection: 'row',
453
+ alignItems: 'center',
454
+ marginTop: 14,
455
+ justifyContent: 'space-between',
456
+ },
457
+ statItem: { flex: 1, alignItems: 'center', minWidth: 50, marginBottom: 12 },
458
+ statLabel: { fontSize: 14, marginBottom: 2, textAlign: 'center' },
459
+ statAmount: { fontSize: 24, fontWeight: 'bold', textAlign: 'center', letterSpacing: 0.2 },
460
+ // Error state layout
461
+ errorTitle: { fontSize: 20 },
462
+ errorContent: { justifyContent: 'center', alignItems: 'center' },
463
+ errorText: { fontSize: 18, fontWeight: '600', textAlign: 'center' },
464
+ errorSubtext: { fontSize: 14, textAlign: 'center' },
368
465
  });
369
466
 
370
467
  export default ProfileScreen;