Add multiple color scheme

This commit is contained in:
Ash
2022-04-02 16:24:02 +08:00
parent 1fbb079e92
commit 9bf93ebc11
6 changed files with 370 additions and 171 deletions
@@ -1,62 +0,0 @@
package me.ash.reader.ui.theme
import androidx.compose.ui.graphics.Color
val md_theme_light_primary = Color(0xFF00658e)
val md_theme_light_onPrimary = Color(0xFFffffff)
val md_theme_light_primaryContainer = Color(0xFFc3e7ff)
val md_theme_light_onPrimaryContainer = Color(0xFF001e2e)
val md_theme_light_secondary = Color(0xFF4f616e)
val md_theme_light_onSecondary = Color(0xFFffffff)
val md_theme_light_secondaryContainer = Color(0xFFd2e5f4)
val md_theme_light_onSecondaryContainer = Color(0xFF0b1d28)
val md_theme_light_tertiary = Color(0xFF625a7c)
val md_theme_light_onTertiary = Color(0xFFffffff)
val md_theme_light_tertiaryContainer = Color(0xFFe8ddff)
val md_theme_light_onTertiaryContainer = Color(0xFF1e1735)
val md_theme_light_error = Color(0xFFba1b1b)
val md_theme_light_errorContainer = Color(0xFFffdad4)
val md_theme_light_onError = Color(0xFFffffff)
val md_theme_light_onErrorContainer = Color(0xFF410001)
val md_theme_light_background = Color(0xFFfbfcff)
val md_theme_light_onBackground = Color(0xFF191c1e)
val md_theme_light_surface = Color(0xFFfbfcff)
val md_theme_light_onSurface = Color(0xFF191c1e)
val md_theme_light_surfaceVariant = Color(0xFFdde3ea)
val md_theme_light_onSurfaceVariant = Color(0xFF41484d)
val md_theme_light_outline = Color(0xFF71787e)
val md_theme_light_inverseOnSurface = Color(0xFFf0f1f4)
val md_theme_light_inverseSurface = Color(0xFF2e3133)
val md_theme_light_inversePrimary = Color(0xFF7fcfff)
val md_theme_light_shadow = Color(0xFF000000)
val md_theme_dark_primary = Color(0xFF7fcfff)
val md_theme_dark_onPrimary = Color(0xFF00344b)
val md_theme_dark_primaryContainer = Color(0xFF004c6c)
val md_theme_dark_onPrimaryContainer = Color(0xFFc3e7ff)
val md_theme_dark_secondary = Color(0xFFb6c9d8)
val md_theme_dark_onSecondary = Color(0xFF21333e)
val md_theme_dark_secondaryContainer = Color(0xFF374955)
val md_theme_dark_onSecondaryContainer = Color(0xFFd2e5f4)
val md_theme_dark_tertiary = Color(0xFFccc1e9)
val md_theme_dark_onTertiary = Color(0xFF332c4b)
val md_theme_dark_tertiaryContainer = Color(0xFF4a4263)
val md_theme_dark_onTertiaryContainer = Color(0xFFe8ddff)
val md_theme_dark_error = Color(0xFFffb4a9)
val md_theme_dark_errorContainer = Color(0xFF930006)
val md_theme_dark_onError = Color(0xFF680003)
val md_theme_dark_onErrorContainer = Color(0xFFffdad4)
val md_theme_dark_background = Color(0xFF191c1e)
val md_theme_dark_onBackground = Color(0xFFe1e2e5)
val md_theme_dark_surface = Color(0xFF191c1e)
val md_theme_dark_onSurface = Color(0xFFe1e2e5)
val md_theme_dark_surfaceVariant = Color(0xFF41484d)
val md_theme_dark_onSurfaceVariant = Color(0xFFc1c7ce)
val md_theme_dark_outline = Color(0xFF8b9298)
val md_theme_dark_inverseOnSurface = Color(0xFF191c1e)
val md_theme_dark_inverseSurface = Color(0xFFe1e2e5)
val md_theme_dark_inversePrimary = Color(0xFF00658e)
val md_theme_dark_shadow = Color(0xFF000000)
val seed = Color(0xFF006187)
val error = Color(0xFFba1b1b)
@@ -2,76 +2,19 @@ package me.ash.reader.ui.theme
import android.os.Build
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material3.*
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.dynamicDarkColorScheme
import androidx.compose.material3.dynamicLightColorScheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.staticCompositionLocalOf
import androidx.compose.ui.platform.LocalContext
import me.ash.reader.ui.theme.color.PurpleColor
private val LightThemeColors = lightColorScheme(
primary = md_theme_light_primary,
onPrimary = md_theme_light_onPrimary,
primaryContainer = md_theme_light_primaryContainer,
onPrimaryContainer = md_theme_light_onPrimaryContainer,
secondary = md_theme_light_secondary,
onSecondary = md_theme_light_onSecondary,
secondaryContainer = md_theme_light_secondaryContainer,
onSecondaryContainer = md_theme_light_onSecondaryContainer,
tertiary = md_theme_light_tertiary,
onTertiary = md_theme_light_onTertiary,
tertiaryContainer = md_theme_light_tertiaryContainer,
onTertiaryContainer = md_theme_light_onTertiaryContainer,
error = md_theme_light_error,
errorContainer = md_theme_light_errorContainer,
onError = md_theme_light_onError,
onErrorContainer = md_theme_light_onErrorContainer,
background = md_theme_light_background,
onBackground = md_theme_light_onBackground,
surface = md_theme_light_surface,
onSurface = md_theme_light_onSurface,
surfaceVariant = md_theme_light_surfaceVariant,
onSurfaceVariant = md_theme_light_onSurfaceVariant,
outline = md_theme_light_outline,
inverseOnSurface = md_theme_light_inverseOnSurface,
inverseSurface = md_theme_light_inverseSurface,
inversePrimary = md_theme_light_inversePrimary,
// shadow = md_theme_light_shadow,
)
private val DarkThemeColors = darkColorScheme(
primary = md_theme_dark_primary,
onPrimary = md_theme_dark_onPrimary,
primaryContainer = md_theme_dark_primaryContainer,
onPrimaryContainer = md_theme_dark_onPrimaryContainer,
secondary = md_theme_dark_secondary,
onSecondary = md_theme_dark_onSecondary,
secondaryContainer = md_theme_dark_secondaryContainer,
onSecondaryContainer = md_theme_dark_onSecondaryContainer,
tertiary = md_theme_dark_tertiary,
onTertiary = md_theme_dark_onTertiary,
tertiaryContainer = md_theme_dark_tertiaryContainer,
onTertiaryContainer = md_theme_dark_onTertiaryContainer,
error = md_theme_dark_error,
errorContainer = md_theme_dark_errorContainer,
onError = md_theme_dark_onError,
onErrorContainer = md_theme_dark_onErrorContainer,
background = md_theme_dark_background,
onBackground = md_theme_dark_onBackground,
surface = md_theme_dark_surface,
onSurface = md_theme_dark_onSurface,
surfaceVariant = md_theme_dark_surfaceVariant,
onSurfaceVariant = md_theme_dark_onSurfaceVariant,
outline = md_theme_dark_outline,
inverseOnSurface = md_theme_dark_inverseOnSurface,
inverseSurface = md_theme_dark_inverseSurface,
inversePrimary = md_theme_dark_inversePrimary,
// shadow = md_theme_dark_shadow,
)
private val LightThemeColors = PurpleColor.lightColorScheme
private val DarkThemeColors = PurpleColor.darkColorScheme
val LocalLightThemeColors = staticCompositionLocalOf { LightThemeColors }
val LocalDarkThemeColors = staticCompositionLocalOf { DarkThemeColors }
@Composable
@@ -81,6 +24,7 @@ fun AppTheme(
) {
// Dynamic color is available on Android 12+
val dynamicColor = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
val light = when {
dynamicColor -> dynamicLightColorScheme(LocalContext.current)
else -> LightThemeColors
@@ -0,0 +1,118 @@
package me.ash.reader.ui.theme.color
import androidx.compose.ui.graphics.Color
object BlueColor : IColor {
override val md_theme_light_primary: Color
get() = Color(0xFF00658e)
override val md_theme_light_onPrimary: Color
get() = Color(0xFFffffff)
override val md_theme_light_primaryContainer: Color
get() = Color(0xFFc3e7ff)
override val md_theme_light_onPrimaryContainer: Color
get() = Color(0xFF001e2e)
override val md_theme_light_secondary: Color
get() = Color(0xFF4f616e)
override val md_theme_light_onSecondary: Color
get() = Color(0xFFffffff)
override val md_theme_light_secondaryContainer: Color
get() = Color(0xFFd2e5f4)
override val md_theme_light_onSecondaryContainer: Color
get() = Color(0xFF0b1d28)
override val md_theme_light_tertiary: Color
get() = Color(0xFF625a7c)
override val md_theme_light_onTertiary: Color
get() = Color(0xFFffffff)
override val md_theme_light_tertiaryContainer: Color
get() = Color(0xFFe8ddff)
override val md_theme_light_onTertiaryContainer: Color
get() = Color(0xFF1e1735)
override val md_theme_light_error: Color
get() = Color(0xFFba1b1b)
override val md_theme_light_errorContainer: Color
get() = Color(0xFFffdad4)
override val md_theme_light_onError: Color
get() = Color(0xFFffffff)
override val md_theme_light_onErrorContainer: Color
get() = Color(0xFF410001)
override val md_theme_light_background: Color
get() = Color(0xFFfbfcff)
override val md_theme_light_onBackground: Color
get() = Color(0xFF191c1e)
override val md_theme_light_surface: Color
get() = Color(0xFFfbfcff)
override val md_theme_light_onSurface: Color
get() = Color(0xFF191c1e)
override val md_theme_light_surfaceVariant: Color
get() = Color(0xFFdde3ea)
override val md_theme_light_onSurfaceVariant: Color
get() = Color(0xFF41484d)
override val md_theme_light_outline: Color
get() = Color(0xFF71787e)
override val md_theme_light_inverseOnSurface: Color
get() = Color(0xFFf0f1f4)
override val md_theme_light_inverseSurface: Color
get() = Color(0xFF2e3133)
override val md_theme_light_inversePrimary: Color
get() = Color(0xFF7fcfff)
override val md_theme_light_shadow: Color
get() = Color(0xFF000000)
override val md_theme_dark_primary: Color
get() = Color(0xFF7fcfff)
override val md_theme_dark_onPrimary: Color
get() = Color(0xFF00344b)
override val md_theme_dark_primaryContainer: Color
get() = Color(0xFF004c6c)
override val md_theme_dark_onPrimaryContainer: Color
get() = Color(0xFFc3e7ff)
override val md_theme_dark_secondary: Color
get() = Color(0xFFb6c9d8)
override val md_theme_dark_onSecondary: Color
get() = Color(0xFF21333e)
override val md_theme_dark_secondaryContainer: Color
get() = Color(0xFF374955)
override val md_theme_dark_onSecondaryContainer: Color
get() = Color(0xFFd2e5f4)
override val md_theme_dark_tertiary: Color
get() = Color(0xFFccc1e9)
override val md_theme_dark_onTertiary: Color
get() = Color(0xFF332c4b)
override val md_theme_dark_tertiaryContainer: Color
get() = Color(0xFF4a4263)
override val md_theme_dark_onTertiaryContainer: Color
get() = Color(0xFFe8ddff)
override val md_theme_dark_error: Color
get() = Color(0xFFffb4a9)
override val md_theme_dark_errorContainer: Color
get() = Color(0xFF930006)
override val md_theme_dark_onError: Color
get() = Color(0xFF680003)
override val md_theme_dark_onErrorContainer: Color
get() = Color(0xFFffdad4)
override val md_theme_dark_background: Color
get() = Color(0xFF191c1e)
override val md_theme_dark_onBackground: Color
get() = Color(0xFFe1e2e5)
override val md_theme_dark_surface: Color
get() = Color(0xFF191c1e)
override val md_theme_dark_onSurface: Color
get() = Color(0xFFe1e2e5)
override val md_theme_dark_surfaceVariant: Color
get() = Color(0xFF41484d)
override val md_theme_dark_onSurfaceVariant: Color
get() = Color(0xFFc1c7ce)
override val md_theme_dark_outline: Color
get() = Color(0xFF8b9298)
override val md_theme_dark_inverseOnSurface: Color
get() = Color(0xFF191c1e)
override val md_theme_dark_inverseSurface: Color
get() = Color(0xFFe1e2e5)
override val md_theme_dark_inversePrimary: Color
get() = Color(0xFF00658e)
override val md_theme_dark_shadow: Color
get() = Color(0xFF000000)
override val seed: Color
get() = Color(0xFF006187)
override val error: Color
get() = Color(0xFFba1b1b)
}
@@ -0,0 +1,127 @@
package me.ash.reader.ui.theme.color
import androidx.compose.material3.ColorScheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.ui.graphics.Color
interface IColor {
val md_theme_light_primary: Color
val md_theme_light_onPrimary: Color
val md_theme_light_primaryContainer: Color
val md_theme_light_onPrimaryContainer: Color
val md_theme_light_secondary: Color
val md_theme_light_onSecondary: Color
val md_theme_light_secondaryContainer: Color
val md_theme_light_onSecondaryContainer: Color
val md_theme_light_tertiary: Color
val md_theme_light_onTertiary: Color
val md_theme_light_tertiaryContainer: Color
val md_theme_light_onTertiaryContainer: Color
val md_theme_light_error: Color
val md_theme_light_errorContainer: Color
val md_theme_light_onError: Color
val md_theme_light_onErrorContainer: Color
val md_theme_light_background: Color
val md_theme_light_onBackground: Color
val md_theme_light_surface: Color
val md_theme_light_onSurface: Color
val md_theme_light_surfaceVariant: Color
val md_theme_light_onSurfaceVariant: Color
val md_theme_light_outline: Color
val md_theme_light_inverseOnSurface: Color
val md_theme_light_inverseSurface: Color
val md_theme_light_inversePrimary: Color
val md_theme_light_shadow: Color
val md_theme_dark_primary: Color
val md_theme_dark_onPrimary: Color
val md_theme_dark_primaryContainer: Color
val md_theme_dark_onPrimaryContainer: Color
val md_theme_dark_secondary: Color
val md_theme_dark_onSecondary: Color
val md_theme_dark_secondaryContainer: Color
val md_theme_dark_onSecondaryContainer: Color
val md_theme_dark_tertiary: Color
val md_theme_dark_onTertiary: Color
val md_theme_dark_tertiaryContainer: Color
val md_theme_dark_onTertiaryContainer: Color
val md_theme_dark_error: Color
val md_theme_dark_errorContainer: Color
val md_theme_dark_onError: Color
val md_theme_dark_onErrorContainer: Color
val md_theme_dark_background: Color
val md_theme_dark_onBackground: Color
val md_theme_dark_surface: Color
val md_theme_dark_onSurface: Color
val md_theme_dark_surfaceVariant: Color
val md_theme_dark_onSurfaceVariant: Color
val md_theme_dark_outline: Color
val md_theme_dark_inverseOnSurface: Color
val md_theme_dark_inverseSurface: Color
val md_theme_dark_inversePrimary: Color
val md_theme_dark_shadow: Color
val seed: Color
val error: Color
val lightColorScheme: ColorScheme
get() = lightColorScheme(
primary = md_theme_light_primary,
onPrimary = md_theme_light_onPrimary,
primaryContainer = md_theme_light_primaryContainer,
onPrimaryContainer = md_theme_light_onPrimaryContainer,
secondary = md_theme_light_secondary,
onSecondary = md_theme_light_onSecondary,
secondaryContainer = md_theme_light_secondaryContainer,
onSecondaryContainer = md_theme_light_onSecondaryContainer,
tertiary = md_theme_light_tertiary,
onTertiary = md_theme_light_onTertiary,
tertiaryContainer = md_theme_light_tertiaryContainer,
onTertiaryContainer = md_theme_light_onTertiaryContainer,
error = md_theme_light_error,
errorContainer = md_theme_light_errorContainer,
onError = md_theme_light_onError,
onErrorContainer = md_theme_light_onErrorContainer,
background = md_theme_light_background,
onBackground = md_theme_light_onBackground,
surface = md_theme_light_surface,
onSurface = md_theme_light_onSurface,
surfaceVariant = md_theme_light_surfaceVariant,
onSurfaceVariant = md_theme_light_onSurfaceVariant,
outline = md_theme_light_outline,
inverseOnSurface = md_theme_light_inverseOnSurface,
inverseSurface = md_theme_light_inverseSurface,
inversePrimary = md_theme_light_inversePrimary,
)
val darkColorScheme: ColorScheme
get() = darkColorScheme(
primary = md_theme_dark_primary,
onPrimary = md_theme_dark_onPrimary,
primaryContainer = md_theme_dark_primaryContainer,
onPrimaryContainer = md_theme_dark_onPrimaryContainer,
secondary = md_theme_dark_secondary,
onSecondary = md_theme_dark_onSecondary,
secondaryContainer = md_theme_dark_secondaryContainer,
onSecondaryContainer = md_theme_dark_onSecondaryContainer,
tertiary = md_theme_dark_tertiary,
onTertiary = md_theme_dark_onTertiary,
tertiaryContainer = md_theme_dark_tertiaryContainer,
onTertiaryContainer = md_theme_dark_onTertiaryContainer,
error = md_theme_dark_error,
errorContainer = md_theme_dark_errorContainer,
onError = md_theme_dark_onError,
onErrorContainer = md_theme_dark_onErrorContainer,
background = md_theme_dark_background,
onBackground = md_theme_dark_onBackground,
surface = md_theme_dark_surface,
onSurface = md_theme_dark_onSurface,
surfaceVariant = md_theme_dark_surfaceVariant,
onSurfaceVariant = md_theme_dark_onSurfaceVariant,
outline = md_theme_dark_outline,
inverseOnSurface = md_theme_dark_inverseOnSurface,
inverseSurface = md_theme_dark_inverseSurface,
inversePrimary = md_theme_dark_inversePrimary,
)
}
@@ -0,0 +1,118 @@
package me.ash.reader.ui.theme.color
import androidx.compose.ui.graphics.Color
object PurpleColor : IColor {
override val md_theme_light_primary: Color
get() = Color(0xFF5f51ac)
override val md_theme_light_onPrimary: Color
get() = Color(0xFFffffff)
override val md_theme_light_primaryContainer: Color
get() = Color(0xFFe6deff)
override val md_theme_light_onPrimaryContainer: Color
get() = Color(0xFF190065)
override val md_theme_light_secondary: Color
get() = Color(0xFF605c72)
override val md_theme_light_onSecondary: Color
get() = Color(0xFFffffff)
override val md_theme_light_secondaryContainer: Color
get() = Color(0xFFe5dff9)
override val md_theme_light_onSecondaryContainer: Color
get() = Color(0xFF1c192c)
override val md_theme_light_tertiary: Color
get() = Color(0xFF7c5264)
override val md_theme_light_onTertiary: Color
get() = Color(0xFFffffff)
override val md_theme_light_tertiaryContainer: Color
get() = Color(0xFFffd8e8)
override val md_theme_light_onTertiaryContainer: Color
get() = Color(0xFF301020)
override val md_theme_light_error: Color
get() = Color(0xFFba1b1b)
override val md_theme_light_errorContainer: Color
get() = Color(0xFFffdad4)
override val md_theme_light_onError: Color
get() = Color(0xFFffffff)
override val md_theme_light_onErrorContainer: Color
get() = Color(0xFF410001)
override val md_theme_light_background: Color
get() = Color(0xFFfffbff)
override val md_theme_light_onBackground: Color
get() = Color(0xFF1c1b1e)
override val md_theme_light_surface: Color
get() = Color(0xFFfffbff)
override val md_theme_light_onSurface: Color
get() = Color(0xFF1c1b1e)
override val md_theme_light_surfaceVariant: Color
get() = Color(0xFFe5e0ec)
override val md_theme_light_onSurfaceVariant: Color
get() = Color(0xFF48454f)
override val md_theme_light_outline: Color
get() = Color(0xFF79767f)
override val md_theme_light_inverseOnSurface: Color
get() = Color(0xFFf4eff4)
override val md_theme_light_inverseSurface: Color
get() = Color(0xFF313033)
override val md_theme_light_inversePrimary: Color
get() = Color(0xFFcabeff)
override val md_theme_light_shadow: Color
get() = Color(0xFF000000)
override val md_theme_dark_primary: Color
get() = Color(0xFFcabeff)
override val md_theme_dark_onPrimary: Color
get() = Color(0xFF301f7a)
override val md_theme_dark_primaryContainer: Color
get() = Color(0xFF473892)
override val md_theme_dark_onPrimaryContainer: Color
get() = Color(0xFFe6deff)
override val md_theme_dark_secondary: Color
get() = Color(0xFFc9c3dc)
override val md_theme_dark_onSecondary: Color
get() = Color(0xFF312e41)
override val md_theme_dark_secondaryContainer: Color
get() = Color(0xFF484459)
override val md_theme_dark_onSecondaryContainer: Color
get() = Color(0xFFe5dff9)
override val md_theme_dark_tertiary: Color
get() = Color(0xFFedb8cd)
override val md_theme_dark_onTertiary: Color
get() = Color(0xFF492536)
override val md_theme_dark_tertiaryContainer: Color
get() = Color(0xFF613b4c)
override val md_theme_dark_onTertiaryContainer: Color
get() = Color(0xFFffd8e8)
override val md_theme_dark_error: Color
get() = Color(0xFFffb4a9)
override val md_theme_dark_errorContainer: Color
get() = Color(0xFF930006)
override val md_theme_dark_onError: Color
get() = Color(0xFF680003)
override val md_theme_dark_onErrorContainer: Color
get() = Color(0xFFffdad4)
override val md_theme_dark_background: Color
get() = Color(0xFF1c1b1e)
override val md_theme_dark_onBackground: Color
get() = Color(0xFFe5e1e5)
override val md_theme_dark_surface: Color
get() = Color(0xFF1c1b1e)
override val md_theme_dark_onSurface: Color
get() = Color(0xFFe5e1e5)
override val md_theme_dark_surfaceVariant: Color
get() = Color(0xFF48454f)
override val md_theme_dark_onSurfaceVariant: Color
get() = Color(0xFFc9c4d0)
override val md_theme_dark_outline: Color
get() = Color(0xFF938f99)
override val md_theme_dark_inverseOnSurface: Color
get() = Color(0xFF1c1b1e)
override val md_theme_dark_inverseSurface: Color
get() = Color(0xFFe5e1e5)
override val md_theme_dark_inversePrimary: Color
get() = Color(0xFF5f51ac)
override val md_theme_dark_shadow: Color
get() = Color(0xFF000000)
override val seed: Color
get() = Color(0xFF53459f)
override val error: Color
get() = Color(0xFFba1b1b)
}