feat: rename Violet and White themes to Amethyst and Glacier (#973)

This commit is contained in:
MukeshCheekatla 2026-05-07 21:21:58 +05:30
parent 11a1cf7ba9
commit fbedf613f5
8 changed files with 29 additions and 25 deletions

View file

@ -757,8 +757,8 @@
<string name="theme_emerald">Esmeralda</string> <string name="theme_emerald">Esmeralda</string>
<string name="theme_ocean">Océano</string> <string name="theme_ocean">Océano</string>
<string name="theme_rose">Rosa</string> <string name="theme_rose">Rosa</string>
<string name="theme_violet">Violeta</string> <string name="theme_violet">Amatista</string>
<string name="theme_white">Blanco</string> <string name="theme_white">Glaciar</string>
<string name="player_next_episode">Siguiente episodio</string> <string name="player_next_episode">Siguiente episodio</string>
<string name="player_next_episode_finding_source">Buscando fuente…</string> <string name="player_next_episode_finding_source">Buscando fuente…</string>
<string name="player_next_episode_playing_via_countdown">Reproduciendo vía %1$s en %2$d…</string> <string name="player_next_episode_playing_via_countdown">Reproduciendo vía %1$s en %2$d…</string>

View file

@ -790,8 +790,8 @@
<string name="theme_emerald">Émeraude</string> <string name="theme_emerald">Émeraude</string>
<string name="theme_ocean">Océan</string> <string name="theme_ocean">Océan</string>
<string name="theme_rose">Rose</string> <string name="theme_rose">Rose</string>
<string name="theme_violet">Violet</string> <string name="theme_violet">Améthyste</string>
<string name="theme_white">Blanc</string> <string name="theme_white">Glacier</string>
<string name="player_next_episode">Épisode suivant</string> <string name="player_next_episode">Épisode suivant</string>
<string name="player_next_episode_finding_source">Recherche de la source…</string> <string name="player_next_episode_finding_source">Recherche de la source…</string>
<string name="player_next_episode_playing_via_countdown">Lecture via %1$s dans %2$d…</string> <string name="player_next_episode_playing_via_countdown">Lecture via %1$s dans %2$d…</string>

View file

@ -830,8 +830,8 @@
<string name="theme_emerald">Emerald</string> <string name="theme_emerald">Emerald</string>
<string name="theme_ocean">Ocean</string> <string name="theme_ocean">Ocean</string>
<string name="theme_rose">Rose</string> <string name="theme_rose">Rose</string>
<string name="theme_violet">Violet</string> <string name="theme_violet">Amethyst</string>
<string name="theme_white">White</string> <string name="theme_white">Glacier</string>
<string name="player_next_episode">Next Episode</string> <string name="player_next_episode">Next Episode</string>
<string name="player_next_episode_finding_source">Finding source…</string> <string name="player_next_episode_finding_source">Finding source…</string>
<string name="player_next_episode_playing_via_countdown">Playing via %1$s in %2$d…</string> <string name="player_next_episode_playing_via_countdown">Playing via %1$s in %2$d…</string>

View file

@ -13,20 +13,20 @@ import org.jetbrains.compose.resources.StringResource
enum class AppTheme { enum class AppTheme {
CRIMSON, CRIMSON,
OCEAN, OCEAN,
VIOLET, AMETHYST,
EMERALD, EMERALD,
AMBER, AMBER,
ROSE, ROSE,
WHITE, GLACIER,
} }
val AppTheme.labelRes: StringResource val AppTheme.labelRes: StringResource
get() = when (this) { get() = when (this) {
AppTheme.CRIMSON -> Res.string.theme_crimson AppTheme.CRIMSON -> Res.string.theme_crimson
AppTheme.OCEAN -> Res.string.theme_ocean AppTheme.OCEAN -> Res.string.theme_ocean
AppTheme.VIOLET -> Res.string.theme_violet AppTheme.AMETHYST -> Res.string.theme_violet
AppTheme.EMERALD -> Res.string.theme_emerald AppTheme.EMERALD -> Res.string.theme_emerald
AppTheme.AMBER -> Res.string.theme_amber AppTheme.AMBER -> Res.string.theme_amber
AppTheme.ROSE -> Res.string.theme_rose AppTheme.ROSE -> Res.string.theme_rose
AppTheme.WHITE -> Res.string.theme_white AppTheme.GLACIER -> Res.string.theme_white
} }

View file

@ -25,7 +25,7 @@ import nuvio.composeapp.generated.resources.jetbrains_sans_regular
import nuvio.composeapp.generated.resources.jetbrains_sans_semibold import nuvio.composeapp.generated.resources.jetbrains_sans_semibold
import org.jetbrains.compose.resources.Font import org.jetbrains.compose.resources.Font
val LocalAppTheme = staticCompositionLocalOf { AppTheme.WHITE } val LocalAppTheme = staticCompositionLocalOf { AppTheme.GLACIER }
val MaterialTheme.appTheme: AppTheme val MaterialTheme.appTheme: AppTheme
@Composable @Composable
@ -207,7 +207,7 @@ private val NuvioRippleConfiguration = RippleConfiguration(
@Composable @Composable
fun NuvioTheme( fun NuvioTheme(
darkTheme: Boolean = isSystemInDarkTheme(), darkTheme: Boolean = isSystemInDarkTheme(),
appTheme: AppTheme = AppTheme.WHITE, appTheme: AppTheme = AppTheme.GLACIER,
amoled: Boolean = false, amoled: Boolean = false,
content: @Composable () -> Unit, content: @Composable () -> Unit,
) { ) {

View file

@ -36,7 +36,7 @@ object ThemeColors {
backgroundCard = Color(0xFF1A1F24), backgroundCard = Color(0xFF1A1F24),
) )
val Violet = ThemeColorPalette( val Amethyst = ThemeColorPalette(
secondary = Color(0xFF8E24AA), secondary = Color(0xFF8E24AA),
secondaryVariant = Color(0xFF6A1B9A), secondaryVariant = Color(0xFF6A1B9A),
focusRing = Color(0xFFAB47BC), focusRing = Color(0xFFAB47BC),
@ -76,7 +76,7 @@ object ThemeColors {
backgroundCard = Color(0xFF241A1F), backgroundCard = Color(0xFF241A1F),
) )
val White = ThemeColorPalette( val Glacier = ThemeColorPalette(
secondary = Color(0xFFF5F5F5), secondary = Color(0xFFF5F5F5),
secondaryVariant = Color(0xFFE0E0E0), secondaryVariant = Color(0xFFE0E0E0),
onSecondary = Color(0xFF111111), onSecondary = Color(0xFF111111),
@ -91,10 +91,10 @@ object ThemeColors {
fun getColorPalette(theme: AppTheme): ThemeColorPalette = when (theme) { fun getColorPalette(theme: AppTheme): ThemeColorPalette = when (theme) {
AppTheme.CRIMSON -> Crimson AppTheme.CRIMSON -> Crimson
AppTheme.OCEAN -> Ocean AppTheme.OCEAN -> Ocean
AppTheme.VIOLET -> Violet AppTheme.AMETHYST -> Amethyst
AppTheme.EMERALD -> Emerald AppTheme.EMERALD -> Emerald
AppTheme.AMBER -> Amber AppTheme.AMBER -> Amber
AppTheme.ROSE -> Rose AppTheme.ROSE -> Rose
AppTheme.WHITE -> White AppTheme.GLACIER -> Glacier
} }
} }

View file

@ -86,7 +86,7 @@ internal fun LazyListScope.appearanceSettingsContent(
isTablet = isTablet, isTablet = isTablet,
) { ) {
SettingsGroup(isTablet = isTablet) { SettingsGroup(isTablet = isTablet) {
val themes = listOf(AppTheme.WHITE) + AppTheme.entries.filterNot { it == AppTheme.WHITE } val themes = listOf(AppTheme.GLACIER) + AppTheme.entries.filterNot { it == AppTheme.GLACIER }
FlowRow( FlowRow(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()

View file

@ -7,7 +7,7 @@ import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
object ThemeSettingsRepository { object ThemeSettingsRepository {
private val _selectedTheme = MutableStateFlow(AppTheme.WHITE) private val _selectedTheme = MutableStateFlow(AppTheme.GLACIER)
val selectedTheme: StateFlow<AppTheme> = _selectedTheme.asStateFlow() val selectedTheme: StateFlow<AppTheme> = _selectedTheme.asStateFlow()
private val _amoledEnabled = MutableStateFlow(false) private val _amoledEnabled = MutableStateFlow(false)
@ -32,10 +32,10 @@ object ThemeSettingsRepository {
fun clearLocalState() { fun clearLocalState() {
hasLoaded = false hasLoaded = false
_selectedTheme.value = AppTheme.WHITE _selectedTheme.value = AppTheme.GLACIER
_amoledEnabled.value = false _amoledEnabled.value = false
_liquidGlassNativeTabBarEnabled.value = false _liquidGlassNativeTabBarEnabled.value = false
NativeTabBridge.publishAccentColor(AppTheme.WHITE.nativeTabAccentHex()) NativeTabBridge.publishAccentColor(AppTheme.GLACIER.nativeTabAccentHex())
NativeTabBridge.publishLiquidGlassEnabled(false) NativeTabBridge.publishLiquidGlassEnabled(false)
_selectedAppLanguage.value = AppLanguage.ENGLISH _selectedAppLanguage.value = AppLanguage.ENGLISH
} }
@ -45,12 +45,16 @@ object ThemeSettingsRepository {
val stored = ThemeSettingsStorage.loadSelectedTheme() val stored = ThemeSettingsStorage.loadSelectedTheme()
val theme = if (stored != null) { val theme = if (stored != null) {
try { try {
AppTheme.valueOf(stored) when (stored) {
"VIOLET" -> AppTheme.AMETHYST
"WHITE" -> AppTheme.GLACIER
else -> AppTheme.valueOf(stored)
}
} catch (_: IllegalArgumentException) { } catch (_: IllegalArgumentException) {
AppTheme.WHITE AppTheme.GLACIER
} }
} else { } else {
AppTheme.WHITE AppTheme.GLACIER
} }
_selectedTheme.value = theme _selectedTheme.value = theme
NativeTabBridge.publishAccentColor(theme.nativeTabAccentHex()) NativeTabBridge.publishAccentColor(theme.nativeTabAccentHex())
@ -98,9 +102,9 @@ object ThemeSettingsRepository {
private fun AppTheme.nativeTabAccentHex(): String = when (this) { private fun AppTheme.nativeTabAccentHex(): String = when (this) {
AppTheme.CRIMSON -> "#E53935" AppTheme.CRIMSON -> "#E53935"
AppTheme.OCEAN -> "#1E88E5" AppTheme.OCEAN -> "#1E88E5"
AppTheme.VIOLET -> "#8E24AA" AppTheme.AMETHYST -> "#8E24AA"
AppTheme.EMERALD -> "#43A047" AppTheme.EMERALD -> "#43A047"
AppTheme.AMBER -> "#FB8C00" AppTheme.AMBER -> "#FB8C00"
AppTheme.ROSE -> "#D81B60" AppTheme.ROSE -> "#D81B60"
AppTheme.WHITE -> "#F5F5F5" AppTheme.GLACIER -> "#F5F5F5"
} }