diff --git a/app/src/main/java/com/m57/hermescontrol/theme/THEMES.md b/app/src/main/java/com/m57/hermescontrol/theme/THEMES.md index fc7f24cb..fda4dc1a 100644 --- a/app/src/main/java/com/m57/hermescontrol/theme/THEMES.md +++ b/app/src/main/java/com/m57/hermescontrol/theme/THEMES.md @@ -64,8 +64,8 @@ private fun resolveStatusColors(preset: ThemePreset, darkTheme: Boolean) = when } ``` -Dynamic (Material You) color on API 31+ overrides the DEFAULT scheme when -`useDynamicColors = true` and `themePreset == ThemePreset.DEFAULT`. +Dynamic (Material You) color on API 31+ overrides the preset scheme when +`useDynamicColors = true`. ## DEFAULT uses design tokens — that's intentional diff --git a/app/src/main/java/com/m57/hermescontrol/theme/Theme.kt b/app/src/main/java/com/m57/hermescontrol/theme/Theme.kt index 098caf2e..6af2f375 100644 --- a/app/src/main/java/com/m57/hermescontrol/theme/Theme.kt +++ b/app/src/main/java/com/m57/hermescontrol/theme/Theme.kt @@ -96,7 +96,7 @@ fun HermesControlTheme( val context = LocalContext.current val dynamicAvailable = - useDynamicColors && themePreset == ThemePreset.DEFAULT && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S + useDynamicColors && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S val colorScheme = if (dynamicAvailable) { if (darkTheme) { diff --git a/app/src/main/java/com/m57/hermescontrol/theme/presets/CatppuccinScheme.kt b/app/src/main/java/com/m57/hermescontrol/theme/presets/CatppuccinScheme.kt index b825d28f..f01a88fe 100644 --- a/app/src/main/java/com/m57/hermescontrol/theme/presets/CatppuccinScheme.kt +++ b/app/src/main/java/com/m57/hermescontrol/theme/presets/CatppuccinScheme.kt @@ -8,111 +8,111 @@ import com.m57.hermescontrol.theme.HermesStatusColors /** Catppuccin color scheme (dark). */ val CatppuccinDarkColorScheme = darkColorScheme( - primary = Color(0xFFCBA6F7), - onPrimary = Color(0xFF11111B), - primaryContainer = Color(0xFF585B70), - onPrimaryContainer = Color(0xFFF5E0DC), - inversePrimary = Color(0xFF8839EF), - secondary = Color(0xFF89B4FA), - onSecondary = Color(0xFF11111B), - secondaryContainer = Color(0xFF313244), - onSecondaryContainer = Color(0xFFBAC2DE), - tertiary = Color(0xFFF5C2E7), - onTertiary = Color(0xFF11111B), - tertiaryContainer = Color(0xFF45475A), - onTertiaryContainer = Color(0xFFF5E0DC), - background = Color(0xFF1E1E2E), - onBackground = Color(0xFFCDD6F4), - surface = Color(0xFF252538), - onSurface = Color(0xFFCDD6F4), - surfaceVariant = Color(0xFF313244), - onSurfaceVariant = Color(0xFFA6ADC8), - surfaceTint = Color(0xFFCBA6F7), - surfaceContainerLowest = Color(0xFF11111B), - surfaceContainerLow = Color(0xFF181825), - surfaceContainer = Color(0xFF1E1E2E), - surfaceContainerHigh = Color(0xFF252538), - surfaceContainerHighest = Color(0xFF313244), - inverseSurface = Color(0xFFCDD6F4), - inverseOnSurface = Color(0xFF1E1E2E), - error = Color(0xFFF38BA8), - onError = Color(0xFF11111B), - errorContainer = Color(0xFF45475A), - onErrorContainer = Color(0xFFF38BA8), - outline = Color(0xFF585B70), - outlineVariant = Color(0xFF45475A), - scrim = Color(0xFF11111B), + primary = Color(0xFFCBA6F7), // Mauve + onPrimary = Color(0xFF11111B), // Crust + primaryContainer = Color(0xFF45475A), // Surface 1 + onPrimaryContainer = Color(0xFFCDD6F4), // Text + inversePrimary = Color(0xFF8839EF), // Latte Mauve + secondary = Color(0xFF89B4FA), // Blue + onSecondary = Color(0xFF11111B), // Crust + secondaryContainer = Color(0xFF313244), // Surface 0 + onSecondaryContainer = Color(0xFFBAC2DE), // Subtext 1 + tertiary = Color(0xFFF5C2E7), // Pink + onTertiary = Color(0xFF11111B), // Crust + tertiaryContainer = Color(0xFF45475A), // Surface 1 + onTertiaryContainer = Color(0xFFCDD6F4), // Text + background = Color(0xFF1E1E2E), // Base + onBackground = Color(0xFFCDD6F4), // Text + surface = Color(0xFF1E1E2E), // Base + onSurface = Color(0xFFCDD6F4), // Text + surfaceVariant = Color(0xFF313244), // Surface 0 + onSurfaceVariant = Color(0xFFA6ADC8), // Subtext 0 + surfaceTint = Color(0xFFCBA6F7), // Mauve + surfaceContainerLowest = Color(0xFF11111B), // Crust + surfaceContainerLow = Color(0xFF181825), // Mantle + surfaceContainer = Color(0xFF1E1E2E), // Base + surfaceContainerHigh = Color(0xFF313244), // Surface 0 + surfaceContainerHighest = Color(0xFF45475A), // Surface 1 + inverseSurface = Color(0xFFCDD6F4), // Text + inverseOnSurface = Color(0xFF1E1E2E), // Base + error = Color(0xFFF38BA8), // Red + onError = Color(0xFF11111B), // Crust + errorContainer = Color(0xFF313244), // Surface 0 + onErrorContainer = Color(0xFFF38BA8), // Red + outline = Color(0xFF6C7086), // Overlay 0 + outlineVariant = Color(0xFF45475A), // Surface 1 + scrim = Color(0xFF11111B), // Crust ) /** Catppuccin color scheme (light). */ val CatppuccinLightColorScheme = lightColorScheme( - primary = Color(0xFF8839EF), - onPrimary = Color(0xFFEFF1F5), - primaryContainer = Color(0xFFCCD0DA), - onPrimaryContainer = Color(0xFF4C4F69), - inversePrimary = Color(0xFFCBA6F7), - secondary = Color(0xFF1E66F5), - onSecondary = Color(0xFFEFF1F5), - secondaryContainer = Color(0xFFE6E9EF), - onSecondaryContainer = Color(0xFF4C4F69), - tertiary = Color(0xFFEA76CB), - onTertiary = Color(0xFFEFF1F5), - tertiaryContainer = Color(0xFFBCC0CC), - onTertiaryContainer = Color(0xFF4C4F69), - background = Color(0xFFEFF1F5), - onBackground = Color(0xFF4C4F69), - surface = Color(0xFFE6E9EF), - onSurface = Color(0xFF4C4F69), - surfaceVariant = Color(0xFFCCD0DA), - onSurfaceVariant = Color(0xFF6C6F85), - surfaceTint = Color(0xFF8839EF), - surfaceContainerLowest = Color(0xFFFFFFFF), - surfaceContainerLow = Color(0xFFE6E9EF), - surfaceContainer = Color(0xFFEFF1F5), - surfaceContainerHigh = Color(0xFFE6E9EF), - surfaceContainerHighest = Color(0xFFCCD0DA), - inverseSurface = Color(0xFF4C4F69), - inverseOnSurface = Color(0xFFEFF1F5), - error = Color(0xFFD20F39), - onError = Color(0xFFEFF1F5), - errorContainer = Color(0xFFF2D5CF), - onErrorContainer = Color(0xFFD20F39), - outline = Color(0xFF9CA0B0), - outlineVariant = Color(0xFFBCC0CC), - scrim = Color(0xFFDCE0E8), + primary = Color(0xFF8839EF), // Mauve + onPrimary = Color(0xFFEFF1F5), // Base + primaryContainer = Color(0xFFCCD0DA), // Surface 0 + onPrimaryContainer = Color(0xFF4C4F69), // Text + inversePrimary = Color(0xFFCBA6F7), // Mocha Mauve + secondary = Color(0xFF1E66F5), // Blue + onSecondary = Color(0xFFEFF1F5), // Base + secondaryContainer = Color(0xFFE6E9EF), // Mantle + onSecondaryContainer = Color(0xFF4C4F69), // Text + tertiary = Color(0xFFEA76CB), // Pink + onTertiary = Color(0xFFEFF1F5), // Base + tertiaryContainer = Color(0xFFBCC0CC), // Surface 1 + onTertiaryContainer = Color(0xFF4C4F69), // Text + background = Color(0xFFEFF1F5), // Base + onBackground = Color(0xFF4C4F69), // Text + surface = Color(0xFFEFF1F5), // Base + onSurface = Color(0xFF4C4F69), // Text + surfaceVariant = Color(0xFFCCD0DA), // Surface 0 + onSurfaceVariant = Color(0xFF6C6F85), // Subtext 0 + surfaceTint = Color(0xFF8839EF), // Mauve + surfaceContainerLowest = Color(0xFFDCE0E8), // Crust + surfaceContainerLow = Color(0xFFE6E9EF), // Mantle + surfaceContainer = Color(0xFFEFF1F5), // Base + surfaceContainerHigh = Color(0xFFCCD0DA), // Surface 0 + surfaceContainerHighest = Color(0xFFBCC0CC), // Surface 1 + inverseSurface = Color(0xFF4C4F69), // Text + inverseOnSurface = Color(0xFFEFF1F5), // Base + error = Color(0xFFD20F39), // Red + onError = Color(0xFFEFF1F5), // Base + errorContainer = Color(0xFFCCD0DA), // Surface 0 + onErrorContainer = Color(0xFFD20F39), // Red + outline = Color(0xFF9CA0B0), // Overlay 0 + outlineVariant = Color(0xFFBCC0CC), // Surface 1 + scrim = Color(0xFFDCE0E8), // Crust ) /** Catppuccin status colors (dark). */ val CatppuccinDarkStatusColors = HermesStatusColors( - success = Color(0xFFA6E3A1), - successContainer = Color(0xFF313244), - onSuccess = Color(0xFF11111B), - warning = Color(0xFFF9E2AF), - warningContainer = Color(0xFF313244), - onWarning = Color(0xFF11111B), - error = Color(0xFFF38BA8), - errorContainer = Color(0xFF313244), - onError = Color(0xFF11111B), - info = Color(0xFF89B4FA), - infoContainer = Color(0xFF313244), - onInfo = Color(0xFF11111B), + success = Color(0xFFA6E3A1), // Green + successContainer = Color(0xFF313244), // Surface 0 + onSuccess = Color(0xFF11111B), // Crust + warning = Color(0xFFF9E2AF), // Yellow + warningContainer = Color(0xFF313244), // Surface 0 + onWarning = Color(0xFF11111B), // Crust + error = Color(0xFFF38BA8), // Red + errorContainer = Color(0xFF313244), // Surface 0 + onError = Color(0xFF11111B), // Crust + info = Color(0xFF89B4FA), // Blue + infoContainer = Color(0xFF313244), // Surface 0 + onInfo = Color(0xFF11111B), // Crust ) /** Catppuccin status colors (light). */ val CatppuccinLightStatusColors = HermesStatusColors( - success = Color(0xFF40A02B), - successContainer = Color(0xFFE6E9EF), - onSuccess = Color(0xFFE6E9EF), - warning = Color(0xFFDF8E1D), - warningContainer = Color(0xFFE6E9EF), - onWarning = Color(0xFFE6E9EF), - error = Color(0xFFD20F39), - errorContainer = Color(0xFFE6E9EF), - onError = Color(0xFFE6E9EF), - info = Color(0xFF1E66F5), - infoContainer = Color(0xFFE6E9EF), - onInfo = Color(0xFFE6E9EF), + success = Color(0xFF40A02B), // Green + successContainer = Color(0xFFCCD0DA), // Surface 0 + onSuccess = Color(0xFFEFF1F5), // Base + warning = Color(0xFFDF8E1D), // Yellow + warningContainer = Color(0xFFCCD0DA), // Surface 0 + onWarning = Color(0xFFEFF1F5), // Base + error = Color(0xFFD20F39), // Red + errorContainer = Color(0xFFCCD0DA), // Surface 0 + onError = Color(0xFFEFF1F5), // Base + info = Color(0xFF1E66F5), // Blue + infoContainer = Color(0xFFCCD0DA), // Surface 0 + onInfo = Color(0xFFEFF1F5), // Base ) diff --git a/app/src/main/java/com/m57/hermescontrol/ui/settings/components/AppearanceSection.kt b/app/src/main/java/com/m57/hermescontrol/ui/settings/components/AppearanceSection.kt index 2b726d88..ee00abb4 100644 --- a/app/src/main/java/com/m57/hermescontrol/ui/settings/components/AppearanceSection.kt +++ b/app/src/main/java/com/m57/hermescontrol/ui/settings/components/AppearanceSection.kt @@ -119,6 +119,7 @@ internal fun AppearanceSection( Box(modifier = Modifier.fillMaxWidth()) { OutlinedButton( onClick = { presetsExpanded = true }, + enabled = !useDynamicColors, modifier = Modifier.fillMaxWidth(), ) { Text(