diff --git a/locales/en/index.json b/locales/en/index.json
index baee8e96d59..ab9bf36ee52 100644
--- a/locales/en/index.json
+++ b/locales/en/index.json
@@ -644,6 +644,31 @@
"title": "Forwarding messages by email",
"subtitle": "Receive message previews"
},
+ "appearance": {
+ "title": "Appearance",
+ "subtitle": "Customize the app to your needs",
+ "typefaceStyle": {
+ "title": "Typeface style",
+ "comfortable": {
+ "title": "Comfortable",
+ "description": "Designed for better text readability"
+ },
+ "standard": {
+ "title": "Standard",
+ "description": "The usual style with narrow, geometric shapes"
+ }
+ },
+ "theme": {
+ "title": "Theme",
+ "comingSoon": "Coming soon",
+ "automatic": {
+ "title": "Automatic",
+ "description": "Based on system settings"
+ },
+ "light": "Light",
+ "dark": "Dark"
+ }
+ },
"language": {
"title": "Language",
"subtitle": "Choose language"
diff --git a/locales/it/index.json b/locales/it/index.json
index 20ba049a613..d9015596cc1 100644
--- a/locales/it/index.json
+++ b/locales/it/index.json
@@ -644,6 +644,31 @@
"title": "Inoltro dei messaggi via email",
"subtitle": "Ricevi un’anteprima dei messaggi"
},
+ "appearance": {
+ "title": "Aspetto dell'app",
+ "subtitle": "Personalizza l'app in base alle tue esigenze",
+ "typefaceStyle": {
+ "title": "Stile carattere",
+ "comfortable": {
+ "title": "Confortevole",
+ "description": "Progettato per una migliore leggibilitĂ dei testi"
+ },
+ "standard": {
+ "title": "Standard",
+ "description": "Lo stile di sempre, con forme strette e geometriche"
+ }
+ },
+ "theme": {
+ "title": "Tema",
+ "comingSoon": "In arrivo",
+ "automatic": {
+ "title": "Automatico",
+ "description": "Cambia in base alle impostazioni di sistema"
+ },
+ "light": "Chiaro",
+ "dark": "Scuro"
+ }
+ },
"language": {
"title": "Lingua",
"subtitle": "Scegli la lingua"
diff --git a/ts/navigation/ProfileNavigator.tsx b/ts/navigation/ProfileNavigator.tsx
index 3122f5c3173..67ddd8c02bd 100644
--- a/ts/navigation/ProfileNavigator.tsx
+++ b/ts/navigation/ProfileNavigator.tsx
@@ -29,6 +29,7 @@ import { isGestureEnabled } from "../utils/navigation";
import TrialSystemPlayground from "../screens/profile/TrialSystemPlayground";
import ProfileMainScreen from "../screens/profile/ProfileMainScreen";
import { IOMarkdownPlayground } from "../screens/profile/playgrounds/IOMarkdownPlayground";
+import AppearancePreferenceScreen from "../screens/profile/AppearancePreferenceScreen";
import { ProfileParamsList } from "./params/ProfileParamsList";
import ROUTES from "./routes";
@@ -66,6 +67,10 @@ const ProfileStackNavigator = () => (
name={ROUTES.PROFILE_PREFERENCES_SERVICES}
component={ServicesPreferenceScreen}
/>
+
{
+ const [selectedTypeface, setSelectedTypeface] =
+ useState("comfortable");
+
+ const [selectedColorMode, setSelectedColorMode] =
+ useState("light");
+
+ // Options for typeface
+ const typefaceOptions = [
+ {
+ id: "comfortable" as TypefaceChoice,
+ value: I18n.t(
+ "profile.preferences.list.appearance.typefaceStyle.comfortable.title"
+ ),
+ description: I18n.t(
+ "profile.preferences.list.appearance.typefaceStyle.comfortable.description"
+ )
+ },
+ {
+ id: "standard" as TypefaceChoice,
+ value: I18n.t(
+ "profile.preferences.list.appearance.typefaceStyle.standard.title"
+ ),
+ description: I18n.t(
+ "profile.preferences.list.appearance.typefaceStyle.standard.description"
+ )
+ }
+ ];
+
+ // Options for the color mode
+ const colorModeOptions = [
+ {
+ id: "system" as ColorModeChoice,
+ value: I18n.t(
+ "profile.preferences.list.appearance.theme.automatic.title"
+ ),
+ description: I18n.t(
+ "profile.preferences.list.appearance.theme.automatic.description"
+ ),
+ disabled: true
+ },
+ {
+ id: "light" as ColorModeChoice,
+ value: I18n.t("profile.preferences.list.appearance.theme.light"),
+ disabled: true
+ },
+ {
+ id: "dark" as ColorModeChoice,
+ value: I18n.t("profile.preferences.list.appearance.theme.dark"),
+ disabled: true
+ }
+ ];
+
+ return (
+
+
+
+
+
+ type="radioListItem"
+ items={typefaceOptions}
+ selectedItem={selectedTypeface}
+ onPress={setSelectedTypeface}
+ />
+
+
+
+
+
+ type="radioListItem"
+ items={colorModeOptions}
+ selectedItem={selectedColorMode}
+ onPress={setSelectedColorMode}
+ />
+
+
+
+ );
+};
+
+export default AppearancePreferenceScreen;
diff --git a/ts/screens/profile/PreferencesScreen.tsx b/ts/screens/profile/PreferencesScreen.tsx
index b543c9e0f34..e9c009dc09c 100644
--- a/ts/screens/profile/PreferencesScreen.tsx
+++ b/ts/screens/profile/PreferencesScreen.tsx
@@ -63,6 +63,12 @@ const PreferencesScreen = () => {
});
}, [navigation]);
+ const navigateToAppearancePreferenceScreen = useCallback(() => {
+ navigation.navigate(ROUTES.PROFILE_NAVIGATOR, {
+ screen: ROUTES.PROFILE_PREFERENCES_APPEARANCE
+ });
+ }, [navigation]);
+
const checkPermissionThenGoCalendar = async () => {
await requestWriteCalendarPermission({
title: I18n.t("permissionRationale.calendar.title"),
@@ -109,6 +115,12 @@ const PreferencesScreen = () => {
description: I18n.t("profile.preferences.list.notifications.subtitle"),
onPress: navigateToNotificationPreferenceScreen
},
+ {
+ // Appearance
+ value: I18n.t("profile.preferences.list.appearance.title"),
+ description: I18n.t("profile.preferences.list.appearance.subtitle"),
+ onPress: navigateToAppearancePreferenceScreen
+ },
{
// Calendar
value: I18n.t("profile.preferences.list.preferred_calendar.title"),