@oxy.so/services 3.1.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/lib/commonjs/assets/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
  2. package/lib/commonjs/assets/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
  3. package/lib/commonjs/assets/assets/fonts/icons/manifest.json +5 -11
  4. package/lib/commonjs/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
  5. package/lib/commonjs/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
  6. package/lib/commonjs/assets/fonts/icons/manifest.json +5 -11
  7. package/lib/commonjs/ui/components/FollowButton.js +15 -28
  8. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  9. package/lib/commonjs/ui/components/FollowTargetButton.js +10 -11
  10. package/lib/commonjs/ui/components/FollowTargetButton.js.map +1 -1
  11. package/lib/commonjs/ui/components/OxyAuthPrompt.js +3 -2
  12. package/lib/commonjs/ui/components/OxyAuthPrompt.js.map +1 -1
  13. package/lib/commonjs/ui/components/OxyConsentScreen.js +4 -2
  14. package/lib/commonjs/ui/components/OxyConsentScreen.js.map +1 -1
  15. package/lib/commonjs/ui/components/OxySignInButton.js +1 -1
  16. package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
  17. package/lib/commonjs/ui/components/OxySignInRequestSurface.js +2 -1
  18. package/lib/commonjs/ui/components/OxySignInRequestSurface.js.map +1 -1
  19. package/lib/commonjs/ui/components/ProfileButton.js +68 -267
  20. package/lib/commonjs/ui/components/ProfileButton.js.map +1 -1
  21. package/lib/commonjs/ui/components/ProfileSummaryCard.js +2 -2
  22. package/lib/commonjs/ui/components/ProfileSummaryCard.js.map +1 -1
  23. package/lib/commonjs/ui/components/SurfaceHeaderAction.js +9 -49
  24. package/lib/commonjs/ui/components/SurfaceHeaderAction.js.map +1 -1
  25. package/lib/commonjs/ui/components/SurfaceScreen.js +3 -2
  26. package/lib/commonjs/ui/components/SurfaceScreen.js.map +1 -1
  27. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js +2 -1
  28. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  29. package/lib/commonjs/ui/components/authChooser/SignInEntryView.js +2 -1
  30. package/lib/commonjs/ui/components/authChooser/SignInEntryView.js.map +1 -1
  31. package/lib/commonjs/ui/components/authChooser/SignUpView.js +4 -2
  32. package/lib/commonjs/ui/components/authChooser/SignUpView.js.map +1 -1
  33. package/lib/commonjs/ui/components/authChooser/requestSurfaces.js +2 -1
  34. package/lib/commonjs/ui/components/authChooser/requestSurfaces.js.map +1 -1
  35. package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js +20 -14
  36. package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
  37. package/lib/commonjs/ui/components/fileManagement/FileViewer.js +48 -85
  38. package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
  39. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +35 -31
  40. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
  41. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js +9 -6
  42. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js.map +1 -1
  43. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js +22 -19
  44. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js.map +1 -1
  45. package/lib/commonjs/ui/components/payment/PaymentMethodStep.js +6 -3
  46. package/lib/commonjs/ui/components/payment/PaymentMethodStep.js.map +1 -1
  47. package/lib/commonjs/ui/components/payment/PaymentReviewStep.js +6 -3
  48. package/lib/commonjs/ui/components/payment/PaymentReviewStep.js.map +1 -1
  49. package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js +7 -5
  50. package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js.map +1 -1
  51. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js +20 -17
  52. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js.map +1 -1
  53. package/lib/commonjs/ui/components/photogrid/JustifiedPhotoGrid.js +2 -1
  54. package/lib/commonjs/ui/components/photogrid/JustifiedPhotoGrid.js.map +1 -1
  55. package/lib/commonjs/ui/components/surfaces/ActionSheetSurface.js +5 -3
  56. package/lib/commonjs/ui/components/surfaces/ActionSheetSurface.js.map +1 -1
  57. package/lib/commonjs/ui/icons/subsetGlyphMaps.js +0 -6
  58. package/lib/commonjs/ui/icons/subsetGlyphMaps.js.map +1 -1
  59. package/lib/commonjs/ui/screens/AccountMembersScreen.js +36 -60
  60. package/lib/commonjs/ui/screens/AccountMembersScreen.js.map +1 -1
  61. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +2 -1
  62. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  63. package/lib/commonjs/ui/screens/AccountVerificationScreen.js +2 -1
  64. package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
  65. package/lib/commonjs/ui/screens/AvatarCropScreen.js +7 -6
  66. package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -1
  67. package/lib/commonjs/ui/screens/CreateAccountScreen.js +2 -1
  68. package/lib/commonjs/ui/screens/CreateAccountScreen.js.map +1 -1
  69. package/lib/commonjs/ui/screens/FeedbackScreen.js +18 -9
  70. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  71. package/lib/commonjs/ui/screens/FileManagementScreen.js +99 -200
  72. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  73. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +8 -9
  74. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  75. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +2 -1
  76. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  77. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +20 -10
  78. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  79. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +4 -2
  80. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  81. package/lib/commonjs/ui/screens/ProfileScreen.js +2 -1
  82. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  83. package/lib/commonjs/ui/screens/UserListScreen.js +31 -33
  84. package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
  85. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +22 -11
  86. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  87. package/lib/commonjs/ui/screens/fileManagement/FileLibraryError.js +7 -18
  88. package/lib/commonjs/ui/screens/fileManagement/FileLibraryError.js.map +1 -1
  89. package/lib/commonjs/ui/screens/fileManagement/FileListSection.js +7 -16
  90. package/lib/commonjs/ui/screens/fileManagement/FileListSection.js.map +1 -1
  91. package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js +6 -6
  92. package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
  93. package/lib/commonjs/ui/screens/fileManagement/UploadBar.js +23 -66
  94. package/lib/commonjs/ui/screens/fileManagement/UploadBar.js.map +1 -1
  95. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js +2 -1
  96. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  97. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js +3 -2
  98. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  99. package/lib/module/assets/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
  100. package/lib/module/assets/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
  101. package/lib/module/assets/assets/fonts/icons/manifest.json +5 -11
  102. package/lib/module/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
  103. package/lib/module/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
  104. package/lib/module/assets/fonts/icons/manifest.json +5 -11
  105. package/lib/module/ui/components/FollowButton.js +15 -28
  106. package/lib/module/ui/components/FollowButton.js.map +1 -1
  107. package/lib/module/ui/components/FollowTargetButton.js +10 -11
  108. package/lib/module/ui/components/FollowTargetButton.js.map +1 -1
  109. package/lib/module/ui/components/OxyAuthPrompt.js +2 -1
  110. package/lib/module/ui/components/OxyAuthPrompt.js.map +1 -1
  111. package/lib/module/ui/components/OxyConsentScreen.js +4 -2
  112. package/lib/module/ui/components/OxyConsentScreen.js.map +1 -1
  113. package/lib/module/ui/components/OxySignInButton.js +1 -1
  114. package/lib/module/ui/components/OxySignInButton.js.map +1 -1
  115. package/lib/module/ui/components/OxySignInRequestSurface.js +2 -1
  116. package/lib/module/ui/components/OxySignInRequestSurface.js.map +1 -1
  117. package/lib/module/ui/components/ProfileButton.js +71 -269
  118. package/lib/module/ui/components/ProfileButton.js.map +1 -1
  119. package/lib/module/ui/components/ProfileSummaryCard.js +2 -2
  120. package/lib/module/ui/components/ProfileSummaryCard.js.map +1 -1
  121. package/lib/module/ui/components/SurfaceHeaderAction.js +8 -48
  122. package/lib/module/ui/components/SurfaceHeaderAction.js.map +1 -1
  123. package/lib/module/ui/components/SurfaceScreen.js +2 -1
  124. package/lib/module/ui/components/SurfaceScreen.js.map +1 -1
  125. package/lib/module/ui/components/authChooser/AccountsMenuView.js +2 -1
  126. package/lib/module/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  127. package/lib/module/ui/components/authChooser/SignInEntryView.js +2 -1
  128. package/lib/module/ui/components/authChooser/SignInEntryView.js.map +1 -1
  129. package/lib/module/ui/components/authChooser/SignUpView.js +4 -2
  130. package/lib/module/ui/components/authChooser/SignUpView.js.map +1 -1
  131. package/lib/module/ui/components/authChooser/requestSurfaces.js +2 -1
  132. package/lib/module/ui/components/authChooser/requestSurfaces.js.map +1 -1
  133. package/lib/module/ui/components/fileManagement/FileDetailsModal.js +12 -6
  134. package/lib/module/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
  135. package/lib/module/ui/components/fileManagement/FileViewer.js +38 -75
  136. package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
  137. package/lib/module/ui/components/fileManagement/UploadPreview.js +31 -27
  138. package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
  139. package/lib/module/ui/components/modals/DeleteAccountModal.js +6 -3
  140. package/lib/module/ui/components/modals/DeleteAccountModal.js.map +1 -1
  141. package/lib/module/ui/components/payment/PaymentDetailsStep.js +6 -3
  142. package/lib/module/ui/components/payment/PaymentDetailsStep.js.map +1 -1
  143. package/lib/module/ui/components/payment/PaymentMethodStep.js +6 -3
  144. package/lib/module/ui/components/payment/PaymentMethodStep.js.map +1 -1
  145. package/lib/module/ui/components/payment/PaymentReviewStep.js +6 -3
  146. package/lib/module/ui/components/payment/PaymentReviewStep.js.map +1 -1
  147. package/lib/module/ui/components/payment/PaymentSuccessStep.js +4 -2
  148. package/lib/module/ui/components/payment/PaymentSuccessStep.js.map +1 -1
  149. package/lib/module/ui/components/payment/PaymentSummaryStep.js +6 -3
  150. package/lib/module/ui/components/payment/PaymentSummaryStep.js.map +1 -1
  151. package/lib/module/ui/components/photogrid/JustifiedPhotoGrid.js +2 -1
  152. package/lib/module/ui/components/photogrid/JustifiedPhotoGrid.js.map +1 -1
  153. package/lib/module/ui/components/surfaces/ActionSheetSurface.js +4 -2
  154. package/lib/module/ui/components/surfaces/ActionSheetSurface.js.map +1 -1
  155. package/lib/module/ui/icons/subsetGlyphMaps.js +0 -6
  156. package/lib/module/ui/icons/subsetGlyphMaps.js.map +1 -1
  157. package/lib/module/ui/screens/AccountMembersScreen.js +37 -61
  158. package/lib/module/ui/screens/AccountMembersScreen.js.map +1 -1
  159. package/lib/module/ui/screens/AccountSettingsScreen.js +2 -1
  160. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  161. package/lib/module/ui/screens/AccountVerificationScreen.js +2 -1
  162. package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
  163. package/lib/module/ui/screens/AvatarCropScreen.js +2 -1
  164. package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -1
  165. package/lib/module/ui/screens/CreateAccountScreen.js +2 -1
  166. package/lib/module/ui/screens/CreateAccountScreen.js.map +1 -1
  167. package/lib/module/ui/screens/FeedbackScreen.js +18 -9
  168. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  169. package/lib/module/ui/screens/FileManagementScreen.js +91 -192
  170. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  171. package/lib/module/ui/screens/LanguageSelectorScreen.js +9 -10
  172. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  173. package/lib/module/ui/screens/PaymentGatewayScreen.js +2 -1
  174. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  175. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +20 -10
  176. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  177. package/lib/module/ui/screens/PrivacySettingsScreen.js +4 -2
  178. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  179. package/lib/module/ui/screens/ProfileScreen.js +2 -1
  180. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  181. package/lib/module/ui/screens/UserListScreen.js +32 -34
  182. package/lib/module/ui/screens/UserListScreen.js.map +1 -1
  183. package/lib/module/ui/screens/WelcomeNewUserScreen.js +22 -11
  184. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  185. package/lib/module/ui/screens/fileManagement/FileLibraryError.js +6 -17
  186. package/lib/module/ui/screens/fileManagement/FileLibraryError.js.map +1 -1
  187. package/lib/module/ui/screens/fileManagement/FileListSection.js +5 -14
  188. package/lib/module/ui/screens/fileManagement/FileListSection.js.map +1 -1
  189. package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js +3 -3
  190. package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
  191. package/lib/module/ui/screens/fileManagement/UploadBar.js +24 -66
  192. package/lib/module/ui/screens/fileManagement/UploadBar.js.map +1 -1
  193. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js +2 -1
  194. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  195. package/lib/module/ui/screens/trust/TrustRulesScreen.js +2 -1
  196. package/lib/module/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  197. package/lib/typescript/commonjs/ui/components/FollowButton.d.ts.map +1 -1
  198. package/lib/typescript/commonjs/ui/components/FollowTargetButton.d.ts.map +1 -1
  199. package/lib/typescript/commonjs/ui/components/OxyAuthPrompt.d.ts.map +1 -1
  200. package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts +1 -1
  201. package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
  202. package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts +1 -20
  203. package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts.map +1 -1
  204. package/lib/typescript/commonjs/ui/components/ProfileSummaryCard.d.ts.map +1 -1
  205. package/lib/typescript/commonjs/ui/components/SurfaceHeaderAction.d.ts +1 -5
  206. package/lib/typescript/commonjs/ui/components/SurfaceHeaderAction.d.ts.map +1 -1
  207. package/lib/typescript/commonjs/ui/components/SurfaceScreen.d.ts.map +1 -1
  208. package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
  209. package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
  210. package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
  211. package/lib/typescript/commonjs/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
  212. package/lib/typescript/commonjs/ui/components/payment/PaymentDetailsStep.d.ts.map +1 -1
  213. package/lib/typescript/commonjs/ui/components/payment/PaymentMethodStep.d.ts.map +1 -1
  214. package/lib/typescript/commonjs/ui/components/payment/PaymentReviewStep.d.ts.map +1 -1
  215. package/lib/typescript/commonjs/ui/components/payment/PaymentSuccessStep.d.ts.map +1 -1
  216. package/lib/typescript/commonjs/ui/components/payment/PaymentSummaryStep.d.ts.map +1 -1
  217. package/lib/typescript/commonjs/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +1 -1
  218. package/lib/typescript/commonjs/ui/components/surfaces/ActionSheetSurface.d.ts.map +1 -1
  219. package/lib/typescript/commonjs/ui/icons/Ionicons.d.ts +1 -1
  220. package/lib/typescript/commonjs/ui/icons/Ionicons.d.ts.map +1 -1
  221. package/lib/typescript/commonjs/ui/icons/MaterialCommunityIcons.d.ts +1 -1
  222. package/lib/typescript/commonjs/ui/icons/MaterialCommunityIcons.d.ts.map +1 -1
  223. package/lib/typescript/commonjs/ui/icons/subsetGlyphMaps.d.ts +0 -6
  224. package/lib/typescript/commonjs/ui/icons/subsetGlyphMaps.d.ts.map +1 -1
  225. package/lib/typescript/commonjs/ui/screens/AccountMembersScreen.d.ts.map +1 -1
  226. package/lib/typescript/commonjs/ui/screens/AvatarCropScreen.d.ts.map +1 -1
  227. package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
  228. package/lib/typescript/commonjs/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  229. package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts.map +1 -1
  230. package/lib/typescript/commonjs/ui/screens/fileManagement/FileLibraryError.d.ts +0 -2
  231. package/lib/typescript/commonjs/ui/screens/fileManagement/FileLibraryError.d.ts.map +1 -1
  232. package/lib/typescript/commonjs/ui/screens/fileManagement/FileListSection.d.ts.map +1 -1
  233. package/lib/typescript/commonjs/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
  234. package/lib/typescript/commonjs/ui/screens/fileManagement/UploadBar.d.ts +1 -14
  235. package/lib/typescript/commonjs/ui/screens/fileManagement/UploadBar.d.ts.map +1 -1
  236. package/lib/typescript/commonjs/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  237. package/lib/typescript/module/ui/components/FollowButton.d.ts.map +1 -1
  238. package/lib/typescript/module/ui/components/FollowTargetButton.d.ts.map +1 -1
  239. package/lib/typescript/module/ui/components/OxyAuthPrompt.d.ts.map +1 -1
  240. package/lib/typescript/module/ui/components/OxySignInButton.d.ts +1 -1
  241. package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
  242. package/lib/typescript/module/ui/components/ProfileButton.d.ts +1 -20
  243. package/lib/typescript/module/ui/components/ProfileButton.d.ts.map +1 -1
  244. package/lib/typescript/module/ui/components/ProfileSummaryCard.d.ts.map +1 -1
  245. package/lib/typescript/module/ui/components/SurfaceHeaderAction.d.ts +1 -5
  246. package/lib/typescript/module/ui/components/SurfaceHeaderAction.d.ts.map +1 -1
  247. package/lib/typescript/module/ui/components/SurfaceScreen.d.ts.map +1 -1
  248. package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
  249. package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
  250. package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
  251. package/lib/typescript/module/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
  252. package/lib/typescript/module/ui/components/payment/PaymentDetailsStep.d.ts.map +1 -1
  253. package/lib/typescript/module/ui/components/payment/PaymentMethodStep.d.ts.map +1 -1
  254. package/lib/typescript/module/ui/components/payment/PaymentReviewStep.d.ts.map +1 -1
  255. package/lib/typescript/module/ui/components/payment/PaymentSuccessStep.d.ts.map +1 -1
  256. package/lib/typescript/module/ui/components/payment/PaymentSummaryStep.d.ts.map +1 -1
  257. package/lib/typescript/module/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +1 -1
  258. package/lib/typescript/module/ui/components/surfaces/ActionSheetSurface.d.ts.map +1 -1
  259. package/lib/typescript/module/ui/icons/Ionicons.d.ts +1 -1
  260. package/lib/typescript/module/ui/icons/Ionicons.d.ts.map +1 -1
  261. package/lib/typescript/module/ui/icons/MaterialCommunityIcons.d.ts +1 -1
  262. package/lib/typescript/module/ui/icons/MaterialCommunityIcons.d.ts.map +1 -1
  263. package/lib/typescript/module/ui/icons/subsetGlyphMaps.d.ts +0 -6
  264. package/lib/typescript/module/ui/icons/subsetGlyphMaps.d.ts.map +1 -1
  265. package/lib/typescript/module/ui/screens/AccountMembersScreen.d.ts.map +1 -1
  266. package/lib/typescript/module/ui/screens/AvatarCropScreen.d.ts.map +1 -1
  267. package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
  268. package/lib/typescript/module/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  269. package/lib/typescript/module/ui/screens/UserListScreen.d.ts.map +1 -1
  270. package/lib/typescript/module/ui/screens/fileManagement/FileLibraryError.d.ts +0 -2
  271. package/lib/typescript/module/ui/screens/fileManagement/FileLibraryError.d.ts.map +1 -1
  272. package/lib/typescript/module/ui/screens/fileManagement/FileListSection.d.ts.map +1 -1
  273. package/lib/typescript/module/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
  274. package/lib/typescript/module/ui/screens/fileManagement/UploadBar.d.ts +1 -14
  275. package/lib/typescript/module/ui/screens/fileManagement/UploadBar.d.ts.map +1 -1
  276. package/lib/typescript/module/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  277. package/package.json +6 -6
  278. package/src/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
  279. package/src/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
  280. package/src/assets/fonts/icons/manifest.json +5 -11
  281. package/src/ui/components/FollowButton.tsx +14 -29
  282. package/src/ui/components/FollowTargetButton.tsx +9 -11
  283. package/src/ui/components/OxyAuthPrompt.tsx +2 -7
  284. package/src/ui/components/OxyConsentScreen.tsx +2 -2
  285. package/src/ui/components/OxySignInButton.tsx +2 -2
  286. package/src/ui/components/OxySignInRequestSurface.tsx +1 -1
  287. package/src/ui/components/ProfileButton.tsx +31 -297
  288. package/src/ui/components/ProfileSummaryCard.tsx +1 -2
  289. package/src/ui/components/SurfaceHeaderAction.tsx +7 -49
  290. package/src/ui/components/SurfaceScreen.tsx +2 -1
  291. package/src/ui/components/authChooser/AccountsMenuView.tsx +1 -1
  292. package/src/ui/components/authChooser/SignInEntryView.tsx +1 -1
  293. package/src/ui/components/authChooser/SignUpView.tsx +2 -2
  294. package/src/ui/components/authChooser/requestSurfaces.tsx +1 -1
  295. package/src/ui/components/fileManagement/FileDetailsModal.tsx +8 -6
  296. package/src/ui/components/fileManagement/FileViewer.tsx +21 -50
  297. package/src/ui/components/fileManagement/UploadPreview.tsx +12 -29
  298. package/src/ui/components/modals/DeleteAccountModal.tsx +4 -3
  299. package/src/ui/components/payment/PaymentDetailsStep.tsx +4 -3
  300. package/src/ui/components/payment/PaymentMethodStep.tsx +4 -3
  301. package/src/ui/components/payment/PaymentReviewStep.tsx +4 -3
  302. package/src/ui/components/payment/PaymentSuccessStep.tsx +3 -2
  303. package/src/ui/components/payment/PaymentSummaryStep.tsx +4 -3
  304. package/src/ui/components/photogrid/JustifiedPhotoGrid.tsx +2 -1
  305. package/src/ui/components/surfaces/ActionSheetSurface.tsx +3 -2
  306. package/src/ui/icons/subsetGlyphMaps.ts +0 -6
  307. package/src/ui/screens/AccountMembersScreen.tsx +17 -65
  308. package/src/ui/screens/AccountSettingsScreen.tsx +1 -1
  309. package/src/ui/screens/AccountVerificationScreen.tsx +1 -1
  310. package/src/ui/screens/AvatarCropScreen.tsx +2 -10
  311. package/src/ui/screens/CreateAccountScreen.tsx +1 -1
  312. package/src/ui/screens/FeedbackScreen.tsx +9 -9
  313. package/src/ui/screens/FileManagementScreen.tsx +37 -184
  314. package/src/ui/screens/LanguageSelectorScreen.tsx +5 -13
  315. package/src/ui/screens/PaymentGatewayScreen.tsx +1 -1
  316. package/src/ui/screens/PremiumSubscriptionScreen.tsx +10 -10
  317. package/src/ui/screens/PrivacySettingsScreen.tsx +2 -2
  318. package/src/ui/screens/ProfileScreen.tsx +1 -1
  319. package/src/ui/screens/UserListScreen.tsx +17 -44
  320. package/src/ui/screens/WelcomeNewUserScreen.tsx +11 -11
  321. package/src/ui/screens/fileManagement/FileLibraryError.tsx +6 -14
  322. package/src/ui/screens/fileManagement/FileListSection.tsx +4 -16
  323. package/src/ui/screens/fileManagement/PhotoPickerSection.tsx +2 -13
  324. package/src/ui/screens/fileManagement/UploadBar.tsx +17 -56
  325. package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +1 -1
  326. package/src/ui/screens/trust/TrustRulesScreen.tsx +2 -1
  327. package/lib/commonjs/ui/components/fileManagement/AnimatedButton.js +0 -61
  328. package/lib/commonjs/ui/components/fileManagement/AnimatedButton.js.map +0 -1
  329. package/lib/commonjs/ui/components/internal/PinInput.js +0 -118
  330. package/lib/commonjs/ui/components/internal/PinInput.js.map +0 -1
  331. package/lib/module/ui/components/fileManagement/AnimatedButton.js +0 -55
  332. package/lib/module/ui/components/fileManagement/AnimatedButton.js.map +0 -1
  333. package/lib/module/ui/components/internal/PinInput.js +0 -113
  334. package/lib/module/ui/components/internal/PinInput.js.map +0 -1
  335. package/lib/typescript/commonjs/ui/components/fileManagement/AnimatedButton.d.ts +0 -17
  336. package/lib/typescript/commonjs/ui/components/fileManagement/AnimatedButton.d.ts.map +0 -1
  337. package/lib/typescript/commonjs/ui/components/internal/PinInput.d.ts +0 -23
  338. package/lib/typescript/commonjs/ui/components/internal/PinInput.d.ts.map +0 -1
  339. package/lib/typescript/module/ui/components/fileManagement/AnimatedButton.d.ts +0 -17
  340. package/lib/typescript/module/ui/components/fileManagement/AnimatedButton.d.ts.map +0 -1
  341. package/lib/typescript/module/ui/components/internal/PinInput.d.ts +0 -23
  342. package/lib/typescript/module/ui/components/internal/PinInput.d.ts.map +0 -1
  343. package/src/ui/components/fileManagement/AnimatedButton.tsx +0 -64
  344. package/src/ui/components/internal/PinInput.tsx +0 -123
@@ -65,7 +65,7 @@ export interface OxySignInButtonProps {
65
65
  */
66
66
  action?: OxySignInButtonAction;
67
67
 
68
- /** `medium` (36 tall, 300 wide) or `small` (32 × 250). @default 'medium' */
68
+ /** `md` (36 tall, 300 wide) or `sm` (32 × 250). @default 'md' */
69
69
  size?: SocialButtonSize;
70
70
 
71
71
  /** Fill the container's width instead of the fixed 300 / 250. */
@@ -177,7 +177,7 @@ export const OxySignInButton: React.FC<OxySignInButtonProps> = ({
177
177
  variant = 'default',
178
178
  appearance,
179
179
  action = 'signIn',
180
- size = 'medium',
180
+ size = 'md',
181
181
  fullWidth = false,
182
182
  iconOnly = false,
183
183
  onPress,
@@ -150,7 +150,7 @@ export const OxySignInRequestSurface: React.FC<OxySignInRequestSurfaceProps> = (
150
150
  return (
151
151
  <View style={styles.centeredBlock}>
152
152
  {onRetry ? (
153
- <Button variant="primary" onPress={onRetry} style={styles.primaryButton}>
153
+ <Button appearance="solid" tone="accent" onPress={onRetry} style={styles.primaryButton}>
154
154
  {t('common.actions.tryAgain')}
155
155
  </Button>
156
156
  ) : null}
@@ -1,13 +1,13 @@
1
1
  import type React from 'react';
2
- import { useCallback, useEffect, useMemo, useState } from 'react';
2
+ import { useCallback, useEffect, useMemo } from 'react';
3
3
  import {
4
- StyleSheet,
5
- Platform,
6
4
  type StyleProp,
7
5
  type ViewStyle,
8
6
  } from 'react-native';
9
- import { View, Pressable } from 'react-native-css/components';
10
- import MaterialCommunityIcons from '../icons/MaterialCommunityIcons';
7
+ import { View } from 'react-native-css/components';
8
+ import { RiLoginBoxLine } from '@oxy.so/bloom/icons/RiLoginBoxLine';
9
+ import { RiMoreLine } from '@oxy.so/bloom/icons/RiMoreLine';
10
+ import { Button } from '@oxy.so/bloom/button';
11
11
  import { Avatar } from '@oxy.so/bloom/avatar';
12
12
  import * as Skeleton from '@oxy.so/bloom/skeleton';
13
13
  import { Text } from '@oxy.so/bloom/typography';
@@ -19,35 +19,6 @@ import { useI18n } from '../hooks/useI18n';
19
19
  import { registerAccountDialogConsumerHooks } from '../navigation/accountDialogManager';
20
20
  import type { AccountDialogMenuItem } from '../navigation/accountDialogManager';
21
21
 
22
- const isWeb = Platform.OS === 'web';
23
-
24
- /**
25
- * Web-only Bluesky-style hover animation timings, mirrored from
26
- * `social-app/src/view/shell/desktop/LeftNav.tsx`. The row background and the
27
- * name/handle/chevron opacity cross-fade quickly; the avatar shrink+slide is
28
- * slower and more deliberate. A short delay on the LEAVE transition keeps the
29
- * row from flickering when the pointer crosses a child boundary.
30
- */
31
- const BG_TRANSITION_MS = 150;
32
- const AVATAR_TRANSITION_MS = 250;
33
- const OPACITY_TRANSITION_MS = 150;
34
- const LEAVE_DELAY_MS = 50;
35
-
36
- /** Shrunk-avatar scale on hover, matching Bluesky's `scale: 2/3`. */
37
- const ACTIVE_AVATAR_SCALE = 2 / 3;
38
-
39
- /**
40
- * Reads the OS "reduce motion" preference on web. Guards `window`/`matchMedia`
41
- * so it is safe during SSR and on native (where it is never called). When
42
- * reduced motion is on, the avatar transform snaps instead of transitioning.
43
- */
44
- const prefersReducedMotion = (): boolean => {
45
- if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {
46
- return false;
47
- }
48
- return window.matchMedia('(prefers-reduced-motion: reduce)').matches;
49
- };
50
-
51
22
  export interface ProfileButtonProps {
52
23
  /**
53
24
  * Expanded row (avatar + name + handle + chevron) when `true` (default), or a
@@ -82,26 +53,7 @@ export interface ProfileButtonProps {
82
53
  style?: StyleProp<ViewStyle>;
83
54
  }
84
55
 
85
- /**
86
- * Self-contained sidebar account trigger, modeled on Bluesky's ProfileCard and
87
- * the Oxy inbox's `MailboxDrawer` footer. Pressing it opens the unified
88
- * {@link OxyAccountDialogScreen} — the single account switcher + sign-in surface — via
89
- * `useOxy().openAccountDialog`.
90
- *
91
- * Three auth states from {@link useAuth}:
92
- * - **Undetermined** (`!isAuthResolved || isPrivateApiPending`): a neutral
93
- * avatar-sized skeleton circle, no press.
94
- * - **Signed in**: a pressable row — Bloom `Avatar` + display name + `@handle`
95
- * + a chevron. Press opens the dialog on its `accounts` view.
96
- * - **Signed out**: a "Sign in" row that calls `useAuth().signIn()` (which opens
97
- * the dialog on its `signin` view).
98
- *
99
- * Styling uses react-native `StyleSheet` + the Bloom theme (via `useTheme`) so
100
- * the layout renders identically in EVERY consumer — including apps that do not
101
- * use NativeWind (e.g. the accounts app). Only the web hover animation keeps
102
- * dynamic inline `style` (the CSS transition/transform values), which is what
103
- * the `react-native-web-style.d.ts` augmentation exists for.
104
- */
56
+ /** Account business binding over Bloom's shared Button and Avatar. */
105
57
  const ProfileButton: React.FC<ProfileButtonProps> = ({
106
58
  expanded = true,
107
59
  avatarSize,
@@ -123,11 +75,6 @@ const ProfileButton: React.FC<ProfileButtonProps> = ({
123
75
  const { colors } = useTheme();
124
76
  const { t, locale } = useI18n();
125
77
 
126
- // Web-only hover/focus tracking for the Bluesky-style reveal animation.
127
- // Native has no hover, so these stay false and the row renders statically.
128
- const [hovered, setHovered] = useState(false);
129
- const [focused, setFocused] = useState(false);
130
-
131
78
  const resolvedAvatarSize = avatarSize ?? (expanded ? 40 : 32);
132
79
 
133
80
  const openDialog = useCallback(() => {
@@ -165,248 +112,35 @@ const ProfileButton: React.FC<ProfileButtonProps> = ({
165
112
  );
166
113
  }
167
114
 
168
- // ── Signed out: "Sign in" row. ──────────────────────────────────────────
169
- if (!isAuthenticated || !user) {
170
- const signInLabel = t('common.actions.signIn') || 'Sign in';
171
- return (
172
- <Pressable
173
- className={className}
174
- style={[styles.row, expanded && styles.rowExpanded, style]}
175
- onPress={() => { void signIn(); }}
176
- accessibilityRole="button"
177
- accessibilityLabel={signInLabel}
178
- >
179
- <View
180
- style={[
181
- styles.avatarBadge,
182
- {
183
- width: resolvedAvatarSize,
184
- height: resolvedAvatarSize,
185
- backgroundColor: colors.backgroundSecondary,
186
- },
187
- ]}
188
- >
189
- <MaterialCommunityIcons
190
- name="login"
191
- size={Math.round(resolvedAvatarSize * 0.5)}
192
- color={colors.icon}
193
- />
194
- </View>
195
- {expanded ? (
196
- <Text
197
- style={[styles.signInLabel, { color: colors.text }]}
198
- numberOfLines={1}
199
- >
200
- {signInLabel}
201
- </Text>
202
- ) : null}
203
- </Pressable>
204
- );
205
- }
206
-
207
- // ── Signed in: avatar + identity + chevron. ─────────────────────────────
208
- const displayName =
209
- user?.name?.displayName ??
210
- getNormalizedUserHandle(user) ??
211
- getAccountDisplayName(null, locale);
212
- const handle = getAccountFallbackHandle(user);
213
- const handleLine = handle ? `@${handle}` : null;
214
-
215
- const avatarNode = (
216
- <Avatar
217
- source={avatarUrl}
218
- variant="thumb"
219
- name={displayName}
220
- size={resolvedAvatarSize}
221
- />
222
- );
223
-
224
- // `active` combines hover and keyboard focus — exactly like Bluesky's
225
- // `state.hovered || state.focused`. Only web ever sets these, so on native
226
- // the row renders statically.
227
- const active = hovered || focused;
228
- const accountLabel = t('accountSwitcher.switchWhileSignedInAs', { name: displayName });
229
-
230
- // Web-only pointer/focus handlers. RN-Web forwards `onHoverIn`/`onHoverOut`
231
- // to the underlying element; native Pressable ignores them harmlessly, but
232
- // we only attach them on web to keep the native path pristine.
233
- const webInteractionProps = isWeb
234
- ? {
235
- onHoverIn: () => setHovered(true),
236
- onHoverOut: () => setHovered(false),
237
- onFocus: () => setFocused(true),
238
- onBlur: () => setFocused(false),
239
- }
240
- : undefined;
241
-
242
- if (!expanded) {
243
- // Collapsed: avatar-only. On web, hovering just fades a subtle round
244
- // background behind the avatar — no shrink, no text.
245
- const collapsedBgStyle: ViewStyle | undefined = isWeb
246
- ? {
247
- backgroundColor: active ? colors.backgroundSecondary : 'transparent',
248
- transitionProperty: 'background-color',
249
- transitionDuration: `${BG_TRANSITION_MS}ms`,
250
- transitionDelay: active ? '0ms' : `${LEAVE_DELAY_MS}ms`,
251
- }
252
- : undefined;
253
- return (
254
- <View className={className} style={style}>
255
- <Pressable
256
- style={[styles.collapsedTrigger, collapsedBgStyle]}
257
- onPress={openDialog}
258
- accessibilityRole="button"
259
- accessibilityLabel={accountLabel}
260
- {...webInteractionProps}
261
- >
262
- {avatarNode}
263
- </Pressable>
264
- </View>
265
- );
266
- }
267
-
268
- // ── Expanded row animation ──────────────────────────────────────────────
269
- // On native everything is statically visible (no hover exists). On web we
270
- // reproduce Bluesky's reveal: the row fills with a subtle contrast bg, the
271
- // avatar shrinks + slides left, and the name/handle/actions fade in from
272
- // behind it. Keeping the identity hidden while inactive is what makes the
273
- // negative margin intentional instead of an overlap.
274
- const reducedMotion = isWeb && prefersReducedMotion();
275
-
276
- // Slide the shrunk avatar left so its visual left edge stays put as it
277
- // contracts. The avatar loses `size * (1 - scale)` of width; half of that
278
- // (the left half, since scale is centered) is the offset, plus the row's
279
- // left padding (8px) so it hugs the row edge like Bluesky's.
280
- const activeAvatarTranslateX =
281
- -(resolvedAvatarSize * (1 - ACTIVE_AVATAR_SCALE)) / 2 - 8;
282
-
283
- const rowStyle: StyleProp<ViewStyle> = isWeb
284
- ? {
285
- backgroundColor: active ? colors.backgroundSecondary : 'transparent',
286
- transitionProperty: 'background-color',
287
- transitionDuration: `${BG_TRANSITION_MS}ms`,
288
- transitionDelay: active ? '0ms' : `${LEAVE_DELAY_MS}ms`,
289
- }
290
- : undefined;
291
-
292
- const avatarWrapperStyle: ViewStyle | undefined = isWeb
293
- ? {
294
- zIndex: 10,
295
- ...(reducedMotion
296
- ? {}
297
- : {
298
- transitionProperty: 'transform',
299
- transitionDuration: `${AVATAR_TRANSITION_MS}ms`,
300
- transitionDelay: active ? '0ms' : `${LEAVE_DELAY_MS}ms`,
301
- }),
302
- transform: active
303
- ? [{ scale: ACTIVE_AVATAR_SCALE }, { translateX: activeAvatarTranslateX }]
304
- : [{ scale: 1 }, { translateX: 0 }],
305
- }
306
- : undefined;
307
-
308
- const identityStyle: ViewStyle | undefined = isWeb
309
- ? {
310
- marginLeft: -resolvedAvatarSize / 2,
311
- opacity: active ? 1 : 0,
312
- transitionProperty: 'opacity',
313
- transitionDuration: `${OPACITY_TRANSITION_MS}ms`,
314
- transitionDelay: active ? '0ms' : `${LEAVE_DELAY_MS}ms`,
315
- }
316
- : undefined;
317
-
318
- const actionStyle: ViewStyle | undefined = isWeb
319
- ? {
320
- opacity: active ? 1 : 0,
321
- transitionProperty: 'opacity',
322
- transitionDuration: `${OPACITY_TRANSITION_MS}ms`,
323
- transitionDelay: active ? '0ms' : `${LEAVE_DELAY_MS}ms`,
324
- }
325
- : undefined;
115
+ const signedIn = isAuthenticated && Boolean(user);
116
+ const displayName = signedIn
117
+ ? user?.name?.displayName ?? getNormalizedUserHandle(user) ?? getAccountDisplayName(null, locale)
118
+ : t('common.actions.signIn') || 'Sign in';
119
+ const handle = signedIn ? getAccountFallbackHandle(user) : undefined;
120
+ const label = signedIn ? t('accountSwitcher.switchWhileSignedInAs', { name: displayName }) : displayName;
326
121
 
327
122
  return (
328
- <View className={className} style={[styles.fullWidth, style]}>
329
- <Pressable
330
- style={[styles.row, styles.rowExpanded, rowStyle]}
331
- onPress={openDialog}
332
- accessibilityRole="button"
333
- accessibilityLabel={accountLabel}
334
- {...webInteractionProps}
335
- >
336
- <View style={avatarWrapperStyle}>{avatarNode}</View>
337
- <View style={[styles.identity, identityStyle]}>
338
- <Text
339
- style={[styles.displayName, { color: colors.text }]}
340
- numberOfLines={1}
341
- >
342
- {displayName}
343
- </Text>
344
- {handleLine ? (
345
- <Text
346
- style={[styles.handle, { color: colors.textSecondary }]}
347
- numberOfLines={1}
348
- >
349
- {handleLine}
350
- </Text>
351
- ) : null}
352
- </View>
353
- <View style={actionStyle}>
354
- <MaterialCommunityIcons
355
- name="dots-horizontal"
356
- size={18}
357
- color={colors.textSecondary}
358
- />
123
+ <Button
124
+ appearance="plain" tone="neutral"
125
+ className={className}
126
+ accessibilityLabel={label}
127
+ onPress={signedIn ? openDialog : () => { void signIn(); }}
128
+ style={[{ height: resolvedAvatarSize + 16, borderRadius: 9999, paddingLeft: 8, paddingRight: 8, ...(expanded ? { width: '100%' } : { width: resolvedAvatarSize + 16 }) }, style]}
129
+ trailing={
130
+ <View style={{ flexDirection: 'row', alignItems: 'center', gap: 12, ...(expanded ? { flex: 1 } : {}) }}>
131
+ {signedIn ? <Avatar source={avatarUrl} variant="thumb" name={displayName} size={resolvedAvatarSize} />
132
+ : <RiLoginBoxLine width={resolvedAvatarSize / 2} height={resolvedAvatarSize / 2} color={colors.icon} />}
133
+ {expanded ? <>
134
+ <View style={{ flex: 1, minWidth: 0 }}>
135
+ <Text variant="body-semibold" numberOfLines={1}>{displayName}</Text>
136
+ {handle ? <Text variant="caption-1-regular" numberOfLines={1} style={{ color: colors.textSecondary }}>@{handle}</Text> : null}
137
+ </View>
138
+ {signedIn ? <RiMoreLine width={18} height={18} color={colors.textSecondary} /> : null}
139
+ </> : null}
359
140
  </View>
360
- </Pressable>
361
- </View>
141
+ }
142
+ />
362
143
  );
363
144
  };
364
145
 
365
- const styles = StyleSheet.create({
366
- fullWidth: {
367
- width: '100%',
368
- },
369
- // Shared trigger row (`flex-row items-center gap-3 rounded-full px-2 py-2`).
370
- row: {
371
- flexDirection: 'row',
372
- alignItems: 'center',
373
- gap: 12,
374
- borderRadius: 9999,
375
- paddingHorizontal: 8,
376
- paddingVertical: 8,
377
- },
378
- // `w-full` on the expanded row + its signed-out variant.
379
- rowExpanded: {
380
- width: '100%',
381
- },
382
- // Signed-out login badge (`items-center justify-center rounded-full`).
383
- avatarBadge: {
384
- alignItems: 'center',
385
- justifyContent: 'center',
386
- borderRadius: 9999,
387
- },
388
- // Signed-out label (`flex-1 font-semibold`).
389
- signInLabel: {
390
- flex: 1,
391
- fontWeight: '600',
392
- },
393
- // Collapsed avatar-only trigger (`rounded-full`).
394
- collapsedTrigger: {
395
- borderRadius: 9999,
396
- },
397
- // Identity block (`min-w-0 flex-1`).
398
- identity: {
399
- flex: 1,
400
- minWidth: 0,
401
- },
402
- // Display name (`font-bold`).
403
- displayName: {
404
- fontWeight: '700',
405
- },
406
- // Handle line (`text-xs`).
407
- handle: {
408
- fontSize: 12,
409
- },
410
- });
411
-
412
146
  export default ProfileButton;
@@ -37,7 +37,6 @@ export interface ProfileSummaryCardProps {
37
37
  }
38
38
 
39
39
  const cardStyle: ViewStyle = {
40
- borderRadius: 20,
41
40
  marginBottom: 16,
42
41
  };
43
42
 
@@ -76,7 +75,7 @@ const ProfileSummaryCard: React.FC<ProfileSummaryCardProps> = ({
76
75
  );
77
76
 
78
77
  return (
79
- <Card variant="filled" style={cardStyle}>
78
+ <Card appearance="subtle" radius="radius-20" style={cardStyle}>
80
79
  <View className="items-center px-space-20 py-space-24">
81
80
  {avatarNode}
82
81
  <H4 className="text-text" numberOfLines={1}>
@@ -1,8 +1,5 @@
1
1
  import type React from 'react';
2
- import { ActivityIndicator, StyleSheet } from 'react-native';
3
- import { useTheme } from '@oxy.so/bloom/theme';
4
- import { PressableScale } from '@oxy.so/bloom/pressable-scale';
5
- import { Text } from '@oxy.so/bloom/typography';
2
+ import { Button } from '@oxy.so/bloom/button';
6
3
 
7
4
  export interface SurfaceHeaderActionProps {
8
5
  /** Button label (e.g. a translated "Save"). */
@@ -13,48 +10,9 @@ export interface SurfaceHeaderActionProps {
13
10
  disabled?: boolean;
14
11
  }
15
12
 
16
- /**
17
- * A filled pill action for a surface's nav-header right slot — the canonical
18
- * "Save" affordance. Pass a memoized instance to `useSurfaceHeader({ right })`
19
- * so the header does not thrash between renders.
20
- */
21
- export const SurfaceHeaderAction: React.FC<SurfaceHeaderActionProps> = ({
22
- label,
23
- onPress,
24
- loading,
25
- disabled,
26
- }) => {
27
- const { colors } = useTheme();
28
- const isDisabled = disabled || loading;
29
- return (
30
- <PressableScale
31
- onPress={onPress}
32
- disabled={isDisabled}
33
- accessibilityRole="button"
34
- accessibilityLabel={label}
35
- style={[styles.button, { backgroundColor: colors.primary, opacity: isDisabled ? 0.5 : 1 }]}
36
- >
37
- {loading ? (
38
- <ActivityIndicator size="small" color={colors.primaryForeground} />
39
- ) : (
40
- <Text style={[styles.label, { color: colors.primaryForeground }]}>{label}</Text>
41
- )}
42
- </PressableScale>
43
- );
44
- };
45
-
46
- const styles = StyleSheet.create({
47
- button: {
48
- height: 36,
49
- minWidth: 64,
50
- paddingHorizontal: 14,
51
- borderRadius: 18,
52
- alignItems: 'center',
53
- justifyContent: 'center',
54
- },
55
- label: {
56
- fontSize: 14,
57
- fontWeight: '600',
58
- letterSpacing: -0.2,
59
- },
60
- });
13
+ /** Header actions share Bloom's sizing, surface, disabled and loading behavior. */
14
+ export const SurfaceHeaderAction: React.FC<SurfaceHeaderActionProps> = ({ label, onPress, loading, disabled }) => (
15
+ <Button size="medium" onPress={onPress} loading={loading} disabled={disabled}>
16
+ {label}
17
+ </Button>
18
+ );
@@ -1,5 +1,6 @@
1
1
  import React, { Suspense, useCallback, useEffect, useMemo, useState, type ErrorInfo } from 'react';
2
- import { ActivityIndicator, StyleSheet, Text, View, useWindowDimensions } from 'react-native';
2
+ import { ActivityIndicator, StyleSheet, View, useWindowDimensions } from 'react-native';
3
+ import { Text } from '@oxy.so/bloom/typography';
3
4
  import { useStore } from 'zustand';
4
5
  import { useTheme } from '@oxy.so/bloom/theme';
5
6
  import {
@@ -362,7 +362,7 @@ const AccountsMenuView: React.FC<AccountsMenuViewProps> = ({
362
362
  variant, `small` the compact height; it hugs its label instead of
363
363
  spanning the surface. */}
364
364
  <Button
365
- variant="secondary"
365
+ appearance="subtle" tone="neutral"
366
366
  size="small"
367
367
  onPress={handlers.onManage}
368
368
  accessibilityLabel={manageLabel}
@@ -107,7 +107,7 @@ const SignInEntryView: React.FC<SignInEntryViewProps> = ({
107
107
  ) : null}
108
108
 
109
109
  <Button
110
- variant="primary"
110
+ appearance="solid" tone="accent"
111
111
  onPress={web ? alternatives.onSignInWithPasskey : onContinueWithOxy}
112
112
  style={styles.primaryButton}
113
113
  testID="continue-with-oxy"
@@ -49,7 +49,7 @@ const SignUpView: React.FC<SignUpViewProps> = ({
49
49
  return (
50
50
  <View style={styles.centeredBlock}>
51
51
  <Button
52
- variant="primary"
52
+ appearance="solid" tone="accent"
53
53
  onPress={commonsInstalled ? onCreateIdentityInCommons : onGetCommons}
54
54
  style={styles.primaryButton}
55
55
  >
@@ -65,7 +65,7 @@ const SignUpView: React.FC<SignUpViewProps> = ({
65
65
  <Text style={[styles.mutedText, { color: theme.colors.textSecondary }]}>
66
66
  {t('accountSwitcher.passkeyHint')}
67
67
  </Text>
68
- <Button variant="primary" onPress={onOpenHub} style={styles.primaryButton} testID="signup-open-identity">
68
+ <Button appearance="solid" tone="accent" onPress={onOpenHub} style={styles.primaryButton} testID="signup-open-identity">
69
69
  {t('signup.createAccount')}
70
70
  </Button>
71
71
  <SubtleLink label={t('signup.backToSignInLink')} theme={theme} onPress={onBackToSignIn} />
@@ -81,7 +81,7 @@ export const GetCommonsPrompt: React.FC<{
81
81
  {t('accountSwitcher.commonsNotInstalled')}
82
82
  </Text>
83
83
  <Button
84
- variant="primary"
84
+ appearance="solid" tone="accent"
85
85
  onPress={onGetCommons}
86
86
  style={styles.primaryButton}
87
87
  testID="get-commons-button"
@@ -1,5 +1,7 @@
1
1
  import type React from 'react';
2
- import { View, Text } from 'react-native';
2
+ import { View } from 'react-native';
3
+ import { Card } from '@oxy.so/bloom/card';
4
+ import { Text } from '@oxy.so/bloom/typography';
3
5
  import Ionicons from '../../icons/Ionicons';
4
6
  import { Button } from '@oxy.so/bloom/button';
5
7
  import { useTheme } from '@oxy.so/bloom/theme';
@@ -35,7 +37,7 @@ export const FileDetailsModal: React.FC<FileDetailsModalProps> = ({
35
37
 
36
38
  return (
37
39
  <View>
38
- <View className="bg-secondary border-border p-[18px] rounded-[14px] border items-center">
40
+ <Card appearance="subtle" className="p-[18px] items-center">
39
41
  <View className="mb-space-16">
40
42
  <Ionicons
41
43
  name={getFileIcon(file.contentType)}
@@ -87,11 +89,11 @@ export const FileDetailsModal: React.FC<FileDetailsModalProps> = ({
87
89
  </View>
88
90
  )}
89
91
  </View>
90
- </View>
92
+ </Card>
91
93
 
92
94
  <View style={{ gap: 8 }}>
93
95
  <Button
94
- variant="primary"
96
+ appearance="solid" tone="accent"
95
97
  onPress={() => {
96
98
  surface.dismiss();
97
99
  onDownload(file.id, file.filename);
@@ -101,7 +103,7 @@ export const FileDetailsModal: React.FC<FileDetailsModalProps> = ({
101
103
  </Button>
102
104
  {isOwner ? (
103
105
  <Button
104
- variant="destructive"
106
+ appearance="solid" tone="danger"
105
107
  onPress={() => {
106
108
  surface.dismiss();
107
109
  onDelete(file.id, file.filename);
@@ -110,7 +112,7 @@ export const FileDetailsModal: React.FC<FileDetailsModalProps> = ({
110
112
  {t('common.actions.delete')}
111
113
  </Button>
112
114
  ) : null}
113
- <Button variant="secondary" onPress={() => surface.dismiss()}>
115
+ <Button appearance="subtle" tone="neutral" onPress={() => surface.dismiss()}>
114
116
  {t('common.cancel')}
115
117
  </Button>
116
118
  </View>