feat(theme): allow dynamic colors to override preset theme and disable preset selector when active (#684)
* feat(theme): allow dynamic colors to override non-default theme presets * feat(settings): disable theme preset selector when dynamic colors is enabled * feat(theme): align Catppuccin preset with official Latte and Mocha style guide
This commit is contained in:
4 files changed
+96
-95
No files matched your search
@@ -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
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
)
|
||||
@@ -119,6 +119,7 @@ internal fun AppearanceSection(
|
||||
Box(modifier = Modifier.fillMaxWidth()) {
|
||||
OutlinedButton(
|
||||
onClick = { presetsExpanded = true },
|
||||
enabled = !useDynamicColors,
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
) {
|
||||
Text(
|
||||
|
||||
Reference in new issue
Block a user