@oxy.so/services 3.0.0 → 4.0.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.
- package/LICENSE +675 -201
- package/NOTICE +215 -3
- package/README.md +1 -3
- package/lib/commonjs/assets/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/icons/manifest.json +5 -11
- package/lib/commonjs/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
- package/lib/commonjs/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
- package/lib/commonjs/assets/fonts/icons/manifest.json +5 -11
- package/lib/commonjs/ui/components/FollowButton.js +15 -28
- package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
- package/lib/commonjs/ui/components/FollowTargetButton.js +17 -13
- package/lib/commonjs/ui/components/FollowTargetButton.js.map +1 -1
- package/lib/commonjs/ui/components/OxyAuthPrompt.js +3 -2
- package/lib/commonjs/ui/components/OxyAuthPrompt.js.map +1 -1
- package/lib/commonjs/ui/components/OxyConsentScreen.js +4 -2
- package/lib/commonjs/ui/components/OxyConsentScreen.js.map +1 -1
- package/lib/commonjs/ui/components/OxySignInButton.js +1 -1
- package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
- package/lib/commonjs/ui/components/OxySignInRequestSurface.js +2 -1
- package/lib/commonjs/ui/components/OxySignInRequestSurface.js.map +1 -1
- package/lib/commonjs/ui/components/ProfileButton.js +67 -267
- package/lib/commonjs/ui/components/ProfileButton.js.map +1 -1
- package/lib/commonjs/ui/components/ProfileSummaryCard.js +2 -2
- package/lib/commonjs/ui/components/ProfileSummaryCard.js.map +1 -1
- package/lib/commonjs/ui/components/SurfaceHeaderAction.js +9 -49
- package/lib/commonjs/ui/components/SurfaceHeaderAction.js.map +1 -1
- package/lib/commonjs/ui/components/SurfaceScreen.js +3 -2
- package/lib/commonjs/ui/components/SurfaceScreen.js.map +1 -1
- package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js +2 -1
- package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js.map +1 -1
- package/lib/commonjs/ui/components/authChooser/SignInEntryView.js +2 -1
- package/lib/commonjs/ui/components/authChooser/SignInEntryView.js.map +1 -1
- package/lib/commonjs/ui/components/authChooser/SignUpView.js +4 -2
- package/lib/commonjs/ui/components/authChooser/SignUpView.js.map +1 -1
- package/lib/commonjs/ui/components/authChooser/requestSurfaces.js +2 -1
- package/lib/commonjs/ui/components/authChooser/requestSurfaces.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js +20 -14
- package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/FileViewer.js +48 -85
- package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
- package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +35 -31
- package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/commonjs/ui/components/modals/DeleteAccountModal.js +9 -6
- package/lib/commonjs/ui/components/modals/DeleteAccountModal.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js +22 -19
- package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentMethodStep.js +6 -3
- package/lib/commonjs/ui/components/payment/PaymentMethodStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentReviewStep.js +6 -3
- package/lib/commonjs/ui/components/payment/PaymentReviewStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js +7 -5
- package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js.map +1 -1
- package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js +20 -17
- package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js.map +1 -1
- package/lib/commonjs/ui/components/photogrid/JustifiedPhotoGrid.js +2 -1
- package/lib/commonjs/ui/components/photogrid/JustifiedPhotoGrid.js.map +1 -1
- package/lib/commonjs/ui/components/surfaces/ActionSheetSurface.js +5 -3
- package/lib/commonjs/ui/components/surfaces/ActionSheetSurface.js.map +1 -1
- package/lib/commonjs/ui/icons/subsetGlyphMaps.js +0 -6
- package/lib/commonjs/ui/icons/subsetGlyphMaps.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountMembersScreen.js +36 -60
- package/lib/commonjs/ui/screens/AccountMembersScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +2 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js +16 -7
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AvatarCropScreen.js +7 -6
- package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/CreateAccountScreen.js +2 -1
- package/lib/commonjs/ui/screens/CreateAccountScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FeedbackScreen.js +18 -9
- package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FileManagementScreen.js +99 -200
- package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +8 -9
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js +19 -8
- package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +2 -1
- package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +20 -10
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +4 -2
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js +2 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/UserListScreen.js +31 -33
- package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +22 -11
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/FileLibraryError.js +7 -18
- package/lib/commonjs/ui/screens/fileManagement/FileLibraryError.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/FileListSection.js +7 -16
- package/lib/commonjs/ui/screens/fileManagement/FileListSection.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js +6 -6
- package/lib/commonjs/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
- package/lib/commonjs/ui/screens/fileManagement/UploadBar.js +23 -66
- package/lib/commonjs/ui/screens/fileManagement/UploadBar.js.map +1 -1
- package/lib/commonjs/ui/screens/trust/TrustAboutScreen.js +17 -8
- package/lib/commonjs/ui/screens/trust/TrustAboutScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js +2 -1
- package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js +3 -2
- package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js.map +1 -1
- package/lib/module/assets/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
- package/lib/module/assets/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
- package/lib/module/assets/assets/fonts/icons/manifest.json +5 -11
- package/lib/module/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
- package/lib/module/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
- package/lib/module/assets/fonts/icons/manifest.json +5 -11
- package/lib/module/ui/components/FollowButton.js +15 -28
- package/lib/module/ui/components/FollowButton.js.map +1 -1
- package/lib/module/ui/components/FollowTargetButton.js +15 -12
- package/lib/module/ui/components/FollowTargetButton.js.map +1 -1
- package/lib/module/ui/components/OxyAuthPrompt.js +2 -1
- package/lib/module/ui/components/OxyAuthPrompt.js.map +1 -1
- package/lib/module/ui/components/OxyConsentScreen.js +4 -2
- package/lib/module/ui/components/OxyConsentScreen.js.map +1 -1
- package/lib/module/ui/components/OxySignInButton.js +1 -1
- package/lib/module/ui/components/OxySignInButton.js.map +1 -1
- package/lib/module/ui/components/OxySignInRequestSurface.js +2 -1
- package/lib/module/ui/components/OxySignInRequestSurface.js.map +1 -1
- package/lib/module/ui/components/ProfileButton.js +70 -269
- package/lib/module/ui/components/ProfileButton.js.map +1 -1
- package/lib/module/ui/components/ProfileSummaryCard.js +2 -2
- package/lib/module/ui/components/ProfileSummaryCard.js.map +1 -1
- package/lib/module/ui/components/SurfaceHeaderAction.js +8 -48
- package/lib/module/ui/components/SurfaceHeaderAction.js.map +1 -1
- package/lib/module/ui/components/SurfaceScreen.js +2 -1
- package/lib/module/ui/components/SurfaceScreen.js.map +1 -1
- package/lib/module/ui/components/authChooser/AccountsMenuView.js +2 -1
- package/lib/module/ui/components/authChooser/AccountsMenuView.js.map +1 -1
- package/lib/module/ui/components/authChooser/SignInEntryView.js +2 -1
- package/lib/module/ui/components/authChooser/SignInEntryView.js.map +1 -1
- package/lib/module/ui/components/authChooser/SignUpView.js +4 -2
- package/lib/module/ui/components/authChooser/SignUpView.js.map +1 -1
- package/lib/module/ui/components/authChooser/requestSurfaces.js +2 -1
- package/lib/module/ui/components/authChooser/requestSurfaces.js.map +1 -1
- package/lib/module/ui/components/fileManagement/FileDetailsModal.js +12 -6
- package/lib/module/ui/components/fileManagement/FileDetailsModal.js.map +1 -1
- package/lib/module/ui/components/fileManagement/FileViewer.js +38 -75
- package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
- package/lib/module/ui/components/fileManagement/UploadPreview.js +31 -27
- package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -1
- package/lib/module/ui/components/modals/DeleteAccountModal.js +6 -3
- package/lib/module/ui/components/modals/DeleteAccountModal.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentDetailsStep.js +6 -3
- package/lib/module/ui/components/payment/PaymentDetailsStep.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentMethodStep.js +6 -3
- package/lib/module/ui/components/payment/PaymentMethodStep.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentReviewStep.js +6 -3
- package/lib/module/ui/components/payment/PaymentReviewStep.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentSuccessStep.js +4 -2
- package/lib/module/ui/components/payment/PaymentSuccessStep.js.map +1 -1
- package/lib/module/ui/components/payment/PaymentSummaryStep.js +6 -3
- package/lib/module/ui/components/payment/PaymentSummaryStep.js.map +1 -1
- package/lib/module/ui/components/photogrid/JustifiedPhotoGrid.js +2 -1
- package/lib/module/ui/components/photogrid/JustifiedPhotoGrid.js.map +1 -1
- package/lib/module/ui/components/surfaces/ActionSheetSurface.js +4 -2
- package/lib/module/ui/components/surfaces/ActionSheetSurface.js.map +1 -1
- package/lib/module/ui/icons/subsetGlyphMaps.js +0 -6
- package/lib/module/ui/icons/subsetGlyphMaps.js.map +1 -1
- package/lib/module/ui/screens/AccountMembersScreen.js +37 -61
- package/lib/module/ui/screens/AccountMembersScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js +2 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountVerificationScreen.js +15 -7
- package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/module/ui/screens/AvatarCropScreen.js +2 -1
- package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -1
- package/lib/module/ui/screens/CreateAccountScreen.js +2 -1
- package/lib/module/ui/screens/CreateAccountScreen.js.map +1 -1
- package/lib/module/ui/screens/FeedbackScreen.js +18 -9
- package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js +91 -192
- package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js +9 -10
- package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/module/ui/screens/LearnMoreUsernamesScreen.js +18 -7
- package/lib/module/ui/screens/LearnMoreUsernamesScreen.js.map +1 -1
- package/lib/module/ui/screens/PaymentGatewayScreen.js +2 -1
- package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js +20 -10
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/module/ui/screens/PrivacySettingsScreen.js +4 -2
- package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/ProfileScreen.js +2 -1
- package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/module/ui/screens/UserListScreen.js +32 -34
- package/lib/module/ui/screens/UserListScreen.js.map +1 -1
- package/lib/module/ui/screens/WelcomeNewUserScreen.js +22 -11
- package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/FileLibraryError.js +6 -17
- package/lib/module/ui/screens/fileManagement/FileLibraryError.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/FileListSection.js +5 -14
- package/lib/module/ui/screens/fileManagement/FileListSection.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js +3 -3
- package/lib/module/ui/screens/fileManagement/PhotoPickerSection.js.map +1 -1
- package/lib/module/ui/screens/fileManagement/UploadBar.js +24 -66
- package/lib/module/ui/screens/fileManagement/UploadBar.js.map +1 -1
- package/lib/module/ui/screens/trust/TrustAboutScreen.js +16 -7
- package/lib/module/ui/screens/trust/TrustAboutScreen.js.map +1 -1
- package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js +2 -1
- package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
- package/lib/module/ui/screens/trust/TrustRulesScreen.js +2 -1
- package/lib/module/ui/screens/trust/TrustRulesScreen.js.map +1 -1
- package/lib/typescript/commonjs/ui/components/FollowButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/FollowTargetButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyAuthPrompt.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts +1 -20
- package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ProfileSummaryCard.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SurfaceHeaderAction.d.ts +1 -5
- package/lib/typescript/commonjs/ui/components/SurfaceHeaderAction.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SurfaceScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/PaymentDetailsStep.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/PaymentMethodStep.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/PaymentReviewStep.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/PaymentSuccessStep.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/payment/PaymentSummaryStep.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/surfaces/ActionSheetSurface.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/icons/Ionicons.d.ts +1 -1
- package/lib/typescript/commonjs/ui/icons/Ionicons.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/icons/MaterialCommunityIcons.d.ts +1 -1
- package/lib/typescript/commonjs/ui/icons/MaterialCommunityIcons.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/icons/subsetGlyphMaps.d.ts +0 -6
- package/lib/typescript/commonjs/ui/icons/subsetGlyphMaps.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountMembersScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/AvatarCropScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/FileLibraryError.d.ts +0 -2
- package/lib/typescript/commonjs/ui/screens/fileManagement/FileLibraryError.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/FileListSection.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/fileManagement/UploadBar.d.ts +1 -14
- package/lib/typescript/commonjs/ui/screens/fileManagement/UploadBar.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/trust/TrustAboutScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/FollowButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/FollowTargetButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyAuthPrompt.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts +1 -1
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ProfileButton.d.ts +1 -20
- package/lib/typescript/module/ui/components/ProfileButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ProfileSummaryCard.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SurfaceHeaderAction.d.ts +1 -5
- package/lib/typescript/module/ui/components/SurfaceHeaderAction.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SurfaceScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/UploadPreview.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/modals/DeleteAccountModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/PaymentDetailsStep.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/PaymentMethodStep.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/PaymentReviewStep.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/PaymentSuccessStep.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/payment/PaymentSummaryStep.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/surfaces/ActionSheetSurface.d.ts.map +1 -1
- package/lib/typescript/module/ui/icons/Ionicons.d.ts +1 -1
- package/lib/typescript/module/ui/icons/Ionicons.d.ts.map +1 -1
- package/lib/typescript/module/ui/icons/MaterialCommunityIcons.d.ts +1 -1
- package/lib/typescript/module/ui/icons/MaterialCommunityIcons.d.ts.map +1 -1
- package/lib/typescript/module/ui/icons/subsetGlyphMaps.d.ts +0 -6
- package/lib/typescript/module/ui/icons/subsetGlyphMaps.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountMembersScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/AvatarCropScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/UserListScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/FileLibraryError.d.ts +0 -2
- package/lib/typescript/module/ui/screens/fileManagement/FileLibraryError.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/FileListSection.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/PhotoPickerSection.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/fileManagement/UploadBar.d.ts +1 -14
- package/lib/typescript/module/ui/screens/fileManagement/UploadBar.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/trust/TrustAboutScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
- package/src/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
- package/src/assets/fonts/icons/manifest.json +5 -11
- package/src/ui/components/FollowButton.tsx +14 -29
- package/src/ui/components/FollowTargetButton.tsx +14 -12
- package/src/ui/components/OxyAuthPrompt.tsx +2 -7
- package/src/ui/components/OxyConsentScreen.tsx +2 -2
- package/src/ui/components/OxySignInButton.tsx +2 -2
- package/src/ui/components/OxySignInRequestSurface.tsx +1 -1
- package/src/ui/components/ProfileButton.tsx +30 -297
- package/src/ui/components/ProfileSummaryCard.tsx +1 -2
- package/src/ui/components/SurfaceHeaderAction.tsx +7 -49
- package/src/ui/components/SurfaceScreen.tsx +2 -1
- package/src/ui/components/authChooser/AccountsMenuView.tsx +1 -1
- package/src/ui/components/authChooser/SignInEntryView.tsx +1 -1
- package/src/ui/components/authChooser/SignUpView.tsx +2 -2
- package/src/ui/components/authChooser/requestSurfaces.tsx +1 -1
- package/src/ui/components/fileManagement/FileDetailsModal.tsx +8 -6
- package/src/ui/components/fileManagement/FileViewer.tsx +21 -50
- package/src/ui/components/fileManagement/UploadPreview.tsx +12 -29
- package/src/ui/components/modals/DeleteAccountModal.tsx +4 -3
- package/src/ui/components/payment/PaymentDetailsStep.tsx +4 -3
- package/src/ui/components/payment/PaymentMethodStep.tsx +4 -3
- package/src/ui/components/payment/PaymentReviewStep.tsx +4 -3
- package/src/ui/components/payment/PaymentSuccessStep.tsx +3 -2
- package/src/ui/components/payment/PaymentSummaryStep.tsx +4 -3
- package/src/ui/components/photogrid/JustifiedPhotoGrid.tsx +2 -1
- package/src/ui/components/surfaces/ActionSheetSurface.tsx +3 -2
- package/src/ui/icons/subsetGlyphMaps.ts +0 -6
- package/src/ui/screens/AccountMembersScreen.tsx +17 -65
- package/src/ui/screens/AccountSettingsScreen.tsx +1 -1
- package/src/ui/screens/AccountVerificationScreen.tsx +14 -7
- package/src/ui/screens/AvatarCropScreen.tsx +2 -10
- package/src/ui/screens/CreateAccountScreen.tsx +1 -1
- package/src/ui/screens/FeedbackScreen.tsx +9 -9
- package/src/ui/screens/FileManagementScreen.tsx +37 -184
- package/src/ui/screens/LanguageSelectorScreen.tsx +5 -13
- package/src/ui/screens/LearnMoreUsernamesScreen.tsx +17 -7
- package/src/ui/screens/PaymentGatewayScreen.tsx +1 -1
- package/src/ui/screens/PremiumSubscriptionScreen.tsx +10 -10
- package/src/ui/screens/PrivacySettingsScreen.tsx +2 -2
- package/src/ui/screens/ProfileScreen.tsx +1 -1
- package/src/ui/screens/UserListScreen.tsx +17 -44
- package/src/ui/screens/WelcomeNewUserScreen.tsx +11 -11
- package/src/ui/screens/fileManagement/FileLibraryError.tsx +6 -14
- package/src/ui/screens/fileManagement/FileListSection.tsx +4 -16
- package/src/ui/screens/fileManagement/PhotoPickerSection.tsx +2 -13
- package/src/ui/screens/fileManagement/UploadBar.tsx +17 -56
- package/src/ui/screens/trust/TrustAboutScreen.tsx +16 -7
- package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +1 -1
- package/src/ui/screens/trust/TrustRulesScreen.tsx +2 -1
- package/lib/commonjs/ui/components/fileManagement/AnimatedButton.js +0 -61
- package/lib/commonjs/ui/components/fileManagement/AnimatedButton.js.map +0 -1
- package/lib/commonjs/ui/components/internal/PinInput.js +0 -118
- package/lib/commonjs/ui/components/internal/PinInput.js.map +0 -1
- package/lib/module/ui/components/fileManagement/AnimatedButton.js +0 -55
- package/lib/module/ui/components/fileManagement/AnimatedButton.js.map +0 -1
- package/lib/module/ui/components/internal/PinInput.js +0 -113
- package/lib/module/ui/components/internal/PinInput.js.map +0 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/AnimatedButton.d.ts +0 -17
- package/lib/typescript/commonjs/ui/components/fileManagement/AnimatedButton.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/internal/PinInput.d.ts +0 -23
- package/lib/typescript/commonjs/ui/components/internal/PinInput.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/fileManagement/AnimatedButton.d.ts +0 -17
- package/lib/typescript/module/ui/components/fileManagement/AnimatedButton.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/internal/PinInput.d.ts +0 -23
- package/lib/typescript/module/ui/components/internal/PinInput.d.ts.map +0 -1
- package/src/ui/components/fileManagement/AnimatedButton.tsx +0 -64
- package/src/ui/components/internal/PinInput.tsx +0 -123
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { Button } from '@oxy.so/bloom/button';
|
|
1
2
|
import React, { useCallback, useMemo, useState } from 'react';
|
|
2
|
-
import { View, StyleSheet
|
|
3
|
+
import { View, StyleSheet } from 'react-native';
|
|
3
4
|
import type { BaseScreenProps } from '../types/navigation';
|
|
4
5
|
import { useTheme } from '@oxy.so/bloom/theme';
|
|
5
6
|
import Ionicons from '../icons/Ionicons';
|
|
@@ -196,19 +197,10 @@ const LanguageSelectorScreen: React.FC<LanguageSelectorScreenProps> = () => {
|
|
|
196
197
|
</Text>
|
|
197
198
|
</View>
|
|
198
199
|
) : canRemove ? (
|
|
199
|
-
<
|
|
200
|
-
onPress={() => handleRemove(entry.code)}
|
|
201
|
-
disabled={isBusy}
|
|
202
|
-
hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }}
|
|
203
|
-
accessibilityRole="button"
|
|
200
|
+
<Button appearance="plain" tone="neutral" size="small" iconOnly stopPropagation
|
|
201
|
+
onPress={() => handleRemove(entry.code)} disabled={isBusy}
|
|
204
202
|
accessibilityLabel={`${t('language.remove')} ${entry.name}`}
|
|
205
|
-
|
|
206
|
-
<Ionicons
|
|
207
|
-
name="close-circle"
|
|
208
|
-
size={REMOVE_ICON_SIZE}
|
|
209
|
-
color={bloomTheme.colors.textSecondary}
|
|
210
|
-
/>
|
|
211
|
-
</TouchableOpacity>
|
|
203
|
+
icon={<Ionicons name="close-circle" size={REMOVE_ICON_SIZE} color={bloomTheme.colors.textSecondary} />} />
|
|
212
204
|
) : undefined
|
|
213
205
|
}
|
|
214
206
|
showChevron={false}
|
|
@@ -10,7 +10,17 @@ import {
|
|
|
10
10
|
AccordionTrigger,
|
|
11
11
|
AccordionContent,
|
|
12
12
|
} from '@oxy.so/bloom/accordion';
|
|
13
|
-
|
|
13
|
+
// Per glyph, never `@oxy.so/bloom/icons`. That barrel re-exports all 461 Remix
|
|
14
|
+
// glyphs and Metro does not tree-shake, so one import of it here re-ships every
|
|
15
|
+
// glyph — 313,123 B, measured — to every app in this package's graph, and no
|
|
16
|
+
// consumer can opt out of what a dependency asks for.
|
|
17
|
+
import { RiAtLine } from '@oxy.so/bloom/icons/RiAtLine';
|
|
18
|
+
import { RiKey2Line } from '@oxy.so/bloom/icons/RiKey2Line';
|
|
19
|
+
import { RiListUnordered } from '@oxy.so/bloom/icons/RiListUnordered';
|
|
20
|
+
import { RiResetRightLine } from '@oxy.so/bloom/icons/RiResetRightLine';
|
|
21
|
+
import { RiSparklingLine } from '@oxy.so/bloom/icons/RiSparklingLine';
|
|
22
|
+
// `Props` has no per-glyph subpath and needs none: `import type` is erased
|
|
23
|
+
// before any bundler sees it, so the barrel is named here and never loaded.
|
|
14
24
|
import type { Props as IconProps } from '@oxy.so/bloom/icons';
|
|
15
25
|
import type { BaseScreenProps } from '../types/navigation';
|
|
16
26
|
import { useI18n } from '../hooks/useI18n';
|
|
@@ -28,31 +38,31 @@ const INFO_SECTIONS: InfoSection[] = [
|
|
|
28
38
|
id: 'what',
|
|
29
39
|
titleKey: 'learnMoreUsernames.sections.what.title',
|
|
30
40
|
contentKey: 'learnMoreUsernames.sections.what.content',
|
|
31
|
-
Icon:
|
|
41
|
+
Icon: RiAtLine,
|
|
32
42
|
},
|
|
33
43
|
{
|
|
34
44
|
id: 'rules',
|
|
35
45
|
titleKey: 'learnMoreUsernames.sections.rules.title',
|
|
36
46
|
contentKey: 'learnMoreUsernames.sections.rules.content',
|
|
37
|
-
Icon:
|
|
47
|
+
Icon: RiListUnordered,
|
|
38
48
|
},
|
|
39
49
|
{
|
|
40
50
|
id: 'unique',
|
|
41
51
|
titleKey: 'learnMoreUsernames.sections.unique.title',
|
|
42
52
|
contentKey: 'learnMoreUsernames.sections.unique.content',
|
|
43
|
-
Icon:
|
|
53
|
+
Icon: RiKey2Line,
|
|
44
54
|
},
|
|
45
55
|
{
|
|
46
56
|
id: 'change',
|
|
47
57
|
titleKey: 'learnMoreUsernames.sections.change.title',
|
|
48
58
|
contentKey: 'learnMoreUsernames.sections.change.content',
|
|
49
|
-
Icon:
|
|
59
|
+
Icon: RiResetRightLine,
|
|
50
60
|
},
|
|
51
61
|
{
|
|
52
62
|
id: 'tips',
|
|
53
63
|
titleKey: 'learnMoreUsernames.sections.tips.title',
|
|
54
64
|
contentKey: 'learnMoreUsernames.sections.tips.content',
|
|
55
|
-
Icon:
|
|
65
|
+
Icon: RiSparklingLine,
|
|
56
66
|
},
|
|
57
67
|
];
|
|
58
68
|
|
|
@@ -84,7 +94,7 @@ const LearnMoreUsernamesScreen: React.FC<BaseScreenProps> = ({
|
|
|
84
94
|
<>
|
|
85
95
|
<View className="px-screen-margin pb-space-32">
|
|
86
96
|
<View className="items-center py-space-24 gap-space-12">
|
|
87
|
-
<IconCircle icon={
|
|
97
|
+
<IconCircle icon={RiAtLine} />
|
|
88
98
|
<Text className="font-sans text-body text-text-secondary text-center">
|
|
89
99
|
{t('learnMoreUsernames.introText')}
|
|
90
100
|
</Text>
|
|
@@ -195,7 +195,7 @@ const PaymentGatewayScreen: React.FC<PaymentGatewayScreenProps> = (props) => {
|
|
|
195
195
|
{t('payment.errors.invalidAmount')}
|
|
196
196
|
</H4>
|
|
197
197
|
<Button
|
|
198
|
-
|
|
198
|
+
appearance="solid" tone="accent"
|
|
199
199
|
onPress={handleClose}
|
|
200
200
|
size="small"
|
|
201
201
|
icon={<Ionicons name="close" size={16} />}
|
|
@@ -599,7 +599,7 @@ const PremiumSubscriptionScreen: React.FC<BaseScreenProps> = ({
|
|
|
599
599
|
<View className="flex-row gap-space-12">
|
|
600
600
|
{subscription.cancelAtPeriodEnd ? (
|
|
601
601
|
<Button
|
|
602
|
-
|
|
602
|
+
appearance="solid" tone="accent"
|
|
603
603
|
onPress={handleReactivateSubscription}
|
|
604
604
|
className="flex-1"
|
|
605
605
|
accessibilityLabel={t('premium.actions.reactivate') || 'Reactivate'}
|
|
@@ -608,7 +608,7 @@ const PremiumSubscriptionScreen: React.FC<BaseScreenProps> = ({
|
|
|
608
608
|
</Button>
|
|
609
609
|
) : (
|
|
610
610
|
<Button
|
|
611
|
-
|
|
611
|
+
appearance="solid" tone="danger"
|
|
612
612
|
onPress={handleCancelSubscription}
|
|
613
613
|
className="flex-1"
|
|
614
614
|
accessibilityLabel={t('premium.actions.cancelSubBtn') || 'Cancel Subscription'}
|
|
@@ -618,7 +618,7 @@ const PremiumSubscriptionScreen: React.FC<BaseScreenProps> = ({
|
|
|
618
618
|
)}
|
|
619
619
|
|
|
620
620
|
<Button
|
|
621
|
-
|
|
621
|
+
appearance="subtle" tone="neutral"
|
|
622
622
|
onPress={() => navigate?.('PaymentGateway')}
|
|
623
623
|
className="flex-1"
|
|
624
624
|
accessibilityLabel={t('premium.actions.manageBilling') || 'Manage Billing'}
|
|
@@ -752,7 +752,7 @@ const PremiumSubscriptionScreen: React.FC<BaseScreenProps> = ({
|
|
|
752
752
|
|
|
753
753
|
{isCurrentPlan ? (
|
|
754
754
|
<Button
|
|
755
|
-
|
|
755
|
+
appearance="subtle" tone="neutral"
|
|
756
756
|
disabled
|
|
757
757
|
icon={<Ionicons name="checkmark-circle" size={18} color={colors.success} />}
|
|
758
758
|
accessibilityLabel={t('premium.plan.current') || 'Current Plan'}
|
|
@@ -762,7 +762,7 @@ const PremiumSubscriptionScreen: React.FC<BaseScreenProps> = ({
|
|
|
762
762
|
</Button>
|
|
763
763
|
) : !availability.available ? (
|
|
764
764
|
<Button
|
|
765
|
-
|
|
765
|
+
appearance="subtle" tone="neutral"
|
|
766
766
|
disabled
|
|
767
767
|
accessibilityLabel={t('premium.plan.notAvailableInApp') || 'Not Available in Current App'}
|
|
768
768
|
className="w-full"
|
|
@@ -895,7 +895,7 @@ const PremiumSubscriptionScreen: React.FC<BaseScreenProps> = ({
|
|
|
895
895
|
|
|
896
896
|
{isIncludedInCurrentPlan ? (
|
|
897
897
|
<Button
|
|
898
|
-
|
|
898
|
+
appearance="solid" tone="accent"
|
|
899
899
|
disabled
|
|
900
900
|
icon={<Ionicons name="checkmark-circle" size={16} color={colors.primaryForeground} />}
|
|
901
901
|
accessibilityLabel={t('premium.feature.includedInPlan') || 'Included in your plan'}
|
|
@@ -906,7 +906,7 @@ const PremiumSubscriptionScreen: React.FC<BaseScreenProps> = ({
|
|
|
906
906
|
) : isSubscribed ? (
|
|
907
907
|
<View className="flex-row gap-space-8">
|
|
908
908
|
<Button
|
|
909
|
-
|
|
909
|
+
appearance="subtle" tone="neutral"
|
|
910
910
|
disabled
|
|
911
911
|
icon={<Ionicons name="checkmark" size={16} color={colors.success} />}
|
|
912
912
|
accessibilityLabel={t('premium.feature.subscribed') || 'Subscribed'}
|
|
@@ -915,7 +915,7 @@ const PremiumSubscriptionScreen: React.FC<BaseScreenProps> = ({
|
|
|
915
915
|
{t('premium.feature.subscribed') || 'Subscribed'}
|
|
916
916
|
</Button>
|
|
917
917
|
<Button
|
|
918
|
-
|
|
918
|
+
appearance="subtle" tone="neutral"
|
|
919
919
|
onPress={() => handleFeatureUnsubscribe(feature.id)}
|
|
920
920
|
accessibilityLabel={t('premium.actions.unsubscribe') || 'Unsubscribe'}
|
|
921
921
|
className="flex-1"
|
|
@@ -925,7 +925,7 @@ const PremiumSubscriptionScreen: React.FC<BaseScreenProps> = ({
|
|
|
925
925
|
</View>
|
|
926
926
|
) : canPurchase ? (
|
|
927
927
|
<Button
|
|
928
|
-
|
|
928
|
+
appearance="solid" tone="accent"
|
|
929
929
|
onPress={() => handleFeatureSubscribe(feature.id)}
|
|
930
930
|
disabled={processingPayment}
|
|
931
931
|
loading={processingPayment}
|
|
@@ -936,7 +936,7 @@ const PremiumSubscriptionScreen: React.FC<BaseScreenProps> = ({
|
|
|
936
936
|
</Button>
|
|
937
937
|
) : (
|
|
938
938
|
<Button
|
|
939
|
-
|
|
939
|
+
appearance="subtle" tone="neutral"
|
|
940
940
|
disabled
|
|
941
941
|
accessibilityLabel={t('premium.feature.plansOnly') || 'Only available in subscription plans'}
|
|
942
942
|
className="w-full"
|
|
@@ -367,7 +367,7 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
367
367
|
title={displayName}
|
|
368
368
|
rightElement={
|
|
369
369
|
<Button
|
|
370
|
-
|
|
370
|
+
appearance="solid" tone="danger"
|
|
371
371
|
size="small"
|
|
372
372
|
onPress={() => handleUnblock(userId)}
|
|
373
373
|
>
|
|
@@ -401,7 +401,7 @@ const PrivacySettingsScreen: React.FC<BaseScreenProps> = ({
|
|
|
401
401
|
description={t('privacySettings.restrictedDescription') || 'Limited interactions'}
|
|
402
402
|
rightElement={
|
|
403
403
|
<Button
|
|
404
|
-
|
|
404
|
+
appearance="subtle" tone="neutral"
|
|
405
405
|
size="small"
|
|
406
406
|
onPress={() => handleUnrestrict(userId)}
|
|
407
407
|
>
|
|
@@ -214,7 +214,7 @@ const ProfileScreen: React.FC<ProfileScreenProps> = ({ userId, username, theme,
|
|
|
214
214
|
<View style={styles.actionButtonWrapper}>
|
|
215
215
|
{isOwnProfile ? (
|
|
216
216
|
<Button
|
|
217
|
-
|
|
217
|
+
appearance="subtle" tone="neutral"
|
|
218
218
|
size="small"
|
|
219
219
|
onPress={() => navigate?.('ManageAccount')}
|
|
220
220
|
>
|
|
@@ -5,14 +5,13 @@ import {
|
|
|
5
5
|
StyleSheet,
|
|
6
6
|
ActivityIndicator,
|
|
7
7
|
FlatList,
|
|
8
|
-
TouchableOpacity,
|
|
9
8
|
RefreshControl,
|
|
10
9
|
} from 'react-native';
|
|
11
10
|
import type { BaseScreenProps } from '../types/navigation';
|
|
12
11
|
import { useTheme } from '@oxy.so/bloom/theme';
|
|
13
12
|
import { H6, Text } from '@oxy.so/bloom/typography';
|
|
14
13
|
import { Button } from '@oxy.so/bloom/button';
|
|
15
|
-
import {
|
|
14
|
+
import { ContactRow } from '@oxy.so/bloom/chat-people';
|
|
16
15
|
import FollowButton from '../components/FollowButton';
|
|
17
16
|
import Ionicons from '../icons/Ionicons';
|
|
18
17
|
import { useI18n } from '../hooks/useI18n';
|
|
@@ -36,7 +35,6 @@ interface UserListScreenProps extends BaseScreenProps {
|
|
|
36
35
|
}
|
|
37
36
|
|
|
38
37
|
const PAGE_SIZE = 20;
|
|
39
|
-
const AVATAR_SIZE = 48;
|
|
40
38
|
const EMPTY_ICON_SIZE = 64;
|
|
41
39
|
const ERROR_ICON_SIZE = 48;
|
|
42
40
|
|
|
@@ -161,42 +159,21 @@ const UserListScreen: React.FC<UserListScreenProps> = ({
|
|
|
161
159
|
const handle = getAccountFallbackHandle(item);
|
|
162
160
|
|
|
163
161
|
return (
|
|
164
|
-
<
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
source={
|
|
174
|
-
item.avatar
|
|
175
|
-
? oxyServices.getFileDownloadUrl(item.avatar, 'thumb')
|
|
176
|
-
: undefined
|
|
177
|
-
}
|
|
178
|
-
name={displayName}
|
|
179
|
-
size={AVATAR_SIZE}
|
|
180
|
-
/>
|
|
181
|
-
<View style={styles.userInfo}>
|
|
182
|
-
<Text className="text-text font-medium text-base" numberOfLines={1}>
|
|
183
|
-
{displayName}
|
|
184
|
-
</Text>
|
|
185
|
-
{handle ? (
|
|
186
|
-
<Text className="text-text-secondary text-sm mt-space-2" numberOfLines={1}>
|
|
162
|
+
<View className="px-screen-margin flex-row items-center gap-space-12">
|
|
163
|
+
<ContactRow id={itemUserId || displayName} name={displayName}
|
|
164
|
+
subtitle={handle ? (item.username ? `@${handle}` : handle) : undefined}
|
|
165
|
+
avatar={item.avatar ? oxyServices.getFileDownloadUrl(item.avatar, 'thumb') : undefined}
|
|
166
|
+
horizontalInset={0} style={{ flex: 1 }}
|
|
167
|
+
onPress={() => handleUserPress(item)}
|
|
168
|
+
identitySlot={<View style={styles.userInfo}>
|
|
169
|
+
<Text variant="body-medium" numberOfLines={1}>{displayName}</Text>
|
|
170
|
+
{handle ? <Text className="text-text-secondary text-sm mt-space-2" numberOfLines={1}>
|
|
187
171
|
{item.username ? `@${handle}` : handle}
|
|
188
|
-
</Text>
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
</Text>
|
|
194
|
-
) : null}
|
|
195
|
-
</View>
|
|
196
|
-
{!isCurrentUser && itemUserId ? (
|
|
197
|
-
<FollowButton userId={itemUserId} size="small" />
|
|
198
|
-
) : null}
|
|
199
|
-
</TouchableOpacity>
|
|
172
|
+
</Text> : null}
|
|
173
|
+
{description ? <Text className="text-text-secondary text-sm mt-space-4" numberOfLines={2}>{description}</Text> : null}
|
|
174
|
+
</View>} />
|
|
175
|
+
{!isCurrentUser && itemUserId ? <FollowButton userId={itemUserId} size="small" /> : null}
|
|
176
|
+
</View>
|
|
200
177
|
);
|
|
201
178
|
},
|
|
202
179
|
[handleUserPress, currentUserId, oxyServices]
|
|
@@ -257,7 +234,7 @@ const UserListScreen: React.FC<UserListScreenProps> = ({
|
|
|
257
234
|
<View style={styles.center} className="px-space-32 gap-space-16">
|
|
258
235
|
<Ionicons name="alert-circle" size={ERROR_ICON_SIZE} color={bloomTheme.colors.error} />
|
|
259
236
|
<Text className="text-text-secondary text-base text-center">{error}</Text>
|
|
260
|
-
<Button
|
|
237
|
+
<Button appearance="solid" tone="accent" onPress={() => fetchUsers(0)}>
|
|
261
238
|
{t('common.retry') || 'Retry'}
|
|
262
239
|
</Button>
|
|
263
240
|
</View>
|
|
@@ -304,17 +281,13 @@ const styles = StyleSheet.create({
|
|
|
304
281
|
listContent: {
|
|
305
282
|
flexGrow: 1,
|
|
306
283
|
},
|
|
307
|
-
userItem: {
|
|
308
|
-
flexDirection: 'row',
|
|
309
|
-
alignItems: 'center',
|
|
310
|
-
},
|
|
311
284
|
userInfo: {
|
|
312
285
|
flex: 1,
|
|
313
286
|
},
|
|
314
287
|
// Inset the hairline separator to align with the start of the user's text
|
|
315
288
|
// content (avatar width + screen margin + gap).
|
|
316
289
|
separator: {
|
|
317
|
-
marginLeft:
|
|
290
|
+
marginLeft: 72,
|
|
318
291
|
},
|
|
319
292
|
emptyContainer: {
|
|
320
293
|
flex: 1,
|
|
@@ -182,10 +182,10 @@ const WelcomeNewUserScreen: React.FC<BaseScreenProps & { newUser?: User }> = ({
|
|
|
182
182
|
if (currentStep === totalSteps - 1) {
|
|
183
183
|
return (
|
|
184
184
|
<View style={{ flexDirection: 'row', gap: 8, justifyContent: 'flex-end' }}>
|
|
185
|
-
<Button
|
|
185
|
+
<Button appearance="subtle" tone="neutral" onPress={prevStep} size="small">
|
|
186
186
|
{t('welcomeNew.actions.back') || 'Back'}
|
|
187
187
|
</Button>
|
|
188
|
-
<Button
|
|
188
|
+
<Button appearance="solid" tone="accent" onPress={finish} size="small">
|
|
189
189
|
{t('welcomeNew.actions.enter') || 'Enter'}
|
|
190
190
|
</Button>
|
|
191
191
|
</View>
|
|
@@ -195,11 +195,11 @@ const WelcomeNewUserScreen: React.FC<BaseScreenProps & { newUser?: User }> = ({
|
|
|
195
195
|
return (
|
|
196
196
|
<View style={{ flexDirection: 'row', gap: 8, justifyContent: 'flex-end' }}>
|
|
197
197
|
{avatarStepIndex > 0 && (
|
|
198
|
-
<Button
|
|
198
|
+
<Button appearance="subtle" tone="neutral" onPress={skipToAvatar} size="small">
|
|
199
199
|
{t('welcomeNew.actions.skip') || 'Skip'}
|
|
200
200
|
</Button>
|
|
201
201
|
)}
|
|
202
|
-
<Button
|
|
202
|
+
<Button appearance="solid" tone="accent" onPress={nextStep} size="small">
|
|
203
203
|
{t('welcomeNew.actions.next') || 'Next'}
|
|
204
204
|
</Button>
|
|
205
205
|
</View>
|
|
@@ -208,10 +208,10 @@ const WelcomeNewUserScreen: React.FC<BaseScreenProps & { newUser?: User }> = ({
|
|
|
208
208
|
if (nameStepIndex >= 0 && currentStep === nameStepIndex) {
|
|
209
209
|
return (
|
|
210
210
|
<View style={{ flexDirection: 'row', gap: 8, justifyContent: 'flex-end' }}>
|
|
211
|
-
<Button
|
|
211
|
+
<Button appearance="subtle" tone="neutral" onPress={prevStep} size="small">
|
|
212
212
|
{t('welcomeNew.actions.back') || 'Back'}
|
|
213
213
|
</Button>
|
|
214
|
-
<Button
|
|
214
|
+
<Button appearance="solid" tone="accent" onPress={submitName} size="small" disabled={!firstName.trim() || savingName} loading={savingName}>
|
|
215
215
|
{t('welcomeNew.actions.continue') || 'Continue'}
|
|
216
216
|
</Button>
|
|
217
217
|
</View>
|
|
@@ -220,10 +220,10 @@ const WelcomeNewUserScreen: React.FC<BaseScreenProps & { newUser?: User }> = ({
|
|
|
220
220
|
if (step.showAvatar) {
|
|
221
221
|
return (
|
|
222
222
|
<View style={{ flexDirection: 'row', gap: 8, justifyContent: 'flex-end' }}>
|
|
223
|
-
<Button
|
|
223
|
+
<Button appearance="subtle" tone="neutral" onPress={prevStep} size="small">
|
|
224
224
|
{t('welcomeNew.actions.back') || 'Back'}
|
|
225
225
|
</Button>
|
|
226
|
-
<Button
|
|
226
|
+
<Button appearance="solid" tone="accent" onPress={nextStep} size="small">
|
|
227
227
|
{avatarUri ? (t('welcomeNew.actions.continue') || 'Continue') : (t('welcomeNew.actions.skip') || 'Skip')}
|
|
228
228
|
</Button>
|
|
229
229
|
</View>
|
|
@@ -231,10 +231,10 @@ const WelcomeNewUserScreen: React.FC<BaseScreenProps & { newUser?: User }> = ({
|
|
|
231
231
|
}
|
|
232
232
|
return (
|
|
233
233
|
<View style={{ flexDirection: 'row', gap: 8, justifyContent: 'flex-end' }}>
|
|
234
|
-
<Button
|
|
234
|
+
<Button appearance="subtle" tone="neutral" onPress={prevStep} size="small">
|
|
235
235
|
{t('welcomeNew.actions.back') || 'Back'}
|
|
236
236
|
</Button>
|
|
237
|
-
<Button
|
|
237
|
+
<Button appearance="solid" tone="accent" onPress={nextStep} size="small">
|
|
238
238
|
{t('welcomeNew.actions.next') || 'Next'}
|
|
239
239
|
</Button>
|
|
240
240
|
</View>
|
|
@@ -296,7 +296,7 @@ const WelcomeNewUserScreen: React.FC<BaseScreenProps & { newUser?: User }> = ({
|
|
|
296
296
|
placeholderColor={`${colors.primary}20`}
|
|
297
297
|
style={styles.avatar}
|
|
298
298
|
/>
|
|
299
|
-
<Button
|
|
299
|
+
<Button appearance="solid" tone="accent" size="small" onPress={openAvatarPicker}>
|
|
300
300
|
{avatarUri ? (t('welcomeNew.avatar.change') || 'Change Avatar') : (t('welcomeNew.avatar.add') || 'Add Avatar')}
|
|
301
301
|
</Button>
|
|
302
302
|
</View>
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import { View
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
import { Button } from '@oxy.so/bloom/button';
|
|
4
|
+
import { Text } from '@oxy.so/bloom/typography';
|
|
3
5
|
import Ionicons from '../../icons/Ionicons';
|
|
4
6
|
|
|
5
7
|
export interface FileLibraryErrorProps {
|
|
@@ -11,8 +13,6 @@ export interface FileLibraryErrorProps {
|
|
|
11
13
|
iconColor: string;
|
|
12
14
|
titleColor: string;
|
|
13
15
|
descriptionColor: string;
|
|
14
|
-
/** Retry button background (button label/icon are always white). */
|
|
15
|
-
buttonColor: string;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
/**
|
|
@@ -30,7 +30,6 @@ const FileLibraryError: React.FC<FileLibraryErrorProps> = ({
|
|
|
30
30
|
iconColor,
|
|
31
31
|
titleColor,
|
|
32
32
|
descriptionColor,
|
|
33
|
-
buttonColor,
|
|
34
33
|
}) => (
|
|
35
34
|
<View className="items-center py-[40px] px-[24px]">
|
|
36
35
|
<Ionicons name="cloud-offline-outline" size={64} color={iconColor} />
|
|
@@ -40,16 +39,9 @@ const FileLibraryError: React.FC<FileLibraryErrorProps> = ({
|
|
|
40
39
|
<Text className="text-[16px] text-center leading-[24px] mb-[32px]" style={{ color: descriptionColor }}>
|
|
41
40
|
{description}
|
|
42
41
|
</Text>
|
|
43
|
-
<
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
onPress={onRetry}
|
|
47
|
-
accessibilityRole="button"
|
|
48
|
-
accessibilityLabel={retryLabel}
|
|
49
|
-
>
|
|
50
|
-
<Ionicons name="refresh" size={20} color="#FFFFFF" />
|
|
51
|
-
<Text className="text-white text-[16px] font-semibold">{retryLabel}</Text>
|
|
52
|
-
</TouchableOpacity>
|
|
42
|
+
<Button onPress={onRetry} accessibilityLabel={retryLabel}>
|
|
43
|
+
{retryLabel}
|
|
44
|
+
</Button>
|
|
53
45
|
</View>
|
|
54
46
|
);
|
|
55
47
|
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
TouchableOpacity,
|
|
6
|
-
ScrollView,
|
|
7
|
-
RefreshControl,
|
|
8
|
-
ActivityIndicator,
|
|
9
|
-
} from 'react-native';
|
|
2
|
+
import { View, ScrollView, RefreshControl, ActivityIndicator } from 'react-native';
|
|
3
|
+
import { Button } from '@oxy.so/bloom/button';
|
|
4
|
+
import { Text } from '@oxy.so/bloom/typography';
|
|
10
5
|
import Ionicons from '../../icons/Ionicons';
|
|
11
6
|
import type { FileMetadata } from '@oxy.so/core';
|
|
12
7
|
import { SettingsListGroup, SettingsListItem } from '@oxy.so/bloom/settings-list';
|
|
@@ -88,14 +83,7 @@ const FileListSection: React.FC<FileListSectionProps> = ({
|
|
|
88
83
|
<Text className="text-[16px] text-center leading-[24px] mb-space-32" style={{ color: colors.textSecondary }}>
|
|
89
84
|
{t('fileManagement.noResults.description', { query: searchQuery })}
|
|
90
85
|
</Text>
|
|
91
|
-
<
|
|
92
|
-
className="flex-row items-center px-space-24 py-space-12 rounded-[24px] gap-space-8"
|
|
93
|
-
style={{ backgroundColor: colors.primary }}
|
|
94
|
-
onPress={onClearSearch}
|
|
95
|
-
>
|
|
96
|
-
<Ionicons name="refresh" size={20} color="#FFFFFF" />
|
|
97
|
-
<Text className="text-white text-[16px] font-semibold">{t('fileManagement.clearSearch')}</Text>
|
|
98
|
-
</TouchableOpacity>
|
|
86
|
+
<Button onPress={onClearSearch}>{t('fileManagement.clearSearch')}</Button>
|
|
99
87
|
</View>
|
|
100
88
|
) : filteredFiles.length === 0 ? renderEmptyState() : (
|
|
101
89
|
<>
|
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
import React, { useCallback, useMemo, useRef, useState } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
Text,
|
|
5
|
-
TouchableOpacity,
|
|
6
|
-
ActivityIndicator,
|
|
7
|
-
RefreshControl,
|
|
8
|
-
FlatList,
|
|
9
|
-
Platform,
|
|
10
|
-
Animated,
|
|
11
|
-
useWindowDimensions,
|
|
12
|
-
type LayoutChangeEvent,
|
|
13
|
-
} from 'react-native';
|
|
2
|
+
import { View, TouchableOpacity, ActivityIndicator, RefreshControl, FlatList, Platform, Animated, useWindowDimensions, type LayoutChangeEvent } from 'react-native';
|
|
3
|
+
import { Text } from '@oxy.so/bloom/typography';
|
|
14
4
|
import { Image as ExpoImage } from 'expo-image';
|
|
15
5
|
import Ionicons from '../../icons/Ionicons';
|
|
16
6
|
import MaterialCommunityIcons from '../../icons/MaterialCommunityIcons';
|
|
@@ -535,7 +525,6 @@ const PhotoPickerView: React.FC<PhotoPickerViewProps> = ({
|
|
|
535
525
|
iconColor="#FF6B6B"
|
|
536
526
|
titleColor="#FFFFFF"
|
|
537
527
|
descriptionColor="rgba(255,255,255,0.7)"
|
|
538
|
-
buttonColor={primaryColor}
|
|
539
528
|
/>
|
|
540
529
|
</View>
|
|
541
530
|
) : isEmpty && loading ? (
|
|
@@ -1,69 +1,30 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import { View
|
|
3
|
-
import
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
import { Text } from '@oxy.so/bloom/typography';
|
|
4
|
+
import { Card } from '@oxy.so/bloom/card';
|
|
5
|
+
import { Loading } from '@oxy.so/bloom/loading';
|
|
6
|
+
import { Meter } from '@oxy.so/bloom/stat-bar';
|
|
4
7
|
|
|
5
8
|
export interface UploadBarProps {
|
|
6
|
-
/** Aggregate upload progress, or null when indeterminate. */
|
|
7
9
|
uploadProgress: { current: number; total: number } | null;
|
|
8
|
-
/** Bloom dark-mode flag (drives banner + track colors). */
|
|
9
|
-
isDark: boolean;
|
|
10
|
-
/** Theme colors used by the banner. */
|
|
11
|
-
colors: { primary: string; text: string; border: string };
|
|
12
10
|
t: (key: string, vars?: Record<string, string | number>) => string;
|
|
13
11
|
}
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
banner: Platform.select({
|
|
20
|
-
web: { boxShadow: '0px 2px 6px rgba(0, 0, 0, 0.1)' },
|
|
21
|
-
default: {
|
|
22
|
-
shadowColor: '#000',
|
|
23
|
-
shadowOpacity: 0.1,
|
|
24
|
-
shadowRadius: 6,
|
|
25
|
-
shadowOffset: { width: 0, height: 2 },
|
|
26
|
-
elevation: 2,
|
|
27
|
-
},
|
|
28
|
-
}) as ViewStyle,
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* The non-blocking "Uploading…" banner overlay shown at the bottom of the file
|
|
33
|
-
* manager while uploads are in flight. Purely presentational — the orchestrator
|
|
34
|
-
* gates rendering on `!selectMode && uploading`.
|
|
35
|
-
*/
|
|
36
|
-
const UploadBar: React.FC<UploadBarProps> = ({ uploadProgress, isDark, colors, t }) => (
|
|
37
|
-
<View
|
|
38
|
-
className="absolute top-[72px] left-0 right-0 items-center z-50"
|
|
39
|
-
style={{ pointerEvents: 'none' }}
|
|
40
|
-
>
|
|
41
|
-
<View
|
|
42
|
-
className="flex-row items-center px-3.5 py-2.5 rounded-[24px] gap-2.5 border min-w-[200px]"
|
|
43
|
-
style={[shadowStyle.banner, { backgroundColor: isDark ? '#222831EE' : '#FFFFFFEE', borderColor: colors.border }]}
|
|
44
|
-
>
|
|
45
|
-
<Ionicons name="cloud-upload" size={18} color={colors.primary} />
|
|
13
|
+
/** Upload state is app-owned; surface, spinner and determinate meter are Bloom. */
|
|
14
|
+
const UploadBar: React.FC<UploadBarProps> = ({ uploadProgress, t }) => (
|
|
15
|
+
<View pointerEvents="none" className="absolute top-[72px] left-0 right-0 items-center z-50">
|
|
16
|
+
<Card appearance="solid" elevation="s" radius="radius-max" className="flex-row items-center px-3.5 py-2.5 gap-2.5 min-w-[200px]">
|
|
46
17
|
<View className="flex-1 gap-1.5">
|
|
47
|
-
<Text
|
|
48
|
-
{t('fileManagement.uploading')}{uploadProgress ? ` ${uploadProgress.current}/${uploadProgress.total}` : '
|
|
18
|
+
<Text variant="caption-1-medium">
|
|
19
|
+
{t('fileManagement.uploading')}{uploadProgress ? ` ${uploadProgress.current}/${uploadProgress.total}` : '…'}
|
|
49
20
|
</Text>
|
|
50
|
-
{uploadProgress && uploadProgress.total > 0
|
|
51
|
-
<
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
>
|
|
55
|
-
<View
|
|
56
|
-
className="h-full rounded-[2px]"
|
|
57
|
-
style={{
|
|
58
|
-
width: `${(uploadProgress.current / uploadProgress.total) * 100}%`,
|
|
59
|
-
backgroundColor: colors.primary,
|
|
60
|
-
}}
|
|
61
|
-
/>
|
|
62
|
-
</View>
|
|
63
|
-
)}
|
|
21
|
+
{uploadProgress && uploadProgress.total > 0 ? (
|
|
22
|
+
<Meter value={uploadProgress.current} max={uploadProgress.total} height={3}
|
|
23
|
+
accessibilityLabel={t('fileManagement.uploading')} />
|
|
24
|
+
) : null}
|
|
64
25
|
</View>
|
|
65
|
-
<
|
|
66
|
-
</
|
|
26
|
+
<Loading size="small" />
|
|
27
|
+
</Card>
|
|
67
28
|
</View>
|
|
68
29
|
);
|
|
69
30
|
|