feat(ios): refresh mobile settings layout (#15234)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Redesigned mobile Settings with localized sections, promotional
content, support actions, subscription access, and improved account
controls.
- Added sign-in prompts for signed-out users and clearer device-session
handling.
- Added a guided account-deletion flow with email confirmation and
completion messaging.
- Added App Store, download, team invitation, rating, and external
support links.
- **Bug Fixes**
- Improved interactive row behavior, keyboard accessibility, navigation,
and subscription availability.
  - Prevented account deletion for unresolved team owners.
- **Style**
- Refreshed mobile settings, subscription, profile, and promotional card
layouts.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: DarkSky <darksky2048@gmail.com>
This commit is contained in:
keepClamDown
2026-08-19 10:30:37 +08:00
committed by GitHub
parent b4c8548c09
commit d6fd3174b2
25 changed files with 1260 additions and 297 deletions
@@ -1,28 +1,28 @@
{
"ar": 89,
"ca": 86,
"ar": 88,
"ca": 85,
"da": 3,
"de": 96,
"el-GR": 85,
"el-GR": 84,
"en": 100,
"es-AR": 85,
"es-CL": 86,
"es": 85,
"fa": 85,
"fr": 89,
"es-AR": 84,
"es-CL": 85,
"es": 84,
"fa": 84,
"fr": 88,
"hi": 1,
"it": 86,
"ja": 85,
"kk": 92,
"ko": 86,
"ja": 84,
"kk": 91,
"ko": 85,
"nb-NO": 42,
"pl": 86,
"pt-BR": 85,
"ru": 87,
"pt-BR": 84,
"ru": 86,
"sv-SE": 85,
"tr": 92,
"uk": 85,
"ur": 92,
"zh-Hans": 96,
"tr": 91,
"uk": 84,
"ur": 91,
"zh-Hans": 95,
"zh-Hant": 87
}
+70 -2
View File
@@ -3035,6 +3035,14 @@ export function useAFFiNEI18N(): {
* `About`
*/
["com.affine.mobile.setting.about.title"](): string;
/**
* `Log In / Sign Up`
*/
["com.affine.mobile.setting.account.sign-in"](): string;
/**
* `Account & Data`
*/
["com.affine.mobile.setting.account.title"](): string;
/**
* `Font style`
*/
@@ -3051,6 +3059,14 @@ export function useAFFiNEI18N(): {
* `Appearance`
*/
["com.affine.mobile.setting.appearance.title"](): string;
/**
* `Experimental features`
*/
["com.affine.mobile.setting.experimental.features"](): string;
/**
* `Experimental`
*/
["com.affine.mobile.setting.experimental.title"](): string;
/**
* `Settings`
*/
@@ -3060,7 +3076,7 @@ export function useAFFiNEI18N(): {
*/
["com.affine.mobile.setting.others.github"](): string;
/**
* `Discord Group`
* `Discord group`
*/
["com.affine.mobile.setting.others.discord"](): string;
/**
@@ -3080,9 +3096,49 @@ export function useAFFiNEI18N(): {
*/
["com.affine.mobile.setting.others.website"](): string;
/**
* `Delete my account`
* `Delete Account`
*/
["com.affine.mobile.setting.others.delete-account"](): string;
/**
* `Danger Zone`
*/
["com.affine.mobile.setting.danger-zone.title"](): string;
/**
* `Collaborate seamlessly with AFFiNE team, available in Cloud and Self-Hosted versions.`
*/
["com.affine.mobile.setting.promo.description"](): string;
/**
* `AFFiNE for team and more`
*/
["com.affine.mobile.setting.promo.title"](): string;
/**
* `Go Pro`
*/
["com.affine.mobile.setting.subscription.button"](): string;
/**
* `Unlimited space for your notes and boards.`
*/
["com.affine.mobile.setting.subscription.description"](): string;
/**
* `Unlock Pro Features`
*/
["com.affine.mobile.setting.subscription.title"](): string;
/**
* `Invite a friend`
*/
["com.affine.mobile.setting.support.invite"](): string;
/**
* `Check out AFFiNE for notes, whiteboards, docs, and AI.`
*/
["com.affine.mobile.setting.support.invite-message"](): string;
/**
* `Rate AFFiNE`
*/
["com.affine.mobile.setting.support.rate"](): string;
/**
* `Support us`
*/
["com.affine.mobile.setting.support.title"](): string;
/**
* `Want to keep data local?`
*/
@@ -5242,6 +5298,10 @@ export function useAFFiNEI18N(): {
* `Delete your account?`
*/
["com.affine.setting.account.delete.confirm-title"](): string;
/**
* `Confirm your email`
*/
["com.affine.setting.account.delete.email-confirm-title"](): string;
/**
* `Please type your email to confirm`
*/
@@ -10759,6 +10819,14 @@ export const TypedTrans: {
["com.affine.setting.account.delete.confirm-delete-description-2"]: ComponentType<TypedTransProps<Readonly<{}>, {
["1"]: JSX.Element;
}>>;
/**
* `Type <1>{{email}}</1> to confirm account deletion.`
*/
["com.affine.setting.account.delete.email-confirm-description"]: ComponentType<TypedTransProps<{
readonly email: string;
}, {
["1"]: JSX.Element;
}>>;
/**
* `Don't have the app? <1>Click to download</1>.`
*/
+18 -2
View File
@@ -750,18 +750,32 @@
"com.affine.mobile.setting.about.appVersion": "App version",
"com.affine.mobile.setting.about.editorVersion": "Editor version",
"com.affine.mobile.setting.about.title": "About",
"com.affine.mobile.setting.account.sign-in": "Log In / Sign Up",
"com.affine.mobile.setting.account.title": "Account & Data",
"com.affine.mobile.setting.appearance.font": "Font style",
"com.affine.mobile.setting.appearance.language": "Display language",
"com.affine.mobile.setting.appearance.theme": "Color mode",
"com.affine.mobile.setting.appearance.title": "Appearance",
"com.affine.mobile.setting.experimental.features": "Experimental features",
"com.affine.mobile.setting.experimental.title": "Experimental",
"com.affine.mobile.setting.header-title": "Settings",
"com.affine.mobile.setting.others.github": "Star us on GitHub",
"com.affine.mobile.setting.others.discord": "Discord Group",
"com.affine.mobile.setting.others.discord": "Discord group",
"com.affine.mobile.setting.others.privacy": "Privacy",
"com.affine.mobile.setting.others.terms": "Terms of use",
"com.affine.mobile.setting.others.title": "Privacy & others",
"com.affine.mobile.setting.others.website": "Official website",
"com.affine.mobile.setting.others.delete-account": "Delete my account",
"com.affine.mobile.setting.others.delete-account": "Delete Account",
"com.affine.mobile.setting.danger-zone.title": "Danger Zone",
"com.affine.mobile.setting.promo.description": "Collaborate seamlessly with AFFiNE team, available in Cloud and Self-Hosted versions.",
"com.affine.mobile.setting.promo.title": "AFFiNE for team and more",
"com.affine.mobile.setting.subscription.button": "Go Pro",
"com.affine.mobile.setting.subscription.description": "Unlimited space for your notes and boards.",
"com.affine.mobile.setting.subscription.title": "Unlock Pro Features",
"com.affine.mobile.setting.support.invite": "Invite a friend",
"com.affine.mobile.setting.support.invite-message": "Check out AFFiNE for notes, whiteboards, docs, and AI.",
"com.affine.mobile.setting.support.rate": "Rate AFFiNE",
"com.affine.mobile.setting.support.title": "Support us",
"com.affine.mobile.sign-in.skip.hint": "Want to keep data local?",
"com.affine.mobile.sign-in.skip.link": "Start AFFiNE without an account",
"com.affine.moreThan30Days": "Older than a month",
@@ -1297,6 +1311,8 @@
"com.affine.setting.account.delete.confirm-title": "Delete your account?",
"com.affine.setting.account.delete.confirm-delete-description-1": "Are you sure you want to delete your account from <1>{{server}}</1>?",
"com.affine.setting.account.delete.confirm-delete-description-2": "Your account will be inaccessible, and your personal space on the server will be permanently deleted. You can remove local data by uninstalling the app or clearing your browser storage. <1>This action is irreversible.</1>",
"com.affine.setting.account.delete.email-confirm-title": "Confirm your email",
"com.affine.setting.account.delete.email-confirm-description": "Type <1>{{email}}</1> to confirm account deletion.",
"com.affine.setting.account.delete.input-placeholder": "Please type your email to confirm",
"com.affine.setting.account.delete.confirm-button": "Delete",
"com.affine.setting.account.delete.success-title": "Account deleted",