feat: implement dynamic theme palette selection

- Introduced a new feature allowing users to select from multiple accent color palettes for buttons, cards, and chat bubbles.
- Added `AppThemePalette` provider to manage the current theme palette and persist user selections.
- Updated the `AppTheme` class to utilize the selected palette for light and dark themes, enhancing visual customization.
- Enhanced the `AppCustomizationPage` to include a palette selector, improving user experience and personalization options.
- Updated localization files to support new palette selection UI elements in multiple languages.
This commit is contained in:
cogwheel0
2025-10-02 01:58:12 +05:30
parent 5eb23b01de
commit 1fa8412e0a
23 changed files with 1011 additions and 577 deletions

View File

@@ -260,6 +260,10 @@
"followingSystem": "Dem System folgen: {theme}",
"@followingSystem": {"placeholders": {"theme": {"type": "String"}}},
"themeDark": "Dunkel",
"themePalette": "Farbpalette",
"@themePalette": {"description": "Titel für die Auswahl der App-Farbpalette."},
"themePaletteDescription": "Wählen Sie die Akzentfarben für Schaltflächen, Karten und Chatblasen.",
"@themePaletteDescription": {"description": "Hilfetext zur Erklärung der Palettenauswahl."},
"themeLight": "Hell",
"currentlyUsingDarkTheme": "Aktuell dunkles Thema",
"currentlyUsingLightTheme": "Aktuell helles Thema",

View File

@@ -519,6 +519,10 @@
},
"themeDark": "Dark",
"@themeDark": {"description": "Theme label for dark appearance."},
"themePalette": "Accent palette",
"@themePalette": {"description": "Title for selecting the app color palette."},
"themePaletteDescription": "Choose the accent colors used for buttons, cards, and chat bubbles.",
"@themePaletteDescription": {"description": "Helper text explaining palette selection."},
"themeLight": "Light",
"@themeLight": {"description": "Theme label for light appearance."},
"currentlyUsingDarkTheme": "Currently using Dark theme",

View File

@@ -260,6 +260,10 @@
"followingSystem": "Selon le système : {theme}",
"@followingSystem": {"placeholders": {"theme": {"type": "String"}}},
"themeDark": "Sombre",
"themePalette": "Palette de couleurs",
"@themePalette": {"description": "Titre pour choisir la palette de couleurs de l'application."},
"themePaletteDescription": "Choisissez les couleurs d'accent utilisées pour les boutons, les cartes et les bulles de discussion.",
"@themePaletteDescription": {"description": "Texte d'aide expliquant la sélection de la palette."},
"themeLight": "Clair",
"currentlyUsingDarkTheme": "Thème sombre actuellement utilisé",
"currentlyUsingLightTheme": "Thème clair actuellement utilisé",

View File

@@ -260,6 +260,10 @@
"followingSystem": "Segue il sistema: {theme}",
"@followingSystem": {"placeholders": {"theme": {"type": "String"}}},
"themeDark": "Scuro",
"themePalette": "Palette di colori",
"@themePalette": {"description": "Titolo per scegliere la palette di colori dell'app."},
"themePaletteDescription": "Scegli i colori di accento usati per pulsanti, schede e bolle di chat.",
"@themePaletteDescription": {"description": "Testo di supporto che spiega la scelta della palette."},
"themeLight": "Chiaro",
"currentlyUsingDarkTheme": "Attualmente tema scuro",
"currentlyUsingLightTheme": "Attualmente tema chiaro",

View File

@@ -1458,6 +1458,18 @@ abstract class AppLocalizations {
/// **'Dark'**
String get themeDark;
/// Title for selecting the app color palette.
///
/// In en, this message translates to:
/// **'Accent palette'**
String get themePalette;
/// Helper text explaining palette selection.
///
/// In en, this message translates to:
/// **'Choose the accent colors used for buttons, cards, and chat bubbles.'**
String get themePaletteDescription;
/// Theme label for light appearance.
///
/// In en, this message translates to:

View File

@@ -755,6 +755,13 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get themeDark => 'Dunkel';
@override
String get themePalette => 'Farbpalette';
@override
String get themePaletteDescription =>
'Wählen Sie die Akzentfarben für Schaltflächen, Karten und Chatblasen.';
@override
String get themeLight => 'Hell';

View File

@@ -751,6 +751,13 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get themeDark => 'Dark';
@override
String get themePalette => 'Accent palette';
@override
String get themePaletteDescription =>
'Choose the accent colors used for buttons, cards, and chat bubbles.';
@override
String get themeLight => 'Light';

View File

@@ -763,6 +763,13 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get themeDark => 'Sombre';
@override
String get themePalette => 'Palette de couleurs';
@override
String get themePaletteDescription =>
'Choisissez les couleurs d\'accent utilisées pour les boutons, les cartes et les bulles de discussion.';
@override
String get themeLight => 'Clair';

View File

@@ -752,6 +752,13 @@ class AppLocalizationsIt extends AppLocalizations {
@override
String get themeDark => 'Scuro';
@override
String get themePalette => 'Palette di colori';
@override
String get themePaletteDescription =>
'Scegli i colori di accento usati per pulsanti, schede e bolle di chat.';
@override
String get themeLight => 'Chiaro';