@oxyhq/services 22.9.0 → 22.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/lib/commonjs/index.js +24 -5
  2. package/lib/commonjs/index.js.map +1 -1
  3. package/lib/commonjs/ui/components/{OxyAccountDialog.js → OxyAccountDialogScreen.js} +25 -125
  4. package/lib/commonjs/ui/components/OxyAccountDialogScreen.js.map +1 -0
  5. package/lib/commonjs/ui/components/OxyAuthChooser.js +137 -40
  6. package/lib/commonjs/ui/components/OxyAuthChooser.js.map +1 -1
  7. package/lib/commonjs/ui/components/OxyConsentScreen.js +1 -1
  8. package/lib/commonjs/ui/components/ProfileButton.js +1 -1
  9. package/lib/commonjs/ui/components/RequireOxyAuth.js +1 -1
  10. package/lib/commonjs/ui/components/SurfaceHeaderAction.js +63 -0
  11. package/lib/commonjs/ui/components/SurfaceHeaderAction.js.map +1 -0
  12. package/lib/commonjs/ui/components/SurfaceScreen.js +52 -5
  13. package/lib/commonjs/ui/components/SurfaceScreen.js.map +1 -1
  14. package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js +46 -29
  15. package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
  16. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js +47 -23
  17. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js.map +1 -1
  18. package/lib/commonjs/ui/components/oxyAuthChooserStyles.js +22 -12
  19. package/lib/commonjs/ui/components/oxyAuthChooserStyles.js.map +1 -1
  20. package/lib/commonjs/ui/components/surfaces/ActionSheetSurface.js +83 -0
  21. package/lib/commonjs/ui/components/surfaces/ActionSheetSurface.js.map +1 -0
  22. package/lib/commonjs/ui/context/OxyContext.js +23 -9
  23. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  24. package/lib/commonjs/ui/hooks/useAvatarPicker.js +34 -39
  25. package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +1 -1
  26. package/lib/commonjs/ui/hooks/useSurfaceHeader.js +46 -0
  27. package/lib/commonjs/ui/hooks/useSurfaceHeader.js.map +1 -0
  28. package/lib/commonjs/ui/hooks/useSwitchableAccounts.js +1 -1
  29. package/lib/commonjs/ui/navigation/accountDialogManager.js +14 -2
  30. package/lib/commonjs/ui/navigation/accountDialogManager.js.map +1 -1
  31. package/lib/commonjs/ui/navigation/routes.js +3 -3
  32. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  33. package/lib/commonjs/ui/navigation/surfaceBackBridge.js +68 -0
  34. package/lib/commonjs/ui/navigation/surfaceBackBridge.js.map +1 -0
  35. package/lib/commonjs/ui/navigation/surfaceRegistry.js +52 -8
  36. package/lib/commonjs/ui/navigation/surfaceRegistry.js.map +1 -1
  37. package/lib/commonjs/ui/navigation/surfaces.js +42 -5
  38. package/lib/commonjs/ui/navigation/surfaces.js.map +1 -1
  39. package/lib/commonjs/ui/screens/AccountMembersScreen.js +214 -283
  40. package/lib/commonjs/ui/screens/AccountMembersScreen.js.map +1 -1
  41. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +88 -118
  42. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  43. package/lib/commonjs/ui/screens/AccountVerificationScreen.js +22 -36
  44. package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
  45. package/lib/commonjs/ui/screens/AppInfoScreen.js +219 -226
  46. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  47. package/lib/commonjs/ui/screens/AvatarCropScreen.js +10 -14
  48. package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -1
  49. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js +24 -39
  50. package/lib/commonjs/ui/screens/ConnectedAppsScreen.js.map +1 -1
  51. package/lib/commonjs/ui/screens/CreateAccountScreen.js +136 -158
  52. package/lib/commonjs/ui/screens/CreateAccountScreen.js.map +1 -1
  53. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +29 -36
  54. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
  55. package/lib/commonjs/ui/screens/EditProfileScreen.js +101 -109
  56. package/lib/commonjs/ui/screens/EditProfileScreen.js.map +1 -1
  57. package/lib/commonjs/ui/screens/FAQScreen.js +10 -15
  58. package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -1
  59. package/lib/commonjs/ui/screens/FeedbackScreen.js +8 -16
  60. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  61. package/lib/commonjs/ui/screens/FileManagementScreen.js +219 -206
  62. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  63. package/lib/commonjs/ui/screens/HelpSupportScreen.js +62 -69
  64. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
  65. package/lib/commonjs/ui/screens/HistoryViewScreen.js +63 -79
  66. package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
  67. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +69 -98
  68. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  69. package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js +8 -14
  70. package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
  71. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +77 -94
  72. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
  73. package/lib/commonjs/ui/screens/ManageAccountScreen.js +99 -134
  74. package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
  75. package/lib/commonjs/ui/screens/NotificationsScreen.js +69 -76
  76. package/lib/commonjs/ui/screens/NotificationsScreen.js.map +1 -1
  77. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +3 -8
  78. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  79. package/lib/commonjs/ui/screens/PreferencesScreen.js +67 -74
  80. package/lib/commonjs/ui/screens/PreferencesScreen.js.map +1 -1
  81. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +55 -91
  82. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  83. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +291 -304
  84. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  85. package/lib/commonjs/ui/screens/ProfileScreen.js +100 -114
  86. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  87. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +38 -45
  88. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
  89. package/lib/commonjs/ui/screens/SearchSettingsScreen.js +44 -57
  90. package/lib/commonjs/ui/screens/SearchSettingsScreen.js.map +1 -1
  91. package/lib/commonjs/ui/screens/UserLinksScreen.js +24 -31
  92. package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -1
  93. package/lib/commonjs/ui/screens/UserListScreen.js +14 -24
  94. package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
  95. package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js +1 -1
  96. package/lib/commonjs/ui/screens/trust/TrustAboutScreen.js +66 -75
  97. package/lib/commonjs/ui/screens/trust/TrustAboutScreen.js.map +1 -1
  98. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js +111 -139
  99. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  100. package/lib/commonjs/ui/screens/trust/TrustFAQScreen.js +13 -20
  101. package/lib/commonjs/ui/screens/trust/TrustFAQScreen.js.map +1 -1
  102. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js +14 -27
  103. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  104. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js +68 -85
  105. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  106. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js +28 -36
  107. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  108. package/lib/module/index.js +12 -5
  109. package/lib/module/index.js.map +1 -1
  110. package/lib/module/ui/components/{OxyAccountDialog.js → OxyAccountDialogScreen.js} +27 -127
  111. package/lib/module/ui/components/OxyAccountDialogScreen.js.map +1 -0
  112. package/lib/module/ui/components/OxyAuthChooser.js +137 -40
  113. package/lib/module/ui/components/OxyAuthChooser.js.map +1 -1
  114. package/lib/module/ui/components/OxyConsentScreen.js +1 -1
  115. package/lib/module/ui/components/ProfileButton.js +1 -1
  116. package/lib/module/ui/components/RequireOxyAuth.js +1 -1
  117. package/lib/module/ui/components/SurfaceHeaderAction.js +58 -0
  118. package/lib/module/ui/components/SurfaceHeaderAction.js.map +1 -0
  119. package/lib/module/ui/components/SurfaceScreen.js +53 -6
  120. package/lib/module/ui/components/SurfaceScreen.js.map +1 -1
  121. package/lib/module/ui/components/fileManagement/FileDetailsModal.js +46 -29
  122. package/lib/module/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
  123. package/lib/module/ui/components/modals/DeleteAccountModal.js +46 -23
  124. package/lib/module/ui/components/modals/DeleteAccountModal.js.map +1 -1
  125. package/lib/module/ui/components/oxyAuthChooserStyles.js +22 -12
  126. package/lib/module/ui/components/oxyAuthChooserStyles.js.map +1 -1
  127. package/lib/module/ui/components/surfaces/ActionSheetSurface.js +78 -0
  128. package/lib/module/ui/components/surfaces/ActionSheetSurface.js.map +1 -0
  129. package/lib/module/ui/context/OxyContext.js +23 -9
  130. package/lib/module/ui/context/OxyContext.js.map +1 -1
  131. package/lib/module/ui/hooks/useAvatarPicker.js +34 -39
  132. package/lib/module/ui/hooks/useAvatarPicker.js.map +1 -1
  133. package/lib/module/ui/hooks/useSurfaceHeader.js +42 -0
  134. package/lib/module/ui/hooks/useSurfaceHeader.js.map +1 -0
  135. package/lib/module/ui/hooks/useSwitchableAccounts.js +1 -1
  136. package/lib/module/ui/navigation/accountDialogManager.js +14 -2
  137. package/lib/module/ui/navigation/accountDialogManager.js.map +1 -1
  138. package/lib/module/ui/navigation/routes.js +3 -3
  139. package/lib/module/ui/navigation/routes.js.map +1 -1
  140. package/lib/module/ui/navigation/surfaceBackBridge.js +63 -0
  141. package/lib/module/ui/navigation/surfaceBackBridge.js.map +1 -0
  142. package/lib/module/ui/navigation/surfaceRegistry.js +52 -8
  143. package/lib/module/ui/navigation/surfaceRegistry.js.map +1 -1
  144. package/lib/module/ui/navigation/surfaces.js +42 -5
  145. package/lib/module/ui/navigation/surfaces.js.map +1 -1
  146. package/lib/module/ui/screens/AccountMembersScreen.js +218 -286
  147. package/lib/module/ui/screens/AccountMembersScreen.js.map +1 -1
  148. package/lib/module/ui/screens/AccountSettingsScreen.js +92 -121
  149. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  150. package/lib/module/ui/screens/AccountVerificationScreen.js +25 -38
  151. package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
  152. package/lib/module/ui/screens/AppInfoScreen.js +220 -227
  153. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  154. package/lib/module/ui/screens/AvatarCropScreen.js +10 -14
  155. package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -1
  156. package/lib/module/ui/screens/ConnectedAppsScreen.js +26 -40
  157. package/lib/module/ui/screens/ConnectedAppsScreen.js.map +1 -1
  158. package/lib/module/ui/screens/CreateAccountScreen.js +139 -160
  159. package/lib/module/ui/screens/CreateAccountScreen.js.map +1 -1
  160. package/lib/module/ui/screens/EditProfileFieldScreen.js +32 -38
  161. package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
  162. package/lib/module/ui/screens/EditProfileScreen.js +102 -110
  163. package/lib/module/ui/screens/EditProfileScreen.js.map +1 -1
  164. package/lib/module/ui/screens/FAQScreen.js +11 -15
  165. package/lib/module/ui/screens/FAQScreen.js.map +1 -1
  166. package/lib/module/ui/screens/FeedbackScreen.js +10 -17
  167. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  168. package/lib/module/ui/screens/FileManagementScreen.js +222 -208
  169. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  170. package/lib/module/ui/screens/HelpSupportScreen.js +64 -70
  171. package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
  172. package/lib/module/ui/screens/HistoryViewScreen.js +65 -81
  173. package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
  174. package/lib/module/ui/screens/LanguageSelectorScreen.js +71 -99
  175. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  176. package/lib/module/ui/screens/LearnMoreUsernamesScreen.js +10 -15
  177. package/lib/module/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
  178. package/lib/module/ui/screens/LegalDocumentsScreen.js +78 -94
  179. package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
  180. package/lib/module/ui/screens/ManageAccountScreen.js +102 -137
  181. package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
  182. package/lib/module/ui/screens/NotificationsScreen.js +71 -77
  183. package/lib/module/ui/screens/NotificationsScreen.js.map +1 -1
  184. package/lib/module/ui/screens/PaymentGatewayScreen.js +4 -9
  185. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  186. package/lib/module/ui/screens/PreferencesScreen.js +69 -75
  187. package/lib/module/ui/screens/PreferencesScreen.js.map +1 -1
  188. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +58 -93
  189. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  190. package/lib/module/ui/screens/PrivacySettingsScreen.js +293 -305
  191. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  192. package/lib/module/ui/screens/ProfileScreen.js +102 -116
  193. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  194. package/lib/module/ui/screens/SavesCollectionsScreen.js +40 -46
  195. package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
  196. package/lib/module/ui/screens/SearchSettingsScreen.js +46 -58
  197. package/lib/module/ui/screens/SearchSettingsScreen.js.map +1 -1
  198. package/lib/module/ui/screens/UserLinksScreen.js +26 -32
  199. package/lib/module/ui/screens/UserLinksScreen.js.map +1 -1
  200. package/lib/module/ui/screens/UserListScreen.js +14 -24
  201. package/lib/module/ui/screens/UserListScreen.js.map +1 -1
  202. package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js +1 -1
  203. package/lib/module/ui/screens/trust/TrustAboutScreen.js +67 -75
  204. package/lib/module/ui/screens/trust/TrustAboutScreen.js.map +1 -1
  205. package/lib/module/ui/screens/trust/TrustCenterScreen.js +112 -139
  206. package/lib/module/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  207. package/lib/module/ui/screens/trust/TrustFAQScreen.js +15 -21
  208. package/lib/module/ui/screens/trust/TrustFAQScreen.js.map +1 -1
  209. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js +14 -26
  210. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  211. package/lib/module/ui/screens/trust/TrustRewardsScreen.js +69 -85
  212. package/lib/module/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  213. package/lib/module/ui/screens/trust/TrustRulesScreen.js +30 -37
  214. package/lib/module/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  215. package/lib/typescript/commonjs/index.d.ts +2 -0
  216. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  217. package/lib/typescript/commonjs/ui/components/{OxyAccountDialog.d.ts → OxyAccountDialogScreen.d.ts} +4 -4
  218. package/lib/typescript/commonjs/ui/components/OxyAccountDialogScreen.d.ts.map +1 -0
  219. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts +3 -3
  220. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts.map +1 -1
  221. package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts +2 -2
  222. package/lib/typescript/commonjs/ui/components/RequireOxyAuth.d.ts +1 -1
  223. package/lib/typescript/commonjs/ui/components/SurfaceHeaderAction.d.ts +16 -0
  224. package/lib/typescript/commonjs/ui/components/SurfaceHeaderAction.d.ts.map +1 -0
  225. package/lib/typescript/commonjs/ui/components/SurfaceScreen.d.ts +4 -2
  226. package/lib/typescript/commonjs/ui/components/SurfaceScreen.d.ts.map +1 -1
  227. package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts +14 -4
  228. package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
  229. package/lib/typescript/commonjs/ui/components/modals/DeleteAccountModal.d.ts +17 -2
  230. package/lib/typescript/commonjs/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
  231. package/lib/typescript/commonjs/ui/components/oxyAuthChooserStyles.d.ts +19 -9
  232. package/lib/typescript/commonjs/ui/components/oxyAuthChooserStyles.d.ts.map +1 -1
  233. package/lib/typescript/commonjs/ui/components/surfaces/ActionSheetSurface.d.ts +38 -0
  234. package/lib/typescript/commonjs/ui/components/surfaces/ActionSheetSurface.d.ts.map +1 -0
  235. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  236. package/lib/typescript/commonjs/ui/hooks/useAvatarPicker.d.ts +7 -11
  237. package/lib/typescript/commonjs/ui/hooks/useAvatarPicker.d.ts.map +1 -1
  238. package/lib/typescript/commonjs/ui/hooks/useSurfaceHeader.d.ts +31 -0
  239. package/lib/typescript/commonjs/ui/hooks/useSurfaceHeader.d.ts.map +1 -0
  240. package/lib/typescript/commonjs/ui/hooks/useSwitchableAccounts.d.ts +1 -1
  241. package/lib/typescript/commonjs/ui/navigation/accountDialogManager.d.ts +14 -2
  242. package/lib/typescript/commonjs/ui/navigation/accountDialogManager.d.ts.map +1 -1
  243. package/lib/typescript/commonjs/ui/navigation/surfaceBackBridge.d.ts +16 -0
  244. package/lib/typescript/commonjs/ui/navigation/surfaceBackBridge.d.ts.map +1 -0
  245. package/lib/typescript/commonjs/ui/navigation/surfaceRegistry.d.ts +31 -13
  246. package/lib/typescript/commonjs/ui/navigation/surfaceRegistry.d.ts.map +1 -1
  247. package/lib/typescript/commonjs/ui/navigation/surfaces.d.ts.map +1 -1
  248. package/lib/typescript/commonjs/ui/screens/AccountMembersScreen.d.ts.map +1 -1
  249. package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  250. package/lib/typescript/commonjs/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
  251. package/lib/typescript/commonjs/ui/screens/AppInfoScreen.d.ts.map +1 -1
  252. package/lib/typescript/commonjs/ui/screens/AvatarCropScreen.d.ts +0 -4
  253. package/lib/typescript/commonjs/ui/screens/AvatarCropScreen.d.ts.map +1 -1
  254. package/lib/typescript/commonjs/ui/screens/ConnectedAppsScreen.d.ts.map +1 -1
  255. package/lib/typescript/commonjs/ui/screens/CreateAccountScreen.d.ts.map +1 -1
  256. package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  257. package/lib/typescript/commonjs/ui/screens/EditProfileScreen.d.ts.map +1 -1
  258. package/lib/typescript/commonjs/ui/screens/FAQScreen.d.ts.map +1 -1
  259. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +1 -1
  260. package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
  261. package/lib/typescript/commonjs/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  262. package/lib/typescript/commonjs/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  263. package/lib/typescript/commonjs/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  264. package/lib/typescript/commonjs/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -1
  265. package/lib/typescript/commonjs/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
  266. package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts +1 -1
  267. package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  268. package/lib/typescript/commonjs/ui/screens/NotificationsScreen.d.ts.map +1 -1
  269. package/lib/typescript/commonjs/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  270. package/lib/typescript/commonjs/ui/screens/PreferencesScreen.d.ts.map +1 -1
  271. package/lib/typescript/commonjs/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  272. package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  273. package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
  274. package/lib/typescript/commonjs/ui/screens/SavesCollectionsScreen.d.ts.map +1 -1
  275. package/lib/typescript/commonjs/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  276. package/lib/typescript/commonjs/ui/screens/UserLinksScreen.d.ts.map +1 -1
  277. package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts.map +1 -1
  278. package/lib/typescript/commonjs/ui/screens/trust/TrustAboutScreen.d.ts.map +1 -1
  279. package/lib/typescript/commonjs/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  280. package/lib/typescript/commonjs/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -1
  281. package/lib/typescript/commonjs/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  282. package/lib/typescript/commonjs/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  283. package/lib/typescript/commonjs/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  284. package/lib/typescript/commonjs/ui/types/navigation.d.ts +8 -0
  285. package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
  286. package/lib/typescript/module/index.d.ts +2 -0
  287. package/lib/typescript/module/index.d.ts.map +1 -1
  288. package/lib/typescript/module/ui/components/{OxyAccountDialog.d.ts → OxyAccountDialogScreen.d.ts} +4 -4
  289. package/lib/typescript/module/ui/components/OxyAccountDialogScreen.d.ts.map +1 -0
  290. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts +3 -3
  291. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts.map +1 -1
  292. package/lib/typescript/module/ui/components/ProfileButton.d.ts +2 -2
  293. package/lib/typescript/module/ui/components/RequireOxyAuth.d.ts +1 -1
  294. package/lib/typescript/module/ui/components/SurfaceHeaderAction.d.ts +16 -0
  295. package/lib/typescript/module/ui/components/SurfaceHeaderAction.d.ts.map +1 -0
  296. package/lib/typescript/module/ui/components/SurfaceScreen.d.ts +4 -2
  297. package/lib/typescript/module/ui/components/SurfaceScreen.d.ts.map +1 -1
  298. package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts +14 -4
  299. package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
  300. package/lib/typescript/module/ui/components/modals/DeleteAccountModal.d.ts +17 -2
  301. package/lib/typescript/module/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
  302. package/lib/typescript/module/ui/components/oxyAuthChooserStyles.d.ts +19 -9
  303. package/lib/typescript/module/ui/components/oxyAuthChooserStyles.d.ts.map +1 -1
  304. package/lib/typescript/module/ui/components/surfaces/ActionSheetSurface.d.ts +38 -0
  305. package/lib/typescript/module/ui/components/surfaces/ActionSheetSurface.d.ts.map +1 -0
  306. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  307. package/lib/typescript/module/ui/hooks/useAvatarPicker.d.ts +7 -11
  308. package/lib/typescript/module/ui/hooks/useAvatarPicker.d.ts.map +1 -1
  309. package/lib/typescript/module/ui/hooks/useSurfaceHeader.d.ts +31 -0
  310. package/lib/typescript/module/ui/hooks/useSurfaceHeader.d.ts.map +1 -0
  311. package/lib/typescript/module/ui/hooks/useSwitchableAccounts.d.ts +1 -1
  312. package/lib/typescript/module/ui/navigation/accountDialogManager.d.ts +14 -2
  313. package/lib/typescript/module/ui/navigation/accountDialogManager.d.ts.map +1 -1
  314. package/lib/typescript/module/ui/navigation/surfaceBackBridge.d.ts +16 -0
  315. package/lib/typescript/module/ui/navigation/surfaceBackBridge.d.ts.map +1 -0
  316. package/lib/typescript/module/ui/navigation/surfaceRegistry.d.ts +31 -13
  317. package/lib/typescript/module/ui/navigation/surfaceRegistry.d.ts.map +1 -1
  318. package/lib/typescript/module/ui/navigation/surfaces.d.ts.map +1 -1
  319. package/lib/typescript/module/ui/screens/AccountMembersScreen.d.ts.map +1 -1
  320. package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  321. package/lib/typescript/module/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
  322. package/lib/typescript/module/ui/screens/AppInfoScreen.d.ts.map +1 -1
  323. package/lib/typescript/module/ui/screens/AvatarCropScreen.d.ts +0 -4
  324. package/lib/typescript/module/ui/screens/AvatarCropScreen.d.ts.map +1 -1
  325. package/lib/typescript/module/ui/screens/ConnectedAppsScreen.d.ts.map +1 -1
  326. package/lib/typescript/module/ui/screens/CreateAccountScreen.d.ts.map +1 -1
  327. package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  328. package/lib/typescript/module/ui/screens/EditProfileScreen.d.ts.map +1 -1
  329. package/lib/typescript/module/ui/screens/FAQScreen.d.ts.map +1 -1
  330. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +1 -1
  331. package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
  332. package/lib/typescript/module/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  333. package/lib/typescript/module/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  334. package/lib/typescript/module/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  335. package/lib/typescript/module/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -1
  336. package/lib/typescript/module/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
  337. package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts +1 -1
  338. package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  339. package/lib/typescript/module/ui/screens/NotificationsScreen.d.ts.map +1 -1
  340. package/lib/typescript/module/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  341. package/lib/typescript/module/ui/screens/PreferencesScreen.d.ts.map +1 -1
  342. package/lib/typescript/module/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  343. package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  344. package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
  345. package/lib/typescript/module/ui/screens/SavesCollectionsScreen.d.ts.map +1 -1
  346. package/lib/typescript/module/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  347. package/lib/typescript/module/ui/screens/UserLinksScreen.d.ts.map +1 -1
  348. package/lib/typescript/module/ui/screens/UserListScreen.d.ts.map +1 -1
  349. package/lib/typescript/module/ui/screens/trust/TrustAboutScreen.d.ts.map +1 -1
  350. package/lib/typescript/module/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  351. package/lib/typescript/module/ui/screens/trust/TrustFAQScreen.d.ts.map +1 -1
  352. package/lib/typescript/module/ui/screens/trust/TrustLeaderboardScreen.d.ts.map +1 -1
  353. package/lib/typescript/module/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  354. package/lib/typescript/module/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  355. package/lib/typescript/module/ui/types/navigation.d.ts +8 -0
  356. package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
  357. package/package.json +2 -2
  358. package/src/index.ts +12 -5
  359. package/src/ui/components/{OxyAccountDialog.tsx → OxyAccountDialogScreen.tsx} +21 -110
  360. package/src/ui/components/OxyAuthChooser.tsx +153 -33
  361. package/src/ui/components/OxyConsentScreen.tsx +1 -1
  362. package/src/ui/components/ProfileButton.tsx +2 -2
  363. package/src/ui/components/RequireOxyAuth.tsx +1 -1
  364. package/src/ui/components/SurfaceHeaderAction.tsx +60 -0
  365. package/src/ui/components/SurfaceScreen.tsx +66 -6
  366. package/src/ui/components/fileManagement/FileDetailsModal.tsx +50 -36
  367. package/src/ui/components/modals/DeleteAccountModal.tsx +47 -26
  368. package/src/ui/components/oxyAuthChooserStyles.ts +22 -12
  369. package/src/ui/components/surfaces/ActionSheetSurface.tsx +98 -0
  370. package/src/ui/context/OxyContext.tsx +22 -8
  371. package/src/ui/hooks/useAvatarPicker.ts +53 -66
  372. package/src/ui/hooks/useSurfaceHeader.ts +56 -0
  373. package/src/ui/hooks/useSwitchableAccounts.ts +1 -1
  374. package/src/ui/navigation/__tests__/surfaceNavStack.test.ts +68 -0
  375. package/src/ui/navigation/accountDialogManager.ts +14 -2
  376. package/src/ui/navigation/routes.ts +3 -3
  377. package/src/ui/navigation/surfaceBackBridge.ts +69 -0
  378. package/src/ui/navigation/surfaceRegistry.ts +80 -14
  379. package/src/ui/navigation/surfaces.ts +33 -5
  380. package/src/ui/screens/AccountMembersScreen.tsx +39 -100
  381. package/src/ui/screens/AccountSettingsScreen.tsx +32 -54
  382. package/src/ui/screens/AccountVerificationScreen.tsx +23 -51
  383. package/src/ui/screens/AppInfoScreen.tsx +6 -13
  384. package/src/ui/screens/AvatarCropScreen.tsx +8 -17
  385. package/src/ui/screens/ConnectedAppsScreen.tsx +39 -60
  386. package/src/ui/screens/CreateAccountScreen.tsx +13 -39
  387. package/src/ui/screens/EditProfileFieldScreen.tsx +30 -48
  388. package/src/ui/screens/EditProfileScreen.tsx +7 -16
  389. package/src/ui/screens/FAQScreen.tsx +9 -13
  390. package/src/ui/screens/FeedbackScreen.tsx +8 -22
  391. package/src/ui/screens/FileManagementScreen.tsx +191 -188
  392. package/src/ui/screens/HelpSupportScreen.tsx +7 -13
  393. package/src/ui/screens/HistoryViewScreen.tsx +26 -31
  394. package/src/ui/screens/LanguageSelectorScreen.tsx +12 -46
  395. package/src/ui/screens/LearnMoreUsernamesScreen.tsx +8 -16
  396. package/src/ui/screens/LegalDocumentsScreen.tsx +7 -22
  397. package/src/ui/screens/ManageAccountScreen.tsx +96 -165
  398. package/src/ui/screens/NotificationsScreen.tsx +7 -13
  399. package/src/ui/screens/PaymentGatewayScreen.tsx +3 -10
  400. package/src/ui/screens/PreferencesScreen.tsx +7 -13
  401. package/src/ui/screens/PremiumSubscriptionScreen.tsx +52 -90
  402. package/src/ui/screens/PrivacySettingsScreen.tsx +9 -21
  403. package/src/ui/screens/ProfileScreen.tsx +9 -11
  404. package/src/ui/screens/SavesCollectionsScreen.tsx +7 -13
  405. package/src/ui/screens/SearchSettingsScreen.tsx +9 -21
  406. package/src/ui/screens/UserLinksScreen.tsx +7 -14
  407. package/src/ui/screens/UserListScreen.tsx +2 -5
  408. package/src/ui/screens/fileManagement/PhotoPickerSection.tsx +1 -1
  409. package/src/ui/screens/trust/TrustAboutScreen.tsx +10 -17
  410. package/src/ui/screens/trust/TrustCenterScreen.tsx +9 -28
  411. package/src/ui/screens/trust/TrustFAQScreen.tsx +15 -18
  412. package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +3 -5
  413. package/src/ui/screens/trust/TrustRewardsScreen.tsx +11 -26
  414. package/src/ui/screens/trust/TrustRulesScreen.tsx +10 -13
  415. package/src/ui/types/navigation.ts +8 -0
  416. package/lib/commonjs/ui/components/Header.js +0 -305
  417. package/lib/commonjs/ui/components/Header.js.map +0 -1
  418. package/lib/commonjs/ui/components/OxyAccountDialog.js.map +0 -1
  419. package/lib/module/ui/components/Header.js +0 -299
  420. package/lib/module/ui/components/Header.js.map +0 -1
  421. package/lib/module/ui/components/OxyAccountDialog.js.map +0 -1
  422. package/lib/typescript/commonjs/ui/components/Header.d.ts +0 -33
  423. package/lib/typescript/commonjs/ui/components/Header.d.ts.map +0 -1
  424. package/lib/typescript/commonjs/ui/components/OxyAccountDialog.d.ts.map +0 -1
  425. package/lib/typescript/module/ui/components/Header.d.ts +0 -33
  426. package/lib/typescript/module/ui/components/Header.d.ts.map +0 -1
  427. package/lib/typescript/module/ui/components/OxyAccountDialog.d.ts.map +0 -1
  428. package/src/ui/components/Header.tsx +0 -224
@@ -8,10 +8,12 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _expoImage = require("expo-image");
10
10
  var _bloom = require("@oxyhq/bloom");
11
+ var _surfaces = require("@oxyhq/bloom/surfaces");
11
12
  var Skeleton = _interopRequireWildcard(require("@oxyhq/bloom/skeleton"));
12
13
  var _vectorIcons = require("@expo/vector-icons");
13
14
  var _fileStore = require("../stores/fileStore.js");
14
- var _Header = _interopRequireDefault(require("../components/Header.js"));
15
+ var _useSurfaceHeader = require("../hooks/useSurfaceHeader.js");
16
+ var _SurfaceHeaderAction = require("../components/SurfaceHeaderAction.js");
15
17
  var _JustifiedPhotoGrid = _interopRequireDefault(require("../components/photogrid/JustifiedPhotoGrid.js"));
16
18
  var _theme = require("@oxyhq/bloom/theme");
17
19
  var _OxyContext = require("../context/OxyContext.js");
@@ -22,6 +24,7 @@ var _useResolvedFileUrls = require("../hooks/useResolvedFileUrls.js");
22
24
  var _FileViewer = require("../components/fileManagement/FileViewer.js");
23
25
  var _FileDetailsModal = require("../components/fileManagement/FileDetailsModal.js");
24
26
  var _UploadPreview = require("../components/fileManagement/UploadPreview.js");
27
+ var _ActionSheetSurface = require("../components/surfaces/ActionSheetSurface.js");
25
28
  var _shared = require("./fileManagement/shared.js");
26
29
  var _useFileUploadState = require("./fileManagement/hooks/useFileUploadState.js");
27
30
  var _PhotoPickerSection = _interopRequireDefault(require("./fileManagement/PhotoPickerSection.js"));
@@ -34,6 +37,20 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
34
37
  // Genuinely-inline-only styles: `viewModeButton` is spread into an Animated.View
35
38
  // style array (interpolated backgroundColor), and the photo tiles are
36
39
  // `expo-image` (no className remap). Everything else uses NativeWind classNames.
40
+ // Nav-header slot layout for this screen's action row + review-mode back button.
41
+ const fmHeaderStyles = _reactNative.StyleSheet.create({
42
+ actionsRow: {
43
+ flexDirection: 'row',
44
+ gap: 8
45
+ },
46
+ backButton: {
47
+ width: 36,
48
+ height: 36,
49
+ borderRadius: 18,
50
+ alignItems: 'center',
51
+ justifyContent: 'center'
52
+ }
53
+ });
37
54
  const screenStyles = _reactNative.StyleSheet.create({
38
55
  viewModeButton: {
39
56
  paddingHorizontal: 10,
@@ -60,6 +77,7 @@ const FileManagementScreen = ({
60
77
  theme,
61
78
  goBack,
62
79
  navigate,
80
+ dismiss,
63
81
  userId,
64
82
  containerWidth,
65
83
  selectMode = false,
@@ -86,11 +104,6 @@ const FileManagementScreen = ({
86
104
  t
87
105
  } = (0, _useI18n.useI18n)();
88
106
  const uploadFileMutation = (0, _useAccountMutations.useUploadFile)();
89
- // Prompt controls
90
- const fileDeleteDialog = (0, _bloom.useDialogControl)();
91
- const bulkDeleteDialog = (0, _bloom.useDialogControl)();
92
- const visibilityChangeDialog = (0, _bloom.useDialogControl)();
93
- const [pendingDeleteFile, setPendingDeleteFile] = (0, _react.useState)(null);
94
107
  const files = (0, _fileStore.useFiles)();
95
108
  const {
96
109
  width: windowWidth
@@ -110,8 +123,6 @@ const FileManagementScreen = ({
110
123
  hasMore: true,
111
124
  loadingMore: false
112
125
  });
113
- const [selectedFile, setSelectedFile] = (0, _react.useState)(null);
114
- const fileDetailsControl = (0, _bloom.useDialogControl)();
115
126
  // In selectMode we never open the detailed viewer
116
127
  const [openedFile, setOpenedFile] = (0, _react.useState)(null);
117
128
  const [fileContent, setFileContent] = (0, _react.useState)(null);
@@ -235,11 +246,19 @@ const FileManagementScreen = ({
235
246
  }
236
247
  }
237
248
  if (!multiSelect) {
238
- onSelect?.(file);
239
- if (afterSelect === 'back') {
240
- goBack?.();
241
- } else if (afterSelect === 'close') {
242
- onClose?.();
249
+ if (onSelect) {
250
+ // Legacy callback caller (inbox, WelcomeNewUser): keep the
251
+ // callback + afterSelect behaviour unchanged.
252
+ onSelect(file);
253
+ if (afterSelect === 'back') {
254
+ goBack?.();
255
+ } else if (afterSelect === 'close') {
256
+ onClose?.();
257
+ }
258
+ } else {
259
+ // Promise-based picker (avatar picker): resolve the surface's
260
+ // present() promise with the picked file.
261
+ dismiss?.(file);
243
262
  }
244
263
  return;
245
264
  }
@@ -259,7 +278,7 @@ const FileManagementScreen = ({
259
278
  }
260
279
  return next;
261
280
  });
262
- }, [selectMode, multiSelect, onSelect, onClose, goBack, disabledMimeTypes, maxSelection, afterSelect, defaultVisibility, oxyServices, linkContext]);
281
+ }, [selectMode, multiSelect, onSelect, onClose, goBack, dismiss, disabledMimeTypes, maxSelection, afterSelect, defaultVisibility, oxyServices, linkContext]);
263
282
  const confirmMultiSelection = (0, _react.useCallback)(async () => {
264
283
  if (!selectMode || !multiSelect) return;
265
284
  const map = {};
@@ -292,9 +311,15 @@ const FileManagementScreen = ({
292
311
 
293
312
  // Wait for all updates (but don't block on failures)
294
313
  await Promise.allSettled(updatePromises);
295
- onConfirmSelection?.(chosen);
296
- onClose?.();
297
- }, [selectMode, multiSelect, selectedIds, files, onConfirmSelection, onClose, defaultVisibility, oxyServices, linkContext]);
314
+ if (onConfirmSelection) {
315
+ // Legacy callback caller (inbox): keep the callback + close.
316
+ onConfirmSelection(chosen);
317
+ onClose?.();
318
+ } else {
319
+ // Promise-based picker: resolve the surface with the chosen files.
320
+ dismiss?.(chosen);
321
+ }
322
+ }, [selectMode, multiSelect, selectedIds, files, onConfirmSelection, onClose, dismiss, defaultVisibility, oxyServices, linkContext]);
298
323
 
299
324
  // Private-safe thumbnail URLs for the currently-shown files, resolved in
300
325
  // ONE batch per page (not N per-tile) and cached by React Query. Uploads
@@ -503,18 +528,17 @@ const FileManagementScreen = ({
503
528
  }
504
529
  return rows;
505
530
  }, []);
506
- const confirmFileDelete = (0, _react.useCallback)((fileId, filename) => {
507
- setPendingDeleteFile({
508
- id: fileId,
509
- name: filename
531
+ const confirmFileDelete = (0, _react.useCallback)(async (fileId, filename) => {
532
+ const confirmed = await _surfaces.surfaces.confirm({
533
+ title: t('fileManagement.deleteFile') || 'Delete File',
534
+ message: t('fileManagement.confirms.deleteFile', {
535
+ filename
536
+ }),
537
+ confirmLabel: t('fileManagement.confirm') || 'Delete',
538
+ cancelLabel: t('common.cancel') || 'Cancel',
539
+ destructive: true
510
540
  });
511
- fileDeleteDialog.open();
512
- }, [fileDeleteDialog]);
513
- const handleFileDelete = (0, _react.useCallback)(async () => {
514
- if (!pendingDeleteFile) return;
515
- const {
516
- id: fileId
517
- } = pendingDeleteFile;
541
+ if (!confirmed) return;
518
542
  try {
519
543
  storeSetDeleting(fileId);
520
544
  await oxyServices.deleteFile(fileId);
@@ -538,15 +562,20 @@ const FileManagementScreen = ({
538
562
  }
539
563
  } finally {
540
564
  storeSetDeleting(null);
541
- setPendingDeleteFile(null);
542
565
  }
543
- }, [pendingDeleteFile, storeSetDeleting, oxyServices, loadFiles, t]);
544
- const confirmBulkDelete = (0, _react.useCallback)(() => {
545
- if (selectedIds.size === 0) return;
546
- bulkDeleteDialog.open();
547
- }, [selectedIds.size, bulkDeleteDialog]);
548
- const handleBulkDelete = (0, _react.useCallback)(async () => {
566
+ }, [storeSetDeleting, oxyServices, loadFiles, t]);
567
+ const confirmBulkDelete = (0, _react.useCallback)(async () => {
549
568
  if (selectedIds.size === 0) return;
569
+ const confirmed = await _surfaces.surfaces.confirm({
570
+ title: t('fileManagement.deleteFiles') || 'Delete Files',
571
+ message: t('fileManagement.confirms.deleteFiles', {
572
+ count: selectedIds.size
573
+ }),
574
+ confirmLabel: t('fileManagement.confirm') || 'Delete',
575
+ cancelLabel: t('common.cancel') || 'Cancel',
576
+ destructive: true
577
+ });
578
+ if (!confirmed) return;
550
579
  try {
551
580
  const deletePromises = Array.from(selectedIds).map(async fileId => {
552
581
  try {
@@ -582,7 +611,7 @@ const FileManagementScreen = ({
582
611
  } catch (error) {
583
612
  _bloom.toast.error((0, _shared.getErrorMessage)(error) || t('fileManagement.toasts.bulkDeleteError'));
584
613
  }
585
- }, [selectedIds, files, oxyServices, loadFiles]);
614
+ }, [selectedIds, oxyServices, loadFiles, t]);
586
615
  const handleBulkVisibilityChange = (0, _react.useCallback)(async visibility => {
587
616
  if (selectedIds.size === 0) return;
588
617
  try {
@@ -628,7 +657,28 @@ const FileManagementScreen = ({
628
657
  } catch (error) {
629
658
  _bloom.toast.error((0, _shared.getErrorMessage)(error) || t('fileManagement.toasts.visibilityError'));
630
659
  }
631
- }, [selectedIds, oxyServices, files, loadFiles]);
660
+ }, [selectedIds, oxyServices, files, loadFiles, t]);
661
+ const handleVisibilityChange = (0, _react.useCallback)(async () => {
662
+ if (selectedIds.size === 0) return;
663
+ const visibility = await (0, _ActionSheetSurface.presentActionSheet)({
664
+ title: t('fileManagement.changeVisibility') || 'Change Visibility',
665
+ message: t('fileManagement.changeVisibilityConfirm', {
666
+ count: selectedIds.size
667
+ }),
668
+ options: [{
669
+ label: t('fileManagement.private') || 'Private',
670
+ value: 'private'
671
+ }, {
672
+ label: t('fileManagement.public') || 'Public',
673
+ value: 'public'
674
+ }, {
675
+ label: t('fileManagement.unlisted') || 'Unlisted',
676
+ value: 'unlisted'
677
+ }],
678
+ cancelLabel: t('common.cancel') || 'Cancel'
679
+ });
680
+ if (visibility) await handleBulkVisibilityChange(visibility);
681
+ }, [selectedIds.size, handleBulkVisibilityChange, t]);
632
682
 
633
683
  // Unified download function - works on all platforms
634
684
  const handleFileDownload = async (fileId, filename) => {
@@ -723,8 +773,12 @@ const FileManagementScreen = ({
723
773
  // Don't reset view mode when closing a file
724
774
  };
725
775
  const showFileDetailsModal = file => {
726
- setSelectedFile(file);
727
- fileDetailsControl.open();
776
+ (0, _FileDetailsModal.presentFileDetails)({
777
+ file,
778
+ onDownload: handleFileDownload,
779
+ onDelete: confirmFileDelete,
780
+ isOwner: user?.id === targetUserId
781
+ });
728
782
  };
729
783
  const renderJustifiedPhotoItem = (0, _react.useCallback)((photo, width, height, isLast) => {
730
784
  const downloadUrl = thumbSourceFor(photo);
@@ -1172,6 +1226,84 @@ const FileManagementScreen = ({
1172
1226
  // picker's placement-aware container width / columns / tile size and the
1173
1227
  // Dialog-vs-bottom-sheet sizing. Skipping the browse chrome here is what keeps
1174
1228
  // the picker from flashing the wrong (file-manager) skeleton inside the Dialog.
1229
+ // The Dialog owns the nav header; this screen contributes its state-dependent
1230
+ // title/subtitle + action slots. The image-only picker mode is headerless
1231
+ // (PhotoPickerView owns its own bar), so this config is simply ignored there.
1232
+ const fmHeaderRight = (0, _react.useMemo)(() => {
1233
+ const actions = selectMode && multiSelect ? [{
1234
+ key: 'clear',
1235
+ label: t('fileManagement.clear'),
1236
+ onPress: () => setSelectedIds(new Set()),
1237
+ disabled: selectedIds.size === 0
1238
+ }, {
1239
+ key: 'confirm',
1240
+ label: t('fileManagement.confirm'),
1241
+ onPress: confirmMultiSelection,
1242
+ disabled: selectedIds.size === 0
1243
+ }] : !selectMode && selectedIds.size > 0 ? [{
1244
+ key: 'clear',
1245
+ label: t('fileManagement.clear'),
1246
+ onPress: () => setSelectedIds(new Set()),
1247
+ disabled: false
1248
+ }, {
1249
+ key: 'delete',
1250
+ label: t('fileManagement.delete', {
1251
+ count: selectedIds.size
1252
+ }),
1253
+ onPress: confirmBulkDelete,
1254
+ disabled: false
1255
+ }, {
1256
+ key: 'visibility',
1257
+ label: t('fileManagement.visibility'),
1258
+ onPress: handleVisibilityChange,
1259
+ disabled: false
1260
+ }] : [];
1261
+ if (actions.length === 0) return undefined;
1262
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1263
+ style: fmHeaderStyles.actionsRow,
1264
+ children: actions.map(a => /*#__PURE__*/(0, _jsxRuntime.jsx)(_SurfaceHeaderAction.SurfaceHeaderAction, {
1265
+ label: a.label,
1266
+ onPress: a.onPress,
1267
+ disabled: a.disabled
1268
+ }, a.key))
1269
+ });
1270
+ }, [selectMode, multiSelect, selectedIds, t, confirmMultiSelection, confirmBulkDelete, handleVisibilityChange]);
1271
+ const fmHeaderBack = (0, _react.useMemo)(() => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
1272
+ onPress: handleCancelUpload,
1273
+ accessibilityRole: "button",
1274
+ accessibilityLabel: t('common.back') || 'Back',
1275
+ hitSlop: 8,
1276
+ style: fmHeaderStyles.backButton,
1277
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
1278
+ name: "chevron-back",
1279
+ size: 20,
1280
+ color: colors.text
1281
+ })
1282
+ }), [handleCancelUpload, colors.text, t]);
1283
+ (0, _useSurfaceHeader.useSurfaceHeader)(showUploadPreview ? {
1284
+ title: t('fileManagement.reviewFiles'),
1285
+ subtitle: t('fileManagement.readyToUpload', {
1286
+ count: pendingFiles.length
1287
+ }),
1288
+ left: fmHeaderBack,
1289
+ largeTitle: false
1290
+ } : {
1291
+ title: selectMode ? multiSelect ? maxSelection ? t('fileManagement.selectedWithMax', {
1292
+ count: selectedIds.size,
1293
+ max: maxSelection
1294
+ }) : t('fileManagement.selected', {
1295
+ count: selectedIds.size
1296
+ }) : t('fileManagement.selectFile') : viewMode === 'photos' ? t('fileManagement.photos') : t('fileManagement.title'),
1297
+ subtitle: selectMode ? multiSelect ? t('fileManagement.available', {
1298
+ count: filteredFiles.length
1299
+ }) : t('fileManagement.tapToSelect') : filteredFiles.length === 1 ? t('fileManagement.itemCount', {
1300
+ count: filteredFiles.length
1301
+ }) : t('fileManagement.itemCount_plural', {
1302
+ count: filteredFiles.length
1303
+ }),
1304
+ right: fmHeaderRight,
1305
+ largeTitle: false
1306
+ });
1175
1307
  if (loading && !isImageOnlyPicker) {
1176
1308
  const GRID_PADDING = 10;
1177
1309
  const TILE_GAP = 4;
@@ -1265,141 +1397,75 @@ const FileManagementScreen = ({
1265
1397
  const photosOnly = filteredFiles.filter(file => file.contentType.startsWith('image/'));
1266
1398
  const isOwner = user?.id === targetUserId;
1267
1399
  const allowUpload = isOwner && allowUploadInSelectMode;
1268
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
1269
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_PhotoPickerSection.default, {
1270
- photos: photosOnly,
1271
- selectedIds: selectedIds,
1272
- multiSelect: multiSelect,
1273
- maxSelection: maxSelection,
1274
- allowUpload: allowUpload,
1275
- refreshing: refreshing,
1276
- uploading: uploading,
1277
- isPickingDocument: isPickingDocument,
1278
- uploadProgress: uploadProgress,
1279
- hasMore: paging.hasMore,
1280
- loadingMore: paging.loadingMore,
1281
- loading: loading,
1282
- reduceMotion: reduceMotion,
1283
- getThumbUrl: thumbSourceFor,
1284
- primaryColor: colors.primary,
1285
- isOwner: isOwner,
1286
- onTogglePhoto: toggleSelect,
1287
- onPreviewPhoto: file => showFileDetailsModal(file),
1288
- onUpload: handleFileUpload,
1289
- onRefresh: () => loadFiles('refresh'),
1290
- onLoadMore: () => loadFiles('more'),
1291
- onCancel: () => {
1400
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_PhotoPickerSection.default, {
1401
+ photos: photosOnly,
1402
+ selectedIds: selectedIds,
1403
+ multiSelect: multiSelect,
1404
+ maxSelection: maxSelection,
1405
+ allowUpload: allowUpload,
1406
+ refreshing: refreshing,
1407
+ uploading: uploading,
1408
+ isPickingDocument: isPickingDocument,
1409
+ uploadProgress: uploadProgress,
1410
+ hasMore: paging.hasMore,
1411
+ loadingMore: paging.loadingMore,
1412
+ loading: loading,
1413
+ reduceMotion: reduceMotion,
1414
+ getThumbUrl: thumbSourceFor,
1415
+ primaryColor: colors.primary,
1416
+ isOwner: isOwner,
1417
+ onTogglePhoto: toggleSelect
1418
+ // Long-press preview surfaces the file-detail panel on the stack.
1419
+ ,
1420
+ onPreviewPhoto: file => showFileDetailsModal(file),
1421
+ onUpload: handleFileUpload,
1422
+ onRefresh: () => loadFiles('refresh'),
1423
+ onLoadMore: () => loadFiles('more'),
1424
+ onCancel: () => {
1425
+ if (onSelect || onConfirmSelection) {
1426
+ // Legacy callback caller: preserve close/back behaviour.
1292
1427
  if (onClose) onClose();else goBack?.();
1293
- },
1294
- onConfirm: confirmMultiSelection,
1295
- t: t
1296
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_FileDetailsModal.FileDetailsModal, {
1297
- control: fileDetailsControl,
1298
- file: selectedFile,
1299
- onDownload: handleFileDownload,
1300
- onDelete: confirmFileDelete,
1301
- isOwner: isOwner
1302
- })]
1428
+ } else {
1429
+ // Promise picker (avatar): dismiss just this surface.
1430
+ dismiss?.();
1431
+ }
1432
+ },
1433
+ onConfirm: confirmMultiSelection,
1434
+ t: t
1303
1435
  });
1304
1436
  }
1305
1437
 
1306
1438
  // If a file is opened, show the file viewer
1307
1439
  if (!selectMode && openedFile) {
1308
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
1309
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_FileViewer.FileViewer, {
1310
- file: openedFile,
1311
- fileContent: fileContent,
1312
- loadingFileContent: loadingFileContent,
1313
- showFileDetailsInViewer: showFileDetailsInViewer,
1314
- onToggleDetails: () => setShowFileDetailsInViewer(!showFileDetailsInViewer),
1315
- onClose: handleCloseFile,
1316
- onDownload: handleFileDownload,
1317
- onDelete: confirmFileDelete,
1318
- isOwner: user?.id === targetUserId
1319
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_FileDetailsModal.FileDetailsModal, {
1320
- control: fileDetailsControl,
1321
- file: selectedFile,
1322
- onDownload: handleFileDownload,
1323
- onDelete: confirmFileDelete,
1324
- isOwner: user?.id === targetUserId
1325
- })]
1440
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FileViewer.FileViewer, {
1441
+ file: openedFile,
1442
+ fileContent: fileContent,
1443
+ loadingFileContent: loadingFileContent,
1444
+ showFileDetailsInViewer: showFileDetailsInViewer,
1445
+ onToggleDetails: () => setShowFileDetailsInViewer(!showFileDetailsInViewer),
1446
+ onClose: handleCloseFile,
1447
+ onDownload: handleFileDownload,
1448
+ onDelete: confirmFileDelete,
1449
+ isOwner: user?.id === targetUserId
1326
1450
  });
1327
1451
  }
1328
1452
 
1329
1453
  // If upload preview is showing, render it inline instead of the file list
1330
1454
  if (showUploadPreview) {
1331
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1455
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1332
1456
  className: "flex-1",
1333
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header.default, {
1334
- title: t('fileManagement.reviewFiles'),
1335
- subtitle: t('fileManagement.readyToUpload', {
1336
- count: pendingFiles.length
1337
- }),
1338
- onBack: handleCancelUpload,
1339
- showBackButton: true,
1340
- variant: "minimal",
1341
- elevation: "none",
1342
- titleAlignment: "left"
1343
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_UploadPreview.UploadPreview, {
1457
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_UploadPreview.UploadPreview, {
1344
1458
  pendingFiles: pendingFiles,
1345
1459
  onConfirm: handleConfirmUpload,
1346
1460
  onCancel: handleCancelUpload,
1347
1461
  onRemoveFile: removePendingFile,
1348
1462
  inline: true
1349
- })]
1463
+ })
1350
1464
  });
1351
1465
  }
1352
1466
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1353
1467
  className: "flex-1",
1354
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header.default, {
1355
- title: selectMode ? multiSelect ? maxSelection ? t('fileManagement.selectedWithMax', {
1356
- count: selectedIds.size,
1357
- max: maxSelection
1358
- }) : t('fileManagement.selected', {
1359
- count: selectedIds.size
1360
- }) : t('fileManagement.selectFile') : viewMode === 'photos' ? t('fileManagement.photos') : t('fileManagement.title'),
1361
- subtitle: selectMode ? multiSelect ? t('fileManagement.available', {
1362
- count: filteredFiles.length
1363
- }) : t('fileManagement.tapToSelect') : filteredFiles.length === 1 ? t('fileManagement.itemCount', {
1364
- count: filteredFiles.length
1365
- }) : t('fileManagement.itemCount_plural', {
1366
- count: filteredFiles.length
1367
- }),
1368
- actions: selectMode && multiSelect ? [{
1369
- key: 'clear',
1370
- text: t('fileManagement.clear'),
1371
- onPress: () => setSelectedIds(new Set()),
1372
- disabled: selectedIds.size === 0
1373
- }, {
1374
- key: 'confirm',
1375
- text: t('fileManagement.confirm'),
1376
- onPress: confirmMultiSelection,
1377
- disabled: selectedIds.size === 0
1378
- }] : !selectMode && selectedIds.size > 0 ? [{
1379
- key: 'clear',
1380
- text: t('fileManagement.clear'),
1381
- onPress: () => setSelectedIds(new Set())
1382
- }, {
1383
- key: 'delete',
1384
- text: t('fileManagement.delete', {
1385
- count: selectedIds.size
1386
- }),
1387
- onPress: confirmBulkDelete,
1388
- icon: 'delete'
1389
- }, {
1390
- key: 'visibility',
1391
- text: t('fileManagement.visibility'),
1392
- onPress: () => {
1393
- visibilityChangeDialog.open();
1394
- },
1395
- icon: 'eye'
1396
- }] : undefined,
1397
- onBack: onClose || goBack,
1398
- showBackButton: true,
1399
- variant: "minimal",
1400
- elevation: "none",
1401
- titleAlignment: "left"
1402
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1468
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1403
1469
  className: "flex-row items-center justify-between px-[12px] py-[12px] gap-[12px]",
1404
1470
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
1405
1471
  horizontal: true,
@@ -1625,64 +1691,11 @@ const FileManagementScreen = ({
1625
1691
  onLoadMore: () => loadFiles('more'),
1626
1692
  onClearSearch: () => setSearchQuery(''),
1627
1693
  renderEmptyState: renderEmptyState
1628
- }), !selectMode && /*#__PURE__*/(0, _jsxRuntime.jsx)(_FileDetailsModal.FileDetailsModal, {
1629
- control: fileDetailsControl,
1630
- file: selectedFile,
1631
- onDownload: handleFileDownload,
1632
- onDelete: confirmFileDelete,
1633
- isOwner: user?.id === targetUserId
1634
1694
  }), !selectMode && uploading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_UploadBar.default, {
1635
1695
  uploadProgress: uploadProgress,
1636
1696
  isDark: bloomTheme.isDark,
1637
1697
  colors: colors,
1638
1698
  t: t
1639
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_bloom.Dialog, {
1640
- control: fileDeleteDialog,
1641
- title: t('fileManagement.deleteFile') || 'Delete File',
1642
- description: pendingDeleteFile ? t('fileManagement.confirms.deleteFile', {
1643
- filename: pendingDeleteFile.name
1644
- }) : '',
1645
- actions: [{
1646
- label: t('fileManagement.confirm') || 'Delete',
1647
- color: 'destructive',
1648
- onPress: handleFileDelete
1649
- }, {
1650
- label: t('common.cancel') || 'Cancel',
1651
- color: 'cancel'
1652
- }]
1653
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_bloom.Dialog, {
1654
- control: bulkDeleteDialog,
1655
- title: t('fileManagement.deleteFiles') || 'Delete Files',
1656
- description: t('fileManagement.confirms.deleteFiles', {
1657
- count: selectedIds.size
1658
- }),
1659
- actions: [{
1660
- label: t('fileManagement.confirm') || 'Delete',
1661
- color: 'destructive',
1662
- onPress: handleBulkDelete
1663
- }, {
1664
- label: t('common.cancel') || 'Cancel',
1665
- color: 'cancel'
1666
- }]
1667
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_bloom.Dialog, {
1668
- control: visibilityChangeDialog,
1669
- title: t('fileManagement.changeVisibility') || 'Change Visibility',
1670
- description: t('fileManagement.changeVisibilityConfirm', {
1671
- count: selectedIds.size
1672
- }),
1673
- actions: [{
1674
- label: t('fileManagement.private') || 'Private',
1675
- onPress: () => handleBulkVisibilityChange('private')
1676
- }, {
1677
- label: t('fileManagement.public') || 'Public',
1678
- onPress: () => handleBulkVisibilityChange('public')
1679
- }, {
1680
- label: t('fileManagement.unlisted') || 'Unlisted',
1681
- onPress: () => handleBulkVisibilityChange('unlisted')
1682
- }, {
1683
- label: t('common.cancel') || 'Cancel',
1684
- color: 'cancel'
1685
- }]
1686
1699
  })]
1687
1700
  });
1688
1701
  };