diff --git a/app/src/main/java/com/github/damontecres/dolphin/MainActivity.kt b/app/src/main/java/com/github/damontecres/dolphin/MainActivity.kt index f1eb7e90..7792a206 100644 --- a/app/src/main/java/com/github/damontecres/dolphin/MainActivity.kt +++ b/app/src/main/java/com/github/damontecres/dolphin/MainActivity.kt @@ -61,19 +61,21 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) Timber.i("MainActivity.onCreate") setContent { - DolphinTheme(true) { - Surface( - modifier = - Modifier - .fillMaxSize() - .background(MaterialTheme.colorScheme.background), - shape = RectangleShape, + CoilConfig(okHttpClient, false) + val appPreferences by userPreferencesDataStore.data.collectAsState(null) + appPreferences?.let { appPreferences -> + DolphinTheme( + true, + appThemeColors = appPreferences.interfacePreferences.appThemeColors, ) { - CoilConfig(okHttpClient, false) - - var isRestoringSession by remember { mutableStateOf(true) } - val appPreferences by userPreferencesDataStore.data.collectAsState(null) - appPreferences?.let { appPreferences -> + Surface( + modifier = + Modifier + .fillMaxSize() + .background(MaterialTheme.colorScheme.background), + shape = RectangleShape, + ) { + var isRestoringSession by remember { mutableStateOf(true) } LaunchedEffect(Unit) { if (appPreferences.currentServerId.isNotBlank()) { serverRepository.restoreSession( diff --git a/app/src/main/java/com/github/damontecres/dolphin/preferences/AppPreference.kt b/app/src/main/java/com/github/damontecres/dolphin/preferences/AppPreference.kt index d3b847a3..1c7c97e2 100644 --- a/app/src/main/java/com/github/damontecres/dolphin/preferences/AppPreference.kt +++ b/app/src/main/java/com/github/damontecres/dolphin/preferences/AppPreference.kt @@ -312,6 +312,19 @@ sealed interface AppPreference { summaryOff = R.string.disabled, ) + val ThemeColors = + AppChoicePreference( + title = R.string.app_theme, + defaultValue = AppThemeColors.PURPLE, + getter = { it.interfacePreferences.appThemeColors }, + setter = { prefs, value -> + prefs.updateInterfacePreferences { appThemeColors = value } + }, + displayValues = R.array.app_theme_colors, + indexToValue = { AppThemeColors.forNumber(it) }, + valueToIndex = { it.number }, + ) + val InstalledVersion = AppClickablePreference( title = R.string.installed_version, @@ -360,6 +373,7 @@ val basicPreferences = AppPreference.RewatchNextUp, AppPreference.PlayThemeMusic, AppPreference.RememberSelectedTab, + AppPreference.ThemeColors, ), ), PreferenceGroup( diff --git a/app/src/main/java/com/github/damontecres/dolphin/preferences/AppPreferencesSerializer.kt b/app/src/main/java/com/github/damontecres/dolphin/preferences/AppPreferencesSerializer.kt index 0e0359bb..193b527a 100644 --- a/app/src/main/java/com/github/damontecres/dolphin/preferences/AppPreferencesSerializer.kt +++ b/app/src/main/java/com/github/damontecres/dolphin/preferences/AppPreferencesSerializer.kt @@ -47,6 +47,7 @@ class AppPreferencesSerializer .newBuilder() .apply { playThemeSongs = AppPreference.PlayThemeMusic.defaultValue + appThemeColors = AppPreference.ThemeColors.defaultValue }.build() }.build() diff --git a/app/src/main/java/com/github/damontecres/dolphin/ui/theme/Color.kt b/app/src/main/java/com/github/damontecres/dolphin/ui/theme/Color.kt deleted file mode 100644 index 456c27ca..00000000 --- a/app/src/main/java/com/github/damontecres/dolphin/ui/theme/Color.kt +++ /dev/null @@ -1,56 +0,0 @@ -package com.github.damontecres.dolphin.ui.theme -import androidx.compose.ui.graphics.Color - -val primaryLight = Color(0xFF5F00D6) -val onPrimaryLight = Color(0xFFFFFFFF) -val primaryContainerLight = Color(0xFF7A28FE) -val onPrimaryContainerLight = Color(0xFFEADCFF) -val secondaryLight = Color(0xFF6B4BAE) -val onSecondaryLight = Color(0xFFFFFFFF) -val secondaryContainerLight = Color(0xFFB594FD) -val onSecondaryContainerLight = Color(0xFF472489) -val tertiaryLight = Color(0xFF8F007E) -val onTertiaryLight = Color(0xFFFFFFFF) -val tertiaryContainerLight = Color(0xFFB800A3) -val onTertiaryContainerLight = Color(0xFFFFD7F0) -val errorLight = Color(0xFFBA1A1A) -val onErrorLight = Color(0xFFFFFFFF) -val errorContainerLight = Color(0xFFFFDAD6) -val onErrorContainerLight = Color(0xFF93000A) -val backgroundLight = Color(0xFFFEF7FF) -val onBackgroundLight = Color(0xFF1D1A25) -val surfaceLight = Color(0xFFFEF7FF) -val onSurfaceLight = Color(0xFF1D1A25) -val surfaceVariantLight = Color(0xFFE9DEF6) -val onSurfaceVariantLight = Color(0xFF4A4456) -val scrimLight = Color(0xFF000000) -val inverseSurfaceLight = Color(0xFF332E3A) -val inverseOnSurfaceLight = Color(0xFFF6EDFE) -val inversePrimaryLight = Color(0xFFD2BCFF) - -val primaryDark = Color(0xFFD2BCFF) -val onPrimaryDark = Color(0xFF3D008F) -val primaryContainerDark = Color(0xFF7A28FE) -val onPrimaryContainerDark = Color(0xFFEADCFF) -val secondaryDark = Color(0xFFD2BCFF) -val onSecondaryDark = Color(0xFF3B167D) -val secondaryContainerDark = Color(0xFF533295) -val onSecondaryContainerDark = Color(0xFFC2A6FF) -val tertiaryDark = Color(0xFFFFACE7) -val onTertiaryDark = Color(0xFF5E0052) -val tertiaryContainerDark = Color(0xFFB800A3) -val onTertiaryContainerDark = Color(0xFFFFD7F0) -val errorDark = Color(0xFFFFB4AB) -val onErrorDark = Color(0xFF690005) -val errorContainerDark = Color(0xFF93000A) -val onErrorContainerDark = Color(0xFFFFDAD6) -val backgroundDark = Color(0xFF15121C) -val onBackgroundDark = Color(0xFFE8DFF0) -val surfaceDark = Color(0xFF15121C) -val onSurfaceDark = Color(0xFFE8DFF0) -val surfaceVariantDark = Color(0xFF4A4456) -val onSurfaceVariantDark = Color(0xFFCCC3D9) -val scrimDark = Color(0xFF000000) -val inverseSurfaceDark = Color(0xFFE8DFF0) -val inverseOnSurfaceDark = Color(0xFF332E3A) -val inversePrimaryDark = Color(0xFF741BF8) diff --git a/app/src/main/java/com/github/damontecres/dolphin/ui/theme/Theme.kt b/app/src/main/java/com/github/damontecres/dolphin/ui/theme/Theme.kt index c79ca7a7..1f2659a7 100644 --- a/app/src/main/java/com/github/damontecres/dolphin/ui/theme/Theme.kt +++ b/app/src/main/java/com/github/damontecres/dolphin/ui/theme/Theme.kt @@ -5,130 +5,11 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable import androidx.compose.ui.graphics.Color import androidx.tv.material3.MaterialTheme -import androidx.tv.material3.darkColorScheme -import androidx.tv.material3.lightColorScheme - -private val lightSchemeMaterial = - androidx.compose.material3.lightColorScheme( - primary = primaryLight, - onPrimary = onPrimaryLight, - primaryContainer = primaryContainerLight, - onPrimaryContainer = onPrimaryContainerLight, - secondary = secondaryLight, - onSecondary = onSecondaryLight, - secondaryContainer = secondaryContainerLight, - onSecondaryContainer = onSecondaryContainerLight, - tertiary = tertiaryLight, - onTertiary = onTertiaryLight, - tertiaryContainer = tertiaryContainerLight, - onTertiaryContainer = onTertiaryContainerLight, - error = errorLight, - onError = onErrorLight, - errorContainer = errorContainerLight, - onErrorContainer = onErrorContainerLight, - background = backgroundLight, - onBackground = onBackgroundLight, - surface = surfaceLight, - onSurface = onSurfaceLight, - surfaceVariant = surfaceVariantLight, - onSurfaceVariant = onSurfaceVariantLight, - scrim = scrimLight, - inverseSurface = inverseSurfaceLight, - inverseOnSurface = inverseOnSurfaceLight, - inversePrimary = inversePrimaryLight, - ) - -private val lightScheme = - lightColorScheme( - primary = primaryLight, - onPrimary = onPrimaryLight, - primaryContainer = primaryContainerLight, - onPrimaryContainer = onPrimaryContainerLight, - secondary = secondaryLight, - onSecondary = onSecondaryLight, - secondaryContainer = secondaryContainerLight, - onSecondaryContainer = onSecondaryContainerLight, - tertiary = tertiaryLight, - onTertiary = onTertiaryLight, - tertiaryContainer = tertiaryContainerLight, - onTertiaryContainer = onTertiaryContainerLight, - error = errorLight, - onError = onErrorLight, - errorContainer = errorContainerLight, - onErrorContainer = onErrorContainerLight, - background = backgroundLight, - onBackground = onBackgroundLight, - surface = surfaceLight, - onSurface = onSurfaceLight, - surfaceVariant = surfaceVariantLight, - onSurfaceVariant = onSurfaceVariantLight, - scrim = scrimLight, - inverseSurface = inverseSurfaceLight, - inverseOnSurface = inverseOnSurfaceLight, - inversePrimary = inversePrimaryLight, - border = inversePrimaryLight, - ) - -private val darkSchemeMaterial = - androidx.compose.material3.darkColorScheme( - primary = primaryDark, - onPrimary = onPrimaryDark, - primaryContainer = primaryContainerDark, - onPrimaryContainer = onPrimaryContainerDark, - secondary = secondaryDark, - onSecondary = onSecondaryDark, - secondaryContainer = secondaryContainerDark, - onSecondaryContainer = onSecondaryContainerDark, - tertiary = tertiaryDark, - onTertiary = onTertiaryDark, - tertiaryContainer = tertiaryContainerDark, - onTertiaryContainer = onTertiaryContainerDark, - error = errorDark, - onError = onErrorDark, - errorContainer = errorContainerDark, - onErrorContainer = onErrorContainerDark, - background = backgroundDark, - onBackground = onBackgroundDark, - surface = surfaceDark, - onSurface = onSurfaceDark, - surfaceVariant = surfaceVariantDark, - onSurfaceVariant = onSurfaceVariantDark, - scrim = scrimDark, - inverseSurface = inverseSurfaceDark, - inverseOnSurface = inverseOnSurfaceDark, - inversePrimary = inversePrimaryDark, - ) - -private val darkScheme = - darkColorScheme( - primary = primaryDark, - onPrimary = onPrimaryDark, - primaryContainer = primaryContainerDark, - onPrimaryContainer = onPrimaryContainerDark, - secondary = secondaryDark, - onSecondary = onSecondaryDark, - secondaryContainer = secondaryContainerDark, - onSecondaryContainer = onSecondaryContainerDark, - tertiary = tertiaryDark, - onTertiary = onTertiaryDark, - tertiaryContainer = tertiaryContainerDark, - onTertiaryContainer = onTertiaryContainerDark, - error = errorDark, - onError = onErrorDark, - errorContainer = errorContainerDark, - onErrorContainer = onErrorContainerDark, - background = backgroundDark, - onBackground = onBackgroundDark, - surface = surfaceDark, - onSurface = onSurfaceDark, - surfaceVariant = surfaceVariantDark, - onSurfaceVariant = onSurfaceVariantDark, - scrim = scrimDark, - inverseSurface = inverseSurfaceDark, - inverseOnSurface = inverseOnSurfaceDark, - inversePrimary = inversePrimaryDark, - border = inversePrimaryDark.copy(alpha = .75f), - ) +import com.github.damontecres.dolphin.preferences.AppThemeColors +import com.github.damontecres.dolphin.ui.theme.colors.BlueThemeColors +import com.github.damontecres.dolphin.ui.theme.colors.GreenThemeColors +import com.github.damontecres.dolphin.ui.theme.colors.OrangeThemeColors +import com.github.damontecres.dolphin.ui.theme.colors.PurpleThemeColors @Immutable data class ColorFamily( @@ -149,15 +30,25 @@ val unspecified_scheme = @Composable fun DolphinTheme( darkTheme: Boolean = isSystemInDarkTheme(), + appThemeColors: AppThemeColors = AppThemeColors.PURPLE, content: @Composable () -> Unit, ) { + val themeColors = + when (appThemeColors) { + AppThemeColors.PURPLE -> PurpleThemeColors + AppThemeColors.BLUE -> BlueThemeColors + AppThemeColors.GREEN -> GreenThemeColors + AppThemeColors.ORANGE -> OrangeThemeColors + AppThemeColors.UNRECOGNIZED -> PurpleThemeColors + } + val colorScheme = when { - darkTheme -> darkScheme - else -> lightScheme + darkTheme -> themeColors.darkScheme + else -> themeColors.lightScheme } androidx.compose.material3.MaterialTheme( - colorScheme = if (darkTheme) darkSchemeMaterial else lightSchemeMaterial, + colorScheme = if (darkTheme) themeColors.darkSchemeMaterial else themeColors.lightSchemeMaterial, typography = androidx.compose.material3.Typography(), ) { MaterialTheme( diff --git a/app/src/main/java/com/github/damontecres/dolphin/ui/theme/ThemeColors.kt b/app/src/main/java/com/github/damontecres/dolphin/ui/theme/ThemeColors.kt new file mode 100644 index 00000000..4161a1d6 --- /dev/null +++ b/app/src/main/java/com/github/damontecres/dolphin/ui/theme/ThemeColors.kt @@ -0,0 +1,8 @@ +package com.github.damontecres.dolphin.ui.theme + +interface ThemeColors { + val lightSchemeMaterial: androidx.compose.material3.ColorScheme + val darkSchemeMaterial: androidx.compose.material3.ColorScheme + val lightScheme: androidx.tv.material3.ColorScheme + val darkScheme: androidx.tv.material3.ColorScheme +} diff --git a/app/src/main/java/com/github/damontecres/dolphin/ui/theme/colors/BlueThemeColors.kt b/app/src/main/java/com/github/damontecres/dolphin/ui/theme/colors/BlueThemeColors.kt new file mode 100644 index 00000000..99bb865a --- /dev/null +++ b/app/src/main/java/com/github/damontecres/dolphin/ui/theme/colors/BlueThemeColors.kt @@ -0,0 +1,203 @@ +package com.github.damontecres.dolphin.ui.theme.colors + +import androidx.compose.ui.graphics.Color +import androidx.tv.material3.darkColorScheme +import androidx.tv.material3.lightColorScheme +import com.github.damontecres.dolphin.ui.theme.ThemeColors + +val BlueThemeColors = + object : ThemeColors { + val primaryLight = Color(0xFF405F90) + val onPrimaryLight = Color(0xFFFFFFFF) + val primaryContainerLight = Color(0xFFD6E3FF) + val onPrimaryContainerLight = Color(0xFF274777) + val secondaryLight = Color(0xFF565F71) + val onSecondaryLight = Color(0xFFFFFFFF) + val secondaryContainerLight = Color(0xFFDAE2F9) + val onSecondaryContainerLight = Color(0xFF3E4759) + val tertiaryLight = Color(0xFF605690) + val onTertiaryLight = Color(0xFFFFFFFF) + val tertiaryContainerLight = Color(0xFFE6DEFF) + val onTertiaryContainerLight = Color(0xFF483F77) + val errorLight = Color(0xFFBA1A1A) + val onErrorLight = Color(0xFFFFFFFF) + val errorContainerLight = Color(0xFFFFDAD6) + val onErrorContainerLight = Color(0xFF93000A) + val backgroundLight = Color(0xFFF9F9FF) + val onBackgroundLight = Color(0xFF191C20) + val surfaceLight = Color(0xFFFAF8FF) + val onSurfaceLight = Color(0xFF1A1B21) + val surfaceVariantLight = Color(0xFFE1E2EC) + val onSurfaceVariantLight = Color(0xFF44474F) + val outlineLight = Color(0xFF75777F) + val outlineVariantLight = Color(0xFFC4C6D0) + val scrimLight = Color(0xFF000000) + val inverseSurfaceLight = Color(0xFF2F3036) + val inverseOnSurfaceLight = Color(0xFFF1F0F7) + val inversePrimaryLight = Color(0xFFAAC7FF) + val surfaceDimLight = Color(0xFFDAD9E0) + val surfaceBrightLight = Color(0xFFFAF8FF) + val surfaceContainerLowestLight = Color(0xFFFFFFFF) + val surfaceContainerLowLight = Color(0xFFF4F3FA) + val surfaceContainerLight = Color(0xFFEEEDF4) + val surfaceContainerHighLight = Color(0xFFE8E7EF) + val surfaceContainerHighestLight = Color(0xFFE3E2E9) + + val primaryDark = Color(0xFFAAC7FF) + val onPrimaryDark = Color(0xFF09305F) + val primaryContainerDark = Color(0xFF274777) + val onPrimaryContainerDark = Color(0xFFD6E3FF) + val secondaryDark = Color(0xFFBEC7DC) + val onSecondaryDark = Color(0xFF283141) + val secondaryContainerDark = Color(0xFF3E4759) + val onSecondaryContainerDark = Color(0xFFDAE2F9) + val tertiaryDark = Color(0xFFCABEFF) + val onTertiaryDark = Color(0xFF31285F) + val tertiaryContainerDark = Color(0xFF483F77) + val onTertiaryContainerDark = Color(0xFFE6DEFF) + val errorDark = Color(0xFFFFB4AB) + val onErrorDark = Color(0xFF690005) + val errorContainerDark = Color(0xFF93000A) + val onErrorContainerDark = Color(0xFFFFDAD6) + val backgroundDark = Color(0xFF111318) + val onBackgroundDark = Color(0xFFE2E2E9) + val surfaceDark = Color(0xFF121318) + val onSurfaceDark = Color(0xFFE3E2E9) + val surfaceVariantDark = Color(0xFF44474F) + val onSurfaceVariantDark = Color(0xFFC4C6D0) + val outlineDark = Color(0xFF8E9099) + val outlineVariantDark = Color(0xFF44474F) + val scrimDark = Color(0xFF000000) + val inverseSurfaceDark = Color(0xFFE3E2E9) + val inverseOnSurfaceDark = Color(0xFF2F3036) + val inversePrimaryDark = Color(0xFF405F90) + val surfaceDimDark = Color(0xFF121318) + val surfaceBrightDark = Color(0xFF38393F) + val surfaceContainerLowestDark = Color(0xFF0D0E13) + val surfaceContainerLowDark = Color(0xFF1A1B21) + val surfaceContainerDark = Color(0xFF1E1F25) + val surfaceContainerHighDark = Color(0xFF292A2F) + val surfaceContainerHighestDark = Color(0xFF33343A) + + override val lightSchemeMaterial: androidx.compose.material3.ColorScheme = + androidx.compose.material3.lightColorScheme( + primary = primaryLight, + onPrimary = onPrimaryLight, + primaryContainer = primaryContainerLight, + onPrimaryContainer = onPrimaryContainerLight, + secondary = secondaryLight, + onSecondary = onSecondaryLight, + secondaryContainer = secondaryContainerLight, + onSecondaryContainer = onSecondaryContainerLight, + tertiary = tertiaryLight, + onTertiary = onTertiaryLight, + tertiaryContainer = tertiaryContainerLight, + onTertiaryContainer = onTertiaryContainerLight, + error = errorLight, + onError = onErrorLight, + errorContainer = errorContainerLight, + onErrorContainer = onErrorContainerLight, + background = backgroundLight, + onBackground = onBackgroundLight, + surface = surfaceLight, + onSurface = onSurfaceLight, + surfaceVariant = surfaceVariantLight, + onSurfaceVariant = onSurfaceVariantLight, + scrim = scrimLight, + inverseSurface = inverseSurfaceLight, + inverseOnSurface = inverseOnSurfaceLight, + inversePrimary = inversePrimaryLight, + ) + + override val lightScheme = + lightColorScheme( + primary = primaryLight, + onPrimary = onPrimaryLight, + primaryContainer = primaryContainerLight, + onPrimaryContainer = onPrimaryContainerLight, + secondary = secondaryLight, + onSecondary = onSecondaryLight, + secondaryContainer = secondaryContainerLight, + onSecondaryContainer = onSecondaryContainerLight, + tertiary = tertiaryLight, + onTertiary = onTertiaryLight, + tertiaryContainer = tertiaryContainerLight, + onTertiaryContainer = onTertiaryContainerLight, + error = errorLight, + onError = onErrorLight, + errorContainer = errorContainerLight, + onErrorContainer = onErrorContainerLight, + background = backgroundLight, + onBackground = onBackgroundLight, + surface = surfaceLight, + onSurface = onSurfaceLight, + surfaceVariant = surfaceVariantLight, + onSurfaceVariant = onSurfaceVariantLight, + scrim = scrimLight, + inverseSurface = inverseSurfaceLight, + inverseOnSurface = inverseOnSurfaceLight, + inversePrimary = inversePrimaryLight, + border = inversePrimaryLight, + ) + + override val darkSchemeMaterial = + androidx.compose.material3.darkColorScheme( + primary = primaryDark, + onPrimary = onPrimaryDark, + primaryContainer = primaryContainerDark, + onPrimaryContainer = onPrimaryContainerDark, + secondary = secondaryDark, + onSecondary = onSecondaryDark, + secondaryContainer = secondaryContainerDark, + onSecondaryContainer = onSecondaryContainerDark, + tertiary = tertiaryDark, + onTertiary = onTertiaryDark, + tertiaryContainer = tertiaryContainerDark, + onTertiaryContainer = onTertiaryContainerDark, + error = errorDark, + onError = onErrorDark, + errorContainer = errorContainerDark, + onErrorContainer = onErrorContainerDark, + background = backgroundDark, + onBackground = onBackgroundDark, + surface = surfaceDark, + onSurface = onSurfaceDark, + surfaceVariant = surfaceVariantDark, + onSurfaceVariant = onSurfaceVariantDark, + scrim = scrimDark, + inverseSurface = inverseSurfaceDark, + inverseOnSurface = inverseOnSurfaceDark, + inversePrimary = inversePrimaryDark, + ) + + override val darkScheme = + darkColorScheme( + primary = primaryDark, + onPrimary = onPrimaryDark, + primaryContainer = primaryContainerDark, + onPrimaryContainer = onPrimaryContainerDark, + secondary = secondaryDark, + onSecondary = onSecondaryDark, + secondaryContainer = secondaryContainerDark, + onSecondaryContainer = onSecondaryContainerDark, + tertiary = tertiaryDark, + onTertiary = onTertiaryDark, + tertiaryContainer = tertiaryContainerDark, + onTertiaryContainer = onTertiaryContainerDark, + error = errorDark, + onError = onErrorDark, + errorContainer = errorContainerDark, + onErrorContainer = onErrorContainerDark, + background = backgroundDark, + onBackground = onBackgroundDark, + surface = surfaceDark, + onSurface = onSurfaceDark, + surfaceVariant = surfaceVariantDark, + onSurfaceVariant = onSurfaceVariantDark, + scrim = scrimDark, + inverseSurface = inverseSurfaceDark, + inverseOnSurface = inverseOnSurfaceDark, + inversePrimary = inversePrimaryDark, + border = inversePrimaryDark.copy(alpha = .75f), + ) + } diff --git a/app/src/main/java/com/github/damontecres/dolphin/ui/theme/colors/GreenThemeColors.kt b/app/src/main/java/com/github/damontecres/dolphin/ui/theme/colors/GreenThemeColors.kt new file mode 100644 index 00000000..ec7cb506 --- /dev/null +++ b/app/src/main/java/com/github/damontecres/dolphin/ui/theme/colors/GreenThemeColors.kt @@ -0,0 +1,203 @@ +package com.github.damontecres.dolphin.ui.theme.colors + +import androidx.compose.material3.ColorScheme +import androidx.compose.ui.graphics.Color +import androidx.tv.material3.darkColorScheme +import androidx.tv.material3.lightColorScheme +import com.github.damontecres.dolphin.ui.theme.ThemeColors + +val GreenThemeColors = + object : ThemeColors { + val primaryLight = Color(0xFF316A42) + val onPrimaryLight = Color(0xFFFFFFFF) + val primaryContainerLight = Color(0xFFB3F1BF) + val onPrimaryContainerLight = Color(0xFF16512C) + val secondaryLight = Color(0xFF506352) + val onSecondaryLight = Color(0xFFFFFFFF) + val secondaryContainerLight = Color(0xFFD2E8D3) + val onSecondaryContainerLight = Color(0xFF394B3C) + val tertiaryLight = Color(0xFF3A656E) + val onTertiaryLight = Color(0xFFFFFFFF) + val tertiaryContainerLight = Color(0xFFBDEAF5) + val onTertiaryContainerLight = Color(0xFF204D56) + val errorLight = Color(0xFFBA1A1A) + val onErrorLight = Color(0xFFFFFFFF) + val errorContainerLight = Color(0xFFFFDAD6) + val onErrorContainerLight = Color(0xFF93000A) + val backgroundLight = Color(0xFFF6FBF3) + val onBackgroundLight = Color(0xFF181D18) + val surfaceLight = Color(0xFFF6FBF3) + val onSurfaceLight = Color(0xFF181D18) + val surfaceVariantLight = Color(0xFFDDE5DA) + val onSurfaceVariantLight = Color(0xFF414941) + val outlineLight = Color(0xFF717971) + val outlineVariantLight = Color(0xFFC1C9BF) + val scrimLight = Color(0xFF000000) + val inverseSurfaceLight = Color(0xFF2D322D) + val inverseOnSurfaceLight = Color(0xFFEEF2EA) + val inversePrimaryLight = Color(0xFF98D5A4) + val surfaceDimLight = Color(0xFFD7DBD4) + val surfaceBrightLight = Color(0xFFF6FBF3) + val surfaceContainerLowestLight = Color(0xFFFFFFFF) + val surfaceContainerLowLight = Color(0xFFF0F5ED) + val surfaceContainerLight = Color(0xFFEBEFE7) + val surfaceContainerHighLight = Color(0xFFE5EAE2) + + val primaryDark = Color(0xFF98D5A4) + val onPrimaryDark = Color(0xFF00391A) + val primaryContainerDark = Color(0xFF16512C) + val onPrimaryContainerDark = Color(0xFFB3F1BF) + val secondaryDark = Color(0xFFB7CCB7) + val onSecondaryDark = Color(0xFF223526) + val secondaryContainerDark = Color(0xFF394B3C) + val onSecondaryContainerDark = Color(0xFFD2E8D3) + val tertiaryDark = Color(0xFFA2CED9) + val onTertiaryDark = Color(0xFF01363F) + val tertiaryContainerDark = Color(0xFF204D56) + val onTertiaryContainerDark = Color(0xFFBDEAF5) + val errorDark = Color(0xFFFFB4AB) + val onErrorDark = Color(0xFF690005) + val errorContainerDark = Color(0xFF93000A) + val onErrorContainerDark = Color(0xFFFFDAD6) + val backgroundDark = Color(0xFF101510) + val onBackgroundDark = Color(0xFFDFE4DC) + val surfaceDark = Color(0xFF101510) + val onSurfaceDark = Color(0xFFDFE4DC) + val surfaceVariantDark = Color(0xFF414941) + val onSurfaceVariantDark = Color(0xFFC1C9BF) + val outlineDark = Color(0xFF8B938A) + val outlineVariantDark = Color(0xFF414941) + val scrimDark = Color(0xFF000000) + val inverseSurfaceDark = Color(0xFFDFE4DC) + val inverseOnSurfaceDark = Color(0xFF2D322D) + val inversePrimaryDark = Color(0xFF316A42) + val surfaceDimDark = Color(0xFF101510) + val surfaceBrightDark = Color(0xFF353A35) + val surfaceContainerLowestDark = Color(0xFF0B0F0B) + val surfaceContainerLowDark = Color(0xFF181D18) + val surfaceContainerDark = Color(0xFF1C211C) + val surfaceContainerHighDark = Color(0xFF262B26) + val surfaceContainerHighestDark = Color(0xFF313631) + + override val lightSchemeMaterial: ColorScheme = + androidx.compose.material3.lightColorScheme( + primary = primaryLight, + onPrimary = onPrimaryLight, + primaryContainer = primaryContainerLight, + onPrimaryContainer = onPrimaryContainerLight, + secondary = secondaryLight, + onSecondary = onSecondaryLight, + secondaryContainer = secondaryContainerLight, + onSecondaryContainer = onSecondaryContainerLight, + tertiary = tertiaryLight, + onTertiary = onTertiaryLight, + tertiaryContainer = tertiaryContainerLight, + onTertiaryContainer = onTertiaryContainerLight, + error = errorLight, + onError = onErrorLight, + errorContainer = errorContainerLight, + onErrorContainer = onErrorContainerLight, + background = backgroundLight, + onBackground = onBackgroundLight, + surface = surfaceLight, + onSurface = onSurfaceLight, + surfaceVariant = surfaceVariantLight, + onSurfaceVariant = onSurfaceVariantLight, + scrim = scrimLight, + inverseSurface = inverseSurfaceLight, + inverseOnSurface = inverseOnSurfaceLight, + inversePrimary = inversePrimaryLight, + ) + + override val lightScheme = + lightColorScheme( + primary = primaryLight, + onPrimary = onPrimaryLight, + primaryContainer = primaryContainerLight, + onPrimaryContainer = onPrimaryContainerLight, + secondary = secondaryLight, + onSecondary = onSecondaryLight, + secondaryContainer = secondaryContainerLight, + onSecondaryContainer = onSecondaryContainerLight, + tertiary = tertiaryLight, + onTertiary = onTertiaryLight, + tertiaryContainer = tertiaryContainerLight, + onTertiaryContainer = onTertiaryContainerLight, + error = errorLight, + onError = onErrorLight, + errorContainer = errorContainerLight, + onErrorContainer = onErrorContainerLight, + background = backgroundLight, + onBackground = onBackgroundLight, + surface = surfaceLight, + onSurface = onSurfaceLight, + surfaceVariant = surfaceVariantLight, + onSurfaceVariant = onSurfaceVariantLight, + scrim = scrimLight, + inverseSurface = inverseSurfaceLight, + inverseOnSurface = inverseOnSurfaceLight, + inversePrimary = inversePrimaryLight, + border = inversePrimaryLight, + ) + + override val darkSchemeMaterial = + androidx.compose.material3.darkColorScheme( + primary = primaryDark, + onPrimary = onPrimaryDark, + primaryContainer = primaryContainerDark, + onPrimaryContainer = onPrimaryContainerDark, + secondary = secondaryDark, + onSecondary = onSecondaryDark, + secondaryContainer = secondaryContainerDark, + onSecondaryContainer = onSecondaryContainerDark, + tertiary = tertiaryDark, + onTertiary = onTertiaryDark, + tertiaryContainer = tertiaryContainerDark, + onTertiaryContainer = onTertiaryContainerDark, + error = errorDark, + onError = onErrorDark, + errorContainer = errorContainerDark, + onErrorContainer = onErrorContainerDark, + background = backgroundDark, + onBackground = onBackgroundDark, + surface = surfaceDark, + onSurface = onSurfaceDark, + surfaceVariant = surfaceVariantDark, + onSurfaceVariant = onSurfaceVariantDark, + scrim = scrimDark, + inverseSurface = inverseSurfaceDark, + inverseOnSurface = inverseOnSurfaceDark, + inversePrimary = inversePrimaryDark, + ) + + override val darkScheme = + darkColorScheme( + primary = primaryDark, + onPrimary = onPrimaryDark, + primaryContainer = primaryContainerDark, + onPrimaryContainer = onPrimaryContainerDark, + secondary = secondaryDark, + onSecondary = onSecondaryDark, + secondaryContainer = secondaryContainerDark, + onSecondaryContainer = onSecondaryContainerDark, + tertiary = tertiaryDark, + onTertiary = onTertiaryDark, + tertiaryContainer = tertiaryContainerDark, + onTertiaryContainer = onTertiaryContainerDark, + error = errorDark, + onError = onErrorDark, + errorContainer = errorContainerDark, + onErrorContainer = onErrorContainerDark, + background = backgroundDark, + onBackground = onBackgroundDark, + surface = surfaceDark, + onSurface = onSurfaceDark, + surfaceVariant = surfaceVariantDark, + onSurfaceVariant = onSurfaceVariantDark, + scrim = scrimDark, + inverseSurface = inverseSurfaceDark, + inverseOnSurface = inverseOnSurfaceDark, + inversePrimary = inversePrimaryDark, + border = inversePrimaryDark.copy(alpha = .75f), + ) + } diff --git a/app/src/main/java/com/github/damontecres/dolphin/ui/theme/colors/OrangeThemeColors.kt b/app/src/main/java/com/github/damontecres/dolphin/ui/theme/colors/OrangeThemeColors.kt new file mode 100644 index 00000000..43270c6f --- /dev/null +++ b/app/src/main/java/com/github/damontecres/dolphin/ui/theme/colors/OrangeThemeColors.kt @@ -0,0 +1,204 @@ +package com.github.damontecres.dolphin.ui.theme.colors + +import androidx.compose.material3.ColorScheme +import androidx.compose.ui.graphics.Color +import androidx.tv.material3.darkColorScheme +import androidx.tv.material3.lightColorScheme +import com.github.damontecres.dolphin.ui.theme.ThemeColors + +val OrangeThemeColors = + object : ThemeColors { + val primaryLight = Color(0xFF735C0C) + val onPrimaryLight = Color(0xFFFFFFFF) + val primaryContainerLight = Color(0xFFFFE08A) + val onPrimaryContainerLight = Color(0xFF574400) + val secondaryLight = Color(0xFF695D3F) + val onSecondaryLight = Color(0xFFFFFFFF) + val secondaryContainerLight = Color(0xFFF1E1BB) + val onSecondaryContainerLight = Color(0xFF50462A) + val tertiaryLight = Color(0xFF735C0C) + val onTertiaryLight = Color(0xFFFFFFFF) + val tertiaryContainerLight = Color(0xFFFFE08A) + val onTertiaryContainerLight = Color(0xFF574400) + val errorLight = Color(0xFFBA1A1A) + val onErrorLight = Color(0xFFFFFFFF) + val errorContainerLight = Color(0xFFFFDAD6) + val onErrorContainerLight = Color(0xFF93000A) + val backgroundLight = Color(0xFFFFF8F0) + val onBackgroundLight = Color(0xFF1F1B13) + val surfaceLight = Color(0xFFFFF8F0) + val onSurfaceLight = Color(0xFF1F1B13) + val surfaceVariantLight = Color(0xFFEBE1CF) + val onSurfaceVariantLight = Color(0xFF4C4639) + val outlineLight = Color(0xFF7D7667) + val outlineVariantLight = Color(0xFFCFC6B4) + val scrimLight = Color(0xFF000000) + val inverseSurfaceLight = Color(0xFF343027) + val inverseOnSurfaceLight = Color(0xFFF8F0E2) + val inversePrimaryLight = Color(0xFFE2C46D) + val surfaceDimLight = Color(0xFFE1D9CC) + val surfaceBrightLight = Color(0xFFFFF8F0) + val surfaceContainerLowestLight = Color(0xFFFFFFFF) + val surfaceContainerLowLight = Color(0xFFFBF3E5) + val surfaceContainerLight = Color(0xFFF5EDDF) + val surfaceContainerHighLight = Color(0xFFF0E7D9) + val surfaceContainerHighestLight = Color(0xFFEAE1D4) + + val primaryDark = Color(0xFFE2C46D) + val onPrimaryDark = Color(0xFF3D2F00) + val primaryContainerDark = Color(0xFF574400) + val onPrimaryContainerDark = Color(0xFFFFE08A) + val secondaryDark = Color(0xFFD5C5A1) + val onSecondaryDark = Color(0xFF393015) + val secondaryContainerDark = Color(0xFF50462A) + val onSecondaryContainerDark = Color(0xFFF1E1BB) + val tertiaryDark = Color(0xFFE2C46D) + val onTertiaryDark = Color(0xFF3D2F00) + val tertiaryContainerDark = Color(0xFF574400) + val onTertiaryContainerDark = Color(0xFFFFE08A) + val errorDark = Color(0xFFFFB4AB) + val onErrorDark = Color(0xFF690005) + val errorContainerDark = Color(0xFF93000A) + val onErrorContainerDark = Color(0xFFFFDAD6) + val backgroundDark = Color(0xFF16130B) + val onBackgroundDark = Color(0xFFEAE1D4) + val surfaceDark = Color(0xFF16130B) + val onSurfaceDark = Color(0xFFEAE1D4) + val surfaceVariantDark = Color(0xFF4C4639) + val onSurfaceVariantDark = Color(0xFFCFC6B4) + val outlineDark = Color(0xFF989080) + val outlineVariantDark = Color(0xFF4C4639) + val scrimDark = Color(0xFF000000) + val inverseSurfaceDark = Color(0xFFEAE1D4) + val inverseOnSurfaceDark = Color(0xFF343027) + val inversePrimaryDark = Color(0xFF735C0C) + val surfaceDimDark = Color(0xFF16130B) + val surfaceBrightDark = Color(0xFF3D392F) + val surfaceContainerLowestDark = Color(0xFF110E07) + val surfaceContainerLowDark = Color(0xFF1F1B13) + val surfaceContainerDark = Color(0xFF231F17) + val surfaceContainerHighDark = Color(0xFF2D2A21) + val surfaceContainerHighestDark = Color(0xFF38342B) + + override val lightSchemeMaterial: ColorScheme = + androidx.compose.material3.lightColorScheme( + primary = primaryLight, + onPrimary = onPrimaryLight, + primaryContainer = primaryContainerLight, + onPrimaryContainer = onPrimaryContainerLight, + secondary = secondaryLight, + onSecondary = onSecondaryLight, + secondaryContainer = secondaryContainerLight, + onSecondaryContainer = onSecondaryContainerLight, + tertiary = tertiaryLight, + onTertiary = onTertiaryLight, + tertiaryContainer = tertiaryContainerLight, + onTertiaryContainer = onTertiaryContainerLight, + error = errorLight, + onError = onErrorLight, + errorContainer = errorContainerLight, + onErrorContainer = onErrorContainerLight, + background = backgroundLight, + onBackground = onBackgroundLight, + surface = surfaceLight, + onSurface = onSurfaceLight, + surfaceVariant = surfaceVariantLight, + onSurfaceVariant = onSurfaceVariantLight, + scrim = scrimLight, + inverseSurface = inverseSurfaceLight, + inverseOnSurface = inverseOnSurfaceLight, + inversePrimary = inversePrimaryLight, + ) + + override val lightScheme = + lightColorScheme( + primary = primaryLight, + onPrimary = onPrimaryLight, + primaryContainer = primaryContainerLight, + onPrimaryContainer = onPrimaryContainerLight, + secondary = secondaryLight, + onSecondary = onSecondaryLight, + secondaryContainer = secondaryContainerLight, + onSecondaryContainer = onSecondaryContainerLight, + tertiary = tertiaryLight, + onTertiary = onTertiaryLight, + tertiaryContainer = tertiaryContainerLight, + onTertiaryContainer = onTertiaryContainerLight, + error = errorLight, + onError = onErrorLight, + errorContainer = errorContainerLight, + onErrorContainer = onErrorContainerLight, + background = backgroundLight, + onBackground = onBackgroundLight, + surface = surfaceLight, + onSurface = onSurfaceLight, + surfaceVariant = surfaceVariantLight, + onSurfaceVariant = onSurfaceVariantLight, + scrim = scrimLight, + inverseSurface = inverseSurfaceLight, + inverseOnSurface = inverseOnSurfaceLight, + inversePrimary = inversePrimaryLight, + border = inversePrimaryLight, + ) + + override val darkSchemeMaterial = + androidx.compose.material3.darkColorScheme( + primary = primaryDark, + onPrimary = onPrimaryDark, + primaryContainer = primaryContainerDark, + onPrimaryContainer = onPrimaryContainerDark, + secondary = secondaryDark, + onSecondary = onSecondaryDark, + secondaryContainer = secondaryContainerDark, + onSecondaryContainer = onSecondaryContainerDark, + tertiary = tertiaryDark, + onTertiary = onTertiaryDark, + tertiaryContainer = tertiaryContainerDark, + onTertiaryContainer = onTertiaryContainerDark, + error = errorDark, + onError = onErrorDark, + errorContainer = errorContainerDark, + onErrorContainer = onErrorContainerDark, + background = backgroundDark, + onBackground = onBackgroundDark, + surface = surfaceDark, + onSurface = onSurfaceDark, + surfaceVariant = surfaceVariantDark, + onSurfaceVariant = onSurfaceVariantDark, + scrim = scrimDark, + inverseSurface = inverseSurfaceDark, + inverseOnSurface = inverseOnSurfaceDark, + inversePrimary = inversePrimaryDark, + ) + + override val darkScheme = + darkColorScheme( + primary = primaryDark, + onPrimary = onPrimaryDark, + primaryContainer = primaryContainerDark, + onPrimaryContainer = onPrimaryContainerDark, + secondary = secondaryDark, + onSecondary = onSecondaryDark, + secondaryContainer = secondaryContainerDark, + onSecondaryContainer = onSecondaryContainerDark, + tertiary = tertiaryDark, + onTertiary = onTertiaryDark, + tertiaryContainer = tertiaryContainerDark, + onTertiaryContainer = onTertiaryContainerDark, + error = errorDark, + onError = onErrorDark, + errorContainer = errorContainerDark, + onErrorContainer = onErrorContainerDark, + background = backgroundDark, + onBackground = onBackgroundDark, + surface = surfaceDark, + onSurface = onSurfaceDark, + surfaceVariant = surfaceVariantDark, + onSurfaceVariant = onSurfaceVariantDark, + scrim = scrimDark, + inverseSurface = inverseSurfaceDark, + inverseOnSurface = inverseOnSurfaceDark, + inversePrimary = inversePrimaryDark, + border = inversePrimaryDark.copy(alpha = .75f), + ) + } diff --git a/app/src/main/java/com/github/damontecres/dolphin/ui/theme/colors/PurpleThemeColors.kt b/app/src/main/java/com/github/damontecres/dolphin/ui/theme/colors/PurpleThemeColors.kt new file mode 100644 index 00000000..5b579b60 --- /dev/null +++ b/app/src/main/java/com/github/damontecres/dolphin/ui/theme/colors/PurpleThemeColors.kt @@ -0,0 +1,185 @@ +package com.github.damontecres.dolphin.ui.theme.colors + +import androidx.compose.ui.graphics.Color +import androidx.tv.material3.darkColorScheme +import androidx.tv.material3.lightColorScheme +import com.github.damontecres.dolphin.ui.theme.ThemeColors + +val PurpleThemeColors = + object : ThemeColors { + val primaryLight = Color(0xFF5F00D6) + val onPrimaryLight = Color(0xFFFFFFFF) + val primaryContainerLight = Color(0xFF7A28FE) + val onPrimaryContainerLight = Color(0xFFEADCFF) + val secondaryLight = Color(0xFF6B4BAE) + val onSecondaryLight = Color(0xFFFFFFFF) + val secondaryContainerLight = Color(0xFFB594FD) + val onSecondaryContainerLight = Color(0xFF472489) + val tertiaryLight = Color(0xFF8F007E) + val onTertiaryLight = Color(0xFFFFFFFF) + val tertiaryContainerLight = Color(0xFFB800A3) + val onTertiaryContainerLight = Color(0xFFFFD7F0) + val errorLight = Color(0xFFBA1A1A) + val onErrorLight = Color(0xFFFFFFFF) + val errorContainerLight = Color(0xFFFFDAD6) + val onErrorContainerLight = Color(0xFF93000A) + val backgroundLight = Color(0xFFFEF7FF) + val onBackgroundLight = Color(0xFF1D1A25) + val surfaceLight = Color(0xFFFEF7FF) + val onSurfaceLight = Color(0xFF1D1A25) + val surfaceVariantLight = Color(0xFFE9DEF6) + val onSurfaceVariantLight = Color(0xFF4A4456) + val scrimLight = Color(0xFF000000) + val inverseSurfaceLight = Color(0xFF332E3A) + val inverseOnSurfaceLight = Color(0xFFF6EDFE) + val inversePrimaryLight = Color(0xFFD2BCFF) + + val primaryDark = Color(0xFFD2BCFF) + val onPrimaryDark = Color(0xFF3D008F) + val primaryContainerDark = Color(0xFF7A28FE) + val onPrimaryContainerDark = Color(0xFFEADCFF) + val secondaryDark = Color(0xFFD2BCFF) + val onSecondaryDark = Color(0xFF3B167D) + val secondaryContainerDark = Color(0xFF533295) + val onSecondaryContainerDark = Color(0xFFC2A6FF) + val tertiaryDark = Color(0xFFFFACE7) + val onTertiaryDark = Color(0xFF5E0052) + val tertiaryContainerDark = Color(0xFFB800A3) + val onTertiaryContainerDark = Color(0xFFFFD7F0) + val errorDark = Color(0xFFFFB4AB) + val onErrorDark = Color(0xFF690005) + val errorContainerDark = Color(0xFF93000A) + val onErrorContainerDark = Color(0xFFFFDAD6) + val backgroundDark = Color(0xFF15121C) + val onBackgroundDark = Color(0xFFE8DFF0) + val surfaceDark = Color(0xFF15121C) + val onSurfaceDark = Color(0xFFE8DFF0) + val surfaceVariantDark = Color(0xFF4A4456) + val onSurfaceVariantDark = Color(0xFFCCC3D9) + val scrimDark = Color(0xFF000000) + val inverseSurfaceDark = Color(0xFFE8DFF0) + val inverseOnSurfaceDark = Color(0xFF332E3A) + val inversePrimaryDark = Color(0xFF741BF8) + + override val lightSchemeMaterial: androidx.compose.material3.ColorScheme = + androidx.compose.material3.lightColorScheme( + primary = primaryLight, + onPrimary = onPrimaryLight, + primaryContainer = primaryContainerLight, + onPrimaryContainer = onPrimaryContainerLight, + secondary = secondaryLight, + onSecondary = onSecondaryLight, + secondaryContainer = secondaryContainerLight, + onSecondaryContainer = onSecondaryContainerLight, + tertiary = tertiaryLight, + onTertiary = onTertiaryLight, + tertiaryContainer = tertiaryContainerLight, + onTertiaryContainer = onTertiaryContainerLight, + error = errorLight, + onError = onErrorLight, + errorContainer = errorContainerLight, + onErrorContainer = onErrorContainerLight, + background = backgroundLight, + onBackground = onBackgroundLight, + surface = surfaceLight, + onSurface = onSurfaceLight, + surfaceVariant = surfaceVariantLight, + onSurfaceVariant = onSurfaceVariantLight, + scrim = scrimLight, + inverseSurface = inverseSurfaceLight, + inverseOnSurface = inverseOnSurfaceLight, + inversePrimary = inversePrimaryLight, + ) + + override val lightScheme = + lightColorScheme( + primary = primaryLight, + onPrimary = onPrimaryLight, + primaryContainer = primaryContainerLight, + onPrimaryContainer = onPrimaryContainerLight, + secondary = secondaryLight, + onSecondary = onSecondaryLight, + secondaryContainer = secondaryContainerLight, + onSecondaryContainer = onSecondaryContainerLight, + tertiary = tertiaryLight, + onTertiary = onTertiaryLight, + tertiaryContainer = tertiaryContainerLight, + onTertiaryContainer = onTertiaryContainerLight, + error = errorLight, + onError = onErrorLight, + errorContainer = errorContainerLight, + onErrorContainer = onErrorContainerLight, + background = backgroundLight, + onBackground = onBackgroundLight, + surface = surfaceLight, + onSurface = onSurfaceLight, + surfaceVariant = surfaceVariantLight, + onSurfaceVariant = onSurfaceVariantLight, + scrim = scrimLight, + inverseSurface = inverseSurfaceLight, + inverseOnSurface = inverseOnSurfaceLight, + inversePrimary = inversePrimaryLight, + border = inversePrimaryLight, + ) + + override val darkSchemeMaterial = + androidx.compose.material3.darkColorScheme( + primary = primaryDark, + onPrimary = onPrimaryDark, + primaryContainer = primaryContainerDark, + onPrimaryContainer = onPrimaryContainerDark, + secondary = secondaryDark, + onSecondary = onSecondaryDark, + secondaryContainer = secondaryContainerDark, + onSecondaryContainer = onSecondaryContainerDark, + tertiary = tertiaryDark, + onTertiary = onTertiaryDark, + tertiaryContainer = tertiaryContainerDark, + onTertiaryContainer = onTertiaryContainerDark, + error = errorDark, + onError = onErrorDark, + errorContainer = errorContainerDark, + onErrorContainer = onErrorContainerDark, + background = backgroundDark, + onBackground = onBackgroundDark, + surface = surfaceDark, + onSurface = onSurfaceDark, + surfaceVariant = surfaceVariantDark, + onSurfaceVariant = onSurfaceVariantDark, + scrim = scrimDark, + inverseSurface = inverseSurfaceDark, + inverseOnSurface = inverseOnSurfaceDark, + inversePrimary = inversePrimaryDark, + ) + + override val darkScheme = + darkColorScheme( + primary = primaryDark, + onPrimary = onPrimaryDark, + primaryContainer = primaryContainerDark, + onPrimaryContainer = onPrimaryContainerDark, + secondary = secondaryDark, + onSecondary = onSecondaryDark, + secondaryContainer = secondaryContainerDark, + onSecondaryContainer = onSecondaryContainerDark, + tertiary = tertiaryDark, + onTertiary = onTertiaryDark, + tertiaryContainer = tertiaryContainerDark, + onTertiaryContainer = onTertiaryContainerDark, + error = errorDark, + onError = onErrorDark, + errorContainer = errorContainerDark, + onErrorContainer = onErrorContainerDark, + background = backgroundDark, + onBackground = onBackgroundDark, + surface = surfaceDark, + onSurface = onSurfaceDark, + surfaceVariant = surfaceVariantDark, + onSurfaceVariant = onSurfaceVariantDark, + scrim = scrimDark, + inverseSurface = inverseSurfaceDark, + inverseOnSurface = inverseOnSurfaceDark, + inversePrimary = inversePrimaryDark, + border = inversePrimaryDark.copy(alpha = .75f), + ) + } diff --git a/app/src/main/proto/DolphinDataStore.proto b/app/src/main/proto/DolphinDataStore.proto index 7795cc61..4a352e0f 100644 --- a/app/src/main/proto/DolphinDataStore.proto +++ b/app/src/main/proto/DolphinDataStore.proto @@ -29,10 +29,18 @@ enum ThemeSongVolume { HIGHEST = 5; } +enum AppThemeColors { + PURPLE = 0; + BLUE = 1; + GREEN = 2; + ORANGE = 3; +} + message InterfacePreferences { ThemeSongVolume play_theme_songs = 1; bool remember_selected_tab = 2; map remembered_tabs = 3; + AppThemeColors app_theme_colors = 4; } message AppPreferences { diff --git a/app/src/main/res/values/preferences.xml b/app/src/main/res/values/preferences.xml index b8a83b34..208084f6 100644 --- a/app/src/main/res/values/preferences.xml +++ b/app/src/main/res/values/preferences.xml @@ -9,4 +9,11 @@ Full + + Purple + Blue + Green + Orange + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 68a0ef8d..1684d675 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -62,5 +62,6 @@ Remember selected tabs Director Max bitrate + Application Theme