🚀 Add new Themes: Gray and Green-Pink

* Gray "Callisto" theme
* Green-Pink "Ganymede" theme
This commit is contained in:
Acclorite 2024-10-24 19:24:37 +03:00
parent aa00a3b088
commit 8cd4e92dc2
7 changed files with 346 additions and 4 deletions

View file

@ -10,9 +10,11 @@ import ua.acclorite.book_story.presentation.ui.theme.aquaTheme
import ua.acclorite.book_story.presentation.ui.theme.blackTheme import ua.acclorite.book_story.presentation.ui.theme.blackTheme
import ua.acclorite.book_story.presentation.ui.theme.blueTheme import ua.acclorite.book_story.presentation.ui.theme.blueTheme
import ua.acclorite.book_story.presentation.ui.theme.dynamicTheme import ua.acclorite.book_story.presentation.ui.theme.dynamicTheme
import ua.acclorite.book_story.presentation.ui.theme.grayTheme
import ua.acclorite.book_story.presentation.ui.theme.greenTheme import ua.acclorite.book_story.presentation.ui.theme.greenTheme
import ua.acclorite.book_story.presentation.ui.theme.lavenderTheme import ua.acclorite.book_story.presentation.ui.theme.lavenderTheme
import ua.acclorite.book_story.presentation.ui.theme.marshTheme import ua.acclorite.book_story.presentation.ui.theme.marshTheme
import ua.acclorite.book_story.presentation.ui.theme.pink2Theme
import ua.acclorite.book_story.presentation.ui.theme.pinkTheme import ua.acclorite.book_story.presentation.ui.theme.pinkTheme
import ua.acclorite.book_story.presentation.ui.theme.purpleTheme import ua.acclorite.book_story.presentation.ui.theme.purpleTheme
import ua.acclorite.book_story.presentation.ui.theme.redTheme import ua.acclorite.book_story.presentation.ui.theme.redTheme
@ -29,9 +31,11 @@ enum class Theme(
GREEN(hasThemeContrast = true, title = R.string.green_theme), GREEN(hasThemeContrast = true, title = R.string.green_theme),
MARSH(hasThemeContrast = true, title = R.string.marsh_theme), MARSH(hasThemeContrast = true, title = R.string.marsh_theme),
RED(hasThemeContrast = true, title = R.string.red_theme), RED(hasThemeContrast = true, title = R.string.red_theme),
GRAY(hasThemeContrast = false, title = R.string.gray_theme),
PURPLE(hasThemeContrast = true, title = R.string.purple_theme), PURPLE(hasThemeContrast = true, title = R.string.purple_theme),
LAVENDER(hasThemeContrast = true, title = R.string.lavender_theme), LAVENDER(hasThemeContrast = true, title = R.string.lavender_theme),
PINK(hasThemeContrast = false, title = R.string.pink_theme), PINK(hasThemeContrast = true, title = R.string.pink_theme),
PINK2(hasThemeContrast = false, title = R.string.pink2_theme),
YELLOW(hasThemeContrast = true, title = R.string.yellow_theme), YELLOW(hasThemeContrast = true, title = R.string.yellow_theme),
AQUA(hasThemeContrast = true, title = R.string.aqua_theme); AQUA(hasThemeContrast = true, title = R.string.aqua_theme);
@ -69,7 +73,7 @@ fun colorScheme(
val colorScheme = when (theme) { val colorScheme = when (theme) {
Theme.DYNAMIC -> { Theme.DYNAMIC -> {
/* Dynamic Theme */ /* Dynamic Theme */
dynamicTheme(isDark = darkTheme) dynamicTheme(isDark = darkTheme).logTheme(darkTheme = darkTheme)
} }
Theme.BLUE -> { Theme.BLUE -> {
@ -97,6 +101,11 @@ fun colorScheme(
pinkTheme(isDark = darkTheme, themeContrast = themeContrast) pinkTheme(isDark = darkTheme, themeContrast = themeContrast)
} }
Theme.PINK2 -> {
/* Pink2 Theme */
pink2Theme(isDark = darkTheme)
}
Theme.LAVENDER -> { Theme.LAVENDER -> {
/* Lavender Theme */ /* Lavender Theme */
lavenderTheme(isDark = darkTheme, themeContrast = themeContrast) lavenderTheme(isDark = darkTheme, themeContrast = themeContrast)
@ -112,6 +121,11 @@ fun colorScheme(
redTheme(isDark = darkTheme, themeContrast = themeContrast) redTheme(isDark = darkTheme, themeContrast = themeContrast)
} }
Theme.GRAY -> {
/* Gray Theme */
grayTheme(isDark = darkTheme)
}
Theme.AQUA -> { Theme.AQUA -> {
/* Aqua Theme */ /* Aqua Theme */
aquaTheme(isDark = darkTheme, themeContrast = themeContrast) aquaTheme(isDark = darkTheme, themeContrast = themeContrast)

View file

@ -113,7 +113,7 @@ fun BookStoryTheme(
} }
val colorScheme = colorScheme( val colorScheme = colorScheme(
theme = Theme.entries().find { it == theme } ?: Theme.BLUE, theme = Theme.entries().find { it == theme } ?: Theme.entries().first(),
darkTheme = isDark, darkTheme = isDark,
isPureDark = isPureDark, isPureDark = isPureDark,
themeContrast = themeContrast themeContrast = themeContrast

View file

@ -27,7 +27,7 @@ fun ColorScheme.logTheme(darkTheme: Boolean): ColorScheme {
Log.i( Log.i(
THEME, THEME,
"Theme:\n" + "Theme $suffix:\n" +
"------------------------\n" + "------------------------\n" +
primary.convertToVal("primary") + primary.convertToVal("primary") +
onPrimary.convertToVal("onPrimary") + onPrimary.convertToVal("onPrimary") +

View file

@ -0,0 +1,162 @@
package ua.acclorite.book_story.presentation.ui.theme
import androidx.compose.material3.ColorScheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
private val primaryLight = Color(0xFF62514F)
private val onPrimaryLight = Color(0xFFFFFFFF)
private val primaryContainerLight = Color(0xFFDBC4C1)
private val onPrimaryContainerLight = Color(0xFF231615)
private val secondaryLight = Color(0xFF6B5A58)
private val onSecondaryLight = Color(0xFFFFFFFF)
private val secondaryContainerLight = Color(0xFFF5DDDA)
private val onSecondaryContainerLight = Color(0xFF251917)
private val tertiaryLight = Color(0xFF775653)
private val onTertiaryLight = Color(0xFFFFFFFF)
private val tertiaryContainerLight = Color(0xFFFFDAD6)
private val onTertiaryContainerLight = Color(0xFF2C1513)
private val errorLight = Color(0xFFB3261E)
private val onErrorLight = Color(0xFFFFFFFF)
private val errorContainerLight = Color(0xFFF9DEDC)
private val onErrorContainerLight = Color(0xFF410E0B)
private val backgroundLight = Color(0xFFFEF8F7)
private val onBackgroundLight = Color(0xFF1E1B1A)
private val surfaceLight = Color(0xFFFEF8F7)
private val onSurfaceLight = Color(0xFF1E1B1A)
private val surfaceVariantLight = Color(0xFFE9E1DF)
private val onSurfaceVariantLight = Color(0xFF4A4645)
private val outlineLight = Color(0xFF7A7574)
private val outlineVariantLight = Color(0xFFCCC5C4)
private val scrimLight = Color(0xFF000000)
private val inverseSurfaceLight = Color(0xFF332F2F)
private val inverseOnSurfaceLight = Color(0xFFF7EFEE)
private val inversePrimaryLight = Color(0xFFC2ACA9)
private val surfaceDimLight = Color(0xFFDED9D7)
private val surfaceBrightLight = Color(0xFFFEF8F7)
private val surfaceContainerLowestLight = Color(0xFFFFFFFF)
private val surfaceContainerLowLight = Color(0xFFF8F2F1)
private val surfaceContainerLight = Color(0xFFF2ECEB)
private val surfaceContainerHighLight = Color(0xFFEDE7E6)
private val surfaceContainerHighestLight = Color(0xFFE9E1DF)
private val primaryDark = Color(0xFFC2ACA9)
private val onPrimaryDark = Color(0xFF372927)
private val primaryContainerDark = Color(0xFF4C3C3A)
private val onPrimaryContainerDark = Color(0xFFDBC4C1)
private val secondaryDark = Color(0xFFD8C2BF)
private val onSecondaryDark = Color(0xFF3B2D2B)
private val secondaryContainerDark = Color(0xFF534341)
private val onSecondaryContainerDark = Color(0xFFF5DDDA)
private val tertiaryDark = Color(0xFFE7BDB8)
private val onTertiaryDark = Color(0xFF442926)
private val tertiaryContainerDark = Color(0xFF5D3F3C)
private val onTertiaryContainerDark = Color(0xFFFFDAD6)
private val errorDark = Color(0xFFF2B8B5)
private val onErrorDark = Color(0xFF601410)
private val errorContainerDark = Color(0xFF8C1D18)
private val onErrorContainerDark = Color(0xFFF9DEDC)
private val backgroundDark = Color(0xFF171211)
private val onBackgroundDark = Color(0xFFE9E1DF)
private val surfaceDark = Color(0xFF141110)
private val onSurfaceDark = Color(0xFFE9E1DF)
private val surfaceVariantDark = Color(0xFF4A4645)
private val onSurfaceVariantDark = Color(0xFFCCC5C4)
private val outlineDark = Color(0xFF968F8E)
private val outlineVariantDark = Color(0xFF4A4645)
private val scrimDark = Color(0xFF000000)
private val inverseSurfaceDark = Color(0xFFE9E1DF)
private val inverseOnSurfaceDark = Color(0xFF332F2F)
private val inversePrimaryDark = Color(0xFF62514F)
private val surfaceDimDark = Color(0xFF171211)
private val surfaceBrightDark = Color(0xFF3D3837)
private val surfaceContainerLowestDark = Color(0xFF0D0B0A)
private val surfaceContainerLowDark = Color(0xFF1E1B1A)
private val surfaceContainerDark = Color(0xFF231F1F)
private val surfaceContainerHighDark = Color(0xFF2D2929)
private val surfaceContainerHighestDark = Color(0xFF383433)
@Composable
fun grayTheme(isDark: Boolean): ColorScheme {
return if (isDark) {
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,
outline = outlineDark,
outlineVariant = outlineVariantDark,
scrim = scrimDark,
inverseSurface = inverseSurfaceDark,
inverseOnSurface = inverseOnSurfaceDark,
inversePrimary = inversePrimaryDark,
surfaceDim = surfaceDimDark,
surfaceBright = surfaceBrightDark,
surfaceContainerLowest = surfaceContainerLowestDark,
surfaceContainerLow = surfaceContainerLowDark,
surfaceContainer = surfaceContainerDark,
surfaceContainerHigh = surfaceContainerHighDark,
surfaceContainerHighest = surfaceContainerHighestDark,
)
} else {
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,
outline = outlineLight,
outlineVariant = outlineVariantLight,
scrim = scrimLight,
inverseSurface = inverseSurfaceLight,
inverseOnSurface = inverseOnSurfaceLight,
inversePrimary = inversePrimaryLight,
surfaceDim = surfaceDimLight,
surfaceBright = surfaceBrightLight,
surfaceContainerLowest = surfaceContainerLowestLight,
surfaceContainerLow = surfaceContainerLowLight,
surfaceContainer = surfaceContainerLight,
surfaceContainerHigh = surfaceContainerHighLight,
surfaceContainerHighest = surfaceContainerHighestLight,
)
}
}

View file

@ -0,0 +1,162 @@
package ua.acclorite.book_story.presentation.ui.theme
import androidx.compose.material3.ColorScheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
private val primaryLight = Color(0xFF3E5C38)
private val onPrimaryLight = Color(0xFFFFFFFF)
private val primaryContainerLight = Color(0xFFB0D3A5)
private val onPrimaryContainerLight = Color(0xFF031F03)
private val secondaryLight = Color(0xFF7C5264)
private val onSecondaryLight = Color(0xFFFFFFFF)
private val secondaryContainerLight = Color(0xFFFFD8E6)
private val onSecondaryContainerLight = Color(0xFF301120)
private val tertiaryLight = Color(0xFF535B8B)
private val onTertiaryLight = Color(0xFFFFFFFF)
private val tertiaryContainerLight = Color(0xFFDEE0FF)
private val onTertiaryContainerLight = Color(0xFF0E1744)
private val errorLight = Color(0xFFB3261E)
private val onErrorLight = Color(0xFFFFFFFF)
private val errorContainerLight = Color(0xFFF9DEDC)
private val onErrorContainerLight = Color(0xFF410E0B)
private val backgroundLight = Color(0xFFF7F8FF)
private val onBackgroundLight = Color(0xFF191B27)
private val surfaceLight = Color(0xFFF7F8FF)
private val onSurfaceLight = Color(0xFF191B27)
private val surfaceVariantLight = Color(0xFFE1E1F3)
private val onSurfaceVariantLight = Color(0xFF444654)
private val outlineLight = Color(0xFF747584)
private val outlineVariantLight = Color(0xFFC5C5D6)
private val scrimLight = Color(0xFF000000)
private val inverseSurfaceLight = Color(0xFF2E303D)
private val inverseOnSurfaceLight = Color(0xFFF0EFFF)
private val inversePrimaryLight = Color(0xFF98BA8D)
private val surfaceDimLight = Color(0xFFD8D9EA)
private val surfaceBrightLight = Color(0xFFF7F8FF)
private val surfaceContainerLowestLight = Color(0xFFFFFFFF)
private val surfaceContainerLowLight = Color(0xFFF2F3FF)
private val surfaceContainerLight = Color(0xFFECEDFF)
private val surfaceContainerHighLight = Color(0xFFE6E7F9)
private val surfaceContainerHighestLight = Color(0xFFE1E1F3)
private val primaryDark = Color(0xFF98BA8D)
private val onPrimaryDark = Color(0xFF163212)
private val primaryContainerDark = Color(0xFF2A4724)
private val onPrimaryContainerDark = Color(0xFFB0D3A5)
private val secondaryDark = Color(0xFFEDB8CD)
private val onSecondaryDark = Color(0xFF482535)
private val secondaryContainerDark = Color(0xFF623B4C)
private val onSecondaryContainerDark = Color(0xFFFFD8E6)
private val tertiaryDark = Color(0xFFBCC3FA)
private val onTertiaryDark = Color(0xFF252D5A)
private val tertiaryContainerDark = Color(0xFF3C4472)
private val onTertiaryContainerDark = Color(0xFFDEE0FF)
private val errorDark = Color(0xFFF2B8B5)
private val onErrorDark = Color(0xFF601410)
private val errorContainerDark = Color(0xFF8C1D18)
private val onErrorContainerDark = Color(0xFFF9DEDC)
private val backgroundDark = Color(0xFF12131F)
private val onBackgroundDark = Color(0xFFE1E1F3)
private val surfaceDark = Color(0xFF12131B)
private val onSurfaceDark = Color(0xFFE1E1F3)
private val surfaceVariantDark = Color(0xFF444654)
private val onSurfaceVariantDark = Color(0xFFC5C5D6)
private val outlineDark = Color(0xFF8F8F9F)
private val outlineVariantDark = Color(0xFF444654)
private val scrimDark = Color(0xFF000000)
private val inverseSurfaceDark = Color(0xFFE1E1F3)
private val inverseOnSurfaceDark = Color(0xFF2E303D)
private val inversePrimaryDark = Color(0xFF3E5C38)
private val surfaceDimDark = Color(0xFF12131F)
private val surfaceBrightDark = Color(0xFF373846)
private val surfaceContainerLowestDark = Color(0xFF0E0E13)
private val surfaceContainerLowDark = Color(0xFF1A1C27)
private val surfaceContainerDark = Color(0xFF1F202B)
private val surfaceContainerHighDark = Color(0xFF292A36)
private val surfaceContainerHighestDark = Color(0xFF333442)
@Composable
fun pink2Theme(isDark: Boolean): ColorScheme {
return if (isDark) {
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,
outline = outlineDark,
outlineVariant = outlineVariantDark,
scrim = scrimDark,
inverseSurface = inverseSurfaceDark,
inverseOnSurface = inverseOnSurfaceDark,
inversePrimary = inversePrimaryDark,
surfaceDim = surfaceDimDark,
surfaceBright = surfaceBrightDark,
surfaceContainerLowest = surfaceContainerLowestDark,
surfaceContainerLow = surfaceContainerLowDark,
surfaceContainer = surfaceContainerDark,
surfaceContainerHigh = surfaceContainerHighDark,
surfaceContainerHighest = surfaceContainerHighestDark,
)
} else {
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,
outline = outlineLight,
outlineVariant = outlineVariantLight,
scrim = scrimLight,
inverseSurface = inverseSurfaceLight,
inverseOnSurface = inverseOnSurfaceLight,
inversePrimary = inversePrimaryLight,
surfaceDim = surfaceDimLight,
surfaceBright = surfaceBrightLight,
surfaceContainerLowest = surfaceContainerLowestLight,
surfaceContainerLow = surfaceContainerLowLight,
surfaceContainer = surfaceContainerLight,
surfaceContainerHigh = surfaceContainerHighLight,
surfaceContainerHighest = surfaceContainerHighestLight,
)
}
}

View file

@ -334,8 +334,10 @@
<string name="blue_theme">Нептун</string> <string name="blue_theme">Нептун</string>
<string name="green_theme">Земля</string> <string name="green_theme">Земля</string>
<string name="red_theme">Марс</string> <string name="red_theme">Марс</string>
<string name="gray_theme">Каллісто</string>
<string name="purple_theme">Юпітер</string> <string name="purple_theme">Юпітер</string>
<string name="pink_theme">Сатурн</string> <string name="pink_theme">Сатурн</string>
<string name="pink2_theme">Ганімед</string>
<string name="lavender_theme">Еріс</string> <string name="lavender_theme">Еріс</string>
<string name="marsh_theme">Плутон</string> <string name="marsh_theme">Плутон</string>
<string name="yellow_theme">Венера</string> <string name="yellow_theme">Венера</string>

View file

@ -335,8 +335,10 @@
<string name="blue_theme">Neptune</string> <string name="blue_theme">Neptune</string>
<string name="green_theme">Earth</string> <string name="green_theme">Earth</string>
<string name="red_theme">Mars</string> <string name="red_theme">Mars</string>
<string name="gray_theme">Callisto</string>
<string name="purple_theme">Jupiter</string> <string name="purple_theme">Jupiter</string>
<string name="pink_theme">Saturn</string> <string name="pink_theme">Saturn</string>
<string name="pink2_theme">Ganymede</string>
<string name="lavender_theme">Eris</string> <string name="lavender_theme">Eris</string>
<string name="marsh_theme">Pluto</string> <string name="marsh_theme">Pluto</string>
<string name="yellow_theme">Venus</string> <string name="yellow_theme">Venus</string>